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:
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:
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()