home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / menuparent.tcl < prev    next >
Text File  |  1997-09-26  |  9KB  |  310 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)menuparent.tcl    /main/titanic/5
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)menuparent.tcl    /main/titanic/5   26 Sep 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. require mnemonicbu.tcl
  13. # End user added include file section
  14.  
  15. require "menudefine.tcl"
  16.  
  17. Class MenuParentDialog : {MenuDefineDialog} {
  18.     constructor
  19.     method destructor
  20.     method createInterface
  21.     method clearInterface
  22.     method sensitive
  23.     method fromInterface
  24.     method toInterface
  25.     method load
  26.     method objName
  27.     attribute iPage
  28.     attribute aPage
  29. }
  30.  
  31. constructor MenuParentDialog {class this name} {
  32.     set this [MenuDefineDialog::constructor $class $this $name]
  33.     # Start constructor user section
  34.     # End constructor user section
  35.     return $this
  36. }
  37.  
  38. method MenuParentDialog::destructor {this} {
  39.     # Start destructor user section
  40.     # End destructor user section
  41.     $this MenuDefineDialog::destructor
  42. }
  43.  
  44. method MenuParentDialog::createInterface {this} {
  45.  
  46.     #indentation of this function is 4 spaces to make it easier to read
  47.     $this MenuDefineDialog::createInterface
  48.  
  49.     # create "interface" page
  50.     interface NoteBkPage $this.InterfaceNBP {
  51.         label Interface
  52.         DlgRow NG { 
  53.             DlgColumn DC {
  54.                 DlgRow DR {
  55.                     verStretchFactor 0
  56.                     sizeEqual 1
  57.                     NamedGroup NG {
  58.                         label Name 
  59.                         DlgColumn DC {
  60.                             SingleLineText nameSLT {}
  61.                             }
  62.                     }
  63.                     NamedGroup NG {
  64.                         label Mnemonic 
  65.                         DlgRow DR {
  66.                             spaceType EVEN
  67.                             MnemonicButton  mnemonicDDL { 
  68.                                 verStretchFactor 0
  69.                                 horStretchFactor 0
  70.                 entrySet " "
  71.                 
  72.                             }
  73.                         }
  74.                     }
  75.                 }
  76.                 DlgRow DR {
  77.                     verStretchFactor 0
  78.                     sizeEqual 1
  79.                     NamedGroup NG {
  80.                         label "Hint text" 
  81.                         DlgColumn DC {
  82.                             SingleLineText hintSLT {}
  83.                             }
  84.                     }
  85.                 }
  86.                 DlgRow DR {
  87.                     verStretchFactor 0
  88.                     NamedGroup NG {
  89.                         DlgRow DR {
  90.                             CheckButton  pinnableCB { 
  91.                 label Pinnable
  92.                                 state 0
  93.                             }
  94.                         }
  95.                     }
  96.                 }
  97.             } 
  98.         }
  99.     }
  100.  
  101.     $this iPage $this.InterfaceNBP.NG.DC.DR.NG
  102.     [$this iPage].DC.nameSLT textModified "[$this iPage].DR.mnemonicDDL \
  103.                                                 entrySet \[%this text\]"
  104.  
  105.     # create "arbiter" page
  106.     interface NoteBkPage $this.ArbiterNBP {
  107.         label Arbiters
  108.         DlgRow NG { 
  109.             DlgColumn DC {
  110.                 NamedGroup NG {
  111.                     label "Arbiter 1"
  112.                     DlgColumn DC {
  113.             Label L { 
  114.                             text Name
  115.                         }
  116.                         SingleLineText nameSLT1 {}
  117.             Label L { 
  118.                             text CurrentButtonChanged
  119.                         }
  120.                         MultiLineText buttonChangedMLT1 {
  121.                             rowCount 2
  122.                         }
  123.                     }
  124.                 }
  125.                 NamedGroup NG {
  126.                     label "Arbiter 2"
  127.                     DlgColumn DC {
  128.             Label L { 
  129.                             text Name
  130.                         }
  131.                         SingleLineText nameSLT2 {}
  132.             Label L { 
  133.                             text CurrentButtonChanged
  134.                         }
  135.                         MultiLineText buttonChangedMLT2 {
  136.                             rowCount 2
  137.                         }
  138.                     }
  139.                 }
  140.                 NamedGroup NG {
  141.                     label "Arbiter 3"
  142.                     DlgColumn DC {
  143.             Label L { 
  144.                             text Name
  145.                         }
  146.                         SingleLineText nameSLT3 {}
  147.             Label L { 
  148.                             text CurrentButtonChanged
  149.                         }
  150.                         MultiLineText buttonChangedMLT3 {
  151.                             rowCount 2
  152.                         }
  153.                     }
  154.                 }
  155.             } 
  156.         }
  157.     }
  158.  
  159.     $this aPage $this.ArbiterNBP.NG.DC.NG.DC
  160.  
  161. }
  162.  
  163. method MenuParentDialog::clearInterface {this} {
  164.  
  165.     $this MenuDefineDialog::clearInterface
  166.  
  167.     # clean page "Interface"
  168.     [$this iPage].DC.nameSLT text ""
  169.     [$this iPage].DR.mnemonicDDL entrySet {}
  170.     [$this iPage].DR.pinnableCB state 0
  171.     [$this iPage].DC.hintSLT text ""
  172.     [$this aPage].nameSLT1 text ""
  173.     [$this aPage].buttonChangedMLT1 text ""
  174.     [$this aPage].nameSLT2 text ""
  175.     [$this aPage].buttonChangedMLT2 text ""
  176.     [$this aPage].nameSLT3 text ""
  177.     [$this aPage].buttonChangedMLT3 text ""
  178. }
  179.  
  180. method MenuParentDialog::sensitive {this args} {
  181.  
  182.     $this MenuDefineDialog::sensitive $args
  183.  
  184.     if {[llength $args] == 0} {
  185.             return [[$this iPage].DC.nameSLT sensitive]
  186.     } else {
  187.         set sensitive [lindex $args 0]
  188.     }
  189.  
  190.     # clean page "Interface"
  191.     [$this iPage].DC.nameSLT sensitive $sensitive
  192.     [$this iPage].DR.mnemonicDDL sensitive $sensitive
  193.     [$this iPage].DR.pinnableCB sensitive $sensitive
  194.     set type [[$this curObject] type]
  195.     if {$sensitive == 1 && $type == "CustMenuBarButton"} {
  196.         # do not make sensitive
  197.     } else {
  198.         [$this iPage].DC.hintSLT sensitive $sensitive
  199.     }
  200.     [$this aPage].nameSLT1 sensitive $sensitive
  201.     [$this aPage].buttonChangedMLT1 sensitive $sensitive
  202.     [$this aPage].nameSLT2 sensitive $sensitive
  203.     [$this aPage].buttonChangedMLT2 sensitive $sensitive
  204.     [$this aPage].nameSLT3 sensitive $sensitive
  205.     [$this aPage].buttonChangedMLT3 sensitive $sensitive
  206.  
  207.     return $sensitive
  208. }
  209.  
  210. method MenuParentDialog::fromInterface {this} {
  211.  
  212.     # save page "Interface"
  213.     set spec [list label [[$this iPage].DC.nameSLT text]]
  214.     if {[string trim [[$this iPage].DR.mnemonicDDL selected]] != ""} {
  215.         lappend spec mnemonic [[$this iPage].DR.mnemonicDDL selected]
  216.     }
  217.  
  218.     if { [[$this curObject] type] != "CustMenuBarButton" } {
  219.         set hint [string trim [[$this iPage].DC.hintSLT text]]
  220.         if ![lempty $hint] {
  221.             lappend spec hintText $hint
  222.         }
  223.     }
  224.  
  225.     [$this curObject] pinnable [[$this iPage].DR.pinnableCB state]
  226.  
  227.     set arbiters ""
  228.     if ![lempty [[$this aPage].nameSLT1 text]] {
  229.         lappend arbiters [list [[$this aPage].nameSLT1 text] \
  230.                   [[$this aPage].buttonChangedMLT1 text]]
  231.     }
  232.     if ![lempty [[$this aPage].nameSLT2 text]] {
  233.         lappend arbiters [list [[$this aPage].nameSLT2 text] \
  234.                   [[$this aPage].buttonChangedMLT2 text]]
  235.     }
  236.     if ![lempty [[$this aPage].nameSLT3 text]] {
  237.         lappend arbiters [list [[$this aPage].nameSLT3 text] \
  238.                   [[$this aPage].buttonChangedMLT3 text]]
  239.     }
  240.  
  241.     [$this curObject] arbiters $arbiters
  242.  
  243.     return $spec
  244. }
  245.  
  246. method MenuParentDialog::toInterface {this key value} {
  247.  
  248.     # page "Interface"
  249.     if {$key == "label"} {
  250.  
  251.         [$this iPage].DC.nameSLT text $value
  252.         [$this iPage].DR.mnemonicDDL entrySet $value
  253.         return
  254.     }
  255.  
  256.     if {$key == "mnemonic"} { 
  257.         [$this iPage].DR.mnemonicDDL selected $value
  258.         return
  259.     }
  260.  
  261.     if { [[$this curObject] type] != "CustMenuBarButton" } {
  262.         if {$key == "hintText"} {
  263.             [$this iPage].DC.hintSLT text $value
  264.         }
  265.     }
  266. }
  267.  
  268. method MenuParentDialog::load {this object} {
  269.  
  270.     $this MenuDefineDialog::load $object
  271.     [$this iPage].DR.pinnableCB state [$object pinnable]
  272.  
  273.     # disable the hintText for MenuBarButtons, 
  274.     # A MenuBarButton has no hintText YET (next release?)
  275.     if { [[$this curObject] type] != "CustMenuBarButton" } {
  276.         [$this iPage].DC.hintSLT sensitive 1
  277.     } else {
  278.         [$this iPage].DC.hintSLT sensitive 0
  279.     }
  280.  
  281.     set count 1
  282.     foreach i [$object arbiters] {
  283.         [$this aPage].nameSLT$count text [lindex $i 0]
  284.         [$this aPage].buttonChangedMLT$count text [lindex $i 1]
  285.         if {$count == 3} {
  286.             break;
  287.         } else {
  288.             incr count
  289.         }
  290.     }
  291.  
  292.     if [$object editable] {
  293.         $this sensitive 1
  294.     } else {
  295.         $this sensitive 0
  296.     }
  297. }
  298.  
  299. method MenuParentDialog::objName {this args} {
  300.  
  301.     if {$args == ""} {
  302.         return [[$this iPage].DC.nameSLT text]
  303.     } else {
  304.         [$this iPage].DC.nameSLT text [join $args]
  305.     }
  306. }
  307.  
  308. # Do not delete this line -- regeneration end marker
  309.  
  310.