added common tags file for canvas created items, to reduce duplicate strings
This commit is contained in:
parent
afdacf0c94
commit
b04e61ccee
9 changed files with 81 additions and 68 deletions
|
@ -11,24 +11,12 @@ from core.api.grpc import client, core_pb2
|
||||||
from coretk import appconfig
|
from coretk import appconfig
|
||||||
from coretk.dialogs.mobilityplayer import MobilityPlayer
|
from coretk.dialogs.mobilityplayer import MobilityPlayer
|
||||||
from coretk.dialogs.sessions import SessionsDialog
|
from coretk.dialogs.sessions import SessionsDialog
|
||||||
|
from coretk.graph import tags
|
||||||
from coretk.graph.shape import AnnotationData, Shape
|
from coretk.graph.shape import AnnotationData, Shape
|
||||||
from coretk.graph.shapeutils import ShapeType
|
from coretk.graph.shapeutils import ShapeType
|
||||||
from coretk.interface import InterfaceManager
|
from coretk.interface import InterfaceManager
|
||||||
from coretk.nodeutils import NodeDraw, NodeUtils
|
from coretk.nodeutils import NodeDraw, NodeUtils
|
||||||
|
|
||||||
LIFT_ORDER = [
|
|
||||||
"wallpaper",
|
|
||||||
"shape",
|
|
||||||
"gridline",
|
|
||||||
"shapetext",
|
|
||||||
"text",
|
|
||||||
"edge",
|
|
||||||
"antenna",
|
|
||||||
"nodename",
|
|
||||||
"linkinfo",
|
|
||||||
"node",
|
|
||||||
]
|
|
||||||
|
|
||||||
OBSERVERS = {
|
OBSERVERS = {
|
||||||
"processes": "ps",
|
"processes": "ps",
|
||||||
"ifconfig": "ifconfig",
|
"ifconfig": "ifconfig",
|
||||||
|
@ -363,7 +351,7 @@ class CoreClient:
|
||||||
except ValueError:
|
except ValueError:
|
||||||
logging.exception("unknown shape: %s", shape_type)
|
logging.exception("unknown shape: %s", shape_type)
|
||||||
|
|
||||||
for tag in LIFT_ORDER:
|
for tag in tags.ABOVE_WALLPAPER_TAGS:
|
||||||
self.app.canvas.tag_raise(tag)
|
self.app.canvas.tag_raise(tag)
|
||||||
|
|
||||||
def create_new_session(self):
|
def create_new_session(self):
|
||||||
|
|
|
@ -5,6 +5,7 @@ import tkinter as tk
|
||||||
from tkinter import colorchooser, font, ttk
|
from tkinter import colorchooser, font, ttk
|
||||||
|
|
||||||
from coretk.dialogs.dialog import Dialog
|
from coretk.dialogs.dialog import Dialog
|
||||||
|
from coretk.graph import tags
|
||||||
from coretk.graph.shapeutils import is_draw_shape, is_shape_text
|
from coretk.graph.shapeutils import is_draw_shape, is_shape_text
|
||||||
|
|
||||||
FONT_SIZES = [8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72]
|
FONT_SIZES = [8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72]
|
||||||
|
@ -230,7 +231,7 @@ class ShapeDialog(Dialog):
|
||||||
text=shape_text,
|
text=shape_text,
|
||||||
fill=self.text_color,
|
fill=self.text_color,
|
||||||
font=text_font,
|
font=text_font,
|
||||||
tags="shapetext",
|
tags=tags.SHAPE_TEXT,
|
||||||
)
|
)
|
||||||
self.shape.created = True
|
self.shape.created = True
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import tkinter as tk
|
import tkinter as tk
|
||||||
|
|
||||||
|
from coretk.graph import tags
|
||||||
from coretk.nodeutils import NodeUtils
|
from coretk.nodeutils import NodeUtils
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +11,7 @@ class CanvasWirelessEdge:
|
||||||
self.dst = dst
|
self.dst = dst
|
||||||
self.canvas = canvas
|
self.canvas = canvas
|
||||||
self.id = self.canvas.create_line(
|
self.id = self.canvas.create_line(
|
||||||
*position, tags="wireless", width=1.5, fill="#009933"
|
*position, tags=tags.WIRELESS_EDGE, width=1.5, fill="#009933"
|
||||||
)
|
)
|
||||||
|
|
||||||
def delete(self):
|
def delete(self):
|
||||||
|
@ -40,7 +41,7 @@ class CanvasEdge:
|
||||||
self.dst_interface = None
|
self.dst_interface = None
|
||||||
self.canvas = canvas
|
self.canvas = canvas
|
||||||
self.id = self.canvas.create_line(
|
self.id = self.canvas.create_line(
|
||||||
x1, y1, x2, y2, tags="edge", width=self.width, fill="#ff0000"
|
x1, y1, x2, y2, tags=tags.EDGE, width=self.width, fill="#ff0000"
|
||||||
)
|
)
|
||||||
self.token = None
|
self.token = None
|
||||||
self.link_info = None
|
self.link_info = None
|
||||||
|
|
|
@ -5,6 +5,7 @@ from PIL import Image, ImageTk
|
||||||
|
|
||||||
from core.api.grpc import core_pb2
|
from core.api.grpc import core_pb2
|
||||||
from coretk.dialogs.shapemod import ShapeDialog
|
from coretk.dialogs.shapemod import ShapeDialog
|
||||||
|
from coretk.graph import tags
|
||||||
from coretk.graph.edges import CanvasEdge, CanvasWirelessEdge
|
from coretk.graph.edges import CanvasEdge, CanvasWirelessEdge
|
||||||
from coretk.graph.enums import GraphMode, ScaleOption
|
from coretk.graph.enums import GraphMode, ScaleOption
|
||||||
from coretk.graph.linkinfo import LinkInfo, Throughput
|
from coretk.graph.linkinfo import LinkInfo, Throughput
|
||||||
|
@ -14,30 +15,6 @@ from coretk.graph.shapeutils import is_draw_shape
|
||||||
from coretk.images import Images
|
from coretk.images import Images
|
||||||
from coretk.nodeutils import NodeUtils
|
from coretk.nodeutils import NodeUtils
|
||||||
|
|
||||||
ABOVE_WALLPAPER = [
|
|
||||||
"gridline",
|
|
||||||
"shape",
|
|
||||||
"shapetext",
|
|
||||||
"edge",
|
|
||||||
"linkinfo",
|
|
||||||
"wireless",
|
|
||||||
"antenna",
|
|
||||||
"nodename",
|
|
||||||
"node",
|
|
||||||
]
|
|
||||||
CANVAS_COMPONENT_TAGS = [
|
|
||||||
"edge",
|
|
||||||
"node",
|
|
||||||
"nodename",
|
|
||||||
"wallpaper",
|
|
||||||
"linkinfo",
|
|
||||||
"antenna",
|
|
||||||
"wireless",
|
|
||||||
"selectednodes",
|
|
||||||
"shape",
|
|
||||||
"shapetext",
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
class CanvasGraph(tk.Canvas):
|
class CanvasGraph(tk.Canvas):
|
||||||
def __init__(self, master, core, width, height, cnf=None, **kwargs):
|
def __init__(self, master, core, width, height, cnf=None, **kwargs):
|
||||||
|
@ -99,7 +76,7 @@ class CanvasGraph(tk.Canvas):
|
||||||
:return: nothing
|
:return: nothing
|
||||||
"""
|
"""
|
||||||
# delete any existing drawn items
|
# delete any existing drawn items
|
||||||
for tag in CANVAS_COMPONENT_TAGS:
|
for tag in tags.COMPONENT_TAGS:
|
||||||
self.delete(tag)
|
self.delete(tag)
|
||||||
|
|
||||||
# set the private variables to default value
|
# set the private variables to default value
|
||||||
|
@ -140,10 +117,10 @@ class CanvasGraph(tk.Canvas):
|
||||||
width = int(width)
|
width = int(width)
|
||||||
height = int(height)
|
height = int(height)
|
||||||
for i in range(0, width, 27):
|
for i in range(0, width, 27):
|
||||||
self.create_line(i, 0, i, height, dash=(2, 4), tags="gridline")
|
self.create_line(i, 0, i, height, dash=(2, 4), tags=tags.GRIDLINE)
|
||||||
for i in range(0, height, 27):
|
for i in range(0, height, 27):
|
||||||
self.create_line(0, i, width, i, dash=(2, 4), tags="gridline")
|
self.create_line(0, i, width, i, dash=(2, 4), tags=tags.GRIDLINE)
|
||||||
self.tag_lower("gridline")
|
self.tag_lower(tags.GRIDLINE)
|
||||||
self.tag_lower(self.grid)
|
self.tag_lower(self.grid)
|
||||||
|
|
||||||
def add_wireless_edge(self, src, dst):
|
def add_wireless_edge(self, src, dst):
|
||||||
|
@ -214,7 +191,7 @@ class CanvasGraph(tk.Canvas):
|
||||||
canvas_node_two.interfaces.append(link.interface_two)
|
canvas_node_two.interfaces.append(link.interface_two)
|
||||||
|
|
||||||
# raise the nodes so they on top of the links
|
# raise the nodes so they on top of the links
|
||||||
self.tag_raise("node")
|
self.tag_raise(tags.NODE)
|
||||||
|
|
||||||
def canvas_xy(self, event):
|
def canvas_xy(self, event):
|
||||||
"""
|
"""
|
||||||
|
@ -336,7 +313,7 @@ class CanvasGraph(tk.Canvas):
|
||||||
(x0 - 6, y0 - 6, x1 + 6, y1 + 6),
|
(x0 - 6, y0 - 6, x1 + 6, y1 + 6),
|
||||||
activedash=True,
|
activedash=True,
|
||||||
dash="-",
|
dash="-",
|
||||||
tags="selectednodes",
|
tags=tags.SELECTION,
|
||||||
)
|
)
|
||||||
self.selection[object_id] = selection_id
|
self.selection[object_id] = selection_id
|
||||||
else:
|
else:
|
||||||
|
@ -553,7 +530,7 @@ class CanvasGraph(tk.Canvas):
|
||||||
self.delete(self.wallpaper_id)
|
self.delete(self.wallpaper_id)
|
||||||
# place left corner of image to the left corner of the canvas
|
# place left corner of image to the left corner of the canvas
|
||||||
self.wallpaper_id = self.create_image(
|
self.wallpaper_id = self.create_image(
|
||||||
(cropx / 2, cropy / 2), image=cropped_tk, tags="wallpaper"
|
(cropx / 2, cropy / 2), image=cropped_tk, tags=tags.WALLPAPER
|
||||||
)
|
)
|
||||||
self.wallpaper_drawn = cropped_tk
|
self.wallpaper_drawn = cropped_tk
|
||||||
|
|
||||||
|
@ -581,7 +558,7 @@ class CanvasGraph(tk.Canvas):
|
||||||
# place the center of the image at the center of the canvas
|
# place the center of the image at the center of the canvas
|
||||||
self.delete(self.wallpaper_id)
|
self.delete(self.wallpaper_id)
|
||||||
self.wallpaper_id = self.create_image(
|
self.wallpaper_id = self.create_image(
|
||||||
(canvas_w / 2, canvas_h / 2), image=cropped_tk, tags="wallpaper"
|
(canvas_w / 2, canvas_h / 2), image=cropped_tk, tags=tags.WALLPAPER
|
||||||
)
|
)
|
||||||
self.wallpaper_drawn = cropped_tk
|
self.wallpaper_drawn = cropped_tk
|
||||||
|
|
||||||
|
@ -595,7 +572,7 @@ class CanvasGraph(tk.Canvas):
|
||||||
image = Images.create(self.wallpaper_file, int(canvas_w), int(canvas_h))
|
image = Images.create(self.wallpaper_file, int(canvas_w), int(canvas_h))
|
||||||
self.delete(self.wallpaper_id)
|
self.delete(self.wallpaper_id)
|
||||||
self.wallpaper_id = self.create_image(
|
self.wallpaper_id = self.create_image(
|
||||||
(canvas_w / 2, canvas_h / 2), image=image, tags="wallpaper"
|
(canvas_w / 2, canvas_h / 2), image=image, tags=tags.WALLPAPER
|
||||||
)
|
)
|
||||||
self.wallpaper_drawn = image
|
self.wallpaper_drawn = image
|
||||||
|
|
||||||
|
@ -619,7 +596,7 @@ class CanvasGraph(tk.Canvas):
|
||||||
self.coords(self.grid, 0, 0, width, height)
|
self.coords(self.grid, 0, 0, width, height)
|
||||||
|
|
||||||
# redraw gridlines to new canvas size
|
# redraw gridlines to new canvas size
|
||||||
self.delete("gridline")
|
self.delete(tags.GRIDLINE)
|
||||||
self.draw_grid()
|
self.draw_grid()
|
||||||
self.update_grid()
|
self.update_grid()
|
||||||
|
|
||||||
|
@ -639,15 +616,15 @@ class CanvasGraph(tk.Canvas):
|
||||||
logging.warning("tiled background not implemented yet")
|
logging.warning("tiled background not implemented yet")
|
||||||
|
|
||||||
# raise items above wallpaper
|
# raise items above wallpaper
|
||||||
for component in ABOVE_WALLPAPER:
|
for component in tags.ABOVE_WALLPAPER_TAGS:
|
||||||
self.tag_raise(component)
|
self.tag_raise(component)
|
||||||
|
|
||||||
def update_grid(self):
|
def update_grid(self):
|
||||||
logging.info("updating grid show: %s", self.show_grid.get())
|
logging.info("updating grid show: %s", self.show_grid.get())
|
||||||
if self.show_grid.get():
|
if self.show_grid.get():
|
||||||
self.itemconfig("gridline", state=tk.NORMAL)
|
self.itemconfig(tags.GRIDLINE, state=tk.NORMAL)
|
||||||
else:
|
else:
|
||||||
self.itemconfig("gridline", state=tk.HIDDEN)
|
self.itemconfig(tags.GRIDLINE, state=tk.HIDDEN)
|
||||||
|
|
||||||
def set_wallpaper(self, filename):
|
def set_wallpaper(self, filename):
|
||||||
logging.info("setting wallpaper: %s", filename)
|
logging.info("setting wallpaper: %s", filename)
|
||||||
|
|
|
@ -5,6 +5,7 @@ import tkinter as tk
|
||||||
from tkinter import font
|
from tkinter import font
|
||||||
|
|
||||||
from core.api.grpc import core_pb2
|
from core.api.grpc import core_pb2
|
||||||
|
from coretk.graph import tags
|
||||||
|
|
||||||
TEXT_DISTANCE = 0.30
|
TEXT_DISTANCE = 0.30
|
||||||
|
|
||||||
|
@ -52,10 +53,20 @@ class LinkInfo:
|
||||||
f"{self.link.interface_two.ip6}/{self.link.interface_two.ip6mask}\n"
|
f"{self.link.interface_two.ip6}/{self.link.interface_two.ip6mask}\n"
|
||||||
)
|
)
|
||||||
self.id1 = self.canvas.create_text(
|
self.id1 = self.canvas.create_text(
|
||||||
x1, y1, text=label_one, justify=tk.CENTER, font=self.font, tags="linkinfo"
|
x1,
|
||||||
|
y1,
|
||||||
|
text=label_one,
|
||||||
|
justify=tk.CENTER,
|
||||||
|
font=self.font,
|
||||||
|
tags=tags.LINK_INFO,
|
||||||
)
|
)
|
||||||
self.id2 = self.canvas.create_text(
|
self.id2 = self.canvas.create_text(
|
||||||
x2, y2, text=label_two, justify=tk.CENTER, font=self.font, tags="linkinfo"
|
x2,
|
||||||
|
y2,
|
||||||
|
text=label_two,
|
||||||
|
justify=tk.CENTER,
|
||||||
|
font=self.font,
|
||||||
|
tags=tags.LINK_INFO,
|
||||||
)
|
)
|
||||||
|
|
||||||
def recalculate_info(self):
|
def recalculate_info(self):
|
||||||
|
|
|
@ -7,6 +7,7 @@ from coretk.dialogs.emaneconfig import EmaneConfigDialog
|
||||||
from coretk.dialogs.mobilityconfig import MobilityConfigDialog
|
from coretk.dialogs.mobilityconfig import MobilityConfigDialog
|
||||||
from coretk.dialogs.nodeconfig import NodeConfigDialog
|
from coretk.dialogs.nodeconfig import NodeConfigDialog
|
||||||
from coretk.dialogs.wlanconfig import WlanConfigDialog
|
from coretk.dialogs.wlanconfig import WlanConfigDialog
|
||||||
|
from coretk.graph import tags
|
||||||
from coretk.graph.enums import GraphMode
|
from coretk.graph.enums import GraphMode
|
||||||
from coretk.graph.tooltip import CanvasTooltip
|
from coretk.graph.tooltip import CanvasTooltip
|
||||||
from coretk.nodeutils import NodeUtils
|
from coretk.nodeutils import NodeUtils
|
||||||
|
@ -23,7 +24,7 @@ class CanvasNode:
|
||||||
x = self.core_node.position.x
|
x = self.core_node.position.x
|
||||||
y = self.core_node.position.y
|
y = self.core_node.position.y
|
||||||
self.id = self.canvas.create_image(
|
self.id = self.canvas.create_image(
|
||||||
x, y, anchor=tk.CENTER, image=self.image, tags="node"
|
x, y, anchor=tk.CENTER, image=self.image, tags=tags.NODE
|
||||||
)
|
)
|
||||||
image_box = self.canvas.bbox(self.id)
|
image_box = self.canvas.bbox(self.id)
|
||||||
y = image_box[3] + NODE_TEXT_OFFSET
|
y = image_box[3] + NODE_TEXT_OFFSET
|
||||||
|
@ -32,7 +33,7 @@ class CanvasNode:
|
||||||
x,
|
x,
|
||||||
y,
|
y,
|
||||||
text=self.core_node.name,
|
text=self.core_node.name,
|
||||||
tags="nodename",
|
tags=tags.NODE_NAME,
|
||||||
font=text_font,
|
font=text_font,
|
||||||
fill="#0000CD",
|
fill="#0000CD",
|
||||||
)
|
)
|
||||||
|
@ -62,13 +63,12 @@ class CanvasNode:
|
||||||
def add_antenna(self):
|
def add_antenna(self):
|
||||||
x, y = self.canvas.coords(self.id)
|
x, y = self.canvas.coords(self.id)
|
||||||
offset = len(self.antennae) * 8
|
offset = len(self.antennae) * 8
|
||||||
|
|
||||||
antenna_id = self.canvas.create_image(
|
antenna_id = self.canvas.create_image(
|
||||||
x - 16 + offset,
|
x - 16 + offset,
|
||||||
y - 23,
|
y - 23,
|
||||||
anchor=tk.CENTER,
|
anchor=tk.CENTER,
|
||||||
image=NodeUtils.ANTENNA_ICON,
|
image=NodeUtils.ANTENNA_ICON,
|
||||||
tags="antenna",
|
tags=tags.ANTENNA,
|
||||||
)
|
)
|
||||||
self.antennae.append(antenna_id)
|
self.antennae.append(antenna_id)
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from coretk.dialogs.shapemod import ShapeDialog
|
from coretk.dialogs.shapemod import ShapeDialog
|
||||||
|
from coretk.graph import tags
|
||||||
from coretk.graph.shapeutils import ShapeType
|
from coretk.graph.shapeutils import ShapeType
|
||||||
|
|
||||||
ABOVE_COMPONENT = ["gridline", "edge", "linkinfo", "antenna", "node", "nodename"]
|
|
||||||
|
|
||||||
|
|
||||||
class AnnotationData:
|
class AnnotationData:
|
||||||
def __init__(
|
def __init__(
|
||||||
|
@ -70,7 +69,7 @@ class Shape:
|
||||||
self.y1,
|
self.y1,
|
||||||
self.x2,
|
self.x2,
|
||||||
self.y2,
|
self.y2,
|
||||||
tags="shape",
|
tags=tags.SHAPE,
|
||||||
dash=dash,
|
dash=dash,
|
||||||
fill=self.shape_data.fill_color,
|
fill=self.shape_data.fill_color,
|
||||||
outline=self.shape_data.border_color,
|
outline=self.shape_data.border_color,
|
||||||
|
@ -83,7 +82,7 @@ class Shape:
|
||||||
self.y1,
|
self.y1,
|
||||||
self.x2,
|
self.x2,
|
||||||
self.y2,
|
self.y2,
|
||||||
tags="shape",
|
tags=tags.SHAPE,
|
||||||
dash=dash,
|
dash=dash,
|
||||||
fill=self.shape_data.fill_color,
|
fill=self.shape_data.fill_color,
|
||||||
outline=self.shape_data.border_color,
|
outline=self.shape_data.border_color,
|
||||||
|
@ -95,7 +94,7 @@ class Shape:
|
||||||
self.id = self.canvas.create_text(
|
self.id = self.canvas.create_text(
|
||||||
self.x1,
|
self.x1,
|
||||||
self.y1,
|
self.y1,
|
||||||
tags="shapetext",
|
tags=tags.SHAPE_TEXT,
|
||||||
text=self.shape_data.text,
|
text=self.shape_data.text,
|
||||||
fill=self.shape_data.text_color,
|
fill=self.shape_data.text_color,
|
||||||
font=font,
|
font=font,
|
||||||
|
@ -122,7 +121,7 @@ class Shape:
|
||||||
self.text_id = self.canvas.create_text(
|
self.text_id = self.canvas.create_text(
|
||||||
x,
|
x,
|
||||||
y,
|
y,
|
||||||
tags="shapetext",
|
tags=tags.SHAPE_TEXT,
|
||||||
text=self.shape_data.text,
|
text=self.shape_data.text,
|
||||||
fill=self.shape_data.text_color,
|
fill=self.shape_data.text_color,
|
||||||
font=font,
|
font=font,
|
||||||
|
@ -132,7 +131,7 @@ class Shape:
|
||||||
self.canvas.coords(self.id, self.x1, self.y1, x1, y1)
|
self.canvas.coords(self.id, self.x1, self.y1, x1, y1)
|
||||||
|
|
||||||
def shape_complete(self, x, y):
|
def shape_complete(self, x, y):
|
||||||
for component in ABOVE_COMPONENT:
|
for component in tags.ABOVE_SHAPE:
|
||||||
self.canvas.tag_raise(component)
|
self.canvas.tag_raise(component)
|
||||||
s = ShapeDialog(self.app, self.app, self)
|
s = ShapeDialog(self.app, self.app, self)
|
||||||
s.show()
|
s.show()
|
||||||
|
|
35
coretk/coretk/graph/tags.py
Normal file
35
coretk/coretk/graph/tags.py
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
GRIDLINE = "gridline"
|
||||||
|
SHAPE = "shape"
|
||||||
|
SHAPE_TEXT = "shapetext"
|
||||||
|
EDGE = "edge"
|
||||||
|
LINK_INFO = "linkinfo"
|
||||||
|
WIRELESS_EDGE = "wireless"
|
||||||
|
ANTENNA = "antenna"
|
||||||
|
NODE_NAME = "nodename"
|
||||||
|
NODE = "node"
|
||||||
|
WALLPAPER = "wallpaper"
|
||||||
|
SELECTION = "selectednodes"
|
||||||
|
ABOVE_WALLPAPER_TAGS = [
|
||||||
|
GRIDLINE,
|
||||||
|
SHAPE,
|
||||||
|
SHAPE_TEXT,
|
||||||
|
EDGE,
|
||||||
|
LINK_INFO,
|
||||||
|
WIRELESS_EDGE,
|
||||||
|
ANTENNA,
|
||||||
|
NODE,
|
||||||
|
NODE_NAME,
|
||||||
|
]
|
||||||
|
ABOVE_SHAPE = [GRIDLINE, EDGE, LINK_INFO, WIRELESS_EDGE, ANTENNA, NODE, NODE_NAME]
|
||||||
|
COMPONENT_TAGS = [
|
||||||
|
EDGE,
|
||||||
|
NODE,
|
||||||
|
NODE_NAME,
|
||||||
|
WALLPAPER,
|
||||||
|
LINK_INFO,
|
||||||
|
ANTENNA,
|
||||||
|
WIRELESS_EDGE,
|
||||||
|
SELECTION,
|
||||||
|
SHAPE,
|
||||||
|
SHAPE_TEXT,
|
||||||
|
]
|
|
@ -5,6 +5,7 @@ from functools import partial
|
||||||
from tkinter import ttk
|
from tkinter import ttk
|
||||||
|
|
||||||
from coretk.dialogs.customnodes import CustomNodesDialog
|
from coretk.dialogs.customnodes import CustomNodesDialog
|
||||||
|
from coretk.graph import tags
|
||||||
from coretk.graph.enums import GraphMode
|
from coretk.graph.enums import GraphMode
|
||||||
from coretk.graph.shapeutils import ShapeType
|
from coretk.graph.shapeutils import ShapeType
|
||||||
from coretk.images import ImageEnum, Images
|
from coretk.images import ImageEnum, Images
|
||||||
|
@ -369,7 +370,7 @@ class Toolbar(ttk.Frame):
|
||||||
self.app.statusbar.progress_bar.start(5)
|
self.app.statusbar.progress_bar.start(5)
|
||||||
thread = threading.Thread(target=self.app.core.stop_session)
|
thread = threading.Thread(target=self.app.core.stop_session)
|
||||||
thread.start()
|
thread.start()
|
||||||
self.app.canvas.delete("wireless")
|
self.app.canvas.delete(tags.WIRELESS_EDGE)
|
||||||
self.design_frame.tkraise()
|
self.design_frame.tkraise()
|
||||||
self.click_selection()
|
self.click_selection()
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue