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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)objectdefi.tcl    /main/titanic/4
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)objectdefi.tcl    /main/titanic/4   23 Oct 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. require "commandpag.tcl"
  13. # End user added include file section
  14.  
  15. require "defstoredi.tcl"
  16.  
  17. Class ObjectDefineDialog : {DefStoreDialog} {
  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 save
  27.     method objName
  28.     attribute iPage
  29.     attribute cPage
  30. }
  31.  
  32. constructor ObjectDefineDialog {class this name} {
  33.     set this [DefStoreDialog::constructor $class $this $name]
  34.     # Start constructor user section
  35.     $this helpPressed \
  36.         ".main helpOnName objTypeProp\[\[$this currentPage] label]Page"
  37.     # End constructor user section
  38.     return $this
  39. }
  40.  
  41. method ObjectDefineDialog::destructor {this} {
  42.     # Start destructor user section
  43.     # End destructor user section
  44.     $this DefStoreDialog::destructor
  45. }
  46.  
  47. method ObjectDefineDialog::createInterface {this} {
  48.  
  49.     #indentation of this function is 4 spaces to make it easier to read
  50.     $this DefStoreDialog::createInterface
  51.  
  52.     # create "interface" page
  53.     interface NoteBkPage $this.InterfaceNBP {
  54.         label Interface
  55.         NamedGroup NG {
  56.             DlgColumn DC {
  57.                 DlgRow DR {
  58.                     verStretchFactor 0
  59.                     sizeEqual 1
  60.                     NamedGroup NG {
  61.                         label "Normal Icon"
  62.                         DlgColumn DC {
  63.                             Image normalIconI {
  64.                             }
  65.                             PushButton normalIconPB {
  66.                                 label "Select Icon"
  67.                             }
  68.                         }
  69.                     }
  70.                     NamedGroup NG {
  71.                         label "Active Icon"
  72.                         DlgColumn DC {
  73.                             Image activeIconI {
  74.                             }
  75.                             PushButton activeIconPB {
  76.                                 label "Select Icon"
  77.                             }
  78.                         }
  79.                     }
  80.                 }
  81.                 DlgRow DR {
  82.                     verStretchFactor 0
  83.                     sizeEqual 1
  84.                     NamedGroup NG {
  85.                         label "Small Icon"
  86.                         DlgColumn DC {
  87.                             Image smallIconI {
  88.                             }
  89.                             PushButton smallIconPB {
  90.                                 label "Select Icon"
  91.                             }
  92.                         }
  93.                     }
  94.                     NamedGroup NG {
  95.                         label "Large Icon"
  96.                         DlgColumn DC {
  97.                             Image largeIconI {
  98.                             }
  99.                             PushButton largeIconPB {
  100.                                 label "Select Icon"
  101.                             }
  102.                         }
  103.                     }
  104.                 }
  105.                 DlgRow DR {
  106.             verStretchFactor 0
  107.                     NamedGroup NG {
  108.             label "Fold State"
  109.                         DlgColumn DC {
  110.                     CheckButton foldCB {
  111.                                label "Initial Folded"
  112.                             }
  113.                 }
  114.                     }
  115.         }
  116.                 DlgRow DR {
  117.             verStretchFactor 0
  118.                     NamedGroup NG {
  119.             label "File System Extension"
  120.                         DlgColumn DC {
  121.                     SingleLineText extensionSLT {
  122.                             }
  123.                 }
  124.                     }
  125.         }
  126.                 DlgRow DR {
  127.             verStretchFactor 0
  128.                     NamedGroup NG {
  129.             label "Make Type"
  130.                         DlgColumn DC {
  131.                     VerRadioGroup makeTypeVRG {
  132.                 entrySet {"None" "Source" "Target"}
  133.                             }
  134.                 }
  135.                     }
  136.         }
  137.             }
  138.         }
  139.     }
  140.  
  141.     # create "command" page
  142.     $this cPage [CommandPage new $this.cPage]
  143.     [$this cPage] isMethod 1
  144.  
  145.     $this iPage $this.InterfaceNBP.NG.DC.DR.NG.DC
  146.  
  147.     [$this iPage].normalIconPB activated "[.main smallIconSelector] select \
  148.                         [$this iPage].normalIconI"
  149.     [$this iPage].activeIconPB activated "[.main activeIconSelector] select \                            [$this iPage].activeIconI"
  150.     [$this iPage].smallIconPB activated "[.main smallIconSelector] select \                            [$this iPage].smallIconI"
  151.     [$this iPage].largeIconPB activated "[.main largeIconSelector] select \                            [$this iPage].largeIconI"
  152.  
  153.  
  154. }
  155.  
  156. method ObjectDefineDialog::clearInterface {this} {
  157.  
  158.     $this DefStoreDialog::clearInterface
  159.  
  160.     # clean page "Interface"
  161.     [$this iPage].normalIconI pixmap undef_16
  162.     [$this iPage].activeIconI pixmap undef_16
  163.     [$this iPage].smallIconI pixmap undef_16
  164.     [$this iPage].largeIconI pixmap undef_32
  165.     [$this iPage].foldCB state 1
  166.     [$this iPage].extensionSLT text ""
  167.     [$this iPage].makeTypeVRG selected "None"
  168.  
  169.     # clean page "Command"
  170.     [$this cPage] clearInterface
  171. }
  172.  
  173. method ObjectDefineDialog::sensitive {this args} {
  174.  
  175.     $this DefStoreDialog::sensitive $args
  176.  
  177.     if {[llength $args] == 0} {
  178.             return [[$this iPage].normalIconI]
  179.     } else {
  180.         set sensitive [lindex $args 0]
  181.     }
  182.  
  183.     [$this iPage].normalIconPB sensitive $sensitive
  184.     [$this iPage].activeIconPB sensitive $sensitive
  185.     [$this iPage].smallIconPB sensitive $sensitive
  186.     [$this iPage].largeIconPB sensitive $sensitive
  187.     [$this iPage].foldCB sensitive $sensitive
  188.     [$this iPage].extensionSLT sensitive $sensitive
  189.     [$this iPage].makeTypeVRG sensitive $sensitive
  190.  
  191.     [$this cPage] sensitive $args
  192.  
  193.     return $sensitive
  194. }
  195.  
  196. method ObjectDefineDialog::fromInterface {this} {
  197.  
  198.     # save page "Interface"
  199.     set spec [list foldState [[$this iPage].foldCB state]]
  200.  
  201.     set extension [string trim [[$this iPage].extensionSLT text]]
  202.     if {![lempty $extension]} {
  203.         lappend spec fsExtension $extension
  204.     }
  205.     set makeType [[$this iPage].makeTypeVRG selected]
  206.     if {"$makeType" != "None"} {
  207.         lappend spec makeType [string tolower $makeType]
  208.     }
  209.     lappend spec normalIcon [[$this iPage].normalIconI pixmap]
  210.     lappend spec activeIcon [[$this iPage].activeIconI pixmap]
  211.     lappend spec smallIcon [[$this iPage].smallIconI pixmap]
  212.     lappend spec largeIcon [[$this iPage].largeIconI pixmap]
  213.  
  214.     # save page "Command"
  215.     set cmdSpec [[$this cPage] fromInterface]
  216.     if {$cmdSpec == ""} {
  217.         return ""
  218.     }
  219.     # don't use lappend for this purpose
  220.     set spec "$spec defaultAction $cmdSpec"
  221.     return $spec
  222. }
  223.  
  224. method ObjectDefineDialog::toInterface {this key value} {
  225.  
  226.     # page "Interface"
  227.     if {$key == "foldState"} {
  228.         [$this iPage].foldCB state $value
  229.     }
  230.     if {$key == "fsExtension"} {
  231.         [$this iPage].extensionSLT text $value
  232.     }
  233.     if {$key == "makeType"} {
  234.         [$this iPage].makeTypeVRG selected "[string toupper [string \
  235.             range $value 0 0]][string range $value 1 end]"
  236.     }
  237.     if {$key == "normalIcon"} {
  238.         [$this iPage].normalIconI pixmap $value
  239.     }
  240.     if {$key == "activeIcon"} {
  241.         [$this iPage].activeIconI pixmap $value
  242.     }
  243.     if {$key == "smallIcon"} {
  244.         [$this iPage].smallIconI pixmap $value
  245.     }
  246.     if {$key == "largeIcon"} {
  247.         [$this iPage].largeIconI pixmap $value
  248.     }
  249.  
  250.     # page "Command"
  251.     if {$key == "defaultAction"} {
  252.         [$this cPage] toInterface $value
  253.     }
  254. }
  255.  
  256. method ObjectDefineDialog::load {this object} {
  257.  
  258.     # fill the methods of the selected object
  259.     [$this cPage] setMethods [$object displayName]
  260.  
  261.     $this DefineDialog::load $object
  262.  
  263.     if [$object editable] {
  264.         $this sensitive 1
  265.     } else {
  266.         $this sensitive 0
  267.     }
  268. }
  269.  
  270. method ObjectDefineDialog::save {this popDown} {
  271.  
  272.     if {![[$this curObject] editable]} {
  273.         if {$popDown == 1} {
  274.             $this popDown
  275.         }
  276.         return
  277.     }
  278.  
  279.     if {[$this DefineDialog::save $popDown] == 1} {
  280.         # reset redefined attribute
  281.         [$this curObject] redefined 0
  282.     }
  283. }
  284.  
  285. method ObjectDefineDialog::objName {this args} {
  286.  
  287.     if {$args == ""} {
  288.         # name of an objecttype can not change so return the original
  289.         return [[$this curObject] displayName]
  290.     } else {
  291.         #set nothing
  292.     }
  293. }
  294.  
  295. # Do not delete this line -- regeneration end marker
  296.  
  297.