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

BrowserImpl.py

00001 #!/usr/local/bin/python
00002 #
00003 #                               Copyright 2003
00004 #                                     by
00005 #                        The Board of Trustees of the
00006 #                     Leland Stanford Junior University.
00007 #                            All rights reserved.
00008 #
00009 
00010 
00011 __facility__ = "Online"
00012 __abstract__ = "GLAST Online Register Browser"
00013 __author__   = "A. Kavelaars <aliciak@SLAC.Stanford.edu> SLAC - GLAST LAT I&T/Online"
00014 __date__     = "5/15/2003"
00015 __version__  = "$Revision: 2.15 $"
00016 __credits__  = "SLAC"
00017 
00018 import LATTE.copyright_SLAC
00019 
00020 import os
00021 import sys
00022 import time
00023 import math
00024 import string
00025 from qt import *
00026 from Browser import Browser
00027 from browserPreferencesImpl import browserPreferencesImpl
00028 from BrowserReadme import BrowserReadme
00029 import threading
00030 
00031 from LATTE.client.gException import LATInterfaceException
00032 
00033 from LATTE.database.gLAT     import GLAT
00034 from LATTE.database.gTEM     import GTEM, GCCC, GCRC, GCFE
00035 from LATTE.database.gTEM     import GTCC, GTRC, GTFE, GTIC
00036 from LATTE.database.gAEM     import GAEM, GAEQ, GARC, GAFE
00037 from LATTE.database.gEBM     import GEBM, GEBMC, GEBMST
00038 from LATTE.database.gGEM     import GGEM, GGEMC, GGEMMG, GGEMST
00039 from LATTE.database.gGEM     import GGEMSC, GGEMVG, GGEMIE, GGEMW
00040 from LATTE.database.gCRU     import GCRU
00041 from LATTE.database.gPDU     import GPDU, GPEQ
00042 from LATTE.database.gGLT     import GGLT
00043 from LATTE.database.gLCB     import GLCB, GLCBSTATS
00044 from LATTE.database.gOCS     import GOCS
00045 
00046 
00047 #from gLAT import *
00048 #from gSchemaConfig import *
00049 
00050 # Pix map of OPEN FOLDER to shown an element of the hierarchy loaded
00051 image0_data = [
00052 "16 13 7 1",
00053 "d c #000000",
00054 "# c #a0a000",
00055 "c c #c0c080",
00056 "e c #e0c080",
00057 "b c #e0e080",
00058 "a c #fffbf0",
00059 ". c #ffffff",
00060 "...#####........",
00061 "..#aaaaa#.......",
00062 ".#abbbbba######.",
00063 ".#abbbbbbbaaaacd",
00064 ".#abbbbbbbbbbbcd",
00065 "############cbcd",
00066 "#abbbbbbebecdccd",
00067 "#abbbbebbebcdccd",
00068 ".#abbbbbebee#d#d",
00069 ".#abbebebeeecd#d",
00070 "..#aebebeeeec#dd",
00071 "..############dd",
00072 "...ddddddddddddd"
00073 ]
00074 
00075 
00076 class BrowserImpl(Browser):
00077   def __init__(self, lat, xbrd, ocs, parent = None, name = None, fl = 0):
00078     Browser.__init__(self,parent,name,fl)
00079 
00080     self.__image0 = QPixmap(image0_data)
00081 
00082     # Initialize file parameters
00083     self.printer    = QPrinter()
00084     self.__filename = QString.null
00085     self.__openFile = 0
00086     self.__lat      = lat
00087     self.__xbrd     = xbrd
00088     self.__ocs      = ocs
00089 
00090     # Initialize Hierarchy Dictionary
00091     self.__treeMap = {}
00092     self.__labelMap = {}
00093 
00094     # Initialize register views' dictionary
00095     self.registerView =  [self.GLAT_Regs,
00096                           self.GLCB_Regs,
00097                           self.GLCBSTATS_Regs,
00098                           self.GOCS_Regs,
00099                           self.GAEM_Regs,
00100                           self.GAEQ_Regs,
00101                           self.GARC_Regs,
00102                           self.GAFE_Regs,
00103                           self.GTEM_Regs,
00104                           self.GTEM_Regs2,
00105                           self.GCCC_Regs,
00106                           self.GCRC_Regs,
00107                           self.GCFE_Regs,
00108                           self.GTCC_Regs,
00109                           self.GTRC_Regs,
00110                           self.GTFE_Regs,
00111                           self.GTIC_Regs,
00112                           self.GEBM_Regs,
00113                           self.GEBMC_Regs,
00114                           self.GEBMST_Regs,
00115                           self.GGEM_Regs,
00116                           self.GGEMC_Regs,
00117                           self.GGEMMG_Regs,
00118                           self.GGEMST_Regs,
00119                           self.GGEMSC_Regs,
00120                           self.GGEMVG_Regs,
00121                           self.GGEMIE_Regs,
00122                           self.GGEMW_Regs,
00123                           self.GCRU_Regs,
00124                           #self.GPDU_Regs,
00125                           #self.GPEQ_Regs,
00126                           self.GGLT_Regs]
00127 
00128     # Initialize Context Menu
00129     self.contextMenu = QPopupMenu( self )
00130     self.contextMenu.insertItem( "Copy &Cell", self.copyToClipboard, Qt.CTRL+Qt.Key_C)
00131     self.contextMenu.insertItem( "Copy &Line", self.copyLineToClipboard, Qt.CTRL+Qt.Key_L)
00132 
00133     # Initialize clip board
00134     self.clip = QApplication.clipboard()
00135 
00136     self.Hierarchy.setSorting(-1)
00137     #~ self.Hierarchy.sort()
00138     self.Hierarchy.setEnabled(1)
00139     self.TEMTab.setEnabled(1)
00140     self.TEMTab.setCurrentPage(1)
00141 
00142     self.Conversion.setText("RAW")
00143     self.__base = 1
00144 
00145     self.browserPreferences = browserPreferencesImpl()
00146     self.browserPreferences.hexButton.setChecked(1)
00147 
00148     self.viewHexadecimal.setOn(1)
00149     self.connect(self.viewDecimal,SIGNAL("toggled(bool)"),self.setViewDecimal)
00150     self.connect(self.viewHexadecimal,SIGNAL("toggled(bool)"),self.setViewHexadecimal)
00151 
00152 
00153     self.browserPreferences.rawButton.setChecked(1)
00154 
00155     #~ self.Browsing.setText("TEM All, GCCC All, GCRC All, GCFE All")
00156 
00157     self.__lock = threading.Lock()
00158 
00159     # Set the Timer
00160     self.__timer = QTimer(self)
00161     QObject.connect(self.__timer, SIGNAL("timeout()"), self.updateView)
00162     self.__step = float(str(self.browserPreferences.timestepValue.text()))
00163     self.__timer.start(self.__step*1000, False)   # seconds in milliseconds
00164 
00165     self.connect(self.UpdateButton, SIGNAL('clicked()'), self.updateView)
00166 
00167     # Set connections
00168     #self.connect(self.Hierarchy, SIGNAL('clicked(QListViewItem*)'), \
00169     #  self.selectItem)
00170     self.connect(self.Hierarchy, SIGNAL('currentChanged(QListViewItem*)'), \
00171       self.selectItem)
00172 
00173     # Load Schema if LAT has been created
00174     self.setupSchema()
00175 
00176     # Cut and Paste capability
00177     for view in self.registerView:
00178       #~ self.__statusPanel = rcStatusPanel(view)
00179       self.connect(view,
00180                    SIGNAL("contextMenuRequested(QListViewItem*,const QPoint&,int)"),
00181                    self.contextMenuShow)
00182 
00183   #~ def rightButtonPressed(self, item, point, column):
00184     #~ print item, point, column
00185 
00186   def setViewDecimal(self, on):
00187     if on:
00188       self.__base = 0
00189       self.browserPreferences.decButton.setChecked(1)
00190 
00191   def setViewHexadecimal(self, on):
00192     if on:
00193       self.__base = 1
00194       self.browserPreferences.hexButton.setChecked(1)
00195 
00196   def contextMenuShow(self, item, point, column):
00197     self.selectedItem = item
00198     self.__column = column
00199     self.contextMenu.exec_loop(point)
00200 
00201   def copyToClipboard(self):
00202     self.clip.setText(self.selectedItem.text(self.__column))
00203 
00204   def copyLineToClipboard(self):
00205     text = ""
00206     for col in range(0,4):
00207       text += str(self.selectedItem.text(col)) + "  "
00208     self.clip.setText(text)
00209 
00210   def updateView(self):
00211     if self.__lat is None:
00212       return
00213     #~ if str(self.getCurrentItem().text(0)) == "GLAT":
00214       #~ return
00215     self.fillViews()
00216 
00217   def loadSchema(self, filename):
00218     self.__lat.readSchema(filename)
00219     self.__xbrd.readSchema(filename)
00220     plumber = Plumber(self.__lat, self.__xbrd)
00221     plumber.initialize(fswmsglevel=3, ocsverbose=False, force=False, commander=True)
00222     self.setupSchema()
00223 
00224 ##   def loadSchema(self, filename):
00225 ##     """ This function reads the xml file and creates the hierarchy tree in
00226 ##         the Hierarchy window. To do so It calls the loadHierarchy function"""
00227 
00228 
00229 ##     lat = readSchema(filename)
00230 ##     # Load Schema if LAT has been created
00231 ##     self.setupSchema(lat)
00232 
00233 ##     self.TEMTab.setEnabled(1)
00234 ##     self.Hierarchy.setEnabled(1)
00235 
00236 ##     self.__step = float(str(self.browserPreferences.timestepValue.text()))
00237 ##     self.__timer.start(self.__step*1000, False)   # seconds in milliseconds
00238 
00239 
00240   def setupSchema(self):
00241     """ This function creates the Hierarchy tree and treeMap from the selected
00242         Schema.xml file
00243     """
00244 
00245     # Load Schema if LAT has been created
00246     self.Hierarchy.clear()
00247     self.loadHierarchy(self.__lat, self.__xbrd)
00248     self.populateRegs(self.__lat)
00249     self.__ApplyChanges = 0
00250 
00251   def loadHierarchy(self, lat, xbrd):
00252 
00253     latItem = QListViewItem(self.Hierarchy)
00254     latItem.setPixmap(0, self.__image0)
00255     latItem.setText(0,self.trUtf8("GLAT"))
00256     latItem.setExpandable(1)
00257     latItem.setOpen(1)
00258 
00259     self.Hierarchy.setCurrentItem(latItem)
00260 
00261     self.__treeMap[latItem] = lat
00262     self.__labelMap[latItem] = None
00263 
00264     #~ AEM Leg
00265     aem = lat.downAEM()
00266     if aem is not None:
00267       aemItem = QListViewItem(latItem)
00268       aemItem.setText(0,"GAEM")
00269       aemItem.setPixmap(0, self.__image0)
00270       aemItem.setOpen(1)
00271 
00272       self.__treeMap[aemItem] = aem
00273       self.__labelMap[aemItem] = self.GAEMLabel
00274 
00275       arcItem = None
00276       afeItem = None
00277 
00278       for (arcId, arc) in aem.ARC.items():
00279         arcNewItem = QListViewItem(aemItem, arcItem)
00280         arcNewItem.setPixmap(0, self.__image0)
00281         arcNewItem.setText(0, "GARC " + str(arcId))
00282 
00283         self.__treeMap[arcNewItem] = arc
00284         self.__labelMap[arcNewItem] = self.GARCLabel
00285 
00286         for (afeId, afe) in arc.AFE.items():
00287           afeNewItem = QListViewItem(arcNewItem, afeItem)
00288           afeNewItem.setPixmap(0, self.__image0)
00289           afeNewItem.setText(0,"GAFE " + str(afeId))
00290 
00291           self.__treeMap[afeNewItem] = afe
00292           self.__labelMap[afeNewItem] = self.GAFELabel
00293           afeItem = afeNewItem
00294         arcItem = arcNewItem
00295 
00296       if aem.existsAEQ():
00297         aeq = aem.downAEQ()
00298         aeqItem = QListViewItem(aemItem)
00299         aeqItem.setText(0,"GAEQ")
00300         aeqItem.setPixmap(0, self.__image0)
00301 
00302         self.__treeMap[aeqItem] = aeq
00303         self.__labelMap[aeqItem] = self.GAEQLabel
00304 
00305     #~ TEM Leg
00306 
00307     # Initialize this parameters to store the list view items in the right order:
00308     # after the previous item. For example tccNewItem = QListViewItem(temNewItem, tccItem)
00309     temItem = None
00310     cccItem = None
00311     crcItem = None
00312     cfeItem = None
00313     tccItem = None
00314     trcItem = None
00315     tfeItem = None
00316 
00317     for (temId, tem) in lat.TEM.items():
00318       #~ print "TEM ID: ", temId
00319       self.TEMTab.setCurrentPage(2)
00320 
00321       temNewItem = QListViewItem(latItem, temItem)
00322       temNewItem.setText(0,"GTEM " + str(temId))
00323       temNewItem.setPixmap(0, self.__image0)
00324 
00325       self.__treeMap[temNewItem] = tem
00326       self.__labelMap[temNewItem] = self.GTEMLabel
00327 
00328 
00329 
00330       for (tccId, tcc) in tem.TCC.items():
00331         if tccId != 255:
00332           tccNewItem = QListViewItem(temNewItem, tccItem)
00333           tccNewItem.setPixmap(0, self.__image0)
00334           tccNewItem.setText(0,"GTCC " + str(tccId))
00335 
00336           self.__treeMap[tccNewItem] = tcc
00337           self.__labelMap[tccNewItem] = self.GTCCLabel
00338 
00339           for (trcId, trc) in tcc.TRC.items():
00340             if trcId != 255:
00341               trcNewItem = QListViewItem(tccNewItem, trcItem)
00342               trcNewItem.setPixmap(0, self.__image0)
00343               trcNewItem.setText(0,"GTRC " + str(trcId))
00344 
00345               self.__treeMap[trcNewItem] = trc
00346               self.__labelMap[trcNewItem] = self.GTRCLabel
00347 
00348               for (tfeId, tfe) in trc.TFE.items():
00349                 if tfeId != 255:
00350                   tfeNewItem = QListViewItem(trcNewItem, tfeItem)
00351                   tfeNewItem.setPixmap(0, self.__image0)
00352                   tfeNewItem.setText(0,"GTFE " + str(tfeId))
00353 
00354                   self.__treeMap[tfeNewItem] = tfe
00355                   self.__labelMap[tfeNewItem] = self.GTFELabel
00356 
00357                   tfeItem = tfeNewItem
00358               trcItem = trcNewItem
00359           tccItem = tccNewItem
00360       temItem = temNewItem
00361 
00362       for (cccId, ccc) in tem.CCC.items():
00363         if cccId != 255:
00364           cccNewItem = QListViewItem(temNewItem, cccItem)
00365           cccNewItem.setPixmap(0, self.__image0)
00366           cccNewItem.setText(0,"GCCC " + str(cccId))
00367 
00368           self.__treeMap[cccNewItem] = ccc
00369           self.__labelMap[cccNewItem] = self.GCCCLabel
00370 
00371           for (crcId, crc) in ccc.CRC.items():
00372             if crcId != 255:
00373               crcNewItem = QListViewItem(cccNewItem, crcItem)
00374               crcNewItem.setPixmap(0, self.__image0)
00375               crcNewItem.setText(0,"GCRC " + str(crcId))
00376 
00377               self.__treeMap[crcNewItem] = crc
00378               self.__labelMap[crcNewItem] = self.GCRCLabel
00379 
00380               for (cfeId, cfe) in crc.CFE.items():
00381                 if cfeId != 255:
00382                   cfeNewItem = QListViewItem(crcNewItem, cfeItem)
00383                   cfeNewItem.setPixmap(0, self.__image0)
00384                   cfeNewItem.setText(0,"GCFE " + str(cfeId))
00385 
00386                   self.__treeMap[cfeNewItem] = cfe
00387                   self.__labelMap[cfeNewItem] = self.GCFELabel
00388 
00389                   cfeItem = cfeNewItem
00390               crcItem = crcNewItem
00391           cccItem = cccNewItem
00392       temItem = temNewItem
00393 
00394       if tem.existsTIC():
00395         tic = tem.downTIC()
00396         ticItem = QListViewItem(temItem)
00397         ticItem.setText(0,"GTIC")
00398         ticItem.setPixmap(0, self.__image0)
00399 
00400         self.__treeMap[ticItem] = tic
00401         self.__labelMap[ticItem] = self.GTICLabel
00402 
00403     #~ EBM Leg
00404     ebm = lat.downEBM()
00405     if ebm is not None:
00406       ebmItem = QListViewItem(latItem)
00407       ebmItem.setText(0,self.trUtf8("GEBM"))
00408       ebmItem.setPixmap(0, self.__image0)
00409       ebmItem.setOpen(1)
00410 
00411       self.__treeMap[ebmItem] = ebm
00412       self.__labelMap[ebmItem] = self.GEBMLabel
00413 
00414       if ebm.existsEBMST():
00415         ebmst = ebm.downEBMST()
00416         ebmstItem = QListViewItem(ebmItem)
00417         ebmstItem.setText(0,"GEBMST")
00418         ebmstItem.setPixmap(0, self.__image0)
00419 
00420         self.__treeMap[ebmstItem] = ebmst
00421         self.__labelMap[ebmstItem] = self.GEBMSTLabel
00422 
00423       if ebm.existsEBMC():
00424         ebmc = ebm.downEBMC()
00425         ebmcItem = QListViewItem(ebmItem)
00426         ebmcItem.setText(0,"GEBMC")
00427         ebmcItem.setPixmap(0, self.__image0)
00428 
00429         self.__treeMap[ebmcItem] = ebmc
00430         self.__labelMap[ebmcItem] = self.GEBMCLabel
00431 
00432     #~ GEM Leg
00433     gem = lat.downGEM()
00434     if gem is not None:
00435       gemItem = QListViewItem(latItem)
00436       gemItem.setText(0,self.trUtf8("GGEM"))
00437       gemItem.setPixmap(0, self.__image0)
00438       gemItem.setOpen(1)
00439 
00440       self.__treeMap[gemItem] = gem
00441       self.__labelMap[gemItem] = self.GGEMLabel
00442 
00443 
00444       if gem.existsGEMW():
00445         gemw = gem.downGEMW()
00446         gemwItem = QListViewItem(gemItem)
00447         gemwItem.setText(0,"GGEMW")
00448         gemwItem.setPixmap(0, self.__image0)
00449 
00450         self.__treeMap[gemwItem] = gemw
00451         self.__labelMap[gemwItem] = self.GGEMWLabel
00452 
00453       if gem.existsGEMIE():
00454         gemie = gem.downGEMIE()
00455         gemieItem = QListViewItem(gemItem)
00456         gemieItem.setText(0,"GGEMIE")
00457         gemieItem.setPixmap(0, self.__image0)
00458 
00459         self.__treeMap[gemieItem] = gemie
00460         self.__labelMap[gemieItem] = self.GGEMIELabel
00461 
00462       if gem.existsGEMVG():
00463         gemvg = gem.downGEMVG()
00464         gemvgItem = QListViewItem(gemItem)
00465         gemvgItem.setText(0,"GGEMVG")
00466         gemvgItem.setPixmap(0, self.__image0)
00467 
00468         self.__treeMap[gemvgItem] = gemvg
00469         self.__labelMap[gemvgItem] = self.GGEMVGLabel
00470 
00471       if gem.existsGEMSC():
00472         gemsc = gem.downGEMSC()
00473         gemscItem = QListViewItem(gemItem)
00474         gemscItem.setText(0,"GGEMSC")
00475         gemscItem.setPixmap(0, self.__image0)
00476 
00477         self.__treeMap[gemscItem] = gemsc
00478         self.__labelMap[gemscItem] = self.GGEMSCLabel
00479 
00480       if gem.existsGEMST():
00481         gemst = gem.downGEMST()
00482         gemstItem = QListViewItem(gemItem)
00483         gemstItem.setText(0,"GGEMST")
00484         gemstItem.setPixmap(0, self.__image0)
00485 
00486         self.__treeMap[gemstItem] = gemst
00487         self.__labelMap[gemstItem] = self.GGEMSTLabel
00488 
00489       if gem.existsGEMMG():
00490         gemmg = gem.downGEMMG()
00491         gemmgItem = QListViewItem(gemItem)
00492         gemmgItem.setText(0,"GGEMMG")
00493         gemmgItem.setPixmap(0, self.__image0)
00494 
00495         self.__treeMap[gemmgItem] = gemmg
00496         self.__labelMap[gemmgItem] = self.GGEMMGLabel
00497 
00498       if gem.existsGEMC():
00499         gemc = gem.downGEMC()
00500         gemcItem = QListViewItem(gemItem)
00501         gemcItem.setText(0,"GGEMC")
00502         gemcItem.setPixmap(0, self.__image0)
00503 
00504         self.__treeMap[gemcItem] = gemc
00505         self.__labelMap[gemcItem] = self.GGEMCLabel
00506 
00507     #~ CRU Leg
00508     cru = lat.downCRU()
00509     if cru is not None:
00510       cruItem = QListViewItem(latItem)
00511       cruItem.setText(0,self.trUtf8("GCRU"))
00512       cruItem.setPixmap(0, self.__image0)
00513       cruItem.setOpen(1)
00514 
00515       self.__treeMap[cruItem] = cru
00516       self.__labelMap[cruItem] = self.GCRULabel
00517 
00518     #~ PDU Leg
00519     pduItem = None
00520     for (pduId, pdu) in lat.PDU.items():
00521       pduItem = QListViewItem(latItem, pduItem)
00522       pduItem.setText(0,"GPDU " + str(pduId))
00523       pduItem.setPixmap(0, self.__image0)
00524       pduItem.setOpen(0)
00525 
00526       self.__treeMap[pduItem] = pdu
00527       self.__labelMap[pduItem] = self.GPDULabel
00528       if pdu.existsPEQ():
00529         peq = pdu.downPEQ()
00530         peqItem = QListViewItem(pduItem)
00531         peqItem.setText(0,"GPEQ")
00532         peqItem.setPixmap(0, self.__image0)
00533 
00534         self.__treeMap[peqItem] = peq
00535         self.__labelMap[peqItem] = self.GPEQLabel
00536 
00537 
00538     #~ GLT Leg
00539     if xbrd is not None:
00540       glt = xbrd.downGLT()
00541       if glt is not None:
00542         gltItem = QListViewItem(latItem)
00543         gltItem.setText(0,self.trUtf8("GGLT"))
00544         gltItem.setPixmap(0, self.__image0)
00545         gltItem.setOpen(1)
00546 
00547         self.__treeMap[gltItem] = glt
00548         self.__labelMap[gltItem] = self.GGLTLabel
00549 
00550     lcbItem = QListViewItem(latItem)
00551     lcbItem.setText(0,"GLCB")
00552     lcbItem.setPixmap(0, self.__image0)
00553 
00554     self.__treeMap[lcbItem] = lat.LCB
00555     self.__labelMap[lcbItem] = self.GLCBLabel
00556 
00557     lcbstatsItem = QListViewItem(lcbItem)
00558     lcbstatsItem.setText(0,"GLCBSTATS")
00559     lcbstatsItem.setPixmap(0, self.__image0)
00560 
00561     self.__treeMap[lcbstatsItem] = lat.LCB.stats
00562     self.__labelMap[lcbstatsItem] = self.GLCBSTATSLabel
00563 
00564     lcbItem = QListViewItem(latItem)
00565     lcbItem.setText(0,"GOCS")
00566     lcbItem.setPixmap(0, self.__image0)
00567 
00568     self.__treeMap[lcbItem] = self.__ocs
00569     self.__labelMap[lcbItem] = self.GOCSLabel
00570 
00571   def populateRegs(self, lat):
00572     #~ lat = self.__lat
00573     self.TEMTab.setCurrentPage(0)
00574     self.updateList(GLAT._GLAT__attrs, self.GLAT_Regs)
00575     self.updateList(GLCB._GLCB__attrs, self.GLCB_Regs)
00576     self.updateList(GLCBSTATS._GLCBSTATS__attrs, self.GLCBSTATS_Regs)
00577     self.updateList(GOCS._GOCS__attrs, self.GOCS_Regs)
00578 
00579     #~ AEM LEg
00580     self.updateList(GAEM._GAEM__attrs, self.GAEM_Regs)
00581 
00582     self.updateList(GAEQ._GAEQ__attrs, self.GAEQ_Regs)
00583 
00584     self.updateList(GARC._GARC__attrs, self.GARC_Regs)
00585 
00586     self.updateList(GAFE._GAFE__attrs, self.GAFE_Regs)
00587 
00588     #~ TEM LEg
00589     tem = None
00590     #if lat._GLAT__childrenTEM.keys() is not None:
00591     self.updateList(GTEM._GTEM__attrs, self.GTEM_Regs)
00592     self.updateList(GTEM._GTEM__attrs, self.GTEM_Regs2)
00593 
00594     #~ tem = lat.downTEM(temId)
00595     self.updateList(GCCC._GCCC__attrs, self.GCCC_Regs)
00596     self.updateList(GCRC._GCRC__attrs, self.GCRC_Regs)
00597     self.updateList(GCFE._GCFE__attrs, self.GCFE_Regs)
00598     self.updateList(GTCC._GTCC__attrs, self.GTCC_Regs)
00599     self.updateList(GTRC._GTRC__attrs, self.GTRC_Regs)
00600     self.updateList(GTFE._GTFE__attrs, self.GTFE_Regs)
00601     self.updateList(GTIC._GTIC__attrs, self.GTIC_Regs)
00602 
00603     #~ EBM Leg
00604     self.updateList(GEBM._GEBM__attrs, self.GEBM_Regs)
00605     self.updateList(GEBMC._GEBMC__attrs, self.GEBMC_Regs)
00606     self.updateList(GEBMST._GEBMST__attrs, self.GEBMST_Regs)
00607 
00608     #~ GEM Leg
00609     self.updateList(GGEM._GGEM__attrs, self.GGEM_Regs)
00610     self.updateList(GGEMC._GGEMC__attrs, self.GGEMC_Regs)
00611     self.updateList(GGEMMG._GGEMMG__attrs, self.GGEMMG_Regs)
00612     self.updateList(GGEMST._GGEMST__attrs, self.GGEMST_Regs)
00613     self.updateList(GGEMSC._GGEMSC__attrs, self.GGEMSC_Regs)
00614     self.updateList(GGEMVG._GGEMVG__attrs, self.GGEMVG_Regs)
00615     self.updateList(GGEMIE._GGEMIE__attrs, self.GGEMIE_Regs)
00616     self.updateList(GGEMW._GGEMW__attrs, self.GGEMW_Regs)
00617 
00618     #~ CRU Leg
00619     self.updateList(GCRU._GCRU__attrs, self.GCRU_Regs)
00620 
00621     #~ GLT Leg
00622     self.updateList(GGLT._GGLT__attrs, self.GGLT_Regs)
00623 
00624     #~ PDU Leg
00625     self.updateList(GPDU._GPDU__attrs, self.GPDU_Regs)
00626     self.updateList(GPEQ._GPEQ__attrs, self.GPEQ_Regs)
00627 
00628 
00629 #  def updateList(self, parent, regList, listView):
00630 #    listView.clear()
00631 #    #listView.setFont(QFont("Tahoma"))
00632 #    listView.header().setMovingEnabled(0)
00633 #    listView.setColumnWidth(0,160)
00634 #    listView.setColumnWidth(1,20)
00635 #    listView.setColumnAlignment(1,self.AlignRight)
00636 #    listView.setColumnAlignment(2,self.AlignRight)
00637 #    listView.setColumnAlignment(3,self.AlignRight)
00638 #    listView.setColumnWidth(2,80)
00639 
00640 #    regList.sort()
00641 
00642 #    for reg in regList:
00643 #      if parent.regs[str(reg)].size() != 0 and not \
00644 #         ( parent.regs[str(reg)].isWriteOnly()  or \
00645 #           parent.regs[str(reg)].isNoDirectAccess() ):
00646 #        item = RegViewItem(listView)
00647 #        item.setText(0, str(reg))
00648 
00649   def updateList(self, regList, listView):
00650     def cmpByName(r1, r2):
00651       return cmp(r1.getName(), r2.getName())
00652 
00653     listView.clear()
00654     #listView.setFont(QFont("Tahoma"))
00655     listView.header().setMovingEnabled(0)
00656     listView.setColumnWidth(0,160)
00657     listView.setColumnWidth(1,20)
00658     listView.setColumnAlignment(1,self.AlignRight)
00659     listView.setColumnAlignment(2,self.AlignRight)
00660     listView.setColumnAlignment(3,self.AlignRight)
00661     listView.setColumnWidth(2,80)
00662 
00663     regList.sort(cmpByName)
00664 
00665     for reg in regList:
00666       if reg.size() != 0 and \
00667          not reg.isDeprecated() and \
00668          not ( reg.isWriteOnly()  or \
00669                reg.isNoDirectAccess() ):
00670         item = RegViewItem(listView)
00671         item.setText(0, reg.getName())
00672 
00673   def selectItem(self, item):
00674     """ This function calls the clearViews function to clear all the register lists
00675         from the Tab window and then shows the registers of the selected Hierarchy
00676         node as well as upper level nodes """
00677 
00678     #~ if str(self.__filename) == "":
00679       #~ print "No Schema loaded"
00680       #~ self.statusBar().message('No Schema loaded', 2000)
00681       #~ return
00682 
00683     # Setup Defaults
00684     self.setDefaults()
00685 
00686     # Update selected Item
00687     #self.updateSelection()
00688 
00689     self.__lock.acquire()
00690     label = self.__labelMap[self.getCurrentItem()]
00691     parentLabel = self.__labelMap[self.getCurrentParent()]
00692     grandParentLabel = self.__labelMap[self.getCurrentGrandParent()]
00693     greatGrandParentLabel = self.__labelMap[self.getCurrentGreatGrandParent()]
00694     self.__lock.release()
00695 
00696     text = "GLAT"
00697     if label is not None:
00698       label.setText(self.getCurrentItem().text(0))
00699       text = str(label.text())
00700 
00701     if parentLabel is not None:
00702       parentLabel.setText(self.getCurrentParent().text(0))
00703       text = str(parentLabel.text()) + ", " + text
00704       #~ browseLabel = str(self.getCurrentGreatGrandParent().text(0))
00705 
00706     if grandParentLabel is not None:
00707       grandParentLabel.setText(self.getCurrentGrandParent().text(0))
00708       text = str(grandParentLabel.text()) + ", " + text
00709 
00710     if greatGrandParentLabel is not None:
00711       greatGrandParentLabel.setText(self.getCurrentGreatGrandParent().text(0))
00712       text = str(greatGrandParentLabel.text()) + ", " + text
00713 
00714     self.Browsing.setText(text)
00715 
00716     if str(self.Browsing.text()) == "GLAT":
00717       self.TEMTab.setCurrentPage(0)
00718 
00719     if str(self.Browsing.text()) == "GLCB":
00720       self.TEMTab.setCurrentPage(0)
00721 
00722     if self.Browsing.text().contains("GLCBSTATS"):
00723       self.TEMTab.setCurrentPage(0)
00724 
00725     if str(self.Browsing.text()) == "GOCS":
00726       self.TEMTab.setCurrentPage(0)
00727 
00728     if self.Browsing.text().contains("GAEM"):
00729       self.TEMTab.setCurrentPage(1)
00730 
00731     if self.Browsing.text().contains("GTEM"):
00732       self.TEMTab.setCurrentPage(2)
00733 
00734     if self.Browsing.text().contains("GCCC"):
00735       self.TEMTab.setCurrentPage(2)
00736 
00737     if self.Browsing.text().contains("GTCC"):
00738       self.TEMTab.setCurrentPage(3)
00739 
00740     if self.Browsing.text().contains("GTIC"):
00741       self.TEMTab.setCurrentPage(4)
00742 
00743     if self.Browsing.text().contains("GEBM"):
00744       self.TEMTab.setCurrentPage(5)
00745 
00746     if self.Browsing.text().contains("GGEM"):
00747       self.TEMTab.setCurrentPage(6)
00748 
00749     if self.Browsing.text().contains("GGEMC"):
00750       self.TEMTab.setCurrentPage(6)
00751 
00752     if self.Browsing.text().contains("GGEMMG"):
00753       self.TEMTab.setCurrentPage(6)
00754 
00755     if self.Browsing.text().contains("GGEMST"):
00756       self.TEMTab.setCurrentPage(6)
00757 
00758     if self.Browsing.text().contains("GGEMSC"):
00759       self.TEMTab.setCurrentPage(7)
00760 
00761     if self.Browsing.text().contains("GGEMVG"):
00762       self.TEMTab.setCurrentPage(7)
00763 
00764     if self.Browsing.text().contains("GGEMIE"):
00765       self.TEMTab.setCurrentPage(7)
00766 
00767     if self.Browsing.text().contains("GGEMW"):
00768       self.TEMTab.setCurrentPage(7)
00769 
00770     if self.Browsing.text().contains("GCRU"):
00771       self.TEMTab.setCurrentPage(8)
00772 
00773     if self.Browsing.text().contains("GPDU"):
00774       self.TEMTab.setCurrentPage(9)
00775 
00776     if self.Browsing.text().contains("GPEQ"):
00777       self.TEMTab.setCurrentPage(9)
00778 
00779     if self.Browsing.text().contains("GGLT"):
00780       self.TEMTab.setCurrentPage(10)
00781 
00782     #self.__lock.acquire()
00783     self.fillViews()
00784     #self.__lock.release()
00785 
00786 
00787   def fillViews(self):
00788     node = self.__treeMap[self.getCurrentItem()]
00789 
00790     #~ parentNode = self.__treeMap[self.getCurrentParent()]
00791     #~ grandParentNode = self.__treeMap[self.getCurrentGrandParent()]
00792     #~ greatGrandParentNode = self.__treeMap[self.getCurrentGreatGrandParent()]
00793 
00794     #~ self.TEMTab.setCurrentPage(0)
00795 
00796     if self.getCurrentItem().text(0).startsWith("GLAT"):
00797       self.fillRegsView(node, self.GLAT_Regs)
00798       return
00799 
00800     if str(self.getCurrentItem().text(0)) == "GLCB":
00801       parentNode = self.__treeMap[self.getCurrentParent()]
00802       self.fillRegsView(node, self.GLCB_Regs)
00803       self.fillRegsView(parentNode, self.GLAT_Regs)
00804       return
00805 
00806     if str(self.getCurrentItem().text(0)) == "GLCBSTATS":
00807       parentNode = self.__treeMap[self.getCurrentParent()]
00808       grandParentNode = self.__treeMap[self.getCurrentGrandParent()]
00809       self.fillRegsView(node, self.GLCBSTATS_Regs)
00810       self.fillRegsView(parentNode, self.GLCB_Regs)
00811       self.fillRegsView(grandParentNode, self.GLAT_Regs)
00812       return
00813 
00814     if str(self.getCurrentItem().text(0)) == "GOCS":
00815       parentNode = self.__treeMap[self.getCurrentParent()]
00816       self.fillRegsView(node, self.GOCS_Regs)
00817       self.fillRegsView(parentNode, self.GLAT_Regs)
00818       return
00819 
00820     #~ AEM Leg
00821     if self.getCurrentItem().text(0).startsWith("GAEM"):
00822       #~ self.TEMTab.setCurrentPage(0)
00823       self.fillRegsView(node, self.GAEM_Regs)
00824       return
00825 
00826     elif self.getCurrentItem().text(0).startsWith("GAEQ"):
00827       #~ self.TEMTab.setCurrentPage(0)
00828       parentNode = self.__treeMap[self.getCurrentParent()]
00829       self.fillRegsView(node, self.GAEQ_Regs)
00830       self.fillRegsView(parentNode, self.GAEM_Regs)
00831       return
00832 
00833     elif self.getCurrentItem().text(0).startsWith("GARC"):
00834       #~ self.TEMTab.setCurrentPage(0)
00835       parentNode = self.__treeMap[self.getCurrentParent()]
00836       self.fillRegsView(node, self.GARC_Regs)
00837       self.fillRegsView(parentNode, self.GAEM_Regs)
00838       return
00839 
00840     elif self.getCurrentItem().text(0).startsWith("GAFE"):
00841       #~ self.TEMTab.setCurrentPage(0)
00842       parentNode = self.__treeMap[self.getCurrentParent()]
00843       grandParentNode = self.__treeMap[self.getCurrentGrandParent()]
00844       self.fillRegsView(node, self.GAFE_Regs)
00845       self.fillRegsView(parentNode, self.GARC_Regs)
00846       self.fillRegsView(grandParentNode, self.GAEM_Regs)
00847       return
00848 
00849     #~ TEM Leg
00850     #~ self.TEMTab.setCurrentPage(2)
00851 
00852     if self.getCurrentItem().text(0).startsWith("GTEM"):
00853       #~ self.TEMTab.setCurrentPage(2)
00854       self.GTEMLabel2.setText(self.getCurrentItem().text(0))
00855       self.fillRegsView(node, self.GTEM_Regs)
00856       self.fillRegsView(node, self.GTEM_Regs2)
00857       return
00858 
00859     elif self.getCurrentItem().text(0).startsWith("GTCC"):
00860       #~ self.TEMTab.setCurrentPage(2)
00861       self.GTEMLabel2.setText(self.getCurrentParent().text(0))
00862       parentNode = self.__treeMap[self.getCurrentParent()]
00863       self.fillRegsView(node, self.GTCC_Regs)
00864       self.fillRegsView(parentNode, self.GTEM_Regs)
00865       self.fillRegsView(parentNode, self.GTEM_Regs2)
00866       return
00867 
00868     elif self.getCurrentItem().text(0).startsWith("GTRC"):
00869       #~ self.TEMTab.setCurrentPage(2)
00870       self.GTEMLabel2.setText(self.getCurrentGrandParent().text(0))
00871       parentNode = self.__treeMap[self.getCurrentParent()]
00872       grandParentNode = self.__treeMap[self.getCurrentGrandParent()]
00873       self.fillRegsView(node, self.GTRC_Regs)
00874       self.fillRegsView(parentNode, self.GTCC_Regs)
00875       self.fillRegsView(grandParentNode, self.GTEM_Regs)
00876       self.fillRegsView(grandParentNode, self.GTEM_Regs2)
00877       return
00878 
00879     elif self.getCurrentItem().text(0).startsWith("GTFE"):
00880       #~ self.TEMTab.setCurrentPage(2)
00881       self.GTEMLabel2.setText(self.getCurrentGreatGrandParent().text(0))
00882       parentNode = self.__treeMap[self.getCurrentParent()]
00883       grandParentNode = self.__treeMap[self.getCurrentGrandParent()]
00884       greatGrandParentNode = self.__treeMap[self.getCurrentGreatGrandParent()]
00885       self.fillRegsView(node, self.GTFE_Regs)
00886       self.fillRegsView(parentNode, self.GTRC_Regs)
00887       self.fillRegsView(grandParentNode, self.GTCC_Regs)
00888       self.fillRegsView(greatGrandParentNode, self.GTEM_Regs)
00889       self.fillRegsView(greatGrandParentNode, self.GTEM_Regs2)
00890       return
00891 
00892     #~ self.TEMTab.setCurrentPage(1)
00893 
00894     if self.getCurrentItem().text(0).startsWith("GCCC"):
00895       #~ self.TEMTab.setCurrentPage(1)
00896       parentNode = self.__treeMap[self.getCurrentParent()]
00897       self.fillRegsView(node, self.GCCC_Regs)
00898       self.fillRegsView(parentNode, self.GTEM_Regs)
00899       self.fillRegsView(parentNode, self.GTEM_Regs2)
00900       return
00901 
00902     elif self.getCurrentItem().text(0).startsWith("GCRC"):
00903       #~ self.TEMTab.setCurrentPage(1)
00904       parentNode = self.__treeMap[self.getCurrentParent()]
00905       grandParentNode = self.__treeMap[self.getCurrentGrandParent()]
00906       self.fillRegsView(node, self.GCRC_Regs)
00907       self.fillRegsView(parentNode, self.GCCC_Regs)
00908       self.fillRegsView(grandParentNode, self.GTEM_Regs)
00909       self.fillRegsView(grandParentNode, self.GTEM_Regs2)
00910       return
00911 
00912     elif self.getCurrentItem().text(0).startsWith("GCFE"):
00913       #~ self.TEMTab.setCurrentPage(1)
00914       parentNode = self.__treeMap[self.getCurrentParent()]
00915       grandParentNode = self.__treeMap[self.getCurrentGrandParent()]
00916       greatGrandParentNode = self.__treeMap[self.getCurrentGreatGrandParent()]
00917       self.fillRegsView(node, self.GCFE_Regs)
00918       self.fillRegsView(parentNode, self.GCRC_Regs)
00919       self.fillRegsView(grandParentNode, self.GCCC_Regs)
00920       self.fillRegsView(greatGrandParentNode, self.GTEM_Regs)
00921       self.fillRegsView(greatGrandParentNode, self.GTEM_Regs2)
00922       return
00923 
00924     if self.getCurrentItem().text(0).startsWith("GTIC"):
00925       self.fillRegsView(node, self.GTIC_Regs)
00926       return
00927 
00928     #~ EBM Leg
00929     if self.getCurrentItem().text(0).endsWith("GEBM"):
00930       #~ self.TEMTab.setCurrentPage(5)
00931       self.fillRegsView(node, self.GEBM_Regs)
00932       return
00933 
00934     if self.getCurrentItem().text(0).endsWith("GEBMC"):
00935       #~ self.TEMTab.setCurrentPage(0)
00936       parentNode = self.__treeMap[self.getCurrentParent()]
00937       self.fillRegsView(node, self.GEBMC_Regs)
00938       self.fillRegsView(parentNode, self.GEBM_Regs)
00939       return
00940 
00941     elif self.getCurrentItem().text(0).endsWith("GEBMST"):
00942       #~ self.TEMTab.setCurrentPage(0)
00943       parentNode = self.__treeMap[self.getCurrentParent()]
00944       self.fillRegsView(node, self.GEBMST_Regs)
00945       self.fillRegsView(parentNode, self.GEBM_Regs)
00946       return
00947 
00948     #~ GEM Leg
00949     if self.getCurrentItem().text(0).endsWith("GGEM"):
00950       #~ self.TEMTab.setCurrentPage(5)
00951       self.fillRegsView(node, self.GGEM_Regs)
00952       return
00953 
00954     elif self.getCurrentItem().text(0).endsWith("GGEMC"):
00955       #~ self.TEMTab.setCurrentPage(6)
00956       parentNode = self.__treeMap[self.getCurrentParent()]
00957       self.fillRegsView(node, self.GGEMC_Regs)
00958       self.fillRegsView(parentNode, self.GGEM_Regs)
00959       return
00960 
00961     elif self.getCurrentItem().text(0).endsWith("GGEMMG"):
00962       #~ self.TEMTab.setCurrentPage(6)
00963       parentNode = self.__treeMap[self.getCurrentParent()]
00964       self.fillRegsView(node, self.GGEMMG_Regs)
00965       self.fillRegsView(parentNode, self.GGEM_Regs)
00966       return
00967 
00968     elif self.getCurrentItem().text(0).endsWith("GGEMST"):
00969       #~ self.TEMTab.setCurrentPage(6)
00970       parentNode = self.__treeMap[self.getCurrentParent()]
00971       self.fillRegsView(node, self.GGEMST_Regs)
00972       self.fillRegsView(parentNode, self.GGEM_Regs)
00973       return
00974 
00975     elif self.getCurrentItem().text(0).endsWith("GGEMSC"):
00976       #~ self.TEMTab.setCurrentPage(7)
00977       parentNode = self.__treeMap[self.getCurrentParent()]
00978       self.fillRegsView(node, self.GGEMSC_Regs)
00979       self.fillRegsView(parentNode, self.GGEM_Regs)
00980       return
00981 
00982     elif self.getCurrentItem().text(0).endsWith("GGEMVG"):
00983       #~ self.TEMTab.setCurrentPage(7)
00984       parentNode = self.__treeMap[self.getCurrentParent()]
00985       self.fillRegsView(node, self.GGEMVG_Regs)
00986       self.fillRegsView(parentNode, self.GGEM_Regs)
00987       return
00988 
00989     elif self.getCurrentItem().text(0).endsWith("GGEMIE"):
00990       #~ self.TEMTab.setCurrentPage(7)
00991       parentNode = self.__treeMap[self.getCurrentParent()]
00992       self.fillRegsView(node, self.GGEMIE_Regs)
00993       self.fillRegsView(parentNode, self.GGEM_Regs)
00994       return
00995 
00996     elif self.getCurrentItem().text(0).endsWith("GGEMW"):
00997       #~ self.TEMTab.setCurrentPage(7)
00998       parentNode = self.__treeMap[self.getCurrentParent()]
00999       self.fillRegsView(node, self.GGEMW_Regs)
01000       self.fillRegsView(parentNode, self.GGEM_Regs)
01001       return
01002 
01003     #~ CRU Leg
01004     if self.getCurrentItem().text(0).startsWith("GCRU"):
01005       #~ self.TEMTab.setCurrentPage(8)
01006       self.fillRegsView(node, self.GCRU_Regs)
01007       return
01008 
01009     #~ PDU Leg
01010     if self.getCurrentItem().text(0).startsWith("GPDU"):
01011       #~ self.TEMTab.setCurrentPage(0)
01012       self.fillRegsView(node, self.GPDU_Regs)
01013       return
01014 
01015     elif self.getCurrentItem().text(0).startsWith("GPEQ"):
01016       #~ self.TEMTab.setCurrentPage(0)
01017       parentNode = self.__treeMap[self.getCurrentParent()]
01018       self.fillRegsView(node, self.GPEQ_Regs)
01019       self.fillRegsView(parentNode, self.GPDU_Regs)
01020       return
01021 
01022     #~ GLT Leg
01023     if self.getCurrentItem().text(0).startsWith("GGLT"):
01024       #~ self.TEMTab.setCurrentPage(9)
01025       self.fillRegsView(node, self.GGLT_Regs)
01026       return
01027 
01028 
01029   def getCurrentItem(self):
01030     currentItem = self.Hierarchy.currentItem()
01031     return currentItem
01032 
01033   def getCurrentParent(self):
01034     if self.getCurrentItem().parent() is not None:
01035       currentParent = self.getCurrentItem().parent()
01036     else:
01037       currentParent = self.Hierarchy.firstChild()
01038     return currentParent
01039 
01040   def getCurrentGrandParent(self):
01041     if self.getCurrentParent().parent() is not None:
01042       currentGrandParent = self.getCurrentParent().parent()
01043     else:
01044       currentGrandParent = self.Hierarchy.firstChild()
01045     return currentGrandParent
01046 
01047   def getCurrentGreatGrandParent(self):
01048     if self.getCurrentGrandParent().parent() is not None:
01049       currentGreatGrandParent = self.getCurrentGrandParent().parent()
01050     else:
01051       currentGreatGrandParent = self.Hierarchy.firstChild()
01052     return currentGreatGrandParent
01053 
01054 
01055   def fillRegsView(self, parent, listView):
01056     listItem = listView.firstChild()
01057 
01058     while listItem != None:
01059       name = str(listItem.text(0))
01060       #if parent.regs[name].isWriteOnly():
01061       #  continue
01062 
01063       #if parent.regs[name].isNoDirectAccess():
01064       #  continue
01065 
01066       retryCount = 3
01067       while True:
01068         try:
01069           if QString.compare(self.Conversion.text(), "EGU") == 0:
01070             value = parent.regs[name].get()
01071           else:
01072             value = parent.regs[name].get(bypass = 1)
01073 
01074           size = parent.regs[name].size()
01075           listItem.setText(1,str(size))
01076 
01077           if self.__base == 1:
01078             fmt = "0x%0" + str(size*2) + "x "
01079             listItem.setText(3, fmt % value)
01080           else:
01081             listItem.setText(3,str(value) + " ")
01082 
01083           tstamp = parent.regs[name].getTimeStamp()
01084           if tstamp == -1:
01085             strTime = ''
01086           else:
01087             strTime = time.strftime('%H:%M:%S', time.gmtime(tstamp)) + " + %03d" % (math.modf(tstamp)[0]*1000)
01088           listItem.setText(2,strTime)
01089           listItem.setError(0)
01090           break
01091         except LATInterfaceException:
01092           if sys.exc_info()[1].errstr()[0] == 'OCS_BDADC' and retryCount > 1:
01093             retryCount =- 1
01094             continue
01095           else:
01096             listItem.setText(3, "%s - %s (0x%08x)"
01097                                 % (sys.exc_info()[1].errstr()[0], sys.exc_info()[1].errstr()[1], sys.exc_info()[1].status)
01098                             )
01099             listItem.setError(1)
01100             break
01101       listItem = listItem.nextSibling()
01102 
01103   def setDefaults(self):
01104 
01105     self.TEMTab.setEnabled(1)
01106 
01107     #~ self.GAEM_Regs.setEnabled(0)
01108     #~ self.GARC_Regs.setEnabled(0)
01109     #~ self.GAFE_Regs.setEnabled(0)
01110 
01111     #~ self.GTEM_Regs.setEnabled(0)
01112     #~ self.GCCC_Regs.setEnabled(0)
01113     #~ self.GCRC_Regs.setEnabled(0)
01114     #~ self.GCFE_Regs.setEnabled(0)
01115 
01116     #~ self.GTEM_Regs2.setEnabled(0)
01117     #~ self.GTCC_Regs.setEnabled(0)
01118     #~ self.GTRC_Regs.setEnabled(0)
01119     #~ self.GTFE_Regs.setEnabled(0)
01120 
01121 
01122     #~ self.TEMTab.page(0).setEnabled(0)
01123     #~ self.TEMTab.page(1).setEnabled(0)
01124     #~ self.TEMTab.page(2).setEnabled(0)
01125 
01126     #~ self.TEMTab.setTabLabel(self.TEMTab.page(1), self.trUtf8("ACD") )
01127     #~ self.TEMTab.setTabLabel(self.TEMTab.page(2), self.trUtf8("CAL") )
01128     #~ self.TEMTab.setTabLabel(self.TEMTab.page(3), self.trUtf8("TKR") )
01129 
01130     self.GLATLabel.setText("GLAT")
01131     self.GLCBLabel.setText("GLCB")
01132     self.GLCBSTATSLabel.setText("GLCBSTATS")
01133     self.GOCSLabel.setText("GOCS")
01134     self.GAEMLabel.setText("GAEM")
01135     self.GAEQLabel.setText("GAEQ")
01136     self.GARCLabel.setText("GARC")
01137     self.GAFELabel.setText("GAFE")
01138 
01139     self.GTEMLabel.setText("GTEM")
01140     self.GTEMLabel2.setText("GTEM")
01141 
01142     self.GCCCLabel.setText("GCCC")
01143     self.GCRCLabel.setText("GCRC")
01144     self.GCFELabel.setText("GCFE")
01145 
01146     self.GTCCLabel.setText("GTCC")
01147     self.GTRCLabel.setText("GTRC")
01148     self.GTFELabel.setText("GTFE")
01149 
01150     self.GEBMLabel.setText("GEBM")
01151     self.GEBMCLabel.setText("GEBMC")
01152     self.GEBMSTLabel.setText("GEBMST")
01153 
01154     self.GGEMLabel.setText("GGEM")
01155     self.GGEMCLabel.setText("GGEMC")
01156     self.GGEMCLabel.setText("GGEMMG")
01157     self.GGEMSTLabel.setText("GGEMST")
01158     self.GGEMCLabel.setText("GGEMSC")
01159     self.GGEMCLabel.setText("GGEMVG")
01160     self.GGEMCLabel.setText("GGEMIE")
01161     self.GGEMCLabel.setText("GGEMW")
01162 
01163     self.GCRULabel.setText("GCRU")
01164 
01165     self.GGLTLabel.setText("GGLT")
01166 
01167     self.clearViews()
01168 
01169   def clearViews(self):
01170 
01171     self.clearValues(self.GLAT_Regs)
01172     self.clearValues(self.GLCB_Regs)
01173     self.clearValues(self.GLCBSTATS_Regs)
01174     self.clearValues(self.GOCS_Regs)
01175     self.clearValues(self.GAEM_Regs)
01176     self.clearValues(self.GAEQ_Regs)
01177 
01178     self.clearValues(self.GARC_Regs)
01179     self.clearValues(self.GAFE_Regs)
01180 
01181     self.clearValues(self.GTEM_Regs)
01182     self.clearValues(self.GTEM_Regs2)
01183 
01184     self.clearValues(self.GCCC_Regs)
01185     self.clearValues(self.GCRC_Regs)
01186     self.clearValues(self.GCFE_Regs)
01187 
01188     self.clearValues(self.GTCC_Regs)
01189     self.clearValues(self.GTRC_Regs)
01190     self.clearValues(self.GTFE_Regs)
01191 
01192     self.clearValues(self.GTIC_Regs)
01193 
01194     self.clearValues(self.GEBM_Regs)
01195     self.clearValues(self.GEBMC_Regs)
01196     self.clearValues(self.GEBMST_Regs)
01197 
01198     self.clearValues(self.GGEM_Regs)
01199     self.clearValues(self.GGEMC_Regs)
01200     self.clearValues(self.GGEMMG_Regs)
01201     self.clearValues(self.GGEMST_Regs)
01202     self.clearValues(self.GGEMSC_Regs)
01203     self.clearValues(self.GGEMVG_Regs)
01204     self.clearValues(self.GGEMIE_Regs)
01205     self.clearValues(self.GGEMW_Regs)
01206 
01207     self.clearValues(self.GCRU_Regs)
01208 
01209     self.clearValues(self.GPDU_Regs)
01210     self.clearValues(self.GPEQ_Regs)
01211 
01212     self.clearValues(self.GGLT_Regs)
01213 
01214   def clearValues(self, listView):
01215     regItem = listView.firstChild()
01216     while regItem != None:
01217       regItem.setError(0)
01218       regItem.setText(1, "" )
01219       regItem.setText(2, "" )
01220       regItem.setText(3, "" )
01221       if self.__openFile == 1:
01222         regItem.setText(0, "" )
01223       regItem = regItem.nextSibling()
01224 
01225   def browserPreferences(self):
01226     self.__timer.stop()
01227     status = self.browserPreferences.exec_loop()
01228     if status == self.browserPreferences.Rejected:
01229       self.__timer.start(self.__step*1000, False)
01230     else:
01231       self.__step = float(str(self.browserPreferences.timestepValue.text()))
01232       self.__timer.start(self.__step*1000, False)
01233 
01234       if self.browserPreferences.rawButton.isChecked():
01235         self.Conversion.setText("RAW")
01236       elif self.browserPreferences.eguButton.isChecked():
01237         self.Conversion.setText("EGU")
01238         self.browserPreferences.decButton.setChecked(1)
01239 
01240       if self.browserPreferences.decButton.isChecked():
01241         self.viewDecimal.setOn(1)
01242       elif self.browserPreferences.hexButton.isChecked():
01243         self.viewHexadecimal.setOn(1)
01244 
01245       if QString.compare(self.__filename, QString.null) != 0:
01246         self.selectItem(self.Hierarchy.currentItem())
01247 
01248   def selectFile(self):
01249     fn = QFileDialog.getOpenFileName( QString.null, "(*.xml)", self )
01250     if not fn.isEmpty():
01251       self.__filename = fn
01252       self.loadSchema(str(self.__filename))
01253 
01254   def fileNew(self):
01255     print "BrowserImpl.fileNew(): Not implemented yet"
01256   # public slot
01257 
01258   def fileOpen(self):
01259     self.__timer.stop()
01260     #~ self.__lock.acquire()
01261 
01262     self.__openFile = 1
01263     self.clearViews()
01264     self.__openFile = 0
01265 
01266     self.selectFile()
01267     #~ self.__lock.release()
01268 
01269 
01270   def fileSave(self):
01271     print "BrowserImpl.fileSave(): Not implemented yet"
01272   # public slot
01273 
01274   def fileSaveAs(self):
01275     print "BrowserImpl.fileSaveAs(): Not implemented yet"
01276   # public slot
01277 
01278   def filePrint(self):
01279     Margin = 50
01280     self.__pageNo = 1
01281     #~ self.__column = [0, 130, 180]#, 180, 260, 400]#, 325] # Magic numbers
01282 
01283     # If there are no items, don't try to print
01284     #~ if QString.compare(str(self.__filename), "") == 0:
01285     #if not self.Hierarchy.firstChild():
01286       #~ print "Can't print a non-loaded Browser"
01287       #~ return
01288 
01289     if self.printer.setup(self):
01290       self.statusBar().message('Printing...')
01291 
01292       self.__p = QPainter()
01293       self.__p.begin(self.printer)
01294       self.__p.setFont(self.GAEM_Regs.font())
01295       self.__yPos = 0
01296       self.__fm = self.__p.fontMetrics()
01297       self.__metrics = QPaintDeviceMetrics(self.printer)
01298 
01299       self.__header = "GLAT Browser. Browsing: " + str(options.schema)
01300 
01301       page = "Page: 1"
01302       self.__p.drawText(Margin,Margin + self.__yPos,self.__metrics.width(),self.__fm.lineSpacing(),\
01303                 Qt.ExpandTabs | Qt.DontClip, self.__header)
01304       self.__yPos = self.__yPos + self.__fm.lineSpacing()
01305       self.__p.drawText(Margin,Margin + self.__yPos,self.__metrics.width(),self.__fm.lineSpacing(),\
01306                 Qt.ExpandTabs | Qt.DontClip, page)
01307       self.__yPos = self.__yPos + self.__fm.lineSpacing()
01308 
01309       #~ self.__currentItem = self.Hierarchy.self.__currentItem()
01310 
01311       #~ if self.__currentItem.parent() is not None:
01312         #~ self.getCurrentParent() = self.__currentItem.parent()
01313       #~ else:
01314         #~ self.getCurrentParent() = self.Hierarchy.firstChild()
01315 
01316       #~ if self.getCurrentParent().parent() is not None:
01317         #~ self.getCurrentGrandParent() = self.getCurrentParent().parent()
01318       #~ else:
01319         #~ self.getCurrentGrandParent() = self.Hierarchy.firstChild()
01320 
01321       #~ if self.getCurrentGrandParent().parent() is not None:
01322         #~ self.getCurrentGreatGrandParent() = self.getCurrentGrandParent().parent()
01323       #~ else:
01324         #~ self.getCurrentGreatGrandParent() = self.Hierarchy.firstChild()
01325 
01326       self.printRegList(self.GLAT_Regs, str(self.GLATLabel.text()) + " Registers")
01327       self.printRegList(self.GLCB_Regs, str(self.GLCBLabel.text()) + " Registers")
01328       self.printRegList(self.GLCBSTATS_Regs, str(self.GLCBSTATSLabel.text()) + " Registers")
01329       self.printRegList(self.GOCS_Regs, str(self.GOCSLabel.text()) + " Registers")
01330       self.printRegList(self.GAEM_Regs, str(self.GAEMLabel.text()) + " Registers")
01331       self.printRegList(self.GAEQ_Regs, str(self.GAEQLabel.text()) + " Registers")
01332       self.printRegList(self.GARC_Regs, str(self.GARCLabel.text()) + " Registers")
01333       self.printRegList(self.GAFE_Regs, str(self.GAFELabel.text()) + " Registers")
01334 
01335       self.printRegList(self.GTEM_Regs, str(self.GTEMLabel.text()) + " Registers")
01336       self.printRegList(self.GCCC_Regs, str(self.GCCCLabel.text()) + " Registers")
01337       self.printRegList(self.GCRC_Regs, str(self.GCRCLabel.text()) + " Registers")
01338       self.printRegList(self.GCFE_Regs, str(self.GCFELabel.text()) + " Registers")
01339 
01340       self.printRegList(self.GTCC_Regs, str(self.GTCCLabel.text()) + " Registers")
01341       self.printRegList(self.GTRC_Regs, str(self.GTRCLabel.text()) + " Registers")
01342       self.printRegList(self.GTFE_Regs, str(self.GTFELabel.text()) + " Registers")
01343 
01344       self.printRegList(self.GTIC_Regs, str(self.GTICLabel.text()) + " Registers")
01345 
01346       self.printRegList(self.GEBM_Regs, str(self.GEBMLabel.text()) + " Registers")
01347       self.printRegList(self.GEBMC_Regs, str(self.GEBMCLabel.text()) + " Registers")
01348       self.printRegList(self.GEBMST_Regs, str(self.GEBMSTLabel.text()) + " Registers")
01349 
01350       self.printRegList(self.GGEM_Regs, str(self.GGEMLabel.text()) + " Registers")
01351       self.printRegList(self.GGEMC_Regs, str(self.GGEMCLabel.text()) + " Registers")
01352       self.printRegList(self.GGEMMG_Regs, str(self.GGEMMGLabel.text()) + " Registers")
01353       self.printRegList(self.GGEMST_Regs, str(self.GGEMSTLabel.text()) + " Registers")
01354       self.printRegList(self.GGEMSC_Regs, str(self.GGEMSCLabel.text()) + " Registers")
01355       self.printRegList(self.GGEMVG_Regs, str(self.GGEMVGLabel.text()) + " Registers")
01356       self.printRegList(self.GGEMIE_Regs, str(self.GGEMIELabel.text()) + " Registers")
01357       self.printRegList(self.GGEMW_Regs, str(self.GGEMWLabel.text()) + " Registers")
01358 
01359       self.printRegList(self.GCRU_Regs, str(self.GCRULabel.text()) + " Registers")
01360 
01361       self.printRegList(self.GPDU_Regs, str(self.GPDULabel.text()) + " Registers")
01362       self.printRegList(self.GPEQ_Regs, str(self.GPEQLabel.text()) + " Registers")
01363 
01364       self.printRegList(self.GGLT_Regs, str(self.GGLTLabel.text()) + " Registers")
01365 
01366       self.__p.end()
01367       self.statusBar().message('Printing completed',2000)
01368     else:
01369       self.statusBar().message('Printing aborted',2000)
01370 
01371   def printRegList(self, regList, listHeader):
01372       Margin = 50
01373 
01374       # If there are no items, don't try to print
01375       if not regList.firstChild():
01376         return
01377 
01378       # If the selected node is a broadcast node or is not selected, don't print:
01379       if QString.compare(regList.firstChild().text(1),"") == 0 :
01380         return
01381 
01382       column = [50, 200, 260, 390]
01383       columnHeader = ['Register','Size','Time Stamp','Value']#,'Time','Source','Message']
01384 
01385       self.__yPos = self.__yPos + self.__fm.lineSpacing()
01386       self.__p.drawText(Margin,Margin + self.__yPos,self.__metrics.width(),self.__fm.lineSpacing(),\
01387                 Qt.ExpandTabs | Qt.DontClip, listHeader)
01388       self.__yPos = self.__yPos + self.__fm.lineSpacing()
01389 
01390       for i in range (0,4):
01391           self.__p.drawText(column[i],Margin + self.__yPos,self.__metrics.width(),self.__fm.lineSpacing(),
01392                     Qt.ExpandTabs | Qt.DontClip, columnHeader[i])
01393       self.__yPos = self.__yPos + self.__fm.lineSpacing()
01394 
01395       item = regList.firstChild()
01396       for j in range(regList.childCount()):
01397         if Margin + self.__yPos > self.__metrics.height() - Margin:
01398           self.__pageNo = self.__pageNo + 1
01399           page = "Page: " + str(self.__pageNo)
01400           self.statusBar().message('Printing (page %d)...' % (self.__pageNo))
01401           self.printer.newPage()
01402           self.__yPos = 0
01403           self.__p.drawText(Margin,Margin + self.__yPos,self.__metrics.width(),self.__fm.lineSpacing(),
01404                   Qt.ExpandTabs | Qt.DontClip, self.__header)
01405           self.__yPos = self.__yPos + self.__fm.lineSpacing()
01406           self.__p.drawText(Margin,Margin + self.__yPos,self.__metrics.width(),self.__fm.lineSpacing(),
01407                   Qt.ExpandTabs | Qt.DontClip, page)
01408           self.__yPos = self.__yPos + 2*self.__fm.lineSpacing()
01409 
01410           self.__p.drawText(Margin,Margin + self.__yPos,self.__metrics.width(),self.__fm.lineSpacing(),
01411                   Qt.ExpandTabs | Qt.DontClip, listHeader)
01412           self.__yPos = self.__yPos + self.__fm.lineSpacing()
01413 
01414           for i in range (0,4):
01415             self.__p.drawText(column[i],Margin + self.__yPos,self.__metrics.width(),self.__fm.lineSpacing(),
01416                       Qt.ExpandTabs | Qt.DontClip, columnHeader[i])
01417           self.__yPos = self.__yPos + self.__fm.lineSpacing()
01418 
01419         for i in range (0,4):
01420           self.__p.drawText(column[i],Margin + self.__yPos,self.__metrics.width(),self.__fm.lineSpacing(),
01421                     Qt.ExpandTabs | Qt.DontClip,item.text(i))
01422         self.__yPos = self.__yPos + self.__fm.lineSpacing()
01423         item = item.nextSibling()
01424 
01425   def fileExit(self):
01426     self.close()
01427 
01428   def editUndo(self):
01429     print "BrowserImpl.editUndo(): Not implemented yet"
01430   # public slot
01431 
01432   def editRedo(self):
01433     print "BrowserImpl.editRedo(): Not implemented yet"
01434   # public slot
01435 
01436   def editCut(self):
01437     print "BrowserImpl.editCut(): Not implemented yet"
01438   # public slot
01439 
01440   def editCopy(self):
01441     print "BrowserImpl.editCopy(): Not implemented yet"
01442   # public slot
01443 
01444   def editPaste(self):
01445     print "BrowserImpl.editPaste(): Not implemented yet"
01446   # public slot
01447 
01448   def editFind(self):
01449     print "BrowserImpl.editFind(): Not implemented yet"
01450   # public slot
01451 
01452   def helpOnline(self):
01453     import webbrowser
01454     webbrowser.open('http://www-glast.slac.stanford.edu/IntegrationTest/ONLINE/Default.htm')
01455 
01456   def helpContents(self):
01457     self.browserReadme = BrowserReadme()
01458     self.browserReadme.exec_loop()
01459 
01460   def helpAbout(self):
01461     QMessageBox.about(self,'Help About',
01462             '                                     GLAST Online Browser\n                               I&T Online - Alicia T. Kavelaars\nhttp://www-glast.slac.stanford.edu/IntegrationTest/ONLINE/contact.htm\n                                       Copyright 2003 by\n       The Board of Trustees of the Leland Stanford Junior University.\n                                       All rights reserved.')
01463 
01464 class RegViewItem(QListViewItem):
01465   def __init__(self, *args):
01466     QListViewItem.__init__(self, *args)
01467     self.__error = 0
01468 
01469   def paintCell(self, p, cg, column, width, align):
01470     g = QColorGroup(cg)
01471     g.setColor( QColorGroup.Base, Qt.white)
01472     g.setColor( QColorGroup.Foreground, Qt.black)
01473     if self.__error:
01474       g.setColor( QColorGroup.Text, Qt.red)
01475     else:
01476       g.setColor( QColorGroup.Text, Qt.black)
01477 
01478     # Do the standard painting
01479     QListViewItem.paintCell(self,p,g,column,width,align)
01480 
01481     p.setPen( QPen( cg.dark(), 1 ) )
01482     p.drawLine( 0, self.height() - 1, width, self.height() - 1 )
01483     p.drawLine( width - 1, 0, width - 1, self.height() )
01484 
01485   def setError(self, error):
01486     self.__error = error
01487 
01488 if __name__ == "__main__":
01489   from LATTE.client.gOptions import Options
01490   from LATTE.client.gCmdCli  import CmdCli
01491   from LATTE.database.gLAT   import GLAT
01492   from LATTE.database.gXBR   import GXBRD
01493   from LATTE.database.gPlumber import Plumber
01494 
01495   options = Options(['server'], ['schema'])
01496   try:
01497     options.parse()
01498   except Exception, msg:
01499     options.usage(str(msg))
01500     sys.exit(1)
01501 
01502   cmd = CmdCli()
01503   cmd.connect(options.server)
01504 
01505   lat = GLAT(cmd)
01506   xbrd = GXBRD(cmd)
01507   ocs = GOCS(cmd)
01508 
01509   a = QApplication(sys.argv)
01510   QObject.connect(a,SIGNAL("lastWindowClosed()"),a,SLOT("quit()"))
01511   w = BrowserImpl(lat, xbrd, ocs)
01512   w.fileOpenAction.setEnabled(1)
01513   if options.schema is not None:
01514     w.loadSchema(options.schema)
01515 
01516   a.setMainWidget(w)
01517   w.show()
01518   a.exec_loop()

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