def convert(name, editor, to_collapse): ti = QtWidgets.QTreeWidgetItem() ti.setText(0, name.name) if isinstance(name.icon, list): icon = QtGui.QIcon.fromTheme(name.icon[0], QtGui.QIcon(name.icon[1])) else: icon = QtGui.QIcon(name.icon) ti.setIcon(0, icon) name.block = editor.document().findBlockByNumber(name.line) ti.setData(0, QtCore.Qt.UserRole, name) ti.setToolTip(0, name.description) name.tree_item = ti block_data = name.block.userData() if block_data is None: block_data = TextBlockUserData() name.block.setUserData(block_data) block_data.tree_item = ti if to_collapse is not None and \ TextBlockHelper.is_collapsed(name.block): to_collapse.append(ti) for ch in name.children: ti_ch, to_collapse = convert(ch, editor, to_collapse) if ti_ch: ti.addChild(ti_ch) return ti, to_collapse
def convert(name, editor, to_collapse): ti = QtWidgets.QTreeWidgetItem() ti.setText(0, name.name) if isinstance(name.icon, list): icon = QtGui.QIcon.fromTheme( name.icon[0], QtGui.QIcon(name.icon[1])) else: icon = QtGui.QIcon(name.icon) ti.setIcon(0, icon) name.block = editor.document().findBlockByNumber(name.line) ti.setData(0, QtCore.Qt.UserRole, name) ti.setToolTip(0, name.description) block_data = name.block.userData() if block_data is None: block_data = TextBlockUserData() name.block.setUserData(block_data) block_data.tree_item = ti if to_collapse is not None and \ TextBlockHelper.is_collapsed(name.block): to_collapse.append(ti) for ch in name.children: ti_ch, to_collapse = convert(ch, editor, to_collapse) if ti_ch: ti.addChild(ti_ch) return ti, to_collapse
def convert(name, editor, to_collapse): ti = QtWidgets.QTreeWidgetItem() ti.setText(0, name.name) ti.setIcon(0, QtGui.QIcon(name.icon)) name.block = editor.document().findBlockByNumber(name.line) ti.setData(0, QtCore.Qt.UserRole, name) block_data = name.block.userData() if block_data is None: block_data = TextBlockUserData() name.block.setUserData(block_data) block_data.tree_item = ti if to_collapse is not None and \ TextBlockHelper.get_fold_trigger_state(name.block): to_collapse.append(ti) for ch in name.children: ti_ch, to_collapse = convert(ch, editor, to_collapse) if ti_ch: ti.addChild(ti_ch) return ti, to_collapse
def _convert_name(self, name, editor): ti = QtWidgets.QTreeWidgetItem() ti.setText(0, name.name) ti.setIcon(0, QtGui.QIcon(ICONS[name.node_type])) ti.setToolTip(0, name.description) name.block = editor.document().findBlockByNumber(name.line) ti.setData(0, QtCore.Qt.UserRole, name) block_data = name.block.userData() if block_data is None: block_data = TextBlockUserData() name.block.setUserData(block_data) block_data.tree_item = ti if TextBlockHelper.get_fold_trigger_state(name.block): self._to_collapse.append(ti) for child in name.children: ti_ch = self._convert_name(child, editor) ti.addChild(ti_ch) return ti
def add_marker(self, marker): """ Adds the marker to the panel. :param marker: Marker to add :type marker: pyqode.core.modes.Marker """ key, val = self.make_marker_icon(marker.icon) if key and val: self._icons[key] = val self._markers.append(marker) doc = self.editor.document() assert isinstance(doc, QtGui.QTextDocument) block = doc.findBlockByLineNumber(marker.position - 1) user_data = block.userData() if user_data is None: user_data = TextBlockUserData() block.setUserData(user_data) marker.panel_ref = self user_data.markers.append(marker) self.repaint()
def _add_batch(self): if self.editor is None: return for i in range(10): if not len(self._pending_msg): # all pending message added self._finished = True _logger(self.__class__).log(5, 'finished') self.editor.repaint() return False message = self._pending_msg.pop(0) if message.line >= 0: try: usd = message.block.userData() except AttributeError: message.block = self.editor.document().findBlockByNumber( message.line) usd = message.block.userData() if usd is None: usd = TextBlockUserData() message.block.setUserData(usd) # check if the same message already exists if message in usd.messages: continue self._messages.append(message) usd.messages.append(message) tooltip = None if self._show_tooltip: tooltip = message.description message.decoration = TextDecoration(self.editor.textCursor(), start_line=message.line, tooltip=tooltip, draw_order=3) message.decoration.set_full_width() message.decoration.set_as_error( color=QtGui.QColor(message.color)) self.editor.decorations.append(message.decoration) QtCore.QTimer.singleShot(1, self._add_batch) self.editor.repaint() return True