def _refill_tree(self, included_from, includes, create_tree=True):
     deep = 0
     file_dsrc = self._root_path
     try:
         file_dsrc = os.path.basename(self._root_path)
     except Exception:
         pass
     self.setWindowTitle("Include Graph - %s" % file_dsrc)
     if not self._created_tree and create_tree:
         with CHACHE_MUTEX:
             if self._root_path in GRAPH_CACHE:
                 pkg, _ = package_name(os.path.dirname(self._root_path))
                 itemstr = '%s [%s]' % (os.path.basename(self._root_path), pkg)
                 inc_item = QStandardItem('%s' % itemstr)
                 inc_item.setData(self._root_path, self.DATA_FILE)
                 inc_item.setData(-1, self.DATA_LINE)
                 inc_item.setData(self._root_path, self.DATA_INC_FILE)
                 inc_item.setData(deep, self.DATA_LEVEL)
                 self._append_items(inc_item, deep + 1)
                 self.graphTreeView.model().appendRow(inc_item)
                 # self.graphTreeView.expand(self.graphTreeView.model().indexFromItem(inc_item))
             self._created_tree = True
     items = self.graphTreeView.model().match(self.graphTreeView.model().index(0, 0), self.DATA_INC_FILE, self._current_path, 10, Qt.MatchRecursive)
     first = True
     self.graphTreeView.selectionModel().clearSelection()
     for item in items:
         if first:
             self._current_deep = item.data(self.DATA_LEVEL)
             self.graphTreeView.selectionModel().select(item, QItemSelectionModel.SelectCurrent)
             first = False
         else:
             self.graphTreeView.selectionModel().select(item, QItemSelectionModel.Select)
     self.graphTreeView.expandAll()
 def setData(self, value, role=Qt.EditRole):
     if role == Qt.EditRole:
         self._value = value
         if hasattr(self._settings, self._attrname):
             setattr(self._settings, self._attrname, value)
             if self._need_restart:
                 MessageBox.information(None, "restart Node Manager", "This parameter change is only valid after restart!")
     return QStandardItem.setData(self, value, role)
 def setData(self, value, role=Qt.EditRole):
     if role == Qt.EditRole:
         # rename the file or folder
         if self.name != value and self.id in [self.RECENT_FILE, self.LAUNCH_FILE, self.CFG_FILE, self.FOLDER]:
             new_path = os.path.join(os.path.dirname(self.path), value)
             if not os.path.exists(new_path):
                 os.rename(self.path, new_path)
                 self.name = value
                 self.path = new_path
             else:
                 WarningMessageBox(QMessageBox.Warning, "Path already exists",
                                   "`%s` already exists!" % value, "Complete path: %s" % new_path).exec_()
     return QStandardItem.setData(self, value, role)
Esempio n. 4
0
 def setData(self, value, role=Qt.EditRole):
     if role == Qt.EditRole:
         # rename the file or folder
         if self.name != value and self.id in [self.RECENT_FILE, self.LAUNCH_FILE, self.CFG_FILE, self.FOLDER]:
             new_path = os.path.join(os.path.dirname(self.path), value)
             if not os.path.exists(new_path):
                 os.rename(self.path, new_path)
                 self.name = value
                 self.path = new_path
             else:
                 WarningMessageBox(QMessageBox.Warning, "Path already exists",
                                   "`%s` already exists!" % value, "Complete path: %s" % new_path).exec_()
     return QStandardItem.setData(self, value, role)
Esempio n. 5
0
 def _append_items(self, item, deep):
     path = item.data(self.DATA_INC_FILE)
     if not path:
         path = item.data(self.DATA_FILE)
     if path in GRAPH_CACHE:
         for inc_lnr, inc_path in GRAPH_CACHE[path]:
             pkg, _ = package_name(os.path.dirname(inc_path))
             itemstr = '%s [%s]' % (os.path.basename(inc_path), pkg)
             inc_item = QStandardItem('%d: %s' % (inc_lnr + 1, itemstr))
             inc_item.setData(path, self.DATA_FILE)
             inc_item.setData(inc_lnr + 1, self.DATA_LINE)
             inc_item.setData(inc_path, self.DATA_INC_FILE)
             inc_item.setData(deep, self.DATA_LEVEL)
             self._append_items(inc_item, deep + 1)
             item.appendRow(inc_item)
 def _append_items(self, item, deep):
     path = item.data(self.DATA_INC_FILE)
     if not path:
         path = item.data(self.DATA_FILE)
     if path in GRAPH_CACHE:
         for inc_lnr, inc_path in GRAPH_CACHE[path]:
             pkg, _ = package_name(os.path.dirname(inc_path))
             itemstr = '%s [%s]' % (os.path.basename(inc_path), pkg)
             inc_item = QStandardItem('%d: %s' % (inc_lnr + 1, itemstr))
             inc_item.setData(path, self.DATA_FILE)
             inc_item.setData(inc_lnr + 1, self.DATA_LINE)
             inc_item.setData(inc_path, self.DATA_INC_FILE)
             inc_item.setData(deep, self.DATA_LEVEL)
             self._append_items(inc_item, deep + 1)
             item.appendRow(inc_item)
 def setData(self, value, role=Qt.EditRole):
     if role == Qt.EditRole:
         # rename the file or folder
         if self.name != value and self.id in [self.RECENT_FILE, self.LAUNCH_FILE, self.RECENT_PROFILE, self.PROFILE, self.CFG_FILE, self.FOLDER]:
             new_path = os.path.join(os.path.dirname(self.path), value)
             if not os.path.exists(new_path):
                 os.rename(self.path, new_path)
                 if self.name != value and self.id in [self.RECENT_FILE, self.RECENT_PROFILE]:
                     # update in history
                     nm.settings().launch_history_add(new_path, replace=self.path)
                 self.name = value
                 self.path = new_path
             else:
                 MessageBox.warning(self, "Path already exists",
                                    "`%s` already exists!" % value, "Complete path: %s" % new_path)
     return QStandardItem.setData(self, value, role)
 def setData(self, value, role=Qt.EditRole):
     if role == Qt.EditRole:
         # rename the file or folder
         if self.name != value and self.id in [self.RECENT_FILE, self.LAUNCH_FILE, self.RECENT_PROFILE, self.PROFILE, self.CFG_FILE, self.FOLDER]:
             new_path = os.path.join(os.path.dirname(self.path), value)
             if not os.path.exists(new_path):
                 os.rename(self.path, new_path)
                 if self.name != value and self.id in [self.RECENT_FILE, self.RECENT_PROFILE]:
                     # update in history
                     nm.settings().launch_history_add(new_path, replace=self.path)
                 self.name = value
                 self.path = new_path
             else:
                 MessageBox.warning(self, "Path already exists",
                                    "`%s` already exists!" % value, "Complete path: %s" % new_path)
     return QStandardItem.setData(self, value, role)
Esempio n. 9
0
 def _refill_tree(self, included_from, includes, create_tree=True):
     deep = 0
     file_dsrc = self._root_path
     try:
         file_dsrc = os.path.basename(self._root_path)
     except Exception:
         pass
     self.setWindowTitle("Include Graph - %s" % file_dsrc)
     if not self._created_tree and create_tree:
         with CHACHE_MUTEX:
             if self._root_path in GRAPH_CACHE:
                 pkg, _ = package_name(os.path.dirname(self._root_path))
                 itemstr = '%s [%s]' % (os.path.basename(
                     self._root_path), pkg)
                 inc_item = QStandardItem('%s' % itemstr)
                 inc_item.setData(self._root_path, self.DATA_FILE)
                 inc_item.setData(-1, self.DATA_LINE)
                 inc_item.setData(self._root_path, self.DATA_INC_FILE)
                 inc_item.setData(deep, self.DATA_LEVEL)
                 self._append_items(inc_item, deep + 1)
                 self.graphTreeView.model().appendRow(inc_item)
                 # self.graphTreeView.expand(self.graphTreeView.model().indexFromItem(inc_item))
             self._created_tree = True
     items = self.graphTreeView.model().match(
         self.graphTreeView.model().index(0, 0), self.DATA_INC_FILE,
         self._current_path, 10, Qt.MatchRecursive)
     first = True
     self.graphTreeView.selectionModel().clearSelection()
     for item in items:
         if first:
             self._current_deep = item.data(self.DATA_LEVEL)
             self.graphTreeView.selectionModel().select(
                 item, QItemSelectionModel.SelectCurrent)
             first = False
         else:
             self.graphTreeView.selectionModel().select(
                 item, QItemSelectionModel.Select)
     self.graphTreeView.expandAll()
Esempio n. 10
0
 def _refill_tree(self, tree, create_tree=True):
     deep = 0
     file_dsrc = self._root_path
     try:
         file_dsrc = os.path.basename(self._root_path)
     except Exception:
         pass
     self.setWindowTitle("Include Graph - %s" % file_dsrc)
     if not self._created_tree and create_tree:
         has_none_packages = False
         self.graphTreeView.model().clear()
         pkg, _ = package_name(os.path.dirname(self._root_path))
         if pkg is None:
             has_none_packages = True
         itemstr = '%s [%s]' % (os.path.basename(self._root_path), pkg)
         inc_item = QStandardItem('%s' % itemstr)
         inc_item.setData(self._root_path, self.DATA_FILE)
         inc_item.setData(-1, self.DATA_LINE)
         inc_item.setData(self._root_path, self.DATA_INC_FILE)
         inc_item.setData(deep, self.DATA_LEVEL)
         self._append_items(inc_item, deep, tree)
         self.graphTreeView.model().appendRow(inc_item)
         # self.graphTreeView.expand(self.graphTreeView.model().indexFromItem(inc_item))
         self._created_tree = True
         self.has_none_packages = has_none_packages
     items = self.graphTreeView.model().match(
         self.graphTreeView.model().index(0, 0), self.DATA_INC_FILE,
         self._current_path, 10, Qt.MatchRecursive)
     first = True
     self.graphTreeView.selectionModel().clear()
     for item in items:
         if first:
             self._current_deep = item.data(self.DATA_LEVEL)
             first = False
         self.graphTreeView.selectionModel().select(
             item, QItemSelectionModel.Select)
     self.graphTreeView.expandAll()
     self.finished_signal.emit()
Esempio n. 11
0
 def setData(self, value, role=Qt.EditRole):
     if role == Qt.EditRole:
         # rename the file or folder
         if (self.name != value or self._isnew) and self.id in [
                 self.RECENT_FILE, self.LAUNCH_FILE, self.RECENT_PROFILE,
                 self.PROFILE, self.CFG_FILE, self.FOLDER
         ]:
             if self.name != value:
                 # some sanity checks
                 if self.model()._exists(value):
                     result = MessageBox.question(
                         self.model().viewobj,
                         "File exists",
                         "File '%s' exists. Override?" % value,
                         buttons=MessageBox.Yes | MessageBox.No)
                     if result == MessageBox.No:
                         return QStandardItem.setData(self, value, role)
                 if self.id not in [self.FOLDER]:
                     _filename, file_extension = os.path.splitext(value)
                     if file_extension not in nm.settings(
                     ).launch_view_file_ext:
                         result = MessageBox.question(
                             self.model().viewobj,
                             "Unknown extension",
                             "New name has unknown extension '%s'. Rename anyway?"
                             % file_extension,
                             buttons=MessageBox.Yes | MessageBox.No)
                         if result == MessageBox.No:
                             return QStandardItem.setData(self, value, role)
             new_path = os.path.join(os.path.dirname(self.path), value)
             try:
                 # save a new file or rename existing file?
                 content = b''
                 new_id = self._identify_path_on_ext(new_path, self.id)
                 if self._isnew:
                     if new_id in [self.FOLDER]:
                         nm.nmd().file.new(new_path, 1)
                     elif new_id in [self.LAUNCH_FILE]:
                         content = (
                             b'<launch>\n'
                             b'    <arg name="robot_ns" default="my_robot"/>\n'
                             b'    <group ns="$(arg robot_ns)">\n'
                             b'        <node pkg="my_pkg" type="my_node" name="my_name" >\n'
                             b'            <param name="capability_group" value="MY_GROUP"/>\n'
                             b'        </node>\n'
                             b'    </group>\n'
                             b'</launch>\n')
                         nm.nmd().file.save_file(new_path, content, 0)
                     else:
                         nm.nmd().file.new(new_path, 0)
                     self._isnew = False
                 else:
                     nm.nmd().file.rename(self.path, new_path)
                 # check for new file extension
                 if new_id != self.id:
                     self.id = new_id
                     self._update_icon()
                 if self.name != value and self.id in [
                         self.RECENT_FILE, self.RECENT_PROFILE
                 ]:
                     # update in history
                     nm.settings().launch_history_add(new_path,
                                                      replace=self.path)
                 self.name = value
                 self._path = new_path
             except Exception as err:
                 import traceback
                 rospy.logwarn("Error while save new file: %s" %
                               traceback.format_exc())
                 MessageBox.warning(None, "Rename failed", utf8(err))
     return QStandardItem.setData(self, value, role)
Esempio n. 12
0
 def _append_items(self, item, deep, items=[]):
     sub_items = []
     inc_item = None
     for inc_file in items:
         if inc_file.rec_depth == deep:
             if inc_item is not None:
                 if sub_items:
                     self._append_items(inc_item, deep + 1, sub_items)
                     sub_items = []
                 item.appendRow(inc_item)
                 inc_item = None
             if inc_item is None:
                 pkg, _ = package_name(os.path.dirname(inc_file.inc_path))
                 size_color = 'gray'
                 if inc_file.size == 0 or inc_file.size > 1000000:
                     size_color = 'orange'
                 itemstr = '%s   <span style="color:%s;"><em>%s</em></span>   [%s]' % (os.path.basename(inc_file.inc_path), size_color, sizeof_fmt(inc_file.size), pkg)
                 inc_item = QStandardItem('%d: %s' % (inc_file.line_number, itemstr))
                 inc_item.setData(self.ITEM_TYPE_INC_FILE, self.ITEM_TYPE)
                 inc_item.setData(inc_file.path_or_str, self.DATA_FILE)
                 inc_item.setData(inc_file.line_number, self.DATA_LINE)
                 inc_item.setData(inc_file.inc_path, self.DATA_INC_FILE)
                 inc_item.setData(inc_file.rec_depth + 1, self.DATA_LEVEL)
                 inc_item.setData(inc_file.size, self.DATA_SIZE)
                 inc_item.setData(inc_file.raw_inc_path, self.DATA_RAW)
                 inc_item.setData(inc_file.args, self.DATA_ARGS)
                 inc_item.setData(inc_file.unset_default_args, self.DATA_DEF_ARGS_NOT_SET)
                 # add included arguments
                 if inc_file.unset_default_args or inc_file.args:
                     arg_item = QStandardItem('arguments')
                     arg_item.setData(self.ITEM_TYPE_INC_GROUP_ARG, self.ITEM_TYPE)
                     if inc_file.unset_default_args:
                         self.has_warnings = True
                         arg_item.setIcon(self._info_icon)
                         for da_name, da_value in inc_file.unset_default_args.items():
                             da_item = QStandardItem('<arg_not_set>%s: %s' % (da_name, da_value))
                             da_item.setData(self.ITEM_TYPE_INC_ARG, self.ITEM_TYPE)
                             da_item.setData(inc_file.path_or_str, self.DATA_FILE)
                             da_item.setData(inc_file.inc_path, self.DATA_INC_FILE)
                             da_item.setData(da_name, self.DATA_ARG_NAME)
                             da_item.setToolTip("This argument is definded as default, but no set while include.")
                             arg_item.appendRow(da_item)
                     if inc_file.args:
                         for da_name, da_value in inc_file.args.items():
                             da_item = QStandardItem('<arg>%s: %s' % (da_name, da_value))
                             da_item.setData(self.ITEM_TYPE_INC_ARG, self.ITEM_TYPE)
                             da_item.setData(inc_file.path_or_str, self.DATA_FILE)
                             da_item.setData(inc_file.inc_path, self.DATA_INC_FILE)
                             da_item.setData(da_name, self.DATA_ARG_NAME)
                             arg_item.appendRow(da_item)
                     inc_item.appendRow(arg_item)
         elif inc_file.rec_depth > deep:
             sub_items.append(inc_file)
     if inc_item is not None:
         if sub_items:
             self._append_items(inc_item, deep + 1, sub_items)
             sub_items = []
         item.appendRow(inc_item)
         inc_item = None
Esempio n. 13
0
 def _refill_tree(self, tree, create_tree=True):
     deep = 0
     file_dsrc = self._root_path
     try:
         file_dsrc = os.path.basename(self._root_path)
     except Exception:
         pass
     self.setWindowTitle("Include Graph - %s" % file_dsrc)
     if not self._created_tree and create_tree:
         has_none_packages = False
         self.graphTreeView.model().clear()
         pkg, _ = package_name(os.path.dirname(self._root_path))
         if pkg is None:
             has_none_packages = True
         itemstr = '%s [%s]' % (os.path.basename(self._root_path), pkg)
         inc_item = QStandardItem('%s' % itemstr)
         inc_item.setData(self.ITEM_TYPE_INC_FILE, self.ITEM_TYPE)
         inc_item.setData(self._root_path, self.DATA_FILE)
         inc_item.setData(-1, self.DATA_LINE)
         inc_item.setData(self._root_path, self.DATA_INC_FILE)
         inc_item.setData(deep, self.DATA_LEVEL)
         # add included arguments for root file
         launch_args = nm.nmd().launch.launch_args(self._root_path)
         if launch_args:
             arg_item = QStandardItem('arguments')
             arg_item.setData(self.ITEM_TYPE_INC_GROUP_ARG, self.ITEM_TYPE)
             for da_name, da_value in launch_args.items():
                 da_item = QStandardItem('<arg>%s: %s' % (da_name, da_value))
                 da_item.setData(self.ITEM_TYPE_INC_ARG, self.ITEM_TYPE)
                 da_item.setData(self._root_path, self.DATA_FILE)
                 da_item.setData(da_name, self.DATA_ARG_NAME)
                 arg_item.appendRow(da_item)
             inc_item.appendRow(arg_item)
         self._append_items(inc_item, deep, tree)
         self.graphTreeView.model().appendRow(inc_item)
         # self.graphTreeView.expand(self.graphTreeView.model().indexFromItem(inc_item))
         self._created_tree = True
         self.has_none_packages = has_none_packages
     items = self.graphTreeView.model().match(self.graphTreeView.model().index(0, 0), self.DATA_INC_FILE, self._current_path, 10, Qt.MatchRecursive)
     first = True
     self.graphTreeView.selectionModel().clear()
     for item in items:
         if first:
             self._current_deep = item.data(self.DATA_LEVEL)
             first = False
         self.graphTreeView.selectionModel().select(item, QItemSelectionModel.Select)
     self.graphTreeView.expandAll()
     # collapse argument nodes
     proxy = self.graphTreeView.model()
     for row in range(proxy.rowCount()):
         index = proxy.index(row, 0)
         item = proxy.itemFromIndex(index)
         self._collapse_args(item)
     self.finished_signal.emit()
Esempio n. 14
0
 def setData(self, value, role=Qt.EditRole):
     if role == Qt.EditRole:
         self._value = value
         if hasattr(self._settings, self._attrname):
             setattr(self._settings, self._attrname, value)
     return QStandardItem.setData(self, value, role)
Esempio n. 15
0
 def _append_items(self, item, deep, items=[]):
     sub_items = []
     inc_item = None
     for inc_file in items:
         if inc_file.rec_depth == deep:
             if inc_item is not None:
                 if sub_items:
                     self._append_items(inc_item, deep + 1, sub_items)
                     sub_items = []
                 item.appendRow(inc_item)
                 inc_item = None
             if inc_item is None:
                 pkg, _ = package_name(os.path.dirname(inc_file.inc_path))
                 size_color = 'gray'
                 if inc_file.size == 0 or inc_file.size > 1000000:
                     size_color = 'orange'
                 itemstr = '%s   <span style="color:%s;"><em>%s</em></span>   [%s]' % (
                     os.path.basename(inc_file.inc_path), size_color,
                     sizeof_fmt(inc_file.size), pkg)
                 inc_item = QStandardItem('%d: %s' %
                                          (inc_file.line_number, itemstr))
                 inc_item.setData(inc_file.path_or_str, self.DATA_FILE)
                 inc_item.setData(inc_file.line_number, self.DATA_LINE)
                 inc_item.setData(inc_file.inc_path, self.DATA_INC_FILE)
                 inc_item.setData(inc_file.rec_depth + 1, self.DATA_LEVEL)
                 inc_item.setData(inc_file.size, self.DATA_SIZE)
                 inc_item.setData(inc_file.raw_inc_path, self.DATA_RAW)
                 inc_item.setData(inc_file.args, self.DATA_ARGS)
         elif inc_file.rec_depth > deep:
             sub_items.append(inc_file)
     if inc_item is not None:
         if sub_items:
             self._append_items(inc_item, deep + 1, sub_items)
             sub_items = []
         item.appendRow(inc_item)
         inc_item = None
Esempio n. 16
0
 def setData(self, value, role=Qt.EditRole):
     if role == Qt.EditRole:
         self._value = value
         if hasattr(self._settings, self._attrname):
             setattr(self._settings, self._attrname, value)
     return QStandardItem.setData(self, value, role)