1 # -*- coding: utf-8 -*-
3 # (c) Copyright 2001-2007 Hewlett-Packard Development Company, L.P.
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.
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.
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
24 from base import utils
30 class PINValidator(QValidator):
31 def __init__(self, parent=None, name=None):
32 QValidator.__init__(self, parent, name)
34 def validate(self, input, pos):
35 for x in unicode(input)[pos-1:]:
36 if x not in u'0123456789':
37 return QValidator.Invalid, pos
39 return QValidator.Acceptable, pos
41 class TextValidator(QValidator):
42 def __init__(self, parent=None, name=None):
43 QValidator.__init__(self, parent, name)
45 def validate(self, input, pos):
46 for x in unicode(input)[pos-1:]:
47 if x not in u'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ -':
48 return QValidator.Invalid, pos
50 return QValidator.Acceptable, pos
53 class JobStorageMixin(object):
57 def initJobStorage(self, print_settings_mode=False):
58 self.print_settings_mode = print_settings_mode
59 self.job_storage_mode = JOB_STORAGE_TYPE_OFF
60 self.job_storage_pin = u"0000"
61 self.job_storage_use_pin = False
62 self.job_storage_username = unicode(prop.username[:16])
63 self.job_storage_auto_username = True
64 self.job_storage_jobname = u"Untitled"
65 self.job_storage_auto_jobname = True
66 self.job_storage_job_exist = 0
69 def addJobStorage(self, current_options=None):
70 self.addJobStorageMode()
71 self.addJobStoragePIN()
72 self.addJobStorageUsername()
73 self.addJobStorageID()
74 self.addJobStorageIDExists()
75 self.jobStorageDisable()
77 if current_options is None:
79 cups.openPPD(self.cur_printer)
80 current_options = dict(cups.getOptions())
83 self.job_storage_pin = unicode(current_options.get('HOLDKEY', '0000')[:4])
84 self.jobStoragePINEdit.setText(self.job_storage_pin)
86 self.job_storage_username = unicode(current_options.get('USERNAME', prop.username)[:16])
87 self.jobStorageUsernameEdit.setText(self.job_storage_username)
89 self.job_storage_jobname = unicode(current_options.get('JOBNAME', u"Untitled")[:16])
90 self.jobStorageIDEdit.setText(self.job_storage_jobname)
92 hold = current_options.get('HOLD', 'OFF')
93 holdtype = current_options.get('HOLDTYPE', 'PUBLIC')
96 self.job_storage_mode = JOB_STORAGE_TYPE_OFF
99 if holdtype == 'PUBLIC':
100 self.job_storage_mode = JOB_STORAGE_TYPE_QUICK_COPY
103 self.job_storage_mode = JOB_STORAGE_TYPE_PERSONAL
104 self.job_storage_use_pin = True
106 elif hold == 'PROOF':
107 if holdtype == 'PUBLIC':
108 self.job_storage_mode = JOB_STORAGE_TYPE_PROOF_AND_HOLD
110 self.job_storage_mode = JOB_STORAGE_TYPE_PERSONAL
111 self.job_storage_use_pin = True
113 elif hold == 'STORE':
114 self.job_storage_mode = JOB_STORAGE_TYPE_STORE
115 self.job_storage_use_pin = (holdtype == 'PRIVATE')
117 self.jobStorageModeComboBox.setCurrentItem(self.job_storage_mode)
118 self.jobStorageModeDefaultPushButton.setEnabled(self.job_storage_mode != JOB_STORAGE_TYPE_OFF)
119 self.setModeTooltip()
120 self.setPrinterOptionHold()
122 duplicate = current_options.get('DUPLICATEJOB', 'REPLACE')
124 if duplicate == 'REPLACE':
125 self.job_storage_job_exist = 0
127 self.job_storage_job_exist = 1
129 self.jobStorageIDExistsComboBox.setCurrentItem(self.job_storage_job_exist)
130 self.setPrinterOptionIDExists()
134 if self.job_storage_mode == JOB_STORAGE_TYPE_OFF:
135 self.jobStorageDisable()
137 self.jobStorageUserJobEnable()
138 self.setPrinterOptionID()
139 self.setPrinterOptionPIN()
140 self.setPrinterOptionUsername()
142 self.jobStoragePINButtonGroup.setButton(self.job_storage_use_pin)
143 self.jobStoragePINEnable(self.job_storage_mode in (JOB_STORAGE_TYPE_PERSONAL, JOB_STORAGE_TYPE_STORE))
146 def addJobStorageMode(self):
147 widget = self.getWidget()
149 layout34 = QHBoxLayout(widget,5,10,"layout34")
151 self.jobStorageModeLabel = QLabel(widget,"jobStorageModeLabel")
152 layout34.addWidget(self.jobStorageModeLabel)
153 spacer20_4 = QSpacerItem(20,20,QSizePolicy.Expanding,QSizePolicy.Minimum)
154 layout34.addItem(spacer20_4)
156 self.jobStorageModeComboBox = QComboBox(0,widget,"jobStorageModeComboBox")
157 layout34.addWidget(self.jobStorageModeComboBox)
159 self.jobStorageModeDefaultPushButton = QPushButton(widget,"pagesetDefaultPushButton")
160 layout34.addWidget(self.jobStorageModeDefaultPushButton)
162 self.jobStorageModeLabel.setText(self.__tr("Job Storage Mode:"))
163 self.jobStorageModeComboBox.clear()
164 self.jobStorageModeComboBox.insertItem(self.__tr("Off"))
165 self.jobStorageModeComboBox.insertItem(self.__tr("Proof and Hold"))
166 self.jobStorageModeComboBox.insertItem(self.__tr("Personal/Private Job"))
167 self.jobStorageModeComboBox.insertItem(self.__tr("Quick Copy"))
168 self.jobStorageModeComboBox.insertItem(self.__tr("Stored Job"))
170 self.jobStorageModeDefaultPushButton.setText(self.__tr("Default"))
171 self.jobStorageModeDefaultPushButton.setEnabled(False)
173 self.connect(self.jobStorageModeComboBox, SIGNAL("activated(int)"), self.jobStorageModeComboBox_activated)
174 self.connect(self.jobStorageModeDefaultPushButton, SIGNAL("clicked()"), self.jobStorageModeDefaultPushButton_clicked)
176 self.addWidget(widget, "job_storage_mode")
178 def jobStorageModeComboBox_activated(self, a):
180 self.job_storage_mode = a
181 self.jobStorageModeDefaultPushButton.setEnabled(a != JOB_STORAGE_TYPE_OFF)
183 if a == JOB_STORAGE_TYPE_OFF:
185 self.jobStorageDisable()
187 self.jobStorageUserJobEnable()
189 self.setPrinterOptionHold()
190 self.jobStoragePINEnable(a in (JOB_STORAGE_TYPE_PERSONAL, JOB_STORAGE_TYPE_STORE))
191 self.setModeTooltip()
194 def setModeTooltip(self):
195 QToolTip.remove(self.jobStorageModeComboBox)
197 if self.job_storage_mode == JOB_STORAGE_TYPE_OFF:
198 QToolTip.add(self.jobStorageModeComboBox,
199 self.__tr("""Your job will be printed but not stored on the printer."""))
201 elif self.job_storage_mode == JOB_STORAGE_TYPE_PERSONAL:
202 QToolTip.add(self.jobStorageModeComboBox,
203 self.__tr("""Your job will be stored on the printer and nothing will be printed until you request the job from the printer's control panel.<br>Once the job is printed, it will automatically be removed from the printer's job storage. For Private print jobs, add a 4-digit PIN."""))
205 elif self.job_storage_mode == JOB_STORAGE_TYPE_PROOF_AND_HOLD:
206 QToolTip.add(self.jobStorageModeComboBox,
207 self.__tr("""When multiples copies are requested, the first copy will be printed.<br>The remaining copies will be held on the printer until you release them using the printer's control panel."""))
209 elif self.job_storage_mode == JOB_STORAGE_TYPE_QUICK_COPY:
210 QToolTip.add(self.jobStorageModeComboBox,
211 self.__tr("""After your job prints, you can use the printer's control panel to print additional copies of your job."""))
213 elif self.job_storage_mode == JOB_STORAGE_TYPE_STORE:
214 QToolTip.add(self.jobStorageModeComboBox,
215 self.__tr("""Your job will not immediately print, but instead be stored in the printer. <br>You can request copies of this job from the printer's control panel. Use this for storage of forms and other common or shared documents."""))
218 def setPrinterOptionHold(self):
219 if self.print_settings_mode:
220 if self.job_storage_mode == JOB_STORAGE_TYPE_OFF:
222 self.setPrinterOption('HOLD', 'OFF')
223 self.removePrinterOption('HOLDTYPE')
224 self.removePrinterOption('HOLDKEY')
225 self.removePrinterOption('USERNAME')
226 self.removePrinterOption('JOBNAME')
227 self.removePrinterOption('DUPLICATEJOB')
229 elif self.job_storage_mode == JOB_STORAGE_TYPE_PROOF_AND_HOLD:
231 self.job_storage_use_pin = False
232 self.setPrinterOption('HOLD', 'PROOF')
233 self.removePrinterOption('HOLDTYPE')
234 self.removePrinterOption('HOLDKEY')
236 elif self.job_storage_mode == JOB_STORAGE_TYPE_PERSONAL:
238 #self.setPrinterOption('HOLDTYPE', 'PRIVATE')
240 if self.job_storage_use_pin:
241 self.setPrinterOption('HOLD', 'ON')
242 self.setPrinterOption('HOLDTYPE', 'PRIVATE')
244 self.setPrinterOption('HOLD', 'PROOF')
245 self.setPrinterOption('HOLDTYPE', 'PUBLIC')
246 self.removePrinterOption('HOLDKEY')
249 elif self.job_storage_mode == JOB_STORAGE_TYPE_QUICK_COPY:
251 self.job_storage_use_pin = False
252 self.setPrinterOption('HOLD', 'ON')
253 self.setPrinterOption('HOLDTYPE', 'PUBLIC')
254 self.removePrinterOption('HOLDKEY')
256 elif self.job_storage_mode == JOB_STORAGE_TYPE_STORE:
259 self.setPrinterOption('HOLD', 'STORE')
261 if self.job_storage_use_pin:
262 self.setPrinterOption('HOLDTYPE', 'PRIVATE')
264 self.removePrinterOption('HOLDTYPE')
265 self.removePrinterOption('HOLDKEY')
268 def jobStorageModeDefaultPushButton_clicked(self):
269 self.jobStorageModeComboBox.setCurrentItem(0)
270 self.job_storage_mode = JOB_STORAGE_TYPE_OFF
271 self.setPrinterOptionHold()
272 self.setModeTooltip()
274 def jobStorageDisable(self): # Off: Turn off all options
275 self.jobStorageModeDefaultPushButton.setEnabled(False)
276 self.jobStoragePINEnable(False)
277 self.jobStorageUserJobEnable(False)
278 #self.setPrinterOptionHold()
280 def jobStoragePINEnable(self, e=True): # PIN On/Off
281 t = e and self.jobStoragePINButtonGroup.selectedId() == 1
282 self.jobStoragePINButtonGroup.setEnabled(e)
283 self.jobStoragePINEdit.setEnabled(t)
284 self.jobStoragePINDefaultPushButton.setEnabled(t)
285 self.setPrinterOptionPIN()
287 def jobStorageUserJobEnable(self, e=True): # Username/Job ID/Job ID Exists On/Off
288 t = e and self.jobStorageUsernameButtonGroup.selectedId() == 1
289 self.jobStorageUsernameButtonGroup.setEnabled(e)
290 self.jobStorageUsernameDefaultPushButton.setEnabled(t)
291 self.jobStorageUsernameEdit.setEnabled(t)
292 if e: self.setPrinterOptionUsername()
294 t = e and self.jobStorageIDButtonGroup.selectedId() == 1
295 self.jobStorageIDButtonGroup.setEnabled(e)
296 self.jobStorageIDDefaultPushButton.setEnabled(t)
297 self.jobStorageIDEdit.setEnabled(t)
298 if e: self.setPrinterOptionID()
300 t = e and self.jobStorageIDExistsComboBox.currentItem() == 1
301 self.jobStorageIDExistsComboBox.setEnabled(e)
302 self.jobStorageIDExistsDefaultPushButton.setEnabled(t)
303 if e: self.setPrinterOptionIDExists()
309 def addJobStoragePIN(self):
310 widget = self.getWidget()
312 layout39 = QGridLayout(widget,1,1,5,10,"layout39")
314 self.jobStoragePINEdit = QLineEdit(widget,"self.jobStoragePINEdit")
315 self.jobStoragePINEdit.setMaxLength(4)
316 self.jobStoragePINEdit.setInputMask(QString("9999"))
317 self.jobStoragePINEdit.setText(self.job_storage_pin)
318 layout39.addWidget(self.jobStoragePINEdit,0,3)
320 spacer20_2 = QSpacerItem(20,20,QSizePolicy.Expanding,QSizePolicy.Minimum)
321 layout39.addItem(spacer20_2,0,1)
323 textLabel5_2 = QLabel(widget,"textLabel5_2")
324 layout39.addWidget(textLabel5_2,0,0)
326 self.jobStoragePINDefaultPushButton = QPushButton(widget,"jobStoragePINDefaultPushButton")
327 layout39.addWidget(self.jobStoragePINDefaultPushButton,0,4)
329 self.jobStoragePINButtonGroup = QButtonGroup(widget,"self.jobStoragePINButtonGroup")
330 self.jobStoragePINButtonGroup.setLineWidth(0)
331 self.jobStoragePINButtonGroup.setColumnLayout(0,Qt.Vertical)
332 self.jobStoragePINButtonGroup.layout().setSpacing(0)
333 self.jobStoragePINButtonGroup.layout().setMargin(0)
334 self.jobStoragePINButtonGroupLayout = QGridLayout(self.jobStoragePINButtonGroup.layout())
335 self.jobStoragePINButtonGroupLayout.setAlignment(Qt.AlignTop)
337 radioButton3_2 = QRadioButton(self.jobStoragePINButtonGroup,"radioButton3_2")
338 radioButton3_2.setChecked(1)
339 self.jobStoragePINButtonGroup.insert( radioButton3_2,0)
340 self.jobStoragePINButtonGroupLayout.addWidget(radioButton3_2,0,0)
342 radioButton4_2 = QRadioButton(self.jobStoragePINButtonGroup,"radioButton4_2")
343 self.jobStoragePINButtonGroup.insert( radioButton4_2,1)
344 self.jobStoragePINButtonGroupLayout.addWidget(radioButton4_2,0,1)
346 layout39.addWidget(self.jobStoragePINButtonGroup,0,2)
348 self.bg = self.jobStoragePINEdit.paletteBackgroundColor()
349 self.invalid_page_range = False
351 self.jobStoragePINEdit.setValidator(PINValidator(self.jobStoragePINEdit))
353 textLabel5_2.setText(self.__tr("Make Job Private (use PIN to print):"))
354 radioButton3_2.setText(self.__tr("Public/Off"))
355 radioButton4_2.setText(self.__tr("Private/Use PIN:"))
357 self.jobStoragePINDefaultPushButton.setText(self.__tr("Default"))
359 self.connect(self.jobStoragePINButtonGroup, SIGNAL("clicked(int)"), self.jobStoragePINButtonGroup_clicked)
360 self.connect(self.jobStoragePINEdit,SIGNAL("lostFocus()"),self.jobStoragePINEdit_lostFocus)
361 self.connect(self.jobStoragePINEdit,SIGNAL("textChanged(const QString&)"),self.jobStoragePINEdit_textChanged)
362 self.connect(self.jobStoragePINDefaultPushButton, SIGNAL("clicked()"), self.jobStoragePINDefaultPushButton_clicked)
364 self.addWidget(widget, "job_storage_pin")
366 def jobStoragePINButtonGroup_clicked(self, a):
367 if a == 0: # Public/Off
368 self.jobStoragePINDefaultPushButton.setEnabled(False)
369 self.jobStoragePINEdit.setEnabled(False)
370 self.job_storage_use_pin = False
371 self.job_storage_pin = u"0000"
372 self.setPrinterOptionPIN()
374 else: # On/Private/Use PIN
375 self.jobStoragePINDefaultPushButton.setEnabled(True)
376 self.jobStoragePINEdit.setEnabled(True)
377 self.job_storage_use_pin = True
378 self.job_storage_pin = unicode(self.jobStoragePINEdit.text())
379 self.setPrinterOptionPIN()
381 def setPrinterOptionPIN(self):
382 if self.print_settings_mode :
383 if self.job_storage_use_pin:
385 self.setPrinterOption('HOLDKEY', self.job_storage_pin.encode('ascii'))
386 #self.setPrinterOption('HOLD', 'ON')
388 self.removePrinterOption('HOLDKEY')
389 #self.setPrinterOption('HOLD', 'PROOF')
392 def jobStoragePINEdit_lostFocus(self):
393 #self.setPrinterOptionPIN()
396 def jobStoragePINEdit_textChanged(self, a):
397 self.job_storage_pin = unicode(a)
398 self.setPrinterOptionPIN()
400 def jobStoragePINDefaultPushButton_clicked(self):
401 self.jobStoragePINButtonGroup.setButton(0)
402 self.jobStoragePINDefaultPushButton.setEnabled(False)
403 self.jobStoragePINEdit.setEnabled(False)
404 self.job_storage_use_pin = False
408 def addJobStorageUsername(self):
409 widget = self.getWidget()
411 layout39 = QGridLayout(widget,1,1,5,10,"layout39")
413 self.jobStorageUsernameEdit = QLineEdit(widget,"self.jobStorageUsernameEdit")
414 self.jobStorageUsernameEdit.setMaxLength(16)
415 self.jobStorageUsernameEdit.setText(self.job_storage_username)
416 layout39.addWidget(self.jobStorageUsernameEdit,0,3)
418 spacer20_2 = QSpacerItem(20,20,QSizePolicy.Expanding,QSizePolicy.Minimum)
419 layout39.addItem(spacer20_2,0,1)
421 textLabel5_2 = QLabel(widget,"textLabel5_2")
422 layout39.addWidget(textLabel5_2,0,0)
424 self.jobStorageUsernameDefaultPushButton = QPushButton(widget,"jobStorageUsernameDefaultPushButton")
425 layout39.addWidget(self.jobStorageUsernameDefaultPushButton,0,4)
427 self.jobStorageUsernameButtonGroup = QButtonGroup(widget,"self.jobStorageUsernameButtonGroup")
428 self.jobStorageUsernameButtonGroup.setLineWidth(0)
429 self.jobStorageUsernameButtonGroup.setColumnLayout(0,Qt.Vertical)
430 self.jobStorageUsernameButtonGroup.layout().setSpacing(0)
431 self.jobStorageUsernameButtonGroup.layout().setMargin(0)
432 self.jobStorageUsernameButtonGroupLayout = QGridLayout(self.jobStorageUsernameButtonGroup.layout())
433 self.jobStorageUsernameButtonGroupLayout.setAlignment(Qt.AlignTop)
435 radioButton3_2 = QRadioButton(self.jobStorageUsernameButtonGroup,"radioButton3_2")
436 radioButton3_2.setChecked(1)
437 self.jobStorageUsernameButtonGroup.insert( radioButton3_2,0)
438 self.jobStorageUsernameButtonGroupLayout.addWidget(radioButton3_2,0,0)
440 radioButton4_2 = QRadioButton(self.jobStorageUsernameButtonGroup,"radioButton4_2")
441 self.jobStorageUsernameButtonGroup.insert( radioButton4_2,1)
442 self.jobStorageUsernameButtonGroupLayout.addWidget(radioButton4_2,0,1)
444 layout39.addWidget(self.jobStorageUsernameButtonGroup,0,2)
446 self.bg = self.jobStorageUsernameEdit.paletteBackgroundColor()
447 self.invalid_page_range = False
449 self.jobStorageUsernameEdit.setValidator(TextValidator(self.jobStorageUsernameEdit))
451 textLabel5_2.setText(self.__tr("User name (for job identification):"))
452 radioButton3_2.setText(self.__tr("Automatic"))
453 radioButton4_2.setText(self.__tr("Custom:"))
455 self.jobStorageUsernameDefaultPushButton.setText(self.__tr("Default"))
457 self.connect(self.jobStorageUsernameButtonGroup, SIGNAL("clicked(int)"), self.jobStorageUsernameButtonGroup_clicked)
458 self.connect(self.jobStorageUsernameEdit,SIGNAL("lostFocus()"),self.jobStorageUsernameEdit_lostFocus)
459 self.connect(self.jobStorageUsernameEdit,SIGNAL("textChanged(const QString&)"),self.jobStorageUsernameEdit_textChanged)
460 self.connect(self.jobStorageUsernameDefaultPushButton, SIGNAL("clicked()"), self.jobStorageUsernameDefaultPushButton_clicked)
462 self.addWidget(widget, "job_storage_username")
464 def jobStorageUsernameButtonGroup_clicked(self, a):
465 if a == 0: # Automatic
466 self.jobStorageUsernameDefaultPushButton.setEnabled(False)
467 self.jobStorageUsernameEdit.setEnabled(False)
468 self.job_storage_auto_username = True
469 self.job_storage_username = unicode(prop.username[:16])
470 self.setPrinterOptionUsername()
473 self.jobStorageUsernameDefaultPushButton.setEnabled(True)
474 self.jobStorageUsernameEdit.setEnabled(True)
475 self.job_storage_auto_username = False
476 self.job_storage_username = unicode(self.jobStorageUsernameEdit.text())
477 self.setPrinterOptionUsername()
479 def jobStorageUsernameEdit_lostFocus(self):
480 #self.setPrinterOptionUsername()
483 def jobStorageUsernameEdit_textChanged(self, a):
484 self.job_storage_username = unicode(a)
485 self.setPrinterOptionUsername()
487 def jobStorageUsernameDefaultPushButton_clicked(self):
488 self.jobStorageUsernameButtonGroup.setButton(0)
489 self.jobStorageUsernameDefaultPushButton.setEnabled(False)
490 self.jobStorageUsernameEdit.setEnabled(False)
491 self.job_storage_auto_username = True
492 self.job_storage_username = unicode(prop.username[:16])
493 self.setPrinterOptionUsername()
495 def setPrinterOptionUsername(self):
496 if self.print_settings_mode:
497 self.setPrinterOption('USERNAME', self.job_storage_username.encode('ascii').replace(' ', '_'))
502 def addJobStorageID(self):
503 widget = self.getWidget()
505 layout39 = QGridLayout(widget,1,1,5,10,"layout39")
507 self.jobStorageIDEdit = QLineEdit(widget,"self.jobStorageIDEdit")
508 self.jobStorageIDEdit.setMaxLength(16)
509 self.jobStorageIDEdit.setText(self.job_storage_jobname)
510 layout39.addWidget(self.jobStorageIDEdit,0,3)
512 spacer20_2 = QSpacerItem(20,20,QSizePolicy.Expanding,QSizePolicy.Minimum)
513 layout39.addItem(spacer20_2,0,1)
515 textLabel5_2 = QLabel(widget,"textLabel5_2")
516 layout39.addWidget(textLabel5_2,0,0)
518 self.jobStorageIDDefaultPushButton = QPushButton(widget,"jobStorageIDDefaultPushButton")
519 layout39.addWidget(self.jobStorageIDDefaultPushButton,0,4)
521 self.jobStorageIDButtonGroup = QButtonGroup(widget,"self.jobStorageIDButtonGroup")
522 self.jobStorageIDButtonGroup.setLineWidth(0)
523 self.jobStorageIDButtonGroup.setColumnLayout(0,Qt.Vertical)
524 self.jobStorageIDButtonGroup.layout().setSpacing(0)
525 self.jobStorageIDButtonGroup.layout().setMargin(0)
526 self.jobStorageIDButtonGroupLayout = QGridLayout(self.jobStorageIDButtonGroup.layout())
527 self.jobStorageIDButtonGroupLayout.setAlignment(Qt.AlignTop)
529 radioButton3_2 = QRadioButton(self.jobStorageIDButtonGroup,"radioButton3_2")
530 radioButton3_2.setChecked(1)
531 self.jobStorageIDButtonGroup.insert( radioButton3_2,0)
532 self.jobStorageIDButtonGroupLayout.addWidget(radioButton3_2,0,0)
534 radioButton4_2 = QRadioButton(self.jobStorageIDButtonGroup,"radioButton4_2")
535 self.jobStorageIDButtonGroup.insert( radioButton4_2,1)
536 self.jobStorageIDButtonGroupLayout.addWidget(radioButton4_2,0,1)
538 layout39.addWidget(self.jobStorageIDButtonGroup,0,2)
540 self.bg = self.jobStorageIDEdit.paletteBackgroundColor()
541 self.invalid_page_range = False
543 self.jobStorageIDEdit.setValidator(TextValidator(self.jobStorageIDEdit))
545 textLabel5_2.setText(self.__tr("Job name (for job identification):"))
546 radioButton3_2.setText(self.__tr("Automatic"))
547 radioButton4_2.setText(self.__tr("Custom:"))
549 self.jobStorageIDDefaultPushButton.setText(self.__tr("Default"))
551 self.connect(self.jobStorageIDButtonGroup, SIGNAL("clicked(int)"), self.jobStorageIDButtonGroup_clicked)
552 self.connect(self.jobStorageIDEdit,SIGNAL("lostFocus()"),self.jobStorageIDEdit_lostFocus)
553 self.connect(self.jobStorageIDEdit,SIGNAL("textChanged(const QString&)"),self.jobStorageIDEdit_textChanged)
554 self.connect(self.jobStorageIDDefaultPushButton, SIGNAL("clicked()"), self.jobStorageIDDefaultPushButton_clicked)
556 self.addWidget(widget, "job_storage_ID")
558 def jobStorageIDButtonGroup_clicked(self, a):
559 if a == 0: # Automatic
560 self.jobStorageIDDefaultPushButton.setEnabled(False)
561 self.jobStorageIDEdit.setEnabled(False)
562 self.job_storage_auto_jobname = True
563 self.job_storage_jobname = u"Untitled"
564 self.setPrinterOptionID()
567 self.jobStorageIDDefaultPushButton.setEnabled(True)
568 self.jobStorageIDEdit.setEnabled(True)
569 self.job_storage_auto_jobname = False
570 self.job_storage_jobname = unicode(self.jobStorageIDEdit.text())
571 self.setPrinterOptionID()
573 def jobStorageIDEdit_lostFocus(self):
574 #self.setPrinterOptionID()
577 def jobStorageIDEdit_textChanged(self, a):
578 self.job_storage_jobname = unicode(a)
579 self.setPrinterOptionID()
581 def jobStorageIDDefaultPushButton_clicked(self):
582 self.jobStorageIDButtonGroup.setButton(0)
583 self.jobStorageIDDefaultPushButton.setEnabled(False)
584 self.jobStorageIDEdit.setEnabled(False)
585 self.job_storage_auto_jobname = True
586 self.job_storage_jobname = u"Untitled"
587 self.setPrinterOptionID()
589 def setPrinterOptionID(self):
590 if self.print_settings_mode:
591 self.setPrinterOption('JOBNAME', self.job_storage_jobname.encode('ascii').replace(' ', '_'))
595 def addJobStorageIDExists(self):
596 widget = self.getWidget()
598 layout34 = QHBoxLayout(widget,5,10,"layout34")
600 self.jobStorageIDExistsLabel = QLabel(widget,"jobStorageIDExistsLabel")
601 layout34.addWidget(self.jobStorageIDExistsLabel)
602 spacer20_4 = QSpacerItem(20,20,QSizePolicy.Expanding,QSizePolicy.Minimum)
603 layout34.addItem(spacer20_4)
605 self.jobStorageIDExistsComboBox = QComboBox(0,widget,"jobStorageIDExistsComboBox")
606 layout34.addWidget(self.jobStorageIDExistsComboBox)
608 self.jobStorageIDExistsDefaultPushButton = QPushButton(widget,"pagesetDefaultPushButton")
609 layout34.addWidget(self.jobStorageIDExistsDefaultPushButton)
611 self.jobStorageIDExistsLabel.setText(self.__tr("If Job Name already exists:"))
612 self.jobStorageIDExistsComboBox.clear()
613 self.jobStorageIDExistsComboBox.insertItem(self.__tr("Replace existing job"))
614 self.jobStorageIDExistsComboBox.insertItem(self.__tr("Use Job Name + (1-99)"))
616 self.jobStorageIDExistsDefaultPushButton.setText(self.__tr("Default"))
618 self.connect(self.jobStorageIDExistsComboBox, SIGNAL("activated(int)"), self.jobStorageIDExistsComboBox_activated)
619 self.connect(self.jobStorageIDExistsDefaultPushButton, SIGNAL("clicked()"), self.jobStorageIDExistsDefaultPushButton_clicked)
621 self.addWidget(widget, "job_storage_id_exists")
623 def jobStorageIDExistsComboBox_activated(self, a):
624 self.jobStorageIDExistsDefaultPushButton.setEnabled(a==1)
625 self.job_storage_job_exist = a
626 self.setPrinterOptionIDExists()
628 def jobStorageIDExistsDefaultPushButton_clicked(self):
629 self.jobStorageIDExistsComboBox.setCurrentItem(0)
630 self.jobStorageIDExistsDefaultPushButton.setEnabled(False)
631 self.job_storage_job_exist = 0
632 self.setPrinterOptionIDExists()
634 def setPrinterOptionIDExists(self):
635 if self.print_settings_mode:
636 if self.job_storage_job_exist == 0:
637 self.setPrinterOption('DUPLICATEJOB', 'REPLACE')
639 self.setPrinterOption('DUPLICATEJOB', 'APPEND')
641 def __tr(self,s,c = None):
642 return qApp.translate("JobStorage",s,c)