home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / lib / hplip / base / maint.py < prev    next >
Encoding:
Python Source  |  2006-08-30  |  35.3 KB  |  1,223 lines

  1. # -*- coding: utf-8 -*-
  2. #
  3. # (c) Copyright 2003-2006 Hewlett-Packard Development Company, L.P.
  4. #
  5. # This program is free software; you can redistribute it and/or modify
  6. # it under the terms of the GNU General Public License as published by
  7. # the Free Software Foundation; either version 2 of the License, or
  8. # (at your option) any later version.
  9. #
  10. # This program is distributed in the hope that it will be useful,
  11. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. # GNU General Public License for more details.
  14. #
  15. # You should have received a copy of the GNU General Public License
  16. # along with this program; if not, write to the Free Software
  17. # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  18. #
  19. # Author: Don Welch
  20. #
  21.  
  22. # Local
  23. from g import *
  24. from codes import *
  25. import status, pml
  26. from prnt import pcl, ldl, colorcal
  27.  
  28. # ********************** Align **********************
  29.  
  30. def AlignType1(dev, loadpaper_ui): # Auto VIP
  31.     ok = loadpaper_ui()
  32.     if ok:
  33.         dev.writeEmbeddedPML(pml.OID_AUTO_ALIGNMENT,
  34.                               pml.AUTO_ALIGNMENT, style=0)
  35.  
  36.     return ok
  37.  
  38.  
  39. def AlignType2(dev, loadpaper_ui, align_ui, bothpens_ui): # 8xx
  40.     state, a, b, c, d = 0, 6, 6, 3, 3
  41.     ok = False
  42.     while state != -1:
  43.         if state == 0:
  44.             state = 1
  45.             pens = dev.getStatusFromDeviceID()['agents']
  46.             pen_types = [pens[x] for x in range(len(pens))]
  47.             if AGENT_TYPE_NONE in pen_types:
  48.                 log.error("Cannot perform alignment with 0 or 1 pen installed.")
  49.                 state = 100
  50.  
  51.         elif state == 1:
  52.             state = -1
  53.             ok = loadpaper_ui()
  54.             if ok:
  55.                 state = 2
  56.  
  57.         elif state == 2:
  58.             state = -1
  59.             alignType2Phase1(dev)
  60.             ok, a = align_ui('A', 'h', 'kc', 2, 11)
  61.             if ok:
  62.                 state = 3
  63.  
  64.         elif state == 3:
  65.             state = -1
  66.             ok, b = align_ui('B', 'v', 'kc', 2, 11)
  67.             if ok:
  68.                 state = 4
  69.  
  70.         elif state == 4:
  71.             state = -1
  72.             ok, c = align_ui('C', 'v', 'kc', 2, 5)
  73.             if ok:
  74.                 state = 5
  75.  
  76.         elif state == 5:
  77.             state = -1
  78.             ok, d = align_ui('D', 'v', 'c', 2, 5)
  79.             if ok:
  80.                 state = 6
  81.  
  82.         elif state == 6:
  83.             ok = loadpaper_ui()
  84.             if ok:
  85.                 alignType2Phase2(dev, a, b, c, d)
  86.             state = -1
  87.  
  88.         elif state == 100:
  89.             ok = False
  90.             bothpens_ui()
  91.             state = -1
  92.  
  93.     return ok
  94.  
  95.  
  96.  
  97. def AlignType3(dev, loadpaper_ui, align_ui, paperedge_ui, align_type): # 9xx
  98.     state, a, b, c, d, zca = 0, 6, 6, 3, 3, 6
  99.     ok = False
  100.     while state != -1:
  101.         if state == 0:
  102.             state = -1
  103.             ok = loadpaper_ui()
  104.             if ok:
  105.                 alignType3Phase1(dev)
  106.                 state = 1
  107.  
  108.         elif state == 1:
  109.             state = -1
  110.             ok, a = align_ui('A', 'h', 'kc', 2, 11)
  111.             if ok:
  112.                 state = 2
  113.  
  114.         elif state == 2:
  115.             state = -1
  116.             ok, b = align_ui('B', 'v', 'kc', 2, 11)
  117.             if ok:
  118.                 state = 3
  119.  
  120.         elif state == 3:
  121.             state = -1
  122.             ok, c = align_ui('C', 'v', 'k', 2, 11)
  123.             if ok:
  124.                 state = 4
  125.  
  126.         elif state == 4:
  127.             state = -1
  128.             ok, d = align_ui('D', 'v', 'kc', 2, 11)
  129.             if ok:
  130.                 state = 5
  131.  
  132.         elif state == 5:
  133.             state = -1
  134.             alignType3Phase2(dev, a, b, c, d)
  135.             if align_type == 9:
  136.                 state = 7
  137.             else:
  138.                 ok = loadpaper_ui()
  139.                 if ok:
  140.                     state = 6
  141.  
  142.         elif state == 6:
  143.             state = -1
  144.             alignType3Phase3(dev)
  145.             ok, zca = paperedge_ui(13)
  146.             if ok:
  147.                 state = 7
  148.  
  149.         elif state == 7:
  150.             ok = loadpaper_ui()
  151.             if ok:
  152.                 alignType3Phase4(dev, zca)
  153.             state = -1
  154.  
  155.     return ok
  156.  
  157.  
  158. def AlignxBow(dev, align_type, loadpaper_ui, align_ui, paperedge_ui,
  159.                invalidpen_ui, coloradj_ui): # Types 4, 5, and 7
  160.  
  161.     state, statepos = 0, 0
  162.     user_cancel_states = [1000, -1]
  163.     a, b, c, d, e, f, g = 0, 0, 0, 0, 0, 0, 0
  164.     error_states = [-1]
  165.     ok = False
  166.  
  167.     dev.pen_config = status.getPenConfiguration(dev.getStatusFromDeviceID())
  168.  
  169.     if dev.pen_config in (AGENT_CONFIG_NONE, AGENT_CONFIG_INVALID):
  170.         state, states = 100, [-1]
  171.  
  172.     elif dev.pen_config == AGENT_CONFIG_BLACK_ONLY:
  173.         state, states = 0, [2, 200, 3, -1]
  174.  
  175.     elif dev.pen_config == AGENT_CONFIG_PHOTO_ONLY:
  176.         state, states = 0, [2, 200, 3, -1]
  177.  
  178.     elif dev.pen_config == AGENT_CONFIG_COLOR_ONLY:
  179.         state, states = 0, [2, 300, 3, -1]
  180.  
  181.     elif dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
  182.         state, states = 0, [2, 400, 500, 600, 700, 3, 4, -1]
  183.  
  184.     elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO:
  185.         state, states = 0, [2, 400, 500, 600, 700, 800, 900, 3, 4, -1]
  186.  
  187.     while state != -1:
  188.  
  189.         if state == 0:
  190.             ok = loadpaper_ui()
  191.             if ok:
  192.                 if align_type == 4:
  193.                     alignType4Phase1(dev)
  194.                 elif align_type == 5:
  195.                     alignType5Phase1(dev)
  196.                 elif align_type == 7:
  197.                     alignType7Phase1(dev)
  198.                 else:
  199.                     statepos, states = 0, error_states
  200.             else:
  201.                 statepos, states = 0, user_cancel_states
  202.  
  203.  
  204.         elif state == 2:
  205.             ok, a = paperedge_ui(13)
  206.             if not ok:
  207.                 statepos, states = 0, user_cancel_states
  208.  
  209.         elif state == 3:
  210.             if align_type == 4:
  211.                 alignType4Phase2(dev, a, b, c, d, e)
  212.             elif align_type == 5:
  213.                 alignType5Phase2(dev, a, b, c, d, e, f, g)
  214.             else:
  215.                 alignType7Phase2(dev, a, b, c, d, e, f, g)
  216.  
  217.         elif state == 4:
  218.             ok = loadpaper_ui()
  219.             if ok:
  220.                 if align_type == 4:
  221.                     alignType4Phase3(dev)
  222.                 elif align_type == 5:
  223.                     alignType5Phase3(dev)
  224.                 else:
  225.                     alignType7Phase3(dev)
  226.             else:
  227.                 statepos, states = 0, user_cancel_states
  228.  
  229.         elif state == 100:
  230.             invalidpen_ui()
  231.             state = -1
  232.  
  233.         elif state == 200: # B Line - Black only or photo only
  234.             ok, b = align_ui('B', 'v', 'k', 2, 11)
  235.             if not ok:
  236.                 statepos, states = 0, user_cancel_states
  237.  
  238.         elif state == 300: # B Line - Color only
  239.             ok, b = align_ui('B', 'v', 'kc', 2, 11)
  240.             if not ok:
  241.                 statepos, states = 0, user_cancel_states
  242.  
  243.         elif state == 400: # B Line - 2 pen
  244.             ok, b = align_ui('B', 'h', 'kc', 2, 17)
  245.             if not ok:
  246.                 statepos, states = 0, user_cancel_states
  247.  
  248.         elif state == 500: # C Line
  249.             ok, c = align_ui('C', 'v', 'kc', 2, 17)
  250.             if not ok:
  251.                 statepos, states = 0, user_cancel_states
  252.  
  253.         elif state == 600 : # D Line
  254.             ok, d = align_ui('D', 'v', 'k', 2, 11)
  255.             if not ok:
  256.                 statepos, states = 0, user_cancel_states
  257.  
  258.         elif state == 700: # E Line
  259.             ok, e = align_ui('E', 'v', 'kc', 2, 11)
  260.             if not ok:
  261.                 statepos, states = 0, user_cancel_states
  262.  
  263.         elif state == 800: # F Line
  264.             ok, f = coloradj_ui('F', 21)
  265.             if not ok:
  266.                 statepos, states = 0, user_cancel_states
  267.  
  268.         elif state == 900: # G Line
  269.             ok, f = coloradj_ui('G', 21)
  270.             if not ok:
  271.                 statepos, states = 0, user_cancel_states
  272.  
  273.         elif state == 1000: # User cancel
  274.             ok = False
  275.             log.warning("Alignment canceled at user request.")
  276.  
  277.         state = states[statepos]
  278.         statepos += 1
  279.  
  280.     return ok
  281.  
  282.  
  283. def AlignType6(dev, ui1, ui2, loadpaper_ui):
  284.     state = 0
  285.     ok = False
  286.  
  287.     while state != -1:
  288.         if state == 0:
  289.             state = 2
  290.             #okay, print_page = ui1()
  291.             accept = ui1()
  292.             #print okay, print_page
  293.             if not accept:
  294.                 # Need to printout alignment page
  295.                 state = 1
  296.             #elif okay:
  297.             #else:
  298.                 # Next >
  299.             #    state = 2
  300.  
  301.         elif state == 1: # Load and print
  302.             state = -1
  303.             ok = loadpaper_ui()
  304.             if ok:
  305.                 alignType6Phase1(dev)
  306.                 state = 2
  307.  
  308.         elif state == 2: # Finish
  309.             ui2()
  310.             state = -1
  311.  
  312.  
  313.     return ok
  314.  
  315. def AlignType8(dev, loadpaper_ui, align_ui): # 450
  316.     state, a, b, c, d = 0, 5, 5, 5, 5
  317.     ok = False
  318.  
  319.     while state != -1:
  320.  
  321.         if state == 0:
  322.             state = -1
  323.             ok = loadpaper_ui()
  324.             if ok:
  325.                 num_inks = alignType8Phase1(dev)
  326.                 state = 1
  327.  
  328.         elif state == 1:
  329.             state = -1
  330.             ok, a = align_ui('A', 'v', 'k', 3, 9)
  331.             if ok:
  332.                 state = 2
  333.  
  334.         elif state == 2:
  335.             state = -1
  336.             ok, b = align_ui('B', 'v', 'c', 3, 9)
  337.             if ok:
  338.                 state = 3
  339.  
  340.         elif state == 3:
  341.             state = -1
  342.             ok, c = align_ui('C', 'v', 'kc', 3, 9)
  343.             if ok:
  344.                 state = 4
  345.  
  346.         elif state == 4:
  347.             state = -1
  348.             ok, d = align_ui('D', 'h', 'kc', 3, 9)
  349.             if ok:
  350.                 state = 5
  351.  
  352.         elif state == 5:
  353.             alignType8Phase2(dev, num_inks, a, b, c, d)
  354.             state = -1
  355.  
  356.     return ok
  357.  
  358.  
  359. def AlignType10(dev, loadpaper_ui, align_ui):
  360.     pen_config = status.getPenConfiguration(dev.getStatusFromDeviceID())
  361.     log.debug("Pen config=%d" % pen_config)
  362.  
  363.     pattern = 1
  364.     if pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
  365.         pattern = 2
  366.     elif pen_config in (AGENT_CONFIG_COLOR_AND_PHOTO, AGENT_CONFIG_COLOR_AND_GREY):
  367.         pattern = 3
  368.  
  369.     log.debug("Pattern=%d" % pattern)
  370.  
  371.     state = 0
  372.  
  373.     while state != -1:
  374.         if state == 0:
  375.             state = -1
  376.             ok = loadpaper_ui()
  377.             if ok:
  378.                 alignType10Phase1(dev)
  379.                 state = 1
  380.  
  381.         elif state == 1:
  382.             values = align_ui(pattern)
  383.             log.debug(values)
  384.             alignType10Phase2(dev, values, pattern)
  385.             state = 2
  386.  
  387.         elif state == 2:
  388.             state = -1
  389.             ok = loadpaper_ui()
  390.             if ok:
  391.                 alignType10Phase3(dev)
  392.  
  393.  
  394. def alignType10Phase1(dev):
  395.     dev.writeEmbeddedPML(pml.OID_PRINT_INTERNAL_PAGE,
  396.                          pml.PRINT_INTERNAL_PAGE_ALIGNMENT_PAGE)
  397.  
  398. def alignType10Phase2(dev, values, pattern):
  399.     #if pattern == 2:
  400.     #    pattern = 3
  401.     i, p = 0, ''.join([pcl.UEL, '\n'])
  402.     for x in values:
  403.         i += 1
  404.         if not x:
  405.             break
  406.         p = ''.join([p, pcl.ESC, '*o5W\x1a', chr(i), '\x00', chr(pattern), chr(x), '\n'])
  407.     
  408.     p = ''.join([p, pcl.UEL]) 
  409.     
  410.     dev.printData(p)
  411.  
  412. def alignType10Phase3(dev):
  413.     dev.writeEmbeddedPML(pml.OID_PRINT_INTERNAL_PAGE,
  414.                          pml.PRINT_INTERNAL_PAGE_ALIGNMENT_PAGE_VERIFICATION)
  415.  
  416.  
  417.  
  418. def alignType2Phase1(dev): # Type 2 (8xx)
  419.     dev.writeEmbeddedPML(pml.OID_AGENT2_VERTICAL_ALIGNMENT, 0)
  420.     dev.writeEmbeddedPML(pml.OID_AGENT2_HORIZONTAL_ALIGNMENT, 0)
  421.     dev.writeEmbeddedPML(pml.OID_AGENT1_BIDIR_ADJUSTMENT, 0)
  422.     dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, 0)
  423.     dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', 'align1_8xx.pcl.gz'))
  424.  
  425.  
  426. def alignType2Phase2(dev, a, b, c, d): # (8xx)
  427.     dev.writeEmbeddedPML(pml.OID_AGENT2_VERTICAL_ALIGNMENT, (a - 6) * 12)
  428.     dev.writeEmbeddedPML(pml.OID_AGENT2_HORIZONTAL_ALIGNMENT, (b - 6) * 12)
  429.     dev.writeEmbeddedPML(pml.OID_AGENT1_BIDIR_ADJUSTMENT, (c - 3) * 12)
  430.     dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, (d - 3) * 12)
  431.     dev.writeEmbeddedPML(pml.OID_MARKING_AGENTS_INITIALIZED, 3)
  432.     dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', 'align2_8xx.pcl.gz'))
  433.  
  434.  
  435. def alignType3Phase1(dev): # Type 3 (9xx)
  436.     dev.writeEmbeddedPML(pml.OID_AGENT2_VERTICAL_ALIGNMENT, 0)
  437.     dev.writeEmbeddedPML(pml.OID_AGENT2_HORIZONTAL_ALIGNMENT, 0)
  438.     dev.writeEmbeddedPML(pml.OID_AGENT1_BIDIR_ADJUSTMENT, 0)
  439.     dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, 0)
  440.     dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', 'align1_9xx.pcl.gz'))
  441.  
  442.  
  443. def alignType3Phase2(dev, a, b, c, d): # Type 3 (9xx)
  444.     dev.writeEmbeddedPML(pml.OID_AGENT2_VERTICAL_ALIGNMENT, (a - 6) * 12)
  445.     dev.writeEmbeddedPML(pml.OID_AGENT2_HORIZONTAL_ALIGNMENT, (6 - b) * 12)
  446.     dev.writeEmbeddedPML(pml.OID_AGENT1_BIDIR_ADJUSTMENT, (6 - c) * 12)
  447.     dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, (6 - d) * 6)
  448.  
  449.  
  450. def alignType3Phase3(dev): # Type 3 (9xx)
  451.     dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', 'align3_9xx.pcl.gz'))
  452.  
  453.  
  454. def alignType3Phase4(dev, zca): # Type 3 (9xx)
  455.     dev.writeEmbeddedPML(pml.OID_MARKING_AGENTS_INITIALIZED, 3)
  456.     dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', 'align2_9xx.pcl.gz'))
  457.  
  458.  
  459. def alignType4Phase1(dev): # Type 4 (xBow/LIDIL 0.3.8)
  460.     dev.printData(ldl.buildLIDILPacket(ldl.PACKET_TYPE_RESUME_NORMAL_OPERATION))
  461.  
  462.     if dev.pen_config in (AGENT_CONFIG_NONE, AGENT_CONFIG_INVALID):
  463.         return
  464.  
  465.     elif dev.pen_config == AGENT_CONFIG_BLACK_ONLY:
  466.         ldl_file = 'cbbcal.ldl.gz'
  467.  
  468.     elif dev.pen_config == AGENT_CONFIG_COLOR_ONLY:
  469.         ldl_file = 'cbccal.ldl.gz'
  470.  
  471.     elif dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
  472.         ldl_file = 'cb2pcal.ldl.gz'
  473.  
  474.     dev.printData(ldl.buildSetPrinterAlignmentPacket(0, 0, 0, 0))
  475.     dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'ldl', ldl_file))
  476.  
  477.  
  478. def alignType4Phase2(dev, a, b, c, d, e): # Type 4 (LIDIL 0.3.8)
  479.     log.debug("A=%d, B=%d, C=%d, D=%d, E=%d" % (a, b, c, d, e))
  480.  
  481.     if dev.pen_config in (AGENT_CONFIG_NONE, AGENT_CONFIG_INVALID):
  482.         return
  483.  
  484.     # ZCA
  485.     zca = (7 - a) * -48
  486.     dev.printData(ldl.buildZCAPacket(zca))
  487.  
  488.     if dev.pen_config == AGENT_CONFIG_BLACK_ONLY:
  489.         k_bidi = (6 - b) * 2
  490.         dev.printData(ldl.buildSetPrinterAlignmentPacket(k_bidi, 0, 0, 0))
  491.  
  492.     elif dev.pen_config == AGENT_CONFIG_COLOR_ONLY:
  493.         cmy_bidi = (6 - b) * 2
  494.         dev.printData(ldl.buildSetPrinterAlignmentPacket(0, 0, 0, cmy_bidi))
  495.  
  496.     elif dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
  497.         vert = (9 - b) * 2
  498.         hort = (9 - c) * -2
  499.         k_bidi = (6 - d) * 2
  500.         cmy_bidi = (6 - e) * 2
  501.  
  502.         dev.printData(ldl.buildSetPrinterAlignmentPacket(k_bidi, hort, vert, cmy_bidi))
  503.  
  504.     # Set alignment
  505.     dev.printData(ldl.buildSetPensAlignedPacket())
  506.  
  507.  
  508. def alignType4Phase3(dev): # Type 4 (LIDIL 0.3.8)
  509.     if dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
  510.         dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'ldl', 'cb2pcal_done.ldl.gz'))
  511.  
  512.  
  513. def alignType5Phase1(dev): # Type 5 (xBow+/LIDIL 0.4.3)
  514.     dev.printData(ldl.buildLIDILPacket(ldl.PACKET_TYPE_RESUME_NORMAL_OPERATION))
  515.  
  516.     if dev.pen_config in (AGENT_CONFIG_NONE, AGENT_CONFIG_INVALID):
  517.         return
  518.  
  519.     elif dev.pen_config == AGENT_CONFIG_BLACK_ONLY:
  520.         ldl_file = 'cbbcal.ldl.gz'
  521.  
  522.     elif dev.pen_config == AGENT_CONFIG_PHOTO_ONLY:
  523.         ldl_file = 'cbpcal.ldl.gz'
  524.  
  525.     elif dev.pen_config == AGENT_CONFIG_COLOR_ONLY:
  526.         ldl_file = 'cbccal.ldl.gz'
  527.  
  528.     elif dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
  529.         ldl_file = 'cb2pcal.ldl.gz'
  530.  
  531.     elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO:
  532.         ldl_file = 'cbcpcal.ldl.gz'
  533.  
  534.     dev.printData(ldl.buildZCAPacket(0))
  535.     dev.printData(ldl.buildColorHortPacket(0))
  536.     dev.printData(ldl.buildColorVertPacket(0))
  537.     dev.printData(ldl.buildBlackVertPacket(0))
  538.     dev.printData(ldl.buildBlackHortPacket(0))
  539.     dev.printData(ldl.buildBlackBidiPacket(0))
  540.     dev.printData(ldl.buildColorBidiPacket(0))
  541.     dev.printData(ldl.buildPhotoHuePacket(0))
  542.     dev.printData(ldl.buildColorHuePacket(0))
  543.  
  544.     dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'ldl', ldl_file))
  545.  
  546.  
  547. def alignType5Phase2(dev, a, b, c, d, e, f, g): # Type 5 (xBow+/LIDIL 0.4.3)
  548.     log.debug("A=%d, B=%d, C=%d, D=%d, E=%d, F=%d, G=%d" % (a, b, c, d, e, f, g))
  549.  
  550.     if dev.pen_config in (AGENT_CONFIG_NONE, AGENT_CONFIG_INVALID):
  551.         return
  552.  
  553.     # ZCA
  554.     zca = (7 - a) * -48
  555.     dev.printData(ldl.buildZCAPacket(zca))
  556.  
  557.     if dev.pen_config == AGENT_CONFIG_BLACK_ONLY:
  558.         k_bidi = (6 - b) * 2
  559.         dev.printData(ldl.buildBlackBidiPacket(k_bidi))
  560.  
  561.     elif dev.pen_config == AGENT_CONFIG_PHOTO_ONLY:
  562.         kcm_bidi = (6 - b) * 2
  563.         dev.printData(ldl.buildPhotoBidiPacket(kcm_bidi))
  564.  
  565.     elif dev.pen_config == AGENT_CONFIG_COLOR_ONLY:
  566.         cmy_bidi = (6 - b) * 2
  567.         dev.printData(ldl.buildColorBidiPacket(cmy_bidi))
  568.  
  569.     elif dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
  570.         vert = (9 - b) * 2
  571.         hort = (9 - c) * -2
  572.         k_bidi = (6 - d) * 2
  573.         cmy_bidi = (6 - e) * 2
  574.  
  575.         dev.printData(ldl.buildColorHortPacket(0))
  576.         dev.printData(ldl.buildColorVertPacket(0))
  577.         dev.printData(ldl.buildBlackVertPacket(vert))
  578.         dev.printData(ldl.buildBlackHortPacket(hort))
  579.         dev.printData(ldl.buildBlackBidiPacket(k_bidi))
  580.         dev.printData(ldl.buildColorBidiPacket(cmy_bidi))
  581.  
  582.     elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO:
  583.         vert = (9 - b) * 2
  584.         hort = (9 - c) * -2
  585.         cmy_bidi = (6 - d) * 2
  586.         kcm_bidi = (6 - e) * 2
  587.  
  588.         photo_adj = colorcal.PHOTO_ALIGN_TABLE[f][g]
  589.         color_adj = colorcal.COLOR_ALIGN_TABLE[f][g]
  590.  
  591.         dev.printData(ldl.buildPhotoHortPacket(hort))
  592.         dev.printData(ldl.buildPhotoVertPacket(vert))
  593.         dev.printData(ldl.buildColorHortPacket(0))
  594.         dev.printData(ldl.buildColorVertPacket(0))
  595.         dev.printData(ldl.buildPhotoBidiPacket(kcm_bidi))
  596.         dev.printData(ldl.buildColorBidiPacket(cmy_bidi))
  597.         dev.printData(ldl.buildPhotoHuePacket(photo_adj))
  598.         dev.printData(ldl.buildColorHuePacket(color_adj))
  599.  
  600.     # Set alignment
  601.     dev.printData(ldl.buildSetPensAlignedPacket())
  602.  
  603.  
  604. def alignType5Phase3(dev): # Type 5 (xBow+/LIDIL 0.4.3)
  605.  
  606.     if dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
  607.         dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'ldl', "cb2pcal_done.ldl.gz"))
  608.  
  609.     elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO:
  610.         dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'ldl', "cbccal_done.ldl.gz"))
  611.  
  612.  
  613. def alignType6Phase1(dev): # Type 6 (xBow AiO)
  614.     dev.printData(ldl.buildPrintInternalPagePacket())
  615.  
  616.  
  617. def alignType7Phase1(dev): # Type 7 (xBow VIP)
  618.     # Zero out all alignment values
  619.     dev.writeEmbeddedPML(pml.OID_AGENT1_BIDIR_ADJUSTMENT, 0)
  620.  
  621.     dev.writeEmbeddedPML(pml.OID_AGENT2_VERTICAL_ALIGNMENT, 0)
  622.     dev.writeEmbeddedPML(pml.OID_AGENT2_HORIZONTAL_ALIGNMENT, 0)
  623.     dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, 0)
  624.  
  625.     dev.writeEmbeddedPML(pml.OID_AGENT3_VERTICAL_ALIGNMENT, 0)
  626.     dev.writeEmbeddedPML(pml.OID_AGENT3_HORIZONTAL_ALIGNMENT, 0)
  627.     dev.writeEmbeddedPML(pml.OID_AGENT3_BIDIR_ADJUSTMENT, 0)
  628.  
  629.     dev.writeEmbeddedPML(pml.OID_ZCA, 0)
  630.  
  631.     if dev.pen_config in (AGENT_CONFIG_NONE, AGENT_CONFIG_INVALID):
  632.         return
  633.  
  634.     elif dev.pen_config == AGENT_CONFIG_BLACK_ONLY:
  635.         pcl_file = 'crbcal.pcl.gz'
  636.  
  637.     elif dev.pen_config == AGENT_CONFIG_PHOTO_ONLY:
  638.         pcl_file = 'crpcal.pcl.gz'
  639.  
  640.     elif dev.pen_config == AGENT_CONFIG_COLOR_ONLY:
  641.         pcl_file = 'crccal.pcl.gz'
  642.  
  643.     elif dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
  644.         pcl_file = 'crcbcal.pcl.gz'
  645.  
  646.     elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO:
  647.         pcl_file = 'crcpcal.pcl.gz'
  648.  
  649.     dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', pcl_file))
  650.  
  651.  
  652. def alignType7Phase2(dev, a, b, c, d, e, f, g): # Type 7 (xBow VIP)
  653.     log.debug("A=%d, B=%d, C=%d, D=%d, E=%d, F=%d, G=%d" % (a, b, c, d, e, f, g))
  654.  
  655.     # ZCA
  656.     zca = (7 - a) * -12
  657.     dev.writeEmbeddedPML(pml.OID_ZCA, zca)
  658.  
  659.     if dev.pen_config == AGENT_CONFIG_BLACK_ONLY:
  660.         k_bidi = (6 - b) * 6
  661.         dev.writeEmbeddedPML(pml.OID_AGENT1_BIDIR_ADJUSTMENT, k_bidi)
  662.  
  663.     elif dev.pen_config == AGENT_CONFIG_PHOTO_ONLY:
  664.         kcm_bidi = (6 - b) * 6
  665.         dev.writeEmbeddedPML(pml.OID_AGENT3_BIDIR_ADJUSTMENT, kcm_bidi)
  666.  
  667.     elif dev.pen_config == AGENT_CONFIG_COLOR_ONLY:
  668.         cmy_bidi = (6 - b) * 6
  669.         dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, cmy_bidi)
  670.  
  671.     elif dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
  672.         vert = (9 - b) * 6
  673.         hort = (9 - c) * -6
  674.         k_bidi = (6 - d) * 6
  675.         cmy_bidi = (6 - e) * 6
  676.  
  677.         dev.writeEmbeddedPML(pml.OID_AGENT1_BIDIR_ADJUSTMENT, k_bidi)
  678.         dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, cmy_bidi)
  679.         dev.writeEmbeddedPML(pml.OID_AGENT2_HORIZONTAL_ALIGNMENT, hort)
  680.         dev.writeEmbeddedPML(pml.OID_AGENT2_VERTICAL_ALIGNMENT, vert)
  681.  
  682.     elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO:
  683.         vert = (9 - b) * 6
  684.         hort = (9 - c) * -6
  685.         cmy_bidi = (6 - d) * 6
  686.         kcm_bidi = (6 - e) * 6
  687.  
  688.         photo_adj = colorcal.PHOTO_ALIGN_TABLE[f][g]
  689.         color_adj = colorcal.COLOR_ALIGN_TABLE[f][g]
  690.  
  691.         x = (color_adj << 8) + photo_adj
  692.  
  693.         dev.writeEmbeddedPML(pml.OID_COLOR_CALIBRATION_SELECTION, x)
  694.  
  695.         dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, cmy_bidi)
  696.         dev.writeEmbeddedPML(pml.OID_AGENT3_BIDIR_ADJUSTMENT, kcm_bidi)
  697.         dev.writeEmbeddedPML(pml.OID_AGENT3_HORIZONTAL_ALIGNMENT, hort)
  698.         dev.writeEmbeddedPML(pml.OID_AGENT3_VERTICAL_ALIGNMENT, vert)
  699.  
  700.  
  701. def alignType7Phase3(dev): # Type 7 (xBow VIP)
  702.     dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', "crcaldone.pcl.gz"))
  703.  
  704.  
  705. def alignType8Phase1(dev): # 450
  706.     pens = dev.getStatusFromDeviceID()['agents']
  707.     pen_types = [pens[x]['type'] for x in range(len(pens))]
  708.  
  709.     if AGENT_TYPE_KCM in pen_types:
  710.         f, num_inks = 'align6_450.pcl.gz', 6
  711.     else:
  712.         f, num_inks = 'align4_450.pcl.gz', 4
  713.  
  714.     dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', f))
  715.  
  716.     return num_inks
  717.  
  718.  
  719. def alignType8Phase2(dev, num_inks, a, b, c, d): # 450
  720.     align_values1 = {1 : '\x00\x00\x18',
  721.                       2 : '\x00\x00\x12',
  722.                       3 : '\x00\x00\x0c',
  723.                       4 : '\x00\x00\x06',
  724.                       5 : '\x00\x00\x00',
  725.                       6 : '\x01\x00\x06',
  726.                       7 : '\x01\x00\x0c',
  727.                       8 : '\x01\x00\x12',
  728.                       9 : '\x01\x00\x18',
  729.                     }
  730.  
  731.     align_values2 = {1 : '\x00\x00\x12',
  732.                       2 : '\x00\x00\x0c',
  733.                       3 : '\x00\x00\x06',
  734.                       4 : '\x00\x00\x00',
  735.                       5 : '\x01\x00\x06',
  736.                       6 : '\x01\x00\x0c',
  737.                       7 : '\x01\x00\x12',
  738.                       8 : '\x01\x00\x18',
  739.                       9 : '\x01\x00\x1e',
  740.                     }
  741.  
  742.     align_values3 = {1 : '\x00\x00\x24',
  743.                       2 : '\x00\x00\x18',
  744.                       3 : '\x00\x00\x12',
  745.                       4 : '\x00\x00\x06',
  746.                       5 : '\x00\x00\x00',
  747.                       6 : '\x01\x00\x06',
  748.                       7 : '\x01\x00\x12',
  749.                       8 : '\x01\x00\x18',
  750.                       9 : '\x01\x00\x24',
  751.                     }
  752.  
  753.     if num_inks == 4:
  754.         s = ''.join([pcl.UEL,
  755.               '@PJL ENTER LANGUAGE=PCL3GUI\n',
  756.               pcl.RESET,
  757.               pcl.ESC, '*o5W\x1a\x01', align_values1[a],
  758.               pcl.ESC, '*o5W\x1a\x02', align_values2[a],
  759.               pcl.ESC, '*o5W\x1a\x03', align_values1[b],
  760.               pcl.ESC, '*o5W\x1a\x04', align_values1[b],
  761.               pcl.ESC, '*o5W\x1a\x08', align_values1[c],
  762.               pcl.ESC, '*o5W\x1a\x07', align_values1[d],
  763.               pcl.RESET,
  764.               pcl.UEL])
  765.  
  766.     else: # 6
  767.         s = ''.join([pcl.UEL,
  768.               '@PJL ENTER LANGUAGE=PCL3GUI\n',
  769.               pcl.RESET,
  770.               pcl.ESC, '*o5W\x1a\x05', align_values1[a],
  771.               pcl.ESC, '*o5W\x1a\x06', align_values3[a],
  772.               pcl.ESC, '*o5W\x1a\x03', align_values1[b],
  773.               pcl.ESC, '*o5W\x1a\x04', align_values1[b],
  774.               pcl.ESC, '*o5W\x1a\x0a', align_values1[c],
  775.               pcl.ESC, '*o5W\x1a\x09', align_values1[d],
  776.               pcl.RESET,
  777.               pcl.UEL])
  778.  
  779.     dev.printData(s)
  780.  
  781.  
  782. # ********************** Clean **********************
  783.  
  784.  
  785. def cleaning(dev, clean_type, level1, level2, level3,
  786.               loadpaper_ui, dlg1, dlg2, dlg3, wait_ui):
  787.  
  788.     CLEAN_SLEEP_TIMER = 60
  789.     state = 0
  790.  
  791.     while state != -1:
  792.         if state == 0: # Initial level1 print
  793.             state = 1
  794.             if clean_type == 3:
  795.                 ok = loadpaper_ui()
  796.                 if not ok:
  797.                     state = -1
  798.  
  799.         elif state == 1: # Do level 1
  800.             level1(dev)
  801.             #wait_ui(CLEAN_SLEEP_TIMER)
  802.             state = 2
  803.  
  804.         elif state == 2: # Load plain paper
  805.             state = 3
  806.             ok = loadpaper_ui()
  807.             if not ok:
  808.                 state = -1
  809.  
  810.         elif state == 3: # Print test page
  811.             state = 4
  812.             print_clean_test_page(dev)
  813.  
  814.         elif state == 4: # Need level 2?
  815.             state = -1
  816.             ok = dlg1()
  817.             if not ok:
  818.                 state = 5
  819.  
  820.         elif state == 5: # Do level 2
  821.             level2(dev)
  822.             #wait_ui(CLEAN_SLEEP_TIMER)
  823.             state = 6
  824.  
  825.         elif state == 6: # Load plain paper
  826.             state = 7
  827.             ok = loadpaper_ui()
  828.             if not ok:
  829.                 state = -1
  830.  
  831.         elif state == 7: # Print test page
  832.             state = 8
  833.             print_clean_test_page(dev)
  834.  
  835.         elif state == 8: # Need level 3?
  836.             state = -1
  837.             ok = dlg2()
  838.             if not ok:
  839.                 state = 9
  840.  
  841.         elif state == 9: # Do level 3
  842.             level3(dev)
  843.             #wait_ui(CLEAN_SLEEP_TIMER*2)
  844.             state = 10
  845.  
  846.         elif state == 10: # Load plain paper
  847.             state = 11
  848.             ok = loadpaper_ui()
  849.             if not ok:
  850.                 state = -1
  851.  
  852.         elif state == 11: # Print test page
  853.             state = 12
  854.             print_clean_test_page(dev)
  855.  
  856.         elif state == 12:
  857.             state = -1
  858.             dlg3()
  859.  
  860.     return ok
  861.  
  862.  
  863. def print_clean_test_page(dev):
  864.  
  865.     dev.printGzipFile(os.path.join(prop.home_dir, 'data',
  866.                       'ps', 'clean_page.pdf.gz'), raw=False)
  867.  
  868.  
  869. def cleanType1(dev): # PCL, Level 1
  870.     dev.writeEmbeddedPML(pml.OID_CLEAN, pml.CLEAN_CLEAN)
  871.  
  872.  
  873. def primeType1(dev): # PCL, Level 2
  874.     dev.writeEmbeddedPML(pml.OID_CLEAN, pml.CLEAN_PRIME)
  875.  
  876.  
  877. def wipeAndSpitType1(dev): # PCL, Level 3
  878.     dev.writeEmbeddedPML(pml.OID_CLEAN, pml.CLEAN_WIPE_AND_SPIT)
  879.  
  880.  
  881. def cleanType2(dev): # LIDIL, Level 1
  882.     p = ldl.buildLIDILPacket(ldl.PACKET_TYPE_COMMAND,
  883.                              ldl.COMMAND_HANDLE_PEN,
  884.                              ldl.COMMAND_HANDLE_PEN_CLEAN_LEVEL1)
  885.  
  886.     dev.printData(p)
  887.  
  888.  
  889. def primeType2(dev): # LIDIL, Level 2
  890.     p = ldl.buildLIDILPacket(ldl.PACKET_TYPE_COMMAND,
  891.                              ldl.COMMAND_HANDLE_PEN,
  892.                              ldl.COMMAND_HANDLE_PEN_CLEAN_LEVEL2)
  893.  
  894.     dev.printData(p)
  895.  
  896.  
  897. def wipeAndSpitType2(dev): # LIDIL, Level 3
  898.     p = ldl.buildLIDILPacket(ldl.PACKET_TYPE_COMMAND,
  899.                              ldl.COMMAND_HANDLE_PEN,
  900.                              ldl.COMMAND_HANDLE_PEN_CLEAN_LEVEL3)
  901.  
  902.     dev.printData(p)
  903.  
  904.  
  905. # ********************** Color Cal **********************
  906.  
  907.  
  908. def colorCalType1(dev, loadpaper_ui, colorcal_ui, photopenreq_ui): # 450
  909.     value, state = 4, 0
  910.     ok = False
  911.     while state != -1:
  912.  
  913.         if state == 0:
  914.             if colorCalType1PenCheck(dev):
  915.                 state = 1
  916.             else:
  917.                 state = 100
  918.  
  919.         elif state == 1:
  920.             state = -1
  921.             ok = loadpaper_ui()
  922.             if ok:
  923.                 colorCalType1Phase1(dev)
  924.                 state = 2
  925.  
  926.         elif state == 2:
  927.             state = -1
  928.             ok, value = colorcal_ui()
  929.             if ok:
  930.                 state = 3
  931.  
  932.         elif state == 3:
  933.             colorCalType1Phase2(dev, value)
  934.             state = -1
  935.  
  936.         elif state == 100:
  937.             ok = False
  938.             photopenreq_ui()
  939.             state = -1
  940.  
  941.     return ok
  942.  
  943.  
  944. def colorCalType1PenCheck(dev): # 450
  945.     pens = dev.getStatusFromDeviceID()['agents']
  946.     pen_types = [pens[x]['type'] for x in range(len(pens))]
  947.  
  948.     if AGENT_TYPE_KCM in pen_types:
  949.         return True
  950.  
  951.     else:
  952.         log.error("Cannot perform color calibration with no photo pen installed.")
  953.         return False
  954.  
  955.  
  956. def colorCalType1Phase1(dev): # 450
  957.     dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', 'colorcal1_450.pcl.gz'))
  958.  
  959.  
  960. def colorCalType1Phase2(dev, value): # 450
  961.  
  962.     color_cal = {1 : ('\x0f\x3c', '\x17\x0c'),
  963.                   2 : ('\x10\xcc', '\x15\x7c'),
  964.                   3 : ('\x12\x5c', '\x13\xec'),
  965.                   4 : ('\x13\xec', '\x12\x5c'),
  966.                   5 : ('\x15\x7c', '\x10\xcc'),
  967.                   6 : ('\x17\x0c', '\x0f\x3c'),
  968.                   7 : ('\x18\x9c', '\x0d\xac'),
  969.                 }
  970.  
  971.     s = ''.join([pcl.UEL,
  972.                   '@PJL ENTER LANGUAGE=PCL3GUI\n',
  973.                   pcl.RESET,
  974.                   pcl.ESC, '*o5W\x1a\x0c\x00', color_cal[value][0],
  975.                   pcl.ESC, '*o5W\x1a\x0b\x00', color_cal[value][1],
  976.                   pcl.RESET,
  977.                   pcl.UEL])
  978.  
  979.     dev.printData(s)
  980.  
  981.  
  982. #
  983. # COLOR CAL TYPE 2
  984. #
  985.  
  986. def colorCalType2(dev, loadpaper_ui, colorcal_ui, photopenreq_ui):
  987.     value, state = 4, 0
  988.     ok = True
  989.     while state != -1:
  990.  
  991.         if state == 0:
  992.             if colorCalType2PenCheck(dev):
  993.                 state = 1
  994.             else:
  995.                 state = 100
  996.  
  997.         elif state == 1:
  998.             state = -1
  999.             ok = loadpaper_ui()
  1000.             if ok:
  1001.                 colorCalType2Phase1(dev)
  1002.                 state = 2
  1003.  
  1004.         elif state == 2:
  1005.             state = -1
  1006.             ok, value = colorcal_ui()
  1007.             if ok:
  1008.                 state = 3
  1009.  
  1010.         elif state == 3:
  1011.             colorCalType2Phase2(dev, value)
  1012.             state = -1
  1013.  
  1014.         elif state == 100:
  1015.             photopenreq_ui()
  1016.             ok = False
  1017.             state = -1
  1018.  
  1019.     return ok
  1020.  
  1021. def colorCalType2PenCheck(dev):
  1022.     pens = dev.getStatusFromDeviceID()['agents']
  1023.     pen_types = [pens[x]['type'] for x in range(len(pens))]
  1024.  
  1025.     if not AGENT_TYPE_NONE in pen_types:
  1026.         return True
  1027.  
  1028.     else:
  1029.         log.error("Cannot perform color calibration with pens missing.")
  1030.         return False
  1031.  
  1032. def colorCalType2Phase1(dev):
  1033.     dev.writeEmbeddedPML(pml.OID_PRINT_INTERNAL_PAGE,
  1034.                          pml.PRINT_INTERNAL_PAGE_COLOR_CAL)
  1035.  
  1036.  
  1037.  
  1038. def colorCalType2Phase2(dev, value):
  1039.     c = colorcal.COLOR_CAL_TABLE
  1040.     p = ''.join(['\x1b&b19WPML \x04\x00\x06\x01\x04\x01\x05\x01\t\x08\x04',
  1041.                    chr(c[value*4]+100), chr(c[value*4+1]+100),
  1042.                    chr(c[value*4+2]+100), chr(c[value*4+3]+100),
  1043.                    '\x1b%-12345X'])
  1044.  
  1045.     dev.printData(p)
  1046.  
  1047.  
  1048.  
  1049. #
  1050. # COLOR CAL TYPE 3
  1051. #
  1052.  
  1053. def colorCalType3(dev, loadpaper_ui, colorcal_ui, photopenreq_ui):
  1054.     value, state = 4, 0
  1055.     ok = True
  1056.     while state != -1:
  1057.  
  1058.         if state == 0:
  1059.             if colorCalType3PenCheck(dev):
  1060.                 state = 1
  1061.             else:
  1062.                 state = 100
  1063.  
  1064.         elif state == 1:
  1065.             state = -1
  1066.             ok = loadpaper_ui()
  1067.             if ok:
  1068.                 colorCalType3Phase1(dev)
  1069.                 state = 2
  1070.  
  1071.         elif state == 2:
  1072.             state = -1
  1073.             ok, valueA = colorcal_ui('A', 21)
  1074.             if ok:
  1075.                 state = 3
  1076.  
  1077.         elif state == 3:
  1078.             state = -1
  1079.             ok, valueB = colorcal_ui('B', 21)
  1080.             if ok:
  1081.                 state = 4
  1082.  
  1083.         elif state == 4:
  1084.             colorCalType3Phase2(dev, valueA, valueB)
  1085.             state = -1
  1086.  
  1087.         elif state == 100:
  1088.             photopenreq_ui()
  1089.             ok = False
  1090.             state = -1
  1091.  
  1092.     return ok
  1093.  
  1094. def colorCalType3PenCheck(dev):
  1095.     pens = dev.getStatusFromDeviceID()['agents']
  1096.     pen_types = [pens[x]['type'] for x in range(len(pens))]
  1097.  
  1098.     if AGENT_TYPE_KCM in pen_types or \
  1099.       AGENT_TYPE_BLUE in pen_types:
  1100.         return True
  1101.  
  1102.     else:
  1103.         log.error("Cannot perform color calibration with no photo (or photo blue) pen installed.")
  1104.         return False
  1105.  
  1106.  
  1107. def colorCalType3Phase1(dev):
  1108.     dev.writeEmbeddedPML(pml.OID_PRINT_INTERNAL_PAGE,
  1109.                          pml.PRINT_INTERNAL_PAGE_COLOR_CAL)
  1110.  
  1111. def colorCalType3Phase2(dev, A, B):
  1112.     photo_adj = colorcal.PHOTO_ALIGN_TABLE[A][B]
  1113.     color_adj = colorcal.COLOR_ALIGN_TABLE[A][B]
  1114.     adj_value = (color_adj << 8L) + photo_adj
  1115.  
  1116.     dev.writeEmbeddedPML(pml.OID_COLOR_CALIBRATION_SELECTION, adj_value)
  1117.  
  1118.  
  1119. def colorCalType4(dev, loadpaper_ui, colorcal_ui, wait_ui):
  1120.     state = 0
  1121.     ok = True
  1122.  
  1123.     while state != -1:
  1124.         if state == 0:
  1125.             state = -1
  1126.             ok = loadpaper_ui()
  1127.             if ok:
  1128.                 colorCalType4Phase1(dev)
  1129.                 state = 2
  1130.  
  1131.         elif state == 2:
  1132.             state = -1
  1133.             #wait_ui(90)
  1134.             ok, values = colorcal_ui()
  1135.             if ok:
  1136.                 state = 3
  1137.  
  1138.         elif state == 3:
  1139.             colorCalType4Phase2(dev, values)
  1140.             #wait_ui(5)
  1141.             state = 4
  1142.  
  1143.         elif state == 4:
  1144.             state = -1
  1145.             ok = loadpaper_ui()
  1146.             if ok:
  1147.                 colorCalType4Phase3(dev)
  1148.                 state = -1
  1149.  
  1150.     return ok
  1151.  
  1152.  
  1153. def colorCalType4Phase1(dev):
  1154.     dev.writeEmbeddedPML(pml.OID_PRINT_INTERNAL_PAGE,
  1155.                             pml.PRINT_INTERNAL_PAGE_COLOR_CAL)
  1156.  
  1157.  
  1158. def colorCalType4AdjValue(value):
  1159.     if value >= 100:
  1160.         return 200
  1161.     return value+100
  1162.  
  1163.  
  1164. def colorCalType4Phase2(dev, values):
  1165.     if -1 in values:
  1166.         Cadj, Madj, Yadj, cadj, madj, kadj = 244, 244, 244, 244, 244, 244
  1167.     else:
  1168.         sel1, sel2, sel3, sel4 = values
  1169.         tmp1 = colorcal.TYPE_4_C_TABLE[sel1][sel2]
  1170.         tmp2 = colorcal.TYPE_4_LC_TABLE[sel3][sel4]
  1171.  
  1172.         Cadj = colorCalType4AdjValue(tmp1)
  1173.         cadj = colorCalType4AdjValue(tmp1+tmp2)
  1174.  
  1175.         tmp1 = colorcal.TYPE_4_M_TABLE[sel1][sel2]
  1176.         tmp2 = colorcal.TYPE_4_LM_TABLE[sel3][sel4]
  1177.  
  1178.         Madj = colorCalType4AdjValue(tmp1)
  1179.         madj = colorCalType4AdjValue(tmp1+tmp2)
  1180.  
  1181.         Yadj = colorCalType4AdjValue(colorcal.TYPE_4_Y_TABLE[sel1][sel2])
  1182.         kadj = colorCalType4AdjValue(0)
  1183.  
  1184.     log.debug("C=%d, M=%d, Y=%d, c=%d, m=%d, k=%d\n" % (Cadj, Madj, Yadj, cadj, madj, kadj))
  1185.  
  1186.     dev.writeEmbeddedPML(pml.OID_COLOR_CALIBRATION_ARRAY_1,
  1187.                             kadj)
  1188.  
  1189.     dev.writeEmbeddedPML(pml.OID_COLOR_CALIBRATION_ARRAY_2,
  1190.                             Cadj)
  1191.  
  1192.     dev.writeEmbeddedPML(pml.OID_COLOR_CALIBRATION_ARRAY_3,
  1193.                             Madj)
  1194.  
  1195.     dev.writeEmbeddedPML(pml.OID_COLOR_CALIBRATION_ARRAY_4,
  1196.                             Yadj)
  1197.  
  1198.     dev.writeEmbeddedPML(pml.OID_COLOR_CALIBRATION_ARRAY_5,
  1199.                             cadj)
  1200.  
  1201.     dev.writeEmbeddedPML(pml.OID_COLOR_CALIBRATION_ARRAY_6,
  1202.                             madj)
  1203.  
  1204.  
  1205.  
  1206. def colorCalType4Phase3(dev):
  1207.     dev.writeEmbeddedPML(pml.OID_PRINT_INTERNAL_PAGE,
  1208.                          pml.PRINT_INTERNAL_PAGE_COLOR_PALETTE_CMYK_PAGE)
  1209.  
  1210.  
  1211.  
  1212. def colorCalType5(dev, loadpaper_ui):
  1213.     if loadpaper_ui():
  1214.         dev.printData("""\x1b%-12345X@PJL ENTER LANGUAGE=PCL3GUI\n\x1bE\x1b%Puifp.multi_button_push 20;\nudw.quit;\x1b*rC\x1bE\x1b%-12345X""")
  1215.     
  1216. def linefeedCalType1(dev, loadpaper_ui):
  1217.     if loadpaper_ui():
  1218.         dev.printData("""\x1b%-12345X@PJL ENTER LANGUAGE=PCL3GUI\n\x1bE\x1b%Puifp.multi_button_push 3;\nudw.quit;\x1b*rC\x1bE\x1b%-12345X""")
  1219.     
  1220. def printQualityDiagType1(dev, loadpaper_ui):
  1221.     if loadpaper_ui():
  1222.         dev.printData("""\x1b%-12345X@PJL ENTER LANGUAGE=PCL3GUI\n\x1bE\x1b%Puifp.multi_button_push 14;\nudw.quit;\x1b*rC\x1bE\x1b%-12345X""")
  1223.