home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / printoptio.tcl < prev    next >
Text File  |  1996-11-14  |  9KB  |  327 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1996
  4. #
  5. #      File:           @(#)printoptio.tcl    /main/hindenburg/3
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)printoptio.tcl    /main/hindenburg/3   14 Nov 1996 Copyright 1996 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14.  
  15. Class PrintOptionsDialog : {TemplateDialog} {
  16.     constructor
  17.     method destructor
  18.     method popUp
  19.     method printOptions
  20.     method handleOk
  21.     method handleCancel
  22.     method autoScaleChanged
  23.     method scaleValue
  24.     method scaleModified
  25.     method numPages
  26.     method pagesModified
  27.     attribute diagram
  28.     attribute readOnly
  29.     attribute title
  30.     attribute orientation
  31.     attribute doPrintBox
  32.     attribute autoScale
  33.     attribute horNumPages
  34.     attribute verNumPages
  35.     attribute scale
  36.     attribute horPagesPrev
  37.     attribute verPagesPrev
  38.     attribute scalePrev
  39.     attribute props
  40. }
  41.  
  42. constructor PrintOptionsDialog {class this name} {
  43.     set this [TemplateDialog::constructor $class $this $name]
  44.     $this readOnly 0
  45.     # Start constructor user section
  46.     $this TemplateDialog::title "Print Options"
  47.     interface DlgColumn $this.c {
  48.         Label titleLabel {
  49.             text "Title:"
  50.         }
  51.         SingleLineText title {}
  52.         CheckButton landscape {
  53.             label "Landscape"
  54.         }
  55.         CheckButton printBox {
  56.             label "Print Box"
  57.         }
  58.         NamedGroup scaleStrategy {
  59.             label "Scale Strategy"
  60.             DlgColumn c {
  61.                 CheckButton autoScale {
  62.                     label "Auto Scale"
  63.                 }
  64.                 Label scaleLabel {
  65.                     text "Scale Factor"
  66.                 }
  67.                 FloatField scale {}
  68.                 Label horLabel {
  69.                     text "Horizontal Number Of Pages"
  70.                 }
  71.                 IntField horPages {}
  72.                 Label verLabel {
  73.                     text "Vertical Number Of Pages"
  74.                 }
  75.                 IntField verPages {}
  76.             }
  77.         }
  78.         NamedGroup saved {
  79.             label "Options To Be Saved With Diagram"
  80.             DlgColumn c {
  81.                 CheckButton title {
  82.                     label Title
  83.                 }
  84.                 CheckButton orientation {
  85.                     label Orientation
  86.                 }
  87.                 CheckButton scaleStrategy {
  88.                     label "Scale Strategy"
  89.                 }
  90.             }
  91.         }
  92.     }
  93.     $this.c.scaleStrategy.c.autoScale stateChanged "$this autoScaleChanged"
  94.     $this.c.scaleStrategy.c.scale textModified "$this scaleModified"
  95.     $this.c.scaleStrategy.c.horPages textModified "$this pagesModified hor"
  96.     $this.c.scaleStrategy.c.verPages textModified "$this pagesModified ver"
  97.     $this config \
  98.         -modal yes \
  99.         -autoPopDown no \
  100.         -okPressed {%this handleOk} \
  101.         -cancelPressed {%this handleCancel} \
  102.         -helpPressed {.main helpOnName printOptions}
  103.     # End constructor user section
  104.     return $this
  105. }
  106.  
  107. method PrintOptionsDialog::destructor {this} {
  108.     # Start destructor user section
  109.     # End destructor user section
  110. }
  111.  
  112. method PrintOptionsDialog::popUp {this} {
  113.     set props [$this props]
  114.     set diag [$this diagram]
  115.     set saved $this.c.saved.c
  116.     if [$this readOnly] {
  117.         $saved.title sensitive 0
  118.         $saved.orientation sensitive 0
  119.         $saved.scaleStrategy sensitive 0
  120.     } else {
  121.         $saved.title sensitive 1
  122.         $saved.orientation sensitive 1
  123.         $saved.scaleStrategy sensitive 1
  124.     }
  125.  
  126.     set scStr [expr {[$props findProperty M4_ps_auto_scale] != ""}]
  127.     $saved.title state [expr {[$props findProperty M4_ps_title] != ""}]
  128.     $saved.orientation state [expr {[$props findProperty M4_ps_mode] != ""}]
  129.     $saved.scaleStrategy state $scStr
  130.  
  131.     set objs [list m4_var $props]
  132.     set cmds [list get getProperty]
  133.     set oTtl [lindex $objs [$saved.title state]]
  134.     set gTtl [lindex $cmds [$saved.title state]]
  135.     $this.c.title text [$oTtl $gTtl M4_ps_title]
  136.  
  137.     set oMod [lindex $objs [$saved.orientation state]]
  138.     set gMod [lindex $cmds [$saved.orientation state]]
  139.     $this.c.landscape state [expr {[$oMod $gMod M4_ps_mode] == "landscape"}]
  140.  
  141.     set oASc [lindex $objs $scStr]
  142.     set gASc [lindex $cmds $scStr]
  143.     set aScSt [$oASc $gASc M4_ps_auto_scale]
  144.     $this.c.scaleStrategy.c.autoScale state $aScSt
  145.  
  146.     set pgs [expr $scStr && $aScSt]
  147.     set oPgs [lindex $objs $pgs]
  148.     set gPgs [lindex $cmds $pgs]
  149.     $this numPages hor [$oPgs $gPgs M4_ps_columns] 
  150.     $this numPages ver [$oPgs $gPgs M4_ps_rows] 
  151.  
  152.     set scl [expr $scStr && ! $aScSt]
  153.     set oScl [lindex $objs $scl]
  154.     set gScl [lindex $cmds $scl]
  155.     $this scaleValue [$oScl $gScl M4_ps_scale]
  156.     $this.c.printBox state [m4_var get M4_print_box]
  157.     $this autoScaleChanged
  158.  
  159.     $this TemplateDialog::popUp
  160. }
  161.  
  162. method PrintOptionsDialog::printOptions {this} {
  163.     set result ""
  164.     foreach var {title orientation doPrintBox autoScale horNumPages
  165.              verNumPages scale} {
  166.         if {[$this $var] != ""} {
  167.             lappend result -$var [$this $var]
  168.         }
  169.     }
  170.     return $result
  171. }
  172.  
  173. method PrintOptionsDialog::handleOk {this} {
  174.     $this title [$this.c.title text]
  175.     set state [$this.c.landscape state]
  176.     if $state {
  177.         $this orientation "landscape"
  178.     } else {
  179.         $this orientation "portrait"
  180.     }
  181.     $this doPrintBox [$this.c.printBox state]
  182.     $this autoScale [$this.c.scaleStrategy.c.autoScale state]
  183.     set label ""
  184.     if [$this autoScale] {
  185.         $this horNumPages [$this numPages hor]
  186.         $this verNumPages [$this numPages ver]
  187.         $this scale ""
  188.         if {[$this horNumPages] <= 0} {
  189.             set label hor
  190.         } elseif {[$this verNumPages] <= 0} {
  191.             set label ver
  192.         }
  193.     } else {
  194.         $this horNumPages ""
  195.         $this verNumPages ""
  196.         $this scale [$this scaleValue]
  197.         if {[$this scale] <= 0} {
  198.             set label scale
  199.         }
  200.     }
  201.     if {"$label" != ""} {
  202.         set fieldName [$this.c.scaleStrategy.c.${label}Label text]
  203.         wmtkerror "$fieldName must be a positive value"
  204.         return
  205.     }
  206.  
  207.     if {"[m4_var get M4_ps_title]" != "[$this title]"} {
  208.         m4_var set M4_ps_title [$this title]
  209.     }
  210.     if {"[m4_var get M4_ps_mode]" != "[$this orientation]"} {
  211.         m4_var set M4_ps_mode [$this orientation]
  212.     }
  213.     if {"[m4_var get M4_print_box]" != "[$this doPrintBox]"} {
  214.         m4_var set M4_print_box [$this doPrintBox]
  215.     }
  216.     if [$this autoScale] {
  217.         if {[m4_var get M4_ps_auto_scale] != 1} {
  218.             m4_var set M4_ps_auto_scale 1
  219.         }
  220.         if {"[m4_var get M4_ps_columns]" != "[$this horNumPages]"} {
  221.             m4_var set M4_ps_columns [$this horNumPages]
  222.         }
  223.         if {"[m4_var get M4_ps_rows]" != "[$this verNumPages]"} {
  224.             m4_var set M4_ps_rows [$this verNumPages]
  225.         }
  226.     } else {
  227.         if {[m4_var get M4_ps_auto_scale] != 0} {
  228.             m4_var set M4_ps_auto_scale 0
  229.         }
  230.         if {"[m4_var get M4_ps_scale]" != "[$this scale]"} {
  231.             m4_var set M4_ps_scale [$this scale]
  232.         }
  233.     }
  234.  
  235.     set props [$this props]
  236.     if [$this readOnly] {
  237.         $props quit
  238.     } else {
  239.         if [$this.c.saved.c.title state] {
  240.             $props changeProperty M4_ps_title [$this title]
  241.         } else {
  242.             $props removeProperty M4_ps_title
  243.         }
  244.         if [$this.c.saved.c.orientation state] {
  245.             $props changeProperty M4_ps_mode [$this orientation]
  246.         } else {
  247.             $props removeProperty M4_ps_mode
  248.         }
  249.         if [$this.c.saved.c.scaleStrategy state] {
  250.             if [$this autoScale] {
  251.                 $props changeProperty M4_ps_auto_scale 1
  252.                 $props changeProperty M4_ps_columns \
  253.                     [$this horNumPages]
  254.                 $props changeProperty M4_ps_rows \
  255.                     [$this verNumPages]
  256.                 $props removeProperty M4_ps_scale
  257.             } else {
  258.                 $props changeProperty M4_ps_auto_scale 0
  259.                 $props changeProperty M4_ps_scale [$this scale]
  260.                 $props removeProperty M4_ps_columns
  261.                 $props removeProperty M4_ps_rows
  262.             }
  263.         } else {
  264.             $props removeProperty M4_ps_auto_scale
  265.             $props removeProperty M4_ps_columns
  266.             $props removeProperty M4_ps_scale
  267.             $props removeProperty M4_ps_rows
  268.         }
  269.     }
  270.  
  271.     $this popDown
  272. }
  273.  
  274. method PrintOptionsDialog::handleCancel {this} {
  275. }
  276.  
  277. method PrintOptionsDialog::autoScaleChanged {this} {
  278.     if [$this.c.scaleStrategy.c.autoScale state] {
  279.         $this.c.scaleStrategy.c.horPages sensitive 1
  280.         $this.c.scaleStrategy.c.verPages sensitive 1
  281.         $this.c.scaleStrategy.c.scale sensitive 0
  282.     } else {
  283.         $this.c.scaleStrategy.c.horPages sensitive 0
  284.         $this.c.scaleStrategy.c.verPages sensitive 0
  285.         $this.c.scaleStrategy.c.scale sensitive 1
  286.     }
  287. }
  288.  
  289. method PrintOptionsDialog::scaleValue {this {scale ,}} {
  290.     if {$scale == ","} {
  291.         return [$this.c.scaleStrategy.c.scale floatValue]
  292.     }
  293.     $this.c.scaleStrategy.c.scale floatValue $scale
  294.     $this scalePrev $scale
  295. }
  296.  
  297. method PrintOptionsDialog::scaleModified {this} {
  298.     if {[$this scaleValue] >= 0} {
  299.         $this scalePrev [$this.c.scaleStrategy.c.scale text]
  300.     } else {
  301.         set cIdx [$this.c.scaleStrategy.c.scale cursorIndex]
  302.         $this.c.scaleStrategy.c.scale text [$this scalePrev]
  303.         $this.c.scaleStrategy.c.scale cursorIndex [expr $cIdx - 1]
  304.     }
  305. }
  306.  
  307. method PrintOptionsDialog::numPages {this dim {num ,}} {
  308.     if {$num == ","} {
  309.         return [$this.c.scaleStrategy.c.${dim}Pages intValue]
  310.     }
  311.     $this.c.scaleStrategy.c.${dim}Pages intValue $num
  312.     $this ${dim}PagesPrev $num
  313. }
  314.  
  315. method PrintOptionsDialog::pagesModified {this dim} {
  316.     if {[$this numPages $dim] >= 0} {
  317.         $this ${dim}PagesPrev [$this.c.scaleStrategy.c.${dim}Pages text]
  318.     } else {
  319.         set cIdx [$this.c.scaleStrategy.c.${dim}Pages cursorIndex]
  320.         $this.c.scaleStrategy.c.${dim}Pages text [$this ${dim}PagesPrev]
  321.         $this.c.scaleStrategy.c.${dim}Pages cursorIndex [expr $cIdx - 1]
  322.     }
  323. }
  324.  
  325. # Do not delete this line -- regeneration end marker
  326.  
  327.