home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / repnewdial.tcl < prev    next >
Text File  |  1996-11-28  |  6KB  |  216 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1996
  4. #
  5. #      File:           @(#)repnewdial.tcl    /main/hindenburg/13
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)repnewdial.tcl    /main/hindenburg/13   28 Nov 1996 Copyright 1996 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. require "repdbms.tcl"
  13. require "repository.tcl"
  14. # End user added include file section
  15.  
  16. require "repdbdialo.tcl"
  17.  
  18. Class RepNewDialog : {RepDbDialog} {
  19.     constructor
  20.     method destructor
  21.     method popUp
  22.     method ok
  23.     method checkOk
  24.     method startCreate
  25.     method createFinished
  26.     method browseDir
  27.     attribute dirBrowser
  28.     attribute name
  29.     attribute dir
  30. }
  31.  
  32. constructor RepNewDialog {class this name view} {
  33.     set this [RepDbDialog::constructor $class $this $name $view]
  34.     # Start constructor user section
  35.  
  36.         $this config \
  37.             -title "New Repository" \
  38.             -okPressed { busy { %this ok } } \
  39.             -helpPressed { [%this view] helpOnName newRepository }
  40.  
  41.         interface DlgColumn $this.gui {
  42.             DlgColumn name {
  43.                 Label l { text "Corporate Name" }
  44.                 SingleLineText name {
  45.                     columnCount 30
  46.                 }
  47.             }
  48.             DlgColumn dir {
  49.         Label l {
  50.             text "Directory in which to create repository"
  51.             alignment LEFT
  52.             horStretchFactor 100
  53.         }
  54.                 DlgRow r {
  55.             spaceType NONE
  56.                     DlgColumn d {
  57.             horStretchFactor 100
  58.                         spaceType EVEN
  59.             SingleLineText dir {
  60.                 columnCount 30
  61.                 horStretchFactor 100
  62.             }
  63.                     }
  64.                 }
  65.             }
  66.             NamedGroup db {
  67.                 label "Database"
  68.                 DlgColumn attr { }
  69.             }
  70.         }
  71.  
  72.         if !$win95 {
  73.             interface DlgColumn $this.gui.dir.r.b {
  74.         horStretchFactor 0
  75.         spaceType EVEN
  76.         PushButton browse {
  77.             horStretchFactor 0
  78.             label "Browse..."
  79.         }
  80.         }
  81.         $this.gui.dir.r.b.browse activated "$this browseDir"
  82.         }
  83.  
  84.         $this name $this.gui.name.name
  85.         $this dir $this.gui.dir.r.d.dir
  86.         $this createDbInterface $this.gui.db.attr
  87.         $this setDbFields
  88.  
  89.         [$this name] textModified "$this checkOk"
  90.         [$this dir] textModified "$this checkOk"
  91.         [$this dbname] text ""
  92.         [$this dbname] textModified "$this checkOk"
  93.  
  94.         set rep [[$this view] rep]
  95.         set corp [$rep currentCorporate]
  96.         if ![$corp isNil] {
  97.             [$this dir] text [$corp location]
  98.         }
  99.  
  100.     # End constructor user section
  101.     return $this
  102. }
  103.  
  104. method RepNewDialog::destructor {this} {
  105.     # Start destructor user section
  106.     # End destructor user section
  107.     $this RepDbDialog::destructor
  108. }
  109.  
  110. method RepNewDialog::popUp {this} {
  111.     $this checkOk
  112.     $this RepDbDialog::popUp
  113. }
  114.  
  115. method RepNewDialog::ok {this} {
  116.     # Some sanity checks.
  117.     #
  118.     if {[string length [[$this name] text]] == 0} {
  119.         [$this view] error "No repository name specified."
  120.     [$this view] message "Repository not created."
  121.         return
  122.     }
  123.  
  124.     set repDir [Repository::expandDirName [[$this dir] text]]
  125.     if {[string length $repDir] == 0} {
  126.         [$this view] error "No repository directory specified."
  127.     [$this view] message "Repository not created."
  128.         return
  129.     }
  130.     [$this dir] text $repDir
  131.  
  132.     if [file exists $repDir] {
  133.         if ![file isdirectory $repDir] {
  134.             [$this view] error "Directory '$repDir' is not a directory." 
  135.             [$this view] message "Repository not created."
  136.             return
  137.         }
  138.         if ![file writable $repDir] {
  139.             [$this view] error "Directory '$repDir' is not writable."
  140.             [$this view] message "Repository not created."
  141.             return
  142.         }
  143.     } else {
  144.         set dlg [QuestionDialog new [$this view].createdir \
  145.         -title "Create Directory" \
  146.         -message "Directory '$repDir' does not exist.\nCreate it?" \
  147.             -okPressed "$this startCreate 1" \
  148.             -cancelPressed "return"]
  149.         $dlg delHelpButton
  150.     $dlg popUp
  151.         return
  152.     }
  153.  
  154.     $this startCreate 0
  155. }
  156.  
  157. method RepNewDialog::checkOk {this} {
  158.     if {[string length [[$this name] text]] > 0 &&
  159.         [string length [[$this dir] text]] > 0 &&
  160.         [string length [[$this dbname] text]] > 0 &&
  161.         [$this passwordOk]} {
  162.  
  163.     $this okSensitive 1
  164.     } else {
  165.     $this okSensitive 0
  166.     }
  167. }
  168.  
  169. method RepNewDialog::startCreate {this makeDir} {
  170.     if ![$this getDbFields cmdInfo] {
  171.         return
  172.     }
  173.  
  174.     if $makeDir {
  175.         set repDir [[$this dir] text]
  176.         if [catch {BasicFS::makeDir $repDir} error] {
  177.             [$this view] error $error
  178.             return
  179.         }
  180.     }
  181.  
  182.     [[$this view] rep] createRepository "$this createFinished" cmdInfo \
  183.                     [[$this name] text] \
  184.                     [[$this dir] text]
  185. }
  186.  
  187. method RepNewDialog::createFinished {this exitCode} {
  188.     if {$exitCode == 0} {
  189.         # Try to select the new repository.
  190.         #
  191.         [$this view] updateRepositories
  192.         [$this view] selectRepository [[$this name] text]
  193.         [$this view] message "Repository created successfully."
  194.     } else {
  195.         [$this view] message "Repository not created."
  196.     }
  197. }
  198.  
  199. method RepNewDialog::browseDir {this} {
  200.     if {[$this dirBrowser] == ""} {
  201.         $this dirBrowser [FileChooser new [$this view].dirbrowser \
  202.         -selectionPolicy SINGLE \
  203.         -title "Select Corporate Directory" \
  204.         -okPressed "[$this dir] text \[%this directory]"]
  205.         [$this dirBrowser] delHelpButton
  206.     }
  207.  
  208.     set dir [Repository::expandDirName [[$this dir] text] existingDir]
  209.     [$this dirBrowser] selectedSet $dir
  210.     [$this dirBrowser] directory $existingDir
  211.     [$this dirBrowser] popUp
  212. }
  213.  
  214. # Do not delete this line -- regeneration end marker
  215.  
  216.