Go to the documentation of this file.00001 __author__ = 'tom1231'
00002 from PyQt4.QtCore import QUrl
00003 from PyQt4.QtGui import *
00004 from BAL.Interface.DeviceFrame import DeviceFrame, EX_DEV, HOKUYO
00005 from lxml.etree import Element, SubElement, XML
00006
00007
00008 class Hokuyo(DeviceFrame):
00009 def __init__(self, frame, data=None):
00010 DeviceFrame.__init__(self, EX_DEV, frame, data)
00011 self._name = 'Hokuyo_Node'
00012 self._output = 'screen'
00013 self._port = '/dev/Hokuyo'
00014 self._frameId = 'Hokuyo_Frame'
00015
00016 def onLink(self, URL):
00017 QDesktopServices().openUrl(QUrl(URL))
00018
00019 def fromDict(self, data):
00020 self._name = data['name']
00021 self._output = data['output']
00022 self._port = data['port']
00023 self._frameId = data['frameId']
00024
00025 def toDict(self):
00026 data = dict()
00027
00028 data['type'] = HOKUYO
00029 data['name'] = self._name
00030 data['output'] = self._output
00031 data['port'] = self._port
00032 data['frameId'] = self._frameId
00033
00034 return data
00035
00036 def printDetails(self):
00037 self._frame.layout().addRow(QLabel('name: '), QLabel(self._name))
00038 self._frame.layout().addRow(QLabel('Output: '), QLabel(self._output))
00039 self._frame.layout().addRow(QLabel('Port: '), QLabel(self._port))
00040 self._frame.layout().addRow(QLabel('Frame id: '), QLabel(self._frameId))
00041
00042 def getName(self):
00043 return self._name
00044
00045 def showDetails(self, items=None):
00046 self.name = QLineEdit(self._name)
00047 self.output = QLineEdit(self._output)
00048 self.port = QLineEdit(self._port)
00049 self.frameId = QLineEdit(self._frameId)
00050
00051 link = QLabel("<a href = http://wiki.ros.org/hokuyo_node> Hokuyo Wiki </a>")
00052 link.linkActivated.connect(self.onLink)
00053
00054 self._frame.layout().addRow(QLabel('name: '), self.name)
00055 self._frame.layout().addRow(QLabel('Output: '), self.output)
00056 self._frame.layout().addRow(QLabel('Port: '), self.port)
00057 self._frame.layout().addRow(QLabel('Frame id: '), self.frameId)
00058 self._frame.layout().addRow(QLabel('More information: '), link)
00059
00060 def add(self):
00061 old = self._name
00062 self._name = str(self.name.text())
00063
00064 if not self.nameIsValid():
00065 error = QErrorMessage()
00066 error.setWindowTitle("Same name error")
00067 error.showMessage("Name already taken.")
00068 error.exec_()
00069 self._name = old
00070 self._isValid = False
00071 return
00072
00073 self._isValid = True
00074 self._name = str(self.name.text())
00075 self._output = str(self.output.text())
00076 self._port = str(self.port.text())
00077 self._frameId = str(self.frameId.text())
00078
00079 def saveToFile(self, parent):
00080 element = SubElement(parent, 'node', {
00081 'pkg': 'hokuyo_node',
00082 'type': 'hokuyo_node',
00083 'name': self._name,
00084 'output': self._output
00085 })
00086 SubElement(element, 'param', {
00087 'name': 'port',
00088 'value': self._port
00089 })
00090 SubElement(element, 'param', {
00091 'name': 'frame_id',
00092 'value': self._frameId
00093 })