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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)reparchdia.tcl    /main/titanic/13
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)reparchdia.tcl    /main/titanic/13   28 Nov 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14. require "reptooldia.tcl"
  15.  
  16. Class RepArchDialog : {RepToolDialog} {
  17.     constructor
  18.     method destructor
  19.     method popUp
  20.     method checkOk
  21.     method pressedOk
  22.     method archiveFinished
  23.     method browseDirectory
  24.     method browseArchive
  25.     method browseCommand
  26.     method setDirectory
  27.     method setDestination
  28.     method setCommand
  29.     method dumpDirectory
  30.     method dumpedObject
  31.     attribute dirLabel
  32.     attribute dirField
  33.     attribute dstField
  34.     attribute cmdField
  35.     attribute shutdownButton
  36.     attribute currentRepositoryName
  37.     attribute currentRepositoryDir
  38. }
  39.  
  40. constructor RepArchDialog {class this name view} {
  41.     set this [RepToolDialog::constructor $class $this $name $view]
  42.     # Start constructor user section
  43.  
  44.         $this autoPopDown 0
  45.  
  46.         interface DlgColumn $this.c {
  47.         Label dirLabel { text "Directory" }
  48.         DlgRow r {
  49.         spaceType NONE
  50.         DlgColumn n {
  51.             spaceType EVEN
  52.             horStretchFactor 100
  53.             SingleLineText dir {
  54.             text ""
  55.             columnCount 30
  56.             horStretchFactor 100
  57.             }
  58.         }
  59.         DlgColumn b {
  60.             spaceType EVEN
  61.             horStretchFactor 0
  62.             PushButton browse {
  63.             horStretchFactor 0
  64.             label "Browse..."
  65.             }
  66.         }
  67.         }
  68.         Label note { 
  69.         font times-normal-14
  70.                 text "Note: the archive command runs in the parent directory\
  71.                       of this."
  72.             }
  73.         CheckButton shut {
  74.         label "Shutdown dbservers before archiving."
  75.         state 1
  76.         }
  77.         Label l { text "Destination" }
  78.         DlgRow d {
  79.         spaceType NONE
  80.         DlgColumn r {
  81.             spaceType EVEN
  82.             horStretchFactor 100
  83.             SingleLineText dst {
  84.             text ""
  85.             columnCount 40
  86.             horStretchFactor 100
  87.             }
  88.         }
  89.         DlgColumn b {
  90.             spaceType EVEN
  91.             horStretchFactor 0
  92.             PushButton browse {
  93.             horStretchFactor 0
  94.             label "Browse..."
  95.             }
  96.         }
  97.         }
  98.         Label l { text "Command" }
  99.         DlgRow c {
  100.         spaceType NONE
  101.         horStretchFactor 100
  102.         DlgColumn c {
  103.             spaceType EVEN
  104.             horStretchFactor 100
  105.             SingleLineText cmd {
  106.             text ""
  107.             horStretchFactor 100
  108.             columnCount 30
  109.             }
  110.         }
  111.         DlgColumn b {
  112.             spaceType EVEN
  113.             horStretchFactor 0
  114.             PushButton browse {
  115.             horStretchFactor 0
  116.             label "Browse..."
  117.             }
  118.         }
  119.         }
  120.         }
  121.  
  122.         $this dirLabel $this.c.dirLabel
  123.         $this dirField $this.c.r.n.dir
  124.     $this dstField $this.c.d.r.dst
  125.     $this cmdField $this.c.c.c.cmd
  126.         $this shutdownButton $this.c.shut
  127.  
  128.         $this okPressed "$this pressedOk"
  129.         [$this dirField] editable 0
  130.         [$this dirField] textModified "$this checkOk"
  131.         [$this cmdField] textModified "$this checkOk"
  132.     $this.c.r.b.browse activated "$this browseDirectory"
  133.         $this.c.d.b.browse activated "$this browseArchive"
  134.         $this.c.c.b.browse activated "$this browseCommand"
  135.  
  136.         set repDir [[$view rep] lastRepDir]
  137.         $this setDirectory $repDir
  138.     [$this dstField] text [Repository::defaultDumpFile $repDir]
  139.  
  140.     # End constructor user section
  141.     return $this
  142. }
  143.  
  144. method RepArchDialog::destructor {this} {
  145.     # Start destructor user section
  146.     # End destructor user section
  147.     $this RepToolDialog::destructor
  148. }
  149.  
  150. method RepArchDialog::popUp {this} {
  151.     set ctx [string tolower [$this objType]]
  152.     [$this cmdField] text [m4_var get M4_archive_cmd -context $ctx]
  153.  
  154.     set dumpDir [$this dumpDirectory]
  155.     if {$dumpDir != ""} {
  156.     $this setDirectory $dumpDir
  157.     [$this dstField] text [Repository::defaultDumpFile $dumpDir]
  158.     }
  159.  
  160.     $this checkOk
  161.     $this RepToolDialog::popUp
  162. }
  163.  
  164. method RepArchDialog::checkOk {this} {
  165.     $this okSensitive [expr {
  166.         [[$this dirField] text] != "" &&
  167.         [[$this dstField] text] != "" &&
  168.         [[$this cmdField] text] != ""
  169.     }]
  170. }
  171.  
  172. method RepArchDialog::pressedOk {this} {
  173.     $this busy 1
  174.  
  175.     set ctx [string tolower [$this objType]]
  176.     m4_var set M4_archive_cmd [[$this cmdField] text] -context $ctx
  177.  
  178.     # Save these values before shutdown for use by subclasses later on.
  179.     #
  180.     set rep [[$this view] rep]
  181.     $this currentRepositoryName [$rep currentName]
  182.     if ![[$rep currentCorporate] isNil] {
  183.     $this currentRepositoryDir  [$rep currentRepDir]
  184.     } else {
  185.         $this currentRepositoryDir ""
  186.     }
  187.  
  188.     if [[$this shutdownButton] state] {
  189.         set name [$this currentRepositoryName]
  190.     if {$name != "" && ![$rep shutdownDbServers $name]} {
  191.         $this busy 0
  192.             return
  193.         }
  194.     }    
  195.  
  196.     if ![$this archive] {
  197.         $this busy 0
  198.     }
  199. }
  200.  
  201. method RepArchDialog::archiveFinished {this exitCode} {
  202.     $this busy 0
  203.     if {$exitCode == 0} {
  204.     $this popDown
  205.         [$this view] message "Archived [$this objDescription] successfully."
  206.     } else {
  207.         [$this view] message "Failed to archive [$this objDescription]."
  208.     }
  209. }
  210.  
  211. method RepArchDialog::browseDirectory {this} {
  212.     set dirBrowser [$this view].dirBrowser
  213.     if ![isCommand $dirBrowser] {
  214.         RepDirBrowser new $dirBrowser 0 1 \
  215.             -title "Select [$this objType] Directory" \
  216.             -okPressed "%this handleOk ; $this setDirectory \[%this selected]"
  217.     }
  218.  
  219.     $dirBrowser selected [[$this dirField] text]
  220.     $dirBrowser popUp
  221. }
  222.  
  223. method RepArchDialog::browseArchive {this} {
  224.     set archiveBrowser [$this view].archiveBrowser
  225.     if ![isCommand $archiveBrowser] {
  226.         FileChooser new $archiveBrowser \
  227.             -selectionPolicy BROWSE \
  228.             -title "Select Destination Archive" \
  229.             -okPressed "$this setDestination \[lindex \[%this selectedSet] 0]"
  230.         $archiveBrowser delHelpButton
  231.     }
  232.  
  233.     set file [Repository::expandFileName [[$this dstField] text]]
  234.     Repository::expandDirName [file dir $file] existingDir
  235.  
  236.     $archiveBrowser selectedSet [list $file]
  237.     $archiveBrowser directory $existingDir
  238.     $archiveBrowser popUp
  239. }
  240.  
  241. method RepArchDialog::browseCommand {this} {
  242.     set commandBrowser [$this view].commandBrowser
  243.     if ![isCommand $commandBrowser] {
  244.         FileChooser new $commandBrowser \
  245.             -selectionPolicy BROWSE \
  246.             -title "Select Archive Command" \
  247.             -okPressed "$this setCommand \[lindex \[%this selectedSet] 0]"
  248.         $commandBrowser delHelpButton
  249.     }
  250.  
  251.     set cmdText [[$this cmdField] text]
  252.     protect_backslashes {cmdText cmd} { set cmd [lindex $cmdText 0] }
  253.  
  254.     set file [Repository::expandFileName $cmd]
  255.     Repository::expandDirName [file dir $file] existingDir
  256.  
  257.     $commandBrowser selectedSet [list $file]
  258.     $commandBrowser directory $existingDir
  259.     $commandBrowser popUp
  260. }
  261.  
  262. method RepArchDialog::setDirectory {this dir} {
  263.     [$this dirField] text $dir
  264.     $this checkOk
  265. }
  266.  
  267. method RepArchDialog::setDestination {this file} {
  268.     [$this dstField] text $file
  269.     $this checkOk
  270. }
  271.  
  272. method RepArchDialog::setCommand {this cmd} {
  273.     set contents [[$this cmdField] text]
  274.     if [lempty $contents] {
  275.         set contents $cmd
  276.     } else {
  277.     protect_backslashes {cmd contents} {
  278.         set old [lindex $contents 0]
  279.         set oldEnd [string length [quoteIf $old]]
  280.         incr oldEnd
  281.         set contents "[quoteIf $cmd] [string range $contents $oldEnd end]"
  282.     }
  283.     }
  284.     [$this cmdField] text $contents
  285.     $this checkOk
  286. }
  287.  
  288. method RepArchDialog::dumpDirectory {this} {
  289.     set type [$this objType]
  290.     set view [$this view]
  291.     set dumpDialog $view.RepDump${type}Dialog
  292.     if [isCommand $dumpDialog] {
  293.         return [$dumpDialog dumpDirectory]
  294.     }
  295.     return ""
  296. }
  297.  
  298. method RepArchDialog::dumpedObject {this} {
  299.     set type [$this objType]
  300.     set view [$this view]
  301.     set dumpDialog $view.RepDump${type}Dialog
  302.     if [isCommand $dumpDialog] {
  303.         return [$dumpDialog dumpedObject]
  304.     }
  305.     return [ORB::nil]
  306. }
  307.  
  308. # Do not delete this line -- regeneration end marker
  309.  
  310.