Example #1
0
    def __init__(self, parent=None):
        QtGui.QSyntaxHighlighter.__init__(self, parent)
        self.rules = []
        self.commentStart = QtCore.QRegExp("#")
        self.commentEnd = QtCore.QRegExp("\n")
        self.commentFormat = QtGui.QTextCharFormat()
        self.commentFormat.setFontItalic(True)
        self.commentFormat.setForeground(QtCore.Qt.darkGray)
        f = QtGui.QTextCharFormat()
        r = QtCore.QRegExp()
        r.setMinimal(True)
        f.setFontWeight(QtGui.QFont.Normal)
        f.setForeground(QtCore.Qt.darkBlue)
        tagList = [
            "\\bignore_hosts\\b", "\\bsync_hosts\\b", "\\bignore_nodes\\b",
            "\\bsync_nodes\\b", "\\bignore_topics\\b", "\\bsync_topics\\b",
            "\\bignore_services\\b", "\\bsync_services\\b",
            "\\bsync_topics_on_demand\\b", "\\bsync_remote_nodes\\b"
        ]
        for tag in tagList:
            r.setPattern(tag)
            self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))

        f.setForeground(QtCore.Qt.darkGreen)
        f.setFontWeight(QtGui.QFont.Bold)
        attrList = ["\\b\\*|\\*\\B|\\/\\*"]
        for attr in attrList:
            r.setPattern(attr)
            self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))
 def getIncludedFiles(cls,
                      inc_file,
                      regexp_list=[
                          QtCore.QRegExp("\\binclude\\b"),
                          QtCore.QRegExp("\\btextfile\\b"),
                          QtCore.QRegExp("\\bfile\\b")
                      ]):
     '''
 Reads the configuration file and searches for included files. This files
 will be returned in a list.
 @param inc_file: path of the ROS launch file
 @param regexp_list: pattern of 
 @return: the list with all files needed for the configuration
 @rtype: C{[str,...]}
 '''
     result = set()
     with open(inc_file, 'r') as f:
         content = f.read()
         # remove the comments
         comment_pattern = QtCore.QRegExp("<!--.*?-->")
         pos = comment_pattern.indexIn(content)
         while pos != -1:
             content = content[:pos] + content[pos + comment_pattern.
                                               matchedLength():]
             pos = comment_pattern.indexIn(content)
         lines = content.splitlines()
     for line in lines:
         index = cls._index(line, regexp_list)
         if index > -1:
             startIndex = line.find('"', index)
             if startIndex > -1:
                 endIndex = line.find('"', startIndex + 1)
                 fileName = line[startIndex + 1:endIndex]
                 if len(fileName) > 0:
                     try:
                         path = cls.interpretPath(fileName,
                                                  os.path.dirname(inc_file))
                         if os.path.isfile(path):
                             result.add(path)
                             if path.endswith('.launch'):
                                 result.update(
                                     cls.getIncludedFiles(
                                         path, regexp_list))
                     except:
                         pass
     return list(result)
    def __init__(self, parent=None):
        QtGui.QSyntaxHighlighter.__init__(self, parent)
        self.rules = []
        self.commentStart = QtCore.QRegExp("<!--")
        self.commentEnd = QtCore.QRegExp("-->")
        self.default_format = QtGui.QTextCharFormat()
        self.default_format.setForeground(QtGui.QColor(24, 24, 24))
        self.mark_background = QtGui.QBrush(QtGui.QColor(251, 247, 222))
        self.commentFormat = QtGui.QTextCharFormat()
        f = QtGui.QTextCharFormat()
        r = QtCore.QRegExp()
        r.setMinimal(True)
        f.setFontWeight(QtGui.QFont.Normal)
        f.setForeground(QtCore.Qt.darkBlue)
        # create patterns for TAG
        tagList = ["\\b%s\\b" % t for t in self.LAUNCH_CHILDS.keys()]
        for tag in tagList:
            r.setPattern(tag)
            self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))
        # create patterns for ATTRIBUTES
        f.setForeground(QtCore.Qt.darkGreen)
        attrList = set([
            "\\b%s" % attr for v in self.LAUNCH_ATTR.values()
            for attr in v.keys()
        ])
        for attr in attrList:
            r.setPattern(attr)
            self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))
        # create patterns for strings
        f.setForeground(QtCore.Qt.magenta)
        r.setPattern("\".*\"")
        self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))
        # create patterns for substitutions
        f.setForeground(QtGui.QColor(127, 64, 127))
        r.setPattern("\\$\\(.*\\)")
        self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))
        # create patterns for DOCTYPE
        f.setForeground(QtCore.Qt.lightGray)
        r.setPattern("<!DOCTYPE.*>")
        self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))
        r.setPattern("<\\?xml.*\\?>")
        self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))

        self.commentFormat.setFontItalic(True)
        self.commentFormat.setForeground(QtCore.Qt.darkGray)

        # part to select an XML block
        self._current_mark_range = (-1, -1)  # absolute (start, end) positions
Example #4
0
  def __init__(self, filename, parent=None):
    self.parent = parent
    QtGui.QTextEdit.__init__(self, parent)
    self.setObjectName(' - '.join(['Editor', filename]))
    font = QtGui.QFont()
    font.setFamily("Fixed".decode("utf-8"))
    font.setPointSize(12)
    self.setFont(font)
    self.setLineWrapMode(QtGui.QTextEdit.NoWrap)
    self.setTabStopWidth(25)
    self.setAcceptRichText(False)
    self.setCursorWidth(2)
    self.setFontFamily("courier new")
    self.setProperty("backgroundVisible", True)
    self.regexp_list = [QtCore.QRegExp("\\binclude\\b"), QtCore.QRegExp("\\btextfile\\b"),
                        QtCore.QRegExp("\\bfile\\b"), QtCore.QRegExp("\\bvalue=.*pkg:\/\/\\b"),
                        QtCore.QRegExp("\\bvalue=.*package:\/\/\\b"),
                        QtCore.QRegExp("\\bvalue=.*\$\(find\\b")]
    self.filename = filename
    self.file_info = None
    if self.filename:
      f = QtCore.QFile(filename);
      if f.open(QtCore.QIODevice.ReadOnly | QtCore.QIODevice.Text):
        self.file_info = QtCore.QFileInfo(filename)
        self.setText(unicode(f.readAll(), "utf-8"))

    self.path = '.'
    # enables drop events
    self.setAcceptDrops(True)
 def load(self, argv):
     '''
 @param argv: the list with argv parameter needed to load the launch file. 
              The name and value are separated by C{:=}
 @type argv: C{[str]}
 @return True, if the launch file was loaded
 @rtype boolean
 @raise LaunchConfigException: on load errors
 '''
     try:
         roscfg = roslaunch.ROSLaunchConfig()
         loader = roslaunch.XmlLoader()
         self.argv = self.resolveArgs(argv)
         loader.load(self.Filename, roscfg, verbose=False, argv=self.argv)
         self.__roscfg = roscfg
         nm.file_watcher().add_launch(self.__masteruri, self.__launchFile,
                                      self.__launch_id,
                                      self.getIncludedFiles(self.Filename))
         if not nm.is_local(nm.nameres().getHostname(self.__masteruri)):
             files = self.getIncludedFiles(
                 self.Filename,
                 regexp_list=[
                     QtCore.QRegExp("\\bdefault\\b"),
                     QtCore.QRegExp("\\bvalue=.*pkg:\/\/\\b"),
                     QtCore.QRegExp("\\bvalue=.*package:\/\/\\b"),
                     QtCore.QRegExp("\\bvalue=.*\$\(find\\b")
                 ])
             nm.file_watcher_param().add_launch(self.__masteruri,
                                                self.__launchFile,
                                                self.__launch_id, files)
     except roslaunch.XmlParseException, e:
         test = list(
             re.finditer(r"environment variable '\w+' is not set", str(e)))
         message = str(e)
         if test:
             message = ''.join([
                 message, '\n',
                 'environment substitution is not supported, use "arg" instead!'
             ])
         raise LaunchConfigException(message)
Example #6
0
    def __init__(self, parent=None):
        QtGui.QSyntaxHighlighter.__init__(self, parent)
        self.rules = []
        self.commentStart = QtCore.QRegExp("#")
        self.commentEnd = QtCore.QRegExp("\n|\r")
        self.default_format = QtGui.QTextCharFormat()
        self.default_format.setForeground(QtGui.QColor(24, 24, 24))
        self.commentFormat = QtGui.QTextCharFormat()
        self.commentFormat.setFontItalic(True)
        self.commentFormat.setForeground(QtCore.Qt.darkGray)

        f = QtGui.QTextCharFormat()
        r = QtCore.QRegExp()
        r.setMinimal(True)
        f.setFontWeight(QtGui.QFont.Normal)
        f.setForeground(QtCore.Qt.blue)
        tagList = ["\\btrue\\b", "\\bfalse\\b"]
        for tag in tagList:
            r.setPattern(tag)
            self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))

        f.setForeground(QtGui.QColor(127, 64, 127))
        r.setPattern("\\d+")
        self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))

        f.setForeground(QtCore.Qt.darkBlue)
        r.setPattern("^\s*[_.\w]*\s*:")
        self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))

        f.setForeground(QtCore.Qt.darkBlue)
        r.setPattern(":\s*:[_\.\w]*$|:\s*\@[_\.\w]*$")
        self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))

        f.setFontWeight(QtGui.QFont.Bold)
        f.setForeground(QtCore.Qt.darkRed)
        r.setPattern("^\s*-")
        self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))

        f.setForeground(QtCore.Qt.darkRed)
        r.setPattern("^---$")
        self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))

        f.setForeground(QtCore.Qt.darkGreen)
        r.setPattern("[\[\]\{\}\,]")
        self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))

        f.setFontWeight(QtGui.QFont.Normal)
        f.setForeground(QtCore.Qt.magenta)
        r.setPattern("\".*\"|\'.*\'")
        self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))

        f.setForeground(QtGui.QColor(127, 64, 127))
        r.setPattern("\\$\\(.*\\)")
        self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))

        f.setForeground(QtCore.Qt.lightGray)
        r.setPattern("<!DOCTYPE.*>")
        self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))
        r.setPattern("<\\?xml.*\\?>")
        self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))
Example #7
0
    def __init__(self, input_id):
        super(InputWidget, self).__init__()

        self._id = input_id

        self.setLayout(QtWidgets.QHBoxLayout())

        self._id_label = QtWidgets.QLabel("Input " + str(self._id))
        self.layout().addWidget(self._id_label)

        # ---- Input port input ----

        self._input_port_input = QtWidgets.QLineEdit()
        self.port_validator = QtGui.QRegExpValidator(QtCore.QRegExp("[a-z]+[0-9]+"))
        self._input_port_input.setValidator(self.port_validator)
        self.layout().addWidget(self._input_port_input)

        self._input_port_input.setText(str(rospy.get_param(self.get_param_base() + "input", "js" + str(self._id))))
        self._input_port_input.textChanged.connect(self.change_input_port)

        # ---- /Input selector ----

        # ---- Type selector ----

        self._type_selector = QtWidgets.QComboBox()
        self.layout().addWidget(self._type_selector)

        self._type_selector.insertItem(0, "xbox ewoud")
        self._type_selector.insertItem(0, "xbox vision")
        self._type_selector.insertItem(0, "playstation")
        self._type_selector.insertItem(0, "gioteck")

        currentJoyType = rospy.get_param(self.get_param_base() + "joyType", "gioteck");
        self._type_selector.setCurrentIndex(self._type_selector.findText(currentJoyType))

        self._type_selector.currentIndexChanged.connect(self.change_input_type)

        # ---- /Type selector ----

        self._robot_id_label = QtWidgets.QLabel("Robot id")
        self.layout().addWidget(self._robot_id_label)

        # --- Robot id input ----

        self._robot_id_input = QtWidgets.QLineEdit()
        self.int_validator = QtGui.QRegExpValidator(QtCore.QRegExp("[0-9]+"))
        self._robot_id_input.setValidator(self.int_validator)
        self.layout().addWidget(self._robot_id_input)

        self._robot_id_input.setText(str(rospy.get_param(self.get_param_base() + "robot", int(self._id))))
        self._robot_id_input.textChanged.connect(self.change_bot_id)

        # --- /Robot id input ----

        # --- Mode selector ----

        self._mode_selector = QtWidgets.QComboBox()
        self.layout().addWidget(self._mode_selector)

        self._mode_selector.insertItem(0, "our keeper")
        self._mode_selector.insertItem(0, "normal")

        currentMode = rospy.get_param(self.get_param_base() + "mode", "normal");
        self._mode_selector.setCurrentIndex(self._mode_selector.findText(currentMode))

        self._mode_selector.currentIndexChanged.connect(self.change_input_mode)
 def set_package_filter(self, text):
     self.launchlist_proxyModel.setFilterRegExp(
         QtCore.QRegExp(text, QtCore.Qt.CaseInsensitive,
                        QtCore.QRegExp.Wildcard))