home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / contchange.tcl < prev    next >
Text File  |  1997-05-21  |  4KB  |  147 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)contchange.tcl    /main/titanic/3
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)contchange.tcl    /main/titanic/3   21 May 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14.  
  15. # This dialog has two parts in a radio group:
  16. # the first allows explicit selection of a working
  17. # project version, the second specifies that ObjecTeam
  18. # should always use the latest version.
  19.  
  20. Class ContChangeProjectVersionDialog : {TemplateDialog} {
  21.     constructor
  22.     method destructor
  23.     method createInterface
  24.     method popUp
  25.     method handleOk
  26.  
  27.     # Currently selected version
  28.     #
  29.     attribute currentVersion
  30.  
  31.     # List of working versions.
  32.     #
  33.     attribute workingVersions
  34.  
  35.     # Current system ,used to update its path.
  36.     #
  37.     attribute currentSystem
  38. }
  39.  
  40. constructor ContChangeProjectVersionDialog {class this name} {
  41.     set this [TemplateDialog::constructor $class $this $name]
  42.     # Start constructor user section
  43.     $this createInterface
  44.     # End constructor user section
  45.     return $this
  46. }
  47.  
  48. method ContChangeProjectVersionDialog::destructor {this} {
  49.     # Start destructor user section
  50.     # End destructor user section
  51. }
  52.  
  53.  
  54. # Put elements in the interface.
  55. #
  56. method ContChangeProjectVersionDialog::createInterface {this} {
  57.     interface DlgColumn $this.col {
  58.     CheckButton explicit {
  59.         label "Select working version:"
  60.     }
  61.     TextList versions {
  62.     }
  63.     CheckButton latest {
  64.         label "Select latest working version"
  65.     }
  66.     }
  67.  
  68.     $this.col.explicit stateChanged {
  69.     if [%this state] {
  70.         [%this parent].latest state 0
  71.         [%this parent].versions sensitive 1
  72.     } else {
  73.         [%this parent].latest state 1
  74.         [%this parent].versions sensitive 0
  75.     }
  76.     }
  77.  
  78.     $this.col.latest stateChanged {
  79.     if [%this state] {
  80.         [%this parent].explicit state 0
  81.         [%this parent].versions sensitive 0
  82.     } else {
  83.         [%this parent].versions sensitive 1
  84.         [%this parent].explicit state 1
  85.     }
  86.     }
  87.  
  88.     $this title "Change Project Version"
  89.     $this delHelpButton
  90.     $this okPressed "$this handleOk"
  91. }
  92.  
  93.  
  94. # Adjust interface based on currentVersion
  95. # and workingVersions.
  96. #
  97. method ContChangeProjectVersionDialog::popUp {this} {
  98.     $this.col.versions entrySet [$this workingVersions]
  99.  
  100.     set m4Versions [m4_var get M4_cont_projects]
  101.     if { [lsearch -exact $m4Versions [$this currentVersion]] == -1 } {
  102.     $this.col.explicit state 0
  103.     $this.col.versions sensitive 0
  104.     $this.col.latest state 1
  105.     } else {
  106.     $this.col.explicit state 1
  107.     $this.col.versions selectedSet [$this currentVersion]
  108.     $this.col.latest state 0
  109.     }
  110.  
  111.     $this TemplateDialog::popUp
  112. }
  113.  
  114.  
  115. # If an explicit version was selected
  116. # put it in M4_cont_projects else remove
  117. # explicit versions of this project from 
  118. # M4_cont_projects.
  119. #
  120. method ContChangeProjectVersionDialog::handleOk {this} {
  121.     # construct list from M4_cont_projects without version specification
  122.     # of current project
  123.     set newList ""
  124.     if { [$this currentVersion] != "" } {
  125.     regsub {\-[^-]*$} [$this currentVersion] "" project
  126.     foreach projectVersion [m4_var get M4_cont_projects] {
  127.         regexp {(.*)-([^-]*)$} $projectVersion \
  128.             dummy selectedProject selectedVersion
  129.         if { $selectedProject != $project } {
  130.         append newList " $projectVersion"
  131.         }
  132.     }
  133.     }
  134.  
  135.     if [$this.col.explicit state] {
  136.     append newList " [lindex [$this.col.versions selectedSet] 0]"
  137.     }
  138.  
  139.     m4_var set M4_cont_projects [string trim $newList]
  140.     [$this currentSystem] updatePath
  141.     .main updateView
  142.     $this delete
  143. }
  144.  
  145. # Do not delete this line -- regeneration end marker
  146.  
  147.