def __init__(self, model_object): super().__init__(None) self.__model_object = model_object if isinstance(model_object, Project): self.setIcon( 0, image_loader.load_icon(model_object.metamodel.addon.icon)) self.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable) else: self.setIcon(0, image_loader.load_icon(model_object.type.icon)) self.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable | Qt.ItemIsDragEnabled)
def __fill(self, drawing_area): for widget in self.__widgets: self.__vbox.removeWidget(widget) sip.delete(widget) self.__current_drawing_area = drawing_area self.__widgets = [] if drawing_area is None: button = self.__add_button(self.__arrow, _('Select'), None, drawing_area, True) button.setEnabled(False) return current_connection = None current_element = None if isinstance(drawing_area.current_action, AddElementAction): current_element = drawing_area.current_action.element_type elif isinstance(drawing_area.current_action, AddTypedConnectionAction): current_connection = drawing_area.current_action.connection_type self.__add_button( self.__arrow, _('Select'), None, drawing_area, current_connection is None and current_element is None) self.__add_separator() diagram_type = drawing_area.diagram.type translation = diagram_type.metamodel.get_translation( Application().language.current_language) has_elements = False for element_type in diagram_type.element_types: self.__add_button(image_loader.load_icon(element_type.icon), translation.translate(element_type), (AddElementAction, element_type.id), drawing_area, current_element == element_type.id) has_elements = True if has_elements: self.__add_separator() for connection_type in diagram_type.connection_types: self.__add_button(image_loader.load_icon(connection_type.icon), translation.translate(connection_type), (AddTypedConnectionAction, connection_type.id), drawing_area, current_connection == connection_type.id)
def __tab_lock_status_changed(self, event): widget_id = self.__get_tab_widget_id(event.tab) if widget_id is not None: icon = image_loader.load_icon(event.tab.icon) if event.tab.locked: icon = combine_icons(icon, ICONS.LOCKED, [self.iconSize()]) self.setTabIcon(widget_id, icon)
def __open_tab(self, event): canvas = ScrolledCanvasWidget(self.__main_window, event.tab.drawing_area) icon = image_loader.load_icon(event.tab.icon) if event.tab.locked: icon = combine_icons(icon, ICONS.LOCKED, [self.iconSize()]) self.addTab(canvas, icon, event.tab.name) self.__handle_last_tab()
def __init__(self, main_window, element): super().__init__() self.__main_window = main_window self.__element = element metamodel = element.project.metamodel sub_menu = self._add_sub_menu_item(_("Add Diagram")) for diagram_type in metamodel.diagram_types: self._add_type_menu_item(diagram_type, self.__create_diagram_action, sub_menu) direct_element_types = [ element_type for element_type in metamodel.element_types if element_type.allow_direct_add ] if any(direct_element_types): for element_type in direct_element_types: self._add_type_menu_item(element_type, self.__create_element_action, format=_("Add '{0}'")) else: sub_menu = self._add_sub_menu_item(_("Add Element")) for element_type in metamodel.element_types: self._add_type_menu_item(element_type, self.__create_element_action, sub_menu) self.addSeparator() diagrams = [visual.diagram for visual in element.visuals] sub_menu = self._add_sub_menu_item(_("Show in Diagram"), len(diagrams) > 0) for diagram in diagrams: self._add_menu_item(load_icon(diagram.type.icon), diagram.get_display_name(), None, partial(self.__show_in_diagram, diagram), sub_menu) self._add_menu_item("edit-delete", _("Delete"), DELETE_FROM_PROJECT, self.__delete_element_action) self.addSeparator() if self.__element.has_ufl_dialog: self._add_menu_item(None, _("Properties..."), None, self.__open_properties_action) else: self._add_menu_item(None, _("Properties..."), None)
def _add_type_menu_item(self, type, action=None, sub_menu=None, format="{0}"): translation = type.metamodel.get_translation( Application().language.current_language) ret = QAction(format.format(translation.translate(type)), sub_menu or self) ret.setIcon(image_loader.load_icon(type.icon)) if action is None: ret.setEnabled(False) else: ret.triggered.connect(partial(action, type)) (sub_menu or self).addAction(ret) return ret
def __init__(self, template): translation = template.metamodel.get_translation(Application().language.current_language) super().__init__(translation.translate(template)) self.setIcon(image_loader.load_icon(template.icon)) self.__template = template
def __init__(self, main_window, drawing_area, elements): super().__init__() self.__main_window = main_window self.__elements = tuple(elements) self.__drawing_area = drawing_area self.__diagram = drawing_area.diagram translation = self.__diagram.type.metamodel.get_translation( Application().language.current_language) something_above = False something_below = False for element in self.__elements: if self.__diagram.get_visual_above(Application().ruler, element) is not None: something_above = True if self.__diagram.get_visual_below(Application().ruler, element) is not None: something_below = True first_diagram_item = None child_diagrams = [ diagram for element in self.__elements for diagram in element.object.diagrams if diagram is not self.__diagram ] if any(child_diagrams): diagrams_menu = self._add_sub_menu_item(_("Show Diagram")) for diagram in child_diagrams: if diagram is not self.__diagram: diagram_item = QAction(diagram.get_display_name(), diagrams_menu) diagram_item.setIcon( image_loader.load_icon(diagram.type.icon)) diagram_item.triggered.connect( partial(self.__show_diagram, diagram)) diagrams_menu.addAction(diagram_item) if first_diagram_item is None: first_diagram_item = diagram_item else: self._add_sub_menu_item(_("Show Diagram"), enabled=False) self.addSeparator() if drawing_area.can_copy_snippet: self._add_menu_item("edit-cut", _("Cut"), QKeySequence.Cut, self.__cut_action) else: self._add_menu_item("edit-cut", _("Cut"), QKeySequence.Cut) if drawing_area.can_copy_snippet: self._add_menu_item("edit-copy", _("Copy"), QKeySequence.Copy, self.__copy_action) else: self._add_menu_item("edit-copy", _("Copy"), QKeySequence.Copy) if drawing_area.can_paste_snippet: self._add_menu_item("edit-paste", _("Paste"), QKeySequence.Paste, self.__paste_action) else: self._add_menu_item("edit-paste", _("Paste"), QKeySequence.Paste) if drawing_area.can_paste_snippet_duplicate: self._add_menu_item("edit-paste", _("Paste Duplicate"), PASTE_DUPLICATE, self.__duplicate_action) else: self._add_menu_item("edit-paste", _("Paste Duplicate"), PASTE_DUPLICATE) self.addSeparator() self._add_menu_item(None, _("Hide"), QKeySequence.Delete, self.__hide) self._add_menu_item("edit-delete", _("Delete"), DELETE_FROM_PROJECT, self.__delete) connections_to_show = [] if len(self.__elements) == 1: for connection in self.__elements[0].object.connections: if not self.__diagram.contains(connection): other = connection.get_other_end(self.__elements[0].object) if self.__diagram.contains(other): connections_to_show.append((connection, other)) if connections_to_show: show_menu = self._add_sub_menu_item(_("Show Connection")) for connection, element in connections_to_show: self._add_menu_item( None, _("{0} to '{1}'").format( translation.translate(connection.type), element.get_display_name()), None, partial(self.__show_connection, connection), show_menu) else: show_menu = self._add_sub_menu_item(_("Show Connection"), enabled=False) self.addSeparator() if len(self.__elements) == 1: self._add_menu_item(None, _("Find in the Project Tree"), None, self.__show_in_project) else: self._add_menu_item(None, _("Find in the Project Tree"), None) if something_above or something_below: z_order_menu = self._add_sub_menu_item(_("Z-Order")) if something_below: self._add_menu_item("go-down", _("Lower"), Z_ORDER_LOWER, self.__z_order_back, z_order_menu) else: self._add_menu_item("go-down", _("Lower"), Z_ORDER_LOWER, None, z_order_menu) if something_above: self._add_menu_item("go-up", _("Raise"), Z_ORDER_RAISE, self.__z_order_forward, z_order_menu) else: self._add_menu_item("go-up", _("Raise"), Z_ORDER_RAISE, None, z_order_menu) if something_below: self._add_menu_item("go-bottom", _("Lower to Bottom"), Z_ORDER_TO_BOTTOM, self.__z_order_bottom, z_order_menu) else: self._add_menu_item("go-bottom", _("Lower to Bottom"), Z_ORDER_TO_BOTTOM, None, z_order_menu) if something_above: self._add_menu_item("go-top", _("Raise to Top"), Z_ORDER_TO_TOP, self.__z_order_top, z_order_menu) else: self._add_menu_item("go-top", _("Raise to Top"), Z_ORDER_TO_TOP, None, z_order_menu) else: self._add_sub_menu_item(_("Z-order"), False) if len(self.__elements ) == 1 and self.__elements[0].object.has_ufl_dialog: properties = self._add_menu_item(None, _("Properties..."), None, self.__edit_properties) else: properties = self._add_menu_item(None, _("Properties..."), None) if len(self.__elements) == 1: if self.__elements[ 0].object.type.default_action == DefaultElementAction.subdiagram: if first_diagram_item is not None: diagrams_menu.setDefaultAction(first_diagram_item) else: self.setDefaultAction(properties) else: self.setDefaultAction(properties)