1#!/usr/local/bin/python3.8
2# -*- coding: utf-8 -*-
3
4# Form implementation generated from reading ui file 'Hp-Scan.ui'
5#
6# Created by: PyQt4 UI code generator 4.11.4
7#
8# WARNING! All changes made in this file will be lost!
9
10from PyQt4 import QtCore, QtGui
11from base import utils,imageprocessing
12#, device
13#import scanext
14#from scan import sane
15import re
16import os
17import platform
18
19from PyQt4.QtGui import *
20from PyQt4.QtCore import *
21from collections import OrderedDict
22
23'''dir_path = os.path.dirname(os.path.realpath(__file__))
24print (dir_path)
25import sys
26#sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
27print sys.path'''
28from scan import sane
29
30PAGE_SIZES = OrderedDict([ # in mm
31    ("letter" , (215, 279, "Letter", 'in')),
32    ('a3' , (297, 420, "A3", 'mm')),
33    ("a4" , (210, 297, "A4", 'mm')),
34    ("a5" , (148, 210, "A5", 'mm')),
35    ('5x7' , (127, 178, "5x7 photo", 'in')),
36    ('4x6' , (102, 152, "4x6 photo", 'in')),
37    ('3x5' , (76, 127, "3x5 index card", 'in')),
38    ('a2_env' , (111, 146, "A2 Envelope", 'in')),
39    ("a6" , (105, 148, "A6", 'mm')),
40    ("b4" , (257, 364, "B4", 'mm')),
41    ("b5" , (182, 257, "B5", 'mm')),
42    ("c6_env" , (114, 162, "C6 Envelope", 'in')),
43    ("dl_env" , (110, 220, "DL Envelope", 'in')),
44    ("exec" , (184, 267, "Executive", 'in')),
45    ("flsa" , (216, 330, "Flsa", 'mm')),
46    ("higaki" , (100, 148, "Hagaki", 'mm')),
47    ("japan_env_3" , (120, 235, "Japanese Envelope #3", 'mm')),
48    ("japan_env_4" , (90, 205, "Japanese Envelope #4", 'mm')),
49    ("legal" , (215, 356, "Legal", 'in')),
50    ("no_10_env" , (105, 241, "Number 10 Envelope", 'in')),
51    ("oufufu-hagaki" , (148, 200, "Oufuku-Hagaki", 'mm')),
52    ("photo" , (102, 152, "Photo", 'in')),
53    ("super_b" , (330, 483, "Super B", 'in')),
54    ])
55
56
57
58#devicelist = {}
59device_name = ''
60path = os.getcwd()
61new_path = os.getcwd()
62multipick_error_message = "The scan operation has been cancelled or a multipick or paper is jammed in the ADF.\nIf you cancelled the scan,click OK.\nIf the scan was terminated due to a multi-feed or paper jam in the ADF,\ndo the following:\n\n1)Clear the ADF path. For instructions see your product documentation.\n2)Check the sheets are not stuck together. Remove any staples, sticky notes,tape or other objects.\n3)Restart the scan\n\nNote:If necessary, turn off automatic detection of multi-pick before starting a new scan\n"
63convert_error_message = "Convert command not found. Multiple Tiff document generation,\n Batch seperation feature with Tiff file format,\n Page merge feature and PDF generation using reportlab may not work as excepted.\n Please install ImageMagick package and try again\n"
64
65
66no_document_error_message = "No document(s). Please load documents and try again."
67
68no_pages_to_merge = "No scanned documents to merge."
69pyPlatform = ''
70num= {}
71try:
72    _fromUtf8 = QtCore.QString.fromUtf8
73except AttributeError:
74    def _fromUtf8(s):
75        return s
76
77try:
78    _encoding = QtGui.QApplication.UnicodeUTF8
79    def _translate(context, text, disambig):
80        return QtGui.QApplication.translate(context, text, disambig, _encoding)
81except AttributeError:
82    def _translate(context, text, disambig):
83        return QtGui.QApplication.translate(context, text, disambig)
84
85class Ui_HpScan(object):
86    devicelist = {}
87    #device_name = ''
88    file_type = 'png'
89    source = ''
90    color = 'gray'
91    resolution = '300'
92    size ='letter'
93    device_uri = ''
94    multi_pick = False
95    document_merge =False
96    auto_orient =False
97    crushed = False
98    bg_color_removal = False
99    punchhole_removal = False
100    color_dropout = False
101    searchablePDF = False
102    mixed_feed =False
103    blank_page = False
104    batch_seperation = False
105    bp_barcode = False
106    auto_crop = False
107    deskew_image = False
108    document_merge_adf_flatbed = False
109    image_enhancement = False
110    brightness = False
111    dropout_color_red_value = 0
112    dropout_color_green_value = 0
113    dropout_color_blue_value = 0
114    contrast = False
115    sharpness = False
116    color_value = False
117    color_range = True
118    sizel1 = 0
119    sizel2 = 0
120    sizel3 = 0
121    sizel4 = 0
122    sizel5 = 49
123    deskew_image_pri = True
124    auto_crop_pri = True
125    mixed_feed_pri = True
126    auto_orient_pri = True
127    document_merge_adf_flatbed_pri = True
128    multi_pick_pri = True
129    searchablePDF_pri = True
130    #batch_seperation_pri = True
131    crushed_pri = True
132    bg_color_removal_pri = True
133    punchhole_removal_pri =True
134    color_dropout_pri = True
135    document_merge_pri = True
136    image_enhancement_pri = True
137    blank_page_pri = True
138    batchsepBC_pri = True
139    other_device_cnt = 0
140    ocr = False
141
142    def setupUi(self, HpScan):
143        pyPlatform = platform.python_version()
144        HpScan.setObjectName(_fromUtf8("HpScan"))
145        HpScan.setMinimumSize(QtCore.QSize(900, 600))
146        HpScan.setMaximumSize(QtCore.QSize(900, 600))
147        font = QtGui.QFont()
148        font.setBold(False)
149        font.setWeight(50)
150        HpScan.setFont(font)
151        HpScan.setMouseTracking(False)
152        HpScan.setFocusPolicy(QtCore.Qt.NoFocus)
153        self.dockWidgetContents = QtGui.QWidget()
154        self.dockWidgetContents.setObjectName(_fromUtf8("dockWidgetContents"))
155        self.label_Type = QtGui.QLabel(self.dockWidgetContents)
156        self.label_Type.setGeometry(QtCore.QRect(10, 89, 51, 41))
157        font = QtGui.QFont()
158        font.setBold(True)
159        font.setWeight(75)
160        self.label_Type.setFont(font)
161        self.label_Type.setMouseTracking(True)
162        self.label_Type.setObjectName(_fromUtf8("label_Type"))
163        self.comboBox_Type = QtGui.QComboBox(self.dockWidgetContents)
164        self.comboBox_Type.setGeometry(QtCore.QRect(85, 90, 171, 41))
165        self.comboBox_Type.setObjectName(_fromUtf8("comboBox_Type"))
166        self.comboBox_Type.addItem(_fromUtf8(""))
167        self.comboBox_Type.addItem(_fromUtf8(""))
168        self.comboBox_Type.addItem(_fromUtf8(""))
169        self.comboBox_Type.addItem(_fromUtf8(""))
170        self.comboBox_Type.addItem(_fromUtf8(""))
171        self.comboBox_Type.currentIndexChanged.connect(self.comboBox_TypeIndexChanged)
172        self.comboBox_Flatbed = QtGui.QComboBox(self.dockWidgetContents)
173        self.comboBox_Flatbed.setGeometry(QtCore.QRect(85, 150, 171, 41))
174        self.comboBox_Flatbed.setObjectName(_fromUtf8("comboBox_Flatbed"))
175        #self.comboBox_Flatbed.addItem(_fromUtf8(""))
176        #self.comboBox_Flatbed.addItem(_fromUtf8(""))
177        #self.comboBox_Flatbed.addItem(_fromUtf8(""))
178        #self.comboBox_Flatbed.currentIndexChanged.connect(self.comboBox_SourceChanged)
179        self.comboBox_Color = QtGui.QComboBox(self.dockWidgetContents)
180        self.comboBox_Color.setGeometry(QtCore.QRect(85, 210, 171, 41))
181        self.comboBox_Color.setObjectName(_fromUtf8("comboBox_Color"))
182        self.comboBox_Color.addItem(_fromUtf8(""))
183        self.comboBox_Color.addItem(_fromUtf8(""))
184        self.comboBox_Color.currentIndexChanged.connect(self.comboBox_ColorIndexChanged)
185        self.comboBox_Resolution = QtGui.QComboBox(self.dockWidgetContents)
186        self.comboBox_Resolution.setGeometry(QtCore.QRect(85, 270, 171, 41))
187        self.comboBox_Resolution.setObjectName(_fromUtf8("comboBox_Resolution"))
188        self.comboBox_Resolution.addItem(_fromUtf8(""))
189        self.comboBox_Resolution.addItem(_fromUtf8(""))
190        self.comboBox_Resolution.addItem(_fromUtf8(""))
191        self.comboBox_Resolution.addItem(_fromUtf8(""))
192        self.comboBox_Resolution.addItem(_fromUtf8(""))
193        self.comboBox_Resolution.currentIndexChanged.connect(self.comboBox_ResIndexChanged)
194        self.label_Size = QtGui.QLabel(self.dockWidgetContents)
195        self.label_Size.setGeometry(QtCore.QRect(10, 329, 51, 41))
196        font = QtGui.QFont()
197        font.setBold(True)
198        font.setWeight(75)
199        self.label_Size.setFont(font)
200        self.label_Size.setMouseTracking(True)
201        self.label_Size.setObjectName(_fromUtf8("label_Size"))
202        self.label_Device = QtGui.QLabel(self.dockWidgetContents)
203        self.label_Device.setGeometry(QtCore.QRect(10, 29, 65, 41))
204        font = QtGui.QFont()
205        font.setBold(True)
206        font.setWeight(75)
207        self.label_Device.setFont(font)
208        self.label_Device.setMouseTracking(True)
209        self.label_Device.setObjectName(_fromUtf8("label_Device"))
210        self.comboBox_Papersize = QtGui.QComboBox(self.dockWidgetContents)
211        self.comboBox_Papersize.setGeometry(QtCore.QRect(85, 330, 171, 41))
212        self.comboBox_Papersize.setObjectName(_fromUtf8("comboBox_Papersize"))
213        #self.comboBox_Papersize.addItem(_fromUtf8(""))
214        #self.comboBox_Papersize.addItem(_fromUtf8(""))
215        #self.comboBox_Papersize.addItem(_fromUtf8(""))
216        #self.comboBox_Papersize.addItem(_fromUtf8(""))
217        #self.comboBox_Papersize.addItem(_fromUtf8(""))
218        #self.comboBox_Papersize.currentIndexChanged.connect(self.comboBox_PaperSizeIndexChanged)
219        self.pushButton_Scan = QtGui.QPushButton(self.dockWidgetContents)
220        self.pushButton_Scan.setGeometry(QtCore.QRect(60, 470, 81, 41))
221        font = QtGui.QFont()
222        font.setBold(True)
223        font.setWeight(75)
224        self.pushButton_Scan.setFont(font)
225        self.pushButton_Scan.setObjectName(_fromUtf8("pushButton_Scan"))
226        self.pushButton_Scan.clicked.connect(self.scanButton_clicked)
227
228        self.label_Path = QtGui.QLabel(self.dockWidgetContents)
229        self.label_Path.setGeometry(QtCore.QRect(10,390, 51, 41))
230        font = QtGui.QFont()
231        font.setBold(True)
232        font.setWeight(75)
233        self.label_Path.setFont(font)
234        self.label_Path.setMouseTracking(True)
235        self.label_Path.setObjectName(_fromUtf8("label_Path"))
236
237        self.pushButton_Change = QtGui.QPushButton(self.dockWidgetContents)
238        self.pushButton_Change.setGeometry(QtCore.QRect(155, 470, 101, 41))
239        font = QtGui.QFont()
240        font.setBold(True)
241        font.setWeight(75)
242        self.pushButton_Change.setFont(font)
243        self.pushButton_Change.setObjectName(_fromUtf8("pushButton_Change"))
244        self.pushButton_Change.clicked.connect(self.selectFile)
245
246        self.pushButton_Merge = QtGui.QPushButton(self.dockWidgetContents)
247        self.pushButton_Merge.setGeometry(QtCore.QRect(450, 305, 81, 31))
248        font = QtGui.QFont()
249        font.setBold(True)
250        font.setWeight(75)
251        self.pushButton_Merge.setFont(font)
252        self.pushButton_Merge.setObjectName(_fromUtf8("pushButton_Merge"))
253        self.pushButton_Merge.setEnabled(False)
254        self.pushButton_Merge.clicked.connect(self.mergeButton_clicked)
255
256        self.label_Flatbed = QtGui.QLabel(self.dockWidgetContents)
257        self.label_Flatbed.setGeometry(QtCore.QRect(10, 150, 51, 41))
258        self.label_Flatbed.setText(_fromUtf8(""))
259        self.label_Flatbed.setPixmap(QtGui.QPixmap(_fromUtf8("/usr/share/hplip/data/images/other/flat1.png")))
260        self.label_Flatbed.setObjectName(_fromUtf8("label_Flatbed"))
261        self.label_Color = QtGui.QLabel(self.dockWidgetContents)
262        self.label_Color.setGeometry(QtCore.QRect(20, 210, 61, 41))
263        self.label_Color.setText(_fromUtf8(""))
264        self.label_Color.setPixmap(QtGui.QPixmap(_fromUtf8("/usr/share/hplip/data/images/other/viewer.png")))
265        self.label_Color.setObjectName(_fromUtf8("label_Color"))
266        self.label_Resolution = QtGui.QLabel(self.dockWidgetContents)
267        self.label_Resolution.setGeometry(QtCore.QRect(20, 270, 51, 51))
268        self.label_Resolution.setText(_fromUtf8(""))
269        self.label_Resolution.setPixmap(QtGui.QPixmap(_fromUtf8("/usr/share/hplip/data/images/other/resolution.png")))
270        self.label_Resolution.setObjectName(_fromUtf8("label_Resolution"))
271        self.auto_orient = QtGui.QCheckBox(self.dockWidgetContents)
272        self.auto_orient.setGeometry(QtCore.QRect(300,70,117, 22))
273        self.auto_orient.setObjectName(_fromUtf8("auto_orient"))
274        self.auto_orient.stateChanged.connect(self.Auto_orient)
275        self.crushed = QtGui.QCheckBox(self.dockWidgetContents)
276        self.crushed.setGeometry(QtCore.QRect(550,30,240, 22))
277        self.crushed.setObjectName(_fromUtf8("crushed"))
278        self.crushed.stateChanged.connect(self.Crushed)
279        self.searchablePDF = QtGui.QCheckBox(self.dockWidgetContents)
280        self.searchablePDF.setGeometry(QtCore.QRect(300,350,200, 22))
281        self.searchablePDF.setObjectName(_fromUtf8("searchablePDF"))
282        self.searchablePDF.stateChanged.connect(self.SearchablePDF)
283        self.punchhole_removal = QtGui.QCheckBox(self.dockWidgetContents)
284        self.punchhole_removal.setGeometry(QtCore.QRect(300,390,200, 22))
285        self.punchhole_removal.setObjectName(_fromUtf8("punchhole_removal"))
286        self.punchhole_removal.stateChanged.connect(self.Punchhole_removal)
287        #self.punchhole_removal.stateChanged.connect(self.SearchablePDF)
288        self.color_dropout = QtGui.QCheckBox(self.dockWidgetContents)
289        self.color_dropout.setGeometry(QtCore.QRect(550,360,240, 22))
290        self.color_dropout.setObjectName(_fromUtf8("color_dropout"))
291        self.color_dropout.stateChanged.connect(self.Color_dropout)
292        self.label_CR = QtGui.QLabel(self.dockWidgetContents)
293        self.label_CR.setGeometry(QtCore.QRect(560,390, 250, 22))
294        self.label_CR.setMouseTracking(True)
295        self.label_CR.setObjectName(_fromUtf8("label_CR"))
296        self.bg_color_removal = QtGui.QCheckBox(self.dockWidgetContents)
297        self.bg_color_removal.setGeometry(QtCore.QRect(300,430,240, 22))
298        self.bg_color_removal.setObjectName(_fromUtf8("bg_color_removal"))
299        self.bg_color_removal.stateChanged.connect(self.Bg_color_removal)
300        #self.bg_color_removal.stateChanged.connect(self.SearchablePDF)
301
302        self.auto_crop = QtGui.QCheckBox(self.dockWidgetContents)
303        self.auto_crop.setGeometry(QtCore.QRect(300, 110, 241, 20))
304        self.auto_crop.setObjectName(_fromUtf8("auto_crop"))
305        self.auto_crop.stateChanged.connect(self.Auto_crop)
306        self.multi_pick = QtGui.QCheckBox(self.dockWidgetContents)
307        self.multi_pick.setGeometry(QtCore.QRect(300, 150, 231, 22))
308        self.multi_pick.setObjectName(_fromUtf8("multi_pick"))
309        self.multi_pick.stateChanged.connect(self.Multi_pick)
310        self.blank_page = QtGui.QCheckBox(self.dockWidgetContents)
311        self.blank_page.setGeometry(QtCore.QRect(300, 190, 241, 22))
312        self.blank_page.setObjectName(_fromUtf8("blank_page"))
313        self.blank_page.stateChanged.connect(self.Blank_page)
314        self.batch_seperation = QtGui.QCheckBox(self.dockWidgetContents)
315        self.batch_seperation.setGeometry(QtCore.QRect(550, 230, 201, 22))
316        self.batch_seperation.setObjectName(_fromUtf8("batch_seperation"))
317        self.batch_seperation.stateChanged.connect(self.batch_Seperation)
318        #self.batch_seperation.setEnabled(False)
319        self.bp_blankpage = QtGui.QCheckBox(self.dockWidgetContents)
320        self.bp_blankpage.setGeometry(QtCore.QRect(570, 260, 201, 22))
321        self.bp_blankpage.setObjectName(_fromUtf8("bp_blankpage"))
322        self.bp_blankpage.setEnabled(False)
323        self.bp_barcode = QtGui.QCheckBox(self.dockWidgetContents)
324        self.bp_barcode.setGeometry(QtCore.QRect(570, 290, 311, 22))
325        self.bp_barcode.setObjectName(_fromUtf8("bp_barcode"))
326        self.bp_barcode.setEnabled(False)
327        self.comboBox_Barcode_Type = QtGui.QComboBox(self.dockWidgetContents)
328        self.comboBox_Barcode_Type.setGeometry(QtCore.QRect(590, 320, 261, 27))
329        self.comboBox_Barcode_Type.setObjectName(_fromUtf8("comboBox_Barcode_Type"))
330        self.comboBox_Barcode_Type.addItem(_fromUtf8(""))
331        self.comboBox_Barcode_Type.addItem(_fromUtf8(""))
332        self.comboBox_Barcode_Type.addItem(_fromUtf8(""))
333        self.comboBox_Barcode_Type.addItem(_fromUtf8(""))
334        self.comboBox_Barcode_Type.addItem(_fromUtf8(""))
335        self.comboBox_Barcode_Type.addItem(_fromUtf8(""))
336        self.comboBox_Barcode_Type.addItem(_fromUtf8(""))
337        self.comboBox_Barcode_Type.addItem(_fromUtf8(""))
338        self.comboBox_Barcode_Type.setEnabled(False)
339        #self.comboBox_Barcode_Type.currentIndexChanged.connect(self.comboBox_ResIndexChanged)
340        self.document_merge = QtGui.QCheckBox(self.dockWidgetContents)
341        self.document_merge.setGeometry(QtCore.QRect(300, 230, 161, 22))
342        self.document_merge.setObjectName(_fromUtf8("document_merge"))
343        self.document_merge.stateChanged.connect(self.Document_merge)
344        self.mixed_feed = QtGui.QCheckBox(self.dockWidgetContents)
345        self.mixed_feed.setGeometry(QtCore.QRect(300, 270, 200, 22))
346        self.mixed_feed.setObjectName(_fromUtf8("mixed_feed"))
347        self.mixed_feed.stateChanged.connect(self.Mixed_feed)
348        self.deskew_image = QtGui.QCheckBox(self.dockWidgetContents)
349        self.document_merge_adf_flatbed = QtGui.QCheckBox(self.dockWidgetContents)
350        self.document_merge_adf_flatbed.setGeometry(QtCore.QRect(300, 310, 150, 22))
351        self.document_merge_adf_flatbed.setObjectName(_fromUtf8("document_merge_adf_flatbed"))
352        self.document_merge_adf_flatbed.stateChanged.connect(self.Document_merge_adf_flatbed)
353        self.label_Brightness = QtGui.QLabel(self.dockWidgetContents)
354        self.label_Brightness.setGeometry(QtCore.QRect(560,100, 250, 22))
355        #font = QtGui.QFont()
356        #font.setBold(True)
357        #font.setWeight(75)
358        #self.label_Brightness.setFont(font)
359        self.label_Brightness.setMouseTracking(True)
360        self.label_Brightness.setObjectName(_fromUtf8("label_Brightness"))
361        self.label_Contrast = QtGui.QLabel(self.dockWidgetContents)
362        self.label_Contrast.setGeometry(QtCore.QRect(560,130, 250, 22))
363        #font = QtGui.QFont()
364        #font.setBold(True)
365        #font.setWeight(75)
366        #self.label_Contrast.setFont(font)
367        self.label_Contrast.setMouseTracking(True)
368        self.label_Contrast.setObjectName(_fromUtf8("label_Contrast"))
369        self.label_Sharpness = QtGui.QLabel(self.dockWidgetContents)
370        self.label_Sharpness.setGeometry(QtCore.QRect(560,160, 250, 22))
371        #font = QtGui.QFont()
372        #font.setBold(True)
373        #font.setWeight(75)
374        #self.label_Sharpness.setFont(font)
375        self.label_Sharpness.setMouseTracking(True)
376        self.label_Sharpness.setObjectName(_fromUtf8("label_Sharpness"))
377        self.label_Color_value = QtGui.QLabel(self.dockWidgetContents)
378        self.label_Color_value.setGeometry(QtCore.QRect(560,190, 250, 22))
379        #font = QtGui.QFont()
380        #font.setBold(True)
381        #font.setWeight(75)
382        #self.label_Color_value.setFont(font)
383        self.label_Color_value.setMouseTracking(True)
384        self.label_Color_value.setObjectName(_fromUtf8("label_Color_value"))
385        self.image_enhancement = QtGui.QCheckBox(self.dockWidgetContents)
386        self.image_enhancement.setGeometry(QtCore.QRect(550, 70, 250, 22))
387        self.image_enhancement.setObjectName(_fromUtf8("image_enhancement"))
388        self.image_enhancement.stateChanged.connect(self.Image_enhancement)
389        self.deskew_image.setGeometry(QtCore.QRect(300,30, 241, 20))
390        self.deskew_image.setObjectName(_fromUtf8("deskew_image"))
391        self.deskew_image.stateChanged.connect(self.Deskew_image)
392        self.comboBox_Device_URI = QtGui.QComboBox(self.dockWidgetContents)
393        self.comboBox_Device_URI.setGeometry(QtCore.QRect(85, 30, 171, 41))
394        self.comboBox_Device_URI.setObjectName(_fromUtf8("comboBox_Device_URI"))
395        self.comboBox_Device_URI.currentIndexChanged.connect(self.comboBox_device_URI)
396
397        self.comboBox_path = QtGui.QComboBox(self.dockWidgetContents)
398        self.comboBox_path.setEditable(False)
399        self.comboBox_path.setGeometry(QtCore.QRect(85,390, 171, 41))
400        self.comboBox_path.setObjectName(_fromUtf8("comboBox_path"))
401        self.comboBox_path.currentIndexChanged.connect(self.comboBox_Path)
402
403        #self.layout = QtGui.QVBoxLayout(self.dockWidgetContents)
404
405
406        #self.s1 = QtGui.QSlider(Qt.Horizontal)
407        self.s1 = QtGui.QSlider(Qt.Horizontal,self.dockWidgetContents)
408        self.s1.setFocusPolicy(QtCore.Qt.NoFocus)
409        self.s1.setGeometry(660, 95, 100, 30)
410
411        #self.s1 = QSlider(Qt.Horizontal)
412        #self.s1.setGeometry(320, 460, 250, 22)
413        self.s1.setMinimum(0)
414        self.s1.setMaximum(255)
415        self.s1.setValue(100)
416
417        self.s1.setTickPosition(QSlider.TicksBelow)
418        self.s1.setTickInterval(10)
419        #self.s1.setSliderPosition(5)
420        #self.layout.addWidget(self.s1,0,QtCore.Qt.AlignRight)
421        #HpScan.addWidget(self.s1,0,QtCore.Qt.AlignRight)
422        self.s1.setEnabled(False)
423        self.s1.valueChanged.connect(self.valuechange_brightness)
424
425        self.s2 = QtGui.QSlider(Qt.Horizontal,self.dockWidgetContents)
426        self.s2.setFocusPolicy(QtCore.Qt.NoFocus)
427        self.s2.setGeometry(660, 125, 100, 30)
428        #self.s2 = QSlider(Qt.Horizontal)
429        #self.s2.setGeometry(1320, 480, 250, 22)
430        self.s2.setMinimum(0)
431        self.s2.setMaximum(255)
432        self.s2.setValue(100)
433        self.s2.setTickPosition(QSlider.TicksBelow)
434        self.s2.setTickInterval(10)
435
436        #self.layout.addWidget(self.s2,0,QtCore.Qt.AlignRight)
437        self.s2.setEnabled(False)
438
439        #self.layout.setObjectName(_fromUtf8("brightness"))
440        self.s2.valueChanged.connect(self.valuechange_contrast)
441        #self.setLayout(layout)
442
443        self.s3 = QtGui.QSlider(Qt.Horizontal,self.dockWidgetContents)
444        self.s3.setFocusPolicy(QtCore.Qt.NoFocus)
445        self.s3.setGeometry(660, 155, 100, 30)
446        #self.s3 = QSlider(Qt.Horizontal)
447        #self.s3.setGeometry(1320, 500, 250, 22)
448        self.s3.setMinimum(0)
449        self.s3.setMaximum(200)
450        self.s3.setValue(100)
451        self.s3.setTickPosition(QSlider.TicksBelow)
452        self.s3.setTickInterval(10)
453
454        #self.layout.addWidget(self.s3,0,QtCore.Qt.AlignRight)
455        self.s3.setEnabled(False)
456        self.s3.valueChanged.connect(self.valuechange_sharpness)
457
458        self.s4 = QtGui.QSlider(Qt.Horizontal,self.dockWidgetContents)
459        self.s4.setFocusPolicy(QtCore.Qt.NoFocus)
460        self.s4.setGeometry(660, 185, 100, 30)
461        #self.s4 = QSlider(Qt.Horizontal)
462        #self.s4.setGeometry(1320, 520, 250, 22)
463        self.s4.setMinimum(0)
464        self.s4.setMaximum(255)
465        self.s4.setValue(100)
466        self.s4.setTickPosition(QSlider.TicksBelow)
467        self.s4.setTickInterval(10)
468
469        #self.layout.addWidget(self.s4,0,QtCore.Qt.AlignRight)
470        self.s4.setEnabled(False)
471        self.s4.valueChanged.connect(self.valuechange_color)
472
473        self.s5 = QtGui.QSlider(Qt.Horizontal,self.dockWidgetContents)
474        self.s5.setFocusPolicy(QtCore.Qt.NoFocus)
475        self.s5.setGeometry(660, 385, 100, 30)
476        self.s5.setMinimum(0)
477        self.s5.setMaximum(99)
478        self.s5.setValue(49)
479        self.s5.setTickPosition(QSlider.TicksBelow)
480        self.s5.setTickInterval(10)
481
482        self.s5.setEnabled(False)
483        self.s5.valueChanged.connect(self.valuechange_range)
484
485
486        #self.pushButton_Cancel = QtGui.QPushButton(self.dockWidgetContents)
487        #self.pushButton_Cancel.setGeometry(QtCore.QRect(150, 270, 99, 41))
488        font = QtGui.QFont()
489        font.setBold(True)
490        font.setWeight(75)
491        #self.pushButton_Cancel.setFont(font)
492        #self.pushButton_Cancel.setObjectName(_fromUtf8("pushButton_Cancel"))
493        HpScan.setWidget(self.dockWidgetContents)
494
495        self.retranslateUi(HpScan)
496        QtCore.QMetaObject.connectSlotsByName(HpScan)
497        #self.initUI()
498    def valuechange_brightness(self):
499        #print "entered value changed brightness"
500        #global sizel1
501        self.brightness = True
502        self.sizel1 = self.s1.value()
503        #print "printing new value brightness"
504        #print self.sizel1
505    def valuechange_contrast(self):
506        #print "entered value changed contrast"
507        #global sizel2
508        self.contrast = True
509        self.sizel2 = self.s2.value()
510        #print "printing new value contrast"
511        #print self.sizel2
512    def valuechange_sharpness(self):
513        #print "entered value changed sharpness"
514        #global sizel3
515        self.sharpness = True
516        self.sizel3 = self.s3.value()
517        #print "printing new value sharpness"
518        #print self.sizel3
519    def valuechange_color(self):
520        #print "entered value changed color"
521        #global sizel4
522        self.color_value = True
523        self.sizel4 = self.s4.value()
524        #print "printing new value color"
525        #print self.sizel4
526	#def initUI(self):
527        #self.connect(self.pushButton_Scan,SIGNAL("clicked()"),self.scanButton_clicked())
528    def valuechange_range(self):
529        #print "entered value changed color"
530        #global sizel5
531        self.color_range = True
532        self.sizel5 = self.s5.value()
533    def comboBox_Path(self, new_path = None):
534        path = new_path
535
536    def selectFile(self):
537        global path
538        new_path = QFileDialog.getExistingDirectory(None)
539        if new_path:
540            #print "entered"
541            #print new_path
542            self.comboBox_Path(new_path)
543            self.comboBox_path.setItemText(0,_translate("HpScan", new_path, None))
544            path = new_path
545
546    def scanButton_clicked(self):
547        cmd = "hp-scan" + ' --device=' + self.device_uri + ' --filetype=' + self.file_type + ' --mode=' + self.color + ' --res=' + self.resolution + ' --size=' + self.size
548        if self.source == 'adf' or self.source == 'duplex':
549            cmd = cmd + ' --' + self.source
550        if self.source == 'adf-backside':
551            cmd = cmd + ' --duplex --backside'
552        if self.multi_pick.isChecked() == True:
553            cmd = cmd + ' --' + 'multipick'
554        if self.auto_orient.isChecked() == True:
555            cmd = cmd + ' --' + 'autoorient'
556        if self.crushed.isChecked() == True:
557            cmd = cmd + ' --' + 'crushed'
558        if self.bg_color_removal.isChecked() == True:
559            cmd = cmd + ' --' + 'bg_color_removal'
560        if self.punchhole_removal.isChecked() == True:
561            cmd = cmd + ' --' + 'punchhole_removal'
562        if self.color_dropout.isChecked() == True:
563            cmd = cmd + ' --' + 'color_dropout_red_value'+ '=' + str(self.dropout_color_red_value)
564        if self.color_dropout.isChecked() == True:
565            cmd = cmd + ' --' + 'color_dropout_green_value'+ '=' + str(self.dropout_color_green_value)
566        if self.color_dropout.isChecked() == True:
567            cmd = cmd + ' --' + 'color_dropout_blue_value'+ '=' + str(self.dropout_color_blue_value)
568        if self.color_dropout.isChecked() == True and self.color_range == True:
569            cmd = cmd + ' --' + 'color_range'+ '=' + str(self.sizel5)
570        if self.mixed_feed.isChecked() == True:
571            cmd = re.sub(r'\--size=.+\ ', '', cmd)
572            cmd = cmd + ' --' + 'mixedfeed'
573        if self.document_merge.isChecked() == True:
574            cmd = cmd + ' --' + 'docmerge'
575        if self.auto_crop.isChecked() == True:
576            cmd = cmd + ' --' + 'autocrop'
577        if self.deskew_image.isChecked() == True:
578            cmd = cmd + ' --' + 'deskew'
579        if self.blank_page.isChecked() == True:
580            cmd = cmd + ' --' + 'blankpage'
581        if self.document_merge_adf_flatbed.isChecked() == True:
582            cmd = cmd + ' --' + 'adf_fladbed_merge'
583        if self.image_enhancement.isChecked() == True and self.brightness == True:
584            cmd = cmd + ' --' + 'brightness' + '=' + str(self.sizel1)
585        if self.image_enhancement.isChecked() == True and self.contrast == True:
586            cmd = cmd + ' --' + 'contrast' + '=' + str(self.sizel2)
587        if self.image_enhancement.isChecked() == True and self.sharpness == True:
588            cmd = cmd + ' --' + 'sharpness' + '=' + str(self.sizel3)
589        if self.image_enhancement.isChecked() == True and self.color_value == True:
590            cmd = cmd + ' --' + 'color_value' + '=' + str(self.sizel4)
591        if self.batch_seperation.isChecked() == True:
592            if self.bp_blankpage.isChecked() == True:
593                cmd = cmd + ' --' + 'batchsepBP'
594            elif self.bp_barcode.isChecked() == True:
595                cmd = cmd + ' --' + 'batchsepBC'
596            else:
597                self.failureMessage("Select either barcode or blankpage option for separation")
598        #if self.bp_barcode.isChecked() == True:
599            #cmd = cmd + ' --' + 'batchsepBC'
600        cmd = cmd + ' --path=' + str(path)
601        cmd = cmd + ' --' + 'uiscan'
602        self.pushButton_Scan.setEnabled(False)
603        #print(cmd)
604        status = utils.run(cmd)
605        #print (status)
606        if status[0] == 2:
607            self.failureMessage(multipick_error_message)
608        elif status[0] == 3:
609            self.warningMessage(no_document_error_message)
610        elif status[0] == 4:
611            #print(status[1])
612            output_pdf = status[1].split("error: ", 1)[1]
613            output_pdf = output_pdf.split('.pdf', 1)[0]+".pdf"
614            ocr = False
615            if self.searchablePDF.isChecked() == True:
616                ocr = True
617            imageprocessing.merge_PDF_viewer(output_pdf,ocr)
618            self.pushButton_Scan.setEnabled(True)
619
620        elif status[0] == 5:
621            ocr = False
622            output_pdf = status[1].split("error: ", 1)[1]
623            #print output_pdf
624            output_pdf = output_pdf.split(']', 1)[0]+"]"
625            #print output_pdf
626            for char in output_pdf:
627                #print char
628                if char in "[']":
629                    output_pdf = output_pdf.replace(char,'')
630            output_pdf = output_pdf.split(',')
631            #print output_pdf
632            #print type(output_pdf)
633            ocr = False
634            for p in output_pdf:
635                if self.searchablePDF.isChecked() == True:
636                    ocr = True
637                imageprocessing.merge_PDF_viewer(p,ocr)
638                self.pushButton_Scan.setEnabled(True)
639        elif status[0] == 6:
640            self.failureMessage(convert_error_message)
641        elif status[0] == 7:
642            self.warningMessage(multipick_error_message)
643        self.pushButton_Scan.setEnabled(True)
644        #if status != 0:
645            #print("Cmd %s failed with status %d",cmd,status)
646        #sys.exit(app.exec_())
647
648
649    def msgbtn(self):
650        pass
651
652    def failureMessage(self,message):
653        msg = QMessageBox()
654        msg.setIcon(QMessageBox.Information)
655        msg.setText(message)
656        msg.setStandardButtons(QMessageBox.Ok)
657        msg.buttonClicked.connect(self.msgbtn)
658        retval = msg.exec_()
659    def warningMessage(self,message):
660        msg = QMessageBox()
661        msg.setIcon(QMessageBox.Information)
662        msg.setText(message)
663        msg.setStandardButtons(QMessageBox.Ok)
664        msg.buttonClicked.connect(self.msgbtn)
665        retval = msg.exec_()
666
667    def comboBox_TypeIndexChanged(self):
668        self.file_type = str(self.comboBox_Type.currentText()).lower()
669        #print self.file_type
670
671    def comboBox_SourceChanged(self,device):
672        supported_PageSizes =[]
673        for x in PAGE_SIZES:
674            if PAGE_SIZES[x][0]<self.devicelist[self.device_uri][1] and PAGE_SIZES[x][1]<self.devicelist[self.device_uri][2]:
675                supported_PageSizes.append(x)
676        self.comboBox_Papersize.clear()
677        self.comboBox_Papersize.addItems(supported_PageSizes)
678        self.comboBox_Papersize.currentIndexChanged.connect(self.comboBox_PaperSizeIndexChanged)
679
680
681        if device != '5000' and device != '7500' and device != '9120' and device != '8500' and device != '3500' and device != '4500' and device != '3000' and device != '7000' and device != '2000' and device != '2500' and device !='4000':
682            self.multi_pick_pri = False
683        else:
684            self.comboBox_Flatbed.clear()
685            self.comboBox_Flatbed.addItem(_fromUtf8(""))
686            self.comboBox_Flatbed.addItem(_fromUtf8(""))
687            self.comboBox_Flatbed.addItem(_fromUtf8(""))
688            if device == '5000' or device == '3000' or device == '7000' or device == '2000' or device == '4000':
689                if device == '2000':
690                    self.multi_pick_pri = False
691                    self.multi_pick.setEnabled(False)
692                self.comboBox_Flatbed.setItemText(0, _translate("HpScan", "Duplex", None))
693                self.comboBox_Flatbed.setItemText(1, _translate("HpScan", "ADF", None))
694                self.comboBox_Flatbed.setItemText(2, _translate("HpScan", "ADF-Backside", None))
695                self.comboBox_Flatbed.setCurrentIndex(1)
696            elif device == '7500' or device == '9120' or device == '8500' or device == '3500' or device == '4500' or device == '2500':
697                if device == '2500':
698                    self.multi_pick_pri = False
699                    self.multi_pick.setEnabled(False)
700                self.comboBox_Flatbed.addItem(_fromUtf8(""))
701                self.comboBox_Flatbed.setItemText(0, _translate("HpScan", "Flatbed", None))
702                self.comboBox_Flatbed.setItemText(1, _translate("HpScan", "ADF", None))
703                self.comboBox_Flatbed.setItemText(2, _translate("HpScan", "Duplex", None))
704                self.comboBox_Flatbed.setItemText(3, _translate("HpScan", "ADF-Backside", None))
705                self.comboBox_Flatbed.setCurrentIndex(1)
706            if device == '5000' or device == '7500' or device == '9120' or device == '8500' or device == '3500' or device == '4500' or device == '3000' or device == '7000' or device == '2000' or device == '2500' or device == '4000':
707                if device == '2500' or device == '2000':
708                    self.multi_pick_pri = False
709                    self.multi_pick.setEnabled(False)
710                self.source = str(self.comboBox_Flatbed.currentText()).lower()
711                self.comboBox_Flatbed.currentIndexChanged.connect(self.comboBox_SourceSelected)
712
713    def comboBox_SourceSelected(self):
714        self.source = str(self.comboBox_Flatbed.currentText()).lower()
715        if self.source == 'flatbed':
716            self.source = ''
717        #print self.source
718
719    def comboBox_ColorIndexChanged(self):
720        self.color = str(self.comboBox_Color.currentText()).lower()
721        #print self.color
722
723    def comboBox_ResIndexChanged(self):
724        self.resolution = str(self.comboBox_Resolution.currentText()).lower()
725        #print self.resolution
726
727    def comboBox_PaperSizeIndexChanged(self):
728        self.size = str(self.comboBox_Papersize.currentText())
729        #print self.size
730
731    def batch_Seperation(self):
732        if self.batch_seperation.isChecked() == True:
733            self.comboBox_Flatbed.clear()
734            self.comboBox_Flatbed.addItem(_fromUtf8(""))
735            self.comboBox_Flatbed.addItem(_fromUtf8(""))
736            self.comboBox_Flatbed.addItem(_fromUtf8(""))
737            self.comboBox_Flatbed.setItemText(0, _translate("HpScan", "Duplex", None))
738            self.comboBox_Flatbed.setItemText(1, _translate("HpScan", "ADF", None))
739            self.comboBox_Flatbed.setItemText(2, _translate("HpScan", "ADF-Backside", None))
740            self.comboBox_Flatbed.setCurrentIndex(1)
741            pyPlatform = platform.python_version()
742            num = pyPlatform.split('.')
743            if num[0] >= '3':
744                self.bp_barcode.setChecked(False)
745                self.bp_barcode.setEnabled(False)
746                self.CheckEnable()
747                self.bp_blankpage.setEnabled(True)
748                self.bp_blankpage.stateChanged.connect(self.bp_Blankpage)
749            else:
750                self.CheckEnable()
751                self.bp_blankpage.setEnabled(True)
752                if self.batchsepBC_pri == True:
753                    self.bp_barcode.setEnabled(True)
754                #self.blank_page.setChecked(False)
755                #self.blank_page.setText(_translate("HpScan", "Blank page seperation removal ", None))
756                #if pyPlatform < '3':
757                self.bp_barcode.stateChanged.connect(self.bp_Barcode)
758                self.bp_blankpage.stateChanged.connect(self.bp_Blankpage)
759        else:
760            if (re.search(r'_7500', self.device_uri)) or (re.search(r'_N9120', self.device_uri)) or (re.search(r'_8500fn2', self.device_uri)) or (re.search(r'_3500_f1', self.device_uri)) or (re.search(r'_4500_fn1', self.device_uri)) or (re.search(r'hpgt2500', self.device_uri)):
761                self.comboBox_Flatbed.clear()
762                self.comboBox_Flatbed.addItem(_fromUtf8(""))
763                self.comboBox_Flatbed.addItem(_fromUtf8(""))
764                self.comboBox_Flatbed.addItem(_fromUtf8(""))
765                self.comboBox_Flatbed.addItem(_fromUtf8(""))
766                self.comboBox_Flatbed.setItemText(0, _translate("HpScan", "Flatbed", None))
767                self.comboBox_Flatbed.setItemText(1, _translate("HpScan", "ADF", None))
768                self.comboBox_Flatbed.setItemText(2, _translate("HpScan", "Duplex", None))
769                self.comboBox_Flatbed.setItemText(3, _translate("HpScan", "ADF-Backside", None))
770                self.comboBox_Flatbed.setCurrentIndex(1)
771            elif (re.search(r'_5000_', self.device_uri)) or (re.search(r'_7000_s3', self.device_uri)) or (re.search(r'_3000_s3', self.device_uri)) or (re.search(r'hp2000S1', self.device_uri)) or (re.search(r'_2000_s2', self.device_uri)) or (re.search(r'7000_snw1', self.device_uri)) or (re.search(r'4000_snw1', self.device_uri)) or (re.search(r'_3000_s4', self.device_uri)) or (re.search(r'_5000_s5', self.device_uri)):
772                self.comboBox_Flatbed.clear()
773                self.comboBox_Flatbed.addItem(_fromUtf8(""))
774                self.comboBox_Flatbed.addItem(_fromUtf8(""))
775                self.comboBox_Flatbed.addItem(_fromUtf8(""))
776                self.comboBox_Flatbed.setItemText(0, _translate("HpScan", "ADF", None))
777                self.comboBox_Flatbed.setItemText(1, _translate("HpScan", "Duplex", None))
778                self.comboBox_Flatbed.setItemText(2, _translate("HpScan", "ADF-Backside", None))
779                self.comboBox_Flatbed.setCurrentIndex(0)
780            #if pyPlatform < 3:
781            self.CheckEnable()
782            self.bp_blankpage.setChecked(False)
783            self.bp_barcode.setChecked(False)
784            self.bp_blankpage.setEnabled(False)
785            self.bp_barcode.setEnabled(False)
786            #self.blank_page.setChecked(False)
787            #self.blank_page.setEnabled(True)
788            #self.blank_page.setText(_translate("HpScan", "Delete blank page ", None))
789
790    def bp_Barcode(self):
791        pyPlaform = platform.python_version()
792        num = pyPlatform.split('.')
793        if num[0] >= '3':
794            self.bp_barcode.setEnabled(False)
795            self.comboBox_Barcode_Type.setEnabled(False)
796        else:
797            if self.bp_barcode.isChecked() == True:
798                self.comboBox_Barcode_Type.setEnabled(True)
799                self.bp_blankpage.setEnabled(False)
800            else:
801                self.comboBox_Barcode_Type.setEnabled(False)
802                self.bp_blankpage.setEnabled(True)
803
804    def bp_Blankpage(self):
805        if self.bp_blankpage.isChecked() == True:
806            if self.blank_page_pri == True:
807                self.blank_page.setEnabled(True)
808            self.bp_barcode.setEnabled(False)
809            self.blank_page.setChecked(False)
810            self.blank_page.setText(_translate("HpScan", "Blank page seperation removal ", None))
811        else:
812            if self.blank_page_pri == True:
813                self.blank_page.setEnabled(True)
814            pyPlatform = platform.python_version()
815            num = pyPlatform.split('.')
816            if num[0] >= '3':
817                self.bp_barcode.setEnabled(False)
818            else:
819                if self.batchsepBC_pri == True:
820                    self.bp_barcode.setEnabled(True)
821            self.blank_page.setChecked(False)
822            #self.blank_page.setEnabled(True)
823            self.blank_page.setText(_translate("HpScan", "Delete blank page ", None))
824
825    def Multi_pick(self):
826        if self.multi_pick.isChecked() == True:
827            self.comboBox_Flatbed.clear()
828            self.comboBox_Flatbed.addItem(_fromUtf8(""))
829            self.comboBox_Flatbed.addItem(_fromUtf8(""))
830            self.comboBox_Flatbed.addItem(_fromUtf8(""))
831            self.comboBox_Flatbed.setItemText(0, _translate("HpScan", "Duplex", None))
832            self.comboBox_Flatbed.setItemText(1, _translate("HpScan", "ADF", None))
833            self.comboBox_Flatbed.setItemText(2, _translate("HpScan", "ADF-Backside", None))
834            self.comboBox_Flatbed.setCurrentIndex(1)
835            if self.multi_pick_pri == True:
836                self.multi_pick.setEnabled(True)
837            self.CheckEnable()
838        else:
839            if (re.search(r'_7500', self.device_uri)) or (re.search(r'_N9120', self.device_uri)) or (re.search(r'_8500fn2', self.device_uri)) or (re.search(r'_3500_f1', self.device_uri)) or (re.search(r'_4500_fn1', self.device_uri)) or (re.search(r'hpgt2500', self.device_uri)):
840                self.comboBox_Flatbed.clear()
841                self.comboBox_Flatbed.addItem(_fromUtf8(""))
842                self.comboBox_Flatbed.addItem(_fromUtf8(""))
843                self.comboBox_Flatbed.addItem(_fromUtf8(""))
844                self.comboBox_Flatbed.addItem(_fromUtf8(""))
845                self.comboBox_Flatbed.setItemText(0, _translate("HpScan", "Flatbed", None))
846                self.comboBox_Flatbed.setItemText(1, _translate("HpScan", "ADF", None))
847                self.comboBox_Flatbed.setItemText(2, _translate("HpScan", "Duplex", None))
848                self.comboBox_Flatbed.setItemText(3, _translate("HpScan", "ADF-Backside", None))
849                self.comboBox_Flatbed.setCurrentIndex(1)
850            elif (re.search(r'_5000_', self.device_uri)) or (re.search(r'_7000_s3', self.device_uri)) or (re.search(r'_3000_s3', self.device_uri)) or (re.search(r'hp2000S1', self.device_uri)) or (re.search(r'_2000_s2', self.device_uri)) or (re.search(r'7000_snw1', self.device_uri)) or (re.search(r'4000_snw1', self.device_uri)) or (re.search(r'_3000_s4', self.device_uri)) or (re.search(r'_5000_s5', self.device_uri)):
851                self.comboBox_Flatbed.clear()
852                self.comboBox_Flatbed.addItem(_fromUtf8(""))
853                self.comboBox_Flatbed.addItem(_fromUtf8(""))
854                self.comboBox_Flatbed.addItem(_fromUtf8(""))
855                self.comboBox_Flatbed.setItemText(0, _translate("HpScan", "ADF", None))
856                self.comboBox_Flatbed.setItemText(1, _translate("HpScan", "Duplex", None))
857                self.comboBox_Flatbed.setItemText(2, _translate("HpScan", "ADF-Backside", None))
858                self.comboBox_Flatbed.setCurrentIndex(0)
859            self.CheckEnable()
860
861    def Auto_orient(self):
862        if self.auto_orient.isChecked() == True:
863            if self.auto_orient_pri == True:
864                self.auto_orient.setEnabled(True)
865            self.CheckEnable()
866        else:
867            self.CheckEnable()
868
869    def CheckEnable(self):
870        if self.auto_orient.isChecked() == False and self.auto_crop.isChecked() == False and self.image_enhancement.isChecked() == False and self.deskew_image.isChecked() == False and self.blank_page.isChecked() == False and self.document_merge_adf_flatbed.isChecked() == False and self.multi_pick.isChecked() == False and self.batch_seperation.isChecked() == False and self.searchablePDF.isChecked() == False and self.crushed.isChecked()== False and self.bg_color_removal.isChecked() == False and self.bg_color_removal.isChecked() == False and self.color_dropout.isChecked() == False:
871            #self.crushed.setChecked(False)
872            self.mixed_feed.setChecked(False)
873            self.document_merge.setChecked(False)
874            #self.bg_color_removal.setChecked(False)
875            #self.punchhole_removal.setChecked(False)
876            #self.color_dropout.setChecked(False)
877            #if self.crushed_pri == True:
878                #self.crushed.setEnabled(True)
879            if self.mixed_feed_pri == True:
880                self.mixed_feed.setEnabled(True)
881            if self.document_merge_pri == True:
882                self.document_merge.setEnabled(True)
883            #if self.bg_color_removal_pri == True:
884                #self.bg_color_removal.setEnabled(True)
885            #if self.punchhole_removal_pri == True:
886                #self.punchhole_removal.setEnabled(True)
887            #if self.color_dropout_pri == True:
888                #self.color_dropout.setEnabled(True)
889        else:
890            #self.crushed.setChecked(False)
891            self.mixed_feed.setChecked(False)
892            self.document_merge.setChecked(False)
893            #self.bg_color_removal.setChecked(False)
894            #self.punchhole_removal.setChecked(False)
895            #self.color_dropout.setChecked(False)
896            #self.crushed.setEnabled(False)
897            self.mixed_feed.setEnabled(False)
898            self.document_merge.setEnabled(False)
899            #self.bg_color_removal.setEnabled(False)
900            #self.punchhole_removal.setEnabled(False)
901            #self.color_dropout.setEnabled(False)
902
903    def DisableAllScanjet(self):
904        self.auto_orient.setChecked(False)
905        self.auto_crop.setChecked(False)
906        self.image_enhancement.setChecked(False)
907        self.document_merge_adf_flatbed.setChecked(False)
908        self.multi_pick.setChecked(False)
909        self.batch_seperation.setChecked(False)
910        self.deskew_image.setChecked(False)
911        self.blank_page.setChecked(False)
912        self.crushed.setChecked(False)
913        self.bg_color_removal.setChecked(False)
914        self.punchhole_removal.setChecked(False)
915        self.color_dropout.setChecked(False)
916        self.mixed_feed.setChecked(False)
917        self.document_merge.setChecked(False)
918        self.searchablePDF.setChecked(False)
919        self.auto_orient.setEnabled(False)
920        self.auto_crop.setEnabled(False)
921        self.image_enhancement.setEnabled(False)
922        self.document_merge_adf_flatbed.setEnabled(False)
923        self.multi_pick.setEnabled(False)
924        self.batch_seperation.setEnabled(False)
925        self.deskew_image.setEnabled(False)
926        self.blank_page.setEnabled(False)
927        self.crushed.setEnabled(False)
928        self.bg_color_removal.setEnabled(False)
929        self.punchhole_removal.setEnabled(False)
930        self.color_dropout.setEnabled(False)
931        self.mixed_feed.setEnabled(False)
932        self.document_merge.setEnabled(False)
933        self.searchablePDF.setEnabled(False)
934
935    def DisableAll(self):
936        if self.mixed_feed.isChecked() == True or self.document_merge.isChecked() == True:
937            self.auto_orient.setChecked(False)
938            self.auto_crop.setChecked(False)
939            self.image_enhancement.setChecked(False)
940            self.document_merge_adf_flatbed.setChecked(False)
941            self.multi_pick.setChecked(False)
942            self.batch_seperation.setChecked(False)
943            self.deskew_image.setChecked(False)
944            self.blank_page.setChecked(False)
945            self.searchablePDF.setChecked(False)
946            self.crushed.setChecked(False)
947            self.bg_color_removal.setChecked(False)
948            self.punchhole_removal.setChecked(False)
949            self.color_dropout.setChecked(False)
950            self.auto_orient.setEnabled(False)
951            self.auto_crop.setEnabled(False)
952            self.image_enhancement.setEnabled(False)
953            self.document_merge_adf_flatbed.setEnabled(False)
954            self.multi_pick.setEnabled(False)
955            self.batch_seperation.setEnabled(False)
956            self.deskew_image.setEnabled(False)
957            self.blank_page.setEnabled(False)
958            self.searchablePDF.setEnabled(False)
959            self.crushed.setEnabled(False)
960            self.bg_color_removal.setEnabled(False)
961            self.punchhole_removal.setEnabled(False)
962            self.color_dropout.setEnabled(False)
963        else:
964            self.auto_orient.setChecked(False)
965            self.auto_crop.setChecked(False)
966            self.image_enhancement.setChecked(False)
967            self.document_merge_adf_flatbed.setChecked(False)
968            self.multi_pick.setChecked(False)
969            self.batch_seperation.setChecked(False)
970            self.deskew_image.setChecked(False)
971            self.blank_page.setChecked(False)
972            self.searchablePDF.setChecked(False)
973            self.crushed.setChecked(False)
974            self.bg_color_removal.setChecked(False)
975            self.punchhole_removal.setChecked(False)
976            self.color_dropout.setChecked(False)
977            if self.auto_orient_pri == True:
978                self.auto_orient.setEnabled(True)
979            if self.searchablePDF_pri == True:
980                self.searchablePDF.setEnabled(True)
981            if self.auto_crop_pri == True:
982                #print ("auto_crop_pri is still true")
983                self.auto_crop.setEnabled(True)
984            if self.image_enhancement_pri == True:
985                self.image_enhancement.setEnabled(True)
986            if self.document_merge_adf_flatbed_pri == True:
987                self.document_merge_adf_flatbed.setEnabled(True)
988            if self.multi_pick_pri == True:
989                self.multi_pick.setEnabled(True)
990            #if self.batch_seperation_pri == True:
991            self.batch_seperation.setEnabled(True)
992            if self.deskew_image_pri == True:
993                self.deskew_image.setEnabled(True)
994            if self.blank_page_pri == True:
995                self.blank_page.setEnabled(True)
996            if self.bg_color_removal_pri == True:
997                self.bg_color_removal.setEnabled(True)
998            if self.punchhole_removal_pri == True:
999                self.punchhole_removal.setEnabled(True)
1000            if self.color_dropout_pri == True:
1001                self.color_dropout.setEnabled(True)
1002            if self.crushed_pri == True:
1003                self.crushed.setEnabled(True)
1004
1005    def Crushed(self):
1006        if self.crushed.isChecked() == True:
1007            if self.crushed_pri == True:
1008                self.crushed.setEnabled(True)
1009            self.CheckEnable()
1010            #self.comboBox_Color.setCurrentIndex(1)
1011            #self.comboBox_Color.setEnabled(False)
1012            '''self.DisableAll()
1013            self.mixed_feed.setChecked(False)
1014            self.document_merge.setChecked(False)
1015            self.mixed_feed.setEnabled(False)
1016            self.document_merge.setEnabled(False)
1017            self.bg_color_removal.setChecked(False)
1018            self.bg_color_removal.setEnabled(False)
1019            self.punchhole_removal.setChecked(False)
1020            self.punchhole_removal.setEnabled(False)
1021            self.color_dropout.setChecked(False)
1022            self.color_dropout.setEnabled(False)'''
1023        else:
1024            self.CheckEnable()
1025            #self.comboBox_Color.setEnabled(True)
1026            '''self.DisableAll()
1027            self.mixed_feed.setChecked(False)
1028            self.document_merge.setChecked(False)
1029            self.bg_color_removal.setChecked(False)
1030            self.punchhole_removal.setChecked(False)
1031            self.color_dropout.setChecked(False)
1032            if self.mixed_feed_pri == True:
1033                self.mixed_feed.setEnabled(True)
1034            if self.document_merge_pri == True:
1035                self.document_merge.setEnabled(True)
1036            if self.bg_color_removal_pri == True:
1037                self.bg_color_removal.setEnabled(True)
1038            if self.punchhole_removal_pri == True:
1039                self.punchhole_removal.setEnabled(True)
1040            if self.color_dropout_pri == True:
1041                self.color_dropout.setEnabled(True)'''
1042
1043
1044    def SearchablePDF(self):
1045        if self.searchablePDF.isChecked() == True:
1046            self.searchablePDF.setEnabled(True)
1047            self.comboBox_Type.setCurrentIndex(2)
1048            self.comboBox_Type.setEnabled(False)
1049            if self.searchablePDF_pri == True:
1050                self.searchablePDF.setEnabled(True)
1051            self.CheckEnable()
1052        else:
1053            self.comboBox_Type.setEnabled(True)
1054            self.CheckEnable()
1055
1056
1057    def Auto_crop(self):
1058        if self.auto_crop.isChecked() == True:
1059            if self.auto_crop_pri == True:
1060                self.auto_crop.setEnabled(True)
1061            self.CheckEnable()
1062        else:
1063            self.CheckEnable()
1064
1065    def Deskew_image(self):
1066        if self.deskew_image.isChecked() == True:
1067            if self.deskew_image_pri == True:
1068                self.deskew_image.setEnabled(True)
1069            self.CheckEnable()
1070        else:
1071            self.CheckEnable()
1072
1073    def Blank_page(self):
1074        if self.blank_page.isChecked() == True:
1075            if self.blank_page_pri == True:
1076                self.blank_page.setEnabled(True)
1077            self.CheckEnable()
1078        else:
1079            self.CheckEnable()
1080
1081    def Mixed_feed(self):
1082        if self.mixed_feed.isChecked() == True:
1083            self.comboBox_Flatbed.clear()
1084            self.comboBox_Flatbed.addItem(_fromUtf8(""))
1085            self.comboBox_Flatbed.addItem(_fromUtf8(""))
1086            self.comboBox_Flatbed.addItem(_fromUtf8(""))
1087            self.comboBox_Flatbed.setItemText(0, _translate("HpScan", "Duplex", None))
1088            self.comboBox_Flatbed.setItemText(1, _translate("HpScan", "ADF", None))
1089            self.comboBox_Flatbed.setItemText(2, _translate("HpScan", "ADF-Backside", None))
1090            self.comboBox_Flatbed.setCurrentIndex(1)
1091            if self.mixed_feed_pri == True:
1092                self.mixed_feed.setEnabled(True)
1093            self.DisableAll()
1094            self.document_merge.setChecked(False)
1095            self.crushed.setChecked(False)
1096            self.document_merge.setEnabled(False)
1097            self.crushed.setEnabled(False)
1098            self.comboBox_Papersize.setEnabled(False)
1099            self.bg_color_removal.setChecked(False)
1100            self.bg_color_removal.setEnabled(False)
1101            self.punchhole_removal.setChecked(False)
1102            self.punchhole_removal.setEnabled(False)
1103            self.color_dropout.setChecked(False)
1104            self.color_dropout.setEnabled(False)
1105        else:
1106            if (re.search(r'_7500', self.device_uri)) or (re.search(r'_N9120', self.device_uri)) or (re.search(r'_8500fn2', self.device_uri)) or (re.search(r'_3500_f1', self.device_uri)) or (re.search(r'_4500_fn1', self.device_uri)) or (re.search(r'2500', self.device_uri)):
1107                self.comboBox_Flatbed.clear()
1108                self.comboBox_Flatbed.addItem(_fromUtf8(""))
1109                self.comboBox_Flatbed.addItem(_fromUtf8(""))
1110                self.comboBox_Flatbed.addItem(_fromUtf8(""))
1111                self.comboBox_Flatbed.addItem(_fromUtf8(""))
1112                self.comboBox_Flatbed.setItemText(0, _translate("HpScan", "Flatbed", None))
1113                self.comboBox_Flatbed.setItemText(1, _translate("HpScan", "ADF", None))
1114                self.comboBox_Flatbed.setItemText(2, _translate("HpScan", "Duplex", None))
1115                self.comboBox_Flatbed.setItemText(3, _translate("HpScan", "ADF-Backside", None))
1116                self.comboBox_Flatbed.setCurrentIndex(1)
1117            elif (re.search(r'_5000_', self.device_uri)) or (re.search(r'_7000_s3', self.device_uri)) or (re.search(r'_3000_s3', self.device_uri)) or (re.search(r'hp2000S1', self.device_uri)) or (re.search(r'_2000_s2', self.device_uri)) or (re.search(r'7000_snw1', self.device_uri)) or (re.search(r'4000_snw1', self.device_uri)) or (re.search(r'_3000_s4', self.device_uri)) or (re.search(r'_5000_s5', self.device_uri)):
1118                self.comboBox_Flatbed.clear()
1119                self.comboBox_Flatbed.addItem(_fromUtf8(""))
1120                self.comboBox_Flatbed.addItem(_fromUtf8(""))
1121                self.comboBox_Flatbed.addItem(_fromUtf8(""))
1122                self.comboBox_Flatbed.setItemText(0, _translate("HpScan", "ADF", None))
1123                self.comboBox_Flatbed.setItemText(1, _translate("HpScan", "Duplex", None))
1124                self.comboBox_Flatbed.setItemText(2, _translate("HpScan", "ADF-Backside", None))
1125                self.comboBox_Flatbed.setCurrentIndex(0)
1126            self.document_merge.setChecked(False)
1127            self.DisableAll()
1128            self.crushed.setChecked(False)
1129            self.bg_color_removal.setChecked(False)
1130            self.punchhole_removal.setChecked(False)
1131            self.color_dropout.setChecked(False)
1132            if self.document_merge_pri == True:
1133                self.document_merge.setEnabled(True)
1134            if self.crushed_pri == True:
1135                self.crushed.setEnabled(True)
1136            if self.mixed_feed_pri == True:
1137                self.mixed_feed.setEnabled(True)
1138            self.comboBox_Papersize.setEnabled(True)
1139            if self.bg_color_removal_pri == True:
1140                self.bg_color_removal.setEnabled(True)
1141            if self.punchhole_removal_pri == True:
1142                self.punchhole_removal.setEnabled(True)
1143            if self.color_dropout_pri == True:
1144                self.color_dropout.setEnabled(True)
1145
1146    def Bg_color_removal(self):
1147        if self.bg_color_removal.isChecked() == True:
1148            if self.bg_color_removal_pri == True:
1149                self.bg_color_removal.setEnabled(True)
1150            self.CheckEnable()
1151            '''self.document_merge.setChecked(False)
1152            self.crushed.setChecked(False)
1153            self.document_merge.setEnabled(False)
1154            self.crushed.setEnabled(False)
1155            self.mixed_feed.setChecked(False)
1156            self.mixed_feed.setEnabled(False)
1157            self.punchhole_removal.setChecked(False)
1158            self.punchhole_removal.setEnabled(False)
1159            self.color_dropout.setChecked(False)
1160            self.color_dropout.setEnabled(False)
1161            #self.comboBox_Papersize.setEnabled(False)'''
1162        else:
1163            self.CheckEnable()
1164            '''self.document_merge.setChecked(False)
1165            self.DisableAll()
1166            self.crushed.setChecked(False)
1167            if self.document_merge_pri == True:
1168                self.document_merge.setEnabled(True)
1169            if self.crushed_pri == True:
1170                self.crushed.setEnabled(True)
1171            if self.mixed_feed_pri == True:
1172                self.mixed_feed.setEnabled(True)
1173            if self.bg_color_removal_pri == True:
1174                self.bg_color_removal.setEnabled(True)
1175            if self.punchhole_removal_pri == True:
1176                self.punchhole_removal.setEnabled(True)
1177            if self.color_dropout_pri == True:
1178                self.color_dropout.setEnabled(True)
1179            #self.comboBox_Papersize.setEnabled(True)'''
1180
1181    def Punchhole_removal(self):
1182        if self.punchhole_removal.isChecked() == True:
1183            if self.punchhole_removal_pri == True:
1184                self.punchhole_removal.setEnabled(True)
1185            self.CheckEnable()
1186            '''self.DisableAll()
1187            self.document_merge.setChecked(False)
1188            self.crushed.setChecked(False)
1189            self.document_merge.setEnabled(False)
1190            self.crushed.setEnabled(False)
1191            self.mixed_feed.setChecked(False)
1192            self.mixed_feed.setEnabled(False)
1193            self.bg_color_removal.setChecked(False)
1194            self.bg_color_removal.setEnabled(False)
1195            self.color_dropout.setChecked(False)
1196            self.color_dropout.setEnabled(False)
1197            #self.comboBox_Papersize.setEnabled(False)'''
1198        else:
1199            self.CheckEnable()
1200            '''self.document_merge.setChecked(False)
1201            self.DisableAll()
1202            self.crushed.setChecked(False)
1203            if self.document_merge_pri == True:
1204                self.document_merge.setEnabled(True)
1205            if self.crushed_pri == True:
1206                self.crushed.setEnabled(True)
1207            if self.mixed_feed_pri == True:
1208                self.mixed_feed.setEnabled(True)
1209            if self.punchhole_removal_pri == True:
1210                self.punchhole_removal.setEnabled(True)
1211            if self.color_dropout_pri == True:
1212                self.color_dropout.setEnabled(True)
1213            if self.bg_color_removal_pri == True:
1214                self.bg_color_removal.setEnabled(True)
1215            #self.comboBox_Papersize.setEnabled(True)'''
1216
1217    def Color_dropout(self):
1218        if self.color_dropout.isChecked() == True:
1219            if self.color_dropout_pri == True:
1220                self.color_dropout.setEnabled(True)
1221            '''self.DisableAll()
1222            self.document_merge.setChecked(False)
1223            self.crushed.setChecked(False)
1224            self.document_merge.setEnabled(False)
1225            self.crushed.setEnabled(False)
1226            self.mixed_feed.setChecked(False)
1227            self.mixed_feed.setEnabled(False)
1228            self.bg_color_removal.setChecked(False)
1229            self.bg_color_removal.setEnabled(False)
1230            self.punchhole_removal.setChecked(False)
1231            self.punchhole_removal.setEnabled(False)'''
1232            color = QtGui.QColorDialog.getColor()
1233            self.s5.setEnabled(True)
1234            RGBVALUE = list(color.getRgb())
1235            self.dropout_color_red_value = str(RGBVALUE[0])
1236            self.dropout_color_green_value = str(RGBVALUE[1])
1237            self.dropout_color_blue_value = str(RGBVALUE[2])
1238            #print (RGBVALUE)
1239            #self.comboBox_Papersize.setEnabled(False)
1240        else:
1241            #self.document_merge.setChecked(False)
1242            #self.DisableAll()
1243            #self.crushed.setChecked(False)
1244            self.CheckEnable()
1245            self.s5.setEnabled(False)
1246            '''if self.document_merge_pri == True:
1247                self.document_merge.setEnabled(True)
1248            if self.crushed_pri == True:
1249                self.crushed.setEnabled(True)
1250            if self.mixed_feed_pri == True:
1251                self.mixed_feed.setEnabled(True)
1252            if self.punchhole_removal_pri == True:
1253                self.punchhole_removal.setEnabled(True)
1254            if self.color_dropout_pri == True:
1255                self.color_dropout.setEnabled(True)
1256            if self.bg_color_removal_pri == True:
1257                self.bg_color_removal.setEnabled(True)
1258            #self.comboBox_Papersize.setEnabled(True)'''
1259
1260    def Document_merge(self):
1261        if self.document_merge.isChecked() == True:
1262            if self.document_merge_pri == True:
1263                self.document_merge.setEnabled(True)
1264            self.DisableAll()
1265            self.mixed_feed.setChecked(False)
1266            self.crushed.setChecked(False)
1267            self.mixed_feed.setEnabled(False)
1268            self.crushed.setEnabled(False)
1269            self.bg_color_removal.setChecked(False)
1270            self.bg_color_removal.setEnabled(False)
1271            self.punchhole_removal.setChecked(False)
1272            self.punchhole_removal.setEnabled(False)
1273            self.color_dropout.setChecked(False)
1274            self.color_dropout.setEnabled(False)
1275            #name = re.search(r'_5000_', self.device_uri)
1276            #if name:
1277            if re.search(r'_5000_', self.device_uri) or re.search(r'_7000_s3', self.device_uri) or re.search(r'_3000_s3', self.device_uri) or re.search(r'hp2000S1', self.device_uri) or re.search(r'_2000_s2', self.device_uri) or re.search(r'7000_snw1', self.device_uri) or re.search(r'4000_snw1', self.device_uri) or re.search(r'_3000_s4', self.device_uri) or re.search(r'_5000_s5', self.device_uri):
1278                self.comboBox_Flatbed.clear()
1279                self.comboBox_Flatbed.addItem(_fromUtf8(""))
1280                self.comboBox_Flatbed.addItem(_fromUtf8(""))
1281                self.comboBox_Flatbed.addItem(_fromUtf8(""))
1282                self.comboBox_Flatbed.setItemText(0, _translate("HpScan", "ADF", None))
1283                self.comboBox_Flatbed.setItemText(1, _translate("HpScan", "Duplex", None))
1284                self.comboBox_Flatbed.setItemText(2, _translate("HpScan", "ADF-Backside", None))
1285                self.comboBox_Flatbed.setCurrentIndex(1)
1286            elif (re.search(r'_7500', self.device_uri)) or (re.search(r'_N9120', self.device_uri)) or (re.search(r'_8500fn2', self.device_uri)) or (re.search(r'_3500_f1', self.device_uri)) or (re.search(r'_4500_fn1', self.device_uri)) or (re.search(r'2500', self.device_uri)):
1287                self.comboBox_Flatbed.clear()
1288                self.comboBox_Flatbed.addItem(_fromUtf8(""))
1289                self.comboBox_Flatbed.addItem(_fromUtf8(""))
1290                self.comboBox_Flatbed.addItem(_fromUtf8(""))
1291                self.comboBox_Flatbed.addItem(_fromUtf8(""))
1292                self.comboBox_Flatbed.setItemText(0, _translate("HpScan", "Flatbed", None))
1293                self.comboBox_Flatbed.setItemText(1, _translate("HpScan", "ADF", None))
1294                self.comboBox_Flatbed.setItemText(2, _translate("HpScan", "Duplex", None))
1295                self.comboBox_Flatbed.setItemText(3, _translate("HpScan", "ADF-Backside", None))
1296                self.comboBox_Flatbed.setCurrentIndex(2)
1297            self.comboBox_Flatbed.setEnabled(False)
1298            self.source = str(self.comboBox_Flatbed.currentText()).lower()
1299        else:
1300            self.DisableAll()
1301            self.mixed_feed.setChecked(False)
1302            self.crushed.setChecked(False)
1303            self.bg_color_removal.setChecked(False)
1304            self.punchhole_removal.setChecked(False)
1305            self.color_dropout.setChecked(False)
1306            if self.mixed_feed_pri == True:
1307                self.mixed_feed.setEnabled(True)
1308            if self.crushed_pri == True:
1309                self.crushed.setEnabled(True)
1310            if self.bg_color_removal_pri == True:
1311                self.bg_color_removal.setEnabled(True)
1312            if self.punchhole_removal_pri == True:
1313                self.punchhole_removal.setEnabled(True)
1314            if self.color_dropout_pri == True:
1315                self.color_dropout.setEnabled(True)
1316            self.comboBox_Flatbed.setEnabled(True)
1317            if (re.search(r'_7500', self.device_uri)) or (re.search(r'_N9120', self.device_uri)) or (re.search(r'_8500fn2', self.device_uri)) or (re.search(r'_3500_f1', self.device_uri)) or (re.search(r'_4500_fn1', self.device_uri)) or (re.search(r'2500', self.device_uri)):
1318                self.comboBox_Flatbed.clear()
1319                self.comboBox_Flatbed.addItem(_fromUtf8(""))
1320                self.comboBox_Flatbed.addItem(_fromUtf8(""))
1321                self.comboBox_Flatbed.addItem(_fromUtf8(""))
1322                self.comboBox_Flatbed.addItem(_fromUtf8(""))
1323                self.comboBox_Flatbed.setItemText(0, _translate("HpScan", "Flatbed", None))
1324                self.comboBox_Flatbed.setItemText(1, _translate("HpScan", "ADF", None))
1325                self.comboBox_Flatbed.setItemText(2, _translate("HpScan", "Duplex", None))
1326                self.comboBox_Flatbed.setItemText(3, _translate("HpScan", "ADF-Backside", None))
1327                self.comboBox_Flatbed.setCurrentIndex(1)
1328            elif (re.search(r'_5000_', self.device_uri)) or (re.search(r'_7000_s3', self.device_uri)) or (re.search(r'_3000_s3', self.device_uri)) or (re.search(r'hp2000S1', self.device_uri)) or (re.search(r'_2000_s2', self.device_uri)) or (re.search(r'7000_snw1', self.device_uri)) or (re.search(r'4000_snw1', self.device_uri)) or (re.search(r'_3000_s4', self.device_uri)) or (re.search(r'_5000_s5', self.device_uri)):
1329                self.comboBox_Flatbed.clear()
1330                self.comboBox_Flatbed.addItem(_fromUtf8(""))
1331                self.comboBox_Flatbed.addItem(_fromUtf8(""))
1332                self.comboBox_Flatbed.addItem(_fromUtf8(""))
1333                self.comboBox_Flatbed.setItemText(0, _translate("HpScan", "ADF", None))
1334                self.comboBox_Flatbed.setItemText(1, _translate("HpScan", "Duplex", None))
1335                self.comboBox_Flatbed.setItemText(2, _translate("HpScan", "ADF-Backside", None))
1336                self.comboBox_Flatbed.setCurrentIndex(0)
1337            self.source = str(self.comboBox_Flatbed.currentText()).lower()
1338
1339    def Document_merge_adf_flatbed(self):
1340        if self.document_merge_adf_flatbed.isChecked() == True:
1341            self.CheckEnable()
1342            if self.document_merge_adf_flatbed_pri == True:
1343                self.document_merge_adf_flatbed.setEnabled(True)
1344            self.comboBox_Type.setCurrentIndex(2)
1345            self.comboBox_Type.setEnabled(False)
1346            self.pushButton_Merge.setEnabled(True)
1347        else:
1348            self.CheckEnable()
1349            self.pushButton_Merge.setEnabled(False)
1350            self.comboBox_Type.setCurrentIndex(0)
1351            self.comboBox_Type.setEnabled(True)
1352
1353
1354
1355    def Image_enhancement(self):
1356        if self.image_enhancement.isChecked() == True:
1357            self.CheckEnable()
1358            if self.image_enhancement_pri == True:
1359                self.image_enhancement.setEnabled(True)
1360            self.s1.setEnabled(True)
1361            self.s2.setEnabled(True)
1362            self.s3.setEnabled(True)
1363            self.s4.setEnabled(True)
1364        else:
1365            #self.image_enhancement.setEnabled(False)
1366            self.CheckEnable()
1367            self.s1.setEnabled(False)
1368            self.s2.setEnabled(False)
1369            self.s3.setEnabled(False)
1370            self.s4.setEnabled(False)
1371
1372    def mergeButton_clicked(self):
1373        from PyPDF2 import PdfFileReader, PdfFileMerger
1374        path1 = str(path)
1375        #print path1
1376        output_pdf = utils.createSequencedFilename("Merged", ".pdf",path1)
1377        files = [ f for f in os.listdir(path1)  if f.startswith('hpscanMerge') and f.endswith('.pdf')]
1378        if((len(files)) != 0):
1379            files.sort()
1380            merger = PdfFileMerger()
1381            os.chdir(path1)
1382            #print os.getcwd()
1383            for x in files:
1384                merger.append(PdfFileReader(x), 'hpscan')
1385            for p in files:
1386                os.remove(p)
1387
1388            merger.write(output_pdf)
1389            ocr = False
1390            if self.searchablePDF.isChecked() == True:
1391                ocr = True
1392            imageprocessing.merge_PDF_viewer(output_pdf,ocr)
1393            '''pdf_viewer = ''
1394            pdf_viewer_list = ['kpdf', 'acroread', 'xpdf', 'evince',]
1395            for v in pdf_viewer_list:
1396                vv = utils.which(v)
1397                if vv:
1398                    pdf_viewer = os.path.join(vv, v)
1399                    break
1400            #cmd = "%s %s &" % (pdf_viewer, output_pdf)
1401            cmd = pdf_viewer + "  " + output_pdf + " " + "&"
1402            print cmd
1403            os_utils.execute(cmd)
1404            #sys.exit(0)'''
1405        else:
1406            self.warningMessage(no_pages_to_merge)
1407
1408    def change_source(self):
1409        #device_name = re.search(r'_5000_', self.device_uri)
1410        #if device_name:
1411        if re.search(r'_5000_', self.device_uri):
1412            self.device_name = '5000'
1413        elif re.search(r'_7500', self.device_uri):
1414            self.device_name = '7500'
1415        elif re.search(r'hp2000S1', self.device_uri):
1416            self.device_name = '2000'
1417        elif re.search(r'hpgt2500', self.device_uri):
1418            self.device_name = '2500'
1419        elif re.search(r'_N9120', self.device_uri):
1420            self.device_name = '9120'
1421        elif re.search(r'_8500fn2', self.device_uri):
1422            self.device_name = '8500'
1423        elif re.search(r'_3500_f1', self.device_uri):
1424            self.device_name = '3500'
1425        elif re.search(r'_4500_fn1', self.device_uri):
1426            self.device_name = '4500'
1427        elif re.search(r'_7000_s3', self.device_uri):
1428            self.device_name = '7000'
1429        elif re.search(r'_3000_s3', self.device_uri):
1430            self.device_name = '3000'
1431        elif re.search(r'_2000_s2', self.device_uri):
1432            self.device_name = '2000'
1433        elif re.search(r'7000_snw1', self.device_uri):
1434            self.device_name = '7000'
1435        elif re.search(r'4000_snw1', self.device_uri):
1436            self.device_name = '4000'
1437        elif re.search(r'_3000_s4', self.device_uri):
1438            self.device_name = '3000'
1439        elif re.search(r'_5000_s5', self.device_uri):
1440            self.device_name = '5000'
1441        if self.device_name == '7500' or self.device_name == '5000' or self.device_name == '9120' or self.device_name == '8500' or self.device_name == '3500' or self.device_name == '4500' or self.device_name == '7000' or self.device_name == '3000' or self.device_name == '2000' or self.device_name == '2500' or self.device_name == '4000':
1442            self.comboBox_SourceChanged(self.device_name)
1443
1444
1445    def comboBox_device_URI(self):
1446        self.device_uri = str(self.comboBox_Device_URI.currentText())
1447        self.change_source()
1448
1449
1450    def retranslateUi(self, HpScan):
1451        #print "called retranslate"
1452        HpScan.setWindowTitle(_translate("HpScan", "HP-Scan", None))
1453        self.label_Type.setText(_translate("HpScan", "    Type", None))
1454        self.label_Size.setText(_translate("HpScan", "    Size", None))
1455        self.label_Path.setText(_translate("HpScan", "    Path", None))
1456        self.label_Device.setText(_translate("HpScan", "    Device", None))
1457        #self.label_Color.setText(_translate("HpScan", "    Color", None))
1458        self.label_Brightness.setText(_translate("HpScan", "    Brightness", None))
1459        self.label_CR.setText(_translate("HpScan", "    Range", None))
1460        self.label_Contrast.setText(_translate("HpScan", "    Contrast", None))
1461        self.label_Sharpness.setText(_translate("HpScan", "    Sharpness", None))
1462        self.label_Color_value.setText(_translate("HpScan", "    Color", None))
1463        self.comboBox_Type.setItemText(0, _translate("HpScan", "PNG", None))
1464        self.comboBox_Type.setItemText(1, _translate("HpScan", "JPG", None))
1465        self.comboBox_Type.setItemText(2, _translate("HpScan", "PDF", None))
1466        self.comboBox_Type.setItemText(3, _translate("HpScan", "TIFF", None))
1467        self.comboBox_Type.setItemText(4, _translate("HpScan", "BMP", None))
1468        '''self.comboBox_Flatbed.setItemText(0, _translate("HpScan", "Flatbed", None))
1469        self.comboBox_Flatbed.setItemText(1, _translate("HpScan", "ADF", None))
1470        self.comboBox_Flatbed.setItemText(2, _translate("HpScan", "Duplex", None))
1471        self.comboBox_Flatbed.setCurrentIndex(1)'''
1472        #self.comboBox_Color.setItemText(0, _translate("HpScan", "Lineart", None))
1473        self.comboBox_Color.setItemText(0, _translate("HpScan", "Gray", None))
1474        self.comboBox_Color.setItemText(1, _translate("HpScan", "Color", None))
1475        self.comboBox_Color.setCurrentIndex(0)
1476        self.comboBox_Resolution.setItemText(0, _translate("HpScan", "75", None))
1477        self.comboBox_Resolution.setItemText(1, _translate("HpScan", "100", None))
1478        self.comboBox_Resolution.setItemText(2, _translate("HpScan", "200", None))
1479        self.comboBox_Resolution.setItemText(3, _translate("HpScan", "300", None))
1480        self.comboBox_Resolution.setItemText(4, _translate("HpScan", "600", None))
1481        self.comboBox_Resolution.setCurrentIndex(3)
1482        #self.comboBox_Papersize.setItemText(0, _translate("HpScan", "5x7", None))
1483        #self.comboBox_Papersize.setItemText(1, _translate("HpScan", "4x6", None))
1484        #self.comboBox_Papersize.setItemText(2, _translate("HpScan", "3x5", None))
1485        #self.comboBox_Papersize.setItemText(3, _translate("HpScan", "a2_env", None))
1486        #self.comboBox_Papersize.setItemText(4, _translate("HpScan", "a3", None))
1487        #self.comboBox_Papersize.setItemText(0, _translate("HpScan", "a4", None))
1488        #self.comboBox_Papersize.setItemText(1, _translate("HpScan", "a5", None))
1489        #self.comboBox_Papersize.setItemText(7, _translate("HpScan", "a6", None))
1490        #self.comboBox_Papersize.setItemText(8, _translate("HpScan", "b4", None))
1491        #self.comboBox_Papersize.setItemText(2, _translate("HpScan", "b5", None))
1492        #self.comboBox_Papersize.setItemText(10, _translate("HpScan", "c6_env", None))
1493        #self.comboBox_Papersize.setItemText(11, _translate("HpScan", "dl_env", None))
1494        #self.comboBox_Papersize.setItemText(12, _translate("HpScan", "exec", None))
1495        #self.comboBox_Papersize.setItemText(13, _translate("HpScan", "flsa", None))
1496        #self.comboBox_Papersize.setItemText(14, _translate("HpScan", "higaki", None))
1497        #self.comboBox_Papersize.setItemText(15, _translate("HpScan", "japan_env_3", None))
1498        #self.comboBox_Papersize.setItemText(16, _translate("HpScan", "japan_env_4", None))
1499        #self.comboBox_Papersize.setItemText(3, _translate("HpScan", "legal", None))
1500        #self.comboBox_Papersize.setItemText(4, _translate("HpScan", "letter", None))
1501        #self.comboBox_Papersize.setItemText(19, _translate("HpScan", "no_10_env", None))
1502        #self.comboBox_Papersize.setItemText(20, _translate("HpScan", "oufufu-hagaki", None))
1503        #self.comboBox_Papersize.setItemText(21, _translate("HpScan", "photo", None))
1504        #self.comboBox_Papersize.setItemText(22, _translate("HpScan", "super_b", None))
1505        #self.comboBox_Papersize.setItemText(23, _translate("HpScan", "b6", None))
1506        #self.comboBox_Papersize.setCurrentIndex(4)
1507        self.pushButton_Scan.setText(_translate("HpScan", "Scan", None))
1508
1509        self.pushButton_Change.setText(_translate("HpScan", "Change Path", None))
1510        self.pushButton_Merge.setText(_translate("HpScan", "Merge", None))
1511        self.auto_orient.setText(_translate("HpScan", "Auto Orient ", None))
1512        self.crushed.setText(_translate("HpScan", "Background noise Removal ", None))
1513        self.searchablePDF.setText(_translate("HpScan", "Searchable PDF ", None))
1514        self.punchhole_removal.setText(_translate("HpScan", "Punch Hole Removal ", None))
1515        self.color_dropout.setText(_translate("HpScan", "Color Removal/Dropout ", None))
1516        self.bg_color_removal.setText(_translate("HpScan", "Background Color Removal", None))
1517        self.auto_crop.setText(_translate("HpScan", "Crop to content on page ", None))
1518        self.deskew_image.setText(_translate("HpScan", "Straighten page content ", None))
1519        self.multi_pick.setText(_translate("HpScan", "Misfeed(multipick) detection", None))
1520        self.blank_page.setText(_translate("HpScan", "Delete blank pages ", None))
1521        self.batch_seperation.setText(_translate("HpScan", "Separate the document", None))
1522        self.bp_blankpage.setText(_translate("HpScan", "Before each blank page", None))
1523        self.bp_barcode.setText(_translate("HpScan", "Before each page with a barcode", None))
1524        self.comboBox_Barcode_Type.setItemText(0, _translate("HpScan", "Any format", None))
1525        self.comboBox_Barcode_Type.setItemText(1, _translate("HpScan", "Code 39,Code 39 full ASCII", None))
1526        self.comboBox_Barcode_Type.setItemText(2, _translate("HpScan", "EAN 8/13,UPC-a,UPC-E(6-digit)", None))
1527        self.comboBox_Barcode_Type.setItemText(3, _translate("HpScan", "Code 128,GS1-128(UCC/EAN-128)", None))
1528        self.comboBox_Barcode_Type.setItemText(4, _translate("HpScan", "Codebar", None))
1529        self.comboBox_Barcode_Type.setItemText(5, _translate("HpScan", "ITF(2 of 5 interleaved)", None))
1530        self.comboBox_Barcode_Type.setItemText(6, _translate("HpScan", "PDF 417", None))
1531        self.comboBox_Barcode_Type.setItemText(7, _translate("HpScan", "Postnet code", None))
1532        self.document_merge.setText(_translate("HpScan", "Page merge", None))
1533        self.document_merge_adf_flatbed.setText(_translate("HpScan", "Document merge", None))
1534        self.image_enhancement.setText(_translate("HpScan", "Image enhancement", None))
1535        self.mixed_feed.setText(_translate("HpScan", "Mixed document feed", None))
1536
1537        i = 0
1538        #print (self.devicelist)
1539        for device in self.devicelist:
1540            #print(device)
1541            if re.search(r'_5000_', device) or re.search(r'_7500', device) or re.search(r'_N9120', device) or re.search(r'_8500fn2', device) or re.search(r'_3500_f1', device) or re.search(r'_4500_fn1', device) or re.search(r'_7000_s3', device) or re.search(r'_3000_s3', device) or re.search(r'hp2000S1', device) or re.search(r'hpgt2500', device) or re.search(r'_2000_s2', device) or re.search(r'7000_snw1', device) or re.search(r'4000_snw1', device) or re.search(r'_3000_s4', device) or re.search(r'_5000_s5', device):
1542                self.comboBox_Device_URI.addItem(device)
1543                self.comboBox_Device_URI.setItemText(i, _translate("HpScan", device, None))
1544                i += 1
1545            else:
1546                self.other_device_cnt += 1
1547        self.comboBox_path.addItem(path)
1548        self.comboBox_path.setItemText(0,_translate("HpScan", path, None))
1549
1550
1551        #self.pushButton_Cancel.setText(_translate("HpScan", "Cancel", None))
1552
1553
1554class SetupDialog():
1555    #print ("calling ui4 scan.py")
1556    def setupUi(self):
1557        #scanjet_flag=''
1558        #print ("called ui4 scan.py")
1559        #list1=[]
1560        import sys
1561        app = QtGui.QApplication(sys.argv)
1562        #app = QApplication(sys.argv)
1563        HpScan = QtGui.QDockWidget()
1564        ui = Ui_HpScan()
1565
1566        devicelist = {}
1567        #device = ''
1568        sane.init()
1569        sane_devices = sane.getDevices()
1570
1571        for device, mfg, mdl, t in sane_devices:
1572            if re.search(r'_5000_', device) or re.search(r'_7500', device) or re.search(r'_N9120', device) or re.search(r'_8500fn2', device) or re.search(r'_3500_f1', device) or re.search(r'_4500_fn1', device) or re.search(r'_7000_s3', device) or re.search(r'_3000_s3', device) or re.search(r'hp2000S1', device) or re.search(r'hpgt2500', device) or re.search(r'_2000_s2', device) or re.search(r'7000_snw1', device) or re.search(r'4000_snw1', device) or re.search(r'_3000_s4', device) or re.search(r'_5000_s5', device):
1573                try:
1574                    scanDevice = sane.openDevice(device)
1575                    #source_option = scanDevice.getOptionObj("source").constraint
1576                    brx = scanDevice.getOptionObj('br-x').limitAndSet(None)
1577                    bry = scanDevice.getOptionObj('br-y').limitAndSet(None)
1578                    devicelist[device] = [mdl]
1579                    #devicelist[device].extend([source_option,int(brx)+1,int(bry)+1])
1580                    devicelist[device].extend([int(brx)+1,int(bry)+1])
1581                    scanDevice.closeScan()
1582                except :
1583                    pass
1584
1585        sane.deInit()
1586        #print (devicelist)
1587
1588        ui.devicelist = devicelist
1589        #print ui.devicelist
1590
1591        ui.setupUi(HpScan)
1592
1593        scanjet_flag=imageprocessing.check_pil()
1594        if scanjet_flag is not None:
1595            #ui.DisableAllScanjet()
1596            ui.auto_orient.setEnabled(False)
1597            ui.searchablePDF.setEnabled(False)
1598            ui.auto_crop.setEnabled(False)
1599            ui.image_enhancement.setEnabled(False)
1600            ui.document_merge_adf_flatbed.setEnabled(False)
1601            ui.multi_pick.setEnabled(False)
1602            #ui.batch_seperation.setEnabled(False)
1603            ui.deskew_image.setEnabled(False)
1604            ui.blank_page.setEnabled(False)
1605            ui.crushed.setEnabled(False)
1606            ui.bg_color_removal.setEnabled(False)
1607            ui.punchhole_removal.setEnabled(False)
1608            ui.color_dropout.setEnabled(False)
1609            ui.mixed_feed.setEnabled(False)
1610            ui.document_merge.setEnabled(False)
1611
1612            ui.deskew_image_pri = False
1613            ui.auto_crop_pri = False
1614            ui.mixed_feed_pri = False
1615            ui.auto_orient_pri = False
1616            ui.searchablePDF_pri = False
1617            ui.document_merge_adf_flatbed_pri = False
1618            #ui.multi_pick_pri = False
1619            #ui.batch_seperation_pri = False
1620            ui.crushed_pri = False
1621            ui.bg_color_removal_pri = False
1622            ui.punchhole_removal_pri = False
1623            ui.color_dropout_pri = False
1624            ui.document_merge_pri = False
1625            ui.image_enhancement_pri = False
1626            ui.blank_page_pri = False
1627
1628        scanjet_flag=imageprocessing.check_numpy()
1629        if scanjet_flag is not None:
1630            #ui.DisableAllScanjet()
1631            ui.auto_orient.setEnabled(False)
1632            #ui.searchablePDF.setEnabled(False)
1633            ui.auto_crop.setEnabled(False)
1634            #ui.image_enhancement.setEnabled(False)
1635            ui.document_merge_adf_flatbed.setEnabled(False)
1636            ui.multi_pick.setEnabled(False)
1637            #ui.batch_seperation.setEnabled(False)
1638            ui.deskew_image.setEnabled(False)
1639            #ui.blank_page.setEnabled(False)
1640            ui.crushed.setEnabled(False)
1641            ui.bg_color_removal.setEnabled(False)
1642            ui.punchhole_removal.setEnabled(False)
1643            ui.color_dropout.setEnabled(False)
1644            ui.mixed_feed.setEnabled(False)
1645            ui.document_merge.setEnabled(False)
1646
1647
1648            ui.blank_page.setEnabled(True)
1649            #ui.blank_page.setChecked(False)
1650            ui.image_enhancement.setEnabled(True)
1651            #ui.image_enhancement.setChecked(False)
1652
1653            ui.deskew_image_pri = False
1654            ui.auto_crop_pri = False
1655            ui.mixed_feed_pri = False
1656            ui.auto_orient_pri = False
1657            ui.searchablePDF_pri = False
1658            ui.document_merge_adf_flatbed_pri = False
1659            #ui.multi_pick_pri = False
1660            #ui.batch_seperation_pri = False
1661            ui.crushed_pri = False
1662            ui.document_merge_pri = False
1663            ui.bg_color_removal_pri = False
1664            ui.punchhole_removal_pri = False
1665            ui.color_dropout_pri = False
1666
1667        scanjet_flag=imageprocessing.check_opencv()
1668        if scanjet_flag is not None:
1669            ui.deskew_image.setEnabled(False)
1670            ui.auto_crop.setEnabled(False)
1671            ui.mixed_feed.setEnabled(False)
1672            ui.bg_color_removal.setEnabled(False)
1673            #ui.deskew_image.setChecked(False)
1674            #ui.auto_crop.setChecked(False)
1675            #ui.mixed_feed.setChecked(False)
1676            ui.color_dropout.setEnabled(False)
1677
1678
1679            ui.color_dropout_pri = False
1680            ui.deskew_image_pri = False
1681            ui.auto_crop_pri = False
1682            ui.mixed_feed_pri = False
1683            ui.bg_color_removal_pri = False
1684
1685        scanjet_flag=imageprocessing.check_skimage()
1686        if scanjet_flag is not None:
1687            ui.punchhole_removal.setEnabled(False)
1688            ui.punchhole_removal_pri = False
1689
1690        scanjet_flag=imageprocessing.check_scipy()
1691        if scanjet_flag is not None:
1692            ui.deskew_image.setEnabled(False)
1693            ui.deskew_image_pri = False
1694
1695        scanjet_flag=imageprocessing.check_tesserocr_imutils()
1696        if scanjet_flag is not None:
1697            ui.auto_orient.setEnabled(False)
1698            #ui.auto_orient.setChecked(False)
1699
1700            ui.auto_orient_pri = False
1701
1702        scanjet_flag=imageprocessing.check_pypdfocr()
1703        if scanjet_flag is not None:
1704            ui.searchablePDF.setEnabled(False)
1705            ui.searchablePDF_pri = False
1706
1707        scanjet_flag=imageprocessing.check_pypdf2()
1708        if scanjet_flag is not None:
1709            ui.document_merge.setEnabled(False)
1710            ui.document_merge_adf_flatbed.setEnabled(False)
1711            #ui.document_merge.setChecked(False)
1712
1713            ui.document_merge_pri = False
1714            ui.document_merge_adf_flatbed_pri = False
1715
1716        scanjet_flag=imageprocessing.check_zbar()
1717        #print scanjet_flag
1718        if scanjet_flag is not None:
1719            #print "setting barcode to false"
1720            ui.bp_barcode.setEnabled(False)
1721
1722            ui.batchsepBC_pri = False
1723
1724        #list1.append(HpScan)
1725        #list1.append(app)
1726        #print HpScan
1727        '''list_scanjet=imageprocessing.validate_scanjet_support()
1728        print (list_scanjet)
1729        if(list_scanjet[2] == 'False'):
1730            scanjet_error="Scanjet features are not supported and disabled for %s %s. Please upgrade to latest distro version"% (list_scanjet[0],list_scanjet[1])
1731            ui.failureMessage(scanjet_error)
1732            ui.DisableAllScanjet()
1733        source_option = device.getOptionObj("source").constraint
1734        print (source_option)
1735        valid_res = device.getOptionObj('resolution').constraint
1736        print (valid_res)
1737        available_scan_mode = device.getOptionObj("mode").constraint
1738        print (available_scan_mode)'''
1739        #print ui.comboBox_Device_URI.count()
1740        if ui.comboBox_Device_URI.count() == 0:
1741            if ui.other_device_cnt > 0:
1742                scanjet_error="hp-uiscan is not supported for this device"
1743                ui.failureMessage(scanjet_error)
1744            else:
1745                scanjet_error="No device connected"
1746                ui.failureMessage(scanjet_error)
1747        else:
1748            HpScan.show()
1749            sys.exit(app.exec_())
1750        #return list1
1751
1752