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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)defstoredi.tcl    /main/titanic/2
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)defstoredi.tcl    /main/titanic/2   14 Mar 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14. require "definedial.tcl"
  15.  
  16. Class DefStoreDialog : {DefineDialog} {
  17.     method destructor
  18.     constructor
  19.     method createInterface
  20.     method clearInterface
  21.     method sensitive
  22.     method setPossibleScope
  23.     method objScope
  24.     method objReadOnly
  25.     method cancelled
  26.     method getPhase
  27.     method setPhase
  28.     method removePhase
  29.     attribute sPage
  30.     attribute phase
  31. }
  32.  
  33. method DefStoreDialog::destructor {this} {
  34.     # Start destructor user section
  35.     # End destructor user section
  36.     $this DefineDialog::destructor
  37. }
  38.  
  39. constructor DefStoreDialog {class this name} {
  40.     set this [DefineDialog::constructor $class $this $name]
  41.     return $this
  42. }
  43.  
  44. method DefStoreDialog::createInterface {this} {
  45.     #indentation of this function is 4 spaces to make it easier to read
  46.  
  47.     # read phases file
  48.     $this phase [Dictionary new]
  49.     getPhases
  50.  
  51.     $this cancelPressed "$this cancelled"
  52.  
  53.     # create "storage" page
  54.     set page $this.storageNBP
  55.     interface NoteBkPage $page {
  56.         label Storage
  57.         DlgRow NG {
  58.             DlgColumn DC {
  59.                 NamedGroup NG1 {
  60.                     verStretchFactor 0
  61.                     label Scope
  62.                     DlgColumn DC {
  63.                         Label L1 { text Project }
  64.                         SingleLineText projectSLT {}
  65.                         Label L2 { text Configuration }
  66.                         SingleLineText configSLT {}
  67.                         NamedGroup NG1 {
  68.                             label Phase
  69.                             DlgRow DR {}
  70.             }
  71.                         NamedGroup NG2 {
  72.                             label System
  73.                             DlgRow DR {
  74.                                 DlgColumn DC {
  75.                                     CheckButton SysCB {
  76.                                         label system
  77.                                     }
  78.                                     CheckButton DocCB {
  79.                                         label document
  80.                                     }
  81.                                 }
  82.                             }
  83.             }
  84.                     }
  85.                 }
  86.                 NamedGroup NG2 {
  87.                     verStretchFactor 0
  88.                     DlgRow DR {
  89.                         CheckButton readOnlyCB {
  90.                             label "Read Only"
  91.                         }
  92.                     }
  93.                 }
  94.             }
  95.         }
  96.     }
  97.     $this sPage $page.NG.DC
  98.     set count 0
  99.     set phasesRow [$this sPage].NG1.DC.NG1.DR
  100.     foreach phase ${BrowserProcs::phases} {
  101.     set phaseType [lindex $phase 1]
  102.     if [[$this phase] exists "$phaseType"] continue
  103.     if {[expr $count % 2] == 0} {
  104.         set DC [DlgColumn new $phasesRow.DC$count]
  105.     }
  106.     $this setPhase "$phaseType" \
  107.         [CheckButton new $DC.CB$count -label "$phaseType"]
  108.     incr count 1
  109.     }
  110.     $page lowered "$this checkLevelChanged"
  111. }
  112.  
  113. method DefStoreDialog::clearInterface {this} {
  114.     # clean page "Storage"
  115.     [$this sPage].NG1.DC.projectSLT text ""
  116.     [$this sPage].NG1.DC.configSLT text ""
  117.     foreach CB [[$this phase] values] {
  118.         $CB state 0
  119.     }
  120.     [$this sPage].NG1.DC.NG2.DR.DC.SysCB state 0
  121.     [$this sPage].NG1.DC.NG2.DR.DC.DocCB state 0
  122.     [$this sPage].NG2.DR.readOnlyCB state 0
  123. }
  124.  
  125. method DefStoreDialog::sensitive {this args} {
  126.  
  127.     if {[llength $args] == 0} {
  128.             return [[$this sPage].NG1.DC.projectSLT]
  129.     } else {
  130.         set sensitive [lindex $args 0]
  131.     }
  132.     [$this sPage].NG1.DC.projectSLT sensitive $sensitive
  133.     [$this sPage].NG1.DC.configSLT sensitive $sensitive
  134.     foreach CB [[$this phase] values] {
  135.         $CB sensitive $sensitive
  136.     }
  137.     [$this sPage].NG1.DC.NG2.DR.DC.SysCB sensitive $sensitive
  138.     [$this sPage].NG1.DC.NG2.DR.DC.DocCB sensitive $sensitive
  139.     [$this sPage].NG2.DR.readOnlyCB sensitive $sensitive
  140.  
  141.     return $sensitive
  142. }
  143.  
  144. method DefStoreDialog::setPossibleScope {this} {
  145.     [$this sPage].NG1.DC.projectSLT sensitive 0
  146.     [$this sPage].NG1.DC.configSLT sensitive 0
  147.     foreach CB [[$this phase] values] {
  148.         $CB sensitive 0
  149.     }
  150.     [$this sPage].NG1.DC.NG2.DR.DC.SysCB sensitive 0
  151.     [$this sPage].NG1.DC.NG2.DR.DC.DocCB sensitive 0
  152.  
  153.     case "[[.main editorArea] _level]" in {
  154.         {corporate user} {
  155.             [$this sPage].NG1.DC.projectSLT sensitive 1
  156.             [$this sPage].NG1.DC.configSLT sensitive 1
  157.             foreach CB [[$this phase] values] {
  158.                 $CB sensitive 1
  159.             }
  160.             [$this sPage].NG1.DC.NG2.DR.DC.SysCB sensitive 1
  161.             [$this sPage].NG1.DC.NG2.DR.DC.DocCB sensitive 1
  162.         }
  163.         {project} {
  164.             [$this sPage].NG1.DC.configSLT sensitive 1
  165.             foreach CB [[$this phase] values] {
  166.                 $CB sensitive 1
  167.             }
  168.             [$this sPage].NG1.DC.NG2.DR.DC.SysCB sensitive 1
  169.             [$this sPage].NG1.DC.NG2.DR.DC.DocCB sensitive 1
  170.         }
  171.         {config} {
  172.             foreach CB [[$this phase] values] {
  173.                 $CB sensitive 1
  174.             }
  175.             [$this sPage].NG1.DC.NG2.DR.DC.SysCB sensitive 1
  176.             [$this sPage].NG1.DC.NG2.DR.DC.DocCB sensitive 1
  177.         }
  178.         {phase} {
  179.             [$this sPage].NG1.DC.NG2.DR.DC.SysCB sensitive 1
  180.             [$this sPage].NG1.DC.NG2.DR.DC.DocCB sensitive 1
  181.         }
  182.         {system} {
  183.             # nothing can be changed (always this specific system)
  184.         }
  185.     }
  186. }
  187.  
  188. method DefStoreDialog::objScope {this args} {
  189.     #indentation of this function is 4 spaces to make it easier to read
  190.     if {$args == ""} {
  191.     set scope "\{[[$this sPage].NG1.DC.projectSLT text]\}"
  192.     set scope "$scope \{[[$this sPage].NG1.DC.configSLT text]\}"
  193.     set phase {}
  194.     set phaseCount 0
  195.     [$this phase] foreach phaseType CB {
  196.         if [$CB state] {
  197.         lappend phase "$phaseType"
  198.         incr phaseCount
  199.         }
  200.     }
  201.     if {$phaseCount == [[$this phase] size]} {
  202.         set phase "*"
  203.     }
  204.     set scope "$scope \{$phase\}"
  205.     set system {}
  206.     set systemCount 0
  207.     if [[$this sPage].NG1.DC.NG2.DR.DC.SysCB state] {
  208.         lappend system [[$this sPage].NG1.DC.NG2.DR.DC.SysCB label]
  209.         incr systemCount
  210.     }
  211.     if [[$this sPage].NG1.DC.NG2.DR.DC.DocCB state] {
  212.         lappend system [[$this sPage].NG1.DC.NG2.DR.DC.DocCB label]
  213.         incr systemCount
  214.     }
  215.     if {$systemCount == 2} {
  216.         set system "*"
  217.     }
  218.     set scope "$scope \{$system\}"
  219.     set retScope ""
  220.     set scopeLength -1
  221.     set index 0
  222.     foreach i $scope {
  223.         if {[llength $i] > 1} {
  224.         if {$retScope == ""} {
  225.             set retScope "\{$i\}"
  226.         } else {
  227.             set retScope "$retScope \{$i\}"
  228.         }
  229.         set scopeLength $index
  230.         } elseif [lempty $i] {
  231.         # no spec means "*"
  232.         set retScope "$retScope *"
  233.         } else {
  234.         if {$retScope == ""} {
  235.             set retScope "$i"
  236.         } else {
  237.             set retScope "$retScope $i"
  238.         }
  239.         set scopeLength $index
  240.         }
  241.         incr index
  242.     }
  243.     return [lrange $retScope 0 $scopeLength]
  244.     } else {
  245.     set argc 0
  246.     set args [lvarpop args]
  247.     foreach i $args {
  248.         if {$argc == 0} {
  249.         [$this sPage].NG1.DC.projectSLT text $i
  250.         }
  251.         if {$argc == 1} {
  252.         [$this sPage].NG1.DC.configSLT text $i
  253.         }
  254.         if {$argc == 2} {
  255.         if {[lsearch $i "\\*"] != -1} {
  256.             foreach CB [[$this phase] values] {
  257.             $CB state 1
  258.             }
  259.         } else {
  260.             [$this phase] foreach phaseType CB {
  261.             if {[lsearch $i "$phaseType"] != -1} {
  262.                 $CB state 1
  263.             }
  264.             }
  265.         }
  266.         }
  267.         if {$argc == 3} {
  268.         if {[lsearch $i "\\*"] != -1} {
  269.             [$this sPage].NG1.DC.NG2.DR.DC.SysCB state 1
  270.             [$this sPage].NG1.DC.NG2.DR.DC.DocCB state 1
  271.             continue
  272.         } else {
  273.             set obj [$this sPage].NG1.DC.NG2.DR.DC.SysCB
  274.             if {[lsearch $i [$obj label]] != -1} {
  275.             $obj state 1
  276.             }
  277.             set obj [$this sPage].NG1.DC.NG2.DR.DC.DocCB
  278.             if {[lsearch $i [$obj label]] != -1} {
  279.             $obj state 1
  280.             }
  281.         }
  282.         }
  283.         incr argc
  284.     }
  285.     }
  286. }
  287.  
  288. method DefStoreDialog::objReadOnly {this args} {
  289.     if {$args == ""} {
  290.         return [[$this sPage].NG2.DR.readOnlyCB state]
  291.     } else {
  292.         [$this sPage].NG2.DR.readOnlyCB state $args
  293.     }
  294. }
  295.  
  296. method DefStoreDialog::cancelled {this} {
  297.  
  298.     # if cancelled, and the object was redefined, remove the object
  299.     if {[[$this curObject] redefined] == 1} {
  300.         [$this curObject] delete
  301.     }
  302. }
  303.  
  304. # Do not delete this line -- regeneration end marker
  305.  
  306. method DefStoreDialog::getPhase {this phaseType} {
  307.     return [[$this phase] set $phaseType]
  308. }
  309.  
  310. method DefStoreDialog::setPhase {this phaseType newPhase} {
  311.     [$this phase] set $phaseType $newPhase
  312. }
  313.  
  314. method DefStoreDialog::removePhase {this phaseType} {
  315.     [$this phase] unset $phaseType
  316. }
  317.  
  318.