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 / scrollfax.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2007-04-29  |  16.9 KB  |  389 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.5)
  3.  
  4. from base.g import *
  5. from base import utils, magic
  6. from prnt import cups
  7. from qt import *
  8. from scrollview import ScrollView, PixmapLabelButton
  9. from allowabletypesdlg import AllowableTypesDlg
  10. import os.path as os
  11. import os
  12.  
  13. try:
  14.     import reportlab
  15. except ImportError:
  16.     coverpages_enabled = False
  17.  
  18. from fax import coverpages
  19. from coverpageform import CoverpageForm
  20. coverpages_enabled = True
  21.  
  22. try:
  23.     from fax import fax
  24.     fax_enabled = True
  25. except ImportError:
  26.     log.error('Fax send disabled - Python 2.3+ required.')
  27.     fax_enabled = False
  28.  
  29. job_types = { }
  30.  
  31. class FileListViewItem(QListViewItem):
  32.     
  33.     def __init__(self, parent, title, mime_type_desc, path, str_pages):
  34.         QListViewItem.__init__(self, parent, title, mime_type_desc, str_pages)
  35.         self.path = path
  36.  
  37.  
  38.  
  39. class PhoneNumValidator(QValidator):
  40.     
  41.     def __init__(self, parent = None, name = None):
  42.         QValidator.__init__(self, parent, name)
  43.  
  44.     
  45.     def validate(self, input, pos):
  46.         input = str(input)
  47.         if not input:
  48.             return (QValidator.Acceptable, pos)
  49.         elif input[pos - 1] not in '0123456789-(+) *#':
  50.             return (QValidator.Invalid, pos)
  51.         elif len(input) > 50:
  52.             return (QValidator.Invalid, pos)
  53.         else:
  54.             return (QValidator.Acceptable, pos)
  55.  
  56.  
  57.  
  58. class ScrollFaxView(ScrollView):
  59.     
  60.     def __init__(self, toolbox_hosted = True, parent = None, form = None, name = None, fl = 0):
  61.         ScrollView.__init__(self, parent, name, fl)
  62.         self.toolbox_hosted = toolbox_hosted
  63.         self.form = form
  64.         self.file_list = []
  65.         self.pages_button_group = 0
  66.         self.waitdlg = None
  67.         self.recipient_list = []
  68.         self.username = prop.username
  69.         self.allowable_mime_types = cups.getAllowableMIMETypes()
  70.         self.allowable_mime_types.append('application/x-python')
  71.         log.debug(self.allowable_mime_types)
  72.         self.db = fax.FaxAddressBook()
  73.         self.last_db_modification = self.db.last_modification_time()
  74.         self.MIME_TYPES_DESC = {
  75.             'application/pdf': (self._ScrollFaxView__tr('PDF Document'), '.pdf'),
  76.             'application/postscript': (self._ScrollFaxView__tr('Postscript Document'), '.ps'),
  77.             'application/vnd.hp-HPGL': (self._ScrollFaxView__tr('HP Graphics Language File'), '.hgl, .hpg, .plt, .prn'),
  78.             'application/x-cshell': (self._ScrollFaxView__tr('C Shell Script'), '.csh, .sh'),
  79.             'application/x-csource': (self._ScrollFaxView__tr('C Source Code'), '.c'),
  80.             'text/cpp': (self._ScrollFaxView__tr('C++ Source Code'), '.cpp, .cxx'),
  81.             'application/x-perl': (self._ScrollFaxView__tr('Perl Script'), '.pl'),
  82.             'application/x-python': (self._ScrollFaxView__tr('Python Program'), '.py'),
  83.             'application/x-shell': (self._ScrollFaxView__tr('Shell Script'), '.sh'),
  84.             'text/plain': (self._ScrollFaxView__tr('Plain Text'), '.txt, .log, etc'),
  85.             'text/html': (self._ScrollFaxView__tr('HTML Dcoument'), '.htm, .html'),
  86.             'image/gif': (self._ScrollFaxView__tr('GIF Image'), '.gif'),
  87.             'image/png': (self._ScrollFaxView__tr('PNG Image'), '.png'),
  88.             'image/jpeg': (self._ScrollFaxView__tr('JPEG Image'), '.jpg, .jpeg'),
  89.             'image/tiff': (self._ScrollFaxView__tr('TIFF Image'), '.tif, .tiff'),
  90.             'image/x-bitmap': (self._ScrollFaxView__tr('Bitmap (BMP) Image'), '.bmp'),
  91.             'image/x-bmp': (self._ScrollFaxView__tr('Bitmap (BMP) Image'), '.bmp'),
  92.             'image/x-photocd': (self._ScrollFaxView__tr('Photo CD Image'), '.pcd'),
  93.             'image/x-portable-anymap': (self._ScrollFaxView__tr('Portable Image (PNM)'), '.pnm'),
  94.             'image/x-portable-bitmap': (self._ScrollFaxView__tr('Portable B&W Image (PBM)'), '.pbm'),
  95.             'image/x-portable-graymap': (self._ScrollFaxView__tr('Portable Grayscale Image (PGM)'), '.pgm'),
  96.             'image/x-portable-pixmap': (self._ScrollFaxView__tr('Portable Color Image (PPM)'), '.ppm'),
  97.             'image/x-sgi-rgb': (self._ScrollFaxView__tr('SGI RGB'), '.rgb'),
  98.             'image/x-xbitmap': (self._ScrollFaxView__tr('X11 Bitmap (XBM)'), '.xbm'),
  99.             'image/x-xpixmap': (self._ScrollFaxView__tr('X11 Pixmap (XPM)'), '.xpm'),
  100.             'image/x-sun-raster': (self._ScrollFaxView__tr('Sun Raster Format'), '.ras') }
  101.  
  102.     
  103.     def fillControls(self):
  104.         ScrollView.fillControls(self)
  105.         if fax_enabled:
  106.             self.addPrinterFaxList(faxes = True, printers = False)
  107.             self.addGroupHeading('files_to_fax', self._ScrollFaxView__tr('File(s) to Fax'))
  108.             self.addFileList()
  109.             if coverpages_enabled:
  110.                 self.addGroupHeading('coverpage', self._ScrollFaxView__tr('Add/Edit Fax Coverpage'))
  111.                 self.addCoverpage()
  112.             
  113.             self.addGroupHeading('recipients', self._ScrollFaxView__tr('Recipient(s)'))
  114.             self.addRecipientList()
  115.             self.addGroupHeading('recipient_add_from_fab', self._ScrollFaxView__tr('Add Recipients from the Fax Address Book'))
  116.             self.addRecipientAddFromFAB()
  117.             self.addGroupHeading('recipient_quick_add', self._ScrollFaxView__tr('Quick Add a Recipient'))
  118.             self.addRecipientQuickAdd()
  119.             self.addGroupHeading('space1', '')
  120.             if self.toolbox_hosted:
  121.                 s = self._ScrollFaxView__tr('<< Functions')
  122.             else:
  123.                 s = self._ScrollFaxView__tr('Close')
  124.             self.faxButton = self.addActionButton('bottom_nav', self._ScrollFaxView__tr('Send Fax Now'), self.faxButton_clicked, s, self.funcButton_clicked)
  125.             self.faxButton.setEnabled(False)
  126.             self.maximizeControl()
  127.         else:
  128.             self.form.FailureUI('<b>Fax is disabled.</b><p>Python version 2.3 or greater required.')
  129.             self.funcButton_clicked()
  130.  
  131.     
  132.     def addFileList(self):
  133.         widget = self.getWidget()
  134.         layout37 = QGridLayout(widget, 1, 1, 5, 10, 'layout37')
  135.         self.addFilePushButton = PixmapLabelButton(widget, 'list-add.png', 'list-add-disabled.png', name = 'addFilePushButton')
  136.         layout37.addWidget(self.addFilePushButton, 2, 0)
  137.         self.showTypesPushButton = PixmapLabelButton(widget, 'mimetypes.png', None, name = 'addFilePushButton')
  138.         layout37.addWidget(self.showTypesPushButton, 2, 3)
  139.         self.removeFilePushButton = PixmapLabelButton(widget, 'list-remove.png', 'list-remove-disabled.png', name = '')
  140.         layout37.addWidget(self.removeFilePushButton, 2, 1)
  141.         self.fileListView = QListView(widget, 'fileListView')
  142.         self.fileListView.addColumn(self._ScrollFaxView__tr('Name'))
  143.         self.fileListView.addColumn(self._ScrollFaxView__tr('Type'))
  144.         self.fileListView.addColumn(self._ScrollFaxView__tr('Path'))
  145.         self.fileListView.setAllColumnsShowFocus(1)
  146.         self.fileListView.setShowSortIndicator(1)
  147.         self.fileListView.setColumnWidth(0, 150)
  148.         self.fileListView.setColumnWidth(1, 75)
  149.         self.fileListView.setColumnWidth(2, 300)
  150.         self.fileListView.setItemMargin(2)
  151.         self.fileListView.setSorting(-1)
  152.         layout37.addMultiCellWidget(self.fileListView, 1, 1, 0, 3)
  153.         spacer26 = QSpacerItem(20, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
  154.         layout37.addItem(spacer26, 2, 2)
  155.         self.addFilePushButton.setText(self._ScrollFaxView__tr('Add File...'))
  156.         self.showTypesPushButton.setText(self._ScrollFaxView__tr('Show Types...'))
  157.         self.removeFilePushButton.setText(self._ScrollFaxView__tr('Remove File'))
  158.         self.removeFilePushButton.setEnabled(False)
  159.         self.connect(self.addFilePushButton, SIGNAL('clicked()'), self.addFile_clicked)
  160.         self.connect(self.removeFilePushButton, SIGNAL('clicked()'), self.removeFile_clicked)
  161.         self.connect(self.showTypesPushButton, SIGNAL('clicked()'), self.showFileTypes_clicked)
  162.         self.connect(self.fileListView, SIGNAL('rightButtonClicked(QListViewItem*,const QPoint&, int)'), self.fileListView_rightButtonClicked)
  163.         self.addWidget(widget, 'file_list', maximize = False)
  164.  
  165.     
  166.     def fileListView_rightButtonClicked(self, item, pos, col):
  167.         popup = QPopupMenu(self)
  168.         popup.insertItem(QIconSet(QPixmap(os.path.join(prop.image_dir, 'list-add.png'))), self._ScrollFaxView__tr('Add File...'), self.addFile_clicked)
  169.         if item is not None:
  170.             popup.insertItem(QIconSet(QPixmap(os.path.join(prop.image_dir, 'list-remove.png'))), self._ScrollFaxView__tr('Remove File'), self.removeFile_clicked)
  171.         
  172.         popup.insertSeparator(-1)
  173.         popup.insertItem(self._ScrollFaxView__tr('Show File Types...'), self.showFileTypes_clicked)
  174.         popup.popup(pos)
  175.  
  176.     
  177.     def addFile(self, path):
  178.         path = os.path.realpath(path)
  179.         if os.path.exists(path):
  180.             mime_type = magic.mime_type(path)
  181.             mime_type_desc = mime_type
  182.             log.debug(mime_type)
  183.             
  184.             try:
  185.                 mime_type_desc = self.MIME_TYPES_DESC[mime_type][0]
  186.             except KeyError:
  187.                 self.form.WarningUI(self._ScrollFaxView__tr('<b>You are trying to add a file that cannot be directly faxed with this utility.</b><p>To print this file, use the print command in the application that created it.'))
  188.  
  189.             log.debug('Adding file %s (%s,%s)' % (path, mime_type, mime_type_desc))
  190.             self.file_list.append((path, mime_type, mime_type_desc))
  191.         else:
  192.             self.form.FailureUI(self._ScrollFaxView__tr("<b>Unable to add file '%s' to file list.</b><p>Check the file name and try again." % path))
  193.         self.UpdateFileList()
  194.  
  195.     
  196.     def UpdateFileList(self):
  197.         self.fileListView.clear()
  198.         temp = self.file_list[:]
  199.         temp.reverse()
  200.         x = True
  201.         for p, t, d in temp:
  202.             i = QListViewItem(self.fileListView, os.path.basename(p), d, p)
  203.             if x:
  204.                 self.fileListView.setSelected(i, True)
  205.                 x = False
  206.                 continue
  207.         
  208.         non_empty_file_list = self.fileListView.childCount() > 0
  209.         self.faxButton.setEnabled(non_empty_file_list)
  210.         self.removeFilePushButton.setEnabled(non_empty_file_list)
  211.  
  212.     
  213.     def addFile_clicked(self):
  214.         workingDirectory = user_cfg.last_used.working_dir
  215.         if not workingDirectory or not os.path.exists(workingDirectory):
  216.             workingDirectory = os.path.expanduser('~')
  217.         
  218.         log.debug('workingDirectory: %s' % workingDirectory)
  219.         dlg = QFileDialog(workingDirectory, QString.null, None, None, True)
  220.         dlg.setCaption('openfile')
  221.         dlg.setMode(QFileDialog.ExistingFile)
  222.         dlg.show()
  223.         if dlg.exec_loop() == QDialog.Accepted:
  224.             results = dlg.selectedFile()
  225.             workingDirectory = str(dlg.dir().absPath())
  226.             log.debug('results: %s' % results)
  227.             log.debug('workingDirectory: %s' % workingDirectory)
  228.             user_cfg.last_used.working_dir = workingDirectory
  229.             if results:
  230.                 self.addFile(str(results))
  231.             
  232.         
  233.  
  234.     
  235.     def removeFile_clicked(self):
  236.         
  237.         try:
  238.             path = self.fileListView.currentItem().text(2)
  239.         except AttributeError:
  240.             return None
  241.  
  242.         temp = self.file_list[:]
  243.         index = 0
  244.         for p, t, d in temp:
  245.             if p == path:
  246.                 del self.file_list[index]
  247.                 break
  248.             
  249.             index += 1
  250.         
  251.         self.UpdateFileList()
  252.  
  253.     
  254.     def showFileTypes_clicked(self):
  255.         x = { }
  256.         for a in self.allowable_mime_types:
  257.             x[a] = self.MIME_TYPES_DESC.get(a, ('Unknown', 'n/a'))
  258.         
  259.         log.debug(x)
  260.         dlg = AllowableTypesDlg(x, self)
  261.         dlg.exec_loop()
  262.  
  263.     
  264.     def addCoverpage(self):
  265.         widget = self.getWidget()
  266.         layout14 = QGridLayout(widget, 1, 1, 5, 10, 'layout14')
  267.         self.editCoverpagePushButton = QPushButton(widget, 'editCoverpagePushButton')
  268.         layout14.addWidget(self.editCoverpagePushButton, 0, 1)
  269.         self.addCoverpagePushButton = PixmapLabelButton(widget, 'list-add.png', 'list-add-disabled.png', name = '')
  270.         layout14.addWidget(self.addCoverpagePushButton, 0, 2)
  271.         spacer12_2 = QSpacerItem(20, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
  272.         layout14.addItem(spacer12_2, 0, 0)
  273.         self.editCoverpagePushButton.setText(self._ScrollFaxView__tr('Edit...'))
  274.         self.editCoverpagePushButton.setEnabled(False)
  275.         self.addCoverpagePushButton.setText(self._ScrollFaxView__tr('Add...'))
  276.         self.addWidget(widget, 'coverpage')
  277.  
  278.     
  279.     def addRecipientList(self):
  280.         widget = self.getWidget()
  281.         layout9 = QGridLayout(widget, 1, 1, 5, 10, 'layout9')
  282.         self.moveDownPushButton = PixmapLabelButton(widget, 'down.png', 'down-disabled.png', name = '')
  283.         layout9.addWidget(self.moveDownPushButton, 1, 2)
  284.         self.recipientListView = QListView(widget, 'recipientListView')
  285.         self.recipientListView.addColumn(self._ScrollFaxView__tr('Name'))
  286.         self.recipientListView.addColumn(self._ScrollFaxView__tr('Fax #'))
  287.         self.recipientListView.addColumn(self._ScrollFaxView__tr('Notes'))
  288.         layout9.addMultiCellWidget(self.recipientListView, 0, 0, 0, 4)
  289.         self.fabPushButton = PixmapLabelButton(widget, 'fab.png', None, name = '')
  290.         layout9.addWidget(self.fabPushButton, 1, 4)
  291.         self.removeRecipientPushButton = PixmapLabelButton(widget, 'list-remove.png', 'list-remove-disabled.png', name = '')
  292.         self.removeRecipientPushButton.setEnabled(1)
  293.         layout9.addWidget(self.removeRecipientPushButton, 1, 0)
  294.         spacer10 = QSpacerItem(20, 20, QSizePolicy.MinimumExpanding, QSizePolicy.Minimum)
  295.         layout9.addItem(spacer10, 1, 3)
  296.         self.moveUpPushButton = PixmapLabelButton(widget, 'up.png', 'up-disabled.png', name = '')
  297.         layout9.addWidget(self.moveUpPushButton, 1, 1)
  298.         self.moveDownPushButton.setEnabled(False)
  299.         self.moveUpPushButton.setEnabled(False)
  300.         self.removeRecipientPushButton.setEnabled(False)
  301.         self.moveDownPushButton.setText(self._ScrollFaxView__tr('Move Down'))
  302.         self.recipientListView.header().setLabel(0, self._ScrollFaxView__tr('Name/Group'))
  303.         self.recipientListView.header().setLabel(1, self._ScrollFaxView__tr('Fax Number'))
  304.         self.recipientListView.header().setLabel(2, self._ScrollFaxView__tr('Notes'))
  305.         self.fabPushButton.setText(self._ScrollFaxView__tr('Fax Address Book...'))
  306.         self.removeRecipientPushButton.setText(self._ScrollFaxView__tr('Remove'))
  307.         self.moveUpPushButton.setText(self._ScrollFaxView__tr('Move Up'))
  308.         self.addWidget(widget, 'recipient_list', maximize = True)
  309.  
  310.     
  311.     def addRecipientAddFromFAB(self):
  312.         widget = self.getWidget()
  313.         layout13 = QGridLayout(widget, 1, 1, 5, 10, 'layout13')
  314.         self.groupComboBox = QComboBox(0, widget, 'groupComboBox')
  315.         self.groupComboBox.setSizePolicy(QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Fixed, 0, 0, self.groupComboBox.sizePolicy().hasHeightForWidth()))
  316.         layout13.addWidget(self.groupComboBox, 1, 2)
  317.         spacer12 = QSpacerItem(20, 20, QSizePolicy.Preferred, QSizePolicy.Minimum)
  318.         layout13.addItem(spacer12, 1, 1)
  319.         self.textLabel1 = QLabel(widget, 'textLabel1')
  320.         self.textLabel1.setSizePolicy(QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred, 0, 0, self.textLabel1.sizePolicy().hasHeightForWidth()))
  321.         layout13.addWidget(self.textLabel1, 0, 0)
  322.         self.individualComboBox = QComboBox(0, widget, 'individualComboBox')
  323.         self.individualComboBox.setSizePolicy(QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Fixed, 0, 0, self.individualComboBox.sizePolicy().hasHeightForWidth()))
  324.         layout13.addWidget(self.individualComboBox, 0, 2)
  325.         self.textLabel2 = QLabel(widget, 'textLabel2')
  326.         self.textLabel2.setSizePolicy(QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Preferred, 0, 0, self.textLabel2.sizePolicy().hasHeightForWidth()))
  327.         layout13.addWidget(self.textLabel2, 1, 0)
  328.         spacer11 = QSpacerItem(30, 20, QSizePolicy.Preferred, QSizePolicy.Minimum)
  329.         layout13.addItem(spacer11, 0, 1)
  330.         self.addGroupPushButton = PixmapLabelButton(widget, 'list-add.png', 'list-add-disabled.png', name = '')
  331.         layout13.addWidget(self.addGroupPushButton, 1, 3)
  332.         self.addIndividualPushButton = PixmapLabelButton(widget, 'list-add.png', 'list-add-disabled.png', name = '')
  333.         layout13.addWidget(self.addIndividualPushButton, 0, 3)
  334.         self.textLabel1.setText(self._ScrollFaxView__tr('Add an <b>individual </b>from fax address book:'))
  335.         self.textLabel2.setText(self._ScrollFaxView__tr('Add a <b>group</b> from fax address book:'))
  336.         self.addGroupPushButton.setText(self._ScrollFaxView__tr('Add'))
  337.         self.addIndividualPushButton.setText(self._ScrollFaxView__tr('Add'))
  338.         self.addWidget(widget, 'recipient_add_from_fab')
  339.  
  340.     
  341.     def addRecipientQuickAdd(self):
  342.         widget = self.getWidget()
  343.         layout12 = QGridLayout(widget, 1, 1, 5, 10, 'layout12')
  344.         self.quickAddFaxLineEdit = QLineEdit(widget, 'quickAddFaxLineEdit')
  345.         self.quickAddFaxLineEdit.setValidator(PhoneNumValidator(self.quickAddFaxLineEdit))
  346.         layout12.addWidget(self.quickAddFaxLineEdit, 0, 3)
  347.         self.quickAddNameLineEdit = QLineEdit(widget, 'quickAddNameLineEdit')
  348.         layout12.addWidget(self.quickAddNameLineEdit, 0, 1)
  349.         self.textLabel4 = QLabel(widget, 'textLabel4')
  350.         layout12.addWidget(self.textLabel4, 0, 0)
  351.         self.quickAddPushButton = PixmapLabelButton(widget, 'list-add.png', 'list-add-disabled.png', name = '')
  352.         layout12.addWidget(self.quickAddPushButton, 0, 4)
  353.         self.checkBox1 = QCheckBox(widget, 'checkBox1')
  354.         layout12.addMultiCellWidget(self.checkBox1, 1, 1, 0, 3)
  355.         self.textLabel5 = QLabel(widget, 'textLabel5')
  356.         layout12.addWidget(self.textLabel5, 0, 2)
  357.         self.textLabel4.setText(self._ScrollFaxView__tr('Name:'))
  358.         self.quickAddPushButton.setText(self._ScrollFaxView__tr('Add'))
  359.         self.checkBox1.setText(self._ScrollFaxView__tr('Save Quick Add recipient in the Fax Address Book'))
  360.         self.textLabel5.setText(self._ScrollFaxView__tr('Fax Number:'))
  361.         self.quickAddPushButton.setEnabled(False)
  362.         self.addWidget(widget, 'recipient_quick_add')
  363.  
  364.     
  365.     def pagesetDefaultPushButton_clicked(self):
  366.         self.pagesetDefaultPushButton.setEnabled(False)
  367.         self.pageSetComboBox.setCurrentItem(0)
  368.  
  369.     
  370.     def pageSetComboBox_activated(self, i):
  371.         self.pagesetDefaultPushButton.setEnabled(i != 0)
  372.  
  373.     
  374.     def faxButton_clicked(self):
  375.         pass
  376.  
  377.     
  378.     def funcButton_clicked(self):
  379.         if self.toolbox_hosted:
  380.             self.form.SwitchFunctionsTab('funcs')
  381.         else:
  382.             self.form.close()
  383.  
  384.     
  385.     def __tr(self, s, c = None):
  386.         return qApp.translate('DevMgr4', s, c)
  387.  
  388.  
  389.