home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2007 September / PCWSEP07.iso / Software / Linux / Linux Mint 3.0 Light / LinuxMint-3.0-Light.iso / casper / filesystem.squashfs / usr / lib / hplip / ui / scrollprintcontrol.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2007-04-29  |  9.5 KB  |  265 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.5)
  3.  
  4. from base.g import *
  5. from base import utils
  6. from prnt import cups
  7. from qt import *
  8. from scrollview import ScrollView
  9. import os.path as os
  10. import os
  11. import time
  12.  
  13. class CancelJobPushButton(QPushButton):
  14.     
  15.     def __init__(self, parent, name, job_id):
  16.         QPushButton.__init__(self, parent, name)
  17.         self.job_id = job_id
  18.  
  19.  
  20.  
  21. class ScrollPrintJobView(ScrollView):
  22.     
  23.     def __init__(self, parent = None, name = None, fl = 0):
  24.         ScrollView.__init__(self, parent, name, fl)
  25.         self.JOB_STATES = {
  26.             cups.IPP_JOB_PENDING: self._ScrollPrintJobView__tr('Pending'),
  27.             cups.IPP_JOB_HELD: self._ScrollPrintJobView__tr('On hold'),
  28.             cups.IPP_JOB_PROCESSING: self._ScrollPrintJobView__tr('Printing'),
  29.             cups.IPP_JOB_STOPPED: self._ScrollPrintJobView__tr('Stopped'),
  30.             cups.IPP_JOB_CANCELLED: self._ScrollPrintJobView__tr('Canceled'),
  31.             cups.IPP_JOB_ABORTED: self._ScrollPrintJobView__tr('Aborted'),
  32.             cups.IPP_JOB_COMPLETED: self._ScrollPrintJobView__tr('Completed') }
  33.         self.warning_pix = QPixmap(os.path.join(prop.image_dir, 'warning.png'))
  34.         self.error_pix = QPixmap(os.path.join(prop.image_dir, 'error.png'))
  35.         self.ok_pix = QPixmap(os.path.join(prop.image_dir, 'ok.png'))
  36.         self.busy_pix = QPixmap(os.path.join(prop.image_dir, 'busy.png'))
  37.         self.idle_pix = QPixmap(os.path.join(prop.image_dir, 'idle.png'))
  38.         self.print_pix = QPixmap(os.path.join(prop.image_dir, 'print_icon.png'))
  39.         self.JOB_STATE_ICONS = {
  40.             cups.IPP_JOB_PENDING: self.busy_pix,
  41.             cups.IPP_JOB_HELD: self.busy_pix,
  42.             cups.IPP_JOB_PROCESSING: self.print_pix,
  43.             cups.IPP_JOB_STOPPED: self.warning_pix,
  44.             cups.IPP_JOB_CANCELLED: self.warning_pix,
  45.             cups.IPP_JOB_ABORTED: self.error_pix,
  46.             cups.IPP_JOB_COMPLETED: self.ok_pix }
  47.  
  48.     
  49.     def fillControls(self):
  50.         ScrollView.fillControls(self)
  51.         self.addGroupHeading('print_control', self._ScrollPrintJobView__tr('Print Control'))
  52.         self.addPrintController()
  53.         self.updatePrintController()
  54.         jobs = cups.getJobs()
  55.         num_jobs = 0
  56.         for j in jobs:
  57.             if j.dest == self.cur_printer:
  58.                 num_jobs += 1
  59.                 continue
  60.         
  61.         if num_jobs > 1:
  62.             self.addGroupHeading('job_control', self._ScrollPrintJobView__tr('Job Control'))
  63.             self.addCancelAllJobsController()
  64.         
  65.         if num_jobs:
  66.             if num_jobs == 1:
  67.                 self.addGroupHeading('jobs', self._ScrollPrintJobView__tr('1 Active Print Job'))
  68.             elif num_jobs > 1:
  69.                 self.addGroupHeading('jobs', self._ScrollPrintJobView__tr('%1 Active Print Jobs').arg(num_jobs))
  70.             
  71.             for j in jobs:
  72.                 if j.dest == self.cur_printer:
  73.                     self.addItem(j.dest, j.id, j.state, j.user, j.title)
  74.                     continue
  75.             
  76.         
  77.  
  78.     
  79.     def addPrintController(self):
  80.         widget = self.getWidget()
  81.         layout1 = QGridLayout(widget, 1, 1, 5, 10, 'layout1')
  82.         layout2 = QVBoxLayout(None, 0, 6, 'layout2')
  83.         self.stopstartTextLabel = QLabel(widget, 'stopstartTextLabel')
  84.         layout2.addWidget(self.stopstartTextLabel)
  85.         self.acceptrejectTextLabel = QLabel(widget, 'acceptrejectTextLabel')
  86.         layout2.addWidget(self.acceptrejectTextLabel)
  87.         self.defaultTextLabel = QLabel(widget, 'defaultTextLabel')
  88.         layout2.addWidget(self.defaultTextLabel)
  89.         layout1.addMultiCellLayout(layout2, 2, 3, 0, 0)
  90.         layout3 = QVBoxLayout(None, 0, 6, 'layout3')
  91.         self.stopstartPushButton = QPushButton(widget, 'stopstartPushButton')
  92.         layout3.addWidget(self.stopstartPushButton)
  93.         self.rejectacceptPushButton = QPushButton(widget, 'rejectacceptPushButton')
  94.         layout3.addWidget(self.rejectacceptPushButton)
  95.         self.defaultPushButton = QPushButton(widget, 'defaultPushButton')
  96.         layout3.addWidget(self.defaultPushButton)
  97.         layout1.addMultiCellLayout(layout3, 2, 3, 2, 2)
  98.         spacer1 = QSpacerItem(20, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
  99.         layout1.addItem(spacer1, 3, 1)
  100.         spacer2 = QSpacerItem(20, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
  101.         layout1.addItem(spacer2, 2, 1)
  102.         self.connect(self.stopstartPushButton, SIGNAL('clicked()'), self.stopstartPushButton_clicked)
  103.         self.connect(self.rejectacceptPushButton, SIGNAL('clicked()'), self.rejectacceptPushButton_clicked)
  104.         self.connect(self.defaultPushButton, SIGNAL('clicked()'), self.defaultPushButton_clicked)
  105.         self.addWidget(widget, 'print_control')
  106.  
  107.     
  108.     def updatePrintController(self):
  109.         self.defaultPushButton.setText(self._ScrollPrintJobView__tr('Set as Default'))
  110.         default_printer = cups.getDefaultPrinter()
  111.         if default_printer == self.cur_printer:
  112.             s = self._ScrollPrintJobView__tr('SET AS DEFAULT')
  113.             self.defaultPushButton.setEnabled(False)
  114.         else:
  115.             s = self._ScrollPrintJobView__tr('NOT SET AS DEFAULT')
  116.             self.defaultPushButton.setEnabled(True)
  117.         self.defaultTextLabel.setText(self._ScrollPrintJobView__tr('The printer is currently: %1').arg(s))
  118.         cups_printers = cups.getPrinters()
  119.         for p in cups_printers:
  120.             if p.name == self.cur_printer:
  121.                 self.printer_state = p.state
  122.                 self.printer_accepting = p.accepting
  123.                 break
  124.                 continue
  125.         
  126.         if self.printer_state == cups.IPP_PRINTER_STATE_IDLE:
  127.             s = self._ScrollPrintJobView__tr('IDLE')
  128.             self.stopstartPushButton.setText(self._ScrollPrintJobView__tr('Stop Printer'))
  129.         elif self.printer_state == cups.IPP_PRINTER_STATE_PROCESSING:
  130.             s = self._ScrollPrintJobView__tr('PROCESSING')
  131.             self.stopstartPushButton.setText(self._ScrollPrintJobView__tr('Stop Printer'))
  132.         else:
  133.             s = self._ScrollPrintJobView__tr('STOPPED')
  134.             self.stopstartPushButton.setText(self._ScrollPrintJobView__tr('Start Printer'))
  135.         self.stopstartTextLabel.setText(self._ScrollPrintJobView__tr('The printer is currently: %1').arg(s))
  136.         if self.printer_accepting:
  137.             s = self._ScrollPrintJobView__tr('ACCEPTING JOBS')
  138.             self.rejectacceptPushButton.setText(self._ScrollPrintJobView__tr('Reject Jobs'))
  139.         else:
  140.             s = self._ScrollPrintJobView__tr('REJECTING JOBS')
  141.             self.rejectacceptPushButton.setText(self._ScrollPrintJobView__tr('Accept Jobs'))
  142.         self.acceptrejectTextLabel.setText(self._ScrollPrintJobView__tr('The printer is currently: %1').arg(s))
  143.  
  144.     
  145.     def stopstartPushButton_clicked(self):
  146.         QApplication.setOverrideCursor(QApplication.waitCursor)
  147.         
  148.         try:
  149.             if self.printer_state in (cups.IPP_PRINTER_STATE_IDLE, cups.IPP_PRINTER_STATE_PROCESSING):
  150.                 cups.stop(self.cur_printer)
  151.             else:
  152.                 cups.start(self.cur_printer)
  153.             self.updatePrintController()
  154.         finally:
  155.             QApplication.restoreOverrideCursor()
  156.  
  157.  
  158.     
  159.     def rejectacceptPushButton_clicked(self):
  160.         QApplication.setOverrideCursor(QApplication.waitCursor)
  161.         
  162.         try:
  163.             if self.printer_accepting:
  164.                 cups.reject(self.cur_printer)
  165.             else:
  166.                 cups.accept(self.cur_printer)
  167.             self.updatePrintController()
  168.         finally:
  169.             QApplication.restoreOverrideCursor()
  170.  
  171.  
  172.     
  173.     def defaultPushButton_clicked(self):
  174.         QApplication.setOverrideCursor(QApplication.waitCursor)
  175.         
  176.         try:
  177.             result = cups.setDefaultPrinter(self.cur_printer)
  178.             if not result:
  179.                 log.error('Set default printer failed.')
  180.             else:
  181.                 self.updatePrintController()
  182.         finally:
  183.             QApplication.restoreOverrideCursor()
  184.  
  185.  
  186.     
  187.     def addCancelAllJobsController(self):
  188.         widget = self.getWidget()
  189.         layout1 = QHBoxLayout(widget, 10, 5, 'layout1')
  190.         textLabel1 = QLabel(widget, 'textLabel1')
  191.         layout1.addWidget(textLabel1)
  192.         spacer1 = QSpacerItem(20, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
  193.         layout1.addItem(spacer1)
  194.         cancelPushButton = QPushButton(widget, 'cancelPushButton')
  195.         layout1.addWidget(cancelPushButton)
  196.         self.addWidget(widget, 'job_control')
  197.         textLabel1.setText(self._ScrollPrintJobView__tr('Cancel all active print jobs'))
  198.         cancelPushButton.setText(self._ScrollPrintJobView__tr('Cancel All Jobs'))
  199.         self.connect(cancelPushButton, SIGNAL('clicked()'), self.cancelAllJobs)
  200.  
  201.     
  202.     def cancelAllJobs(self):
  203.         QApplication.setOverrideCursor(QApplication.waitCursor)
  204.         
  205.         try:
  206.             if not cups.purge(self.cur_printer):
  207.                 log.error('Cancel all jobs failed.')
  208.             else:
  209.                 self.fillControls()
  210.         finally:
  211.             QApplication.restoreOverrideCursor()
  212.  
  213.  
  214.     
  215.     def addItem(self, dest, job_id, state, user, title):
  216.         widget = self.getWidget()
  217.         layout1 = QGridLayout(widget, 1, 1, 5, 10, 'layout1')
  218.         cancelPushButton = CancelJobPushButton(widget, 'cancelPushButton', job_id)
  219.         layout1.addWidget(cancelPushButton, 1, 4)
  220.         spacer1 = QSpacerItem(30, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
  221.         layout1.addItem(spacer1, 1, 3)
  222.         icon = QLabel(widget, 'icon')
  223.         icon.setSizePolicy(QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed, 0, 0, icon.sizePolicy().hasHeightForWidth()))
  224.         icon.setMinimumSize(QSize(32, 32))
  225.         icon.setMaximumSize(QSize(32, 32))
  226.         icon.setScaledContents(1)
  227.         layout1.addMultiCellWidget(icon, 1, 2, 1, 1)
  228.         spacer2 = QSpacerItem(20, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
  229.         layout1.addItem(spacer2, 0, 3)
  230.         titleText = QLabel(widget, 'titleText')
  231.         titleText.setSizePolicy(QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred, 0, 0, titleText.sizePolicy().hasHeightForWidth()))
  232.         layout1.addMultiCellWidget(titleText, 0, 0, 1, 2)
  233.         stateText = QLabel(widget, 'stateText')
  234.         stateText.setSizePolicy(QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred, 0, 0, stateText.sizePolicy().hasHeightForWidth()))
  235.         layout1.addWidget(stateText, 1, 2)
  236.         jobIDText = QLabel(widget, 'jobIDText')
  237.         layout1.addWidget(jobIDText, 0, 4)
  238.         titleText.setText(self._ScrollPrintJobView__tr('<b>%1</b>').arg(title))
  239.         stateText.setText(self.JOB_STATES[state])
  240.         jobIDText.setText(self._ScrollPrintJobView__tr('Job ID: %1').arg(job_id))
  241.         cancelPushButton.setText(self._ScrollPrintJobView__tr('Cancel Job'))
  242.         icon.setPixmap(self.JOB_STATE_ICONS[state])
  243.         self.connect(cancelPushButton, SIGNAL('clicked()'), self.cancelJob)
  244.         self.addWidget(widget, dest + str(job_id))
  245.  
  246.     
  247.     def cancelJob(self):
  248.         sender = self.sender()
  249.         job_id = sender.job_id
  250.         QApplication.setOverrideCursor(QApplication.waitCursor)
  251.         
  252.         try:
  253.             self.cur_device.cancelJob(job_id)
  254.             time.sleep(1)
  255.         finally:
  256.             QApplication.restoreOverrideCursor()
  257.  
  258.         self.fillControls()
  259.  
  260.     
  261.     def __tr(self, s, c = None):
  262.         return qApp.translate('DevMgr4', s, c)
  263.  
  264.  
  265.