Go to the documentation of this file.00001 __author__ = 'tom1231'
00002 from PyQt4.QtGui import *
00003 from BAL.Interface.DeviceFrame import DeviceFrame, URF
00004
00005
00006 class Urf(DeviceFrame):
00007 urfCount = 0
00008
00009 def __init__(self, frame, data, urfPorts):
00010 DeviceFrame.__init__(self, URF, frame, data)
00011 self.mainPorts = urfPorts
00012 self._pubHz = '50'
00013 self._name = 'RiC_URF'
00014 self._frameId = 'RiC_URF_Frame'
00015 self._urfType = '10'
00016 self._port = str(self.mainPorts.currentText())
00017
00018 def fromDict(self, data):
00019 self._pubHz = data['pubHz']
00020 self._name = data['name']
00021 self._frameId = data['frameId']
00022 self._urfType = data['urfType']
00023 self._port = data['port']
00024
00025 def toDict(self):
00026 data = dict()
00027 data['type'] = URF
00028 data['pubHz'] = self._pubHz
00029 data['name'] = self._name
00030 data['frameId'] = self._frameId
00031 data['urfType'] = self._urfType
00032 data['port'] = self._port
00033
00034 return data
00035
00036 def getCurrentUrfTypeInex(self):
00037 if self._urfType == '10': return 0
00038 return 1
00039
00040 def findItem(self):
00041 for i in xrange(self.mainPorts.count()):
00042 if self._port == str(self.mainPorts.itemText(i)):
00043 return i
00044 return 1
00045
00046 def printDetails(self):
00047 self._frame.layout().addRow(QLabel('Publish Hz: '), QLabel(self._pubHz))
00048 self._frame.layout().addRow(QLabel('name: '), QLabel(self._name))
00049 self._frame.layout().addRow(QLabel('Frame id: '), QLabel(self._frameId))
00050 if self._urfType == '10': self._frame.layout().addRow(QLabel('Type: '), QLabel('HRLV-MaxSonar-EZ'))
00051 else: self._frame.layout().addRow(QLabel('Type: '), QLabel('LV-MaxSonar-EZ'))
00052 self._frame.layout().addRow(QLabel('Port: '), QLabel(self._port))
00053
00054 def getName(self):
00055 return self._name
00056
00057 def getPort(self):
00058 return self._port
00059
00060 def saveToFile(self, file):
00061 file.write('URF' + str(Urf.urfCount) + '/publishHz: ' + self._pubHz + '\n')
00062 file.write('URF' + str(Urf.urfCount) + '/name: ' + self._name + '\n')
00063 file.write('URF' + str(Urf.urfCount) + '/frameId: ' + self._frameId + '\n')
00064 file.write('URF' + str(Urf.urfCount) + '/type: ' + self._urfType + '\n')
00065 file.write('URF' + str(Urf.urfCount) + '/port: ' + self._port + '\n')
00066 Urf.urfCount += 1
00067
00068 def showDetails(self, items=None):
00069 self.urfPorts = QComboBox()
00070 self.urfTypes = QComboBox()
00071
00072 self.urfTypes.addItem('HRLV-MaxSonar-EZ', '10')
00073 self.urfTypes.addItem('LV-MaxSonar-EZ', '11')
00074 self.urfPorts.addItems([self.mainPorts.itemText(i) for i in xrange(self.mainPorts.count())])
00075 self.urfPorts.setCurrentIndex(self.findItem())
00076 self.urfTypes.setCurrentIndex(self.getCurrentUrfTypeInex())
00077
00078 self.pubHz = QLineEdit(self._pubHz)
00079 self.name = QLineEdit(self._name)
00080 self.frameId = QLineEdit(self._frameId)
00081 self.frameId = QLineEdit(self._frameId)
00082
00083 self._frame.layout().addRow(QLabel('Publish Hz: '), self.pubHz)
00084 self._frame.layout().addRow(QLabel('name: '), self.name)
00085 self._frame.layout().addRow(QLabel('Frame id: '), self.frameId)
00086 self._frame.layout().addRow(QLabel('Type: '), self.urfTypes)
00087 self._frame.layout().addRow(QLabel('Port: '), self.urfPorts)
00088
00089 def add(self):
00090 old = self._name
00091 self._name = str(self.name.text())
00092
00093 if not self.nameIsValid():
00094 error = QErrorMessage()
00095 error.setWindowTitle("Same name error")
00096 error.showMessage("Name already taken.")
00097 error.exec_()
00098 self._name = old
00099 self._isValid = False
00100 return
00101
00102 self._isValid = True
00103 self._pubHz = str(self.pubHz.text())
00104 self._name = str(self.name.text())
00105 self._frameId = str(self.frameId.text())
00106 self._urfType = str(self.urfTypes.itemData(self.urfTypes.currentIndex()).toString())
00107 self._port = str(self.urfPorts.currentText())
00108 self.mainPorts.removeItem(self.urfPorts.currentIndex())