home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / newextfvdi.tcl < prev    next >
Text File  |  1996-09-12  |  5KB  |  204 lines

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