1# -*- coding: utf-8 -*- 2# 3# (c) Copyright 2001-2015 HP Development Company, L.P. 4# 5# This program is free software; you can redistribute it and/or modify 6# it under the terms of the GNU General Public License as published by 7# the Free Software Foundation; either version 2 of the License, or 8# (at your option) any later version. 9# 10# This program is distributed in the hope that it will be useful, 11# but WITHOUT ANY WARRANTY; without even the implied warranty of 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13# GNU General Public License for more details. 14# 15# You should have received a copy of the GNU General Public License 16# along with this program; if not, write to the Free Software 17# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18# 19# Authors: Don Welch, Naga Samrat Chowdary Narla, 20# 21 22# StdLib 23import operator 24import signal 25 26# Local 27from base.g import * 28from base import device, utils, maint, status 29#from prnt import cups 30from base.codes import * 31from .ui_utils import * 32 33# Qt 34from PyQt5.QtCore import * 35from PyQt5.QtGui import * 36from PyQt5.QtWidgets import * 37 38# Ui 39from .aligndialog_base import Ui_Dialog 40 41PAGE_START = 0 42PAGE_LOAD_PAPER = 1 43PAGE_EDGE = 2 44PAGE_ALIGNMENT_NUMBER = 3 45PAGE_COLOR_ADJ = 4 # types 4, 5 & 7 46PAGE_LBOW = 5 # types 10 & 11 47PAGE_AIO = 6 # Place on scanner, ... 48PAGE_FRONT_PANEL = 7 # Use front panel menu 49 50BUTTON_ALIGN = 0 51BUTTON_NEXT = 1 52BUTTON_FINISH = 2 53 54ALIGN_TYPE_INITIAL = 1000 55ALIGN_TYPE_TEST = 1001 56 57# xBow offset types 58ALIGN_TYPE_XBOW_OFFSET = 100 59ALIGN_TYPE_XBOW_BLACK_ONLY = ALIGN_TYPE_XBOW_OFFSET + AGENT_CONFIG_BLACK_ONLY 60ALIGN_TYPE_XBOW_PHOTO_ONLY = ALIGN_TYPE_XBOW_OFFSET + AGENT_CONFIG_PHOTO_ONLY 61ALIGN_TYPE_XBOW_COLOR_ONLY = ALIGN_TYPE_XBOW_OFFSET + AGENT_CONFIG_COLOR_ONLY 62ALIGN_TYPE_XBOW_COLOR_AND_BLACK = ALIGN_TYPE_XBOW_OFFSET + AGENT_CONFIG_COLOR_AND_BLACK 63ALIGN_TYPE_XBOW_COLOR_AND_PHOTO = ALIGN_TYPE_XBOW_OFFSET + AGENT_CONFIG_COLOR_AND_PHOTO 64 65 66def true(): 67 return True 68 69 70class AlignDialog(QDialog, Ui_Dialog): 71 def __init__(self, parent, device_uri): 72 QDialog.__init__(self, parent) 73 self.device_uri = device_uri 74 self.mq = {} 75 self.step_max = 0 76 self.align_type = ALIGN_TYPE_INITIAL 77 self.step = 1 78 self.a, self.b, self.c, self.d, self.zca = 0, 0, 0, 0, 0 79 self.e, self.f, self.g = 0, 0, 0 80 self.num_inks = 0 # type 8 81 self.pattern = 0 # type 10 82 self.values = [] # type 10 83 self.abort = False 84 self.seq_index = 0 85 86 self.max_steps = { 87 ALIGN_TYPE_UNSUPPORTED : 1, 88 ALIGN_TYPE_AUTO : 2, 89 ALIGN_TYPE_9XX : 7, 90 ALIGN_TYPE_8XX : 7, 91 ALIGN_TYPE_LIDIL_0_3_8 : 0, 92 ALIGN_TYPE_LIDIL_0_4_3 : 0, 93 ALIGN_TYPE_LIDIL_AIO : 3, 94 ALIGN_TYPE_LIDIL_VIP : 0, 95 ALIGN_TYPE_DESKJET_450 : 0, 96 ALIGN_TYPE_9XX_NO_EDGE_ALIGN : 6, 97 ALIGN_TYPE_LBOW : 0, 98 ALIGN_TYPE_LIDIL_0_5_4 : 0, 99 ALIGN_TYPE_OJ_PRO : 0, 100 ALIGN_TYPE_TEST : 0, 101 ALIGN_TYPE_AIO : 3, 102 ALIGN_TYPE_LIDIL_DJ_D1600: 0, 103 ALIGN_TYPE_LEDM: 0, 104 ALIGN_TYPE_LEDM_MANUAL: 0, 105 ALIGN_TYPE_LEDM_FF_CC_0: 0, 106 } 107 108 self.seq = { # (func|method, tuple of params|None) 109 ALIGN_TYPE_TEST : [ # testing only 110 (self.showColorAdjustPage, ('F', 21)), 111 (self.endColorAdjustPage, ('F',)), 112 (self.showColorAdjustPage, ('G', 11)), 113 (self.endColorAdjustPage, ('G',)), 114 (self.close, None), 115 ], 116 117 ALIGN_TYPE_INITIAL : [ # (used when starting up and align-type isn't known) 118 (self.showStartPage, None), 119 (self.endStartPage, None), # switch to a valid align-type here 120 ], 121 122 ALIGN_TYPE_UNSUPPORTED : [ # -1 123 (self.showFrontPanelPage, None), 124 (self.endFronPanelPage, None), 125 (self.close, None), 126 ], 127 128# ALIGN_TYPE_NONE : [ # 0 129# (self.close, None) 130# ], 131 132 ALIGN_TYPE_AUTO : [ # 1 133 (self.showLoadPaperPage, None), 134 (maint.AlignType1PML, (lambda : self.dev, lambda: true)), 135 (self.closeAll, None), 136 (self.close, None), 137 ], 138 139 ALIGN_TYPE_8XX : [ # 2 140 (self.checkType2PenConfig, None), 141 (self.showLoadPaperPage, None), 142 (maint.alignType2Phase1, (lambda: self.dev,)), 143 (self.showAlignmentNumberPage, ('A', 'h', 'kc', 2, 11)), 144 (self.endAlignmentNumberPage, ('A',)), 145 (self.showAlignmentNumberPage, ('B', 'v', 'kc', 2, 11)), 146 (self.endAlignmentNumberPage, ('B',)), 147 (self.showAlignmentNumberPage, ('C', 'v', 'kc', 2, 5)), 148 (self.endAlignmentNumberPage, ('C',)), 149 (self.showAlignmentNumberPage, ('D', 'v', 'c', 2, 5)), 150 (self.endAlignmentNumberPage, ('D',)), 151 (self.setAlignButton, (BUTTON_ALIGN,)), 152 (self.showLoadPaperPage, (lambda: True,)), 153 (maint.alignType2Phase2, (lambda: self.dev, lambda: self.a, lambda: self.b, 154 lambda: self.c, lambda: self.d)), 155 (self.closeAll, None), 156 (self.close, None), 157 ], 158 159 ALIGN_TYPE_9XX : [ # 3 160 (self.showLoadPaperPage, None), 161 (self.showAlignmentNumberPage, ('A', 'h', 'kc', 2, 11)), 162 (self.endAlignmentNumberPage, ('A',)), 163 (self.showAlignmentNumberPage, ('B', 'v', 'kc', 2, 11)), 164 (self.endAlignmentNumberPage, ('B',)), 165 (self.showAlignmentNumberPage, ('C', 'v', 'k', 2, 11)), 166 (self.endAlignmentNumberPage, ('C',)), 167 (self.setAlignButton, (BUTTON_ALIGN,)), 168 (self.showAlignmentNumberPage, ('D', 'v', 'kc', 2, 11)), 169 (self.endAlignmentNumberPage, ('D',)), 170 (maint.alignType3Phase2, (lambda: self.dev, lambda: self.a, lambda: self.b, 171 lambda: self.c, lambda: self.d)), 172 (maint.alignType3Phase3, (lambda: self.dev,)), 173 (self.showPageEdgePage, None), 174 (self.endPageEdgePage, None), 175 (maint.alignType3Phase4, (lambda: self.dev, lambda: self.zca)), 176 (self.closeAll, None), 177 (self.close, None), 178 ], 179 180 ALIGN_TYPE_LIDIL_0_3_8 : [ # 4 181 (self.showLoadPaperPage, None), 182 (self.setPenConfig, None), 183 (maint.alignType4Phase1, (lambda: self.dev,)), 184 (self.setXBow, None), 185 # switches to offset align_type here 186 ], 187 188 ALIGN_TYPE_LIDIL_0_4_3 : [ # 5 189 (self.showLoadPaperPage, None), 190 (self.setPenConfig, None), 191 (maint.alignType5Phase1, (lambda: self.dev,)), 192 (self.showPageEdgePage, ('A',)), 193 (self.endPageEdgePage, None), 194 (self.setXBow, None), 195 # switches to offset align_type here 196 ], 197 198 ALIGN_TYPE_LIDIL_VIP : [ # 7 199 (self.showLoadPaperPage, None), 200 (self.setPenConfig, None), 201 (maint.alignType7Phase1, (lambda: self.dev,)), 202 (self.showPageEdgePage, ('A',)), 203 (self.endPageEdgePage, None), 204 (self.setXBow, None), 205 # switches to offset align_type here (next 5 types) 206 ], 207 208 # xBow offset alignment type 209 ALIGN_TYPE_XBOW_BLACK_ONLY : [ # 4, 5 & 7 210 (self.showAlignmentNumberPage, ('B', 'v', 'k', 2, 11)), 211 (self.endAlignmentNumberPage, ('B',)), 212 (self.setXBowValues, None), 213 (self.closeAll, None), 214 (self.close, None), 215 ], 216 217 # xBow offset alignment type 218 ALIGN_TYPE_XBOW_PHOTO_ONLY : [ # 4, 5 & 7 219 (self.showAlignmentNumberPage, ('B', 'v', 'k', 2, 11)), 220 (self.endAlignmentNumberPage, ('B',)), 221 (self.setXBowValues, None), 222 (self.closeAll, None), 223 (self.close, None), 224 ], 225 226 # xBow offset alignment type 227 ALIGN_TYPE_XBOW_COLOR_ONLY : [ # 4, 5 & 7 228 (self.showAlignmentNumberPage, ('B', 'v', 'kc', 2, 11)), 229 (self.endAlignmentNumberPage, ('B',)), 230 (self.setXBowValues, None), 231 (self.closeAll, None), 232 (self.close, None), 233 ], 234 235 # xBow offset alignment type 236 ALIGN_TYPE_XBOW_COLOR_AND_BLACK : [ # 4, 5 & 7 237 (self.showAlignmentNumberPage, ('B', 'h', 'kc', 2, 17)), 238 (self.endAlignmentNumberPage, ('B',)), 239 (self.showAlignmentNumberPage, ('C', 'v', 'kc', 2, 17)), 240 (self.endAlignmentNumberPage, ('C',)), 241 (self.showAlignmentNumberPage, ('D', 'v', 'k', 2, 11)), 242 (self.endAlignmentNumberPage, ('D',)), 243 (self.showAlignmentNumberPage, ('E', 'v', 'kc', 2, 11)), 244 (self.endAlignmentNumberPage, ('E',)), 245 (self.setXBowValues, None), 246 (self.closeAll, None), 247 (self.close, None), 248 ], 249 250 # xBow offset alignment type 251 ALIGN_TYPE_XBOW_COLOR_AND_PHOTO : [ # 4, 5 & 7 252 (self.showAlignmentNumberPage, ('B', 'h', 'kc', 2, 17)), 253 (self.endAlignmentNumberPage, ('B',)), 254 (self.showAlignmentNumberPage, ('C', 'v', 'kc', 2, 17)), 255 (self.endAlignmentNumberPage, ('C',)), 256 (self.showAlignmentNumberPage, ('D', 'v', 'k', 2, 11)), 257 (self.endAlignmentNumberPage, ('D',)), 258 (self.showAlignmentNumberPage, ('E', 'v', 'kc', 2, 11)), 259 (self.endAlignmentNumberPage, ('E',)), 260 (self.showColorAdjustPage, ('F', 21)), 261 (self.endColorAdjustPage, ('F',)), 262 (self.showColorAdjustPage, ('G', 21)), 263 (self.endColorAdjustPage, ('G',)), 264 (self.setXBowValues, None), 265 (self.close, None), 266 ], 267 268 ALIGN_TYPE_LIDIL_AIO : [ # 6 (semi-auto) 269 (self.showLoadPaperPage, None), 270 (maint.alignType6Phase1, (lambda: self.dev,)), 271 (self.setAlignButton, (BUTTON_FINISH,)), 272 (self.showAioPage, None), 273 (self.closeAll, None), 274 (self.close, None), 275 ], 276 277 ALIGN_TYPE_DESKJET_450 : [ # 8 278 (self.showLoadPaperPage, None), 279 (self.alignType8Phase1, None), # sets num_inks 280 (self.showAlignmentNumberPage, ('A', 'v', 'k', 3, 9)), 281 (self.endAlignmentNumberPage, ('A',)), 282 (self.showAlignmentNumberPage, ('B', 'v', 'c', 3, 9)), 283 (self.endAlignmentNumberPage, ('B',)), 284 (self.showAlignmentNumberPage, ('C', 'v', 'kc', 3, 9)), 285 (self.endAlignmentNumberPage, ('C',)), 286 (self.setAlignButton, (BUTTON_ALIGN,)), 287 (self.showAlignmentNumberPage, ('D', 'h', 'kc', 3, 9)), 288 (self.endAlignmentNumberPage, ('D',)), 289 (maint.alignType3Phase2, (lambda: self.dev, lambda: self.num_inks, lambda: self.a, 290 lambda: self.b, lambda: self.c, lambda: self.d)), 291 (self.closeAll, None), 292 (self.close, None), 293 ], 294 295 ALIGN_TYPE_9XX_NO_EDGE_ALIGN : [ # 9 296 (self.showLoadPaperPage, None), 297 (self.showAlignmentNumberPage, ('A', 'h', 'kc', 2, 11)), 298 (self.endAlignmentNumberPage, ('A',)), 299 (self.showAlignmentNumberPage, ('B', 'v', 'kc', 2, 11)), 300 (self.endAlignmentNumberPage, ('B',)), 301 (self.showAlignmentNumberPage, ('C', 'v', 'k', 2, 11)), 302 (self.endAlignmentNumberPage, ('C',)), 303 (self.setAlignButton, (BUTTON_ALIGN,)), 304 (self.showAlignmentNumberPage, ('D', 'v', 'kc', 2, 11)), 305 (self.endAlignmentNumberPage, ('D',)), 306 (maint.alignType3Phase2, (lambda: self.dev, lambda: self.a, lambda: self.b, 307 lambda: self.c, lambda: self.d)), 308 (self.closeAll, None), 309 (self.close, None), 310 ], 311 312 ALIGN_TYPE_LBOW : [ # 10 313 (self.showLoadPaperPage, None), 314 (maint.alignType10Phase1, (lambda: self.dev,)), 315 (self.setAlignButton, (BUTTON_ALIGN,)), 316 (self.showLBowPage, (lambda: self.pattern,)), 317 (self.endLBowPage, None), # sets values 318 (maint.alignType10Phase2, (lambda: self.dev, lambda: self.values, 319 lambda: self.pattern)), 320 (self.setAlignButton, (BUTTON_FINISH,)), 321 (self.showLoadPaperPage, (lambda: True,)), 322 (maint.alignType10Phase3, (lambda: self.dev,)), 323 (self.closeAll, None), 324 (self.close, None), 325 ], 326 327 ALIGN_TYPE_LIDIL_0_5_4 : [ # 11 328 (self.showLoadPaperPage, None), 329 (maint.alignType11Phase1, (lambda: self.dev,)), 330 (self.setAlignButton, (BUTTON_ALIGN,)), 331 (self.showLBowPage, (lambda: self.pattern,)), 332 (self.endLBowPage, None), # sets values 333 (maint.alignType11Phase2, (lambda: self.dev, lambda: self.values, 334 lambda: self.pattern, lambda: self.dev.pen_config)), 335 (self.setAlignButton, (BUTTON_FINISH,)), 336 (self.showLoadPaperPage, (lambda: True,)), 337 (maint.alignType11Phase3, (lambda: self.dev,)), 338 (self.closeAll, None), 339 (self.close, None), 340 ], 341 342 ALIGN_TYPE_OJ_PRO : [ # 12 343 (self.showLoadPaperPage, None), 344 (maint.AlignType12, (lambda : self.dev, lambda: true)), 345 (self.closeAll, None), 346 (self.close, None), 347 ], 348 349 ALIGN_TYPE_AIO : [ #13 350 (self.showLoadPaperPage, None), 351 (maint.alignType13Phase1, (lambda: self.dev,)), 352 (self.setAlignButton, (BUTTON_FINISH,)), 353 (self.showAioPage, None), 354 (self.closeAll, None), 355 (self.close, None), 356 ], 357 358 ALIGN_TYPE_LIDIL_DJ_D1600 : [ # 14 359 (self.showLoadPaperPage, None), 360 (maint.alignType14Phase1, (lambda: self.dev,)), 361 (self.setAlignButton, (BUTTON_ALIGN,)), 362 (self.showLBowPage, (lambda: self.pattern,)), 363 (self.endLBowPage, None), # sets values 364 (maint.alignType14Phase2, (lambda: self.dev, lambda: self.values, 365 lambda: self.pattern, lambda: self.dev.pen_config)), 366 (self.setAlignButton, (BUTTON_FINISH,)), 367 (self.showLoadPaperPage, (lambda: True,)), 368 (maint.alignType14Phase3, (lambda: self.dev,)), 369 (self.closeAll, None), 370 (self.close, None), 371 ], 372 373 ALIGN_TYPE_LEDM : [ # 15 374 (self.showLoadPaperPage, None), 375 (maint.AlignType15Phase1, (lambda : self.dev, lambda: self.showAioPage)), 376 (self.close, None), 377 ], 378 379 ALIGN_TYPE_LEDM_MANUAL : [ # 16 380 (self.showLoadPaperPage, None), 381 (maint.AlignType15Phase1, (lambda : self.dev, lambda: true)), 382 (self.showAlignmentNumberPage, ('A', 'v', 'kc', 3, 23)), 383 (self.endAlignmentNumberPage, ('A',)), 384 (self.showAlignmentNumberPage, ('B', 'h', 'kc', 3, 17)), 385 (self.endAlignmentNumberPage, ('B',)), 386 (self.showAlignmentNumberPage, ('C', 'v', 'k', 3, 23)), 387 (self.endAlignmentNumberPage, ('C',)), 388 (self.showAlignmentNumberPage, ('D', 'v', 'c', 3, 23)), 389 (self.endAlignmentNumberPage, ('D',)), 390 (self.showAlignmentNumberPage, ('E', 'h', 'k', 3, 11)), 391 (self.endAlignmentNumberPage, ('E',)), 392 (self.showAlignmentNumberPage, ('F', 'h', 'k', 3, 11)), 393 (self.endAlignmentNumberPage, ('F',)), 394 (self.showAlignmentNumberPage, ('G', 'h', 'k', 3, 11)), 395 (self.endAlignmentNumberPage, ('G',)), 396 (self.showAlignmentNumberPage, ('H', 'v', 'k', 3, 11)), 397 (self.endAlignmentNumberPage, ('H',)), 398 (self.showAlignmentNumberPage, ('I', 'v', 'c', 3, 19)), 399 (self.endAlignmentNumberPage, ('I',)), 400 (self.showAlignmentNumberPage, ('J', 'v', 'c', 3, 19)), 401 (self.endAlignmentNumberPage, ('J',)), 402 (maint.AlignType16Phase1, (lambda: self.dev, lambda: self.a, lambda: self.b, 403 lambda: self.c, lambda: self.d, lambda: self.e, 404 lambda: self.f, lambda: self.g, lambda: self.h, 405 lambda: self.i, lambda: self.j)), 406 (self.closeAll, None), 407 (self.close, None), 408 ], 409 ALIGN_TYPE_LEDM_FF_CC_0 : [ # 17 410 (self.showLoadPaperPage, None), 411 (maint.AlignType17Phase1, (lambda : self.dev, lambda: self.showAioPage)), 412 (self.close, None), 413 ], 414 } 415 416 self.setupUi(self) 417 self.initUi() 418 419 QTimer.singleShot(0, self.nextSequence) 420 421 422 def initUi(self): 423 # connect signals/slots 424 self.CancelButton.clicked.connect(self.CancelButton_clicked) 425 self.NextButton.clicked.connect(self.NextButton_clicked) 426 #self.BackButton.clicked.connect(self.BackButton_clicked) 427 self.DeviceComboBox.DeviceUriComboBox_noDevices.connect(self.DeviceUriComboBox_noDevices) 428 self.DeviceComboBox.DeviceUriComboBox_currentChanged.connect(self.DeviceUriComboBox_currentChanged) 429 self.DeviceComboBox.setFilter({'align-type': (operator.ne, ALIGN_TYPE_NONE)}) 430 431 signal.signal(signal.SIGINT, signal.SIG_DFL) 432 433 # Application icon 434 self.setWindowIcon(QIcon(load_pixmap('hp_logo', '128x128'))) 435 436 if self.device_uri: 437 self.DeviceComboBox.setInitialDevice(self.device_uri) 438 439 440 def DeviceUriComboBox_noDevices(self): 441 FailureUI(self, self.__tr("<b>No devices that support print cartridge alignment found.</b><p>Click <i>OK</i> to exit.</p>")) 442 self.close() 443 444 445 def DeviceUriComboBox_currentChanged(self, device_uri): 446 self.device_uri = device_uri 447 448 449 def CancelButton_clicked(self): 450 self.close() 451 452 453 def NextButton_clicked(self): 454 self.nextSequence() 455 456 457 def nextSequence(self): 458 while True: 459 try: 460 seq, params = self.seq[self.align_type][self.seq_index] 461 except IndexError: 462 break 463 464 if seq is None: 465 self.seq_index += 1 466 continue 467 468 self.new_page = False 469 470 t = [] 471 if params is not None: 472 for p in params: 473 try: 474 t.append(p()) 475 except: 476 t.append(p) 477 478 try: 479 log.debug("%s(%s)" % (seq.__name__, ','.join([repr(x) for x in t]))) 480 except AttributeError: 481 pass 482 483 try: 484 seq(*t) 485 except Error: 486 CheckDeviceUI(self) 487 break 488 489 self.seq_index += 1 490 491 if self.new_page: 492 break 493 494 if self.abort: 495 self.close() 496 497 498 499 def showStartPage(self): 500# self.BackButton.setEnabled(False) 501 num_devices = self.DeviceComboBox.setDevices() 502 503 if num_devices == 1: 504 self.skipPage() 505 return 506 507 self.DeviceComboBox.updateUi() 508 self.displayPage(PAGE_START) 509 510 511 def endStartPage(self): 512 self.mq = device.queryModelByURI(self.device_uri) 513 self.align_type = self.mq.get('align-type', ALIGN_TYPE_NONE) 514 self.seq_index = -1 515 516 #self.align_type = ALIGN_TYPE_TEST# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 517 518 log.debug("align-type=%d" % self.align_type) 519 self.step_max = self.max_steps[self.align_type] 520 521 try: 522 self.dev = device.Device(self.device_uri) 523 except Error: 524 CheckDeviceUI(self) 525 return 526 527 528 def showLoadPaperPage(self, finish=False): 529 if finish: 530 self.LoadPaper.button_name = self.__tr("Finish >") 531 self.LoadPaper.updateUi() 532 self.displayPage(PAGE_LOAD_PAPER) 533 534 535 def endLoadPaperPage(self): 536 pass 537 538 539 def showAlignmentNumberPage(self, line_id, orientation, colors, line_count, choice_count): 540 # line_id: 'A', 'B', etc. 541 # orientation: 'v' or 'h' 542 # colors: 'k' or 'c' or 'kc' 543 # line_count: 2 or 3 544 # choice_count: 5, 7, 9, 11, etc. (odd) 545 self.AlignmentNumberTitle.setText(self.__tr("From the printed Alignment page, Choose the set of lines in group %s where the line segments are <b>best</b> aligned." % line_id)) 546 self.AlignmentNumberIcon.setPixmap(load_pixmap('%s-%s-%d' % (orientation, colors, line_count), 'other')) 547 self.AlignmentNumberComboBox.clear() 548 549 for x in range(choice_count): 550 self.AlignmentNumberComboBox.addItem(str("%s%s"% (line_id, x+1))) 551 552 self.displayPage(PAGE_ALIGNMENT_NUMBER) 553 return 554 555 556 def endAlignmentNumberPage(self, line_id): 557 v = int(str(self.AlignmentNumberComboBox.currentText())[1:]) 558 559 if line_id == 'A': 560 self.a = v 561 log.debug("A=%d" % v) 562 563 elif line_id == 'B': 564 self.b = v 565 log.debug("B=%d" % v) 566 567 elif line_id == 'C': 568 self.c = v 569 log.debug("C=%d" % v) 570 571 elif line_id == 'D': 572 self.d = v 573 log.debug("D=%d" % v) 574 575 elif line_id == 'E': 576 self.e = v 577 log.debug("E=%d" % v) 578 579 elif line_id == 'F': 580 self.f = v 581 log.debug("F=%d" % v) 582 583 elif line_id == 'G': 584 self.g = v 585 log.debug("G=%d" % v) 586 587 elif line_id == 'H': 588 self.h = v 589 log.debug("H=%d" % v) 590 591 elif line_id == 'I': 592 self.i = v 593 log.debug("I=%d" % v) 594 595 elif line_id == 'J': 596 self.j = v 597 log.debug("J=%d" % v) 598 599 def showPageEdgePage(self, prefix=None, count=13): 600 self.PageEdgeTitle.setText(self.__tr("Choose the <b>numbered arrow</b> that <b>best </b>marks the edge of the paper.")) 601 self.PageEdgeIcon.setPixmap(load_pixmap('zca.png', 'other')) 602 603 self.PageEdgeComboBox.clear() 604 for x in range(count): 605 if prefix is None: 606 self.PageEdgeComboBox.addItem(str("%s" % x+1)) 607 else: 608 self.PageEdgeComboBox.addItem(str("%s%s" % (prefix, x+1))) # for xBow 609 610 self.displayPage(PAGE_EDGE) 611 612 613 def endPageEdgePage(self): 614 v = int(str(self.PageEdgeComboBox.currentText())[1:]) 615 self.zca = v 616 log.debug("ZCA=%d" % v) 617 618 619 def showLBowPage(self, pattern): 620 self.LBowIcon.setPixmap(load_pixmap('align10', 'other')) 621 622 if self.align_type == ALIGN_TYPE_LBOW: 623 pattern = maint.alignType10SetPattern(self.dev) 624 625 elif self.align_type == ALIGN_TYPE_LIDIL_DJ_D1600: 626 pattern = maint.alignType14SetPattern(self.dev) 627 628 else: # ALIGN_TYPE_LIDIL_0_5_4 629 pattern = maint.alignType11SetPattern(self.dev) 630 631 if pattern is None: 632 log.error("Invalid pattern!") 633 # TODO: ... 634 635 self.controls = maint.align10and11and14Controls(pattern, self.align_type) 636 keys = list(self.controls.keys()) 637 keys.sort() 638 max_line = 'A' 639 for line in keys: 640 if self.controls[line][0]: 641 max_line = line 642 else: 643 break 644 645 self.LBowTitle.setText(self.__tr("For each row A - %s, select the label representing the box in which in the inner lines are the <b>least</b> visible." % max_line)) 646 647 for line in self.controls: 648 if not self.controls[line][0]: 649 eval('self.%sComboBox.setEnabled(False)' % line.lower()) 650 else: 651 for x in range(self.controls[line][1]): 652 eval('self.%sComboBox.addItem("%s%d")' % (line.lower(), line, x + 1)) 653 654 self.displayPage(PAGE_LBOW) 655 656 657 658 def endLBowPage(self): 659 self.values = [] 660 controls = list(self.controls.keys()) 661 controls.sort() 662 663 for line in controls: 664 if not self.controls[line][0]: 665 self.values.append(0) 666 else: 667 exec('selected = unicode(self.%sComboBox.currentText())' % line.lower()) 668 try: 669 selected = int(selected[1:]) 670 except ValueError: 671 selected = 0 672 673 self.values.append(selected) 674 675 676 def showAioPage(self): 677 self.AioIcon.setPixmap(load_pixmap('aio_align', 'other')) 678 self.displayPage(PAGE_AIO) 679 680 681 def endAioPage(self): 682 pass 683 684 685 def showColorAdjustPage(self, line_id, count=21): 686 self.ColorAdjustComboBox.clear() 687 self.ColorAdjustIcon.setPixmap(load_pixmap('color_adj', 'other')) 688 self.ColorAdjustLabel.setText(self.__tr("Line %s:" % line_id)) 689 690 for x in range(count): 691 self.ColorAdjustComboBox.addItem(str("%s%s" % (line_id, x+1))) 692 693 self.displayPage(PAGE_COLOR_ADJ) 694 695 696 def endColorAdjustPage(self, line_id): 697 v = int(str(self.ColorAdjustComboBox.currentText())[1:]) 698 699 if line_id == 'F': 700 self.f = v 701 log.debug("F=%d" % v) 702 703 elif line_id == 'G': 704 self.g = v 705 log.debug("G=%d" % v) 706 707 708 def showFrontPanelPage(self): 709# self.BackButton.setEnabled(False) 710 self.setAlignButton(BUTTON_FINISH) 711 self.displayPage(PAGE_FRONT_PANEL) 712 713 714 def endFronPanelPage(self): 715 pass 716 717 # 718 # ALIGN-TYPE SPECIFIC 719 # 720 721 def checkType2PenConfig(self): 722 pass 723 # TODO: set abort if problem 724 725 726 def alignType8Phase1(self): 727 self.num_inks = maint.alignType8Phase1(self.dev) 728 729 730 def setXBow(self): 731 # TODO: set abort if invalid pen config 732 self.real_align_type = self.align_type 733 self.align_type = ALIGN_TYPE_XBOW_OFFSET + self.dev.pen_config 734 self.seq_index = -1 735 736 737 def setXBowValues(self): 738 if self.real_align_type == ALIGN_TYPE_LIDIL_0_3_8: 739 maint.alignType4Phase2(self.dev, self.zca, self.b, self.c, self.d, self.e) 740 maint.alignType4Phase3(self.dev) 741 742 elif self.real_align_type == ALIGN_TYPE_LIDIL_0_4_3: 743 maint.alignType5Phase2(self.dev, self.zca, self.b, self.c, self.d, self.e, self.f, self.g) 744 maint.alignType5Phase3(self.dev) 745 746 elif self.real_align_type == ALIGN_TYPE_LIDIL_VIP: 747 maint.alignType7Phase2(self.dev, self.zca, self.b, self.c, self.d, self.e, self.f, self.g) 748 maint.alignType7Phase3(self.dev) 749 750 751 # 752 # Misc 753 # 754 755 def displayPage(self, page): 756 self.updateStepText(self.step) 757 self.step += 1 758 self.new_page = True 759 self.StackedWidget.setCurrentIndex(page) 760 761 762 def skipPage(self): 763 self.step += 1 764 self.new_page = False 765 766 767 def updateStepText(self, p=None): 768 if p is None or not self.step_max: 769 self.StepText.setText(str("")) 770 else: 771 self.StepText.setText(self.__tr("Step %s of %s" % (p, self.step_max))) 772 773 774 def setAlignButton(self, typ=BUTTON_ALIGN): 775 if typ == BUTTON_ALIGN: 776 self.NextButton.setText(self.__tr("Align")) 777 elif typ == BUTTON_NEXT: 778 self.NextButton.setText(self.__tr("Next >")) 779 elif typ == BUTTON_FINISH: 780 self.NextButton.setText(self.__tr("Finish")) 781 782 783 def setPenConfig(self): 784 self.dev.pen_config = status.getPenConfiguration(self.dev.getStatusFromDeviceID()) 785 786 787 def closeAll(self): 788 if self.dev is not None: 789 self.dev.close() 790 791 792 def __tr(self,s,c = None): 793 return qApp.translate("AlignDialog",s,c) 794