summaryrefslogtreecommitdiff
path: root/ui/devmgr4.py
diff options
context:
space:
mode:
Diffstat (limited to 'ui/devmgr4.py')
-rw-r--r--ui/devmgr4.py133
1 files changed, 44 insertions, 89 deletions
diff --git a/ui/devmgr4.py b/ui/devmgr4.py
index f843814a8..a3d66f05e 100644
--- a/ui/devmgr4.py
+++ b/ui/devmgr4.py
@@ -1,7 +1,7 @@
#!/usr/bin/env python
#
-# $Revision: 1.63 $
-# $Date: 2005/03/29 21:06:23 $
+# $Revision: 1.66 $
+# $Date: 2005/04/14 19:36:44 $
# $Author: dwelch $
#
#
@@ -29,7 +29,6 @@ import sys
import socket
import time
import os
-import cStringIO
# Local
from base.g import *
@@ -54,7 +53,6 @@ from colorcalform2 import ColorCalForm2 # Type 2 color cal
# Misc forms
from loadpaperform import LoadPaperForm
-#from advancedinfoform import AdvancedInfoForm
from settingsdialog import SettingsDialog
from nodevicesform import NoDevicesForm
from aboutdlg import AboutDlg
@@ -89,9 +87,7 @@ class DummyDevice:
self.ds = {}
self.mq = {}
self.cups_printers = []
- #self.job_id = 0
self.last_event = None
- #self.last_event_code = 0
self.types_cached = False
@@ -204,11 +200,13 @@ class IconViewItem( QIconViewItem ):
class devmgr4(DevMgr4_base):
- def __init__(self, initial_device_uri=None, parent=None, name=None, fl = 0 ):
+ def __init__(self, cleanup=None, initial_device_uri=None, parent=None, name=None, fl = 0 ):
DevMgr4_base.__init__( self, parent, name, fl )
-
+
+
log.debug( "Initializing toolbox UI" )
-
+ self.cleanup = cleanup
+
# Make some adjustments to the UI
self.StatusHistoryList.setSorting( -1 )
self.AdvInfoList.setSorting( -1 )
@@ -299,7 +297,6 @@ class devmgr4(DevMgr4_base):
self.email_alerts = False
self.email_address = ''
self.smtp_server = ''
- self.popup_alerts = True
self.auto_refresh = True
self.auto_refresh_rate = DEF_AUTO_REFRESH_RATE
@@ -322,7 +319,6 @@ class devmgr4(DevMgr4_base):
self.email_alerts = config.getboolean( "alerts", 'email-alerts' )
self.email_address = config.get( "alerts", 'email-address' )
self.smtp_server = config.get( "alerts", 'smtp-server' )
- self.popup_alerts = config.getboolean( "alerts", 'popup-alerts' )
if config.has_section( "refresh" ):
self.auto_refresh = config.getboolean( "refresh", "enable" )
@@ -354,7 +350,6 @@ class devmgr4(DevMgr4_base):
log.debug( "Email alerts: %s" % self.email_alerts )
log.debug( "Email address: %s" % self.email_address )
log.debug( "SMTP server: %s" % self.smtp_server )
- log.debug( "Popup alerts: %s" % self.popup_alerts )
log.debug( "Auto refresh: %s" % self.auto_refresh )
log.debug( "Auto refresh rate: %s" % self.auto_refresh_rate )
@@ -372,14 +367,8 @@ class devmgr4(DevMgr4_base):
QTimer.singleShot( 0, self.InitialUpdate )
def InitialUpdate( self ):
- #print "initalUpdate()"
self.RescanDevices( True )
- #if self.initial_device_uri is not None:
- # self.ActivateDevice( self.initial_device_uri )
- # self.UpdateStatusTab()
- # self.Tabs.setCurrentPage( 1 )
-
self.refresh_timer = QTimer(self, "RefreshTimer")
self.connect( self.refresh_timer, SIGNAL('timeout()'), self.TimedRefresh )
@@ -389,6 +378,7 @@ class devmgr4(DevMgr4_base):
def TimedRefresh( self ):
if self.auto_refresh and self.cur_device.polling:
log.debug( "Refresh timer..." )
+ self.CleanupChildren()
self.UpdateDevice()
def autoRefresh_toggled(self,a0):
@@ -400,25 +390,28 @@ class devmgr4(DevMgr4_base):
event.accept()
def RescanDevices( self, make_history ):
- #print "RescanDevices()"
- #self.ToggleFunctionButtons( False )
self.deviceRefreshAll.setEnabled( False )
-
self.DeviceListRefresh( make_history )
-
self.deviceRescanAction.setEnabled( True )
self.deviceRefreshAll.setEnabled( True )
- #self.ToggleFunctionButtons( True )
def Cleanup( self ):
- pass
+ self.CleanupChildren()
+ if self.cleanup is not None:
+ self.cleanup()
+ def CleanupChildren( self ):
+ log.debug( "Cleaning up child processes." )
+ try:
+ os.waitpid(-1, os.WNOHANG )
+ except OSError:
+ pass
+
def DeviceList_currentChanged(self,a0):
self.cur_device_uri = self.DeviceList.currentItem().device_uri
self.cur_device = self.devices[ self.cur_device_uri ]
self.UpdateDevice()
- #self.UpdateTabs()
def DeviceList_rightButtonClicked( self, item, pos ):
popup = QPopupMenu( self )
@@ -448,18 +441,13 @@ class devmgr4(DevMgr4_base):
popup.popup( pos )
def UpdateDevice( self, check_state=True ):
- #log.debug( ''.join( [ 'Update device:', '*'*40, self.cur_device_uri, '*'*40 ] ) )
log.debug( utils.bold( "Update: %s %s %s" % ( "*"*20, self.cur_device_uri, "*"*20 ) ) )
- #print "UpdateDevice()"
self.update_called = True
cd = self.cur_device
- #QApplication.setOverrideCursor( QCursor(Qt.WaitCursor) )
self.setCaption( "%s - HP Device Manager" % cd.model_ui )
log.debug( "Device URI=%s" % self.cur_device_uri )
if check_state: # get "live" status of printer
-
- #ds = self.cur_device.ds
try:
# Check device status and create appropriate history
self.cur_device.ds = self.service.queryDevice( self.cur_device_uri,
@@ -471,9 +459,6 @@ class devmgr4(DevMgr4_base):
cd.device_state = self.cur_device.ds.get( 'device-state', DEVICE_STATE_NOT_FOUND )
- #if cd.status_code in ( STATUS_PRINTER_IDLE, ):
- # cd.polling = True
-
if not self.cur_device.types_cached:
try:
self.cur_device.mq = self.service.queryModel( cd.model )
@@ -515,7 +500,6 @@ class devmgr4(DevMgr4_base):
'HOME' : prop.home_dir,
}
- #QApplication.restoreOverrideCursor()
default_pics = { 'deskjet' : 'default_deskjet.png',
'business' : 'default_business_inkjet.png',
@@ -600,7 +584,7 @@ class devmgr4(DevMgr4_base):
def ContinueDeviceListRefresh( self ):
if self.printer_num == self.num_printers:
- self.rescanning = False
+
self.scan_timer.stop()
self.disconnect( self.scan_timer, SIGNAL('timeout()'),
self.ContinueDeviceListRefresh )
@@ -614,9 +598,14 @@ class devmgr4(DevMgr4_base):
self.DeviceList.adjustItems()
self.DeviceList.updateGeometry()
+ self.rescanning = False
+
self.DeviceList.setCurrentItem( self.DeviceList.firstItem() )
- if self.num_printers == 0:
+ if self.num_devices == 1:
+ self.UpdateDevice( False )
+
+ elif self.num_devices == 0:
dlg = NoDevicesForm( self, "", True )
dlg.show()
@@ -689,13 +678,11 @@ class devmgr4(DevMgr4_base):
self.CancelPrintJobButton.setEnabled( num_jobs > 0 )
def PrintJobList_currentChanged( self, item ):
- #print item
pass
def CancelPrintJobButton_clicked(self):
item = self.PrintJobList.currentItem()
if item is not None:
- #print item.job_id, item.printer
self.service.cancelJob( item.job_id, self.cur_device_uri )
def UpdateTabs( self ):
@@ -716,9 +703,7 @@ class devmgr4(DevMgr4_base):
else:
line1 = self.__tr( "Front panel display" )
line2 = self.__tr( "unavailable" )
-
- #print line1, line2
-
+
pm = QPixmap( self.blank_lcd )
p = QPainter()
@@ -763,12 +748,10 @@ class devmgr4(DevMgr4_base):
except Error:
log.error( "History query failed." )
cd.last_event = None
- #cd.job_id = 0
cd.error_state = ERROR_STATE_ERROR
cd.status_code = STATUS_UNKNOWN
else:
cd.last_event = cd.hist[-1]
- #cd.job_id = cd.last_event[9]
cd.status_code = int( cd.last_event[11] )
cd.error_state = STATUS_TO_ERROR_STATE_MAP.get( cd.status_code, ERROR_STATE_CLEAR )
@@ -784,8 +767,6 @@ class devmgr4(DevMgr4_base):
self.UpdateHistory()
last_event = cd.last_event
- #print last_event
-
for x in cd.hist:
job_id = x[9]
code = x[11]
@@ -812,38 +793,23 @@ class devmgr4(DevMgr4_base):
self.StatusText.setText( last_event[12] )
self.StatusText2.setText( last_event[13] )
- #self.StatusCode.setText( str( last_event[11] ) )
-
- #self.StatusDateTime.setText( time.strftime( "%a, %d %b %Y, %H:%M:%S",
- # last_event[:9] ) )
-
- #self.StatusTime.setText( time.strftime( "%H:%M:%S",
- # last_event[:9] ) )
-
- #job_id = cd.job_id
- #self.StatusJobID.setText( str( job_id ) )
-
- #self.CancelJobButton.setEnabled( job_id != 0 )
+ if cd.error_state == ERROR_STATE_CLEAR:
+ self.StatusIcon.clear()
- if 1:
+ elif cd.error_state == ERROR_STATE_OK:
+ self.StatusIcon.setPixmap( QPixmap( os.path.join( prop.image_dir, "ok.png" ) ) )
- if cd.error_state == ERROR_STATE_CLEAR:
- self.StatusIcon.clear()
+ elif cd.error_state == ERROR_STATE_WARNING:
+ self.StatusIcon.setPixmap( QPixmap( os.path.join( prop.image_dir, "warning.png" ) ) )
- elif cd.error_state == ERROR_STATE_OK:
- self.StatusIcon.setPixmap( QPixmap( os.path.join( prop.image_dir, "ok.png" ) ) )
+ elif cd.error_state == ERROR_STATE_LOW_SUPPLIES:
+ self.StatusIcon.setPixmap( QPixmap( os.path.join( prop.image_dir, "warning.png" ) ) )
- elif cd.error_state == ERROR_STATE_WARNING:
- self.StatusIcon.setPixmap( QPixmap( os.path.join( prop.image_dir, "warning.png" ) ) )
+ elif cd.error_state == ERROR_STATE_ERROR:
+ self.StatusIcon.setPixmap( QPixmap( os.path.join( prop.image_dir, "error.png" ) ) )
- elif cd.error_state == ERROR_STATE_LOW_SUPPLIES:
- self.StatusIcon.setPixmap( QPixmap( os.path.join( prop.image_dir, "warning.png" ) ) )
-
- elif cd.error_state == ERROR_STATE_ERROR:
- self.StatusIcon.setPixmap( QPixmap( os.path.join( prop.image_dir, "error.png" ) ) )
-
- elif cd.error_state == ERROR_STATE_BUSY:
- self.StatusIcon.setPixmap( QPixmap( os.path.join( prop.image_dir, "busy.png" ) ) )
+ elif cd.error_state == ERROR_STATE_BUSY:
+ self.StatusIcon.setPixmap( QPixmap( os.path.join( prop.image_dir, "busy.png" ) ) )
def UpdateSuppliesTab( self ):
@@ -901,12 +867,10 @@ class devmgr4(DevMgr4_base):
self.CleanPensButton.setEnabled( self.cur_device.clean_type )
self.AlignPensButton.setEnabled( self.cur_device.align_type )
self.ColorCalibrationButton.setEnabled( self.cur_device.color_cal_type )
- #self.PrintTestPageButton.setEnabled( True )
else:
self.CleanPensButton.setEnabled( False )
self.AlignPensButton.setEnabled( False )
self.ColorCalibrationButton.setEnabled( False )
- #self.PrintTestPageButton.setEnabled( False )
def ToggleInfoButtons( self, toggle ):
if toggle:
@@ -949,21 +913,16 @@ class devmgr4(DevMgr4_base):
log.debug( "Event: code=%d type=%s string=%s timeout=%d id=%d uri=%s" %
( event_code, event_type, error_string_short, retry_timeout, job_id, device_uri ) )
- if event_code == EVENT_UI_SHOW_TOOLBOX:
- #self.rescan( True )
- pass
- elif self.ActivateDevice( device_uri ):
+ if self.ActivateDevice( device_uri ):
self.cur_device.status_code = event_code
self.UpdateDevice( False )
self.Tabs.setCurrentPage( 1 )
-
def settingsConfigure_activated(self, tab_to_show=0 ):
dlg = SettingsDialog( self )
- dlg.PopupCheckBox.setChecked( self.popup_alerts )
dlg.EmailCheckBox.setChecked( self.email_alerts )
dlg.EmailAddress.setText( self.email_address )
dlg.SMTPServer.setText( self.smtp_server )
@@ -987,7 +946,6 @@ class devmgr4(DevMgr4_base):
self.cmd_copy = str( dlg.MakeCopiesCommand.text() )
self.email_alerts = bool( dlg.EmailCheckBox.isChecked() )
- self.popup_alerts = bool( dlg.PopupCheckBox.isChecked() )
self.email_address = str( dlg.EmailAddress.text() )
self.smtp_server = str( dlg.SMTPServer.text() )
@@ -1002,8 +960,7 @@ class devmgr4(DevMgr4_base):
def SetAlerts( self ):
- self.service.setAlerts( self.popup_alerts,
- self.email_alerts,
+ self.service.setAlerts( self.email_alerts,
self.email_address,
self.smtp_server,
)
@@ -1031,7 +988,6 @@ class devmgr4(DevMgr4_base):
config.set( "alerts", 'email-alerts', self.email_alerts )
config.set( "alerts", 'email-address', self.email_address )
config.set( "alerts", 'smtp-server', self.smtp_server )
- config.set( "alerts", 'popup-alerts', self.popup_alerts )
if not config.has_section( 'maint' ):
config.add_section( 'maint' )
@@ -1274,9 +1230,6 @@ class devmgr4(DevMgr4_base):
self.RescanDevices( True )
def DeviceList_clicked(self,a0):
- #if not self.update_called:
- # self.UpdateDevice()
- #self.update_called = False
pass
def OpenEmbeddedBrowserButton_clicked(self):
@@ -1323,9 +1276,11 @@ class devmgr4(DevMgr4_base):
log.debug( path )
log.debug( args )
-
+
+ self.CleanupChildren()
os.spawnvp( os.P_NOWAIT, path, args )
- #self.UpdateFunctionsTab()
+
+
self.ToggleFunctionButtons( True )