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.py < prev    next >
Encoding:
Python Source  |  2007-04-04  |  27.3 KB  |  702 lines

  1. # -*- coding: utf-8 -*-
  2. #
  3. # (c) Copyright 2001-2007 Hewlett-Packard Development Company, L.P.
  4. #
  5. # This program is free software; you can redistribute it and/or modify
  6. # it under the terms of the GNU General Public License as published by
  7. # the Free Software Foundation; either version 2 of the License, or
  8. # (at your option) any later version.
  9. #
  10. # This program is distributed in the hope that it will be useful,
  11. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. # GNU General Public License for more details.
  14. #
  15. # You should have received a copy of the GNU General Public License
  16. # along with this program; if not, write to the Free Software
  17. # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  18. #
  19. # Author: Don Welch
  20. #
  21.  
  22. # Local
  23. from base.g import *
  24. from base import utils, magic
  25. from prnt import cups
  26.  
  27. # Qt
  28. from qt import *
  29. from scrollview import ScrollView, PixmapLabelButton
  30. from allowabletypesdlg import AllowableTypesDlg
  31.  
  32. # Std Lib
  33. import os.path, os
  34.  
  35. try:
  36.     import reportlab
  37. except ImportError:
  38.     coverpages_enabled = False
  39. else:
  40.     from fax import coverpages
  41.     from coverpageform import CoverpageForm
  42.     coverpages_enabled = True
  43.     
  44. try:
  45.     from fax import fax
  46.     fax_enabled = True
  47. except ImportError:
  48.     # This can fail on Python < 2.3 due to the datetime module
  49.     log.error("Fax send disabled - Python 2.3+ required.")
  50.     #sys.exit(1)
  51.     fax_enabled = False
  52.     
  53.  
  54. # Used to store MIME types for files
  55. # added directly in interface.
  56. job_types = {} # { job_id : "mime_type", ...}
  57.  
  58. class FileListViewItem(QListViewItem):
  59.     def __init__(self, parent, title, mime_type_desc, path, str_pages):
  60.         QListViewItem.__init__(self, parent, title, mime_type_desc, str_pages)
  61.         self.path = path
  62.  
  63.  
  64. ##class RangeValidator(QValidator):
  65. ##    def __init__(self, parent=None, name=None):
  66. ##        QValidator.__init__(self, parent, name)
  67. ##
  68. ##    def validate(self, input, pos):
  69. ##        for x in str(input)[pos-1:]:
  70. ##            if x not in '0123456789,- ':
  71. ##                return QValidator.Invalid, pos
  72. ##
  73. ##        return QValidator.Acceptable, pos
  74.  
  75. class PhoneNumValidator(QValidator):
  76.     def __init__(self, parent=None, name=None):
  77.         QValidator.__init__(self, parent, name)
  78.  
  79.     def validate(self, input, pos):
  80.         input = str(input)
  81.         if not input:
  82.             return QValidator.Acceptable, pos
  83.         elif input[pos-1] not in '0123456789-(+) *#':
  84.             return QValidator.Invalid, pos
  85.         elif len(input) > 50:
  86.             return QValidator.Invalid, pos
  87.         else:
  88.             return QValidator.Acceptable, pos
  89.  
  90.  
  91. class ScrollFaxView(ScrollView):
  92.     def __init__(self, toolbox_hosted=True, parent = None, form=None, name = None,fl = 0):
  93.         ScrollView.__init__(self,parent,name,fl)
  94.         
  95.         self.toolbox_hosted = toolbox_hosted
  96.         self.form = form
  97.         self.file_list = []
  98.         self.pages_button_group = 0
  99.         
  100.         self.waitdlg = None
  101.         self.recipient_list = []
  102.         self.username = prop.username
  103.         
  104.         self.allowable_mime_types = cups.getAllowableMIMETypes()
  105.         self.allowable_mime_types.append("application/x-python")
  106.  
  107.         log.debug(self.allowable_mime_types)
  108.         
  109.         self.db =  fax.FaxAddressBook() # kirbybase instance
  110.         self.last_db_modification = self.db.last_modification_time()
  111.         
  112.         self.MIME_TYPES_DESC = \
  113.         {
  114.             "application/pdf" : (self.__tr("PDF Document"), '.pdf'),
  115.             "application/postscript" : (self.__tr("Postscript Document"), '.ps'),
  116.             "application/vnd.hp-HPGL" : (self.__tr("HP Graphics Language File"), '.hgl, .hpg, .plt, .prn'),
  117.             "application/x-cshell" : (self.__tr("C Shell Script"), '.csh, .sh'),
  118.             "application/x-csource" : (self.__tr("C Source Code"), '.c'),
  119.             "text/cpp": (self.__tr("C++ Source Code"), '.cpp, .cxx'),
  120.             "application/x-perl" : (self.__tr("Perl Script"), '.pl'),
  121.             "application/x-python" : (self.__tr("Python Program"), '.py'),
  122.             "application/x-shell" : (self.__tr("Shell Script"), '.sh'),
  123.             "text/plain" : (self.__tr("Plain Text"), '.txt, .log, etc'),
  124.             "text/html" : (self.__tr("HTML Dcoument"), '.htm, .html'),
  125.             "image/gif" : (self.__tr("GIF Image"), '.gif'),
  126.             "image/png" : (self.__tr("PNG Image"), '.png'),
  127.             "image/jpeg" : (self.__tr("JPEG Image"), '.jpg, .jpeg'),
  128.             "image/tiff" : (self.__tr("TIFF Image"), '.tif, .tiff'),
  129.             "image/x-bitmap" : (self.__tr("Bitmap (BMP) Image"), '.bmp'),
  130.             "image/x-bmp" : (self.__tr("Bitmap (BMP) Image"), '.bmp'),
  131.             "image/x-photocd" : (self.__tr("Photo CD Image"), '.pcd'),
  132.             "image/x-portable-anymap" : (self.__tr("Portable Image (PNM)"), '.pnm'),
  133.             "image/x-portable-bitmap" : (self.__tr("Portable B&W Image (PBM)"), '.pbm'),
  134.             "image/x-portable-graymap" : (self.__tr("Portable Grayscale Image (PGM)"), '.pgm'),
  135.             "image/x-portable-pixmap" : (self.__tr("Portable Color Image (PPM)"), '.ppm'),
  136.             "image/x-sgi-rgb" : (self.__tr("SGI RGB"), '.rgb'),
  137.             "image/x-xbitmap" : (self.__tr("X11 Bitmap (XBM)"), '.xbm'),
  138.             "image/x-xpixmap" : (self.__tr("X11 Pixmap (XPM)"), '.xpm'),
  139.             "image/x-sun-raster" : (self.__tr("Sun Raster Format"), '.ras'),
  140.         }
  141.         
  142.  
  143.     def fillControls(self):
  144.         ScrollView.fillControls(self)
  145.         
  146.         if fax_enabled:
  147.             self.addPrinterFaxList(faxes=True, printers=False)
  148.             
  149.             self.addGroupHeading("files_to_fax", self.__tr("File(s) to Fax"))
  150.             self.addFileList()
  151.             
  152.             if coverpages_enabled:
  153.                 self.addGroupHeading("coverpage", self.__tr("Add/Edit Fax Coverpage"))
  154.                 self.addCoverpage()
  155.             
  156.             self.addGroupHeading("recipients", self.__tr("Recipient(s)"))
  157.             
  158.             self.addRecipientList()
  159.             
  160.             self.addGroupHeading("recipient_add_from_fab", self.__tr("Add Recipients from the Fax Address Book"))
  161.             
  162.             self.addRecipientAddFromFAB()
  163.             
  164.             self.addGroupHeading("recipient_quick_add", self.__tr("Quick Add a Recipient"))
  165.             
  166.             self.addRecipientQuickAdd()
  167.             
  168.             #self.addGroupHeading("options", "Fax Options")
  169.             #self.addCopies()
  170.             #self.addPageRange()
  171.             #self.addPageSet()
  172.             
  173.             self.addGroupHeading("space1", "")
  174.             
  175.             if self.toolbox_hosted:
  176.                 s = self.__tr("<< Functions")
  177.             else:
  178.                 s = self.__tr("Close")
  179.                 
  180.             self.faxButton = self.addActionButton("bottom_nav", self.__tr("Send Fax Now"), 
  181.                                     self.faxButton_clicked, s, self.funcButton_clicked)
  182.                                     
  183.             self.faxButton.setEnabled(False)
  184.             
  185.             self.maximizeControl()
  186.         
  187.         else:
  188.             self.form.FailureUI("<b>Fax is disabled.</b><p>Python version 2.3 or greater required.")
  189.             self.funcButton_clicked()
  190.             
  191.         
  192.     def addFileList(self):
  193.         widget = self.getWidget()
  194.         
  195.         layout37 = QGridLayout(widget,1,1,5,10,"layout37")
  196.         
  197.         self.addFilePushButton = PixmapLabelButton(widget, "list-add.png", 
  198.             "list-add-disabled.png", name='addFilePushButton')
  199.             
  200.         layout37.addWidget(self.addFilePushButton,2,0)
  201.         
  202.         self.showTypesPushButton = PixmapLabelButton(widget, "mimetypes.png", 
  203.             None, name='addFilePushButton')
  204.         
  205.         #self.showTypesPushButton = QPushButton(widget,"showTypesPushButton")
  206.         
  207.         layout37.addWidget(self.showTypesPushButton,2,3)
  208.         
  209.         self.removeFilePushButton = PixmapLabelButton(widget, 
  210.             "list-remove.png", "list-remove-disabled.png", name='')
  211.         
  212.         layout37.addWidget(self.removeFilePushButton,2,1)
  213.         
  214.         self.fileListView = QListView(widget,"fileListView")
  215.         self.fileListView.addColumn(self.__tr("Name"))
  216.         self.fileListView.addColumn(self.__tr("Type"))
  217.         self.fileListView.addColumn(self.__tr("Path"))
  218.         self.fileListView.setAllColumnsShowFocus(1)
  219.         self.fileListView.setShowSortIndicator(1)
  220.         self.fileListView.setColumnWidth(0, 150)
  221.         self.fileListView.setColumnWidth(1, 75)
  222.         self.fileListView.setColumnWidth(2, 300)
  223.         self.fileListView.setItemMargin(2)
  224.         self.fileListView.setSorting(-1)
  225.         
  226.         layout37.addMultiCellWidget(self.fileListView,1,1,0,3)
  227.         
  228.         spacer26 = QSpacerItem(20,20,QSizePolicy.Expanding,QSizePolicy.Minimum)
  229.         layout37.addItem(spacer26,2,2)
  230.         
  231.         self.addFilePushButton.setText(self.__tr("Add File..."))
  232.         self.showTypesPushButton.setText(self.__tr("Show Types..."))
  233.         self.removeFilePushButton.setText(self.__tr("Remove File"))
  234.         
  235.         self.removeFilePushButton.setEnabled(False)
  236.         
  237.         self.connect(self.addFilePushButton, SIGNAL("clicked()"), self.addFile_clicked)
  238.         self.connect(self.removeFilePushButton, SIGNAL("clicked()"), self.removeFile_clicked)
  239.         self.connect(self.showTypesPushButton, SIGNAL("clicked()"), self.showFileTypes_clicked)
  240.         self.connect(self.fileListView,SIGNAL("rightButtonClicked(QListViewItem*,const QPoint&, int)"),self.fileListView_rightButtonClicked)
  241.  
  242.         self.addWidget(widget, "file_list", maximize=False)
  243.  
  244.         
  245.     def fileListView_rightButtonClicked(self, item, pos, col):
  246.         popup = QPopupMenu(self)
  247.         
  248.         popup.insertItem(QIconSet(QPixmap(os.path.join(prop.image_dir, 'list-add.png'))),
  249.             self.__tr("Add File..."), self.addFile_clicked)
  250.     
  251.         if item is not None:
  252.             popup.insertItem(QIconSet(QPixmap(os.path.join(prop.image_dir,
  253.                 'list-remove.png'))), self.__tr("Remove File"), self.removeFile_clicked)
  254.             
  255.         popup.insertSeparator(-1)
  256.         popup.insertItem(self.__tr("Show File Types..."), self.showFileTypes_clicked)
  257.         popup.popup(pos)
  258.         
  259.         
  260.     def addFile(self, path):
  261.         path = os.path.realpath(path)
  262.         if os.path.exists(path):
  263.             mime_type = magic.mime_type(path)
  264.             mime_type_desc = mime_type
  265.             log.debug(mime_type)
  266.             
  267.             try:
  268.                 mime_type_desc = self.MIME_TYPES_DESC[mime_type][0]
  269.             except KeyError:
  270.                 self.form.WarningUI(self.__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."))
  271.             else:
  272.                 log.debug("Adding file %s (%s,%s)" % (path, mime_type, mime_type_desc))
  273.                 self.file_list.append((path, mime_type, mime_type_desc))
  274.         else:
  275.             self.form.FailureUI(self.__tr("<b>Unable to add file '%s' to file list.</b><p>Check the file name and try again." % path))
  276.  
  277.         self.UpdateFileList()
  278.         
  279.     def UpdateFileList(self):
  280.         self.fileListView.clear()
  281.         temp = self.file_list[:]
  282.         temp.reverse()
  283.         x = True
  284.  
  285.         for p, t, d in temp:
  286.             i = QListViewItem(self.fileListView, os.path.basename(p), d, p)
  287.             if x:
  288.                 self.fileListView.setSelected(i, True)
  289.                 x = False
  290.  
  291.         non_empty_file_list = self.fileListView.childCount() > 0
  292.         self.faxButton.setEnabled(non_empty_file_list)
  293.         self.removeFilePushButton.setEnabled(non_empty_file_list)
  294.         
  295.         
  296.     
  297.     def addFile_clicked(self):
  298.         workingDirectory = user_cfg.last_used.working_dir
  299.        
  300.         if not workingDirectory or not os.path.exists(workingDirectory):
  301.             workingDirectory = os.path.expanduser("~")
  302.  
  303.         log.debug("workingDirectory: %s" % workingDirectory)
  304.  
  305.         dlg = QFileDialog(workingDirectory, QString.null, None, None, True)
  306.  
  307.         dlg.setCaption("openfile")
  308.         dlg.setMode(QFileDialog.ExistingFile)
  309.         dlg.show()
  310.  
  311.         if dlg.exec_loop() == QDialog.Accepted:
  312.                 results = dlg.selectedFile()
  313.                 workingDirectory = str(dlg.dir().absPath())
  314.                 log.debug("results: %s" % results)
  315.                 log.debug("workingDirectory: %s" % workingDirectory)
  316.                 
  317.                 user_cfg.last_used.working_dir = workingDirectory
  318.  
  319.                 if results:
  320.                     self.addFile(str(results))
  321.                     
  322.         
  323.     def removeFile_clicked(self):
  324.         try:
  325.             path = self.fileListView.currentItem().text(2)
  326.         except AttributeError:
  327.             return
  328.         else:
  329.             temp = self.file_list[:]
  330.             index = 0
  331.             for p, t, d in temp:
  332.                 if p == path:
  333.                     del self.file_list[index]
  334.                     break
  335.                 index += 1
  336.  
  337.             self.UpdateFileList()
  338.             
  339.     def showFileTypes_clicked(self):
  340.         x = {}
  341.         for a in self.allowable_mime_types:
  342.             x[a] = self.MIME_TYPES_DESC.get(a, ('Unknown', 'n/a'))
  343.  
  344.         log.debug(x)
  345.         dlg = AllowableTypesDlg(x, self)
  346.         dlg.exec_loop()
  347.         
  348.     def addCoverpage(self):
  349.         widget = self.getWidget()
  350.         
  351.         layout14 = QGridLayout(widget,1,1,5,10,"layout14")
  352.  
  353.         self.editCoverpagePushButton = QPushButton(widget,"editCoverpagePushButton")
  354.  
  355.         layout14.addWidget(self.editCoverpagePushButton,0,1)
  356.  
  357.         #self.addCoverpagePushButton = QPushButton(widget,"addCoverpagePushButton")
  358.         self.addCoverpagePushButton = PixmapLabelButton(widget, 
  359.             "list-add.png", "list-add-disabled.png", name='')
  360.         
  361.         layout14.addWidget(self.addCoverpagePushButton,0,2)
  362.         spacer12_2 = QSpacerItem(20,20,QSizePolicy.Expanding,QSizePolicy.Minimum)
  363.         layout14.addItem(spacer12_2,0,0)
  364.         
  365.         self.editCoverpagePushButton.setText(self.__tr("Edit..."))
  366.         self.editCoverpagePushButton.setEnabled(False)
  367.         
  368.         self.addCoverpagePushButton.setText(self.__tr("Add..."))
  369.         
  370.         self.addWidget(widget, "coverpage")
  371.         
  372.     def addRecipientList(self):
  373.         widget = self.getWidget()
  374.         
  375.         layout9 = QGridLayout(widget,1,1,5,10,"layout9")
  376.  
  377.         self.moveDownPushButton = PixmapLabelButton(widget, 
  378.             "down.png", "down-disabled.png", name='')
  379.             
  380.         layout9.addWidget(self.moveDownPushButton,1,2)
  381.  
  382.         self.recipientListView = QListView(widget,"recipientListView")
  383.         self.recipientListView.addColumn(self.__tr("Name"))
  384.         self.recipientListView.addColumn(self.__tr("Fax #"))
  385.         self.recipientListView.addColumn(self.__tr("Notes"))
  386.  
  387.         layout9.addMultiCellWidget(self.recipientListView,0,0,0,4)
  388.  
  389.         self.fabPushButton = PixmapLabelButton(widget, 
  390.                     "fab.png", None, name='')        
  391.  
  392.         layout9.addWidget(self.fabPushButton,1,4)
  393.  
  394.         self.removeRecipientPushButton = PixmapLabelButton(widget, 
  395.             "list-remove.png", "list-remove-disabled.png", name='')
  396.         
  397.         self.removeRecipientPushButton.setEnabled(1)
  398.  
  399.         layout9.addWidget(self.removeRecipientPushButton,1,0)
  400.         spacer10 = QSpacerItem(20,20,QSizePolicy.MinimumExpanding,QSizePolicy.Minimum)
  401.         layout9.addItem(spacer10,1,3)
  402.  
  403.         self.moveUpPushButton = PixmapLabelButton(widget, 
  404.             "up.png", "up-disabled.png", name='')
  405.  
  406.         layout9.addWidget(self.moveUpPushButton,1,1)
  407.         
  408.         self.moveDownPushButton.setEnabled(False)
  409.         self.moveUpPushButton.setEnabled(False)
  410.         self.removeRecipientPushButton.setEnabled(False)
  411.         
  412.         self.moveDownPushButton.setText(self.__tr("Move Down"))
  413.         self.recipientListView.header().setLabel(0,self.__tr("Name/Group"))
  414.         self.recipientListView.header().setLabel(1,self.__tr("Fax Number"))
  415.         self.recipientListView.header().setLabel(2,self.__tr("Notes"))
  416.         self.fabPushButton.setText(self.__tr("Fax Address Book..."))
  417.         self.removeRecipientPushButton.setText(self.__tr("Remove"))
  418.         self.moveUpPushButton.setText(self.__tr("Move Up"))
  419.         
  420.         self.addWidget(widget, "recipient_list", maximize=True)
  421.         
  422.         
  423.         
  424.     def addRecipientAddFromFAB(self):
  425.         widget = self.getWidget()
  426.         
  427.         layout13 = QGridLayout(widget,1,1,5,10,"layout13")
  428.  
  429.         self.groupComboBox = QComboBox(0,widget,"groupComboBox")
  430.         self.groupComboBox.setSizePolicy(QSizePolicy(QSizePolicy.MinimumExpanding,QSizePolicy.Fixed,0,0,self.groupComboBox.sizePolicy().hasHeightForWidth()))
  431.  
  432.         layout13.addWidget(self.groupComboBox,1,2)
  433.         spacer12 = QSpacerItem(20,20,QSizePolicy.Preferred,QSizePolicy.Minimum)
  434.         layout13.addItem(spacer12,1,1)
  435.  
  436.         self.textLabel1 = QLabel(widget,"textLabel1")
  437.         self.textLabel1.setSizePolicy(QSizePolicy(QSizePolicy.Expanding,QSizePolicy.Preferred,0,0,self.textLabel1.sizePolicy().hasHeightForWidth()))
  438.  
  439.         layout13.addWidget(self.textLabel1,0,0)
  440.  
  441.         self.individualComboBox = QComboBox(0,widget,"individualComboBox")
  442.         self.individualComboBox.setSizePolicy(QSizePolicy(QSizePolicy.MinimumExpanding,QSizePolicy.Fixed,0,0,self.individualComboBox.sizePolicy().hasHeightForWidth()))
  443.  
  444.         layout13.addWidget(self.individualComboBox,0,2)
  445.  
  446.         self.textLabel2 = QLabel(widget,"textLabel2")
  447.         self.textLabel2.setSizePolicy(QSizePolicy(QSizePolicy.MinimumExpanding,QSizePolicy.Preferred,0,0,self.textLabel2.sizePolicy().hasHeightForWidth()))
  448.  
  449.         layout13.addWidget(self.textLabel2,1,0)
  450.         spacer11 = QSpacerItem(30,20,QSizePolicy.Preferred,QSizePolicy.Minimum)
  451.         layout13.addItem(spacer11,0,1)
  452.  
  453.         self.addGroupPushButton = PixmapLabelButton(widget, 
  454.                     "list-add.png", "list-add-disabled.png", name='')        
  455.  
  456.         layout13.addWidget(self.addGroupPushButton,1,3)
  457.  
  458.         self.addIndividualPushButton = PixmapLabelButton(widget, 
  459.                     "list-add.png", "list-add-disabled.png", name='')        
  460.         
  461.  
  462.         layout13.addWidget(self.addIndividualPushButton,0,3)
  463.         
  464.         self.textLabel1.setText(self.__tr("Add an <b>individual </b>from fax address book:"))
  465.         self.textLabel2.setText(self.__tr("Add a <b>group</b> from fax address book:"))
  466.         self.addGroupPushButton.setText(self.__tr("Add"))
  467.         self.addIndividualPushButton.setText(self.__tr("Add"))
  468.         
  469.         self.addWidget(widget, "recipient_add_from_fab")
  470.         
  471.         
  472.     def addRecipientQuickAdd(self):
  473.         widget = self.getWidget()
  474.         
  475.         layout12 = QGridLayout(widget,1,1,5,10,"layout12")
  476.  
  477.         self.quickAddFaxLineEdit = QLineEdit(widget,"quickAddFaxLineEdit")
  478.         
  479.         self.quickAddFaxLineEdit.setValidator(PhoneNumValidator(self.quickAddFaxLineEdit))
  480.  
  481.         layout12.addWidget(self.quickAddFaxLineEdit,0,3)
  482.  
  483.         self.quickAddNameLineEdit = QLineEdit(widget,"quickAddNameLineEdit")
  484.  
  485.         layout12.addWidget(self.quickAddNameLineEdit,0,1)
  486.  
  487.         self.textLabel4 = QLabel(widget,"textLabel4")
  488.  
  489.         layout12.addWidget(self.textLabel4,0,0)
  490.  
  491.         #self.quickAddPushButton = QPushButton(widget,"quickAddPushButton")
  492.         self.quickAddPushButton = PixmapLabelButton(widget, 
  493.                     "list-add.png", "list-add-disabled.png", name='')        
  494.         
  495.  
  496.         layout12.addWidget(self.quickAddPushButton,0,4)
  497.  
  498.         self.checkBox1 = QCheckBox(widget,"checkBox1")
  499.  
  500.         layout12.addMultiCellWidget(self.checkBox1,1,1,0,3)
  501.  
  502.         self.textLabel5 = QLabel(widget,"textLabel5")
  503.  
  504.         layout12.addWidget(self.textLabel5,0,2)
  505.         
  506.         self.textLabel4.setText(self.__tr("Name:"))
  507.         self.quickAddPushButton.setText(self.__tr("Add"))
  508.         self.checkBox1.setText(self.__tr("Save Quick Add recipient in the Fax Address Book"))
  509.         self.textLabel5.setText(self.__tr("Fax Number:"))
  510.         
  511.         self.quickAddPushButton.setEnabled(False)
  512.         
  513.         self.addWidget(widget, "recipient_quick_add")
  514.     
  515.         
  516.         
  517.         
  518.         
  519.         
  520.         
  521.         
  522.         
  523.         
  524. ##    def addCopies(self):
  525. ##        widget = self.getWidget()
  526. ##        
  527. ##        layout12 = QHBoxLayout(widget,5,10,"layout12")
  528. ##
  529. ##        self.textLabel5 = QLabel(widget,"textLabel5")
  530. ##        layout12.addWidget(self.textLabel5)
  531. ##        spacer20 = QSpacerItem(20,20,QSizePolicy.Expanding,QSizePolicy.Minimum)
  532. ##        layout12.addItem(spacer20)
  533. ##
  534. ##        self.copiesSpinBox = QSpinBox(widget,"copiesSpinBox")
  535. ##        layout12.addWidget(self.copiesSpinBox)
  536. ##
  537. ##        self.copiesDefaultPushButton = QPushButton(widget,"copiesDefaultPushButton")
  538. ##        layout12.addWidget(self.copiesDefaultPushButton)
  539. ##
  540. ##        self.textLabel5.setText(self.__tr("Number of copies:"))
  541. ##        self.copiesDefaultPushButton.setText(self.__tr("Default"))
  542. ##        
  543. ##        self.copiesSpinBox.setMaxValue(99)
  544. ##        self.copiesSpinBox.setMinValue(1)
  545. ##        self.copiesSpinBox.setValue(1)
  546. ##        
  547. ##        self.copiesDefaultPushButton.setEnabled(False)
  548. ##        
  549. ##        self.connect(self.copiesDefaultPushButton, SIGNAL("clicked()"), self.copiesDefaultPushButton_clicked)
  550. ##        self.connect(self.copiesSpinBox, SIGNAL("valueChanged(int)"), self.copiesSpinBox_valueChanged)
  551. ##        
  552. ##        self.addWidget(widget, "copies")
  553. ##        
  554. ##    def copiesDefaultPushButton_clicked(self):
  555. ##        self.copiesSpinBox.setValue(1)
  556. ##        self.copiesDefaultPushButton.setEnabled(False)
  557. ##        
  558. ##    def copiesSpinBox_valueChanged(self, i):
  559. ##        self.copiesDefaultPushButton.setEnabled(i != 1)
  560. ##    
  561. ##    def addPageRange(self):
  562. ##        widget = self.getWidget()
  563. ##        
  564. ##        layout39 = QGridLayout(widget,1,1,5,10,"layout39")
  565. ##
  566. ##        self.pageRangeEdit = QLineEdit(widget,"self.pageRangeEdit")
  567. ##        self.pageRangeEdit.setEnabled(0)
  568. ##        layout39.addWidget(self.pageRangeEdit,0,3)
  569. ##        
  570. ##        spacer20_2 = QSpacerItem(20,20,QSizePolicy.Expanding,QSizePolicy.Minimum)
  571. ##        layout39.addItem(spacer20_2,0,1)
  572. ##
  573. ##        textLabel5_2 = QLabel(widget,"textLabel5_2")
  574. ##        layout39.addWidget(textLabel5_2,0,0)
  575. ##
  576. ##        self.pagerangeDefaultPushButton = QPushButton(widget,"pagerangeDefaultPushButton")
  577. ##        layout39.addWidget(self.pagerangeDefaultPushButton,0,4)
  578. ##
  579. ##        self.rangeButtonGroup = QButtonGroup(widget,"self.rangeButtonGroup")
  580. ##        self.rangeButtonGroup.setLineWidth(0)
  581. ##        self.rangeButtonGroup.setColumnLayout(0,Qt.Vertical)
  582. ##        self.rangeButtonGroup.layout().setSpacing(0)
  583. ##        self.rangeButtonGroup.layout().setMargin(0)
  584. ##        self.rangeButtonGroupLayout = QGridLayout(self.rangeButtonGroup.layout())
  585. ##        self.rangeButtonGroupLayout.setAlignment(Qt.AlignTop)
  586. ##
  587. ##        radioButton3_2 = QRadioButton(self.rangeButtonGroup,"radioButton3_2")
  588. ##        radioButton3_2.setChecked(1)
  589. ##        self.rangeButtonGroup.insert( radioButton3_2,0)
  590. ##        self.rangeButtonGroupLayout.addWidget(radioButton3_2,0,0)
  591. ##
  592. ##        radioButton4_2 = QRadioButton(self.rangeButtonGroup,"radioButton4_2")
  593. ##        self.rangeButtonGroup.insert( radioButton4_2,1)
  594. ##        self.rangeButtonGroupLayout.addWidget(radioButton4_2,0,1)
  595. ##        
  596. ##        layout39.addWidget(self.rangeButtonGroup,0,2)
  597. ##        
  598. ##        self.bg = self.pageRangeEdit.paletteBackgroundColor()
  599. ##        self.invalid_page_range = False
  600. ##        
  601. ##        self.pageRangeEdit.setValidator(RangeValidator(self.pageRangeEdit))
  602. ##        
  603. ##        textLabel5_2.setText(self.__tr("Page Range:"))
  604. ##        radioButton3_2.setText(self.__tr("All pages"))
  605. ##        radioButton4_2.setText(self.__tr("Page range:"))
  606. ##        
  607. ##        self.pagerangeDefaultPushButton.setText(self.__tr("Default"))
  608. ##        
  609. ##        self.pagerangeDefaultPushButton.setEnabled(False)
  610. ##        
  611. ##        self.connect(self.rangeButtonGroup, SIGNAL("clicked(int)"), self.rangeButtonGroup_clicked)
  612. ##        self.connect(self.pageRangeEdit,SIGNAL("lostFocus()"),self.pageRangeEdit_lostFocus)
  613. ##        self.connect(self.pageRangeEdit,SIGNAL("textChanged(const QString&)"),self.pageRangeEdit_textChanged)
  614. ##        self.connect(self.pagerangeDefaultPushButton, SIGNAL("clicked()"), self.pagerangeDefaultPushButton_clicked)
  615. ##        
  616. ##        self.addWidget(widget, "range")
  617.         
  618. ##    def pagerangeDefaultPushButton_clicked(self):
  619. ##        self.rangeButtonGroup.setButton(0)
  620. ##        self.pagerangeDefaultPushButton.setEnabled(False)
  621. ##        self.pageRangeEdit.setEnabled(False)
  622. ##        
  623. ##    def rangeButtonGroup_clicked(self, a0):
  624. ##        self.pages_button_group = a0
  625. ##        self.pageRangeEdit.setEnabled(a0 == 1)
  626. ##        self.pagerangeDefaultPushButton.setEnabled(a0 == 1)
  627. ##        
  628. ##    def pageRangeEdit_lostFocus(self):
  629. ##        x = []
  630. ##        try:
  631. ##            x = utils.expand_range(str(self.pageRangeEdit.text()))
  632. ##        except ValueError:
  633. ##            log.error("Invalid page range entered.")
  634. ##            self.invalid_page_range = True
  635. ##            self.pageRangeEdit.setPaletteBackgroundColor(QColor(0xff, 0x99, 0x99))
  636. ##
  637. ##        else:
  638. ##            self.pageRangeEdit.setText(QString(utils.collapse_range(x)))
  639. ##            self.pageRangeEdit.setPaletteBackgroundColor(self.bg)
  640. ##            self.invalid_page_range = False
  641. ##
  642. ##    def pageRangeEdit_textChanged(self,a0):
  643. ##        x = []
  644. ##        try:
  645. ##            x = utils.expand_range(str(self.pageRangeEdit.text()))
  646. ##        except ValueError:
  647. ##            self.invalid_page_range = True
  648. ##            self.pageRangeEdit.setPaletteBackgroundColor(QColor(0xff, 0x99, 0x99))
  649. ##
  650. ##        else:
  651. ##            self.pageRangeEdit.setPaletteBackgroundColor(self.bg)
  652. ##            self.invalid_page_range = False
  653.         
  654. ##    def addPageSet(self):
  655. ##        widget = self.getWidget()
  656. ##        
  657. ##        layout34 = QHBoxLayout(widget,5,10,"layout34")
  658. ##
  659. ##        self.textLabel5_4 = QLabel(widget,"textLabel5_4")
  660. ##        layout34.addWidget(self.textLabel5_4)
  661. ##        spacer20_4 = QSpacerItem(20,20,QSizePolicy.Expanding,QSizePolicy.Minimum)
  662. ##        layout34.addItem(spacer20_4)
  663. ##
  664. ##        self.pageSetComboBox = QComboBox(0,widget,"pageSetComboBox")
  665. ##        layout34.addWidget(self.pageSetComboBox)
  666. ##
  667. ##        self.pagesetDefaultPushButton = QPushButton(widget,"pagesetDefaultPushButton")
  668. ##        layout34.addWidget(self.pagesetDefaultPushButton)
  669. ##        
  670. ##        self.textLabel5_4.setText(self.__tr("Page set:"))
  671. ##        self.pageSetComboBox.clear()
  672. ##        self.pageSetComboBox.insertItem(self.__tr("All pages"))
  673. ##        self.pageSetComboBox.insertItem(self.__tr("Even pages"))
  674. ##        self.pageSetComboBox.insertItem(self.__tr("Odd pages"))
  675. ##        self.pagesetDefaultPushButton.setText(self.__tr("Default"))
  676. ##        
  677. ##        self.pagesetDefaultPushButton.setEnabled(False)
  678. ##        
  679. ##        self.connect(self.pageSetComboBox, SIGNAL("activated(int)"), self.pageSetComboBox_activated)
  680. ##        self.connect(self.pagesetDefaultPushButton, SIGNAL("clicked()"), self.pagesetDefaultPushButton_clicked)
  681. ##        
  682. ##        self.addWidget(widget, "set")
  683.         
  684.     def pagesetDefaultPushButton_clicked(self):
  685.         self.pagesetDefaultPushButton.setEnabled(False)
  686.         self.pageSetComboBox.setCurrentItem(0)
  687.         
  688.     def pageSetComboBox_activated(self, i):
  689.         self.pagesetDefaultPushButton.setEnabled(i != 0)
  690.  
  691.     def faxButton_clicked(self):
  692.         pass
  693.         
  694.     def funcButton_clicked(self):
  695.         if self.toolbox_hosted:
  696.             self.form.SwitchFunctionsTab("funcs")
  697.         else:
  698.             self.form.close()
  699.         
  700.     def __tr(self,s,c = None):
  701.         return qApp.translate("DevMgr4",s,c)
  702.