コード例 #1
0
 def method(self):
     """ """
     ctrl.release_editor_focus()
     node = self.get_host()
     if isinstance(node, Edge):
         node = node.end
     ctrl.free_drawing.add_sibling_for_constituentnode(node, add_left=False)
コード例 #2
0
ファイル: tree_edit.py プロジェクト: osagha/Kataja
 def method(self):
     """ """
     ctrl.release_editor_focus()
     node = self.get_host()
     ctrl.free_drawing.unary_add_child_for_constituentnode(node,
                                                           add_left=False)
     ctrl.forest.forest_edited()
コード例 #3
0
 def method(self):
     """ Remove selected node
     :return:
     """
     ctrl.release_editor_focus()
     node = self.get_host()
     ctrl.remove_from_selection(node)
     ctrl.free_drawing.delete_node(node, ignore_consequences=False)
コード例 #4
0
ファイル: tree_edit.py プロジェクト: osagha/Kataja
 def method(self):
     """ """
     ctrl.release_editor_focus()
     node = self.get_host()
     if isinstance(node, Edge):
         node = node.end
     ctrl.free_drawing.add_sibling_for_constituentnode(node, add_left=False)
     ctrl.forest.forest_edited()
コード例 #5
0
ファイル: tree_edit.py プロジェクト: osagha/Kataja
 def method(self):
     """ """
     ctrl.release_editor_focus()
     node = self.get_host()
     ctrl.free_drawing.merge_to_top(node.get_top_node(),
                                    node,
                                    merge_to_left=True)
     ctrl.forest.forest_edited()
コード例 #6
0
ファイル: tree_edit.py プロジェクト: osagha/Kataja
 def method(self):
     """ Remove selected node
     :return:
     """
     ctrl.release_editor_focus()
     node = self.get_host()
     ctrl.remove_from_selection(node)
     ctrl.free_drawing.delete_node(node, touch_edges=True)
     ctrl.forest.forest_edited()
コード例 #7
0
ファイル: actions.py プロジェクト: jpurma/Kataja
 def method(self, node_uid, left=True):
     """ Merge this node to left of topmost node of node's tree. It's internal merge!
     :param node_uid: int or str, node_uid for node to merge.
     """
     ctrl.release_editor_focus()
     node = ctrl.forest.nodes[node_uid]
     tops = node.get_highest()
     if len(tops) == 1:
         ctrl.drawing.merge_to_top(tops[0], node, merge_to_left=left)
         ctrl.forest.forest_edited()
コード例 #8
0
ファイル: tree_edit.py プロジェクト: jpurma/Kataja
 def method(self, node_uid: int):
     """ If triggered node is triangle node, restore it to normal
     :param node_uid: int or string, node's unique identifier
     :return: None
     """
     ctrl.release_editor_focus()
     node = ctrl.forest.nodes[node_uid]
     Triangle.remove_triangle_from(node)
     ctrl.deselect_objects()
     node.update_label()
コード例 #9
0
ファイル: tree_edit.py プロジェクト: jpurma/Kataja
 def method(self, node_uid):
     """ Turn triggering node into triangle node
     :param node_uid: int or string, node's unique identifier
     :return: None
     """
     ctrl.release_editor_focus()
     node = ctrl.forest.nodes[node_uid]
     Triangle.add_or_update_triangle_for(node)
     ctrl.deselect_objects()
     node.update_label()
コード例 #10
0
ファイル: actions.py プロジェクト: jpurma/Kataja
 def method(self, node_uid):
     """ Remove given node
     :param node_uid: int or string, node's unique identifier
     :return:
     """
     ctrl.release_editor_focus()
     node = ctrl.forest.nodes[node_uid]
     ctrl.remove_from_selection(node)
     ctrl.drawing.delete_node(node, touch_edges=True)
     ctrl.forest.forest_edited()
コード例 #11
0
ファイル: tree_edit.py プロジェクト: osagha/Kataja
 def method(self):
     """ """
     ctrl.release_editor_focus()
     top = self.get_host()
     label = ctrl.free_drawing.next_free_label()
     new_node = ctrl.free_drawing.create_node(label=label, relative=top)
     ctrl.free_drawing.merge_to_top(top,
                                    new_node,
                                    merge_to_left=False,
                                    pos=new_node.current_position)
     ctrl.forest.forest_edited()
コード例 #12
0
 def method(self):
     """ If triggered node is triangle node, restore it to normal
     :return: None
     """
     ctrl.release_editor_focus()
     node = self.get_host()
     if not node:
         return
     log.info('unfolding from %s' % node.as_bracket_string())
     ctrl.free_drawing.remove_triangle_from(node)
     ctrl.deselect_objects()
コード例 #13
0
ファイル: actions.py プロジェクト: jpurma/Kataja
 def method(self, node_uid):
     """ In cases where there another part of binary merge is removed,
     and a stub edge is left dangling, there is an option to remove the unnecessary
     merge -- this is the triggering host.
     :param node_uid: int or string, node's unique identifier
     :return: None
     """
     ctrl.release_editor_focus()
     node = ctrl.forest.nodes[node_uid]
     node.rotate_children()
     ctrl.forest.forest_edited()
コード例 #14
0
 def method(self):
     """ Turn triggering node into triangle node
     :return: None
     """
     ctrl.release_editor_focus()
     node = self.get_host()
     if not node:
         return
     log.info('folding in %s' % node.as_bracket_string())
     ctrl.free_drawing.add_triangle_to(node)
     node.update_label()
     ctrl.deselect_objects()
コード例 #15
0
ファイル: Label.py プロジェクト: osagha/Kataja
    def set_quick_editing(self, value):
        """  Toggle quick editing on and off for this label. Quick editing is toggled on when
        the label is clicked or navigated into with the keyboard. The label and its editor takes
        focus and many things behave differently while editing, so please keep make sure that
        quick editing is switched off properly, using this method.
        :param value:
        :return:
        """
        if value:
            if self._quick_editing:
                return
            self._quick_editing = True
            self._host.update_label_visibility()
            if ctrl.text_editor_focus:
                ctrl.release_editor_focus()
            ctrl.text_editor_focus = self
            self.editable_part.setTextInteractionFlags(
                QtCore.Qt.TextEditorInteraction)
            self.prepareGeometryChange()
            if self.is_card():
                self.editable_doc.setTextWidth(self.card_size[0])
            else:
                self.editable_doc.setTextWidth(-1)
            self.edited_field, self.editable_html = \
                self._host.compose_html_for_editing()
            self.setCursor(QtGui.QCursor(QtCore.Qt.IBeamCursor))

            ctrl.ui.add_quick_edit_buttons_for(self._host, self.editable_doc)
            self.editable_part.setHtml(self.editable_html)
            self.editable_doc.cursorPositionChanged.connect(
                self.cursor_position_changed)

            self.resize_label()
            self.editable_part.setAcceptDrops(True)
            ctrl.graph_view.setFocus()
            self.editable_part.setFocus()
            self._fresh_focus = True

        elif self._quick_editing:
            if self.editable_doc.isModified():
                self.parse_document_to_field()
                self.editable_doc.setModified(False)
            ctrl.text_editor_focus = None
            self._quick_editing = False
            ctrl.ui.remove_quick_edit_buttons()
            self._host.update_label()
            self.editable_part.setCursor(
                QtGui.QCursor(QtCore.Qt.PointingHandCursor))
            self.editable_part.setAcceptDrops(False)
            self.editable_part.setTextInteractionFlags(
                QtCore.Qt.NoTextInteraction)
            self.editable_part.clearFocus()
            self._fresh_focus = False
コード例 #16
0
ファイル: tree_edit.py プロジェクト: osagha/Kataja
 def method(self):
     """ If triggered node is triangle node, restore it to normal
     :return: None
     """
     ctrl.release_editor_focus()
     node = self.get_host()
     if not node:
         return
     log.info('unfolding from %s' % node.as_bracket_string())
     ctrl.free_drawing.remove_triangle_from(node)
     ctrl.deselect_objects()
     node.update_label()
コード例 #17
0
ファイル: tree_edit.py プロジェクト: osagha/Kataja
 def method(self):
     """ Turn triggering node into triangle node
     :return: None
     """
     ctrl.release_editor_focus()
     node = self.get_host()
     if not node:
         return
     log.info('folding in %s' % node.as_bracket_string())
     ctrl.free_drawing.add_or_update_triangle_for(node)
     ctrl.deselect_objects()
     node.update_label()
コード例 #18
0
 def method(self):
     """ In cases where there another part of binary merge is removed,
     and a stub edge is left dangling,
     there is an option to remove the unnecessary merge -- it is the
     triggering host.
     :return: None
     """
     ctrl.release_editor_focus()
     node = self.get_host()
     if not node:
         return
     ctrl.remove_from_selection(node)
     ctrl.free_drawing.delete_unnecessary_merger(node)
コード例 #19
0
ファイル: tree_edit.py プロジェクト: osagha/Kataja
 def method(self):
     """ In cases where there another part of binary merge is removed,
     and a stub edge is left dangling,
     there is an option to remove the unnecessary merge -- it is the
     triggering host.
     :return: None
     """
     ctrl.release_editor_focus()
     node = self.get_host()
     if not node:
         return
     ctrl.remove_from_selection(node)
     ctrl.free_drawing.delete_unnecessary_merger(node)
     ctrl.forest.forest_edited()
コード例 #20
0
    def update_label_shape(self):
        shape = ctrl.settings.get('label_shape')
        ctrl.release_editor_focus()
        for node in self.nodes.values():
            if node.node_type == g.CONSTITUENT_NODE:
                node.label_object.label_shape = shape
                node.label_object.update_label()

        parents = []
        for node in self.nodes.values():
            node.update_relations(parents)
        for parent in parents:
            parent.gather_children()
        self.prepare_width_map()
コード例 #21
0
    def set_quick_editing(self, value):
        """  Toggle quick editing on and off for this label. Quick editing is toggled on when
        the label is clicked or navigated into with the keyboard. The label and its editor takes
        focus and many things behave differently while editing, so please keep make sure that
        quick editing is switched off properly, using this method.
        :param value:
        :return:
        """
        if value:
            if self._quick_editing:
                return
            self._quick_editing = True
            self._host.update_label_visibility()
            if ctrl.text_editor_focus:
                ctrl.release_editor_focus()
            ctrl.text_editor_focus = self
            self.editable_part.setTextInteractionFlags(QtCore.Qt.TextEditorInteraction)
            self.prepareGeometryChange()
            if self.is_card():
                self.editable_doc.setTextWidth(self.card_size[0])
            else:
                self.editable_doc.setTextWidth(-1)
            self.edited_field, self.editable_html = self._host.compose_html_for_editing()
            self.editable_html = self.editable_html.replace('\n', '<br/>')
            self.setCursor(QtGui.QCursor(QtCore.Qt.IBeamCursor))

            ctrl.ui.add_quick_edit_buttons_for(self._host, self.editable_doc)
            self.editable_part.setHtml(self.editable_html)
            self.editable_doc.cursorPositionChanged.connect(self.cursor_position_changed)

            self.resize_label()
            self.editable_part.setAcceptDrops(True)
            ctrl.graph_view.setFocus()
            self.editable_part.setFocus()
            self._fresh_focus = True

        elif self._quick_editing:
            if self.editable_doc.isModified():
                self.parse_document_to_field()
                self.editable_doc.setModified(False)
            ctrl.text_editor_focus = None
            self._quick_editing = False
            ctrl.ui.remove_quick_edit_buttons()
            self._host.update_label()
            self.editable_part.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
            self.editable_part.setAcceptDrops(False)
            self.editable_part.setTextInteractionFlags(QtCore.Qt.NoTextInteraction)
            self.editable_part.clearFocus()
            self._fresh_focus = False
コード例 #22
0
 def update_label_shape(self):
     shape = ctrl.settings.get('label_shape')
     ctrl.release_editor_focus()
     for node in self.nodes.values():
         if node.node_type == g.CONSTITUENT_NODE:
             node.label_object.label_shape = shape
             node.update_label()
         if node.is_triangle_host():
             ctrl.free_drawing.add_or_update_triangle_for(node)
     parents = []
     for node in self.nodes.values():
         node.update_relations(parents)
     for parent in parents:
         parent.gather_children()
     self.prepare_width_map()
コード例 #23
0
ファイル: actions.py プロジェクト: jpurma/Kataja
 def method(self, node_uid):
     """ In cases where there another part of binary merge is removed,
     and a stub edge is left dangling, there is an option to remove the unnecessary
     merge -- this is the triggering host.
     :param node_uid: int or string, node's unique identifier
     :return: None
     """
     ctrl.release_editor_focus()
     node = ctrl.forest.nodes[node_uid]
     children = node.get_children(similar=True)
     if len(children) != 1:
         log.warn('Trying to remove an intermediate monobranch node, but node "%s" '
                  'is not such node.' % node)
     ctrl.remove_from_selection(node)
     ctrl.drawing.delete_unnecessary_merger(node)
     ctrl.forest.forest_edited()
コード例 #24
0
 def method(self):
     """ """
     ctrl.release_editor_focus()
     node = self.get_host()
     ctrl.free_drawing.merge_to_top(node.get_top_node(), node, merge_to_left=True)
コード例 #25
0
 def method(self):
     """ """
     ctrl.release_editor_focus()
     node = self.get_host()
     ctrl.free_drawing.add_sibling_for_constituentnode(node, add_left=False)
コード例 #26
0
 def method(self):
     """ """
     ctrl.release_editor_focus()
     node = self.get_host()
     ctrl.free_drawing.unary_add_child_for_constituentnode(node, add_left=True)
コード例 #27
0
 def method(self):
     """ """
     ctrl.release_editor_focus()
     top = self.get_host()
     new_node = ctrl.free_drawing.create_node(relative=top)
     ctrl.free_drawing.merge_to_top(top, new_node, merge_to_left=False, pos=new_node.current_position)
コード例 #28
0
ファイル: tree_edit.py プロジェクト: osagha/Kataja
 def method(self):
     """ """
     ctrl.release_editor_focus()
     node = self.get_host()
     ctrl.free_drawing.add_sibling_for_constituentnode(node, add_left=True)
     ctrl.forest.forest_edited()