updated theme and size for picker buttons, also added text for clarity
This commit is contained in:
parent
fa1f344fd7
commit
8585911900
5 changed files with 45 additions and 33 deletions
|
@ -42,6 +42,8 @@ class Application(tk.Frame):
|
|||
self.style.theme_use(self.guiconfig["preferences"]["theme"])
|
||||
func = partial(themes.update_menu, self.style)
|
||||
self.master.bind_class("Menu", "<<ThemeChanged>>", func)
|
||||
func = partial(themes.theme_change, self.style)
|
||||
self.master.bind("<<ThemeChanged>>", func)
|
||||
|
||||
def setup_app(self):
|
||||
self.master.title("CORE")
|
||||
|
|
|
@ -9,7 +9,6 @@ DIALOG_PAD = 5
|
|||
class Dialog(tk.Toplevel):
|
||||
def __init__(self, master, app, title, modal=False):
|
||||
super().__init__(master)
|
||||
self.geometry("800x600")
|
||||
self.withdraw()
|
||||
self.app = app
|
||||
self.modal = modal
|
||||
|
|
|
@ -13,18 +13,16 @@ class NodeDraw:
|
|||
self.image_file = None
|
||||
self.node_type = None
|
||||
self.model = None
|
||||
self.tooltip = None
|
||||
self.services = set()
|
||||
|
||||
@classmethod
|
||||
def from_setup(cls, image_enum, node_type, model=None, tooltip=None):
|
||||
def from_setup(cls, image_enum, node_type, label, model=None, tooltip=None):
|
||||
node_draw = NodeDraw()
|
||||
node_draw.image_enum = image_enum
|
||||
node_draw.image = Images.get(image_enum, ICON_SIZE)
|
||||
node_draw.node_type = node_type
|
||||
node_draw.label = label
|
||||
node_draw.model = model
|
||||
if tooltip is None:
|
||||
tooltip = model
|
||||
node_draw.tooltip = tooltip
|
||||
return node_draw
|
||||
|
||||
|
@ -36,6 +34,7 @@ class NodeDraw:
|
|||
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
|
||||
|
@ -81,29 +80,29 @@ class NodeUtils:
|
|||
@classmethod
|
||||
def setup(cls):
|
||||
nodes = [
|
||||
(ImageEnum.ROUTER, NodeType.DEFAULT, "router"),
|
||||
(ImageEnum.HOST, NodeType.DEFAULT, "host"),
|
||||
(ImageEnum.PC, NodeType.DEFAULT, "PC"),
|
||||
(ImageEnum.MDR, NodeType.DEFAULT, "mdr"),
|
||||
(ImageEnum.PROUTER, NodeType.DEFAULT, "prouter"),
|
||||
(ImageEnum.DOCKER, NodeType.DOCKER, "Docker"),
|
||||
(ImageEnum.LXC, NodeType.LXC, "LXC"),
|
||||
(ImageEnum.ROUTER, NodeType.DEFAULT, "Router", "router"),
|
||||
(ImageEnum.HOST, NodeType.DEFAULT, "Host", "host"),
|
||||
(ImageEnum.PC, NodeType.DEFAULT, "PC", "PC"),
|
||||
(ImageEnum.MDR, NodeType.DEFAULT, "MDR", "mdr"),
|
||||
(ImageEnum.PROUTER, NodeType.DEFAULT, "PRouter", "prouter"),
|
||||
(ImageEnum.DOCKER, NodeType.DOCKER, "Docker", None),
|
||||
(ImageEnum.LXC, NodeType.LXC, "LXC", None),
|
||||
]
|
||||
for image_enum, node_type, model in nodes:
|
||||
node_draw = NodeDraw.from_setup(image_enum, node_type, model)
|
||||
for image_enum, node_type, label, model in nodes:
|
||||
node_draw = NodeDraw.from_setup(image_enum, node_type, label, model)
|
||||
cls.NODES.append(node_draw)
|
||||
cls.NODE_ICONS[(node_type, model)] = node_draw.image
|
||||
|
||||
network_nodes = [
|
||||
(ImageEnum.HUB, NodeType.HUB, "ethernet hub"),
|
||||
(ImageEnum.SWITCH, NodeType.SWITCH, "ethernet switch"),
|
||||
(ImageEnum.WLAN, NodeType.WIRELESS_LAN, "wireless LAN"),
|
||||
(ImageEnum.HUB, NodeType.HUB, "Hub"),
|
||||
(ImageEnum.SWITCH, NodeType.SWITCH, "Switch"),
|
||||
(ImageEnum.WLAN, NodeType.WIRELESS_LAN, "WLAN"),
|
||||
(ImageEnum.EMANE, NodeType.EMANE, "EMANE"),
|
||||
(ImageEnum.RJ45, NodeType.RJ45, "rj45 physical interface tool"),
|
||||
(ImageEnum.TUNNEL, NodeType.TUNNEL, "tunnel tool"),
|
||||
(ImageEnum.RJ45, NodeType.RJ45, "RJ45"),
|
||||
(ImageEnum.TUNNEL, NodeType.TUNNEL, "Tunnel"),
|
||||
]
|
||||
for image_enum, node_type, tooltip in network_nodes:
|
||||
node_draw = NodeDraw.from_setup(image_enum, node_type, tooltip=tooltip)
|
||||
for image_enum, node_type, label in network_nodes:
|
||||
node_draw = NodeDraw.from_setup(image_enum, node_type, label)
|
||||
cls.NETWORK_NODES.append(node_draw)
|
||||
cls.NODE_ICONS[(node_type, None)] = node_draw.image
|
||||
cls.ANTENNA_ICON = Images.get(ImageEnum.ANTENNA, ANTENNA_SIZE)
|
||||
|
|
|
@ -8,6 +8,7 @@ class Styles:
|
|||
tooltip = "Tooltip.TLabel"
|
||||
tooltip_frame = "Tooltip.TFrame"
|
||||
service_checkbutton = "Service.TCheckbutton"
|
||||
picker_button = "Picker.TButton"
|
||||
|
||||
|
||||
class Colors:
|
||||
|
@ -150,3 +151,7 @@ def update_menu(style, event):
|
|||
event.widget.config(
|
||||
background=bg, foreground=fg, activebackground=abg, activeforeground=fg
|
||||
)
|
||||
|
||||
|
||||
def theme_change(style, event):
|
||||
style.configure(Styles.picker_button, font=("TkDefaultFont", 8, "normal"))
|
||||
|
|
|
@ -3,6 +3,7 @@ import threading
|
|||
import tkinter as tk
|
||||
from functools import partial
|
||||
from tkinter import ttk
|
||||
from tkinter.font import Font
|
||||
|
||||
from coretk.dialogs.customnodes import CustomNodesDialog
|
||||
from coretk.graph import tags
|
||||
|
@ -10,13 +11,15 @@ from coretk.graph.enums import GraphMode
|
|||
from coretk.graph.shapeutils import ShapeType
|
||||
from coretk.images import ImageEnum, Images
|
||||
from coretk.nodeutils import NodeUtils
|
||||
from coretk.themes import Styles
|
||||
from coretk.tooltip import Tooltip
|
||||
|
||||
WIDTH = 32
|
||||
PICKER_SIZE = 24
|
||||
|
||||
|
||||
def icon(image_enum):
|
||||
return Images.get(image_enum, WIDTH)
|
||||
def icon(image_enum, width=WIDTH):
|
||||
return Images.get(image_enum, width)
|
||||
|
||||
|
||||
class Toolbar(ttk.Frame):
|
||||
|
@ -34,6 +37,9 @@ class Toolbar(ttk.Frame):
|
|||
self.app = app
|
||||
self.master = app.master
|
||||
|
||||
# picker data
|
||||
self.picker_font = Font(size=8)
|
||||
|
||||
# design buttons
|
||||
self.select_button = None
|
||||
self.link_button = None
|
||||
|
@ -140,9 +146,9 @@ class Toolbar(ttk.Frame):
|
|||
self.node_picker = ttk.Frame(self.master)
|
||||
# draw default nodes
|
||||
for node_draw in NodeUtils.NODES:
|
||||
image = icon(node_draw.image_enum)
|
||||
image = icon(node_draw.image_enum, PICKER_SIZE)
|
||||
func = partial(self.update_button, self.node_button, image, node_draw)
|
||||
self.create_picker_button(image, func, self.node_picker, node_draw.tooltip)
|
||||
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]
|
||||
|
@ -152,7 +158,7 @@ class Toolbar(ttk.Frame):
|
|||
# draw edit node
|
||||
image = icon(ImageEnum.EDITNODE)
|
||||
self.create_picker_button(
|
||||
image, self.click_edit_node, self.node_picker, "custom nodes"
|
||||
image, self.click_edit_node, self.node_picker, "Custom"
|
||||
)
|
||||
self.design_select(self.node_button)
|
||||
self.node_button.after(
|
||||
|
@ -169,21 +175,22 @@ class Toolbar(ttk.Frame):
|
|||
self.wait_window(picker)
|
||||
self.app.unbind_all("<ButtonRelease-1>")
|
||||
|
||||
def create_picker_button(self, image, func, frame, tooltip):
|
||||
def create_picker_button(self, image, func, frame, label):
|
||||
"""
|
||||
Create button and put it on the frame
|
||||
|
||||
:param PIL.Image image: button image
|
||||
:param func: the command that is executed when button is clicked
|
||||
:param tkinter.Frame frame: frame that contains the button
|
||||
:param str tooltip: tooltip text
|
||||
:param str label: button label
|
||||
:return: nothing
|
||||
"""
|
||||
button = ttk.Button(frame, image=image)
|
||||
button = ttk.Button(
|
||||
frame, image=image, text=label, compound=tk.TOP, style=Styles.picker_button
|
||||
)
|
||||
button.image = image
|
||||
button.bind("<ButtonRelease-1>", lambda e: func())
|
||||
button.grid(pady=1)
|
||||
Tooltip(button, tooltip)
|
||||
|
||||
def create_button(self, frame, image, func, tooltip):
|
||||
button = ttk.Button(frame, image=image, command=func)
|
||||
|
@ -269,12 +276,12 @@ class Toolbar(ttk.Frame):
|
|||
self.hide_pickers()
|
||||
self.network_picker = ttk.Frame(self.master)
|
||||
for node_draw in NodeUtils.NETWORK_NODES:
|
||||
image = icon(node_draw.image_enum)
|
||||
image = icon(node_draw.image_enum, PICKER_SIZE)
|
||||
self.create_picker_button(
|
||||
image,
|
||||
partial(self.update_button, self.network_button, image, node_draw),
|
||||
self.network_picker,
|
||||
node_draw.tooltip,
|
||||
node_draw.label,
|
||||
)
|
||||
self.design_select(self.network_button)
|
||||
self.network_button.after(
|
||||
|
@ -311,7 +318,7 @@ class Toolbar(ttk.Frame):
|
|||
(ImageEnum.TEXT, ShapeType.TEXT),
|
||||
]
|
||||
for image_enum, shape_type in nodes:
|
||||
image = icon(image_enum)
|
||||
image = icon(image_enum, PICKER_SIZE)
|
||||
self.create_picker_button(
|
||||
image,
|
||||
partial(self.update_annotation, image, shape_type),
|
||||
|
|
Loading…
Add table
Reference in a new issue