Exemplo n.º 1
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)
Exemplo n.º 2
0
 def on_editor_textChanged(self):
   '''
   If the content was changed, a '*' will be shown in the tab name.
   '''
   tab_name = self.__getTabName(self.tabWidget.currentWidget().filename)
   if (self.tabWidget.currentWidget().document().isModified()) or not QtCore.QFileInfo(self.tabWidget.currentWidget().filename).exists():
     tab_name = ''.join(['*', tab_name])
   self.tabWidget.setTabText(self.tabWidget.currentIndex(), tab_name)
Exemplo n.º 3
0
 def focusInEvent(self, event):
   # check for file changes
   try:
     if self.filename and self.file_info:
       if self.file_info.lastModified() != QtCore.QFileInfo(self.filename).lastModified():
         self.file_info = QtCore.QFileInfo(self.filename)
         result = QtGui.QMessageBox.question(self, "File changed", "File was changed, reload?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
         if result == QtGui.QMessageBox.Yes:
           f = QtCore.QFile(self.filename);
           if f.open(QtCore.QIODevice.ReadOnly | QtCore.QIODevice.Text):
             self.setText(unicode(f.readAll(), "utf-8"))
             self.document().setModified(False)
             self.textChanged.emit()
           else:
             QtGui.QMessageBox.critical(self, "Error", "Cannot open launch file%s"%self.filename)
   except:
     pass
   QtGui.QTextEdit.focusInEvent(self, event)
Exemplo n.º 4
0
  def save(self, force=False):
    '''
    Saves changes to the file.
    :return: saved, errors, msg
    :rtype: bool, bool, str
    '''
    if force or self.document().isModified() or not QtCore.QFileInfo(self.filename).exists():
      f = QtCore.QFile(self.filename)
      if f.open(QtCore.QIODevice.WriteOnly | QtCore.QIODevice.Text):
        f.write(self.toPlainText().encode('utf-8'))
        self.document().setModified(False)
        self.file_info = QtCore.QFileInfo(self.filename)

        ext = os.path.splitext(self.filename)
        # validate the xml structure of the launch files
        if ext[1] in self.CONTEXT_FILE_EXT:
          imported = False
          try:
            from lxml import etree
            imported = True
            parser = etree.XMLParser()
            etree.fromstring(self.toPlainText().encode('utf-8'), parser)
          except Exception as e:
            if imported:
              self.markLine(e.position[0])
              return True, True, "%s"%e
        # validate the yaml structure of yaml files
        elif ext[1] in self.YAML_VALIDATION_FILES:
          try:
            import yaml
            yaml.load(self.toPlainText().encode('utf-8'))
          except yaml.MarkedYAMLError as e:
            return True, True, "%s"%e
        return True, False, ''
      else:
        return False, True, "Cannot write XML file"
    return False, False, ''
Exemplo n.º 5
0
 def stripped_name(self, full_name):
     return QtCore.QFileInfo(full_name).fileName()