home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / osmp / root.2 / usr / lib / scoadmin / psrsetup / psrsetupGUI / psrsetupGUI~
Text File  |  1998-08-19  |  10KB  |  301 lines

  1. #!/bin/osavtcl
  2. # Copyright (c) 1992-1998 The Santa Cruz Operation, Inc.. All Rights Reserved. 
  3. #                                                                         
  4. #        THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF THE               
  5. #                   SANTA CRUZ OPERATION INC.                             
  6. #                                                                         
  7. #   The copyright notice above does not evidence any actual or intended   
  8. #   publication of such source code.                                      
  9.  
  10. #******************************************************************************
  11. #
  12. #    Copyright (C) 1992-1998 The Santa Cruz Operation, Inc.
  13. #        All Rights Reserved.
  14. #
  15. #    The information in this file is provided for the exclusive use of
  16. #    the licensees of The Santa Cruz Operation, Inc.  Such users have the
  17. #    right to use, modify, and incorporate this code into other products
  18. #    for purposes authorized by the license agreement provided they include
  19. #    this notice and the associated copyright notice with any such product.
  20. #    The information in this file is provided "AS IS" without warranty.
  21. #
  22. #===============================================================================
  23. #@package: SCO_PSRSETUPGUI_MSGS SCO_PSRSETUPGUI_MSGS
  24. proc SCO_PSRSETUPGUI_MSGS {} {}
  25. global SCO_PSRSETUPGUI_MSGS
  26. set SCO_PSRSETUPGUI_MSGS(@catalog@) {psrsetupGUI.cat@sa 1}
  27. set SCO_PSRSETUPGUI_MSGS(MSG_DLGTITLE) {1 {Processor Setup}}
  28. set SCO_PSRSETUPGUI_MSGS(MSG_FORMTITLE) {2 {Processor Setup %s}}
  29. set SCO_PSRSETUPGUI_MSGS(MSG_MENU_HOSTS) {3 Hosts}
  30. set SCO_PSRSETUPGUI_MSGS(MSG_MN_MENU_HOSTS) {4 t}
  31. set SCO_PSRSETUPGUI_MSGS(MSG_MENU_OPENHOST) {5 {Open host...}}
  32. set SCO_PSRSETUPGUI_MSGS(MSG_MN_MENU_OPENHOST) {6 O}
  33. set SCO_PSRSETUPGUI_MSGS(MSG_MENU_EXIT) {7 Exit}
  34. set SCO_PSRSETUPGUI_MSGS(MSG_MN_MENU_EXIT) {8 x}
  35. set SCO_PSRSETUPGUI_MSGS(MSG_MENU_ACTION) {9 Action}
  36. set SCO_PSRSETUPGUI_MSGS(MSG_MN_MENU_ACTION) {10 A}
  37. set SCO_PSRSETUPGUI_MSGS(MSG_MENU_PROPS) {11 Properties}
  38. set SCO_PSRSETUPGUI_MSGS(MSG_MN_MENU_PROPS) {12 P}
  39. set SCO_PSRSETUPGUI_MSGS(MSG_MENU_START) {13 Start/Stop}
  40. set SCO_PSRSETUPGUI_MSGS(MSG_MN_MENU_START) {14 S}
  41. set SCO_PSRSETUPGUI_MSGS(MSG_USAGE1) {15 {Usage: %s \[host\]}}
  42. set SCO_PSRSETUPGUI_MSGS(MSG_USAGE2) {16 {Usage: %s}}
  43. set SCO_PSRSETUPGUI_MSGS(MSG_SELECT_STOP) {17 {Select a processor start or stop}}
  44. set SCO_PSRSETUPGUI_MSGS(MSG_SELECT_PROP) {18 {Select a processor to look at the properties of}}
  45. proc UiProcessorCfg { parent } {
  46.     global appvals
  47.     set mainForm \
  48.         [VtFormDialog $parent.createDaemonForm \
  49.                 -okCallback     UiProcessorCfgOKCB \
  50.         -cancelCallback UiProcessorCfgCancelCB \
  51.                 -autoLock       "UiProcessorCfgOKCB UiProcessorCfgCancelCB" \
  52.         -title         [IntlLocalizeMsg SCO_PSRSETUPGUI_MSG_FORMTITLE \
  53.                  ($appvals(managedhost))] \
  54.         -ok \
  55.         -cancel \
  56.         -marginWidth     1 \
  57.         ]
  58.     set appvals(vtMain) $mainForm
  59.     set menuBar [VtMenuBar $mainForm.menuBar ]
  60.     set hostMenu [VtPulldown $menuBar.hostMenu \
  61.         -label [IntlLocalizeMsg SCO_PSRSETUPGUI_MSG_MENU_HOSTS] \
  62.         -mnemonic [IntlLocalizeMsg SCO_PSRSETUPGUI_MSG_MN_MENU_HOSTS] ]
  63.     VtPushButton $hostMenu.openhost \
  64.         -label [IntlLocalizeMsg SCO_PSRSETUPGUI_MSG_MENU_OPENHOST] \
  65.         -mnemonic [IntlLocalizeMsg SCO_PSRSETUPGUI_MSG_MN_MENU_OPENHOST] \
  66.         -callback SaOpenHostCB  \
  67.         -autoLock SaOpenHostCB
  68.     VtSeparator $hostMenu.s1
  69.     VtPushButton $hostMenu.exit \
  70.         -label [IntlLocalizeMsg SCO_PSRSETUPGUI_MSG_MENU_EXIT] \
  71.         -mnemonic [IntlLocalizeMsg SCO_PSRSETUPGUI_MSG_MN_MENU_EXIT] \
  72.         -callback UiProcessorCfgCancelCB  \
  73.         -autoLock UiProcessorCfgCancelCB
  74.         set actionsPD [VtPulldown $menuBar.actionsPD \
  75.                 -label [IntlLocalizeMsg SCO_PSRSETUPGUI_MSG_MENU_ACTION] \
  76.         -mnemonic [IntlLocalizeMsg SCO_PSRSETUPGUI_MSG_MN_MENU_ACTION] ]
  77.     VtPushButton $actionsPD.properties \
  78.                 -label [IntlLocalizeMsg SCO_PSRSETUPGUI_MSG_MENU_PROPS] \
  79.         -mnemonic [IntlLocalizeMsg SCO_PSRSETUPGUI_MSG_MN_MENU_PROPS] \
  80.                 -callback "UiProcessorPropertiesCB" \
  81.                 -autoLock "UiProcessorPropertiesCB"
  82.     VtPushButton $actionsPD.startstop \
  83.                 -label [IntlLocalizeMsg SCO_PSRSETUPGUI_MSG_MENU_START] \
  84.         -mnemonic [IntlLocalizeMsg SCO_PSRSETUPGUI_MSG_MN_MENU_START] \
  85.                 -callback "UiProcessorStartStopCB" \
  86.                 -autoLock "UiProcessorStartStopCB"
  87.     set formatlist {{STRING 50}}
  88.     set CHARM_formatlist {{STRING 50}}
  89.     set drawnList [VtDrawnList $mainForm.drawnList \
  90.         -formatList $formatlist \
  91.                 -CHARM_formatList $CHARM_formatlist \
  92.         -columns 50 \
  93.         -rows 6 \
  94.         -rightSide FORM]
  95.     VxSetVar $mainForm drawnList $drawnList
  96.     UiProcessorRefresh $mainForm
  97.     VtShow $mainForm
  98.     VtUnLock
  99. }
  100. proc UiProcessorRefresh { psrDlg } {
  101.     global appvals
  102.     set drawnList [VxGetVar $psrDlg drawnList]
  103.     VtDrawnListDeleteItem $drawnList -all
  104.     set result [osaGetAllProcessorInfo $appvals(managedhost)]
  105.     if { [lindex $result 0] != 0 } {
  106.         UiDisplayErrorMessage $parent [lindex $result 1]
  107.         return
  108.     }
  109.     set recordlist [list]
  110.     foreach i [lindex $result 1] {
  111.         append tmpvar " [list [concat Processor $i]]"
  112.         lappend recordlist $tmpvar
  113.         unset tmpvar
  114.     }
  115.     VtDrawnListAddItem $drawnList \
  116.         -recordList $recordlist
  117. }
  118. proc UiProcessorCfgOKCB { cbs } {
  119.     set parent [keylget cbs dialog]
  120.     VtDestroy $parent
  121.     VtUnLock
  122.     UiStop
  123. }
  124. proc UiProcessorCfgCancelCB { cbs } {
  125.     set parent [keylget cbs dialog]
  126.     VtDestroy $parent
  127.     VtUnLock
  128.     UiStop
  129. }
  130. proc UiProcessorPropertiesCB { cbs } {
  131.     global appvals
  132.     set parent [keylget cbs dialog]
  133.     set psrno [UiGetSelectProcessorNo $parent]
  134.     if [cequal $psrno ""] {
  135.         UiDisplayInfoMessage $parent \
  136.             [IntlLocalizeMsg SCO_PSRSETUPGUI_MSG_SELECT_PROP]
  137.     } else {
  138.         set result [osaGetProcessorInfo $appvals(managedhost) $psrno]
  139.         if { [lindex $result 0] != 0 } {
  140.             UiDisplayErrorMessage $parent [lindex $result 1]
  141.         } else {
  142.             set info [VtInformationDialog $parent.info \
  143.                 -message [lindex $result 1]]
  144.             VtShow $info
  145.         }
  146.     }
  147.     VtUnLock
  148. }
  149. proc UiProcessorStartStopCB { cbs } {
  150.     global appvals
  151.     set parent [keylget cbs dialog]
  152.     set psrno [UiGetSelectProcessorNo $parent]
  153.     if [cequal $psrno ""] {
  154.         UiDisplayInfoMessage $parent \
  155.             [IntlLocalizeMsg SCO_PSRSETUPGUI_MSG_SELECT_STOP]
  156.     } else {
  157.         set result [osaStartStopProcessor $appvals(managedhost) $psrno]
  158.         if { [lindex $result 0] != 0 } {
  159.             UiDisplayErrorMessage $parent [lindex $result 1]
  160.         } else {
  161.             UiProcessorRefresh $parent
  162.         }
  163.     }
  164.     VtUnLock
  165. }
  166. proc UiGetSelectProcessorNo { psrDlg } {
  167.     set drawnList [VxGetVar $psrDlg drawnList]
  168.     set posList [VtDrawnListGetSelectedItem $drawnList -byPositionList]
  169.     if { $posList != 0 } {
  170.         set psrno [expr $posList - 1]
  171.         return $psrno
  172.     } else {
  173.         return ""
  174.     }
  175. }
  176. proc UiDisplayErrorMessage { parent msg } {
  177.     set errMsgDlg [VtErrorDialog $parent.errMsgDlg \
  178.         -message $msg ]
  179.     VtShow $errMsgDlg
  180. }
  181. proc UiDisplayInfoMessage { parent msg } {
  182.     set infoMsgDlg [VtInformationDialog $parent.errMsgDlg \
  183.         -message $msg ]
  184.     VtShow $infoMsgDlg
  185. }
  186. proc GetInstanceList { names host} {
  187.     set instanceList {}
  188.     if { $host == "localhost" } {
  189.         foreach name $names {
  190.             set instance [list $name]
  191.             lappend instanceList $instance
  192.         }
  193.     } else {
  194.         foreach name $names {
  195.             set instance [list [list systemId $host] [list $name]]
  196.             lappend instanceList $instance
  197.         }
  198.     }
  199.     return $instanceList
  200. }
  201. proc osaPsrSetupOSACall { host actionType args  } {
  202.     set class [list sco psrsetup]
  203.         set instance [GetInstanceList NULL $host]
  204.         set command [list ObjectAction $class $instance $actionType $args]
  205.         set result [SaMakeObjectCall $command]
  206.         set result [lindex $result 0]
  207.                 if { [BmipResponseErrorIsPresent result] } {
  208.                 set errorStack [BmipResponseErrorStack result]
  209.                 ErrorThrow errorStack
  210.                 return {}
  211.                 }
  212.         set retVal [BmipResponseActionInfo result]
  213.         return $retVal
  214. }
  215. proc osaGetAllProcessorInfo { host } {
  216.     return [osaPsrSetupOSACall $host GetAllProcessorInfo {}]
  217. }
  218. proc osaStartStopProcessor { host psrno } {
  219.     return [osaPsrSetupOSACall $host StartStopProcessor $psrno]
  220. }
  221. proc osaGetProcessorInfo { host psrno } {
  222.     return [osaPsrSetupOSACall $host GetProcessorInfo $psrno]
  223. }
  224. set appvals(title) [IntlLocalizeMsg SCO_PSRSETUPGUI_MSG_DLGTITLE]
  225. set appvals(script) [file tail [info script]] ;# argv[0]: UNIX command name
  226. set appvals(client) $appvals(script)          ;# widget strings, preferences
  227. set appvals(version) 1.0
  228. set appvals(openhost) 1  
  229. set appvals(vtMain) ""
  230. proc Exit {{code 0}} {
  231.     exit $code
  232. }
  233. proc Usage {} {
  234.     global appvals
  235.     if $appvals(openhost) {
  236.         set usage [IntlLocalizeMsg SCO_PSRSETUPGUI_MSG_USAGE1]
  237.     } else {
  238.         set usage [IntlLocalizeMsg SCO_PSRSETUPGUI_MSG_USAGE2]
  239.     }
  240.     puts stderr $usage
  241. }
  242. proc ParseCommandLine {} {
  243.     global argv argc opterr optind appvals
  244.     set optString    ""
  245.     set argc [llength $argv]
  246.     set opterr 0
  247.     while {[set opt [getopt $argc $argv $optString]] != -1} {
  248.         switch $opt -- {
  249.             {?} {
  250.                 Usage; Exit 1
  251.             }
  252.         }
  253.     }
  254.     set optCount [expr "$argc - $optind"]
  255.     if {[expr $optCount >= 1]} {
  256.         set appvals(managedhost) [lindex $argv $optind]
  257.         incr optCount -1
  258.         incr optind 1
  259.     } 
  260.     set appvals(groupList) {}
  261.     set appvals(errorPrompt) {}
  262.     if ([expr $optCount >= 2]) {
  263.         set appvals(groupList) [lindex $argv $optind]
  264.                 incr optind 1
  265.         set appvals(errorPrompt) [lindex $argv $optind]
  266.                 incr optind 1
  267.                 incr optCount -2
  268.         }
  269.     if {$optCount != 0} {
  270.         Usage; Exit 1
  271.     }
  272. }
  273. proc Main {} {
  274.     global appvals
  275.     set appvals(localhost)    [SaHostGetLocalName]
  276.     set appvals(managedhost) $appvals(localhost)
  277.     ParseCommandLine
  278.     if { [catch UiStart catrchres ] } {
  279.         echo Problem Starting GUI
  280.         echo $catrchres
  281.         VtUnLock
  282.         if { ! [cequal $appvals(vtMain) ""] } {
  283.             VtDestroy $appvals(vtMain)
  284.         }
  285.     }
  286. }
  287. proc UiStart {} {
  288.     global appvals
  289.     set vtApp [VtOpen $appvals(client) ]
  290.     VtSetAppValues $vtApp \
  291.         -versionString "$appvals(title) $appvals(version)" \
  292.         -errorCallback {SaUnexpectedErrorCB {}}
  293.     UiProcessorCfg $vtApp
  294.     VtMainLoop
  295. }
  296. proc UiStop {} {
  297.     global appvals
  298.     VtClose
  299. }
  300. ErrorTopLevelCatch {Main} $appvals(script)
  301.