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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1996
  4. #
  5. #      File:           @(#)repdeleted.tcl    /main/hindenburg/12
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)repdeleted.tcl    /main/hindenburg/12   29 Oct 1996 Copyright 1996 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. require "repository.tcl"
  13. # End user added include file section
  14.  
  15. require "repdbdialo.tcl"
  16.  
  17. Class RepDeleteDialog : {RepDbDialog} {
  18.     constructor
  19.     method destructor
  20.     method doDelete
  21.     method popUp
  22.     method checkOk
  23.     method ok
  24.     attribute parts
  25. }
  26.  
  27. constructor RepDeleteDialog {class this name view} {
  28.     set this [RepDbDialog::constructor $class $this $name $view]
  29.     # Start constructor user section
  30.  
  31.         set rep [[$this view] rep]
  32.         set corp [$rep currentCorporate]
  33.         set name [$rep currentName]
  34.  
  35.         $this config \
  36.             -title "Delete Repository '$name'" \
  37.             -okPressed { busy { %this ok } } \
  38.             -helpPressed { [%this view] helpOnName deleteRepository }
  39.  
  40.         interface DlgColumn $this.gui {
  41.         verStretchFactor 0
  42.             NamedGroup delete {
  43.                 label "Delete Repository"
  44.                 DlgColumn c {
  45.             verStretchFactor 0
  46.                     CheckButton db {
  47.                         label "Database"
  48.                         state 1
  49.                     }
  50.                     CheckButton dir {
  51.                         label "Directory"
  52.                         state 1
  53.                     }
  54.                     CheckButton entry {
  55.                         label "Server Entry"
  56.                         state 1
  57.                     }
  58.                 }
  59.             }
  60.             NamedGroup db {
  61.                 label "Database"
  62.                 DlgColumn attr {
  63.             verStretchFactor 0
  64.                 }
  65.             }
  66.         }
  67.  
  68.         $this parts $this.gui.delete.c
  69.         [$this parts].db stateChanged "$this checkOk"
  70.         [$this parts].dir stateChanged "$this checkOk"
  71.         [$this parts].entry stateChanged "$this checkOk"
  72.  
  73.         $this createDbInterface $this.gui.db.attr
  74.         $this setDbFields
  75.         $this setupForPassword
  76.  
  77.     # End constructor user section
  78.     return $this
  79. }
  80.  
  81. method RepDeleteDialog::destructor {this} {
  82.     # Start destructor user section
  83.     # End destructor user section
  84.     $this RepDbDialog::destructor
  85. }
  86.  
  87. method RepDeleteDialog::doDelete {this db dir entry} {
  88.     set rep [[$this view] rep]
  89.     set name [$rep currentName]
  90.     set corp [$rep currentCorporate]
  91.  
  92.     if ![$rep shutdownDbServers $name] {
  93.     [$this view] message "Repository not deleted."
  94.         return
  95.     }
  96.  
  97.     if $db {
  98.         if [$this getDbFields cmdInfo] {
  99.         set database $cmdInfo(dbname)
  100.             [$this view] message "Deleting database '$database' ..."
  101.         if [$rep deleteRepositoryDb cmdInfo] {
  102.         [$this view] message \
  103.                 "Database '$database' deleted successfully."
  104.             } else {
  105.         [$this view] message \
  106.                 "Database '$database' not deleted."
  107.             }
  108.         } else {
  109.             [$this view] message \
  110.                 "Database not deleted."
  111.         }
  112.     }
  113.  
  114.     if {$dir && ![$corp isNil]} {
  115.         set loc [path_name concat [$corp location] $name]
  116.     [$this view] message "Deleting repository directory '$loc' ..."
  117.         if [$rep deleteRepositoryDir] {
  118.             [$this view] message \
  119.                 "Repository directory '$loc' deleted successfully."
  120.         } else {
  121.             [$this view] message \
  122.                 "Repository directory '$loc' not deleted."
  123.         }
  124.     }
  125.  
  126.     if $entry {
  127.     [$this view] message "Deleting server entry of '$name' ..."
  128.         if [$rep deleteServerEntry] {
  129.             [$this view] message \
  130.                 "Server entry of '$name' deleted successfully."
  131.         [$this view] updateRepositories
  132.         [$this view] selectRepository ""
  133.         [$this view] viewRefresh
  134.         } else {
  135.             [$this view] message \
  136.                 "Server entry of '$name' not deleted."
  137.         }
  138.     }
  139. }
  140.  
  141. method RepDeleteDialog::popUp {this} {
  142.     $this checkOk
  143.     $this RepDbDialog::popUp
  144. }
  145.  
  146. method RepDeleteDialog::checkOk {this} {
  147.     if {([[$this parts].db state] ||
  148.      [[$this parts].dir state] ||
  149.      [[$this parts].entry state]) && [$this passwordOk]} {
  150.         $this okSensitive 1
  151.     } else {
  152.         $this okSensitive 0
  153.     }
  154. }
  155.  
  156. method RepDeleteDialog::ok {this} {
  157.     set rep [[$this view] rep]
  158.     set corp [$rep currentCorporate]
  159.     set name [$rep currentName]
  160.  
  161.     if ![$this getDbFields cmdInfo] {
  162.         return
  163.     }
  164.  
  165.     set database $cmdInfo(dbname)
  166.  
  167.     set db [[$this parts].db state]
  168.     set dir [[$this parts].dir state]
  169.     set entry [[$this parts].entry state]
  170.  
  171.     set what ""
  172.     if $db {
  173.     append what "\n    - database '$database'"
  174.     }
  175.     if $dir {
  176.     set location ""
  177.     if ![$corp isNil] {
  178.         set location [path_name concat [$corp location] [$corp name]]
  179.     } else {
  180.         if [$rep getInfoFromDatabase cmdInfo $database dbInfo] {
  181.         set location [path_name concat $dbInfo(location) $dbInfo(name)]
  182.         } else {
  183.         set location ""
  184.         }
  185.         }
  186.         if {$location != ""} {
  187.         append what "\n    - directory '$location'"
  188.         }
  189.     }
  190.     if $entry {
  191.     append what "\n    - server entry of '$name'"
  192.     }
  193.     if {$what == ""} {
  194.         set dlg [InfoDialog new [$this view].delinfodlg \
  195.             -title "Delete Repository" \
  196.             -message "Nothing to delete." \
  197.             -okPressed { %this delete }]
  198.         $dlg delHelpButton
  199.         $dlg popUp
  200.         return
  201.     }
  202.  
  203.     set msg "This action will cause loss of data if\n"
  204.     append msg "the repository is not backed up first!\n\n"
  205.     append msg "Do you really want to delete $what?"
  206.  
  207.     set dlg [WarningDialog new [$this view].deleterepconfirm \
  208.         -title "Delete Repository" \
  209.         -message $msg \
  210.         -okPressed "busy { $this doDelete $db $dir $entry }"]
  211.     $dlg delHelpButton
  212.     $dlg popUp
  213. }
  214.  
  215. # Do not delete this line -- regeneration end marker
  216.  
  217.