Hokuyo.py
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         })


ric_board
Author(s): RoboTiCan
autogenerated on Fri Oct 27 2017 03:02:30