JVc@sddlZddlZddlZddlZddlTddlmZmZmZdZ dZ dZ dZ de fd YZdS( iNi(t*(ttuitutilstdeviceiiitModulecBseZd d d eeedZdd d d dZd d eedZdZdd dZ edZ d d e j e j d edZe j e j ed Zd ed Zd ZRS(c Cs||_||_||_||_||_tjdtj|g|_ | |_ | |_ d|_ t|_tjdt_tjdrtjdn||_|dk r||_t|j|_ng|_d|_tjddd|_d|_g|_tj tjddd rR|jj!t"|jd 7_ntj tjddd r|jj!t#|jd 7_nt$|_%d|_&|jdk r+t'|jkrtj(r|jr|j&d 7_&nt$|jkr|j&d 7_&nt)|jkr+|j&d 7_&q+n|jdk rst$|jkrUt$|_%qst)|jkrst)|_%qsn|jdk rtj(r|jr|jdkrt#|jkrt"|jkrt$|jkrt$|_%d |_qt#|jkr|jdkrt#|jks?t"|jkrK|jdkrKt"|jkrKt'|_%q|jdkrt"|jkrt#|jkrt#|jkrd|_t'|_%qt$|jkrt$|_%qt)|jkrt)|_%qtj*d |jt+|_q|jdkrt#|jkrt"|jkrCt"|jkrCd|_t'|_%qt$|jkr^t$|_%qt)|jkryt)|_%qtj*d |jt+|_qn|j%|_,tj-dkr| rtj.d|ndS(Niit HPLIP_DEBUGtdebugt configures ui-toolkittqt4tqt3t0itnones#%s cannot be run using Qt3 toolkit.s#%s cannot be run using Qt4 toolkit.s'%s should not be run as root/superuser.(/tmodttitletversiontdoct usage_datatostumasktlogt set_moduletargstquiett deprecatedtNonet lock_filetFalsethelp_only_supporttsystargvtproptprogtgetenvt set_levelt avail_modestsupported_ui_toolkitstlentnum_supported_ui_toolkitstsys_conftgettdefault_ui_toolkittnum_installed_ui_toolkitstinstalled_ui_toolkitsRtto_booltappendtUI_TOOLKIT_QT3tUI_TOOLKIT_QT4tINTERACTIVE_MODEt default_modetnum_valid_modestGUI_MODEt gui_buildtNON_INTERACTIVE_MODEterrortTruetmodetgetuidtwarn( tselfR R RRRR"R#trun_as_root_okRR((s[/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/module.pyt__init__(s                     ! !  --           ic Cs |jr'|jddtfg|_n g|_d|jg}g}g}|t@tkr|jd|jtj|jtj|jtj n|j dk rj|j dkrj|jd|jtj |jtj|jdkr#t|j kr#tjr#|jtjq#nt|j krE|jtjnt|j krj|jtjqjn|jd|jtj |jtj|j dk rPt|j krP|jdk rP|jdkrPtjrP|jdkrPt|jkrt|jkr|jtjnt|jkrPt|jkrP|jtjqPn|jtj |jtj!|t"@t"kr|jtj#n|jtj$|dk rx|D]}|j|qWn|t%@r|jdn|dk s|rj|jtj |jtj&x|D]} |j| q#W|dk rjx|D]} |j| qMWqjn|dk r|jtj |jtj'x*|D]} |j| dd t(fqWn|j)dd j*|dd tfx|D]} |jj| qWdS( NttnamesUsage:s[DEVICE_URI|PRINTER_NAME]is[MODE]s [OPTIONS]s[FILES]tseealsot tsummary(+RR6RR tUSAGE_FLAG_DEVICE_ARGSR,Rt USAGE_ARGSt USAGE_DEVICEt USAGE_PRINTERR"RR1t USAGE_SPACEt USAGE_MODER)R2RR3tUSAGE_GUI_MODER/tUSAGE_INTERACTIVE_MODER4tUSAGE_NON_INTERACTIVE_MODEt USAGE_OPTIONSR#R%R-R*t USAGE_USE_QT3R.t USAGE_USE_QT4tUSAGE_LOGGING1tUSAGE_LOGGING2tUSAGE_FLAG_SUPRESS_G_DEBUG_FLAGtUSAGE_LOGGING3t USAGE_HELPtUSAGE_FLAG_FILE_ARGSt USAGE_NOTESt USAGE_SEEALSORtinserttjoin( R:t include_flagst extra_optionst extra_notest see_also_listRAtcontenttnotestetntstc((s[/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/module.pytsetUsagest              % cCs?d}|s$dj|dg}ndddddd d g}|rvdj|d g}|jd d ddgn|jdkrBt|jkrtjrdj|dg}|jddgnt|jkrdj|dg}|jddgnt|jkrBdj|dg}|jdddgqBn|j dk r|j dkrtjr|jdk rt|jkrt |j krt |j kr|jddgnt|j krt|j kr|jddgqn|dk rdj||g}n|dk r2|j|nd}d}d} d} g} |j} tjrn|j} nd } d}y)tjtjd||\}|_Wn"tjk r}|jg} nXx|D]\}}|dFkr|} q|dGkr|} q|dHkr>|jj}tj|sd}qq|dIkrZtjd q|dJkr|jdk rt|jkr|j dk rtjrt} q| jd0q|dKkr|jdk rt|jkrt} d } qq|dLkr-|jdk rt|jkrt} d } qq|dMkrBd}q|d9krWd:}q|d;krld<}q|d=krd>}q|dNkr |jdk rt|jkr|j dk rt |j krtjrt |j krt} d} q| jdA|jqq|dOkr|jdk rt|jkr|j dk ryt|j krytjryt|j kryt} d} q| jdD|jqqqW| rd}n|jr|s| r|j|| qtjtj dE|jd}n|j|| |dk r tj!dn| |_"|| | | | |fS(PNsl:hR=tgslogging=thelps help-restshelp-mans help-descRtdbgsd:p:P:sdevice=s device-uri=sprinter=s printer-nameitutguituitit interactivettextR_tnoninteractivesnon-interactivetbatchiR suse-qt3Rsuse-qt4R s-ds--devices --device-uris-Ps-ps --printers--printer-names-ls --loggings-gs--debugs--dbgs-us--guis--uisUnable to enter GUI mode.s-is --interactives--texts-ns--non-interactives--batchs-hs--helps --help-resttrests --help-mantmans --help-desctdescs--qt3s --use-qt3s2%s does not support Qt3. Unable to enter GUI mode.s--qt4s --use-qt4s2%s does not support Qt4. Unable to enter GUI mode.s Please check usage '%s --help'(s-ds--devices --device-uri(s-Ps-ps --printers--printer-name(s-ls --logging(s-gs--debugs--dbg(s-us--guis--ui(s-is --interactives--text(s-ns--non-interactives--batch(s-hs--help(s--qt3s --use-qt3(s--qt4s --use-qt4(#RWtextendR1R2R"RR3R/R4R#RR%R-R*R.R0R(tgetoptRRRt GetoptErrortmsgtlowertstripRR!R,R RtusagetinfotboldtexitR7(R:t extra_paramstextra_long_paramsthandle_device_printertsupress_g_debug_flagtparamst long_paramstoptst show_usaget device_urit printer_namet error_msgR7t ui_toolkittlangR^totat log_level((s[/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/module.pyt parseStdOptss       )                                cCsjtj}d|_xDttjD]0\}}|j|ddj|dfq(W|jdS(Ns Language CodesAlternate Name(s)is, i(s Language CodesAlternate Name(s)( Rt Formattertheadertlisttsupported_localestitemstaddRWtoutput(R:tftloctll((s[/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/module.pyt showLanguagess   (RkcCs|dkr&|js"|jndS|dkrI|jtjn|dkr`|jGHntj|j||j |j |j |rx|D]}tj |qWt jdnt jd|dkrt jdndS(NRkRpii(RRt showTitleRRxRRt format_textRR R RR5RRz(R:RRR^((s[/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/module.pyRws"        %   cCs|jstjd|r<tjtjdtjntjtjdtjtjd|j|jftjdtjdtjdtjdtjdtjd|jrtjtjd |jtjdqndS( NR=s.HP Linux Imaging and Printing System (ver. %s)s$HP Linux Imaging and Printing Systems %s ver. %ss=Copyright (c) 2001-15 Hewlett-Packard Development Company, LPs0This software comes with ABSOLUTELY NO WARRANTY.s;This is free software, and you are welcome to distribute its<under certain conditions. See COPYING file for more details.sZ%s support is deprecated. Feature can be used as is. Fixes or updates will not be provided( RRRxRyRRR RR9(R:tshow_ver((s[/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/module.pyRs   &       c Cstjd|||||ftjd|jt}d|krOt}nt}t} d} |dkrtj||}tj|| r|rtjddSn|dk r||krt}q|rtjd|dSt}n|dk rtj|x|D]} tj| tj | \ } } }}}}}}}tjd| | |||||||f || }|j g|D]}|j ^qkrt} | }}t}qqW| tk rtjd|d}|rdSqn|dk r'|dkr'|r'|} n|dk r|dk r|r| r||kr`|} qtjd||fd\}}qn^|dkr|dk r| rtj ||} n+t |d krt |jd } n| dkr<t |r<|jtkr#tj||} q<t |jd } n| dk r^tjd d | n2|jttfkrtjd tjd n| S(sD Validate passed in parameters, and, if in text mode, have user select desired device to use. Used for tools that are device-centric and accept -d (and maybe also -p). Use the filter(s) to restrict what constitute valid devices. Return the matching device URI based on: 1. Passed in device_uri if it is valid (filter passes) 2. Corresponding device_uri from the printer_name if it is valid (filter passes) ('*' means default printer) 3. User input from menu (based on bus and filter) device_uri and printer_name can both be specified if they correspond to the same device. Returns: device_uri|None (returns None if passed in device_uri is invalid or printer_name doesn't correspond to device_uri) s"getDeviceUri(%s, %s, %s, %s, , %s)sMode=%sthpaios*No device found that support this feature.s@'%s' device doesn't support this feature (or) Invalid device URIsXback_end=%s, is_hp=%s, bb=%s, model=%s, serial=%s, dev_file=%s, host=%s, zc=%s, port= %ssB'%s' device doesn't support this feature (or) Invalid printer names=Printer name %s and device URI %s refer to different devices.iit last_usedRsANo device selected/specified or that supports this functionality.N(NN(RRR7RR6RRtgetSupportedCUPSDevicesR5tparseDeviceURIRutgetDeviceURIByPrinterNameR$RtkeysR/Rt device_tablet user_conftsetR4RRz(R:RRtback_end_filtertfiltertdevicestrestrict_to_installed_devicest scan_uri_flagt device_uri_oktprinter_name_oktdevice_uri_retturitback_endtis_hptbbtmodeltserialtdev_filethosttzctportt cups_printertmtprinter_name_device_uri((s[/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/module.pyt getDeviceUrisx               *, +          cCstjd||||ftjd|jt}t}d}d} tj||} tj| | stjdtddfS|dk rtj||} || krt }|} qtjd|d}|rtddfSn|dk r|dkrMddl m } | j } | dk r7| }qtjdd}q|j g| D]}|j ^q]krt }tj|} qtjd |d}|rtddfSn|dk r|dkr|rt| |d kr| |d }qn|dk rQ|dk rQ|r|r|| kr>|}qNtjd qnF|dkrx|dk rx|rx|}nt| d kr| d }n|dkr|jttfkrt| rtj| }n|dk r| dkrtj|} n| dk r"tjd d| n|dk rDtjd d|n?|jttfkrvtjdtjd n tjdt || fS(s Validate passed in parameters, and, if in text mode, have user select desired printer to use. Used for tools that are printer queue-centric and accept -p (and maybe also -d). Use the filter(s) to restrict what constitute valid printers. Return the matching printer_name based on: 1. Passed in printer_name if it is valid (filter passes) ('*' means default printer) 2. From single printer_name of corresponding passed in device_uri (filter passes) 3. User input from menu (CUPS printer list, filtered) [or if > 1 queue for device_uri] device_uri and printer_name can both be specified if they correspond to the same device. Returns: (printer_name|None, device_uri|None) (tuple) (returns None if passed in printer_name is invalid or device_uri doesn't correspond to printer_name) sgetPrinterName(%s, %s, %s, %s)sMode=%ss*No device found that support this feature.s@'%s' device doesn't support this feature (or) Invalid device URIRi(tcupssCUPS default printer not setsB'%s' device doesn't support this feature (or) Invalid printer nameiis7Printer name and device URI refer to different devices.RRRsBNo printer selected/specified or that supports this functionality.sNo printer selected/specifiedN(RRR7RRRtgetSupportedCUPSPrinterNamesR5RR6tprntRtgetDefaultPrinterRuRR$R/R4Rt printer_tableRRRRz(R:RRRRRRRtprinter_name_retRtprintersRRtdefault_printertp((s[/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/module.pytgetPrinterName=sx             +     -    R=cCsn|r6tjdj|j|g|\}|_ntj|j|\}|_|sjtjdndS(Nt-i(Rtlock_appRWR RRRz(R:tsuffixtsuppress_errortok((s[/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/module.pyt lockInstances 0cCs&|jdk r"tj|jndS(N(RRRtunlock(R:((s[/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/module.pytunlockInstancesN(t__name__t __module__RRR<RbR6RRRwRRtDEFAULT_BE_FILTERtDEFAULT_FILTERRRRR(((s[/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/module.pyR's$u[   hf (RtreRrRRcR=RRRtUSAGE_FLAG_NONERBRPRStobjectR(((s[/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/module.pyts