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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1996
  4. #
  5. #      File:           @(#)reptool.tcl    /main/titanic/15
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)reptool.tcl    /main/titanic/15   10 Nov 1997 Copyright 1996 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. require showversio.tcl
  13. require reptoolfon.tcl
  14. require reptoolurl.tcl
  15. # End user added include file section
  16.  
  17. require "wmttool.tcl"
  18.  
  19. Class RepTool : {MainWindow WmtTool} {
  20.     method destructor
  21.     constructor
  22.     method viewTitle
  23.     method viewIconTitle
  24.     method viewFile
  25.     method viewName
  26.     method viewIcon
  27.     method error
  28.     method warning
  29.     method message
  30.     method startView
  31.     method setFont
  32.     method getFont
  33.     method selectionChanged
  34.     method selectedObjSet
  35.     method fileOpen
  36.     method fileExit
  37.     method optionsFont
  38.     method helpOnContext
  39.     method helpOnName
  40.     attribute levelPath
  41.     attribute levelPathIds
  42.     attribute menuHandler
  43.     attribute moduleHandler
  44.     attribute viewInfo
  45.     attribute fontChooser
  46. }
  47.  
  48. method RepTool::destructor {this} {
  49.     # Start destructor user section
  50.  
  51.         $this saveWindowGeometry reptool
  52.     $this saveMessageAreaPresence reptool
  53.  
  54.     # End destructor user section
  55.     $this WmtTool::destructor
  56. }
  57.  
  58. constructor RepTool {class this name} {
  59.     set this [MainWindow::constructor $class $this $name]
  60.     set this [WmtTool::constructor $class $this $name]
  61.  
  62.     global classCount
  63.     set classCount 0
  64.  
  65.     # Configure the main window.
  66.     #
  67.     $this config \
  68.     -title "Cayenne Repository Tool" \
  69.     -closed {%this fileExit} \
  70.         -exitButton $this.bar.file.menu.exit \
  71.     -iconTitle "Repository Tool" \
  72.     -icon rep_tool_64
  73.  
  74.     $this setWindowGeometry reptool
  75.  
  76.     # Define views.
  77.     #
  78.     set list [List new]
  79.     $list contents {
  80.         {corp "Corporate Management" corpmanvie CorpManView rep_corp_32}
  81.         {uenv "User Environment" userenvvie UserEnvView rep_uenv_32}
  82.         {lock "Lock Management" lockmanvie LockManView rep_lock_32}
  83.         {conf "Client/Server Configuration" csconfigvi CSConfigView rep_conf_32}
  84.     }
  85.  
  86.     # Create component user interface parts.
  87.     #
  88.     MenuBar new $this.bar
  89.     interface DlgColumn $this.gui {
  90.         BrowsView views {
  91.             mode ICON
  92.         }
  93.     }
  94.     $this.gui.views selectionChanged "$this selectionChanged"
  95.     $this.gui.views font [$this getFont]
  96.  
  97.     # Default row and column counts are based on default fonts
  98.     # Arial-normal-12-0 (Windows) and helvetica-normal-12-0 (Unix).
  99.     #
  100.     if $win95 {
  101.     $this.gui.views columnCount 78
  102.     $this.gui.views rowCount 3
  103.     } else {
  104.     $this.gui.views columnCount 30
  105.     $this.gui.views rowCount 3
  106.     }
  107.  
  108.     # Make a dictionary for fast view lookup.
  109.     #
  110.     $this viewInfo [Dictionary new]
  111.  
  112.     # Create view browser objects.
  113.     #
  114.     $list foreach view {
  115.         set key [lindex $view 0]
  116.         [$this viewInfo] set $key [lrange $view 1 end]
  117.         BrowsObject new $this.gui.views.$key \
  118.         -activated "busy \{ $this startView $key \}" \
  119.         -smallIcon [$this viewIcon $key] \
  120.         -largeIcon [$this viewIcon $key] \
  121.         -label [$this viewIconTitle $key]
  122.     }
  123.  
  124.     # Create module handler.
  125.     #
  126.     $this moduleHandler [ModuleHandler new]
  127.  
  128.     # Install menu handler.
  129.     #
  130.     $this menuHandler [CustBrMenuHandler new reptool [$this moduleHandler]]
  131.     catch {[$this menuHandler] setCurrentContext}
  132.     catch {[$this menuHandler] selectionChanged}
  133.  
  134.     $this setMessageAreaPresence reptool
  135.  
  136.     ViewPopUpMenu new $this.gui.views.pop -poppedUp {
  137.     .main.gui.views.pop entrySet [[.main menuHandler] validPopUpEntrySet]
  138.     }
  139.  
  140.     return $this
  141. }
  142.  
  143. method RepTool::viewTitle {this name} {
  144.     return [lindex [[$this viewInfo] set $name] 0]
  145. }
  146.  
  147. method RepTool::viewIconTitle {this name} {
  148.     set title [lindex [[$this viewInfo] set $name] 0]
  149.     regsub -all " " $title "\n" title
  150.     return $title
  151. }
  152.  
  153. method RepTool::viewFile {this name} {
  154.     return [lindex [[$this viewInfo] set $name] 1].tcl
  155. }
  156.  
  157. method RepTool::viewName {this name} {
  158.     return [lindex [[$this viewInfo] set $name] 2]
  159. }
  160.  
  161. method RepTool::viewIcon {this name} {
  162.     return [lindex [[$this viewInfo] set $name] 3]
  163. }
  164.  
  165. method RepTool::error {this msg} {
  166.     global errorCode
  167.     set errorCode 0
  168.  
  169.     wmtkerror $msg
  170. }
  171.  
  172. method RepTool::warning {this msg} {
  173.     wmtkwarning $msg
  174. }
  175.  
  176. method RepTool::message {this msg} {
  177.     wmtkmessage $msg    
  178. }
  179.  
  180. method RepTool::startView {this name} {
  181.     $this message "Starting '[$this viewTitle $name]' tool..."
  182.  
  183.     SystemUtilities::fork otk reptoolpop \
  184.         -caller [get_comm_name] \
  185.         -levelPath [$this levelPath] \
  186.         -levelPathIds [$this levelPathIds] \
  187.         [$this viewFile $name]
  188. }
  189.  
  190. method RepTool::setFont {this font} {
  191.     if [catch {m4_var set M4_font $font -context reptool}] {
  192.     $this error "Unable to set font for Repository Tool."
  193.     }
  194.     $this.gui.views font $font
  195. }
  196.  
  197. method RepTool::getFont {this} {
  198.     return [m4_var get M4_font -context reptool]
  199. }
  200.  
  201. method RepTool::selectionChanged {this} {
  202.     set handler [$this menuHandler]
  203.     if {$handler != ""} {
  204.         $handler selectionChanged
  205.     }
  206. }
  207.  
  208. method RepTool::selectedObjSet {this} {
  209.     return [$this.gui.views selectedSet]
  210. }
  211.  
  212. method RepTool::fileOpen {this} {
  213.     set names [split [$this.gui.views selectedSet] .]
  214.     set end [llength $names]
  215.     incr end -1
  216.     $this startView [lindex $names $end]
  217. }
  218.  
  219. method RepTool::fileExit {this} {
  220.     $this message "Exiting..."
  221.     $this stop
  222. }
  223.  
  224. method RepTool::optionsFont {this} {
  225.     if {[$this fontChooser] == ""} {
  226.         $this fontChooser [RepToolFontChooser new $this.fontdlg $this]
  227.     }
  228.     [$this fontChooser] popUp
  229. }
  230.  
  231. method RepTool::helpOnContext {this} {
  232.     set obj [$this selectedObjSet]
  233.     if ![lempty $obj] {
  234.     set names [split $obj .]
  235.     set end [llength $names]
  236.     incr end -1
  237.     set name [lindex $names $end]
  238.  
  239.         $this helpOnName "repTool[$this viewName $name]"
  240.     } else {
  241.         $this helpOnName "repToolMain"
  242.     }
  243. }
  244.  
  245. method RepTool::helpOnName {this name} {
  246.     global short2url
  247.     if [catch {set url $short2url($name)}] {
  248.     $this error "Sorry, no help available for '$name'"
  249.     } else {
  250.     showHelp $url
  251.     }
  252. }
  253.  
  254. # Do not delete this line -- regeneration end marker
  255.  
  256.