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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)newextfvdi.tcl    /main/titanic/7
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)newextfvdi.tcl    /main/titanic/7   26 Nov 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12.  
  13. require wmt_util.tcl
  14.  
  15. # End user added include file section
  16.  
  17.  
  18. Class NewExtFVDialog : {TemplateDialog} {
  19.     constructor
  20.     method destructor
  21.     method checkcreateExtFile
  22.     method createExtFile
  23.     method createInterface
  24.     method typeSelectionChanged
  25.     method nameTextModified
  26.     method createAndEdit
  27.     method popUp
  28.     attribute ExtFileVList
  29. }
  30.  
  31. constructor NewExtFVDialog {class this name} {
  32.     set this [TemplateDialog::constructor $class $this $name]
  33.     # Start constructor user section
  34.     $this createInterface
  35.     # End constructor user section
  36.     return $this
  37. }
  38.  
  39. method NewExtFVDialog::destructor {this} {
  40.     # Start destructor user section
  41.     # End destructor user section
  42. }
  43.  
  44. method NewExtFVDialog::checkcreateExtFile {this} {
  45.  
  46.     busy {
  47.     set type [$this.DC.ExtFVtypeTL selectedSet]
  48.     set name [$this.DC.ExtFVnameSLT text]
  49.  
  50.     # of type makefile, library/executable
  51.     # only one instance per system is allowed
  52.     set msgPartA "already exists, only one"
  53.     set msgPartB "per system is allowed."
  54.     case $type in {
  55.         {makefile executable library} {
  56.         set sysV [[ClientContext::global] currentSystem]
  57.         foreach fv [$sysV localFileVersions] {
  58.             if {[[$fv file] type] == $type} {
  59.                 wmtkinfo [cap "$type $msgPartA $type $msgPartB"]
  60.                 return ""
  61.             }
  62.         }
  63.  
  64.         if {$type == "executable" || $type == "library"} {
  65.             set tmpType executable
  66.             if {$type == "executable"} {
  67.                 set tmpType library
  68.             }
  69.             foreach fv [$sysV localFileVersions] {
  70.                 if {[[$fv file] type] == $tmpType} {
  71.                     wmtkinfo [cap "$tmpType $msgPartA executable/library $msgPartB"]
  72.                     return ""
  73.                 }
  74.             }
  75.         }
  76.         if {$type == "makefile"} {
  77.             return [$this createExtFile $type $type]
  78.         }
  79.         }
  80.     }
  81.     }
  82.     return [$this createExtFile $name $type]
  83. }
  84.  
  85. method NewExtFVDialog::createExtFile {this name type} {
  86.  
  87.     set objSpec [getObjectSpec [.main objectHdlr] ExternalFileVersion $type]
  88.     if {"$objSpec" == ""} return ""
  89.  
  90.     wmtkmessage "Creating '$type' External File Version '$name'..."
  91.     busy {
  92.         set sysV [[ClientContext::global] currentSystem]
  93.         set configV [[ClientContext::global] currentConfig]
  94.         if {[$objSpec isAscii]} {
  95.             set fileV [$sysV createFileVersion  \
  96.                 $name cl 0 $type externalText $configV]
  97.         } else {
  98.             set fileV [$sysV createFileVersion  \
  99.                 $name cl 0 $type externalBinary $configV]
  100.         }
  101.         set fsExt [$objSpec fsExtension]
  102.         if {$fsExt == ""} {
  103.             $fileV setProperty fileSystemPath $name
  104.         } else {
  105.             $fileV setProperty fileSystemPath $name.$fsExt
  106.         }
  107.         if {"$type" != "library"} {
  108.             $fileV synchWithFileSystem
  109.         }
  110.         .main updateView
  111.     }
  112.     wmtkmessage ""
  113.     return $fileV
  114. }
  115.  
  116. method NewExtFVDialog::createInterface {this} {
  117.  
  118.     interface DlgColumn $this.DC {
  119.         allowResize 1
  120.         Label L {
  121.             text "Type:"
  122.         }
  123.         TextList  ExtFVtypeTL {
  124.             entrySet {}
  125.             rowCount 10
  126.         }
  127.         Label L {
  128.             text "Name:"
  129.         }
  130.         SingleLineText  ExtFVnameSLT {
  131.         }
  132.     }
  133.     PushButton new $this.edit \
  134.         -label Edit \
  135.         -sensitive 0 \
  136.         -activated "$this createAndEdit ; $this popDown"
  137.  
  138.     $this config \
  139.         -modal yes \
  140.         -title "New External File Version" \
  141.         -okPressed "$this checkcreateExtFile" \
  142.         -helpPressed ".main helpOnName [nt_get_type $this]"
  143.  
  144.     $this okSensitive 0
  145.     $this okDefault 0
  146.     $this cancelDefault 1
  147.  
  148.     $this.DC.ExtFVtypeTL selectionChanged "$this typeSelectionChanged"
  149.     $this.DC.ExtFVnameSLT textModified "$this nameTextModified"
  150. }
  151.  
  152. method NewExtFVDialog::typeSelectionChanged {this} {
  153.     # for some entries there is no name possible
  154.     case [$this.DC.ExtFVtypeTL selectedSet] in {
  155.         {makefile} {
  156.             $this.DC.ExtFVnameSLT text ""
  157.             $this.DC.ExtFVnameSLT editable 0
  158.             $this okSensitive 1
  159.             $this okDefault 1
  160.             $this.edit sensitive 1
  161.         } {default} {
  162.             $this.DC.ExtFVnameSLT editable 1
  163.             $this nameTextModified
  164.         }
  165.     }
  166. }
  167.  
  168. method NewExtFVDialog::nameTextModified {this} {
  169.  
  170.     if {[llength [$this.DC.ExtFVtypeTL selectedSet]] > 0 &&
  171.         "[rmWhiteSpace [$this.DC.ExtFVnameSLT text]]" != ""} {
  172.         $this okSensitive 1
  173.         $this okDefault 1
  174.         $this.edit sensitive 1
  175.     } else {
  176.         $this okSensitive 0
  177.         $this cancelDefault 1
  178.         $this.edit sensitive 0
  179.     }
  180. }
  181.  
  182. method NewExtFVDialog::createAndEdit {this} {
  183.  
  184.     set obj [$this checkcreateExtFile]
  185.  
  186.     if {$obj == ""} {
  187.         return
  188.     } else {
  189.         $obj editFile
  190.     }
  191. }
  192.  
  193. method NewExtFVDialog::popUp {this} {
  194.  
  195.     # fill the type entry set with all the possible externalfileversion
  196.     # skip 'section' type
  197.     set types {}
  198.     foreach objectSpec [[.main objectHdlr] currentObjectSpecSet] {
  199.         if {[$objectSpec repositoryType] == "ExternalFileVersion"} {
  200.             set browserType [$objectSpec browserType]
  201.             if {"$browserType" != ""} {
  202.                 lappend types "$browserType"
  203.             }
  204.         }
  205.     }
  206.     set entrySet [lsort $types]
  207.     if {$entrySet != [$this.DC.ExtFVtypeTL entrySet]} {
  208.         $this.DC.ExtFVtypeTL entrySet $entrySet
  209.     }
  210.  
  211.     $this TemplateDialog::popUp
  212. }
  213.  
  214. # Do not delete this line -- regeneration end marker
  215.  
  216.