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