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 / scrollstatus.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2007-04-29  |  7.9 KB  |  203 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 qt import *
  7. from scrollview import ScrollView
  8. import os.path as os
  9. import os
  10. import time
  11.  
  12. try:
  13.     import datetime
  14.     have_datetime = True
  15. except ImportError:
  16.     have_datetime = False
  17.  
  18.  
  19. class ScrollStatusView(ScrollView):
  20.     
  21.     def __init__(self, parent = None, name = None, fl = 0):
  22.         ScrollView.__init__(self, parent, name, fl)
  23.         self.warning_pix = QPixmap(os.path.join(prop.image_dir, 'warning.png'))
  24.         self.error_pix = QPixmap(os.path.join(prop.image_dir, 'error.png'))
  25.         self.ok_pix = QPixmap(os.path.join(prop.image_dir, 'ok.png'))
  26.         self.lowink_pix = QPixmap(os.path.join(prop.image_dir, 'inkdrop.png'))
  27.         self.lowtoner_pix = QPixmap(os.path.join(prop.image_dir, 'toner.png'))
  28.         self.busy_pix = QPixmap(os.path.join(prop.image_dir, 'busy.png'))
  29.         self.lowpaper_pix = QPixmap(os.path.join(prop.image_dir, 'paper.png'))
  30.         self.idle_pix = QPixmap(os.path.join(prop.image_dir, 'idle.png'))
  31.         self.ScanPixmap = QPixmap(os.path.join(prop.image_dir, 'scan_icon.png'))
  32.         self.PrintPixmap = QPixmap(os.path.join(prop.image_dir, 'print_icon.png'))
  33.         self.SendFaxPixmap = QPixmap(os.path.join(prop.image_dir, 'fax_icon.png'))
  34.         self.PhotoCardPixmap = QPixmap(os.path.join(prop.image_dir, 'pcard_icon.png'))
  35.         self.MakeCopiesPixmap = QPixmap(os.path.join(prop.image_dir, 'makecopies_icon.png'))
  36.         self.STATUS_ICONS = {
  37.             ERROR_STATE_CLEAR: (self.idle_pix, self.idle_pix),
  38.             ERROR_STATE_BUSY: (self.busy_pix, self.busy_pix),
  39.             ERROR_STATE_ERROR: (self.error_pix, self.error_pix),
  40.             ERROR_STATE_LOW_SUPPLIES: (self.lowink_pix, self.lowtoner_pix),
  41.             ERROR_STATE_OK: (self.ok_pix, self.ok_pix),
  42.             ERROR_STATE_WARNING: (self.warning_pix, self.warning_pix),
  43.             ERROR_STATE_LOW_PAPER: (self.lowpaper_pix, self.lowpaper_pix),
  44.             ERROR_STATE_PRINTING: (self.PrintPixmap, self.PrintPixmap),
  45.             ERROR_STATE_SCANNING: (self.ScanPixmap, self.ScanPixmap),
  46.             ERROR_STATE_PHOTOCARD: (self.PhotoCardPixmap, self.PrintPixmap),
  47.             ERROR_STATE_FAXING: (self.SendFaxPixmap, self.SendFaxPixmap),
  48.             ERROR_STATE_COPYING: (self.MakeCopiesPixmap, self.MakeCopiesPixmap) }
  49.         self.unit_names = {
  50.             'year': (self._ScrollStatusView__tr('year'), self._ScrollStatusView__tr('years')),
  51.             'month': (self._ScrollStatusView__tr('month'), self._ScrollStatusView__tr('months')),
  52.             'week': (self._ScrollStatusView__tr('week'), self._ScrollStatusView__tr('weeks')),
  53.             'day': (self._ScrollStatusView__tr('day'), self._ScrollStatusView__tr('days')),
  54.             'hour': (self._ScrollStatusView__tr('hour'), self._ScrollStatusView__tr('hours')),
  55.             'minute': (self._ScrollStatusView__tr('minute'), self._ScrollStatusView__tr('minutes')),
  56.             'second': (self._ScrollStatusView__tr('second'), self._ScrollStatusView__tr('seconds')) }
  57.         self.num_repr = {
  58.             1: self._ScrollStatusView__tr('one'),
  59.             2: self._ScrollStatusView__tr('two'),
  60.             3: self._ScrollStatusView__tr('three'),
  61.             4: self._ScrollStatusView__tr('four'),
  62.             5: self._ScrollStatusView__tr('five'),
  63.             6: self._ScrollStatusView__tr('six'),
  64.             7: self._ScrollStatusView__tr('seven'),
  65.             8: self._ScrollStatusView__tr('eight'),
  66.             9: self._ScrollStatusView__tr('nine'),
  67.             10: self._ScrollStatusView__tr('ten'),
  68.             11: self._ScrollStatusView__tr('eleven'),
  69.             12: self._ScrollStatusView__tr('twelve') }
  70.  
  71.     
  72.     def fillControls(self):
  73.         ScrollView.fillControls(self)
  74.         self.row = 0
  75.         for x in self.cur_device.hist:
  76.             self.addItem(x)
  77.         
  78.  
  79.     
  80.     def addItem(self, hist):
  81.         (yr, mt, dy, hr, mi, sec, wd, yd, dst, job_id, user, ec, ess, esl) = hist
  82.         if self.row == 0:
  83.             desc = self._ScrollStatusView__tr('(most recent)')
  84.         elif have_datetime:
  85.             desc = self.getTimeDeltaDesc(hist[:9])
  86.         else:
  87.             desc = ''
  88.         tt = QString('<b>%1 %2</b>').arg(time.strftime('%x %H:%M:%S', hist[:9])).arg(desc).stripWhiteSpace()
  89.         self.addGroupHeading(str(tt), tt)
  90.         widget = self.getWidget()
  91.         layout38 = QGridLayout(widget, 1, 1, 5, 10, 'layout38')
  92.         layout38.setColStretch(0, 1)
  93.         layout38.setColStretch(1, 10)
  94.         layout38.setColStretch(2, 2)
  95.         spacer15 = QSpacerItem(30, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
  96.         layout38.addItem(spacer15, 0, 2)
  97.         icon = QLabel(widget, 'icon')
  98.         icon.setSizePolicy(QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed, 0, 0, icon.sizePolicy().hasHeightForWidth()))
  99.         icon.setMinimumSize(QSize(32, 32))
  100.         icon.setMaximumSize(QSize(32, 32))
  101.         icon.setScaledContents(1)
  102.         layout38.addWidget(icon, 0, 0)
  103.         layout11_2 = QVBoxLayout(None, 0, 6, 'layout11_2')
  104.         essText = QLabel(widget, 'essTextLabel')
  105.         essText.setSizePolicy(QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Preferred, 0, 0, essText.sizePolicy().hasHeightForWidth()))
  106.         essText.setAlignment(QLabel.WordBreak | QLabel.AlignVCenter)
  107.         essText.setFrameShape(self.frame_shape)
  108.         layout11_2.addWidget(essText)
  109.         eslText = QLabel(widget, 'eslTextLabel')
  110.         eslText.setSizePolicy(QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Preferred, 0, 0, eslText.sizePolicy().hasHeightForWidth()))
  111.         eslText.setAlignment(QLabel.WordBreak | QLabel.AlignVCenter)
  112.         eslText.setFrameShape(self.frame_shape)
  113.         layout11_2.addWidget(eslText)
  114.         layout38.addLayout(layout11_2, 0, 1)
  115.         layout12_2 = QGridLayout(None, 1, 1, 5, 10, 'layout12_2')
  116.         userTextLabel = QLabel(widget, 'userLabel')
  117.         layout12_2.addWidget(userTextLabel, 0, 1)
  118.         jobIDTextLabel = QLabel(widget, 'jobLabel')
  119.         layout12_2.addWidget(jobIDTextLabel, 1, 1)
  120.         userText = QLabel(widget, 'user')
  121.         layout12_2.addWidget(userText, 0, 2)
  122.         codeTextLabel = QLabel(widget, 'codeLabel')
  123.         layout12_2.addWidget(codeTextLabel, 2, 1)
  124.         jobIDText = QLabel(widget, 'job')
  125.         layout12_2.addWidget(jobIDText, 1, 2)
  126.         codeText = QLabel(widget, 'code')
  127.         layout12_2.addWidget(codeText, 2, 2)
  128.         line6 = QFrame(self, 'line6')
  129.         line6.setFrameShape(QFrame.VLine)
  130.         layout12_2.addMultiCellWidget(line6, 0, 2, 0, 0)
  131.         layout38.addLayout(layout12_2, 0, 3)
  132.         essText.setText(ess)
  133.         eslText.setText(esl)
  134.         userTextLabel.setText(self._ScrollStatusView__tr('User:'))
  135.         userText.setText(user)
  136.         jobIDTextLabel.setText(self._ScrollStatusView__tr('Job ID:'))
  137.         if job_id <= 0:
  138.             jobIDText.setText(self._ScrollStatusView__tr('n/a'))
  139.         else:
  140.             jobIDText.setText(str(job_id))
  141.         codeTextLabel.setText(self._ScrollStatusView__tr('Code:'))
  142.         codeText.setText(str(ec))
  143.         error_state = STATUS_TO_ERROR_STATE_MAP.get(ec, ERROR_STATE_CLEAR)
  144.         
  145.         try:
  146.             tech_type = self.cur_device.tech_type
  147.         except AttributeError:
  148.             tech_type = TECH_TYPE_NONE
  149.  
  150.         if tech_type in (TECH_TYPE_COLOR_INK, TECH_TYPE_MONO_INK):
  151.             status_pix = self.STATUS_ICONS[error_state][0]
  152.         else:
  153.             status_pix = self.STATUS_ICONS[error_state][1]
  154.         if status_pix is not None:
  155.             icon.setPixmap(status_pix)
  156.         
  157.         self.row += 1
  158.         self.addWidget(widget, str(self.row))
  159.  
  160.     
  161.     def getTimeDeltaDesc(self, past):
  162.         delta = datetime.datetime(*time.localtime()[:7]) - datetime.datetime(*past[:7])
  163.         return self._ScrollStatusView__tr('(about %1 ago)').arg(self.stringify(delta))
  164.  
  165.     
  166.     def seconds_in_units(self, seconds):
  167.         unit_limits = [
  168.             ('year', 31536000),
  169.             ('month', 2592000),
  170.             ('week', 604800),
  171.             ('day', 86400),
  172.             ('hour', 3600),
  173.             ('minute', 60)]
  174.         for unit_name, limit in unit_limits:
  175.             if seconds >= limit:
  176.                 amount = int(round(float(seconds) / limit))
  177.                 return (amount, unit_name)
  178.                 continue
  179.         
  180.         return (seconds, 'second')
  181.  
  182.     
  183.     def stringify(self, td):
  184.         seconds = td.days * 3600 * 24 + td.seconds
  185.         (amount, unit_name) = self.seconds_in_units(seconds)
  186.         
  187.         try:
  188.             i18n_amount = self.num_repr[amount]
  189.         except KeyError:
  190.             i18n_amount = str(amount)
  191.  
  192.         if amount == 1:
  193.             i18n_unit = self.unit_names[unit_name][0]
  194.         else:
  195.             i18n_unit = self.unit_names[unit_name][1]
  196.         return '%s %s' % (i18n_amount, i18n_unit)
  197.  
  198.     
  199.     def __tr(self, s, c = None):
  200.         return qApp.translate('DevMgr4', s, c)
  201.  
  202.  
  203.