Tizen 2.0 Release
[platform/upstream/hplip.git] / ui / jobstoragemixin.py
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
25 from prnt import cups
26
27 # Qt
28 from qt import *
29
30 class PINValidator(QValidator):
31     def __init__(self, parent=None, name=None):
32         QValidator.__init__(self, parent, name)
33
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
38
39         return QValidator.Acceptable, pos 
40      
41 class TextValidator(QValidator):
42     def __init__(self, parent=None, name=None):
43         QValidator.__init__(self, parent, name)
44
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
49
50         return QValidator.Acceptable, pos 
51
52
53 class JobStorageMixin(object):  
54     def __init__(self):
55         pass
56  
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
67         
68         
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()
76         
77         if current_options is None:
78             cups.resetOptions()
79             cups.openPPD(self.cur_printer)
80             current_options = dict(cups.getOptions())
81             cups.closePPD()
82
83         self.job_storage_pin = unicode(current_options.get('HOLDKEY', '0000')[:4])
84         self.jobStoragePINEdit.setText(self.job_storage_pin)
85         
86         self.job_storage_username = unicode(current_options.get('USERNAME', prop.username)[:16])
87         self.jobStorageUsernameEdit.setText(self.job_storage_username)
88         
89         self.job_storage_jobname = unicode(current_options.get('JOBNAME', u"Untitled")[:16])
90         self.jobStorageIDEdit.setText(self.job_storage_jobname)
91         
92         hold = current_options.get('HOLD', 'OFF')
93         holdtype = current_options.get('HOLDTYPE', 'PUBLIC')
94
95         if hold == 'OFF':
96             self.job_storage_mode = JOB_STORAGE_TYPE_OFF
97         
98         elif hold == 'ON':
99             if holdtype == 'PUBLIC':
100                 self.job_storage_mode = JOB_STORAGE_TYPE_QUICK_COPY
101             
102             else: # 'PRIVATE'
103                 self.job_storage_mode = JOB_STORAGE_TYPE_PERSONAL
104                 self.job_storage_use_pin = True
105             
106         elif hold == 'PROOF':
107             if holdtype == 'PUBLIC':
108                 self.job_storage_mode = JOB_STORAGE_TYPE_PROOF_AND_HOLD
109             else:
110                 self.job_storage_mode = JOB_STORAGE_TYPE_PERSONAL
111                 self.job_storage_use_pin = True
112             
113         elif hold == 'STORE':
114             self.job_storage_mode = JOB_STORAGE_TYPE_STORE
115             self.job_storage_use_pin = (holdtype == 'PRIVATE')
116         
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()
121
122         duplicate = current_options.get('DUPLICATEJOB', 'REPLACE')
123         
124         if duplicate == 'REPLACE':
125             self.job_storage_job_exist = 0
126         else:
127             self.job_storage_job_exist = 1
128             
129         self.jobStorageIDExistsComboBox.setCurrentItem(self.job_storage_job_exist)
130         self.setPrinterOptionIDExists()
131         
132         #
133         
134         if self.job_storage_mode == JOB_STORAGE_TYPE_OFF:
135             self.jobStorageDisable()
136         else:
137             self.jobStorageUserJobEnable()
138             self.setPrinterOptionID()
139             self.setPrinterOptionPIN()
140             self.setPrinterOptionUsername()
141                 
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))
144         
145         
146     def addJobStorageMode(self):
147         widget = self.getWidget()
148
149         layout34 = QHBoxLayout(widget,5,10,"layout34")
150
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)
155
156         self.jobStorageModeComboBox = QComboBox(0,widget,"jobStorageModeComboBox")
157         layout34.addWidget(self.jobStorageModeComboBox)
158
159         self.jobStorageModeDefaultPushButton = QPushButton(widget,"pagesetDefaultPushButton")
160         layout34.addWidget(self.jobStorageModeDefaultPushButton)
161
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"))
169         
170         self.jobStorageModeDefaultPushButton.setText(self.__tr("Default"))
171         self.jobStorageModeDefaultPushButton.setEnabled(False)
172
173         self.connect(self.jobStorageModeComboBox, SIGNAL("activated(int)"), self.jobStorageModeComboBox_activated)
174         self.connect(self.jobStorageModeDefaultPushButton, SIGNAL("clicked()"), self.jobStorageModeDefaultPushButton_clicked)
175
176         self.addWidget(widget, "job_storage_mode")
177         
178     def jobStorageModeComboBox_activated(self, a):
179         #print a
180         self.job_storage_mode = a
181         self.jobStorageModeDefaultPushButton.setEnabled(a != JOB_STORAGE_TYPE_OFF)
182         
183         if a == JOB_STORAGE_TYPE_OFF:
184             #print "off!"
185             self.jobStorageDisable()
186         else:
187             self.jobStorageUserJobEnable()
188             
189         self.setPrinterOptionHold()        
190         self.jobStoragePINEnable(a in (JOB_STORAGE_TYPE_PERSONAL, JOB_STORAGE_TYPE_STORE))
191         self.setModeTooltip()
192         
193
194     def setModeTooltip(self):
195         QToolTip.remove(self.jobStorageModeComboBox)
196         
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."""))
200         
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."""))
204                 
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."""))
208                 
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."""))
212                 
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."""))
216             
217     
218     def setPrinterOptionHold(self):
219         if self.print_settings_mode:
220             if self.job_storage_mode == JOB_STORAGE_TYPE_OFF:
221                 #print "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')
228                 
229             elif self.job_storage_mode == JOB_STORAGE_TYPE_PROOF_AND_HOLD:
230                 #print "proof"
231                 self.job_storage_use_pin = False
232                 self.setPrinterOption('HOLD', 'PROOF')
233                 self.removePrinterOption('HOLDTYPE')
234                 self.removePrinterOption('HOLDKEY')
235             
236             elif self.job_storage_mode == JOB_STORAGE_TYPE_PERSONAL: 
237                 #print "personal"
238                 #self.setPrinterOption('HOLDTYPE', 'PRIVATE')
239                 
240                 if self.job_storage_use_pin:
241                     self.setPrinterOption('HOLD', 'ON')
242                     self.setPrinterOption('HOLDTYPE', 'PRIVATE')
243                 else:
244                     self.setPrinterOption('HOLD', 'PROOF')
245                     self.setPrinterOption('HOLDTYPE', 'PUBLIC')
246                     self.removePrinterOption('HOLDKEY')
247                     
248             
249             elif self.job_storage_mode == JOB_STORAGE_TYPE_QUICK_COPY:
250                 #print "qc"
251                 self.job_storage_use_pin = False
252                 self.setPrinterOption('HOLD', 'ON')
253                 self.setPrinterOption('HOLDTYPE', 'PUBLIC')
254                 self.removePrinterOption('HOLDKEY')
255             
256             elif self.job_storage_mode == JOB_STORAGE_TYPE_STORE:
257                 #print "store"
258                 
259                 self.setPrinterOption('HOLD', 'STORE')
260                 
261                 if self.job_storage_use_pin:
262                     self.setPrinterOption('HOLDTYPE', 'PRIVATE')
263                 else:
264                     self.removePrinterOption('HOLDTYPE')
265                     self.removePrinterOption('HOLDKEY')
266         
267         
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()
273     
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()
279         
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()
286         
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()
293         
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()
299
300         t = e and self.jobStorageIDExistsComboBox.currentItem() == 1
301         self.jobStorageIDExistsComboBox.setEnabled(e)
302         self.jobStorageIDExistsDefaultPushButton.setEnabled(t)
303         if e: self.setPrinterOptionIDExists()
304
305         
306     # PIN
307     
308         
309     def addJobStoragePIN(self):
310         widget = self.getWidget()
311
312         layout39 = QGridLayout(widget,1,1,5,10,"layout39")
313
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)
319
320         spacer20_2 = QSpacerItem(20,20,QSizePolicy.Expanding,QSizePolicy.Minimum)
321         layout39.addItem(spacer20_2,0,1)
322
323         textLabel5_2 = QLabel(widget,"textLabel5_2")
324         layout39.addWidget(textLabel5_2,0,0)
325
326         self.jobStoragePINDefaultPushButton = QPushButton(widget,"jobStoragePINDefaultPushButton")
327         layout39.addWidget(self.jobStoragePINDefaultPushButton,0,4)
328
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)
336
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)
341
342         radioButton4_2 = QRadioButton(self.jobStoragePINButtonGroup,"radioButton4_2")
343         self.jobStoragePINButtonGroup.insert( radioButton4_2,1)
344         self.jobStoragePINButtonGroupLayout.addWidget(radioButton4_2,0,1)
345
346         layout39.addWidget(self.jobStoragePINButtonGroup,0,2)
347
348         self.bg = self.jobStoragePINEdit.paletteBackgroundColor()
349         self.invalid_page_range = False
350
351         self.jobStoragePINEdit.setValidator(PINValidator(self.jobStoragePINEdit))
352
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:"))
356
357         self.jobStoragePINDefaultPushButton.setText(self.__tr("Default"))
358
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)
363
364         self.addWidget(widget, "job_storage_pin")
365         
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()
373             
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()
380                             
381     def setPrinterOptionPIN(self):
382         if self.print_settings_mode :
383             if self.job_storage_use_pin:
384                                 
385                 self.setPrinterOption('HOLDKEY', self.job_storage_pin.encode('ascii'))
386                 #self.setPrinterOption('HOLD', 'ON')
387             else:
388                 self.removePrinterOption('HOLDKEY')
389                 #self.setPrinterOption('HOLD', 'PROOF')
390             
391     
392     def jobStoragePINEdit_lostFocus(self):
393         #self.setPrinterOptionPIN()
394         pass
395         
396     def jobStoragePINEdit_textChanged(self, a):
397         self.job_storage_pin = unicode(a)
398         self.setPrinterOptionPIN()
399         
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
405
406     # Username    
407
408     def addJobStorageUsername(self):
409         widget = self.getWidget()
410
411         layout39 = QGridLayout(widget,1,1,5,10,"layout39")
412
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)
417         
418         spacer20_2 = QSpacerItem(20,20,QSizePolicy.Expanding,QSizePolicy.Minimum)
419         layout39.addItem(spacer20_2,0,1)
420
421         textLabel5_2 = QLabel(widget,"textLabel5_2")
422         layout39.addWidget(textLabel5_2,0,0)
423
424         self.jobStorageUsernameDefaultPushButton = QPushButton(widget,"jobStorageUsernameDefaultPushButton")
425         layout39.addWidget(self.jobStorageUsernameDefaultPushButton,0,4)
426
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)
434
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)
439
440         radioButton4_2 = QRadioButton(self.jobStorageUsernameButtonGroup,"radioButton4_2")
441         self.jobStorageUsernameButtonGroup.insert( radioButton4_2,1)
442         self.jobStorageUsernameButtonGroupLayout.addWidget(radioButton4_2,0,1)
443
444         layout39.addWidget(self.jobStorageUsernameButtonGroup,0,2)
445
446         self.bg = self.jobStorageUsernameEdit.paletteBackgroundColor()
447         self.invalid_page_range = False
448
449         self.jobStorageUsernameEdit.setValidator(TextValidator(self.jobStorageUsernameEdit))
450
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:"))
454
455         self.jobStorageUsernameDefaultPushButton.setText(self.__tr("Default"))
456
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)
461
462         self.addWidget(widget, "job_storage_username")
463         
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()
471         
472         else: # Custom
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()
478             
479     def jobStorageUsernameEdit_lostFocus(self):
480         #self.setPrinterOptionUsername()
481         pass
482         
483     def jobStorageUsernameEdit_textChanged(self, a):
484         self.job_storage_username = unicode(a)
485         self.setPrinterOptionUsername()
486         
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()
494         
495     def setPrinterOptionUsername(self):
496         if self.print_settings_mode:
497             self.setPrinterOption('USERNAME', self.job_storage_username.encode('ascii').replace(' ', '_'))
498         
499
500     # Job ID    
501
502     def addJobStorageID(self):
503         widget = self.getWidget()
504
505         layout39 = QGridLayout(widget,1,1,5,10,"layout39")
506
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)
511
512         spacer20_2 = QSpacerItem(20,20,QSizePolicy.Expanding,QSizePolicy.Minimum)
513         layout39.addItem(spacer20_2,0,1)
514
515         textLabel5_2 = QLabel(widget,"textLabel5_2")
516         layout39.addWidget(textLabel5_2,0,0)
517
518         self.jobStorageIDDefaultPushButton = QPushButton(widget,"jobStorageIDDefaultPushButton")
519         layout39.addWidget(self.jobStorageIDDefaultPushButton,0,4)
520
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)
528
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)
533
534         radioButton4_2 = QRadioButton(self.jobStorageIDButtonGroup,"radioButton4_2")
535         self.jobStorageIDButtonGroup.insert( radioButton4_2,1)
536         self.jobStorageIDButtonGroupLayout.addWidget(radioButton4_2,0,1)
537
538         layout39.addWidget(self.jobStorageIDButtonGroup,0,2)
539
540         self.bg = self.jobStorageIDEdit.paletteBackgroundColor()
541         self.invalid_page_range = False
542
543         self.jobStorageIDEdit.setValidator(TextValidator(self.jobStorageIDEdit))
544
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:"))
548
549         self.jobStorageIDDefaultPushButton.setText(self.__tr("Default"))
550
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)
555
556         self.addWidget(widget, "job_storage_ID")
557         
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()
565             
566         else: # Custom
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()
572         
573     def jobStorageIDEdit_lostFocus(self):
574         #self.setPrinterOptionID()
575         pass
576         
577     def jobStorageIDEdit_textChanged(self, a):
578         self.job_storage_jobname = unicode(a)
579         self.setPrinterOptionID()
580                 
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()
588         
589     def setPrinterOptionID(self):
590         if self.print_settings_mode:
591             self.setPrinterOption('JOBNAME', self.job_storage_jobname.encode('ascii').replace(' ', '_'))
592
593     # Job ID Exists
594
595     def addJobStorageIDExists(self):
596         widget = self.getWidget()
597
598         layout34 = QHBoxLayout(widget,5,10,"layout34")
599
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)
604
605         self.jobStorageIDExistsComboBox = QComboBox(0,widget,"jobStorageIDExistsComboBox")
606         layout34.addWidget(self.jobStorageIDExistsComboBox)
607
608         self.jobStorageIDExistsDefaultPushButton = QPushButton(widget,"pagesetDefaultPushButton")
609         layout34.addWidget(self.jobStorageIDExistsDefaultPushButton)
610
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)"))
615         
616         self.jobStorageIDExistsDefaultPushButton.setText(self.__tr("Default"))
617
618         self.connect(self.jobStorageIDExistsComboBox, SIGNAL("activated(int)"), self.jobStorageIDExistsComboBox_activated)
619         self.connect(self.jobStorageIDExistsDefaultPushButton, SIGNAL("clicked()"), self.jobStorageIDExistsDefaultPushButton_clicked)
620
621         self.addWidget(widget, "job_storage_id_exists")
622         
623     def jobStorageIDExistsComboBox_activated(self, a):
624         self.jobStorageIDExistsDefaultPushButton.setEnabled(a==1)
625         self.job_storage_job_exist = a
626         self.setPrinterOptionIDExists()
627         
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()
633         
634     def setPrinterOptionIDExists(self):
635         if self.print_settings_mode:
636             if self.job_storage_job_exist == 0:
637                 self.setPrinterOption('DUPLICATEJOB', 'REPLACE')
638             else:
639                 self.setPrinterOption('DUPLICATEJOB', 'APPEND')
640
641     def __tr(self,s,c = None):
642         return qApp.translate("JobStorage",s,c)
643