def draw_node_picker(self): self.hide_pickers() self.node_picker = ttk.Frame(self.master) # draw default nodes for node_draw in NodeUtils.NODES: toolbar_image = icon(node_draw.image_enum) image = icon(node_draw.image_enum, PICKER_SIZE) func = partial(self.update_button, self.node_button, toolbar_image, node_draw) self.create_picker_button(image, func, self.node_picker, node_draw.label) # draw custom nodes for name in sorted(self.app.core.custom_nodes): node_draw = self.app.core.custom_nodes[name] toolbar_image = Images.get_custom(node_draw.image_file, TOOLBAR_SIZE) image = Images.get_custom(node_draw.image_file, PICKER_SIZE) func = partial(self.update_button, self.node_button, toolbar_image, node_draw) self.create_picker_button(image, func, self.node_picker, name) # draw edit node image = icon(ImageEnum.EDITNODE, PICKER_SIZE) self.create_picker_button(image, self.click_edit_node, self.node_picker, "Custom") self.design_select(self.node_button) self.node_button.after( 0, lambda: self.show_picker(self.node_button, self.node_picker))
def from_custom(cls, name, image_file, services): node_draw = NodeDraw() node_draw.custom = True node_draw.image_file = image_file node_draw.image = Images.get_custom(image_file, ICON_SIZE) node_draw.node_type = NodeType.DEFAULT node_draw.services = services node_draw.label = name node_draw.model = name node_draw.tooltip = name return node_draw
def from_custom(cls, custom_node: CustomNode) -> "NodeDraw": node_draw = NodeDraw() node_draw.custom = True node_draw.image_file = custom_node.image node_draw.image = Images.get_custom(custom_node.image, ICON_SIZE) node_draw.node_type = NodeType.DEFAULT node_draw.services = custom_node.services node_draw.label = custom_node.name node_draw.model = custom_node.name node_draw.tooltip = custom_node.name return node_draw
def draw_node_picker(self): self.hide_pickers() self.node_picker = ttk.Frame(self.master) # draw default nodes for node_draw in NodeUtils.NODES: toolbar_image = self.get_icon(node_draw.image_enum, TOOLBAR_SIZE) image = self.get_icon(node_draw.image_enum, PICKER_SIZE) func = partial( self.update_button, self.node_button, toolbar_image, node_draw, NodeTypeEnum.NODE, node_draw.image_enum, ) self.create_picker_button(image, func, self.node_picker, node_draw.label) # draw custom nodes for name in sorted(self.app.core.custom_nodes): node_draw = self.app.core.custom_nodes[name] toolbar_image = Images.get_custom( node_draw.image_file, int(TOOLBAR_SIZE * self.app.app_scale)) image = Images.get_custom(node_draw.image_file, int(PICKER_SIZE * self.app.app_scale)) func = partial( self.update_button, self.node_button, toolbar_image, node_draw, NodeTypeEnum, node_draw.image_file, ) self.create_picker_button(image, func, self.node_picker, name) self.design_select(self.node_button) self.node_button.after( 0, lambda: self.show_picker(self.node_button, self.node_picker))
def add_node(self, x: float, y: float) -> None: if self.selected is not None and self.selected not in self.shapes: return actual_x, actual_y = self.get_actual_coords(x, y) core_node = self.core.create_node(actual_x, actual_y, self.node_draw.node_type, self.node_draw.model) if not core_node: return try: self.node_draw.image = Images.get( self.node_draw.image_enum, int(ICON_SIZE * self.app.app_scale)) except AttributeError: self.node_draw.image = Images.get_custom( self.node_draw.image_file, int(ICON_SIZE * self.app.app_scale)) node = CanvasNode(self.app, x, y, core_node, self.node_draw.image) self.core.canvas_nodes[core_node.id] = node self.nodes[node.id] = node
def scale_graph(self): for nid, canvas_node in self.nodes.items(): img = None if NodeUtils.is_custom(canvas_node.core_node.type, canvas_node.core_node.model): for custom_node in self.app.guiconfig.nodes: if custom_node.name == canvas_node.core_node.model: img = Images.get_custom( custom_node.image, int(ICON_SIZE * self.app.app_scale)) else: image_enum = TypeToImage.get(canvas_node.core_node.type, canvas_node.core_node.model) img = Images.get(image_enum, int(ICON_SIZE * self.app.app_scale)) self.itemconfig(nid, image=img) canvas_node.image = img canvas_node.scale_text() canvas_node.scale_antennas() for edge_id in self.find_withtag(tags.EDGE): self.itemconfig(edge_id, width=int(EDGE_WIDTH * self.app.app_scale))
def get_custom_icon(self, image_file: str, width: int) -> PhotoImage: return Images.get_custom(image_file, int(width * self.app_scale))