
    =	fQ                       d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dl	 d dl
mZmZmZmZmZmZmZ d dlmZ d dlmZ d dl ddl d dl d dl d dl d dl d dlZ	 ej:                  Z ej@                  d      Z!	 d dl"Z"d d	l#m$Z$ d d
l"m%Z% d dl*Z* e*jV                  de,       ddl-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8 ddl9m:Z: ddl;m<Z< ddl=m>Z> ddl?m@Z@ ddlAmBZB ddlCmDZD ddlEmFZF ddlGmHZH ddlImJZJ ddlKmLZL ddlMmNZN ddlOmPZP dd lQmRZR dd!lSmTZT dd"lUmVZV d d#l
mZ d$ZWd%ZXd&ZYi ZZ ej                         Z\ G d' d(e]      Z^ G d) d*e]      Z_ G d+ d,e`      Za	  G d- d.e0e.eb      Zc G d/ d0ed      Zed1 Zfd2 Zgy# e$ r eZY "w xY w# e&$ r: e'jQ                  d       ere'jQ                  d        e jR                  d       Y Aw xY w)3    N)configparser)*)deviceutilspmlmaintmodelspkitos_utils)cups)PY3   hpmudext)DBusGMainLoop)lowlevelzLUnable to load DBus libraries. Please check your installation and try again.zHPlease upgrade your python installation to the latest available version.ignore)Ui_MainWindow)Ui_MainWindow_Derived)FaxSetupDialog)PluginDialog)FirmwareDialog)AlignDialog)PrintDialog)MakeCopiesDialog)SendFaxDialog)	FABWindow)DeviceSetupDialog)PrintTestPageDialog)
InfoDialog)CleanDialog)ColorCalDialog)LineFeedCalDialog)PQDiagDialog)NoDevicesDialog)AboutDialog)SettingsDialog)PrintSettingsToolbox)r      <      c                       e Zd Zd Zy)FuncViewItemc                 b    t         j                  | t        |      ||       || _        || _        y N)QListWidgetItem__init__QIcontooltip_textcmd)selfparenttextpixmapr2   r3   s         /usr/share/hplip/ui5/devmgr5.pyr0   zFuncViewItem.__init__u   s)      uV}dFC(    N__name__
__module____qualname__r0    r9   r8   r,   r,   t   s    r9   r,   c                       e Zd ZddZy)DeviceViewItemc                     t         j                  | t        |      ||       || _        || _        | j                  t        j                         y r.   )r/   r0   r1   
device_uriis_availsetTextAlignmentQtAlignHCenter)r4   r5   r6   r7   rB   rC   s         r8   r0   zDeviceViewItem.__init__}   s:      uV}dFC$ boo.r9   N)Tr:   r>   r9   r8   r@   r@   |   s    /r9   r@   c                        e Zd Zd Zd ZddZy)PluginInstallc                 .    || _         || _        || _        y r.   )r5   plugin_typeplugin_installed)r4   r5   rJ   rK   s       r8   r0   zPluginInstall.__init__   s    & 0r9   c                    d}| j                   rt        j                  | j                  | j                  j	                         | j                  d      t        j                  t        j                  z  t        j                        t        j                  k(  }|rt        j                  | j                  t        k(  | j                  j                  j                  d         \  }}|sxt        j                  | j                  | j                  j	                         | j                  d      t        j                   t        j                  z  t        j                         y y y )NTzZ<b>The HPLIP plugin is already installed.</b><p>Do you want to continue and re-install it?zplugin-reasonzm<b>Unable to find an appropriate su/sudo utility to run hp-plugin.</b><p>Install kdesu, gnomesu, or gksu.</p>)rK   QMessageBoxwarningr5   windowTitle_PluginInstall__trYesNoNoButtonr
   run_plugin_commandrJ   PLUGIN_REQUIRED
cur_devicemqcriticalOk)r4   install_pluginoksudo_oks       r8   exec_zPluginInstall.exec_   s     (00 $ 7 7 9 $		  +G  !H ++.. @ + 4 4	6 :E	IN 11$2B2Bo2UW[WbWbWmWmWpWp  rA  XB  CKB$$T[[KK++-II  N  ONN[%9%99((	*  r9   Nc                 0    t         j                  d||      S NDevMgr5qApp	translater4   scs      r8   __trzPluginInstall.__tr       ~~i!,,r9   r.   )r;   r<   r=   r0   r]   rP   r>   r9   r8   rH   rH      s    1*(-r9   rH   c                   4    e Zd Z	 	 dT fd	Zd Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd ZdUdZd Zd Zej"                  ddfdZd ZdVdZd Zd Zd Zd Zd ZdUdZd Zd Zd ZdWdZd Zd Z d Z!d  Z"dXd!Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2dYd1Z3d2 Z4d3 Z5d4 Z6d5 Z7dZd6Z8d7 Z9d8 Z:d9 Z;d: Z<d; Z=d< Z>d= Z?d> Z@d? ZAd@ ZBdA ZCdB ZDdC ZEdD ZFdE ZGdF ZHdG ZIdH ZJdI ZKdJ ZLdVdKZMdL ZNdM ZOdN ZPdO ZQd[dPZRdQ ZSdR ZTdUdSZU xZVS )\r`   r   c                    t         t        |   |       t        j	                  d       t        j	                  dt
        j                  z         || _        || _        i | _	        d| _
        d | _        d | _        d| _        d| _        d | _        d| _        t#        t$              }|j'                         | _        t)               | _        | j*                  j-                          | j*                  j	                          | j*                  j.                  | _        t2        j5                  dd      }t7        j8                  || j*                  j:                        s| j=                  | d| j                          n1| j=                  | | j*                  j:                  | j                          | j?                          | jA                          | jC                          | jE                          tG        jH                  tJ               t
        jL                  s| jN                  jQ                  d       d| _)        tT        jW                  d| jX                         y )	Nz Initializing toolbox UI (Qt5)...zHPLIP Version: %sr   Fhplipversion T)-superr`   r0   logdebugpropinstalled_versiontoolbox_versioninitial_device_uridevice_varsnum_devicesrV   cur_printerupdatinginit_failedserviceIs_autoInstaller_distroCoreInstall
MODE_CHECKis_auto_installer_supportUserSettingsuser_settingsloadlast_used_device_uricur_device_urisys_confgetr   Is_HPLIP_older_versionlatest_available_versionsetupUiinitDBusinitPixmapsinitMiscinitUIr   setPasswordCallbackshowPasswordUI	doc_buildContentsAction
setEnabledallow_auto_refreshQTimer
singleShotinitalUpdate)
r4   rs   rt   	dbus_loopr5   nameflcorerr   	__class__s
            r8   r0   zDevMgr5.__init__   s    	gt%f-		45		%(>(>>?  /"4 ',$ J''+'E'E'G$)^!  ""00EE",,wy9++->ASASAlAlmLLb!=!=>LLt11JJ4KgKgh 	  0~~**51"&!T../r9   c                 2   t        d      | _        t        j                  | j                        \  | _        | _        | _        | j                  st        j                  d       d| _	        y | j                  j                  | j                  ddddd	       y )
NT)set_as_defaultz#dBus initialization error. Exiting.senderdest	interfacememberpath)sender_keyworddestination_keywordinterface_keywordmember_keywordpath_keyword)r   r   r   	init_dbus
dbus_availrz   session_busro   errorry   add_signal_receiverhandleSessionSignalr4   s    r8   r   zDevMgr5.initDBus  s    &d;:@:J:J4>>:Z7t'7II;<#D 	,,T-E-EV^ &+#& 	- 	:r9   c                     d| _         i | _        i | _        | j                  t	        t        dd                   t        dd      | _        y )NFhp_logo128x128fax2other)func_icons_cached
func_iconsdevice_iconssetWindowIconr1   load_pixmapfax_iconr   s    r8   r   zDevMgr5.initPixmaps!  sC    !& 	5Y	!BCD#FG4r9   c                 d
     j                   j                  d        j                   j                  t        j                          j                  t        j                          j                  j                  j                   fd        j                  j                  j                   fd        j                   j                  d   j                   j                          j                  j                  t!        t#        dd                    j                  j                  j                   j$                          j&                  j                  t!        t#        dd                    j&                  j                  j                   j(                          j*                  j                  t!        t#        dd                    j*                  j                  j                   j,                          j.                  j                  t!        t#        d	d                    j.                  j                  j                   j0                          j2                  j                  t!        t#        d
d                    j2                  j                  j                   j4                          j6                  j                  t!        t#        dd                    j6                  j                  j                   j8                          j:                  j                  t!        t#        dd                    j:                  j                  j                   j<                          j>                  j                  j                   j@                          jB                  jD                  d   j                   jF                          jH                  jD                  d   j                   jJ                         tM        jL                  tL        jN                  tL        jP                          jS                           jU                           jW                           jY                           j[                           j\                  j^                  t`           j                   jb                          jd                  jg                  ddg        j                   ji                  tk        dd              j                   jl                  d   j                   jn                         y )NTc                  B     j                  t        j                        S r.   setDeviceListViewMode	QListViewIconModer   s   r8   <lambda>z DevMgr5.initUI.<locals>.<lambda>2  s    9S9ST]TfTf9g r9   c                  B     j                  t        j                        S r.   r   r   ListModer   s   r8   r   z DevMgr5.initUI.<locals>.<lambda>3  s    8R8RS\SeSe8f r9   zconst QPoint &refresh116x16refreshlist_addlist_removesettingshelpquitzconst QString &P   iX  r)   )QListWidgetItem *r   )8
DeviceListsetSortingEnabledsetContextMenuPolicyrE   CustomContextMenur   r   r   ViewAsIconsAction	triggeredconnectViewAsListActioncustomContextMenuRequested%DeviceList_customContextMenuRequestedDeviceRefreshActionsetIconr1   r   DeviceRefreshAction_activatedRefreshAllActionRefreshAllAction_activatedSetupDeviceActionSetupDeviceAction_activatedRemoveDeviceActionRemoveDeviceAction_activatedPreferencesActionPreferencesAction_activatedr   helpContents
QuitActionr   AboutAction	helpAboutPrintControlPrinterNameCombo	activated&PrintControlPrinterNameCombo_activatedPrintSettingsPrinterNameCombo'PrintSettingsPrinterNameCombo_activatedsignalSIGINTSIG_IGNinitActionsTabinitStatusTabinitSuppliesTabinitPrintSettingsTabinitPrintControlTabTabscurrentChangedintTabs_currentChangedsplittersetSizessetIconSizeQSizecurrentItemChangedDeviceList_currentChangedr   s   `r8   r   zDevMgr5.initUI,  s   ))$/,,R-A-AB""9#5#56((001gh''//0fg223CDLLTMwMwx 	  (({:w/O)PQ  **2243U3UV%%eK	7,K&LM''//0O0OP&&u[W-M'NO((001Q1QR''k-.Q(RS))11$2S2ST&&u[W-M'NO((001Q1QR 	##E+fg*F$GH%%--d.?.?@k&'&B CD!!))$))4""**4>>:))334EFNNtOzOz{**445FGOOPTP|P|}fmmV^^4 	!!#  " 			  %--d.F.FG 	Cy) 	##E"bM2**+ST\\]a]{]{|r9   c                    | j                   | j                  | j                  | j                  | j                  | j
                  d| _        d| _        t        j                  r]t        j                  j                  t        j                  dd      d      }t        j                  j                  |      r
d|z  | _        d| _        y )N)r   r            r(   zhttp://hplip.sf.netdirsdocz
index.htmlz	file://%szhttps://launchpad.net/hplip)updateActionsTabupdateStatusTabupdateSuppliesTabupdatePrintSettingsTabupdatePrintControlTabupdateHPLIPupgradeTabIndexdocsrq   r   osr   joinr   r   existssupport)r4   gs     r8   r   zDevMgr5.initMiscl  s    !22!11!33!88!77 33 *	>>X\\&%8,GAww~~a '!O	 5r9   c                 .   | j                   r| j                          y | j                          d}| j                  ?| j	                  | j                        s$t
        j                  d| j                  z         d}| j                  r| j                          | j                  t        j                  k(  r*| j                  j                  t        | j                         | j                  s+| j                  j                  t         | j                         y y y )NTzDevice %s not foundF)ry   closerescanDevicesrt   activateDevicero   r   rw   getPrinterStateprinter_stater   IPP_PRINTER_STATE_STOPPEDrV   	sendEventEVENT_PRINTER_QUEUE_STOPPEDprinter_accepting"EVENT_PRINTER_QUEUE_REJECTING_JOBS)r4   conts     r8   r   zDevMgr5.initalUpdate  s    JJL"".&&t'>'>?		/$2I2IIJ  "!!T%C%CC))*EtGWGWX))))*LdN^N^_ * r9   c           
         t         j                  t         j                  ddd|dd             d}| j                  j	                  |      }d}|n|j
                  |k(  r<d}| j                  j                  |d       | j                  j                  |       	 |S |dz  }| j                  j	                  |      }|n|S )Nz
Activate: ******************** r   FTr   )ro   rp   boldr   itemrB   setSelectedsetCurrentItem)r4   rB   indexdfounds        r8   r  zDevMgr5.activateDevice  s    		#((6:vNOPOO  'm||z)++At4..q1
  QJE$$U+A m r9   c                    |d   dk(  r|d   dk(  rt         j                  d       t        j                  |d d  }|j                          |j                  t
        k  ry |j                  t        k(  r~t         j                  d|j                  z         | j                  |j                        }|>	 | j                  j                  |j                  | j                  | j                         y y |j                  t"        k(  r0t         j                  d
       | j$                  j'                          y |j                  t(        k(  rRt         j                  d|j                  z         | j                  |j                        }|| j+                  |       y y |j                  t,        k(  rOt         j                  d       t         j/                  d       t1        j2                          | j5                          y |j                  t6        k(  rxt         j                  d       | j9                          | j;                  | j=                         t>        j@                   z  t>        jB                  z         | jE                          y |j                  tF        tH        tJ        fv ry t         j!                  d|j                  z         y y y # t        j                  j                  $ r}t         j!                  d	       Y d }~y d }~ww xY w)Nr   zcom.hplip.Toolboxr   EventzHandling event...   zEVENT_DEVICE_UPDATE_REPLY (%s)reply_handlererror_handlerz dbus call to GetStatus() failed. EVENT_USER_CONFIGURATION_CHANGEDzEVENT_HISTORY_UPDATE (%s)EVENT_SYSTEMTRAY_EXITzDHPLIP Status Service was closed. HPLIP Device Manager will now exit.EVENT_RAISE_DEVICE_MANAGERzUnhandled event: %d)&ro   rp   r   r'  
event_codeEVENT_MIN_USER_EVENTEVENT_DEVICE_UPDATE_REPLYrB   findDeviceByURIrz   	GetStatushandleStatusReplyhandleStatusErrordbus
exceptionsDBusExceptionr   r,  r   r   EVENT_HISTORY_UPDATEupdateHistoryr-  warnr   releaseCupsInstancer  r.  
showNormalsetWindowStatewindowStaterE   WindowMinimizedWindowActiveraise_EVENT_DEVICE_START_POLLINGEVENT_DEVICE_STOP_POLLINGEVENT_POLLING_REQUEST)r4   argskwdseventdeves         r8   r   zDevMgr5.handleSessionSignal  sl    33Ng%II)*LL$r(+EKKM"66!!%>>		:U=M=MMN**5+;+;<?F..u/?/?tOeOe*.*@*@ / B # !!%EE		<=""'')!!%99		58H8HHI**5+;+;<?&&s+ # !!%::		12_`((*

!!%??		67!##D$4$4$6":L:L9L$Lr$^_!!&@&?&;&= =  		/%2B2BBCc & 4&  ??88 F		"DEEFs   4<K
 
L'LLc                 ~   | j                  |      }|i }|D ]?  }t        j                  t        |      t        ||               }|j	                  ||       A |j                         |_        |j                  D ].  }|j                  |   |j                  |j                  dd      <   0 | j                  |       y y )N-_)
r2  	model_objconvert_datastr
setdefaultcopydq__dict__replaceupdateDevice)r4   rB   datarI  tkeyvaluer$  s           r8   r4  zDevMgr5.handleStatusReply  s    "":.?A )!..s3xT#YHS%() VVXCFVV =3666!9QYYs3/0= c" r9   c                 @    t         j                  t        |             y r.   ro   r   rP  r4   rJ  s     r8   r5  zDevMgr5.handleStatusError      		#a&r9   c                    || j                   }	 | j                  j                  |j                  | j                  | j
                         y # t        j                  j                  $ r}t        j                  d       Y d }~y d }~ww xY w)Nr)  z!dbus call to GetHistory() failed.)rV   rz   
GetHistoryrB   handleHistoryReplyhandleHistoryErrorr6  r7  r8  ro   r   )r4   rI  rJ  s      r8   r:  zDevMgr5.updateHistory  sn    ;//C	;LL##CNN$BYBY262I2I $ K,, 	;II9::	;s   <A B	*BB	c                    | j                  |      }|g }|j                          |D ],  }|j                  t        j                  t        |              . 	 |d   j                  | _        t        j                  | j                  t              |_        ||_        | j                  |       y y # t        $ r t        | _        Y Yw xY wNr   )r2  reverseappendr   r'  tupler/  
error_code
IndexErrorSTATUS_UNKNOWNSTATUS_TO_ERROR_STATE_MAPr   ERROR_STATE_CLEARerror_statehistrV  )r4   rB   historyrI  resulths         r8   ra  zDevMgr5.handleHistoryReply  s    "":.?FOO 7fllE!H5671"()"6"6 8;;DOOM^_COCHc"   1"01s   B/ /CCc                 @    t         j                  t        |             y r.   r\  r]  s     r8   rb  zDevMgr5.handleHistoryError  r^  r9   rm   c                 j    t        j                  ||||||      j                  | j                         y r.   )r   r'  send_via_dbusr   )r4   rB   printer_namer/  usernamejob_idtitles          r8   sendMessagezDevMgr5.sendMessage  s-     	Zz8E	##0=1A1A#Br9   c                 $   | j                   s| j                  j                  rm| j                  r`t        j                  d       | j                          | j                  j                  dk(  r| j                          y | j                          y y y y )NzRefresh timer...r   )
rx   r   auto_refreshr   ro   rp   cleanupChildrenauto_refresh_typerequestDeviceUpdater  r   s    r8   timedRefreshzDevMgr5.timedRefresh&  sp    }}!3!3!@!@TE\E\II()  "!!33q8((*""$ F]!@}r9   c                 F    | j                    | j                  |           yy)zU Called when the active tab changes.
            Update newly displayed tab.
        N)rV   r	  r4   tabs     r8   r   zDevMgr5.Tabs_currentChanged7  s$     ??&DMM#  'r9   c                 N    | j                   D ]  } | j                   |            y r.   )r	  r  s     r8   updateAllTabszDevMgr5.updateAllTabs>  s&    == 	!CDMM# 	!r9   c                     t         j                  d        | j                  | j                  j	                                    y )NzupdateCurrentTab())ro   rp   r	  r   currentIndexr   s    r8   updateCurrentTabzDevMgr5.updateCurrentTabC  s-    		&'/dii,,./1r9   c                     | j                   j                  d       | j                          | j                   j                  d       y NFT)r   r   r~  r   s    r8   r   z%DevMgr5.DeviceRefreshAction_activatedP  s6      ++E2  "  ++D1r9   c                 $    | j                          y r.   )r  r   s    r8   r   z"DevMgr5.RefreshAllAction_activatedV  s    r9   c                    |t         j                  k(  r`| j                  j                  t         j                         | j                  j                  d       | j                  j                  d       y | j                  j                  t         j                         | j                  j                  d       | j                  j                  d       y r  )r   r   r   setViewModer   r   r   r   )r4   modes     r8   r   zDevMgr5.setDeviceListViewModeZ  s    9%%%OO''	(:(:;!!,,U3""--d3OO''	(:(:;!!,,T2""--e4r9   c                    || j                   }	 |j                   	 | j                  |j                      | j                  |j                     }|j                         |j                         }}|j                  }t        ||      }t        |      }|j                  dd|j                         |j                                |j                  dd|       	 |j                  }|j                  t        k(  r8|j                  || j                   j                         z
  d| j                          |t"        k7  r@|t$        t&        fv rt)        |      d   }	nt)        |      d   }	|	|j                  dd|	       |j+                          |S # t        $ r d|_        Y w xY w#  t	        |j                  d      | j                  |j                  <   Y xY w# t        $ r
 t        }Y w xY w)Ndefault_printerdevicesr   r   )rV   iconAttributeErrorr   r   widthheightrm  QPixmapQPainter	eraseRect
drawPixmap	tech_typeTECH_TYPE_NONEdevice_typeDEVICE_TYPE_FAXr   rl  TECH_TYPE_COLOR_INKTECH_TYPE_MONO_INKgetStatusOverlayIconend)
r4   rI  pixwrq  rm  r  pr  status_icons
             r8   createDeviceIconzDevMgr5.createDeviceIcone  s   ;//C	)HH	Kchh' )yy{CJJL1ooq!}TN	Aq$**,6	Q3	'I ??o-LLT]]0022At}}E++02DEE2;?B2;?B&Q;/	G  	)(CH	)
	K*5chh	*JDchh'  	'&I	's.   F F G FF/GG'&G'c                    t         j                  d       	 t                d| _        | j	                  | j                  d             | j                         j                  | j                  d             t        j                  ddg      | _
        d }	 g }| j                  D ]  }|t        vs|j                  |        t         j                  dd	j                  |      z         g }t        D ]"  }|| j                  vs|j                  |       $ t         j                  d
d	j                  |      z         g }t        D ]  }||vs||vs|j                  |        t         j                  dd	j                  |      z         |D ]5  }t         j                  d|z         t        j                  || j                  d      }|j                   s't         j                  d       |j                  |       q| j#                  |      }|j$                  t&        k(  r5t)        | j*                  | j                  d|j,                  z        ||       nc|j.                  r5t)        | j*                  | j                  d|j,                  z        ||       n"t)        | j*                  |j,                  ||       |t        |<   8 t         j                  dd	j                  |      z         d }|D ]  }|}| j*                  j1                         dz
  }	| j*                  j3                  |	      }
t         j                  d|z         	 t        |= |	dk\  rU|
S|
j6                  |k(  r| j*                  j9                  |	       n(|	dz  }	| j*                  j3                  |	      }
|	dk\  r|
St:        j=                           | j*                  j?                          t:        j=                          tA        t              r| jB                  D ]  }| jD                  jG                  |d         | jH                  rd}	| j*                  j3                  |	      x}
}|
|t:        j=                          |
j6                  | jH                  k(  r,|
}| j                         j                  | jH                         n1|	dz  }	| j*                  j3                  |	      }
|
|d | _%        d| _$        | jJ                  H| j*                  j3                  d      }|+|j6                  | _$        t        | jH                     | _%        |}| jM                          | jH                  r5| jH                  | jN                  _(        | jN                  jS                          ||z   D ]  }||vs| jU                  t        |          ! nd | _%        | jV                  jY                  d       | jZ                  jY                  d       d| _        | j                         j                  | j                  d             | jB                  D ]  }| jD                  jG                  |d         t]                t_        |       }|ja                          d| _        t]                || j*                  jc                  |       | jV                  jY                  d       | jJ                  U| jZ                  jY                  d       | j                         j                  | jH                         | je                          y y # t4        $ r Y w xY w# d| _        t]                w xY w)NzRescanning device list...r   Tz*Refreshing Device List - HP Device ManagerzRefreshing device list...hphpfaxzAdds: %s,zRemovals (1): %szUpdates: %sz
adding: %sF)rz   disable_dbusz$Unsupported model - removing device.z%s (Fax)z%s (Printer)zRemovals (2): %szremoving: %sr   rm   zPress F6 to refresh.)3ro   rp   beginWaitCursorrx   setWindowTitle_DevMgr5__tr	statusBarshowMessager   getSupportedCUPSDevicescups_devicesdevice_listrf  r  Devicerz   	supportedr  r  r  r@   r   model_uifax_typecountr   KeyErrorrB   takeItemrb   processEventsupdateGeometrylenr	  r   setTabEnabledr   rV   updatePrinterCombosr   r   saver~  r   r   r   endWaitCursorr$   r]   r"  updateWindowTitle)r4   currentaddsr$  removalsupdatesrI  r  removed_devicer#  r   r  
first_itemidlgs                  r8   refreshDeviceListzDevMgr5.refreshDeviceList  s   		-. DM		*V WXNN((3N)OP & > >g ODGC ** 'A+A' 		*sxx~56$ +A 1 11 *+ 		,sxx/AAB$ *A}():q)* 		-#((7*;;< )AIIlQ./ --4<<eTC==		"HI * 005D/9&t:cllCZ9[ !% <<*4??DIInUXUaUaFa<b $a) +4??CLL $a) &)KN/)2 		,sxx/AAB#! )A%&N OO113A5E??//6DIInq01'N  1*)9??a/ OO44U;!
#33E:  1*)9 &&(')* ..0""${##}} ;		//T:; ** !,0OO,@,@,GGz". ..0#$2E2EE*. $ 0 < <T=P=P Q %!QJE#'??#7#7#>D #. /3DO24D/. OO003=23,,D/.9$:M:M.NDO&'G,,.**BFBUBU**?**//1$t^ EH, 44[^DE
 '+DO,,77>++66u=$)DMNN$00;Q1RS#}} <		//U;< "O)$/CIIK !&"..w7$$//5*''2248  ,,T-@-@A&&( +c $ R !&sa   \- /A\- A	\- \- G5\- \A\- )D)\- B?\- C\- 	\*&\- )\**\- -] c                 
   | j                   j                  t        k(  r8| j                  | j	                  d| j                   j
                  z               n| j                   j                  r8| j                  | j	                  d| j                   j
                  z               n7| j                  | j	                  d| j                   j
                  z               | j                         j                  | j                         y )NzHP Device Manager - %s (Fax)z HP Device Manager - %s (Printer)zHP Device Manager - %s)
rV   r  r  r  r  r  r  r  r  r   r   s    r8   r  zDevMgr5.updateWindowTitle2  s    ??&&/9##DII.LT__MeMe.e$fg''##DII.PQUQ`Q`QiQi.i$jk##DII.FtG_G_._$`a$$T%8%89r9   c                 B    | j                  | j                  |            S r.   )rV  r2  r4   rB   s     r8   updateDeviceByURIzDevMgr5.updateDeviceByURI>  s      !5!5j!ABBr9   c                 r   || j                   }t        j                  d|j                  z         | j	                  |      }|)|j                  t        | j                  |                   || j                   u r|r| j                          | j                          | j                         j                  | j                         | j                   j                  t        k(  r| j                  j!                  | j                  j#                  | j$                        t&        j)                  ddd             | j                  j!                  | j                  j#                  | j*                        t&        j)                  ddd             y| j                  j!                  | j                  j#                  | j$                        t&        j)                  ddd             | j                  j!                  | j                  j#                  | j*                        t&        j)                  ddd             yyy)z= Update the device icon and currently displayed tab.
        NzupdateDevice(%s)
MainWindowzPrint SettingszPrinter ControlzFax SettingszFax Control)rV   ro   rp   rB   findItemr   r1   r  r  r  r  r  r   r  DEVICE_TYPE_PRINTERr   
setTabTextindexOfSettingsQApplicationrc   Control)r4   rI  
update_tabr   s       r8   rV  zDevMgr5.updateDeviceB  s    ;//C		$s~~56}}S!LLt44S9:;$//!j$$&!!#NN(()<)<=**.AA		$$TYY%6%6t}}%E|G]G]^jl|  C  HD  E		$$TYY%6%6t||%DlF\F\]ik|  C  GD  E		$$TYY%6%6t}}%E|G]G]^jlz  }A  HB  C		$$TYY%6%6t||%DlF\F\]ikxz~F  A '1!r9   c                 P   || j                   s| j                  j                         j                  | _        t
        | j                     | _        | j                  | j                  _        | j                  j                          | j                          | j                          y y y r.   )rx   r   currentItemrB   r   r  rV   r   r   r  rV  r  )r4   r  js      r8   r   z!DevMgr5.DeviceList_currentChanged\  s    ="&//"="="?"J"JD)$*=*=>DO6:6I6ID3##%""$ "/=r9   c                 T    || j                   }| j                  |j                        S r.   )rV   findItemByURIrB   )r4   rI  s     r8   r  zDevMgr5.findItemh  s%    ;//C!!#..11r9   c                     d}| j                   j                  |      }|5|j                  |k(  r|S |dz  }| j                   j                  |      }|4y y )Nr   r   )r   r   rB   )r4   rB   r#  r   s       r8   r  zDevMgr5.findItemByURIo  sW    ##E**,QJE??''.D r9   c                 $    	 t         |   S #  Y y xY wr.   )r  r  s     r8   r2  zDevMgr5.findDeviceByURI{  s    	z**	s    c                     || j                   }|@t        |_        | j                  |d       | j	                  |j
                  dt               yy)z0 Submit device update request to update thread. NF)r  rm   )rV   ERROR_STATE_REFRESHINGrm  rV  ry  rB   EVENT_DEVICE_UPDATE_REQUESTED)r4   rI  r   s      r8   r~  zDevMgr5.requestDeviceUpdate  sM     ;//C?4COce4S^^R1NO	 r9   c                     | j                   sH| j                  j                  d       	 | j                          | j                  j                  d       yy# | j                  j                  d       w xY w)z  Rescan and update all devices. FTN)rx   r   r   r  r   s    r8   r  zDevMgr5.rescanDevices  s_    }}!!,,U37&&(%%006 
 %%006s   A A3c                 ,    t         j                          y r.   )rb   r  r   s    r8   callbackzDevMgr5.callback  s    r9   c                      j                   }||j                  t        k7  xr |j                  }|j                  t
        k(  xr |}|j                  t        kD  xr> t        j                  xr, |j                  t        k(  xr t        j                  dk\  xr |}|j                  t        kD  xr, t        j                  xr |xr  j                   j"                  }|j$                  t&        kD  xr |}t)               } j*                  j-                         }	|	 j                   j.                  t0        k7  r|rq|j3                   j5                  d       fd       |r$|j3                   j5                  d       fd       |rK|j3                   j5                  d       fd       n&|r$|j3                   j5                  d       fd	       |j7                           j8                  s+|j3                   j5                  d
       j:                          j8                  s+|j3                   j5                  d       j<                         |j7                           j*                  j?                         t@        jB                  k(  r%|j3                   j5                  d       fd       n$|j3                   j5                  d       fd       |jE                   j*                  jG                  |             y y )N zPrint...c                  N     j                  t          j                              S r.   )contextMenuFuncr   rw   r   s   r8   r   z?DevMgr5.DeviceList_customContextMenuRequested.<locals>.<lambda>  s&    tG[G[\ghlnrn~n~\  HA r9   zScan...c                  N     j                   j                  j                        S r.   )r  r   cmd_scanr   s   r8   r   z?DevMgr5.DeviceList_customContextMenuRequested.<locals>.<lambda>  s    4K_K_`d`r`r`{`{K| r9   zMake Copies...c                  0    t          j                        S r.   r   r   r   s   r8   r   z?DevMgr5.DeviceList_customContextMenuRequested.<locals>.<lambda>  s    Rbcgimi|i|R} r9   zSend Fax...c                  d     j                  t          j                   j                              S r.   )r  r   rw   r   r   s   r8   r   z?DevMgr5.DeviceList_customContextMenuRequested.<locals>.<lambda>  sG    tOcOcdqrvx|  yI  yI  KO  K^  K^  e_  P` r9   zRefresh DevicezRefresh AllzView as Listc                  B     j                  t        j                        S r.   r   r   s   r8   r   z?DevMgr5.DeviceList_customContextMenuRequested.<locals>.<lambda>  s    4C]C]^g^p^pCq r9   zView as Iconsc                  B     j                  t        j                        S r.   r   r   s   r8   r   z?DevMgr5.DeviceList_customContextMenuRequested.<locals>.<lambda>  s    DD^D^_h_q_qDr r9   )$rV   device_stateDEVICE_STATE_NOT_FOUNDr  r  r  r  FAX_TYPE_NONErq   	fax_buildr  sys
hexversion	scan_typeSCAN_TYPE_NONE
scan_buildr   r  	copy_typeCOPY_TYPE_NONEQMenur   r  rm  ERROR_STATE_ERROR	addActionr  addSeparatorrx   r~  r  viewModer   r   r]   mapToGlobal)
r4   r  r$  availprinterfaxscancpypopupr   s
   `         r8   r   z-DevMgr5.DeviceList_customContextMenuRequested  sS   OO=NN&<<LEmm'::DuG**}, 7 7AMMUdDd 7*,716  ;;/ DDOO D#D(,(:(:(C(C  ++.:7C$KE??..0D??..2CC		*(=  @A  B!OODIIi,@C|}!OODII6F,GJ}~ !OODIIm,D  H`  a&&(}}OODII.>$?$BZBZ[==		- 84;M;MN '')Y-?-??		. 9;qr		/ :<rsKK33A67[ r9   c                    | j                  ddt               	 	 |j                          | j                  ddt               y # t        $ r t	                |j                  d      d   dv r.t        j                  d|z         t        j                  |       n| j                  |       t        j                  d| j                         Y w xY w# | j                  ddt               w xY wNrm   :r   )httphttpsfilezOpening browser to: %s  )ry  rD  r]   r  r  splitro   rp   r   openURLrunExternalCommandr   r   unlockClickrC  )r4   fs     r8   r  zDevMgr5.contextMenuFunc  s    R!:;	A:	 R%?@ " 	:!773<?&??II6:;MM!$++A.!!$(8(89	: R%?@s$   A BC
C CC C)c                    | j                   j                          | j                  j                          | j                  | j                  j                  r| j                  j                          | j                  j                  D ]:  }| j                   j                  d|       | j                  j                  d|       < t        | j                   j                               | _
        y y y rd  )r   clearr   rV   r  updateCUPSPrinterscups_printers
insertItem
to_unicodecurrentTextrw   )r4   rf   s     r8   r  zDevMgr5.updatePrinterCombos  s    **002))//1??&OO%%OO..0__22 C22==aC11<<QBC  *$*L*L*X*X*Z[D & 'r9   c                 D    t        |      | _        | j                          y r.   r  rw   r  r4   re   s     r8   r   z/DevMgr5.PrintSettingsPrinterNameCombo_activated      %a=r9   c                 D    t        |      | _        | j                          y r.   r  r  s     r8   r   z.DevMgr5.PrintControlPrinterNameCombo_activated  r  r9   c                 $   d | _         | j                  j                  t        dd             | j                  j                  d   j                  | j                         | j                  j                  d   j                  | j                         y )N    r   )
click_lockActionsListr   r   itemClickedr   ActionsList_clickeditemDoubleClickedr   s    r8   r   zDevMgr5.initActionsTab  so    $$U2r]3$$%89AA$BZBZ[**+>?GGH`H`ar9   c                     t                	  j                  j                           j                  dj                  t
        k7  xr j                  j                  t        kD  xr> t        j                  xr, j                  t        k(  xr t        j                  dk\  xr j                  t        k(  xr j                   t"        kD  xr, t        j$                  xr xr  j&                  j(                  j*                  t,        kD  xr j.                  t0        k(  j.                  t2        k(  	 t5        j6                   j8                        \	  }}}}}}}}t?        j@                         }	tC        dd      }
|	jE                  |
       |
jG                          	 tI        jJ                  |	jM                  dd            j.                  tP        k7  rXrr jS                  d      }nDrs jS                  d      }n.rr jS                  d	      }nrs jS                  d
      }nd}fd jS                  d      d jS                  d       fdffd jS                  d      d jS                  d       j&                  j(                  ffd jS                  d      d jS                  d       fdffd jS                  d      d jS                  d       fdffd jS                  d       d! jS                  d"       fd#f fd$ jS                  d%      d& jS                  d'       j&                  jT                  ffd( jS                  d)      d* jS                  d+       fd,ffd- jS                  d.      d/ jS                  d0       fd1fd2  jS                  d3      d4 jS                  d5       fd6ffd7 jS                  d8      d9 jS                  d:       fd;ffd< jS                  d=      d> jS                  d?       fd@ffdA jS                  dB      dC jS                  dD       fdEffdF jS                  dB      dC jS                  dG       fdHffdI jS                  dJ      dK jS                  dL       fdMffdN jS                  dO      dP jS                  dQ       fdRffdS jS                  dT      dU jS                  dV      dW j8                  z  ffdX jS                  dY      dZ jS                  d[       fd\ffd] jS                  d^      d fd_ffd` jS                  da      d| fdbffdc jS                  dd      de jS                  df      tW        ||      fdg  jS                  dh      di jS                  dj       jX                  fdk  jS                  dl      dm jS                  dn       jZ                  fg _.         j^                  s7 j\                  D ]!  \  }}}}}ta        |do       jb                  |<   # dp _/         j\                  D ]8  \  }}}}}| |       ste         j                  | jb                  |   ||       : t=                y # t:        $ r Y t=                y w xY w# t>        jN                  $ r dY w xY w# t=                w xY w)qNr  z/etc/hp/hplip.confrrk   pluginFz<Download and install<br>required plugin (already installed).z=Download and install<br>required plugin (needs installation).z<Download and install<br>optional plugin (already installed).z=Download and install<br>optional plugin (needs installation).rm   c                       S r.   r>   r  s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>T      g r9   PrintprintzPrint documents or files.c                  0    t          j                        S r.   )r   rw   r   s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>X  s    [t/?/?@ r9   c                       S r.   r>   )r  s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>Z  s    T r9   Scanr  z*Scan a document, image, or photograph.<br>c                       S r.   r>   )r  s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>`  s    c r9   zMake Copies
makecopiesz3Make copies on the device controlled by the PC.<br>c                  0    t          j                        S r.   r  r   s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>d  s    -dD4G4GH r9   c                       S r.   r>   r  s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>h      S r9   zSend Faxr  zSend a fax from the PC.c                  F    t          j                   j                        S r.   )r   rw   r   r   s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>l  s    ]41A1A4CVCVW r9   c                       S r.   r>   r6  s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>n  r7  r9   z	Fax Setup	fax_setupz4Fax support must be setup before you can send faxes.c                  0    t          j                        S r.   )r   r   r   s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>r      ^D$2E2EF r9   c                  8     xr j                   j                  S r.   )r   cmd_fab)r  r4   s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>t  s    S?T%7%7%?%? r9   zFax Address Bookfabz>Setup fax phone numbers to use when sending faxes from the PC.c                  2    j                   t        k7  xr  S r.   )power_settingsPOWER_SETTINGS_NONE)r  r$  s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>|  s    a..2EEO% r9   zDevice Settingsr   zNYour device has special device settings.<br>You may alter these settings here.c                  0    t          j                        S r.   )r   r   r   s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>      .tT5H5HI r9   c                       S r.   r>   r+  s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>  r,  r9   zPrint Test Pagetestpagez4Print a test page to test the setup of your printer.c                  0    t          j                        S r.   )r   rw   r   s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>  s    0t7G7GH r9   c                       yNTr>   r>   r9   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>      r9   z#View Printer and Device Informationr   z:View information about the device and all its CUPS queues.c                  0    t          j                        S r.   )r   r   r   s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>  s    Zd.A.AB r9   c                  2    xr  j                   t        k7  S r.   )
align_typeALIGN_TYPE_NONEr$  r  s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>      WH)H r9   zAlign Cartridges (Print Heads)alignzJThis will improve the quality of output when a new cartridge is installed.c                  0    t          j                        S r.   )r   r   r   s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>      [t/B/BC r9   c                  2    xr  j                   t        k7  S r.   )
clean_typeCLEAN_TYPE_NONErO  s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>  rP  r9   zClean PrintheadscleanzyYou only need to perform this action if you are<br>having problems with poor printout quality due to clogged ink nozzles.c                  0    t          j                        S r.   )r    r   r   s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>  rS  r9   c                  \    xr(  j                   t        k7  xr  j                   t        k(  S r.   color_cal_typeCOLOR_CAL_TYPE_NONECOLOR_CAL_TYPE_TYPHOONrO  s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>  *    W)9)9=P)PUVUeUeiU r9   zColor Calibrationcolorcalz^Use this procedure to optimimize your printer's color output<br>(requires glossy photo paper).c                  0    t          j                        S r.   r!   r   r   s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>  r<  r9   c                  \    xr(  j                   t        k7  xr  j                   t        k7  S r.   rZ  rO  s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>  r^  r9   z=Use this procedure to optimimize your printer's color output.c                  0    t          j                        S r.   ra  r   s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>  r<  r9   c                  2    xr  j                   t        k7  S r.   )linefeed_cal_typeLINEFEED_CAL_TYPE_NONErO  s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>  s    WV)<)<@V)V r9   zLine Feed Calibrationlinefeed_calz^Use line feed calibration to optimize print quality<br>(to remove gaps in the printed output).c                  0    t          j                        S r.   )r"   r   r   s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>  rD  r9   c                  2    xr  j                   t        k7  S r.   )pq_diag_typePQ_DIAG_TYPE_NONErO  s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>  s    WL;L)L r9   zPrint Diagnostic Pagepq_diagzOYour printer can print a test page <br>to help diagnose print quality problems.c                  0    t          j                        S r.   )r#   r   r   s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>  s    \$0C0CD r9   c                  @    xr j                   t        k\  xr  dk(  S )Nusb)wifi_configWIFI_CONFIG_USB_XMLbusr$  r  s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>  s"    W^:M)M^RUY^R^ r9   zWireless/wifi setup using USBwirelesszIConfigure your wireless capable printer using a temporary USB connection.zhp-wificonfig -d %sc                  $    xr  j                   S r.   )fw_downloadrO  s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>  s    g7!-- r9   zDownload FirmwarefirmwarezUDownload firmware to your printer <br>(required on some devices after each power-up).c                  0    t          j                        S r.   )r   r   r   s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>  r<  r9   c                       xr S r.   r>   )r  
req_plugins   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>      g4* r9   zInstall Required Pluginc                  2    t         j                        S r.   rH   r)  r$  rK   r4   s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>      ]4;KL r9   c                      xr  S r.   r>   )
opt_pluginr  s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>  r{  r9   zInstall Optional Pluginc                  2    t         j                        S r.   r}  r~  s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>  r  r9   c                  @    xr j                   t        kD  xr  dk(  S )Nnet)embedded_server_typeEWS_NONErr  s   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>  s#    g\!*@*@8*K\PSW\P\ r9   z$Open printer's web page in a browserewszAThe printer's web page has supply, status, and other information.c                       yrI  r>   r>   r9   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>  rJ  r9   zVisit HPLIP Support Websiter   zVisit HPLIP Support Website.c                       yrI  r>   r>   r9   r8   r   z*DevMgr5.updateActionsTab.<locals>.<lambda>  rJ  r9   Helpr   zView HPLIP help.32x32T)3r  r#  r  rV   r  r  r  r  r  rq   r  r  r  r  r  r  r  r  r  r   r  r  r  r)  rU   PLUGIN_OPTIONALr   parseDeviceURIr   Errorr  r   ConfigParseropen	read_filer  r   to_boolr   NoOptionErrorPLUGIN_NONEr  r>  openEWSr  r
  ICONSr   r   r   r,   )r4   back_endis_hpmodelserialdev_filehostzcport
hplip_conffpxfilter6   r  tooltipr3   fltrr  rs  r  r$  r  r  rK   r  rz  r  s   `                 @@@@@@@@@@r8   r  zDevMgr5.updateActionsTab  s   Z	""$A}*@@PQ[[jj=0 ;T^^ ;YhHh ;NNj0;5: --+>>H5{{^3 @ @@$($6$6$?$? kkN2>wXX8
XX8
--d.A.AB RHeS%4T
 *668
.4$$R(
-',}}Z^^GX5V'W$ 88{*!&6 II&de#,< II&ef#(8 II&de#,< II&ef A &IIg&II9:@	B "IIf%IIJK&&//	1 "IIm, IISTH	J !IIj)II78W	Y !IIk*IITUF	H @II01II^_&&..	0 PII/0IInoI	K &II/0IITUH	J $IICDIIZ[B	D III>?IIjkC	E III01II  Z  [C	E @II12II~F	H @II12II]^F	H WII56"II~I	K MII56IIopD	F _YY>?YYjk*T-@-@@	B 8II12IIuvF	H 5II78L	N 5II78L	N ]YYEFYYbcT2&	( #II;<II<=LL	" #IIf%II01II	]T
l --;?:: K7tT7C0;D'0J-K-1D*6:jj 2D$gs'#v$ !1!14- OO  L OO $11 -',$-z OsV   D2[$ 
)Z/ 3A[$ 5%[ S
[$ /	[8[$ [[$ [![$  [!![$ $[0c                    |H| j                   |ur8|| _         |j                  rtt        |j                  t        j                        rP|j                         }| j                  ddt               	 |j                          | j                  ddt               nt                |j                  j                  d      d   dv rBt        j                  d|j                  z         t        j                  |j                         n$| j                  t!        |j                               t"        j%                  d| j&                         y y y # | j                  ddt               w xY wr	  )r"  r3   
isinstancecollectionsAbcCallablery  rD  r]   rC  r  r  ro   rp   r   r  r  rP  r   r   r  )r4   r   r  s      r8   r%  zDevMgr5.ActionsList_clicked  s   t ;"DOxxJtxx1H1HIhhj  R)BCIIIK$$R-GH  !88>>#&q)-FFII6ABMM$((+++CM:dD$4$45% !< $$R-GHs   2E E&c                 &    d | _         t                y r.   )r"  r  r   s    r8   r  zDevMgr5.unlockClick  s    r9   c                     t        |       y r.   )r.  )r4   r  s     r8   &ActionsList_customContextMenuRequestedz.DevMgr5.ActionsList_customContextMenuRequested  s	    ar9   c                    | j                   j                  d       | j                  d      | j                  d      | j                  d      | j                  d      | j                  d      | j                  d      g| _        y )Nr   rm   StatuszDate and TimeCodeJob IDDescription)StatusTablesetColumnCountr  status_headersr   s    r8   r   zDevMgr5.initStatusTab  se    ''*#yy}dii.A499_C]#yy0$))H2EtyyQ^G_ar9   c                 D    | j                          | j                          y r.   )updateStatusLCDupdateStatusTabler   s    r8   r  zDevMgr5.updateStatusTab$  s     r9   c                 r   | j                   | j                   j                  r| j                   j                  r| j                   j                  }|j	                  dd      dk(  r%|j	                  dd      }|j	                  dd      }n9	 t        j                  | j                   j                  d   j                        }d}| j                  ||       y | j                   j                  t        k(  r1| j                  | j                  d      | j                  d             y | j                   j                  s!| j                  | j                  d	             y | j                   j                  s!| j                  | j                  d
             y | j                          y # t        t        f$ r d}Y w xY w)Npanelr   r   zpanel-line1rm   zpanel-line2zStatus information notzavailable for this device.zDevice not supported.zNo status history available.)rV   rn  r  rS  r   r   queryStringr/  r  	TypeErrordrawStatusLCDstatus_typeSTATUS_TYPE_NONEr  )r4   rS  line1line2s       r8   r  zDevMgr5.updateStatusLCD)  sU   ??&OO  OO%%##Bvvgq!Q&}b1}b1"..t/C/CA/F/Q/QRE ue, **.>>""499-E#F		RnHop__..""499-D#EF__))""499-K#LM ""$% '	2 Es   
6F" "F65F6c                 ~   t        dd      }t               }|j                  |       |j                  t	        ddd             |j                  | j                                d\  }}}|r|j                  |||       |r|j                  |||       |j                          | j                  j                  |       y )N	panel_lcdr   r   )
      !   )r   r  beginsetPenQColorsetFontfontdrawTextr  LCD	setPixmap)r4   r  r  pmr  r  y_line1y_line2s           r8   r  zDevMgr5.drawStatusLCDK  s    g.J		1a!			$))+(7G JJq'5)JJq'5)	2r9   c                 R
   | j                   j                          t        j                  t        j                  z  }d}| j
                  j                  d d  }|r9| j                   j                  t        |             | j                   j                  t        | j                               | j                   j                  | j                         | j                   j                         j                          | j                   j                         j                          |j!                          t        |      dz
  }|D ]  }|t#        j$                  |j&                  d      }t#        j$                  |j&                  d      }|dk(  r| j)                  d      }nt+        |j,                        }t/               }|j1                  t3        |j,                               t5        |j7                         d|      }	|j8                  rt;        |j8                        }
nt;        d      }
t<        j?                  |j&                  t@              }| j
                  jB                  }|tD        tF        fv rtI        |      d   }ntI        |      d   }t;        |j&                        }tK        tM        |      | j)                  d            }|jO                  |       | j                   jQ                  |d|       d|fd|	fd|fd|
fd	|ffD ]G  \  }}tK        t5        |            }|jO                  |       | j                   jQ                  |||       I |dz  } | j                   jS                          | j                   jU                  dd
       y | j                   j                  d       | j                   j                  d       | j                   j                  ddg       | j                   j                         j                          | j                   j                         j                          t        j                  }tI        tV              d   }tK        tM        |      | j)                  d            }|jO                  |       | j                   jQ                  |d|       tK        | j)                  d            }|jO                  |       | j                   jQ                  dd|       | j                   jS                          | j                   jU                  dd
       y )Nr   r   z(most recent)r  rm   r   r   r   r(      z1Status information not available for this device.),r  r  rE   ItemIsSelectableItemIsEnabledrV   rn  setRowCountr  r  r  setHorizontalHeaderLabelsverticalHeaderhidehorizontalHeadershowre  r   r  r/  r  getTimeDeltaDesctimedate	QDateTime	setTime_tr   rP  toStringrw  r  rk  r   rl  r  r  r  getStatusListIconQTableWidgetItemr1   setFlagssetItemresizeColumnsToContentssetColumnWidthr  )r4   flagsrowrn  rJ  essesldescdtttrw  rm  r  
status_pixr/  r  colrX  r7   s                      r8   r  zDevMgr5.updateStatusTableb  s    ##b&6&66##A&((T3++C0C0C,DE66t7J7JK++-224--/446LLNd)A+C ,9((q9((q9!899_5D ,AJJ7D[S_- "++-5688'1F'^F7;;ALLJ[\ OO55	!46H II!2;!?!BJ!2;!?!BJ'5
$U:%6		"F

5!  ((a3 !3x!R1j/Av;QRTWPXY :FC(Q0AJJu%$$,,S#q9	: qY,\ 446++Ar2 ((+++A.66Bx@++-224--/446$$E&'89!<F v		">AJJu$$S!Q/ +^!_`AJJu$$Q1-446++Ar2r9   c                 ^   t        dd      | _        d}d}d}d}d}d}d	}d
}d}	d}
d}d}i t        |gt        |gt        |gt
        |
gt        |gt        |||gt        |||gt        |
gt        |gt        |gt        |gt        |gt        |gt        |gt         |gt"        |||gt$        ||gt&        ||
gt(        |gt*        |	gt,        |
gt.        |gt0        ||gt2        ||gt4        |gt6        |gi	| _        | j;                  d      | j;                  d      | j;                  d      | j;                  d      | j;                  d      g| _        | j>                  d k7  r	 | j>                  j@                  d    y y # tB        $ r | j>                  jE                          Y y w xY w)Nbatteryr   z#ffff00z#ffffccz#00ffffz#ccffffz#ff00ffz#ffccffz#000000z#0000ffz#808080z#a9a9a9z#c0c0c0z#ff0000rm   r  zHP Part No.zApprox. Levelr  zagent1-type)#r   pix_batteryAGENT_TYPE_UNSPECIFIEDAGENT_TYPE_BLACKAGENT_TYPE_MATTE_BLACKAGENT_TYPE_PHOTO_BLACKAGENT_TYPE_BLACK_B8800AGENT_TYPE_CMYAGENT_TYPE_KCMAGENT_TYPE_GGKAGENT_TYPE_YELLOWAGENT_TYPE_MAGENTAAGENT_TYPE_CYANAGENT_TYPE_CYAN_LOWAGENT_TYPE_YELLOW_LOWAGENT_TYPE_MAGENTA_LOWAGENT_TYPE_BLUEAGENT_TYPE_KCMY_CMAGENT_TYPE_LC_LMAGENT_TYPE_LG_PKAGENT_TYPE_LGAGENT_TYPE_GAGENT_TYPE_DGAGENT_TYPE_PGAGENT_TYPE_C_MAGENT_TYPE_K_YAGENT_TYPE_LCAGENT_TYPE_REDTYPE_TO_PIX_MAPr  supplies_headersrV   rS  r  queryDevice)r4   yellowlight_yellowcyan
light_cyanmagentalight_magentablackbluegray	dark_gray
light_grayreds                r8   r   zDevMgr5.initSuppliesTab  s0   &y': 
!	
 !5 !/% !  6 !  6	 !
  6w !  .gv/F !  .
M</X !  .	{ !  16( !  2G9 !  /$ !  3ZL !  5|n !  6 !  / !   2FD'3J! !"  0*m1L# !(  0*i1H,zl+dV,yk,zl-g-v,zl-9 !> "&2		-0H!%=!9499_;U!%8!4!6 ??d".""=1 #  .++-.s   +F #F,+F,c           	      >   t                t        j                  t        j                  z  }	 | j                  j                          | j                  j                  d       | j                  j                  d       | j                  | j                  j                  r| j                  j                  t        k7  r| j                  j                  t        k7  rg | j                  _        d}	 	 t        | j                  j                   d|z           }t        | j                  j                   d|z           }| j                  j                   d|z     }| j                  j                  j#                  ||||f       |dz  }th        jk                  d       t        j                  }| j                  j                  d       | j                  j                  d       | j                  j5                  ddg       | j                  j7                         j9                          | j                  j;                         j9                          tY        | j]                  d            }|j_                  |       | j                  ja                  dd|       tm        tn              d   }tY        t[        |      | j]                  d            }|j_                  |       | j                  ja                  dd|       | j                  je                          | j                  jg                  dd       tq                y # t$        $ r& |dk(  r| j                  j'                          nY nY w xY w| j                  j                  j)                  t+        j,                  t*        j.                               | j                  j                  t1        | j                  j                               | j                  j                  t1        | j2                               | j                  j5                  | j2                         | j                  j7                         j9                          | j                  j;                         j=                          | j                  j?                  tA        dd             tC        | j                  j                        D ]  \  }}|\  }}}}	 t        | j                  j                   d	|z           }| j                  j                   d
|z     }	| j                  j                   d|z     }
n# t$        $ r Y  nrw xY wd }|tD        tF        tH        tJ        tL        tN        tP        fv r| jS                  ||      }d }|tD        tT        tF        tH        tN        fv r| jW                  ||      }|RtY        t[        |      | j]                  d            }|j_                  |       | j                  ja                  |d|       d|	fd|fd|
ffD ]G  \  }}tY        tc        |            }|j_                  |       | j                  ja                  |||       I |tY        t[        |      | j]                  d            }|j_                  |       | j                  ja                  |d|        | j                  je                          | j                  jg                  dd       | j                  jg                  dd       # tq                w xY w)Nr   r   zagent%d-typezagent%d-kindzagent%d-sku)rY  d      zagent%d-levelzagent%d-desczagent%d-health-descrm   r   r   r   r  x   z3Supplies information not available for this device.)9r  rE   r  r  SuppliesTabler  r  r  rV   r  r  r  r  r  sorted_suppliesr   rS  rf  r  r  sortr   
cmp_to_key	levelsCmpr  r  r  r  r  r  r  r   r   	enumerateAGENT_KIND_SUPPLYAGENT_KIND_HEAD_AND_SUPPLYAGENT_KIND_TONER_CARTRIDGEAGENT_KIND_MAINT_KITAGENT_KIND_ADF_KITAGENT_KIND_INT_BATTERYAGENT_KIND_DRUM_KITcreateStatusLevelGraphicAGENT_KIND_HEADgetStatusIconr  r1   r  r  r  rP  r  r  ro   rN   r  r  r  )r4   r  a
agent_type
agent_kind	agent_skur  r  agent_level
agent_descagent_health_desclevel_pixmapr7   r  r  rX  s                   r8   r  zDevMgr5.updateSuppliesTab  s   ##b&6&66p	$$&**1---a0*))++/??,,0FF24/
g%(););NQ<N)O%P
%(););NQ<N)O%P
$(OO$6$6}q7H$I	 77>>:z[d?efFA ` QR((""..q1""11!4""<<b"XF""11388:""335::<$TYY/d%ef

5!""**1a3*+<=a@$U6]DIIbMB

5!""**1a3""::<""11!R8 OA $ "6 OO779! :" //449I9I%//9Z4[""..s4??3R3R/ST""11#d6K6K2LM""<<T=R=RS""11388:""335::<""..uS"~>'(G(GH 1>FC;<8Az:y&)$//*<*<_q=P*Q&R%)__%7%78J%K
,0OO,>,>?TWX?X,Y)#  $(L!&7&@&@&:&8&<&9&( ( (,'D'D[R\'] "F!&7&5&@&@ '=&( ( "&!3!3J
!K),U6]DIIbMJ

5)**2231=$%z?Q	NQHYDZ"[ @Q,SV4

5)**223Q?@
 $/,U<-@$))B-P

5)**2231=c1>f ""::<""11!R8""11!S90 Os`   C \ .A&L8 G\ 8)M'!\ &M''E7\ AT=<\ =	U\ 
UD\ 'B)\ \c                    |t         t        t        t        fv r&| j                  |   }t        |t              rt        |      }t        dd      }|j                  t        dddd             t               }|j                  |       |j                  t        j                         |dk(  rj|j                  t        |d                |j!                  t#        t        |d         t$        j&                               |j)                  dddddd       n|dk(  r|j                  t        |d                |j!                  t#        t        |d         t$        j&                               |j)                  dddddd       |j                  t        |d                |j!                  t#        t        |d         t$        j&                               |j)                  d	ddddd       n>|d
k(  r8|j                  t        |d                |j!                  t#        t        |d         t$        j&                               |j)                  d	d	dddd       |j                  t        |d                |j!                  t#        t        |d         t$        j&                               |j)                  dd	dddd       |j                  t        |d                |j!                  t#        t        |d         t$        j&                               |j)                  dddddd       |j+                          |S |S |t,        k(  r| j.                  S y )N   r   r   r   r  i  r      r(  r   )r$  r,  r%  r&  r  r  listr  r  fillr  r  r  setRenderHintAntialiasingr  setBrushQBrushrE   SolidPatterndrawPier  r)  r  )r4   r0  r/  mapmap_lenr  r  s          r8   r-  zDevMgr5.getStatusIconp  s   +)446 6
 &&z2C#t$c(b"o1a+,J 5 56a<HHVCF^,JJvfSVnbooFGIIaBAt4\HHVCF^,JJvfSVnbooFGIIaAq!T2HHVCF^,JJvfSVnbooFGIIaAq!T2\HHVCF^,JJvfSVnbooFGIIaAq!T2HHVCF^,JJvfSVnbooFGIIaAq!T2HHVCF^,JJvfSVnbooFGIIaAq!T2
 
11''' 2r9   c                 
   |rt        |dz  |z        }nd}t        ||      }|j                  t        dddd             t	               }|j                  |       |j                  t        j                         |j                  t        j                         | j                  |   }t        |      }	|	dk(  s|	dkD  r,|j                  dd||t        t        |d                      n|	dk(  rct        |dz        }
|j                  dd||
t        t        |d                      |j                  d|
||t        t        |d                      n|	dk(  rt        |dz        }t        d|z        }|j                  dd||t        t        |d                      |j                  d|||t        t        |d                      |j                  d|||t        t        |d                      |j                  dd||       |dkD  r2|t         t"        t$        fv r|j                  t        j&                         t        d|z  dz        }t        |dz        }|j)                  |d||       |j)                  |||||z
         |d	kD  r2|t         t"        t$        fv r|j                  t        j&                         t        |dz        }t        |dz        }|j)                  |d||       |j)                  |||||z
         |d
kD  r2|t         t"        t$        fv r|j                  t        j&                         t        |dz        }|j)                  |d||       |j)                  |||||z
         |j+                          |S )Nr  r   r   r   r   K   r   r(  2      )r   r  r:  r  r  r  r;  r<  r  rE   r  r  r  fillRectr>  drawRectr  r  r  whitedrawLiner  )r4   percentr/  r  rq  fwpxpprA  rB  h2h3h23w1h6w2h4w4s                     r8   r+  z DevMgr5.createStatusLevelGraphic  s   QsU7]#BBQ]
q!Q"#Z

../
		"(("":.c(a<7Q;KK1b!VF3q6N%;<\QUBKK1b"fVCF^&<=KK2r1fVCF^&<=\QUBa"f+CKK1b"fVCF^&<=KK2r3vc!f~(>?KK3AvfSVn'=> 	Aq!QR<J3_
EFIIbhh Q^QZ
B2r"
B2qt$R<J3_
EFIIbhh QZQZ
B2r"
B2qt$R<J3_
EFIIbhh QZ
B2r"
B2qt$
	r9   c                      y r.   r>   r   s    r8   r   zDevMgr5.initPrintSettingsTab  s    r9   c                    t                	 | j                  j                  t        k(  r+| j                  j                  | j                  d             n*| j                  j                  | j                  d             | j                  j                  | j                  | j                         t                y # t                w xY w)NPrinter Name:	Fax Name:)r  rV   r  r  PrintSettingsPrinterNameLabelsetTextr  r'   updateUirw   r  r   s    r8   r  zDevMgr5.updatePrintSettingsTab  s    	**.AA22::499_;UV22::499[;QR%%..t@P@PQOMOs   B"B9 9Cc                    t         j                  | j                  d      t         j                  | j                  d      t         j                  | j                  d      t         j
                  | j                  d      t         j                  | j                  d      t         j                  | j                  d      t         j                  | j                  d      i| _	        | j                  j                  t        t        dd	                   | j                  j                  t        t        d
d	                   t         j                  t        t        dd	            t         j                  t        t        dd	            t         j                  t        t        dd	            t         j
                  t        t        dd	            t         j                  t        t        dd	            t         j                  t        t        dd	            t         j                  t        t        dd	            i| _        | j                   j"                  j%                  | j&                         | j(                  j"                  j%                  | j*                         | j,                  j"                  j%                  | j.                         | j                  j"                  j%                  | j0                         | j                  j"                  j%                  | j2                         | j                  d      | j                  d      | j                  d      g| _        y )NPendingzOn holdPrintingStoppedCanceledAborted	Completedcancelr   r   busyr.  rN   r   r[   r  zTitle/Descriptionr  )r   IPP_JOB_PENDINGr  IPP_JOB_HELDIPP_JOB_PROCESSINGIPP_JOB_STOPPEDIPP_JOB_CANCELLEDIPP_JOB_ABORTEDIPP_JOB_COMPLETED
JOB_STATESCancelJobButtonr   r1   r   RefreshButtonJOB_STATE_ICONSStartStopButtonclickedr   StartStopButton_clickedAcceptRejectButtonAcceptRejectButton_clickedSetDefaultButtonSetDefaultButton_clickedCancelJobButton_clickedRefreshButton_clickedjob_headersr   s    r8   r   zDevMgr5.initPrintControlTab  s[    00499Y3G --		)0D 33dii
6K 00499Y3G 22TYYz5J 00499Y3G 22TYY{5K 	$$U;x+I%JK""5Y)H#IJ!%!5!5u[QX=Y7Z!%!2!2U;vw;W5X!%!8!85WV]A^;_!%!5!5k)U\>]8^!%!7!7%IW^@_:`!%!5!5k'SZ>[8\!%!7!7%DRY@Z:[ " 	$$,,T-I-IJ''//0O0OP%%--d.K.KL$$,,T-I-IJ""**4+E+EF IIh/;N1OQUQZQZ[cQder9   c                 p    | j                   j                  j                  | j                         d| _        y NF)InstallLatestButtonrs  r   InstallLatestButton_clickedInstallLatestButton_lockr   s    r8   initUpgradeTabzDevMgr5.initUpgradeTab)  s*      ((001Q1QR(-%r9   c                    | j                   du ry | j                  r| j                  j                  d       t	        j
                         }|0t	        j                  d      r|dz   }t        j                  |       nt        j                  d|z         | j                  j                  d       y d| _         t	        j                  d       t        j                  d| j                         y )NTFz
hp-upgradez 'hp-upgrade -w'z3Failed to run hp-upgrade command from terminal =%s z>http://hplipopensource.com/hplip-web/install/manual/index.htmlr  )r  r{   r~  r   r   get_terminalwhichr   executero   r   r  r   r   InstallLatestButton_unlock)r4   terminal_cmdr3   s      r8   r  z#DevMgr5.InstallLatestButton_clicked.  s    ((D0''$$//6 --/L'EKK,E"%77  %		OP\\]$$//5,0D)MMZ[dD$C$CDr9   c                     d| _         y r}  )r  r   s    r8   r  z"DevMgr5.InstallLatestButton_unlock@  s
    (-%r9   c                    | j                   j                         }|mt        |j                  t        j
                              \  }}|r?|r<| j                  j                  |       t        j                  d| j                         y y y y )Nr  )JobTabler  	value_intrW  rE   UserRolerV   	cancelJobr   r   r  )r4   r   rw  r[   s       r8   ry  zDevMgr5.CancelJobButton_clickedD  sn    }}((*"499R[[#9:JFBf((0  t'A'AB r r9   c                 $    | j                          y r.   )r  r   s    r8   rz  zDevMgr5.RefreshButton_clickedN  s    ""$r9   c                 $    | j                          y r.   )r  r   s    r8   r  zDevMgr5.updateHPLIPupgradeQ  s    r9   c                 ~   | j                   j                  t        k(  r[| j                  j	                  | j                  d             | j                  j                  t        j                  ddd              nZ| j                  j	                  | j                  d             | j                  j                  t        j                  ddd              | j                  j                          | j                  j                  d       | j                  j                  d       | j                          t        j                   t        j"                  z  }t%        j&                         }d}|D ]!  }|j(                  | j*                  k(  s|dz  }# |r| j,                  j/                  d       | j                  j                  |       | j                  j                  t1        | j2                               | j                  j5                  | j2                         t7        |      D ]A  \  }}|j(                  | j*                  k(  s!t9        | j:                  |j<                     | j>                  |j<                           }|jA                  t        jB                  |jD                         |jG                  |       | j                  jI                  |d|       t9        |jJ                        }|jG                  |       | j                  jI                  |d|       t9        tM        |jD                              }|jG                  |       | j                  jI                  |d	|       D | j                  jO                  dd       | j                  jQ                          y | j,                  j/                  d
       y )NrY  r  zPrinter Queue ControlrZ  zFax Queue Controlr   r   Tr   F))rV   r  r  PrintControlPrinterNameLabelr\  r  groupBoxsetTitler  rc   r  r  r  r  updatePrintControllerrE   r  r  r   getJobsr   rw   ro  r   r  r{  r  r#  r  rq  statern  setDatar  idr  r  rx  r  setCurrentCellr  )r4   r  jobsnum_jobsr  r  r  s          r8   r  zDevMgr5.updatePrintControlTabW  s   ??&&*==--55dii6PQMM""<#9#9,H_ae#fg--55dii6LMMM""<#9#9,H[]a#bc!!!$$$Q'""$##b&6&66||~ 	Avv)))A	   ++D1MM%%h/MM((T-=-=)>?MM33D4D4DE#D/ 5Q66T---()=)=agg)FXYX_X_H`aAIIbkk1440JJu%MM))#q!4(1AJJu%MM))#q!4(ADD)9:AJJu%MM))#q!45  MM((A.MM113   ++E2r9   c                     t         j                  | _        d| _        t        j                         }|D ]?  }|j
                  | j                  k(  s|j                  | _        |j                  | _         y  y rI  )	r   IPP_PRINTER_STATE_IDLEr  r  getPrintersr   rw   r  	accepting)r4   r  r  s      r8   r  zDevMgr5.getPrinterState  sb    !88!%((* 	Avv)))%&WW")*&		r9   c                    | j                   j                  | j                  d             t        j                         }| j
                  j                  t        k(  rd}nd}|| j                  k(  rn| j                  j                  | j                  d|z               | j                  j                  t        dd             | j                   j                  d       nm| j                  j                  | j                  d|z               | j                  j                  t        d	d             | j                   j                  d
       | j                          | j                  t        j                   k(  r~| j"                  j                  | j                  d             | j$                  j                  t        dd             | j&                  j                  | j                  d|z               n| j                  t        j(                  k(  r}| j"                  j                  | j                  d             | j$                  j                  t        dd             | j&                  j                  | j                  d|z               n|| j"                  j                  | j                  d             | j$                  j                  t        dd             | j&                  j                  | j                  d|z               | j*                  rz| j,                  j                  | j                  d             | j.                  j                  t        dd             | j0                  j                  | j                  d             y | j,                  j                  | j                  d             | j.                  j                  t        dd             | j0                  j                  | j                  d             y )NzSet as DefaultPrinterFaxz
Default %sr[   r   FzNot Default %sinfoTzStarted/IdleidlezStop %szStarted/Processingrf  ra  rN   zStart %szAccepting JobszReject JobszRejecting JobszAccept Jobs)rw  r\  r  r   getDefaultPrinterrV   r  r  rw   SetDefaultLabelSetDefaultIconr  r   r   r  r  r  StartStopLabelStartStopIconrr  IPP_PRINTER_STATE_PROCESSINGr  AcceptRejectLabelAcceptRejectIconru  )r4   r  device_strings      r8   r  zDevMgr5.updatePrintController  s    %%dii0@&AB002??&&*==%M!Md...  ((<3M)NO))+dG*DE!!,,U3   ((3CM3Q)RS))+fg*FG!!,,T2 !<!<<''		.(AB((VW)EF  ((9]3J)KL 4#D#DD''		2F(GH((VW)EF  ((9]3J)KL ''		)(<=((Y)HI  ((:m3K)LM !!""**4995E+FG!!++K,HI##++DIIm,DE ""**4995E+FG!!++K	7,KL##++DIIm,DEr9   c                 r   t                	 | j                  t        j                  t        j                  fv rvt        j
                  t        j                  t        d| | j                        \  }}|t        j                  k(  r| j                  j                  t        k(  rt        }n|t        }nut        j
                  t        j                  t        d| | j                        \  }}|t        j                  k(  r*| j                  j                  t        k(  rt         }nt"        }|t        j                  k(  r7| j%                          | j                  j'                  | j                         n2t)        | | j+                  d|z               t        j,                          t/                y # t/                w xY w)Nqt4z><b>Start/Stop printer queue operation fails. </b><p>Error : %s)r  r  r   r  r  cups_operationstopGUI_MODErw   IPP_OKrV   r  r  r  EVENT_FAX_QUEUE_STOPPEDstartEVENT_PRINTER_QUEUE_STARTEDEVENT_FAX_QUEUE_STARTEDr  r  	FailureUIr  r<  r  r4   rp  
result_strrJ  s       r8   rt  zDevMgr5.StartStopButton_clicked  s7   	!!d&A&A4CdCd%ee%)%8%8HeUY[_[k[k%l"
T[[(226II73 &*%8%8XuVZ\`\l\l%m"
T[[(226II73$**,))!T-=-=>$		*jku*u vw((* OMOs   FF* *F6c                 2   t                	 | j                  rvt        j                  t        j                  t
        d| | j                        \  }}|t        j                  k(  r| j                  j                  t        k(  rt        }n|t        }nut        j                  t        j                  t
        d| | j                        \  }}|t        j                  k(  r*| j                  j                  t        k(  rt        }nt        }|t        j                  k(  r7| j!                          | j                  j#                  | j                         n2t%        | | j'                  d|z               t        j(                          t+                y # t+                w xY w)Nr  z@<b>Accept/Reject printer queue operation fails.</b><p>Error : %s)r  r  r   r  rejectr  rw   r  rV   r  r  r  EVENT_FAX_QUEUE_REJECTING_JOBSaccept"EVENT_PRINTER_QUEUE_ACCEPTING_JOBSEVENT_FAX_QUEUE_ACCEPTING_JOBSr  r  r  r  r<  r  r  s       r8   rv  z"DevMgr5.AcceptRejectButton_clicked  s#   	%%%)%8%8hPUW[]a]m]m%n"
T[[(226II>: &*%8%8hPUW[]a]m]m%n"
T[[(226II>:$**,))!T-=-=>$		*lmw*w xy((* OMOs   E3F
 
Fc           	      &   t                	 t        j                  t        j                  t        d| | j
                  j                  d            \  }}|t        j                  k7  r3t        | | j                  d|z               t        j                          n`| j                          | j                  j                  t        k(  rt        }nt         }| j                  j#                  || j
                         t%                y # t%                w xY w)Nr  utf8zB<b>Set printer queue as default operation fails. </b><p>Error : %s)r  r   r  setDefaultPrinterr  rw   encoder  r  r  r<  r  rV   r  r  "EVENT_PRINTER_QUEUE_SET_AS_DEFAULTEVENT_FAX_QUEUE_SET_AS_DEFAULTr  r  r  s       r8   rx  z DevMgr5.SetDefaultButton_clicked  s    	!%!4!4T5K5KXW\^bdhdtdtd{d{  }C  eD  "EFJ$$		*noy*y z{((***,??..2EE:A6A))!T-=-=> OMOs   C-D Dc                 4   t                	 | j                  j                         }|H|j                         r%| j                  j                  |j                         |j                         }|Ht                | j                          y # t                w xY wr.   )
r  r  
firstChildisOnrV   r  rw  nextSiblingr  r  )r4   r   s     r8   cancelCheckedJobszDevMgr5.cancelCheckedJobs  sx    		==++-D"99;OO--dkk:'')	 " O 	""$ Os   A#B Bc                 D    | j                          |j                          y r.   )cleanupr  )r4   rH  s     r8   
closeEventzDevMgr5.closeEvent4  s    r9   c                 $    | j                          y r.   )r|  r   s    r8   r  zDevMgr5.cleanup9  s    r9   c                     t         j                  d       	 t        j                  dt        j                         y # t
        $ r Y y w xY w)NzCleaning up child processes.)ro   rp   r  waitpidWNOHANGOSErrorr   s    r8   r|  zDevMgr5.cleanupChildren=  s8    		01	JJr2::& 		s   $< 	AAc                 l    | j                          t        j                          | j                          y r.   )r|  r   r<  r  r   s    r8   r   zDevMgr5.quitE  s#      "

r9   c                 6   t        |       }|j                  j                  |       |j                         t        j
                  k(  rR| j                  j                          | j                  +| j                  j                  t        | j                         y y y r.   )r&   	TabWidgetsetCurrentIndexr]   QDialogAcceptedr   r   rV   r  r,  rw   )r4   tab_to_showr  s      r8   r   z#DevMgr5.PreferencesAction_activatedX  ss    T"%%k299;'***##%*))*JDL\L\] + +r9   c                     t        j                  d      rd}nd}t        j                  |       t        j                  |       | j                          | j                          y )Nhp-setupzhp-setup --guizpython ./setup.py --gui)r   r  ro   rp   runr  r  r4   r3   s     r8   r   z#DevMgr5.SetupDeviceAction_activatedi  sF    ;;z""C+C		#		#  "r9   c                    t        j                  d      rd}nd}| j                  |d| j                  z  z  }t        j	                  |       t        j
                  |       | j                          | j                          y )Nr  zhp-setup --gui --removez python ./setup.py --gui --removez --device=%s)r   r  r   ro   rp   r  r  r  r  s     r8   r   z$DevMgr5.RemoveDeviceAction_activatedu  sg    ;;z"+C4C*>D$7$777C		#		#  "r9   c                     t        j                  d      rd}nd}t        j                  |       t	        j
                  |       y )Nzhp-diagnose_queueszhp-diagnose_queues --guiz!python ./diagnose_queues.py --gui)r   r  ro   rp   r   r  r  s     r8   DiagnoseQueueAction_activatedz%DevMgr5.DiagnoseQueueAction_activated  s2    ;;+,+C4C		#r9   c                     t        j                  d      rd}nd}t        j                         }|r|d|z  z   }t        j                  |       y y )Nz	hp-doctorzhp-doctor -i -wzpython ./doctor.py -i -wz '%s')r   r  r  r   r  )r4   r3   r  s      r8   DiagnoseHPLIP_activatedzDevMgr5.DiagnoseHPLIP_activated  sJ    ;;{##C,C))+,CS! r9   c           
      p   t                	 t        |      dk(  r2t        | | j                  d             t        j                  d       n>t        j                  ddd|d| j                  dd       t        j                  |       	 d	j                  |j                  |      D cg c](  }| j                  j                  j                  ||      * c}      }t        j                  |       |j                         d   }|j                         }t        j                  |       t        j                  |       | j                          t        j                   t        j"                  ||       t$        j'                          t)                y c c}w # t        $ r Y w xY w# t)                w xY w)
Nr   zq<p><b>Unable to run command. No command specified.</b><p>Use <pre>Configure...</pre> to specify a command to run.z9No command specified. Use settings to configure commands.zRun: r  r  z (z) rm   )r  r  r  r  ro   r   rp   r   r  r  rV   ru   r   r  r|  r  spawnvpP_NOWAITrb   r  r  )r4   r3   
macro_charr  r   rF  s         r8   r  zDevMgr5.runExternalCommand  sA   	3x1}$tyy  *]   ^  _		UV		&#t?R?RTZ[\		#''IIj)#+ $(??#>#>#B#B1a#H #+ ,C
 		#yy{1~yy{		$		$$$&

2;;d3""$ O%#+%   OsC   B F) F +-FF B+F) F 	F&#F) %F&&F) )F5c                 B    t        j                  | j                         y r.   )r   r  r
  r   s    r8   r   zDevMgr5.helpContents  s    dii r9   c                 t    t        | t        j                  | j                  dz         }|j	                          y )Nz (Qt4))r%   rq   rl   rs   r]   )r4   r  s     r8   r   zDevMgr5.helpAbout  s(    $d.B.BX.MN		r9   c                 0    t         j                  d||      S r_   ra   rd   s      r8   rg   zDevMgr5.__tr  rh   r9   )NNNNr   r.   )r   rI  )NNrm   rm   )r  r  )%)Wr;   r<   r=   r0   r   r   r   r   r   r  r   r4  r5  r:  ra  rb  rq   rv  ry  r  r   r  r  r   r   r   r  r  r  r  rV  r   r  r  r2  r~  r  r  r   r  r  r   r   r   r  r%  r  r  r   r  r  r  r  r   r  r-  r+  r   r  r   r  r  r  ry  rz  r  r  r  r  rt  rv  rx  r  r  r  r|  r   r   r   r   r  r  r  r   r   r  __classcell__)r   s   @r8   r`   r`      s   <@<=00t:5=}@5,`.43Dl#;#( JNBC%"!!
225)X^)B	:CA4	%2	/
P708fA6\  
 b\~6,
a!
%D.U3|6.rtn3(lAV
&fB.
E$.C%-3`	1Fj>>*%2
&^"	##	"&B!
-r9   r`   c                   .    e Zd ZddZd Zd Zd ZddZy)	PasswordDialogNc                    t         j                  | |       || _        t        |       }|j	                  dddd       |j                  d       t        |       | _        |j                  | j                  dddd       t        |       | _	        |j                  | j                  dd       t        |       | _        | j                  j                  t        j                         |j                  | j                  dddd       t        |       | _        |j                  | j                  dd       t        |       | _        | j                  j                  t        j                          |j                  | j                  dddd       t#        |       | _        |j                  | j$                  dd       | j'                          | j)                  t+        dd      j-                  | j/                                      | j$                  j0                  j3                  | j4                         | j                  j6                  j3                  | j4                         y )	Nr  r(  r   r   r   r   i     )r  r0   promptQGridLayoutsetContentsMargins
setSpacingQLabelPromptTextLabel	addWidgetUsernameTextLabel	QLineEditUsernameLineEditsetEchoModeNormalPasswordTextLabelPasswordLineEditPasswordQPushButtonOkPushButtonlanguageChangeresizer   
expandedTominimumSizeHintrs  r   r  returnPressed)r4   r  r5   r   modalr   Layouts          r8   r0   zPasswordDialog.__init__  s   v&D!!!"R2.!%d|--a!A6!'//!4 )$)))*:*:;..q1Q7!'//!4 )$)))*<*<=..q1Q7'-**1Q/E#cN--d.B.B.DEF!!))$++6++33DKK@r9   c                 H    t        | j                  j                               S r.   )r  r  r6   r   s    r8   getUsernamezPasswordDialog.getUsername      $//44677r9   c                 H    t        | j                  j                               S r.   )r  r   r6   r   s    r8   getPasswordzPasswordDialog.getPassword  r  r9   c                    | j                  | j                  d             | j                  j                  | j                  | j                               | j
                  j                  | j                  d             | j                  j                  | j                  d             | j                  j                  | j                  d             y )Nz+HP Device Manager - Enter Username/Passwordz	Username:z	Password:OK)r  _PasswordDialog__trr  r\  r  r  r  r  r   s    r8   r  zPasswordDialog.languageChange  s    DII&STU$$TYYt{{%;<&&tyy'=>&&tyy'=>!!$))D/2r9   c                 0    t         j                  d||      S r_   ra   rd   s      r8   rg   zPasswordDialog.__tr	  rh   r9   )NNr   r   r.   )r;   r<   r=   r0   r  r  r  r  r>   r9   r8   r  r    s    !AH883-r9   r  c                     	 t        | d       }|j                         t        j                  k(  r |j	                         |j                         fS 	 	 y# w xY w)Nr  )r  r]   r  r  r  r  )r  r  s     r8   r   r   	  sV    VT*99;'***OO%s'89 		 + 	 	s   AA Ac                 x    |r2t         j                  |      \  }}|t         j                  k7  rd}d|z  S | }d|z  S )Nzhplipopensource.comz	http://%s)r   get_zc_ip_address
HPMUD_R_OK)r  r  statusips       r8   r  r  	  sK    	//3
X(((&B  r9   )hr  timer  gzipselectstructr   base.sixext.movesr   base.gbaser   r   r   r   r	   r
   r   prntr   base.sixextr   
base.codesui_utilsinstaller.core_installPyQt5.QtCorePyQt5.QtGuiPyQt5.QtWidgetscollectionsabcr  r  
import_extr   r6  dbus.mainloop.glibr   r   ImportErrorro   r   exitwarningssimplefilterDeprecationWarningdevmgr5_baser   
devmgr_extr   faxsetupdialogr   plugindialogr   firmwaredialogr   aligndialogr   printdialogr   makecopiesdialogr   sendfaxdialogr   	fabwindowr   devicesetupdialogr   printtestpagedialogr   
infodialogr   cleandialogr    colorcaldialogr!   linefeedcaldialogr"   pqdiagdialogr#   nodevicesdialogr$   aboutdialogr%   settingsdialogr&   printsettingstoolboxr'   MIN_AUTO_REFRESH_RATEMAX_AUTO_REFRESH_RATEDEF_AUTO_REFRESH_RATEr  	ModelDatarN  r/   r,   r@   QObjectrH   QMainWindowr`   r  r  r   r  r>   r9   r8   <module>rM     s  2   	     *  B B B     $    ! __N 5J'0    h 2 3 ( - * & * $ $ . (   0 4 " $ * 0 & , $ + 6      F	? /_ /-G -L*Xu-#]K u-t?6-W 6-t
OG  ! N!  II\]
		\]CHHQK	s$   )F F FF;GG