Beispiel #1
0
 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))
Beispiel #2
0
 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
Beispiel #3
0
 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
Beispiel #4
0
 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))
Beispiel #5
0
 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
Beispiel #6
0
    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))
Beispiel #7
0
 def get_custom_icon(self, image_file: str, width: int) -> PhotoImage:
     return Images.get_custom(image_file, int(width * self.app_scale))