DiffOpen.py
Go to the documentation of this file.
00001 __author__ = 'tom1231'
00002 from PyQt4.QtGui import *
00003 from BAL.Interface.DeviceFrame import DeviceFrame, DIFF_OPEN
00004 
00005 
00006 class DiffOpen(DeviceFrame):
00007     def __init__(self, frame, data, motors):
00008         DeviceFrame.__init__(self, DIFF_OPEN, frame, data)
00009         self.motors = motors
00010         self._name = 'diff_driver'
00011         self._rWheel = '0.065'
00012         self._width = '0.255'
00013         self._maxAg = '16.0'
00014         self._maxLn = '16.0'
00015 
00016         self._motorL = '1'
00017         self._motorR = '2'
00018 
00019     def fromDict(self, data):
00020         self._name = data['name']
00021         self._width = data['width']
00022         self._rWheel = data['rWheel']
00023         self._maxAg = data['maxAg']
00024         self._maxLn = data['maxLn']
00025         self._motorR = data['motorR']
00026         self._motorL = data['motorL']
00027 
00028     def toDict(self):
00029         data = dict()
00030 
00031         data['type'] = DIFF_OPEN
00032         data['name'] = self._name
00033         data['rWheel'] = self._rWheel
00034         data['width'] = self._width
00035         data['maxAg'] = self._maxAg
00036         data['maxLn'] = self._maxLn
00037         data['motorL'] = self._motorL
00038         data['motorR'] = self._motorR
00039 
00040         return data
00041 
00042 
00043     def printDetails(self):
00044         self._frame.layout().addRow(QLabel('Name: '), QLabel(self._name))
00045         self._frame.layout().addRow(QLabel('Radius of the wheel (in meters): '), QLabel(self._rWheel))
00046         self._frame.layout().addRow(QLabel('Width of the robot (in meters): '), QLabel(self._width))
00047         self._frame.layout().addRow(QLabel('Max angular: '), QLabel(self._maxAg))
00048         self._frame.layout().addRow(QLabel('Max linear: '), QLabel(self._maxLn))
00049         self._frame.layout().addRow(QLabel('MotorL: '), QLabel(self.motors[int(self._motorL) - 1]))
00050         self._frame.layout().addRow(QLabel('MotorR: '), QLabel(self.motors[int(self._motorR) - 1]))
00051 
00052     def getName(self):
00053         return self._name
00054 
00055     def showDetails(self, items=None):
00056         self.motorsL = QComboBox()
00057         self.motorsR = QComboBox()
00058 
00059         for i in xrange(len(self.motors)):
00060             self.motorsL.addItem(self.motors[i], str(i + 1))
00061             self.motorsR.addItem(self.motors[i], str(i + 1))
00062         self.motorsL.setCurrentIndex(int(self._motorL) - 1)
00063         self.motorsR.setCurrentIndex(int(self._motorR) - 1)
00064 
00065         self.name = QLineEdit(self._name)
00066         self.rWheel = QLineEdit(self._rWheel)
00067         self.width = QLineEdit(self._width)
00068         self.maxAg = QLineEdit(self._maxAg)
00069         self.maxLn = QLineEdit(self._maxLn)
00070 
00071         self._frame.layout().addRow(QLabel('Name: '), self.name)
00072         self._frame.layout().addRow(QLabel('Radius of the wheel (in meters): '), self.rWheel)
00073         self._frame.layout().addRow(QLabel('Width of the robot (in meters): '), self.width)
00074         self._frame.layout().addRow(QLabel('Max angular: '), self.maxAg)
00075         self._frame.layout().addRow(QLabel('Max linear: '), self.maxLn)
00076         self._frame.layout().addRow(self.motorsL, self.motorsR)
00077 
00078     def add(self):
00079         old = self._name
00080         self._name = str(self.name.text())
00081         self._motorL = str(self.motorsL.itemData(self.motorsL.currentIndex()).toString())
00082         self._motorR = str(self.motorsR.itemData(self.motorsR.currentIndex()).toString())
00083 
00084 
00085         if not self.nameIsValid():
00086             error = QErrorMessage()
00087             error.setWindowTitle("Same name error")
00088             error.showMessage("Name already taken.")
00089             error.exec_()
00090             self._name = old
00091             self._isValid = False
00092             return
00093 
00094         if self._motorL == self._motorR:
00095             error = QErrorMessage()
00096             error.setWindowTitle(" Error")
00097             error.showMessage("Can not have the same motor in the right and left fields.")
00098             error.exec_()
00099             self._isValid = False
00100             return
00101         self._isValid = True
00102         self._name = str(self.name.text())
00103         self._rWheel = str(self.rWheel.text())
00104         self._width = str(self.width.text())
00105         self._maxAg = str(self.maxAg.text())
00106         self._maxLn = str(self.maxLn.text())
00107 
00108     def saveToFile(self, file):
00109         file.write('Diff/name: ' + self._name + '\n')
00110         file.write('Diff/rWheel: ' + self._rWheel + '\n')
00111         file.write('Diff/width: ' + self._width + '\n')
00112         file.write('Diff/maxAng: ' + self._maxAg + '\n')
00113         file.write('Diff/maxLin: ' + self._maxLn + '\n')
00114         file.write('Diff/motorL: ' + self._motorL + '\n')
00115         file.write('Diff/motorR: ' + self._motorR + '\n')


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