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)
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()
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)
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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
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()
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()
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)
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()
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()
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
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()
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()
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)
def method(self): """ """ ctrl.release_editor_focus() node = self.get_host() ctrl.free_drawing.add_sibling_for_constituentnode(node, add_left=False)
def method(self): """ """ ctrl.release_editor_focus() node = self.get_host() ctrl.free_drawing.unary_add_child_for_constituentnode(node, add_left=True)
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)
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()