Go to the documentation of this file.00001 __author__ = 'tom1231'
00002 from PyQt4.QtGui import *
00003 from BAL.Interface.DeviceFrame import DeviceFrame, SWITCH
00004
00005
00006 class Switch(DeviceFrame):
00007 switchCount = 0
00008
00009 def __init__(self, frame, data, switchPorts):
00010 DeviceFrame.__init__(self, SWITCH, frame, data)
00011 self.mainPorts = switchPorts
00012
00013 self._pubHz = '20'
00014 self._name = 'RiC_Switch'
00015 self._port = str(self.mainPorts.currentText())
00016
00017 def fromDict(self, data):
00018 self._pubHz = data['pubHz']
00019 self._name = data['name']
00020 self._port = data['port']
00021
00022 def toDict(self):
00023 data = dict()
00024
00025 data['type'] = SWITCH
00026 data['pubHz'] = self._pubHz
00027 data['name'] = self._name
00028 data['port'] = self._port
00029
00030 return data
00031
00032 def saveToFile(self, file):
00033 file.write('switch' + str(Switch.switchCount) + '/name: ' + self._name + '\n')
00034 file.write('switch' + str(Switch.switchCount) + '/port: ' + self._port + '\n')
00035 file.write('switch' + str(Switch.switchCount) + '/publishHz: ' + self._pubHz + '\n')
00036 Switch.switchCount += 1
00037
00038 def getPort(self):
00039 return self._port
00040
00041 def findItem(self):
00042 for i in xrange(self.mainPorts.count()):
00043 if self._port == str(self.mainPorts.itemText(i)):
00044 return i
00045 return 1
00046
00047 def showDetails(self, items=None):
00048 self.switchPorts = QComboBox()
00049 self.switchPorts.addItems([self.mainPorts.itemText(i) for i in xrange(self.mainPorts.count())])
00050 self.switchPorts.setCurrentIndex(self.findItem())
00051
00052 self.pubHz = QLineEdit(self._pubHz)
00053 self.name = QLineEdit(self._name)
00054
00055 self._frame.layout().addRow(QLabel('Publish Hz: '), self.pubHz)
00056 self._frame.layout().addRow(QLabel('name: '), self.name)
00057 self._frame.layout().addRow(QLabel('Port: '), self.switchPorts)
00058
00059
00060 def getName(self):
00061 return self._name
00062
00063 def add(self):
00064 old = self._name
00065 self._name = str(self.name.text())
00066
00067 if not self.nameIsValid():
00068 error = QErrorMessage()
00069 error.setWindowTitle("Same name error")
00070 error.showMessage("Name already taken.")
00071 error.exec_()
00072 self._name = old
00073 self._isValid = False
00074 return
00075
00076 self._isValid = True
00077 self._pubHz = str(self.pubHz.text())
00078 self._name = str(self.name.text())
00079 self._port = str(self.switchPorts.currentText())
00080 self.mainPorts.removeItem(self.switchPorts.currentIndex())
00081
00082 def printDetails(self):
00083 self._frame.layout().addRow(QLabel('Publish Hz: '), QLabel(self._pubHz))
00084 self._frame.layout().addRow(QLabel('Name: '), QLabel(self._name))
00085 self._frame.layout().addRow(QLabel('Port: '), QLabel(self._port))