Main Page | Packages | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | Related Pages

GlobalPanelImpl.py

00001 #!/usr/bin/env python
00002 #
00003 #                               Copyright 2002
00004 #                                     by
00005 #                        The Board of Trustees of the
00006 #                     Leland Stanford Junior University.
00007 #                            All rights reserved.
00008 #
00009 
00010 __facility__ = "Online"
00011 __abstract__ = "RunControl Global Panel Implementation"
00012 __author__   = "S. Tuvi <stuvi@SLAC.Stanford.edu> SLAC - GLAST LAT I&T/Online"
00013 __date__     = "10/11/2002"
00014 __version__  = "$Revision: 2.20 $"
00015 __release__  = "$Name: R04-12-00 $"
00016 __credits__  = "SLAC"
00017 
00018 import LATTE.copyright_SLAC
00019 
00020 
00021 from qt                          import SIGNAL, QCursor, Qt, QAction, QKeySequence, QPixmap
00022 import                                  os
00023 import                                  sys
00024 
00025 import                                  GlobalPanel
00026 from EnvMonImpl                  import EnvMonImpl
00027 from LATTE.browser.BrowserImpl   import BrowserImpl
00028 from LATTE.power.PorcinePanel    import PorcineWindow
00029 from LATTE.power.GpibPwrCtrlImpl import GpibPwrCtrlImpl
00030 from LATTE.browser.userAppBrowser import userAppBrowser
00031 from LATTE.browser.trgDisplayImpl import trgDisplayImpl
00032 
00033 class GlobalPanelImpl(GlobalPanel.GlobalPanel):
00034 
00035   def __init__(self, rc, common, parent = None, name = None, fl = 0):
00036     GlobalPanel.GlobalPanel.__init__(self, parent, name, fl)
00037     self.__rc       = rc
00038     self.__common   = common
00039     self.__parent   = parent
00040     self.__userapp  = None
00041     self.__operator = None
00042     self.__gpib     = None
00043     self.__power    = None
00044 
00045     self.connect(self.MSGLoggerButton,SIGNAL("clicked()"),self.loadMSGLogger)
00046     self.connect(self.cmdEnvMon,SIGNAL("clicked()"),self.startEnvMon)
00047     self.connect(self.cmdBrowser,SIGNAL("clicked()"),self.startBrowser)
00048     self.connect(self.cmdBrowseExport,SIGNAL("clicked()"),self.browseExportedFiles)
00049     self.connect(self.cmdFabricPower,SIGNAL("clicked()"),self.fabricPowerControl)
00050     self.connect(self.cmdGPIBCtrl,SIGNAL("clicked()"),self.gpibPowerSupplyControl)
00051     self.connect(self.triggerdisplay,SIGNAL("clicked()"),self.startTriggerDisplay)
00052     self.toolsMessage_LoggerAction = QAction(self.__rc,"toolsMessage_LoggerAction")
00053     self.toolsEnvironmental_MonitoringAction = QAction(self.__rc,"toolsEnvironmental_MonitoringAction")
00054     self.toolsRegister_BrowserAction = QAction(self.__rc,"toolsRegister_BrowserAction")
00055     self.toolsBrowse_Exported_FilesAction = QAction(self.__rc,"toolsBrowse_Exported_FilesAction")
00056     self.toolsFabric_PowerAction = QAction(self.__rc,"toolsFabric_PowerAction")
00057     self.toolsGPIB_CtrlAction = QAction(self.__rc,"toolsGPIB_CtrlAction")
00058     self.toolsTrigger_DisplayAction = QAction(self.__rc,"toolstrigger_DisplayAction")
00059     self.toolsMessage_LoggerAction.setText("Message Logger")
00060     self.toolsMessage_LoggerAction.setMenuText("&Message Logger")
00061     self.toolsMessage_LoggerAction.setAccel(QKeySequence("Ctrl+Shift+M"))
00062     self.toolsEnvironmental_MonitoringAction.setText("Environmental Monitoring")
00063     self.toolsEnvironmental_MonitoringAction.setMenuText("&Environmental Monitoring")
00064     self.toolsEnvironmental_MonitoringAction.setAccel(QKeySequence("Ctrl+Shift+E"))
00065     self.toolsRegister_BrowserAction.setText("Register Browser")
00066     self.toolsRegister_BrowserAction.setMenuText("&Register Browser")
00067     self.toolsRegister_BrowserAction.setToolTip("Register Browser")
00068     self.toolsRegister_BrowserAction.setAccel(QKeySequence("Ctrl+Shift+R"))
00069     self.toolsBrowse_Exported_FilesAction.setText("Browse Exported Files")
00070     self.toolsBrowse_Exported_FilesAction.setMenuText("&Browse Exported Files")
00071     self.toolsBrowse_Exported_FilesAction.setToolTip("Browse Exported Files")
00072     self.toolsBrowse_Exported_FilesAction.setAccel(QKeySequence("Ctrl+Shift+B"))
00073     self.toolsFabric_PowerAction.setText("Fabric/Power Control")
00074     self.toolsFabric_PowerAction.setMenuText("&Fabric/Power Control")
00075     self.toolsFabric_PowerAction.setToolTip("Fabric/Power Control")
00076     self.toolsFabric_PowerAction.setAccel(QKeySequence("Ctrl+Shift+F"))
00077     self.toolsGPIB_CtrlAction.setText("GPIB Power Supply Control")
00078     self.toolsGPIB_CtrlAction.setMenuText("&GPIB Power Supply Control")
00079     self.toolsGPIB_CtrlAction.setToolTip("GPIB Power Supply Control")
00080     self.toolsGPIB_CtrlAction.setAccel(QKeySequence("Ctrl+Shift+G"))
00081     self.toolsTrigger_DisplayAction.setText("Trigger Display")
00082     self.toolsTrigger_DisplayAction.setMenuText("&Trigger Display")
00083     self.toolsTrigger_DisplayAction.setToolTip("Trigger Display")
00084     self.toolsTrigger_DisplayAction.setAccel(QKeySequence("Ctrl+Shift+T"))
00085     self.toolsMessage_LoggerAction.addTo(self.__rc.Tools)
00086     self.toolsEnvironmental_MonitoringAction.addTo(self.__rc.Tools)
00087     self.toolsRegister_BrowserAction.addTo(self.__rc.Tools)
00088     self.toolsBrowse_Exported_FilesAction.addTo(self.__rc.Tools)
00089     self.toolsFabric_PowerAction.addTo(self.__rc.Tools)
00090     self.toolsGPIB_CtrlAction.addTo(self.__rc.Tools)
00091     self.toolsTrigger_DisplayAction.addTo(self.__rc.Tools)
00092 
00093     self.connect(self.toolsMessage_LoggerAction,SIGNAL("activated()"),self.loadMSGLogger)
00094     self.connect(self.toolsEnvironmental_MonitoringAction,SIGNAL("activated()"),self.startEnvMon)
00095     self.connect(self.toolsRegister_BrowserAction,SIGNAL("activated()"),self.startBrowser)
00096     self.connect(self.toolsBrowse_Exported_FilesAction,SIGNAL("activated()"),self.browseExportedFiles)
00097     self.connect(self.toolsFabric_PowerAction,SIGNAL("activated()"),self.fabricPowerControl)
00098     self.connect(self.toolsGPIB_CtrlAction,SIGNAL("activated()"),self.gpibPowerSupplyControl)
00099     self.connect(self.toolsTrigger_DisplayAction,SIGNAL("activated()"),self.startTriggerDisplay)
00100     if self.__common.options().securedir is not None:
00101       if os.path.splitext(os.path.split(sys.executable)[1])[0] == 'pythonw':
00102         self.loadMSGLogger()
00103 
00104     if not self.isrealfile(sys.__stdout__):
00105       sys.stdout = NullStream()
00106 
00107     if not self.isrealfile(sys.__stderr__):
00108       sys.stderr = NullStream()
00109 
00110     if self.__common.options().appdir is not None:
00111       self.userAppAction = QAction(self.__rc, "userAppAction")
00112       self.userAppAction.setText("User Applications Browser")
00113       self.userAppAction.setMenuText("&User Applications Browser")
00114       self.userAppAction.setToolTip("User Applications Browser")
00115       self.userAppAction.setAccel(QKeySequence("Ctrl+Shift+U"))
00116       self.userAppAction.addTo(self.__rc.Tools)
00117       self.connect(self.userAppAction,SIGNAL("activated()"),self.startUserApp)
00118 
00119   def isrealfile(self, file):
00120       """
00121       Test if file is on the os filesystem
00122       """
00123       if not hasattr(file, 'fileno'): return False
00124 
00125       try: tmp = os.dup(file.fileno())
00126       except: return False
00127       else: os.close(tmp); return True
00128 
00129   def checkFabricEnable(self, fabricEnable):
00130     if fabricEnable:
00131       self.toolsFabric_PowerAction.setEnabled(1)
00132       self.cmdFabricPower.setEnabled(1)
00133       if self.__operator is not None:
00134         self.applyPermissions(self.__operator)
00135     else:
00136       self.toolsFabric_PowerAction.setEnabled(0)
00137       self.cmdFabricPower.setEnabled(0)
00138 
00139   def applyPermissions(self, operator):
00140     self.__operator = operator
00141     adminOverride = operator.isAdministrator()
00142     if 'start_message_logger' in operator.getPermissions() or adminOverride:
00143       self.toolsMessage_LoggerAction.setEnabled(1)
00144       self.MSGLoggerButton.setEnabled(1)
00145     else:
00146       self.toolsMessage_LoggerAction.setEnabled(0)
00147       self.MSGLoggerButton.setEnabled(0)
00148 
00149     if 'start_env_monitor' in operator.getPermissions() or adminOverride:
00150       self.toolsEnvironmental_MonitoringAction.setEnabled(1)
00151       self.cmdEnvMon.setEnabled(1)
00152     else:
00153       self.toolsEnvironmental_MonitoringAction.setEnabled(0)
00154       self.cmdEnvMon.setEnabled(0)
00155 
00156     if 'start_reg_browser' in operator.getPermissions() or adminOverride:
00157       self.toolsRegister_BrowserAction.setEnabled(1)
00158       self.cmdBrowser.setEnabled(1)
00159     else:
00160       self.toolsRegister_BrowserAction.setEnabled(0)
00161       self.cmdBrowser.setEnabled(0)
00162 
00163     if 'browse_exported_files' in operator.getPermissions() or adminOverride:
00164       self.toolsBrowse_Exported_FilesAction.setEnabled(1)
00165       self.cmdBrowseExport.setEnabled(1)
00166     else:
00167       self.toolsBrowse_Exported_FilesAction.setEnabled(0)
00168       self.cmdBrowseExport.setEnabled(0)
00169 
00170     if 'fabric_power_control' in operator.getPermissions() or adminOverride:
00171       self.toolsFabric_PowerAction.setEnabled(1)
00172       self.cmdFabricPower.setEnabled(1)
00173     else:
00174       self.toolsFabric_PowerAction.setEnabled(0)
00175       self.cmdFabricPower.setEnabled(0)
00176 
00177     if 'trigger_display' in operator.getPermissions() or adminOverride:
00178       self.toolsTrigger_DisplayAction.setEnabled(1)
00179       self.triggerdisplay.setEnabled(1)
00180     else:
00181       self.toolsTrigger_DisplayAction.setEnabled(0)
00182       self.triggerdisplay.setEnabled(0)
00183 
00184     if 'gpib_control' in operator.getPermissions() or adminOverride:
00185       self.toolsGPIB_CtrlAction.setEnabled(1)
00186       self.cmdGPIBCtrl.setEnabled(1)
00187     else:
00188       self.toolsGPIB_CtrlAction.setEnabled(0)
00189       self.cmdGPIBCtrl.setEnabled(0)
00190 
00191   def loadMSGLogger(self):
00192     if self.__common.getMSGLogger() is not None:
00193       self.__common.getMSGLogger().show()
00194 
00195   def startEnvMon(self):
00196     env = EnvMonImpl(self.__common, None, None)
00197     env.resize(698,438)
00198     env.show()
00199 
00200   def startBrowser(self):
00201     lat = self.__common.getLAT()
00202     xbrd = self.__common.getXBRD()
00203     ocs = self.__common.getOCS()
00204     self.__browser = BrowserImpl(lat, xbrd, ocs, None, None, Qt.WDestructiveClose)
00205     self.__browser.resize(698,438)
00206     self.__browser.show()
00207 
00208   def startTriggerDisplay(self):
00209     lat = self.__common.getLAT()
00210     ocs = self.__common.getOCS()
00211     server = self.__common.prefMan().preferences()["server"].strip()
00212     self.__triggerDisplay=trgDisplayImpl(lat,ocs,server,None,None,None,0,Qt.WDestructiveClose)
00213     self.__triggerDisplay.show()
00214 
00215 
00216   def browseExportedFiles(self):
00217     dbn = self.__common.getDBN()
00218     if '_LastExportPath' in dbn:
00219       import webbrowser
00220       webbrowser.open(url=self.__common.getDBN()['_LastExportPath'], new=1)
00221 
00222   def fabricPowerControl(self):
00223     if self.__power is None:
00224       self.__power=PorcineWindow(self.__common, self.__rc, None, None)
00225       self.__power.setCaption("Fabric/Power Control")
00226     self.__power.show()
00227 
00228   def gpibPowerSupplyControl(self):
00229     import gpibCtrl
00230     if self.__gpib is None:
00231       self.__gpib=GpibPwrCtrlImpl(gpibCtrl, self.__rc)
00232       self.__gpib.setCaption("GPIB Power Supply Control")
00233     self.__gpib.show()
00234 
00235   def startUserApp(self):
00236     if self.__userapp is None:
00237       if self.__common.options().appdir is not None:
00238         appdir = self.__common.options().appdir
00239         self.__userapp = userAppBrowser(self.__rc, appdir)
00240         self.__userapp.updateSchema()
00241         self.__userapp.updateSuites()
00242         self.__userapp.show()
00243     elif self.__userapp.isVisible():
00244       self.__userapp.hide()
00245     else:
00246       self.__userapp.updateSchema()
00247       self.__userapp.show()
00248 
00249   def getUserApp(self, appname=None):
00250     if appname is not None:
00251       return self.__userapp.getGui(appname)
00252     else:
00253       return self.__userapp
00254 
00255   def getUserAppTree(self):
00256     return self.__userapp.getTree()
00257 
00258 class NullStream:
00259     """
00260     A file like class that writes nothing
00261     """
00262     def close(self): pass
00263     def flush(self): pass
00264     def write(self, str): pass
00265     def writelines(self, sequence): pass
00266 
00267 

Generated on Fri Jul 21 13:26:28 2006 for LATTE R04-12-00 by doxygen 1.4.3