launchFile.py
Go to the documentation of this file.
00001 __author__ = 'tom'
00002 from PyQt4.QtGui import *
00003 from BAL.Interface.DeviceFrame import LAUNCH, EX_DEV, DeviceFrame
00004 from lxml.etree import Element, SubElement, XML
00005 import rospkg
00006 
00007 
00008 class RosLaunch(DeviceFrame):
00009     def __init__(self, frame, data):
00010         DeviceFrame.__init__(self, EX_DEV, frame, data)
00011         self._pkg = ''
00012         self._file = ''
00013         self._name = ''
00014 
00015     def toDict(self):
00016         data = dict()
00017 
00018         data['type'] = LAUNCH
00019         data['name'] = self._name
00020         data['pkg'] = self._pkg
00021         data['file'] = self._file
00022 
00023         return data
00024 
00025     def fromDict(self, data):
00026         self._name = data['name']
00027         self._pkg = data['pkg']
00028         self._file = data['file']
00029 
00030     def showDetails(self, items=None):
00031         self.name = QLineEdit(self._name)
00032         self.pkg = QLineEdit(self._pkg)
00033         self.file = QPushButton('Browse')
00034 
00035         self.file.clicked.connect(self.browse)
00036 
00037         self._frame.layout().addRow(QLabel('Name:'), self.name)
00038         self._frame.layout().addRow(QLabel('package:'), self.pkg)
00039         self._frame.layout().addRow(QLabel('Launch file:'), self.file)
00040 
00041     def browse(self):
00042         if str(self.pkg.text()) == '':
00043             QMessageBox.critical(self._frame, "Error", "You need to fill the package field before you browse for the file.")
00044             return
00045         try:
00046             fullPath = rospkg.RosPack().get_path(str(self.pkg.text()))
00047         except rospkg.ResourceNotFound:
00048             QMessageBox.critical(self._frame, "Error", "Package not found.")
00049             return
00050 
00051         launchFile = str(QFileDialog.getOpenFileName(self._frame, 'Load file', fullPath, 'Launch file (*.launch)'))
00052         if launchFile == '': return
00053 
00054         index = launchFile.find(str(self.pkg.text()))
00055         if index == -1:
00056             QMessageBox.critical(self._frame, "Error", "launch is not from %s package." % str(self.pkg.text()))
00057             return
00058 
00059         self._file = launchFile[index + len(str(self.pkg.text())):]
00060         self._pkg = str(self.pkg.text())
00061 
00062     def saveToFile(self, parent):
00063         SubElement(parent, 'include', {
00064             'file': '$(find %s)%s' % (self._pkg, self._file)
00065         })
00066 
00067     def printDetails(self):
00068         self._frame.layout().addRow(QLabel('Name:'), QLabel(self._name))
00069         self._frame.layout().addRow(QLabel('package:'), QLabel(self._pkg))
00070         self._frame.layout().addRow(QLabel('launch file:'), QLabel(self._file))
00071 
00072     def getName(self):
00073         return self._name
00074 
00075     def add(self):
00076         old = self._name
00077         self._name = str(self.name.text())
00078 
00079         if not self.nameIsValid():
00080             error = QErrorMessage()
00081             error.setWindowTitle("Same name error")
00082             error.showMessage("Name already taken.")
00083             error.exec_()
00084             self._name = old
00085             self._isValid = False
00086             return
00087 
00088         if self._file == '' or self._pkg == '':
00089             QMessageBox.critical(self._frame, "Error", "one or more field are empty please fill theme.")
00090             return
00091 
00092         self._isValid = True


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