added common padding for x, y, and frame paddings, to easily modify and provide consistent look and feel

This commit is contained in:
Blake Harnden 2019-12-11 14:36:27 -08:00
parent 69296d6ea9
commit 899eb51c55
21 changed files with 189 additions and 193 deletions

View file

@ -75,7 +75,7 @@ def check_directory():
editor = EDITORS[1] editor = EDITORS[1]
config = { config = {
"preferences": { "preferences": {
"theme": themes.DARK, "theme": themes.THEME_DARK,
"editor": editor, "editor": editor,
"terminal": terminal, "terminal": terminal,
"gui3d": "/usr/local/bin/std3d.sh", "gui3d": "/usr/local/bin/std3d.sh",

View file

@ -5,8 +5,8 @@ import tkinter as tk
from tkinter import font, ttk from tkinter import font, ttk
from coretk.dialogs.dialog import Dialog from coretk.dialogs.dialog import Dialog
from coretk.themes import FRAME_PAD, PADX, PADY
PAD = 5
PIXEL_SCALE = 100 PIXEL_SCALE = 100
@ -50,17 +50,17 @@ class SizeAndScaleDialog(Dialog):
self.draw_buttons() self.draw_buttons()
def draw_size(self): def draw_size(self):
label_frame = ttk.Labelframe(self.top, text="Size", padding=PAD) label_frame = ttk.Labelframe(self.top, text="Size", padding=FRAME_PAD)
label_frame.grid(sticky="ew") label_frame.grid(sticky="ew")
label_frame.columnconfigure(0, weight=1) label_frame.columnconfigure(0, weight=1)
# draw size row 1 # draw size row 1
frame = ttk.Frame(label_frame) frame = ttk.Frame(label_frame)
frame.grid(sticky="ew", pady=3) frame.grid(sticky="ew", pady=PADY)
frame.columnconfigure(1, weight=1) frame.columnconfigure(1, weight=1)
frame.columnconfigure(3, weight=1) frame.columnconfigure(3, weight=1)
label = ttk.Label(frame, text="Width") label = ttk.Label(frame, text="Width")
label.grid(row=0, column=0, sticky="w", padx=PAD) label.grid(row=0, column=0, sticky="w", padx=PADX)
entry = ttk.Entry( entry = ttk.Entry(
frame, frame,
textvariable=self.pixel_width, textvariable=self.pixel_width,
@ -68,9 +68,9 @@ class SizeAndScaleDialog(Dialog):
validatecommand=(self.validation.positive_int, "%P"), validatecommand=(self.validation.positive_int, "%P"),
) )
entry.bind("<FocusOut>", lambda event: self.validation.focus_out(event, "0")) entry.bind("<FocusOut>", lambda event: self.validation.focus_out(event, "0"))
entry.grid(row=0, column=1, sticky="ew", padx=PAD) entry.grid(row=0, column=1, sticky="ew", padx=PADX)
label = ttk.Label(frame, text="x Height") label = ttk.Label(frame, text="x Height")
label.grid(row=0, column=2, sticky="w", padx=PAD) label.grid(row=0, column=2, sticky="w", padx=PADX)
entry = ttk.Entry( entry = ttk.Entry(
frame, frame,
textvariable=self.pixel_height, textvariable=self.pixel_height,
@ -78,17 +78,17 @@ class SizeAndScaleDialog(Dialog):
validatecommand=(self.validation.positive_int, "%P"), validatecommand=(self.validation.positive_int, "%P"),
) )
entry.bind("<FocusOut>", lambda event: self.validation.focus_out(event, "0")) entry.bind("<FocusOut>", lambda event: self.validation.focus_out(event, "0"))
entry.grid(row=0, column=3, sticky="ew", padx=PAD) entry.grid(row=0, column=3, sticky="ew", padx=PADX)
label = ttk.Label(frame, text="Pixels") label = ttk.Label(frame, text="Pixels")
label.grid(row=0, column=4, sticky="w") label.grid(row=0, column=4, sticky="w")
# draw size row 2 # draw size row 2
frame = ttk.Frame(label_frame) frame = ttk.Frame(label_frame)
frame.grid(sticky="ew", pady=3) frame.grid(sticky="ew", pady=PADY)
frame.columnconfigure(1, weight=1) frame.columnconfigure(1, weight=1)
frame.columnconfigure(3, weight=1) frame.columnconfigure(3, weight=1)
label = ttk.Label(frame, text="Width") label = ttk.Label(frame, text="Width")
label.grid(row=0, column=0, sticky="w", padx=PAD) label.grid(row=0, column=0, sticky="w", padx=PADX)
entry = ttk.Entry( entry = ttk.Entry(
frame, frame,
textvariable=self.meters_width, textvariable=self.meters_width,
@ -96,9 +96,9 @@ class SizeAndScaleDialog(Dialog):
validatecommand=(self.validation.positive_float, "%P"), validatecommand=(self.validation.positive_float, "%P"),
) )
entry.bind("<FocusOut>", lambda event: self.validation.focus_out(event, "0")) entry.bind("<FocusOut>", lambda event: self.validation.focus_out(event, "0"))
entry.grid(row=0, column=1, sticky="ew", padx=PAD) entry.grid(row=0, column=1, sticky="ew", padx=PADX)
label = ttk.Label(frame, text="x Height") label = ttk.Label(frame, text="x Height")
label.grid(row=0, column=2, sticky="w", padx=PAD) label.grid(row=0, column=2, sticky="w", padx=PADX)
entry = ttk.Entry( entry = ttk.Entry(
frame, frame,
textvariable=self.meters_height, textvariable=self.meters_height,
@ -106,12 +106,12 @@ class SizeAndScaleDialog(Dialog):
validatecommand=(self.validation.positive_float, "%P"), validatecommand=(self.validation.positive_float, "%P"),
) )
entry.bind("<FocusOut>", lambda event: self.validation.focus_out(event, "0")) entry.bind("<FocusOut>", lambda event: self.validation.focus_out(event, "0"))
entry.grid(row=0, column=3, sticky="ew", padx=PAD) entry.grid(row=0, column=3, sticky="ew", padx=PADX)
label = ttk.Label(frame, text="Meters") label = ttk.Label(frame, text="Meters")
label.grid(row=0, column=4, sticky="w") label.grid(row=0, column=4, sticky="w")
def draw_scale(self): def draw_scale(self):
label_frame = ttk.Labelframe(self.top, text="Scale", padding=PAD) label_frame = ttk.Labelframe(self.top, text="Scale", padding=FRAME_PAD)
label_frame.grid(sticky="ew") label_frame.grid(sticky="ew")
label_frame.columnconfigure(0, weight=1) label_frame.columnconfigure(0, weight=1)
@ -119,7 +119,7 @@ class SizeAndScaleDialog(Dialog):
frame.grid(sticky="ew") frame.grid(sticky="ew")
frame.columnconfigure(1, weight=1) frame.columnconfigure(1, weight=1)
label = ttk.Label(frame, text=f"{PIXEL_SCALE} Pixels =") label = ttk.Label(frame, text=f"{PIXEL_SCALE} Pixels =")
label.grid(row=0, column=0, sticky="w", padx=PAD) label.grid(row=0, column=0, sticky="w", padx=PADX)
entry = ttk.Entry( entry = ttk.Entry(
frame, frame,
textvariable=self.scale, textvariable=self.scale,
@ -127,12 +127,14 @@ class SizeAndScaleDialog(Dialog):
validatecommand=(self.validation.positive_float, "%P"), validatecommand=(self.validation.positive_float, "%P"),
) )
entry.bind("<FocusOut>", lambda event: self.validation.focus_out(event, "0")) entry.bind("<FocusOut>", lambda event: self.validation.focus_out(event, "0"))
entry.grid(row=0, column=1, sticky="ew", padx=PAD) entry.grid(row=0, column=1, sticky="ew", padx=PADX)
label = ttk.Label(frame, text="Meters") label = ttk.Label(frame, text="Meters")
label.grid(row=0, column=2, sticky="w") label.grid(row=0, column=2, sticky="w")
def draw_reference_point(self): def draw_reference_point(self):
label_frame = ttk.Labelframe(self.top, text="Reference Point", padding=PAD) label_frame = ttk.Labelframe(
self.top, text="Reference Point", padding=FRAME_PAD
)
label_frame.grid(sticky="ew") label_frame.grid(sticky="ew")
label_frame.columnconfigure(0, weight=1) label_frame.columnconfigure(0, weight=1)
@ -142,12 +144,12 @@ class SizeAndScaleDialog(Dialog):
label.grid() label.grid()
frame = ttk.Frame(label_frame) frame = ttk.Frame(label_frame)
frame.grid(sticky="ew", pady=3) frame.grid(sticky="ew", pady=PADY)
frame.columnconfigure(1, weight=1) frame.columnconfigure(1, weight=1)
frame.columnconfigure(3, weight=1) frame.columnconfigure(3, weight=1)
label = ttk.Label(frame, text="X") label = ttk.Label(frame, text="X")
label.grid(row=0, column=0, sticky="w", padx=PAD) label.grid(row=0, column=0, sticky="w", padx=PADX)
entry = ttk.Entry( entry = ttk.Entry(
frame, frame,
textvariable=self.x, textvariable=self.x,
@ -155,10 +157,10 @@ class SizeAndScaleDialog(Dialog):
validatecommand=(self.validation.positive_float, "%P"), validatecommand=(self.validation.positive_float, "%P"),
) )
entry.bind("<FocusOut>", lambda event: self.validation.focus_out(event, "0")) entry.bind("<FocusOut>", lambda event: self.validation.focus_out(event, "0"))
entry.grid(row=0, column=1, sticky="ew", padx=PAD) entry.grid(row=0, column=1, sticky="ew", padx=PADX)
label = ttk.Label(frame, text="Y") label = ttk.Label(frame, text="Y")
label.grid(row=0, column=2, sticky="w", padx=PAD) label.grid(row=0, column=2, sticky="w", padx=PADX)
entry = ttk.Entry( entry = ttk.Entry(
frame, frame,
textvariable=self.y, textvariable=self.y,
@ -166,19 +168,19 @@ class SizeAndScaleDialog(Dialog):
validatecommand=(self.validation.positive_float, "%P"), validatecommand=(self.validation.positive_float, "%P"),
) )
entry.bind("<FocusOut>", lambda event: self.validation.focus_out(event, "0")) entry.bind("<FocusOut>", lambda event: self.validation.focus_out(event, "0"))
entry.grid(row=0, column=3, sticky="ew", padx=PAD) entry.grid(row=0, column=3, sticky="ew", padx=PADX)
label = ttk.Label(label_frame, text="Translates To") label = ttk.Label(label_frame, text="Translates To")
label.grid() label.grid()
frame = ttk.Frame(label_frame) frame = ttk.Frame(label_frame)
frame.grid(sticky="ew", pady=3) frame.grid(sticky="ew", pady=PADY)
frame.columnconfigure(1, weight=1) frame.columnconfigure(1, weight=1)
frame.columnconfigure(3, weight=1) frame.columnconfigure(3, weight=1)
frame.columnconfigure(5, weight=1) frame.columnconfigure(5, weight=1)
label = ttk.Label(frame, text="Lat") label = ttk.Label(frame, text="Lat")
label.grid(row=0, column=0, sticky="w", padx=PAD) label.grid(row=0, column=0, sticky="w", padx=PADX)
entry = ttk.Entry( entry = ttk.Entry(
frame, frame,
textvariable=self.lat, textvariable=self.lat,
@ -186,10 +188,10 @@ class SizeAndScaleDialog(Dialog):
validatecommand=(self.validation.positive_float, "%P"), validatecommand=(self.validation.positive_float, "%P"),
) )
entry.bind("<FocusOut>", lambda event: self.validation.focus_out(event, "0")) entry.bind("<FocusOut>", lambda event: self.validation.focus_out(event, "0"))
entry.grid(row=0, column=1, sticky="ew", padx=PAD) entry.grid(row=0, column=1, sticky="ew", padx=PADX)
label = ttk.Label(frame, text="Lon") label = ttk.Label(frame, text="Lon")
label.grid(row=0, column=2, sticky="w", padx=PAD) label.grid(row=0, column=2, sticky="w", padx=PADX)
entry = ttk.Entry( entry = ttk.Entry(
frame, frame,
textvariable=self.lon, textvariable=self.lon,
@ -197,10 +199,10 @@ class SizeAndScaleDialog(Dialog):
validatecommand=(self.validation.positive_float, "%P"), validatecommand=(self.validation.positive_float, "%P"),
) )
entry.bind("<FocusOut>", lambda event: self.validation.focus_out(event, "0")) entry.bind("<FocusOut>", lambda event: self.validation.focus_out(event, "0"))
entry.grid(row=0, column=3, sticky="ew", padx=PAD) entry.grid(row=0, column=3, sticky="ew", padx=PADX)
label = ttk.Label(frame, text="Alt") label = ttk.Label(frame, text="Alt")
label.grid(row=0, column=4, sticky="w", padx=PAD) label.grid(row=0, column=4, sticky="w", padx=PADX)
entry = ttk.Entry( entry = ttk.Entry(
frame, frame,
textvariable=self.alt, textvariable=self.alt,
@ -214,7 +216,7 @@ class SizeAndScaleDialog(Dialog):
button = ttk.Checkbutton( button = ttk.Checkbutton(
self.top, text="Save as default?", variable=self.save_default self.top, text="Save as default?", variable=self.save_default
) )
button.grid(sticky="w", pady=3) button.grid(sticky="w", pady=PADY)
def draw_buttons(self): def draw_buttons(self):
frame = ttk.Frame(self.top) frame = ttk.Frame(self.top)
@ -223,7 +225,7 @@ class SizeAndScaleDialog(Dialog):
frame.grid(sticky="ew") frame.grid(sticky="ew")
button = ttk.Button(frame, text="Apply", command=self.click_apply) button = ttk.Button(frame, text="Apply", command=self.click_apply)
button.grid(row=0, column=0, sticky="ew", padx=PAD) button.grid(row=0, column=0, sticky="ew", padx=PADX)
button = ttk.Button(frame, text="Cancel", command=self.destroy) button = ttk.Button(frame, text="Cancel", command=self.destroy)
button.grid(row=0, column=1, sticky="ew") button.grid(row=0, column=1, sticky="ew")

View file

@ -8,8 +8,7 @@ from tkinter import filedialog, ttk
from coretk.appconfig import BACKGROUNDS_PATH from coretk.appconfig import BACKGROUNDS_PATH
from coretk.dialogs.dialog import Dialog from coretk.dialogs.dialog import Dialog
from coretk.images import Images from coretk.images import Images
from coretk.themes import PADX, PADY
PAD = 5
class CanvasBackgroundDialog(Dialog): class CanvasBackgroundDialog(Dialog):
@ -43,7 +42,7 @@ class CanvasBackgroundDialog(Dialog):
self.image_label = ttk.Label( self.image_label = ttk.Label(
self.top, text="(image preview)", width=32, anchor=tk.CENTER self.top, text="(image preview)", width=32, anchor=tk.CENTER
) )
self.image_label.grid(pady=PAD) self.image_label.grid(pady=PADY)
def draw_image_label(self): def draw_image_label(self):
label = ttk.Label(self.top, text="Image filename: ") label = ttk.Label(self.top, text="Image filename: ")
@ -60,10 +59,10 @@ class CanvasBackgroundDialog(Dialog):
entry = ttk.Entry(frame, textvariable=self.filename) entry = ttk.Entry(frame, textvariable=self.filename)
entry.focus() entry.focus()
entry.grid(row=0, column=0, sticky="ew", padx=PAD) entry.grid(row=0, column=0, sticky="ew", padx=PADX)
button = ttk.Button(frame, text="...", command=self.click_open_image) button = ttk.Button(frame, text="...", command=self.click_open_image)
button.grid(row=0, column=1, sticky="ew", padx=PAD) button.grid(row=0, column=1, sticky="ew", padx=PADX)
button = ttk.Button(frame, text="Clear", command=self.click_clear) button = ttk.Button(frame, text="Clear", command=self.click_clear)
button.grid(row=0, column=2, sticky="ew") button.grid(row=0, column=2, sticky="ew")
@ -104,7 +103,7 @@ class CanvasBackgroundDialog(Dialog):
checkbutton = ttk.Checkbutton( checkbutton = ttk.Checkbutton(
self.top, text="Show grid", variable=self.show_grid self.top, text="Show grid", variable=self.show_grid
) )
checkbutton.grid(sticky="ew", padx=PAD) checkbutton.grid(sticky="ew", padx=PADX)
checkbutton = ttk.Checkbutton( checkbutton = ttk.Checkbutton(
self.top, self.top,
@ -112,16 +111,16 @@ class CanvasBackgroundDialog(Dialog):
variable=self.adjust_to_dim, variable=self.adjust_to_dim,
command=self.click_adjust_canvas, command=self.click_adjust_canvas,
) )
checkbutton.grid(sticky="ew", padx=PAD) checkbutton.grid(sticky="ew", padx=PADX)
def draw_buttons(self): def draw_buttons(self):
frame = ttk.Frame(self.top) frame = ttk.Frame(self.top)
frame.grid(pady=PAD, sticky="ew") frame.grid(pady=PADY, sticky="ew")
frame.columnconfigure(0, weight=1) frame.columnconfigure(0, weight=1)
frame.columnconfigure(1, weight=1) frame.columnconfigure(1, weight=1)
button = ttk.Button(frame, text="Apply", command=self.click_apply) button = ttk.Button(frame, text="Apply", command=self.click_apply)
button.grid(row=0, column=0, sticky="ew", padx=PAD) button.grid(row=0, column=0, sticky="ew", padx=PADX)
button = ttk.Button(frame, text="Cancel", command=self.destroy) button = ttk.Button(frame, text="Cancel", command=self.destroy)
button.grid(row=0, column=1, sticky="ew") button.grid(row=0, column=1, sticky="ew")

View file

@ -6,10 +6,9 @@ from tkinter import ttk
from coretk.dialogs.dialog import Dialog from coretk.dialogs.dialog import Dialog
from coretk.dialogs.icondialog import IconDialog from coretk.dialogs.icondialog import IconDialog
from coretk.nodeutils import NodeDraw from coretk.nodeutils import NodeDraw
from coretk.themes import FRAME_PAD, PADX, PADY
from coretk.widgets import CheckboxList, ListboxScroll from coretk.widgets import CheckboxList, ListboxScroll
PAD = 5
class ServicesSelectDialog(Dialog): class ServicesSelectDialog(Dialog):
def __init__(self, master, app, current_services): def __init__(self, master, app, current_services):
@ -25,11 +24,11 @@ class ServicesSelectDialog(Dialog):
self.top.rowconfigure(0, weight=1) self.top.rowconfigure(0, weight=1)
frame = ttk.Frame(self.top) frame = ttk.Frame(self.top)
frame.grid(stick="nsew", pady=PAD) frame.grid(stick="nsew", pady=PADY)
frame.rowconfigure(0, weight=1) frame.rowconfigure(0, weight=1)
for i in range(3): for i in range(3):
frame.columnconfigure(i, weight=1) frame.columnconfigure(i, weight=1)
self.groups = ListboxScroll(frame, text="Groups", padding=PAD) self.groups = ListboxScroll(frame, text="Groups", padding=FRAME_PAD)
self.groups.grid(row=0, column=0, sticky="nsew") self.groups.grid(row=0, column=0, sticky="nsew")
for group in sorted(self.app.core.services): for group in sorted(self.app.core.services):
self.groups.listbox.insert(tk.END, group) self.groups.listbox.insert(tk.END, group)
@ -37,11 +36,15 @@ class ServicesSelectDialog(Dialog):
self.groups.listbox.selection_set(0) self.groups.listbox.selection_set(0)
self.services = CheckboxList( self.services = CheckboxList(
frame, self.app, text="Services", clicked=self.service_clicked, padding=PAD frame,
self.app,
text="Services",
clicked=self.service_clicked,
padding=FRAME_PAD,
) )
self.services.grid(row=0, column=1, sticky="nsew") self.services.grid(row=0, column=1, sticky="nsew")
self.current = ListboxScroll(frame, text="Selected", padding=PAD) self.current = ListboxScroll(frame, text="Selected", padding=FRAME_PAD)
self.current.grid(row=0, column=2, sticky="nsew") self.current.grid(row=0, column=2, sticky="nsew")
for service in sorted(self.current_services): for service in sorted(self.current_services):
self.current.listbox.insert(tk.END, service) self.current.listbox.insert(tk.END, service)
@ -51,7 +54,7 @@ class ServicesSelectDialog(Dialog):
for i in range(2): for i in range(2):
frame.columnconfigure(i, weight=1) frame.columnconfigure(i, weight=1)
button = ttk.Button(frame, text="Save", command=self.destroy) button = ttk.Button(frame, text="Save", command=self.destroy)
button.grid(row=0, column=0, sticky="ew", padx=PAD) button.grid(row=0, column=0, sticky="ew", padx=PADX)
button = ttk.Button(frame, text="Cancel", command=self.click_cancel) button = ttk.Button(frame, text="Cancel", command=self.click_cancel)
button.grid(row=0, column=1, sticky="ew") button.grid(row=0, column=1, sticky="ew")
@ -106,12 +109,12 @@ class CustomNodesDialog(Dialog):
def draw_node_config(self): def draw_node_config(self):
frame = ttk.Frame(self.top) frame = ttk.Frame(self.top)
frame.grid(sticky="nsew", pady=PAD) frame.grid(sticky="nsew", pady=PADY)
frame.columnconfigure(0, weight=1) frame.columnconfigure(0, weight=1)
frame.rowconfigure(0, weight=1) frame.rowconfigure(0, weight=1)
self.nodes_list = ListboxScroll(frame, text="Nodes", padding=PAD) self.nodes_list = ListboxScroll(frame, text="Nodes", padding=FRAME_PAD)
self.nodes_list.grid(row=0, column=0, sticky="nsew", padx=PAD) self.nodes_list.grid(row=0, column=0, sticky="nsew", padx=PADX)
self.nodes_list.listbox.bind("<<ListboxSelect>>", self.handle_node_select) self.nodes_list.listbox.bind("<<ListboxSelect>>", self.handle_node_select)
for name in sorted(self.app.core.custom_nodes): for name in sorted(self.app.core.custom_nodes):
self.nodes_list.listbox.insert(tk.END, name) self.nodes_list.listbox.insert(tk.END, name)
@ -130,17 +133,17 @@ class CustomNodesDialog(Dialog):
def draw_node_buttons(self): def draw_node_buttons(self):
frame = ttk.Frame(self.top) frame = ttk.Frame(self.top)
frame.grid(sticky="ew", pady=PAD) frame.grid(sticky="ew", pady=PADY)
for i in range(3): for i in range(3):
frame.columnconfigure(i, weight=1) frame.columnconfigure(i, weight=1)
button = ttk.Button(frame, text="Create", command=self.click_create) button = ttk.Button(frame, text="Create", command=self.click_create)
button.grid(row=0, column=0, sticky="ew", padx=PAD) button.grid(row=0, column=0, sticky="ew", padx=PADX)
self.edit_button = ttk.Button( self.edit_button = ttk.Button(
frame, text="Edit", state=tk.DISABLED, command=self.click_edit frame, text="Edit", state=tk.DISABLED, command=self.click_edit
) )
self.edit_button.grid(row=0, column=1, sticky="ew", padx=PAD) self.edit_button.grid(row=0, column=1, sticky="ew", padx=PADX)
self.delete_button = ttk.Button( self.delete_button = ttk.Button(
frame, text="Delete", state=tk.DISABLED, command=self.click_delete frame, text="Delete", state=tk.DISABLED, command=self.click_delete
@ -154,7 +157,7 @@ class CustomNodesDialog(Dialog):
frame.columnconfigure(i, weight=1) frame.columnconfigure(i, weight=1)
button = ttk.Button(frame, text="Save", command=self.click_save) button = ttk.Button(frame, text="Save", command=self.click_save)
button.grid(row=0, column=0, sticky="ew", padx=PAD) button.grid(row=0, column=0, sticky="ew", padx=PADX)
button = ttk.Button(frame, text="Cancel", command=self.destroy) button = ttk.Button(frame, text="Cancel", command=self.destroy)
button.grid(row=0, column=1, sticky="ew") button.grid(row=0, column=1, sticky="ew")

View file

@ -2,8 +2,7 @@ import tkinter as tk
from tkinter import ttk from tkinter import ttk
from coretk.images import ImageEnum, Images from coretk.images import ImageEnum, Images
from coretk.themes import DIALOG_PAD
DIALOG_PAD = 5
class Dialog(tk.Toplevel): class Dialog(tk.Toplevel):

View file

@ -11,10 +11,9 @@ import grpc
from coretk.dialogs.dialog import Dialog from coretk.dialogs.dialog import Dialog
from coretk.errors import show_grpc_error from coretk.errors import show_grpc_error
from coretk.images import ImageEnum, Images from coretk.images import ImageEnum, Images
from coretk.themes import PADX, PADY
from coretk.widgets import ConfigFrame from coretk.widgets import ConfigFrame
PAD = 5
class GlobalEmaneDialog(Dialog): class GlobalEmaneDialog(Dialog):
def __init__(self, master, app): def __init__(self, master, app):
@ -27,7 +26,7 @@ class GlobalEmaneDialog(Dialog):
self.top.rowconfigure(0, weight=1) self.top.rowconfigure(0, weight=1)
self.config_frame = ConfigFrame(self.top, self.app, self.app.core.emane_config) self.config_frame = ConfigFrame(self.top, self.app, self.app.core.emane_config)
self.config_frame.draw_config() self.config_frame.draw_config()
self.config_frame.grid(sticky="nsew", pady=PAD) self.config_frame.grid(sticky="nsew", pady=PADY)
self.draw_spacer() self.draw_spacer()
self.draw_buttons() self.draw_buttons()
@ -37,7 +36,7 @@ class GlobalEmaneDialog(Dialog):
for i in range(2): for i in range(2):
frame.columnconfigure(i, weight=1) frame.columnconfigure(i, weight=1)
button = ttk.Button(frame, text="Apply", command=self.click_apply) button = ttk.Button(frame, text="Apply", command=self.click_apply)
button.grid(row=0, column=0, sticky="ew", padx=PAD) button.grid(row=0, column=0, sticky="ew", padx=PADX)
button = ttk.Button(frame, text="Cancel", command=self.destroy) button = ttk.Button(frame, text="Cancel", command=self.destroy)
button.grid(row=0, column=1, sticky="ew") button.grid(row=0, column=1, sticky="ew")
@ -68,7 +67,7 @@ class EmaneModelDialog(Dialog):
self.top.rowconfigure(0, weight=1) self.top.rowconfigure(0, weight=1)
self.config_frame = ConfigFrame(self.top, self.app, self.config) self.config_frame = ConfigFrame(self.top, self.app, self.config)
self.config_frame.draw_config() self.config_frame.draw_config()
self.config_frame.grid(sticky="nsew", pady=PAD) self.config_frame.grid(sticky="nsew", pady=PADY)
self.draw_spacer() self.draw_spacer()
self.draw_buttons() self.draw_buttons()
@ -78,7 +77,7 @@ class EmaneModelDialog(Dialog):
for i in range(2): for i in range(2):
frame.columnconfigure(i, weight=1) frame.columnconfigure(i, weight=1)
button = ttk.Button(frame, text="Apply", command=self.click_apply) button = ttk.Button(frame, text="Apply", command=self.click_apply)
button.grid(row=0, column=0, sticky="ew", padx=PAD) button.grid(row=0, column=0, sticky="ew", padx=PADX)
button = ttk.Button(frame, text="Cancel", command=self.destroy) button = ttk.Button(frame, text="Cancel", command=self.destroy)
button.grid(row=0, column=1, sticky="ew") button.grid(row=0, column=1, sticky="ew")
@ -126,7 +125,7 @@ class EmaneConfigDialog(Dialog):
"\nusing pluggable MAC and PHY modules. Refer to the wiki for configuration option details", "\nusing pluggable MAC and PHY modules. Refer to the wiki for configuration option details",
justify=tk.CENTER, justify=tk.CENTER,
) )
label.grid(pady=PAD) label.grid(pady=PADY)
image = Images.get(ImageEnum.EDITNODE, 16) image = Images.get(ImageEnum.EDITNODE, 16)
button = ttk.Button( button = ttk.Button(
@ -139,7 +138,7 @@ class EmaneConfigDialog(Dialog):
), ),
) )
button.image = image button.image = image
button.grid(sticky="ew", pady=PAD) button.grid(sticky="ew", pady=PADY)
def draw_emane_models(self): def draw_emane_models(self):
""" """
@ -148,7 +147,7 @@ class EmaneConfigDialog(Dialog):
:return: nothing :return: nothing
""" """
frame = ttk.Frame(self.top) frame = ttk.Frame(self.top)
frame.grid(sticky="ew", pady=PAD) frame.grid(sticky="ew", pady=PADY)
frame.columnconfigure(1, weight=1) frame.columnconfigure(1, weight=1)
label = ttk.Label(frame, text="Model") label = ttk.Label(frame, text="Model")
@ -166,7 +165,7 @@ class EmaneConfigDialog(Dialog):
def draw_emane_buttons(self): def draw_emane_buttons(self):
frame = ttk.Frame(self.top) frame = ttk.Frame(self.top)
frame.grid(sticky="ew", pady=PAD) frame.grid(sticky="ew", pady=PADY)
for i in range(2): for i in range(2):
frame.columnconfigure(i, weight=1) frame.columnconfigure(i, weight=1)
@ -179,7 +178,7 @@ class EmaneConfigDialog(Dialog):
command=self.click_model_config, command=self.click_model_config,
) )
self.emane_model_button.image = image self.emane_model_button.image = image
self.emane_model_button.grid(row=0, column=0, padx=PAD, sticky="ew") self.emane_model_button.grid(row=0, column=0, padx=PADX, sticky="ew")
image = Images.get(ImageEnum.EDITNODE, 16) image = Images.get(ImageEnum.EDITNODE, 16)
button = ttk.Button( button = ttk.Button(
@ -199,7 +198,7 @@ class EmaneConfigDialog(Dialog):
frame.columnconfigure(i, weight=1) frame.columnconfigure(i, weight=1)
button = ttk.Button(frame, text="Apply", command=self.click_apply) button = ttk.Button(frame, text="Apply", command=self.click_apply)
button.grid(row=0, column=0, padx=PAD, sticky="ew") button.grid(row=0, column=0, padx=PADX, sticky="ew")
button = ttk.Button(frame, text="Cancel", command=self.destroy) button = ttk.Button(frame, text="Cancel", command=self.destroy)
button.grid(row=0, column=1, sticky="ew") button.grid(row=0, column=1, sticky="ew")

View file

@ -3,10 +3,9 @@ from tkinter import ttk
from core.api.grpc import core_pb2 from core.api.grpc import core_pb2
from coretk.dialogs.dialog import Dialog from coretk.dialogs.dialog import Dialog
from coretk.themes import PADX, PADY
from coretk.widgets import CodeText from coretk.widgets import CodeText
PAD = 5
class HookDialog(Dialog): class HookDialog(Dialog):
def __init__(self, master, app): def __init__(self, master, app):
@ -23,14 +22,14 @@ class HookDialog(Dialog):
# name and states # name and states
frame = ttk.Frame(self.top) frame = ttk.Frame(self.top)
frame.grid(sticky="ew", pady=PAD) frame.grid(sticky="ew", pady=PADY)
frame.columnconfigure(0, weight=2) frame.columnconfigure(0, weight=2)
frame.columnconfigure(1, weight=7) frame.columnconfigure(1, weight=7)
frame.columnconfigure(2, weight=1) frame.columnconfigure(2, weight=1)
label = ttk.Label(frame, text="Name") label = ttk.Label(frame, text="Name")
label.grid(row=0, column=0, sticky="ew", padx=PAD) label.grid(row=0, column=0, sticky="ew", padx=PADX)
entry = ttk.Entry(frame, textvariable=self.name) entry = ttk.Entry(frame, textvariable=self.name)
entry.grid(row=0, column=1, sticky="ew", padx=PAD) entry.grid(row=0, column=1, sticky="ew", padx=PADX)
values = tuple(x for x in core_pb2.SessionState.Enum.keys() if x != "NONE") values = tuple(x for x in core_pb2.SessionState.Enum.keys() if x != "NONE")
initial_state = core_pb2.SessionState.Enum.Name(core_pb2.SessionState.RUNTIME) initial_state = core_pb2.SessionState.Enum.Name(core_pb2.SessionState.RUNTIME)
self.state.set(initial_state) self.state.set(initial_state)
@ -59,7 +58,7 @@ class HookDialog(Dialog):
for i in range(2): for i in range(2):
frame.columnconfigure(i, weight=1) frame.columnconfigure(i, weight=1)
button = ttk.Button(frame, text="Save", command=lambda: self.save()) button = ttk.Button(frame, text="Save", command=lambda: self.save())
button.grid(row=0, column=0, sticky="ew", padx=PAD) button.grid(row=0, column=0, sticky="ew", padx=PADX)
button = ttk.Button(frame, text="Cancel", command=lambda: self.destroy()) button = ttk.Button(frame, text="Cancel", command=lambda: self.destroy())
button.grid(row=0, column=1, sticky="ew") button.grid(row=0, column=1, sticky="ew")
@ -98,7 +97,7 @@ class HooksDialog(Dialog):
self.top.rowconfigure(0, weight=1) self.top.rowconfigure(0, weight=1)
self.listbox = tk.Listbox(self.top) self.listbox = tk.Listbox(self.top)
self.listbox.grid(sticky="nsew", pady=PAD) self.listbox.grid(sticky="nsew", pady=PADY)
self.listbox.bind("<<ListboxSelect>>", self.select) self.listbox.bind("<<ListboxSelect>>", self.select)
for hook_file in self.app.core.hooks: for hook_file in self.app.core.hooks:
self.listbox.insert(tk.END, hook_file) self.listbox.insert(tk.END, hook_file)
@ -108,15 +107,15 @@ class HooksDialog(Dialog):
for i in range(4): for i in range(4):
frame.columnconfigure(i, weight=1) frame.columnconfigure(i, weight=1)
button = ttk.Button(frame, text="Create", command=self.click_create) button = ttk.Button(frame, text="Create", command=self.click_create)
button.grid(row=0, column=0, sticky="ew", padx=PAD) button.grid(row=0, column=0, sticky="ew", padx=PADX)
self.edit_button = ttk.Button( self.edit_button = ttk.Button(
frame, text="Edit", state=tk.DISABLED, command=self.click_edit frame, text="Edit", state=tk.DISABLED, command=self.click_edit
) )
self.edit_button.grid(row=0, column=1, sticky="ew", padx=PAD) self.edit_button.grid(row=0, column=1, sticky="ew", padx=PADX)
self.delete_button = ttk.Button( self.delete_button = ttk.Button(
frame, text="Delete", state=tk.DISABLED, command=self.click_delete frame, text="Delete", state=tk.DISABLED, command=self.click_delete
) )
self.delete_button.grid(row=0, column=2, sticky="ew", padx=PAD) self.delete_button.grid(row=0, column=2, sticky="ew", padx=PADX)
button = ttk.Button(frame, text="Cancel", command=lambda: self.destroy()) button = ttk.Button(frame, text="Cancel", command=lambda: self.destroy())
button.grid(row=0, column=3, sticky="ew") button.grid(row=0, column=3, sticky="ew")

View file

@ -5,8 +5,7 @@ from coretk import nodeutils
from coretk.appconfig import ICONS_PATH from coretk.appconfig import ICONS_PATH
from coretk.dialogs.dialog import Dialog from coretk.dialogs.dialog import Dialog
from coretk.images import Images from coretk.images import Images
from coretk.themes import PADX, PADY
PAD = 5
class IconDialog(Dialog): class IconDialog(Dialog):
@ -22,19 +21,19 @@ class IconDialog(Dialog):
# row one # row one
frame = ttk.Frame(self.top) frame = ttk.Frame(self.top)
frame.grid(pady=PAD, sticky="ew") frame.grid(pady=PADY, sticky="ew")
frame.columnconfigure(0, weight=1) frame.columnconfigure(0, weight=1)
frame.columnconfigure(1, weight=3) frame.columnconfigure(1, weight=3)
label = ttk.Label(frame, text="Image") label = ttk.Label(frame, text="Image")
label.grid(row=0, column=0, sticky="ew", padx=PAD) label.grid(row=0, column=0, sticky="ew", padx=PADX)
entry = ttk.Entry(frame, textvariable=self.file_path) entry = ttk.Entry(frame, textvariable=self.file_path)
entry.grid(row=0, column=1, sticky="ew", padx=PAD) entry.grid(row=0, column=1, sticky="ew", padx=PADX)
button = ttk.Button(frame, text="...", command=self.click_file) button = ttk.Button(frame, text="...", command=self.click_file)
button.grid(row=0, column=2) button.grid(row=0, column=2)
# row two # row two
self.image_label = ttk.Label(self.top, image=self.image, anchor=tk.CENTER) self.image_label = ttk.Label(self.top, image=self.image, anchor=tk.CENTER)
self.image_label.grid(pady=PAD, sticky="ew") self.image_label.grid(pady=PADY, sticky="ew")
# spacer # spacer
self.draw_spacer() self.draw_spacer()
@ -45,7 +44,7 @@ class IconDialog(Dialog):
frame.columnconfigure(0, weight=1) frame.columnconfigure(0, weight=1)
frame.columnconfigure(1, weight=1) frame.columnconfigure(1, weight=1)
button = ttk.Button(frame, text="Apply", command=self.destroy) button = ttk.Button(frame, text="Apply", command=self.destroy)
button.grid(row=0, column=0, sticky="ew", padx=PAD) button.grid(row=0, column=0, sticky="ew", padx=PADX)
button = ttk.Button(frame, text="Cancel", command=self.click_cancel) button = ttk.Button(frame, text="Cancel", command=self.click_cancel)
button.grid(row=0, column=1, sticky="ew") button.grid(row=0, column=1, sticky="ew")

View file

@ -7,10 +7,9 @@ import grpc
from coretk.dialogs.dialog import Dialog from coretk.dialogs.dialog import Dialog
from coretk.errors import show_grpc_error from coretk.errors import show_grpc_error
from coretk.themes import PADX, PADY
from coretk.widgets import ConfigFrame from coretk.widgets import ConfigFrame
PAD = 5
class MobilityConfigDialog(Dialog): class MobilityConfigDialog(Dialog):
def __init__(self, master, app, canvas_node): def __init__(self, master, app, canvas_node):
@ -35,7 +34,7 @@ class MobilityConfigDialog(Dialog):
self.top.rowconfigure(0, weight=1) self.top.rowconfigure(0, weight=1)
self.config_frame = ConfigFrame(self.top, self.app, self.config) self.config_frame = ConfigFrame(self.top, self.app, self.config)
self.config_frame.draw_config() self.config_frame.draw_config()
self.config_frame.grid(sticky="nsew", pady=PAD) self.config_frame.grid(sticky="nsew", pady=PADY)
self.draw_apply_buttons() self.draw_apply_buttons()
def draw_apply_buttons(self): def draw_apply_buttons(self):
@ -45,7 +44,7 @@ class MobilityConfigDialog(Dialog):
frame.columnconfigure(i, weight=1) frame.columnconfigure(i, weight=1)
button = ttk.Button(frame, text="Apply", command=self.click_apply) button = ttk.Button(frame, text="Apply", command=self.click_apply)
button.grid(row=0, column=0, padx=PAD, sticky="ew") button.grid(row=0, column=0, padx=PADX, sticky="ew")
button = ttk.Button(frame, text="Cancel", command=self.destroy) button = ttk.Button(frame, text="Cancel", command=self.destroy)
button.grid(row=0, column=1, sticky="ew") button.grid(row=0, column=1, sticky="ew")

View file

@ -7,8 +7,8 @@ from core.api.grpc.core_pb2 import MobilityAction
from coretk.dialogs.dialog import Dialog from coretk.dialogs.dialog import Dialog
from coretk.errors import show_grpc_error from coretk.errors import show_grpc_error
from coretk.images import ImageEnum, Images from coretk.images import ImageEnum, Images
from coretk.themes import PADX, PADY
PAD = 5
ICON_SIZE = 16 ICON_SIZE = 16
@ -77,36 +77,36 @@ class MobilityPlayerDialog(Dialog):
file_name = self.config["file"].value file_name = self.config["file"].value
label = ttk.Label(self.top, text=file_name) label = ttk.Label(self.top, text=file_name)
label.grid(sticky="ew", pady=PAD) label.grid(sticky="ew", pady=PADY)
self.progressbar = ttk.Progressbar(self.top, mode="indeterminate") self.progressbar = ttk.Progressbar(self.top, mode="indeterminate")
self.progressbar.grid(sticky="ew", pady=PAD) self.progressbar.grid(sticky="ew", pady=PADY)
frame = ttk.Frame(self.top) frame = ttk.Frame(self.top)
frame.grid(sticky="ew", pady=PAD) frame.grid(sticky="ew", pady=PADY)
for i in range(3): for i in range(3):
frame.columnconfigure(i, weight=1) frame.columnconfigure(i, weight=1)
image = Images.get(ImageEnum.START, width=ICON_SIZE) image = Images.get(ImageEnum.START, width=ICON_SIZE)
self.play_button = ttk.Button(frame, image=image, command=self.click_play) self.play_button = ttk.Button(frame, image=image, command=self.click_play)
self.play_button.image = image self.play_button.image = image
self.play_button.grid(row=0, column=0, sticky="ew", padx=PAD) self.play_button.grid(row=0, column=0, sticky="ew", padx=PADX)
image = Images.get(ImageEnum.PAUSE, width=ICON_SIZE) image = Images.get(ImageEnum.PAUSE, width=ICON_SIZE)
self.pause_button = ttk.Button(frame, image=image, command=self.click_pause) self.pause_button = ttk.Button(frame, image=image, command=self.click_pause)
self.pause_button.image = image self.pause_button.image = image
self.pause_button.grid(row=0, column=1, sticky="ew", padx=PAD) self.pause_button.grid(row=0, column=1, sticky="ew", padx=PADX)
image = Images.get(ImageEnum.STOP, width=ICON_SIZE) image = Images.get(ImageEnum.STOP, width=ICON_SIZE)
self.stop_button = ttk.Button(frame, image=image, command=self.click_stop) self.stop_button = ttk.Button(frame, image=image, command=self.click_stop)
self.stop_button.image = image self.stop_button.image = image
self.stop_button.grid(row=0, column=2, sticky="ew", padx=PAD) self.stop_button.grid(row=0, column=2, sticky="ew", padx=PADX)
loop = tk.IntVar(value=int(self.config["loop"].value == "1")) loop = tk.IntVar(value=int(self.config["loop"].value == "1"))
checkbutton = ttk.Checkbutton( checkbutton = ttk.Checkbutton(
frame, text="Loop?", variable=loop, state=tk.DISABLED frame, text="Loop?", variable=loop, state=tk.DISABLED
) )
checkbutton.grid(row=0, column=3, padx=PAD) checkbutton.grid(row=0, column=3, padx=PADX)
rate = self.config["refresh_ms"].value rate = self.config["refresh_ms"].value
label = ttk.Label(frame, text=f"rate {rate} ms") label = ttk.Label(frame, text=f"rate {rate} ms")

View file

@ -7,10 +7,9 @@ from coretk.dialogs.dialog import Dialog
from coretk.dialogs.icondialog import IconDialog from coretk.dialogs.icondialog import IconDialog
from coretk.dialogs.nodeservice import NodeService from coretk.dialogs.nodeservice import NodeService
from coretk.nodeutils import NodeUtils from coretk.nodeutils import NodeUtils
from coretk.themes import FRAME_PAD, PADX, PADY
from coretk.widgets import FrameScroll from coretk.widgets import FrameScroll
PAD = 5
def mac_auto(is_auto, entry): def mac_auto(is_auto, entry):
logging.info("mac auto clicked") logging.info("mac auto clicked")
@ -68,7 +67,7 @@ class NodeConfigDialog(Dialog):
# icon field # icon field
label = ttk.Label(frame, text="Icon") label = ttk.Label(frame, text="Icon")
label.grid(row=row, column=0, sticky="ew", padx=PAD, pady=PAD) label.grid(row=row, column=0, sticky="ew", padx=PADX, pady=PADY)
self.image_button = ttk.Button( self.image_button = ttk.Button(
frame, frame,
text="Icon", text="Icon",
@ -81,7 +80,7 @@ class NodeConfigDialog(Dialog):
# name field # name field
label = ttk.Label(frame, text="Name") label = ttk.Label(frame, text="Name")
label.grid(row=row, column=0, sticky="ew", padx=PAD, pady=PAD) label.grid(row=row, column=0, sticky="ew", padx=PADX, pady=PADY)
entry = ttk.Entry( entry = ttk.Entry(
frame, frame,
textvariable=self.name, textvariable=self.name,
@ -97,7 +96,7 @@ class NodeConfigDialog(Dialog):
# node type field # node type field
if NodeUtils.is_model_node(self.node.type): if NodeUtils.is_model_node(self.node.type):
label = ttk.Label(frame, text="Type") label = ttk.Label(frame, text="Type")
label.grid(row=row, column=0, sticky="ew", padx=PAD, pady=PAD) label.grid(row=row, column=0, sticky="ew", padx=PADX, pady=PADY)
combobox = ttk.Combobox( combobox = ttk.Combobox(
frame, frame,
textvariable=self.type, textvariable=self.type,
@ -110,7 +109,7 @@ class NodeConfigDialog(Dialog):
# container image field # container image field
if NodeUtils.is_image_node(self.node.type): if NodeUtils.is_image_node(self.node.type):
label = ttk.Label(frame, text="Image") label = ttk.Label(frame, text="Image")
label.grid(row=row, column=0, sticky="ew", padx=PAD, pady=PAD) label.grid(row=row, column=0, sticky="ew", padx=PADX, pady=PADY)
entry = ttk.Entry(frame, textvariable=self.container_image) entry = ttk.Entry(frame, textvariable=self.container_image)
entry.grid(row=row, column=1, sticky="ew") entry.grid(row=row, column=1, sticky="ew")
row += 1 row += 1
@ -120,7 +119,7 @@ class NodeConfigDialog(Dialog):
frame.grid(sticky="ew") frame.grid(sticky="ew")
frame.columnconfigure(1, weight=1) frame.columnconfigure(1, weight=1)
label = ttk.Label(frame, text="Server") label = ttk.Label(frame, text="Server")
label.grid(row=row, column=0, sticky="ew", padx=PAD, pady=PAD) label.grid(row=row, column=0, sticky="ew", padx=PADX, pady=PADY)
servers = ["localhost"] servers = ["localhost"]
servers.extend(list(sorted(self.app.core.servers.keys()))) servers.extend(list(sorted(self.app.core.servers.keys())))
combobox = ttk.Combobox( combobox = ttk.Combobox(
@ -131,7 +130,7 @@ class NodeConfigDialog(Dialog):
# services # services
button = ttk.Button(self.top, text="Services", command=self.click_services) button = ttk.Button(self.top, text="Services", command=self.click_services)
button.grid(sticky="ew", pady=PAD) button.grid(sticky="ew", pady=PADY)
# interfaces # interfaces
if self.canvas_node.interfaces: if self.canvas_node.interfaces:
@ -147,17 +146,17 @@ class NodeConfigDialog(Dialog):
scroll.frame.rowconfigure(0, weight=1) scroll.frame.rowconfigure(0, weight=1)
for interface in self.canvas_node.interfaces: for interface in self.canvas_node.interfaces:
logging.info("interface: %s", interface) logging.info("interface: %s", interface)
frame = ttk.LabelFrame(scroll.frame, text=interface.name, padding=PAD) frame = ttk.LabelFrame(scroll.frame, text=interface.name, padding=FRAME_PAD)
frame.grid(sticky="ew", pady=PAD) frame.grid(sticky="ew", pady=PADY)
frame.columnconfigure(1, weight=1) frame.columnconfigure(1, weight=1)
frame.columnconfigure(2, weight=1) frame.columnconfigure(2, weight=1)
label = ttk.Label(frame, text="MAC") label = ttk.Label(frame, text="MAC")
label.grid(row=0, column=0, padx=PAD, pady=PAD) label.grid(row=0, column=0, padx=PADX, pady=PADY)
is_auto = tk.BooleanVar(value=True) is_auto = tk.BooleanVar(value=True)
checkbutton = ttk.Checkbutton(frame, text="Auto?", variable=is_auto) checkbutton = ttk.Checkbutton(frame, text="Auto?", variable=is_auto)
checkbutton.var = is_auto checkbutton.var = is_auto
checkbutton.grid(row=0, column=1, padx=PAD) checkbutton.grid(row=0, column=1, padx=PADX)
mac = tk.StringVar(value=interface.mac) mac = tk.StringVar(value=interface.mac)
entry = ttk.Entry(frame, textvariable=mac, state=tk.DISABLED) entry = ttk.Entry(frame, textvariable=mac, state=tk.DISABLED)
entry.grid(row=0, column=2, sticky="ew") entry.grid(row=0, column=2, sticky="ew")
@ -165,14 +164,14 @@ class NodeConfigDialog(Dialog):
checkbutton.config(command=func) checkbutton.config(command=func)
label = ttk.Label(frame, text="IPv4") label = ttk.Label(frame, text="IPv4")
label.grid(row=1, column=0, padx=PAD, pady=PAD) label.grid(row=1, column=0, padx=PADX, pady=PADY)
ip4 = tk.StringVar(value=f"{interface.ip4}/{interface.ip4mask}") ip4 = tk.StringVar(value=f"{interface.ip4}/{interface.ip4mask}")
entry = ttk.Entry(frame, textvariable=ip4) entry = ttk.Entry(frame, textvariable=ip4)
entry.bind("<FocusOut>", self.app.validation.ip_focus_out) entry.bind("<FocusOut>", self.app.validation.ip_focus_out)
entry.grid(row=1, column=1, columnspan=2, sticky="ew") entry.grid(row=1, column=1, columnspan=2, sticky="ew")
label = ttk.Label(frame, text="IPv6") label = ttk.Label(frame, text="IPv6")
label.grid(row=2, column=0, padx=PAD, pady=PAD) label.grid(row=2, column=0, padx=PADX, pady=PADY)
ip6 = tk.StringVar(value=f"{interface.ip6}/{interface.ip6mask}") ip6 = tk.StringVar(value=f"{interface.ip6}/{interface.ip6mask}")
entry = ttk.Entry(frame, textvariable=ip6) entry = ttk.Entry(frame, textvariable=ip6)
entry.bind("<FocusOut>", self.app.validation.ip_focus_out) entry.bind("<FocusOut>", self.app.validation.ip_focus_out)
@ -187,7 +186,7 @@ class NodeConfigDialog(Dialog):
frame.columnconfigure(1, weight=1) frame.columnconfigure(1, weight=1)
button = ttk.Button(frame, text="Apply", command=self.config_apply) button = ttk.Button(frame, text="Apply", command=self.config_apply)
button.grid(row=0, column=0, padx=2, sticky="ew") button.grid(row=0, column=0, padx=PADX, sticky="ew")
button = ttk.Button(frame, text="Cancel", command=self.destroy) button = ttk.Button(frame, text="Cancel", command=self.destroy)
button.grid(row=0, column=1, sticky="ew") button.grid(row=0, column=1, sticky="ew")

View file

@ -6,10 +6,9 @@ from tkinter import messagebox, ttk
from coretk.dialogs.dialog import Dialog from coretk.dialogs.dialog import Dialog
from coretk.dialogs.serviceconfiguration import ServiceConfiguration from coretk.dialogs.serviceconfiguration import ServiceConfiguration
from coretk.themes import FRAME_PAD, PADX, PADY
from coretk.widgets import CheckboxList, ListboxScroll from coretk.widgets import CheckboxList, ListboxScroll
PAD = 5
class NodeService(Dialog): class NodeService(Dialog):
def __init__(self, master, app, canvas_node, services=None): def __init__(self, master, app, canvas_node, services=None):
@ -36,11 +35,11 @@ class NodeService(Dialog):
self.top.rowconfigure(0, weight=1) self.top.rowconfigure(0, weight=1)
frame = ttk.Frame(self.top) frame = ttk.Frame(self.top)
frame.grid(stick="nsew") frame.grid(stick="nsew", pady=PADY)
frame.rowconfigure(0, weight=1) frame.rowconfigure(0, weight=1)
for i in range(3): for i in range(3):
frame.columnconfigure(i, weight=1) frame.columnconfigure(i, weight=1)
self.groups = ListboxScroll(frame, text="Groups", padding=PAD) self.groups = ListboxScroll(frame, text="Groups", padding=FRAME_PAD)
self.groups.grid(row=0, column=0, sticky="nsew") self.groups.grid(row=0, column=0, sticky="nsew")
for group in sorted(self.app.core.services): for group in sorted(self.app.core.services):
self.groups.listbox.insert(tk.END, group) self.groups.listbox.insert(tk.END, group)
@ -48,11 +47,15 @@ class NodeService(Dialog):
self.groups.listbox.selection_set(0) self.groups.listbox.selection_set(0)
self.services = CheckboxList( self.services = CheckboxList(
frame, self.app, text="Services", clicked=self.service_clicked, padding=PAD frame,
self.app,
text="Services",
clicked=self.service_clicked,
padding=FRAME_PAD,
) )
self.services.grid(row=0, column=1, sticky="nsew") self.services.grid(row=0, column=1, sticky="nsew")
self.current = ListboxScroll(frame, text="Selected", padding=PAD) self.current = ListboxScroll(frame, text="Selected", padding=FRAME_PAD)
self.current.grid(row=0, column=2, sticky="nsew") self.current.grid(row=0, column=2, sticky="nsew")
for service in sorted(self.current_services): for service in sorted(self.current_services):
self.current.listbox.insert(tk.END, service) self.current.listbox.insert(tk.END, service)
@ -62,9 +65,9 @@ class NodeService(Dialog):
for i in range(3): for i in range(3):
frame.columnconfigure(i, weight=1) frame.columnconfigure(i, weight=1)
button = ttk.Button(frame, text="Configure", command=self.click_configure) button = ttk.Button(frame, text="Configure", command=self.click_configure)
button.grid(row=0, column=0, sticky="ew", padx=PAD) button.grid(row=0, column=0, sticky="ew", padx=PADX)
button = ttk.Button(frame, text="Save", command=self.click_save) button = ttk.Button(frame, text="Save", command=self.click_save)
button.grid(row=0, column=1, sticky="ew", padx=PAD) button.grid(row=0, column=1, sticky="ew", padx=PADX)
button = ttk.Button(frame, text="Cancel", command=self.click_cancel) button = ttk.Button(frame, text="Cancel", command=self.click_cancel)
button.grid(row=0, column=2, sticky="ew") button.grid(row=0, column=2, sticky="ew")

View file

@ -3,8 +3,7 @@ from tkinter import ttk
from coretk.coreclient import Observer from coretk.coreclient import Observer
from coretk.dialogs.dialog import Dialog from coretk.dialogs.dialog import Dialog
from coretk.themes import PADX, PADY
PAD = 5
class ObserverDialog(Dialog): class ObserverDialog(Dialog):
@ -29,7 +28,7 @@ class ObserverDialog(Dialog):
def draw_listbox(self): def draw_listbox(self):
frame = ttk.Frame(self.top) frame = ttk.Frame(self.top)
frame.grid(sticky="nsew", pady=PAD) frame.grid(sticky="nsew", pady=PADY)
frame.columnconfigure(0, weight=1) frame.columnconfigure(0, weight=1)
frame.rowconfigure(0, weight=1) frame.rowconfigure(0, weight=1)
@ -48,32 +47,32 @@ class ObserverDialog(Dialog):
def draw_form_fields(self): def draw_form_fields(self):
frame = ttk.Frame(self.top) frame = ttk.Frame(self.top)
frame.grid(sticky="ew", pady=PAD) frame.grid(sticky="ew", pady=PADY)
frame.columnconfigure(1, weight=1) frame.columnconfigure(1, weight=1)
label = ttk.Label(frame, text="Name") label = ttk.Label(frame, text="Name")
label.grid(row=0, column=0, sticky="w", padx=PAD) label.grid(row=0, column=0, sticky="w", padx=PADX)
entry = ttk.Entry(frame, textvariable=self.name) entry = ttk.Entry(frame, textvariable=self.name)
entry.grid(row=0, column=1, sticky="ew") entry.grid(row=0, column=1, sticky="ew")
label = ttk.Label(frame, text="Command") label = ttk.Label(frame, text="Command")
label.grid(row=1, column=0, sticky="w", padx=PAD) label.grid(row=1, column=0, sticky="w", padx=PADX)
entry = ttk.Entry(frame, textvariable=self.cmd) entry = ttk.Entry(frame, textvariable=self.cmd)
entry.grid(row=1, column=1, sticky="ew") entry.grid(row=1, column=1, sticky="ew")
def draw_config_buttons(self): def draw_config_buttons(self):
frame = ttk.Frame(self.top) frame = ttk.Frame(self.top)
frame.grid(sticky="ew", pady=PAD) frame.grid(sticky="ew", pady=PADY)
for i in range(3): for i in range(3):
frame.columnconfigure(i, weight=1) frame.columnconfigure(i, weight=1)
button = ttk.Button(frame, text="Create", command=self.click_create) button = ttk.Button(frame, text="Create", command=self.click_create)
button.grid(row=0, column=0, sticky="ew") button.grid(row=0, column=0, sticky="ew", padx=PADX)
self.save_button = ttk.Button( self.save_button = ttk.Button(
frame, text="Save", state=tk.DISABLED, command=self.click_save frame, text="Save", state=tk.DISABLED, command=self.click_save
) )
self.save_button.grid(row=0, column=1, sticky="ew") self.save_button.grid(row=0, column=1, sticky="ew", padx=PADX)
self.delete_button = ttk.Button( self.delete_button = ttk.Button(
frame, text="Delete", state=tk.DISABLED, command=self.click_delete frame, text="Delete", state=tk.DISABLED, command=self.click_delete
@ -87,7 +86,7 @@ class ObserverDialog(Dialog):
frame.columnconfigure(i, weight=1) frame.columnconfigure(i, weight=1)
button = ttk.Button(frame, text="Save", command=self.click_save_config) button = ttk.Button(frame, text="Save", command=self.click_save_config)
button.grid(row=0, column=0, sticky="ew") button.grid(row=0, column=0, sticky="ew", padx=PADX)
button = ttk.Button(frame, text="Cancel", command=self.destroy) button = ttk.Button(frame, text="Cancel", command=self.destroy)
button.grid(row=0, column=1, sticky="ew") button.grid(row=0, column=1, sticky="ew")

View file

@ -4,8 +4,7 @@ from tkinter import ttk
from coretk import appconfig from coretk import appconfig
from coretk.dialogs.dialog import Dialog from coretk.dialogs.dialog import Dialog
from coretk.themes import FRAME_PAD, PADX, PADY
PAD = 5
class PreferencesDialog(Dialog): class PreferencesDialog(Dialog):
@ -25,12 +24,12 @@ class PreferencesDialog(Dialog):
self.draw_buttons() self.draw_buttons()
def draw_preferences(self): def draw_preferences(self):
frame = ttk.LabelFrame(self.top, text="Preferences", padding=PAD) frame = ttk.LabelFrame(self.top, text="Preferences", padding=FRAME_PAD)
frame.grid(sticky="nsew", pady=2) frame.grid(sticky="nsew", pady=PADY)
frame.columnconfigure(1, weight=1) frame.columnconfigure(1, weight=1)
label = ttk.Label(frame, text="Theme") label = ttk.Label(frame, text="Theme")
label.grid(row=0, column=0, pady=PAD, padx=PAD, sticky="w") label.grid(row=0, column=0, pady=PADY, padx=PADX, sticky="w")
themes = self.app.style.theme_names() themes = self.app.style.theme_names()
combobox = ttk.Combobox( combobox = ttk.Combobox(
frame, textvariable=self.theme, values=themes, state="readonly" frame, textvariable=self.theme, values=themes, state="readonly"
@ -40,14 +39,14 @@ class PreferencesDialog(Dialog):
combobox.bind("<<ComboboxSelected>>", self.theme_change) combobox.bind("<<ComboboxSelected>>", self.theme_change)
label = ttk.Label(frame, text="Editor") label = ttk.Label(frame, text="Editor")
label.grid(row=1, column=0, pady=PAD, padx=PAD, sticky="w") label.grid(row=1, column=0, pady=PADY, padx=PADX, sticky="w")
combobox = ttk.Combobox( combobox = ttk.Combobox(
frame, textvariable=self.editor, values=appconfig.EDITORS, state="readonly" frame, textvariable=self.editor, values=appconfig.EDITORS, state="readonly"
) )
combobox.grid(row=1, column=1, sticky="ew") combobox.grid(row=1, column=1, sticky="ew")
label = ttk.Label(frame, text="Terminal") label = ttk.Label(frame, text="Terminal")
label.grid(row=2, column=0, pady=PAD, padx=PAD, sticky="w") label.grid(row=2, column=0, pady=PADY, padx=PADX, sticky="w")
combobox = ttk.Combobox( combobox = ttk.Combobox(
frame, frame,
textvariable=self.terminal, textvariable=self.terminal,
@ -57,7 +56,7 @@ class PreferencesDialog(Dialog):
combobox.grid(row=2, column=1, sticky="ew") combobox.grid(row=2, column=1, sticky="ew")
label = ttk.Label(frame, text="3D GUI") label = ttk.Label(frame, text="3D GUI")
label.grid(row=3, column=0, pady=PAD, padx=PAD, sticky="w") label.grid(row=3, column=0, pady=PADY, padx=PADX, sticky="w")
entry = ttk.Entry(frame, textvariable=self.gui3d) entry = ttk.Entry(frame, textvariable=self.gui3d)
entry.grid(row=3, column=1, sticky="ew") entry.grid(row=3, column=1, sticky="ew")
@ -68,7 +67,7 @@ class PreferencesDialog(Dialog):
frame.columnconfigure(i, weight=1) frame.columnconfigure(i, weight=1)
button = ttk.Button(frame, text="Save", command=self.click_save) button = ttk.Button(frame, text="Save", command=self.click_save)
button.grid(row=0, column=0, sticky="ew") button.grid(row=0, column=0, sticky="ew", padx=PADX)
button = ttk.Button(frame, text="Cancel", command=self.destroy) button = ttk.Button(frame, text="Cancel", command=self.destroy)
button.grid(row=0, column=1, sticky="ew") button.grid(row=0, column=1, sticky="ew")

View file

@ -3,8 +3,8 @@ from tkinter import ttk
from coretk.coreclient import CoreServer from coretk.coreclient import CoreServer
from coretk.dialogs.dialog import Dialog from coretk.dialogs.dialog import Dialog
from coretk.themes import FRAME_PAD, PADX, PADY
PAD = 5
DEFAULT_NAME = "example" DEFAULT_NAME = "example"
DEFAULT_ADDRESS = "127.0.0.1" DEFAULT_ADDRESS = "127.0.0.1"
DEFAULT_PORT = 50051 DEFAULT_PORT = 50051
@ -33,7 +33,7 @@ class ServersDialog(Dialog):
def draw_servers(self): def draw_servers(self):
frame = ttk.Frame(self.top) frame = ttk.Frame(self.top)
frame.grid(pady=PAD, sticky="nsew") frame.grid(pady=PADY, sticky="nsew")
frame.columnconfigure(0, weight=1) frame.columnconfigure(0, weight=1)
frame.rowconfigure(0, weight=1) frame.rowconfigure(0, weight=1)
@ -52,24 +52,24 @@ class ServersDialog(Dialog):
scrollbar.config(command=self.servers.yview) scrollbar.config(command=self.servers.yview)
def draw_server_configuration(self): def draw_server_configuration(self):
frame = ttk.LabelFrame(self.top, text="Server Configuration", padding=PAD) frame = ttk.LabelFrame(self.top, text="Server Configuration", padding=FRAME_PAD)
frame.grid(pady=PAD, sticky="ew") frame.grid(pady=PADY, sticky="ew")
frame.columnconfigure(1, weight=1) frame.columnconfigure(1, weight=1)
frame.columnconfigure(3, weight=1) frame.columnconfigure(3, weight=1)
frame.columnconfigure(5, weight=1) frame.columnconfigure(5, weight=1)
label = ttk.Label(frame, text="Name") label = ttk.Label(frame, text="Name")
label.grid(row=0, column=0, sticky="w", padx=PAD, pady=PAD) label.grid(row=0, column=0, sticky="w", padx=PADX, pady=PADY)
entry = ttk.Entry(frame, textvariable=self.name) entry = ttk.Entry(frame, textvariable=self.name)
entry.grid(row=0, column=1, sticky="ew") entry.grid(row=0, column=1, sticky="ew")
label = ttk.Label(frame, text="Address") label = ttk.Label(frame, text="Address")
label.grid(row=0, column=2, sticky="w", padx=PAD, pady=PAD) label.grid(row=0, column=2, sticky="w", padx=PADX, pady=PADY)
entry = ttk.Entry(frame, textvariable=self.address) entry = ttk.Entry(frame, textvariable=self.address)
entry.grid(row=0, column=3, sticky="ew") entry.grid(row=0, column=3, sticky="ew")
label = ttk.Label(frame, text="Port") label = ttk.Label(frame, text="Port")
label.grid(row=0, column=4, sticky="w", padx=PAD, pady=PAD) label.grid(row=0, column=4, sticky="w", padx=PADX, pady=PADY)
entry = ttk.Entry( entry = ttk.Entry(
frame, frame,
textvariable=self.port, textvariable=self.port,
@ -83,17 +83,17 @@ class ServersDialog(Dialog):
def draw_servers_buttons(self): def draw_servers_buttons(self):
frame = ttk.Frame(self.top) frame = ttk.Frame(self.top)
frame.grid(pady=PAD, sticky="ew") frame.grid(pady=PADY, sticky="ew")
for i in range(3): for i in range(3):
frame.columnconfigure(i, weight=1) frame.columnconfigure(i, weight=1)
button = ttk.Button(frame, text="Create", command=self.click_create) button = ttk.Button(frame, text="Create", command=self.click_create)
button.grid(row=0, column=0, sticky="ew", padx=PAD) button.grid(row=0, column=0, sticky="ew", padx=PADX)
self.save_button = ttk.Button( self.save_button = ttk.Button(
frame, text="Save", state=tk.DISABLED, command=self.click_save frame, text="Save", state=tk.DISABLED, command=self.click_save
) )
self.save_button.grid(row=0, column=1, sticky="ew", padx=PAD) self.save_button.grid(row=0, column=1, sticky="ew", padx=PADX)
self.delete_button = ttk.Button( self.delete_button = ttk.Button(
frame, text="Delete", state=tk.DISABLED, command=self.click_delete frame, text="Delete", state=tk.DISABLED, command=self.click_delete
@ -109,7 +109,7 @@ class ServersDialog(Dialog):
button = ttk.Button( button = ttk.Button(
frame, text="Save Configuration", command=self.click_save_configuration frame, text="Save Configuration", command=self.click_save_configuration
) )
button.grid(row=0, column=0, sticky="ew", padx=PAD) button.grid(row=0, column=0, sticky="ew", padx=PADX)
button = ttk.Button(frame, text="Cancel", command=self.destroy) button = ttk.Button(frame, text="Cancel", command=self.destroy)
button.grid(row=0, column=1, sticky="ew") button.grid(row=0, column=1, sticky="ew")

View file

@ -5,11 +5,9 @@ import grpc
from coretk.dialogs.dialog import Dialog from coretk.dialogs.dialog import Dialog
from coretk.errors import show_grpc_error from coretk.errors import show_grpc_error
from coretk.themes import PADX, PADY
from coretk.widgets import ConfigFrame from coretk.widgets import ConfigFrame
PAD_X = 2
PAD_Y = 2
class SessionOptionsDialog(Dialog): class SessionOptionsDialog(Dialog):
def __init__(self, master, app): def __init__(self, master, app):
@ -33,16 +31,16 @@ class SessionOptionsDialog(Dialog):
self.config_frame = ConfigFrame(self.top, self.app, config=self.config) self.config_frame = ConfigFrame(self.top, self.app, config=self.config)
self.config_frame.draw_config() self.config_frame.draw_config()
self.config_frame.grid(sticky="nsew") self.config_frame.grid(sticky="nsew", pady=PADY)
frame = ttk.Frame(self.top) frame = ttk.Frame(self.top)
frame.grid(sticky="ew") frame.grid(sticky="ew")
for i in range(2): for i in range(2):
frame.columnconfigure(i, weight=1) frame.columnconfigure(i, weight=1)
button = ttk.Button(frame, text="Save", command=self.save) button = ttk.Button(frame, text="Save", command=self.save)
button.grid(row=0, column=0, pady=PAD_Y, padx=PAD_X, sticky="ew") button.grid(row=0, column=0, padx=PADX, sticky="ew")
button = ttk.Button(frame, text="Cancel", command=self.destroy) button = ttk.Button(frame, text="Cancel", command=self.destroy)
button.grid(row=0, column=1, pady=PAD_Y, padx=PAD_X, sticky="ew") button.grid(row=0, column=1, padx=PADX, sticky="ew")
def save(self): def save(self):
config = self.config_frame.parse_config() config = self.config_frame.parse_config()

View file

@ -9,8 +9,7 @@ from core.api.grpc import core_pb2
from coretk.dialogs.dialog import Dialog from coretk.dialogs.dialog import Dialog
from coretk.errors import show_grpc_error from coretk.errors import show_grpc_error
from coretk.images import ImageEnum, Images from coretk.images import ImageEnum, Images
from coretk.themes import PADX, PADY
PAD = 5
class SessionsDialog(Dialog): class SessionsDialog(Dialog):
@ -51,13 +50,13 @@ class SessionsDialog(Dialog):
"one you might be concurrently editting.", "one you might be concurrently editting.",
justify=tk.CENTER, justify=tk.CENTER,
) )
label.grid(pady=PAD) label.grid(pady=PADY)
def draw_tree(self): def draw_tree(self):
frame = ttk.Frame(self.top) frame = ttk.Frame(self.top)
frame.columnconfigure(0, weight=1) frame.columnconfigure(0, weight=1)
frame.rowconfigure(0, weight=1) frame.rowconfigure(0, weight=1)
frame.grid(sticky="nsew") frame.grid(sticky="nsew", pady=PADY)
self.tree = ttk.Treeview( self.tree = ttk.Treeview(
frame, columns=("id", "state", "nodes"), show="headings" frame, columns=("id", "state", "nodes"), show="headings"
) )
@ -85,7 +84,7 @@ class SessionsDialog(Dialog):
self.tree.configure(yscrollcommand=yscrollbar.set) self.tree.configure(yscrollcommand=yscrollbar.set)
xscrollbar = ttk.Scrollbar(frame, orient="horizontal", command=self.tree.xview) xscrollbar = ttk.Scrollbar(frame, orient="horizontal", command=self.tree.xview)
xscrollbar.grid(row=1, sticky="ew", pady=5) xscrollbar.grid(row=1, sticky="ew")
self.tree.configure(xscrollcommand=xscrollbar.set) self.tree.configure(xscrollcommand=xscrollbar.set)
def draw_buttons(self): def draw_buttons(self):
@ -99,7 +98,7 @@ class SessionsDialog(Dialog):
frame, image=image, text="New", compound=tk.LEFT, command=self.click_new frame, image=image, text="New", compound=tk.LEFT, command=self.click_new
) )
b.image = image b.image = image
b.grid(row=0, padx=2, sticky="ew") b.grid(row=0, padx=PADX, sticky="ew")
image = Images.get(ImageEnum.FILEOPEN, 16) image = Images.get(ImageEnum.FILEOPEN, 16)
b = ttk.Button( b = ttk.Button(
@ -110,7 +109,7 @@ class SessionsDialog(Dialog):
command=self.click_connect, command=self.click_connect,
) )
b.image = image b.image = image
b.grid(row=0, column=1, padx=2, sticky="ew") b.grid(row=0, column=1, padx=PADX, sticky="ew")
image = Images.get(ImageEnum.EDITDELETE, 16) image = Images.get(ImageEnum.EDITDELETE, 16)
b = ttk.Button( b = ttk.Button(
@ -121,10 +120,10 @@ class SessionsDialog(Dialog):
command=self.click_shutdown, command=self.click_shutdown,
) )
b.image = image b.image = image
b.grid(row=0, column=2, padx=2, sticky="ew") b.grid(row=0, column=2, padx=PADX, sticky="ew")
b = ttk.Button(frame, text="Cancel", command=self.click_new) b = ttk.Button(frame, text="Cancel", command=self.click_new)
b.grid(row=0, column=3, padx=2, sticky="ew") b.grid(row=0, column=3, sticky="ew")
def click_new(self): def click_new(self):
self.app.core.create_new_session() self.app.core.create_new_session()

View file

@ -7,9 +7,8 @@ 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 import tags
from coretk.graph.shapeutils import is_draw_shape, is_shape_text from coretk.graph.shapeutils import is_draw_shape, is_shape_text
from coretk.themes import FRAME_PAD, PADX, PADY
PADX = (0, 5)
PAD = 5
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]
BORDER_WIDTH = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] BORDER_WIDTH = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
@ -50,16 +49,16 @@ class ShapeDialog(Dialog):
self.draw_buttons() self.draw_buttons()
def draw_label_options(self): def draw_label_options(self):
label_frame = ttk.LabelFrame(self.top, text="Label", padding=PAD) label_frame = ttk.LabelFrame(self.top, text="Label", padding=FRAME_PAD)
label_frame.grid(sticky="ew") label_frame.grid(sticky="ew")
label_frame.columnconfigure(0, weight=1) label_frame.columnconfigure(0, weight=1)
entry = ttk.Entry(label_frame, textvariable=self.shape_text) entry = ttk.Entry(label_frame, textvariable=self.shape_text)
entry.grid(sticky="ew", pady=PAD) entry.grid(sticky="ew", pady=PADY)
# font options # font options
frame = ttk.Frame(label_frame) frame = ttk.Frame(label_frame)
frame.grid(sticky="nsew", padx=3, pady=3) frame.grid(sticky="nsew", pady=PADY)
frame.columnconfigure(0, weight=1) frame.columnconfigure(0, weight=1)
frame.columnconfigure(1, weight=1) frame.columnconfigure(1, weight=1)
frame.columnconfigure(2, weight=1) frame.columnconfigure(2, weight=1)
@ -73,7 +72,7 @@ class ShapeDialog(Dialog):
combobox = ttk.Combobox( combobox = ttk.Combobox(
frame, textvariable=self.font_size, values=FONT_SIZES, state="readonly" frame, textvariable=self.font_size, values=FONT_SIZES, state="readonly"
) )
combobox.grid(row=0, column=1, padx=3, sticky="nsew") combobox.grid(row=0, column=1, padx=PADX, sticky="nsew")
button = ttk.Button(frame, text="Color", command=self.choose_text_color) button = ttk.Button(frame, text="Color", command=self.choose_text_color)
button.grid(row=0, column=2, sticky="nsew") button.grid(row=0, column=2, sticky="nsew")
@ -85,13 +84,13 @@ class ShapeDialog(Dialog):
button = ttk.Checkbutton(frame, variable=self.bold, text="Bold") button = ttk.Checkbutton(frame, variable=self.bold, text="Bold")
button.grid(row=0, column=0, sticky="ew") button.grid(row=0, column=0, sticky="ew")
button = ttk.Checkbutton(frame, variable=self.italic, text="Italic") button = ttk.Checkbutton(frame, variable=self.italic, text="Italic")
button.grid(row=0, column=1, padx=3, sticky="ew") button.grid(row=0, column=1, padx=PADX, sticky="ew")
button = ttk.Checkbutton(frame, variable=self.underline, text="Underline") button = ttk.Checkbutton(frame, variable=self.underline, text="Underline")
button.grid(row=0, column=2, sticky="ew") button.grid(row=0, column=2, sticky="ew")
def draw_shape_options(self): def draw_shape_options(self):
label_frame = ttk.LabelFrame(self.top, text="Shape", padding=PAD) label_frame = ttk.LabelFrame(self.top, text="Shape", padding=FRAME_PAD)
label_frame.grid(sticky="ew", pady=PAD) label_frame.grid(sticky="ew", pady=PADY)
label_frame.columnconfigure(0, weight=1) label_frame.columnconfigure(0, weight=1)
frame = ttk.Frame(label_frame) frame = ttk.Frame(label_frame)
@ -115,7 +114,7 @@ class ShapeDialog(Dialog):
button.grid(row=1, column=2, sticky="ew") button.grid(row=1, column=2, sticky="ew")
frame = ttk.Frame(label_frame) frame = ttk.Frame(label_frame)
frame.grid(sticky="ew", pady=PAD) frame.grid(sticky="ew", pady=PADY)
frame.columnconfigure(1, weight=1) frame.columnconfigure(1, weight=1)
label = ttk.Label(frame, text="Border Width") label = ttk.Label(frame, text="Border Width")
label.grid(row=0, column=0, sticky="w", padx=PADX) label.grid(row=0, column=0, sticky="w", padx=PADX)

View file

@ -8,10 +8,9 @@ import grpc
from coretk.dialogs.dialog import Dialog from coretk.dialogs.dialog import Dialog
from coretk.errors import show_grpc_error from coretk.errors import show_grpc_error
from coretk.themes import PADX, PADY
from coretk.widgets import ConfigFrame from coretk.widgets import ConfigFrame
PAD = 5
class WlanConfigDialog(Dialog): class WlanConfigDialog(Dialog):
def __init__(self, master, app, canvas_node): def __init__(self, master, app, canvas_node):
@ -33,7 +32,7 @@ class WlanConfigDialog(Dialog):
self.top.rowconfigure(0, weight=1) self.top.rowconfigure(0, weight=1)
self.config_frame = ConfigFrame(self.top, self.app, self.config) self.config_frame = ConfigFrame(self.top, self.app, self.config)
self.config_frame.draw_config() self.config_frame.draw_config()
self.config_frame.grid(sticky="nsew", pady=PAD) self.config_frame.grid(sticky="nsew", pady=PADY)
self.draw_apply_buttons() self.draw_apply_buttons()
def draw_apply_buttons(self): def draw_apply_buttons(self):
@ -48,7 +47,7 @@ class WlanConfigDialog(Dialog):
frame.columnconfigure(i, weight=1) frame.columnconfigure(i, weight=1)
button = ttk.Button(frame, text="Apply", command=self.click_apply) button = ttk.Button(frame, text="Apply", command=self.click_apply)
button.grid(row=0, column=0, padx=PAD, sticky="ew") button.grid(row=0, column=0, padx=PADX, sticky="ew")
button = ttk.Button(frame, text="Cancel", command=self.destroy) button = ttk.Button(frame, text="Cancel", command=self.destroy)
button.grid(row=0, column=1, sticky="ew") button.grid(row=0, column=1, sticky="ew")

View file

@ -1,7 +1,11 @@
import logging import logging
import tkinter as tk import tkinter as tk
DARK = "black" THEME_DARK = "black"
PADX = (0, 5)
PADY = (0, 5)
FRAME_PAD = 5
DIALOG_PAD = 5
class Styles: class Styles:
@ -28,7 +32,7 @@ class Colors:
def load(style): def load(style):
style.theme_create( style.theme_create(
DARK, THEME_DARK,
"clam", "clam",
{ {
".": { ".": {

View file

@ -5,6 +5,7 @@ from tkinter import filedialog, font, ttk
from tkinter.scrolledtext import ScrolledText from tkinter.scrolledtext import ScrolledText
from core.api.grpc import core_pb2 from core.api.grpc import core_pb2
from coretk.themes import FRAME_PAD, PADX, PADY
INT_TYPES = { INT_TYPES = {
core_pb2.ConfigOptionType.UINT8, core_pb2.ConfigOptionType.UINT8,
@ -16,7 +17,6 @@ INT_TYPES = {
core_pb2.ConfigOptionType.INT32, core_pb2.ConfigOptionType.INT32,
core_pb2.ConfigOptionType.INT64, core_pb2.ConfigOptionType.INT64,
} }
PAD = 5
def file_button_click(value): def file_button_click(value):
@ -71,8 +71,6 @@ class ConfigFrame(FrameScroll):
self.values = {} self.values = {}
def draw_config(self): def draw_config(self):
padx = 2
pady = 2
group_mapping = {} group_mapping = {}
for key in self.config: for key in self.config:
option = self.config[key] option = self.config[key]
@ -81,19 +79,19 @@ class ConfigFrame(FrameScroll):
for group_name in sorted(group_mapping): for group_name in sorted(group_mapping):
group = group_mapping[group_name] group = group_mapping[group_name]
frame = ttk.Frame(self.frame, padding=PAD) frame = ttk.Frame(self.frame, padding=FRAME_PAD)
frame.columnconfigure(1, weight=1) frame.columnconfigure(1, weight=1)
self.frame.add(frame, text=group_name) self.frame.add(frame, text=group_name)
for index, option in enumerate(sorted(group, key=lambda x: x.name)): for index, option in enumerate(sorted(group, key=lambda x: x.name)):
label = ttk.Label(frame, text=option.label) label = ttk.Label(frame, text=option.label)
label.grid(row=index, pady=pady, padx=padx, sticky="w") label.grid(row=index, pady=PADY, padx=PADX, sticky="w")
value = tk.StringVar() value = tk.StringVar()
if option.type == core_pb2.ConfigOptionType.BOOL: if option.type == core_pb2.ConfigOptionType.BOOL:
select = tuple(option.select) select = tuple(option.select)
combobox = ttk.Combobox( combobox = ttk.Combobox(
frame, textvariable=value, values=select, state="readonly" frame, textvariable=value, values=select, state="readonly"
) )
combobox.grid(row=index, column=1, sticky="ew", pady=pady) combobox.grid(row=index, column=1, sticky="ew")
if option.value == "1": if option.value == "1":
value.set("On") value.set("On")
else: else:
@ -104,15 +102,15 @@ class ConfigFrame(FrameScroll):
combobox = ttk.Combobox( combobox = ttk.Combobox(
frame, textvariable=value, values=select, state="readonly" frame, textvariable=value, values=select, state="readonly"
) )
combobox.grid(row=index, column=1, sticky="ew", pady=pady) combobox.grid(row=index, column=1, sticky="ew")
elif option.type == core_pb2.ConfigOptionType.STRING: elif option.type == core_pb2.ConfigOptionType.STRING:
value.set(option.value) value.set(option.value)
if "file" in option.label: if "file" in option.label:
file_frame = ttk.Frame(frame) file_frame = ttk.Frame(frame)
file_frame.grid(row=index, column=1, sticky="ew", pady=pady) file_frame.grid(row=index, column=1, sticky="ew")
file_frame.columnconfigure(0, weight=1) file_frame.columnconfigure(0, weight=1)
entry = ttk.Entry(file_frame, textvariable=value) entry = ttk.Entry(file_frame, textvariable=value)
entry.grid(row=0, column=0, sticky="ew", padx=padx) entry.grid(row=0, column=0, sticky="ew", padx=PADX)
func = partial(file_button_click, value) func = partial(file_button_click, value)
button = ttk.Button(file_frame, text="...", command=func) button = ttk.Button(file_frame, text="...", command=func)
button.grid(row=0, column=1) button.grid(row=0, column=1)
@ -124,10 +122,10 @@ class ConfigFrame(FrameScroll):
validate="key", validate="key",
validatecommand=(self.app.validation.ip4, "%P"), validatecommand=(self.app.validation.ip4, "%P"),
) )
entry.grid(row=index, column=1, sticky="ew", pady=pady) entry.grid(row=index, column=1, sticky="ew")
else: else:
entry = ttk.Entry(frame, textvariable=value) entry = ttk.Entry(frame, textvariable=value)
entry.grid(row=index, column=1, sticky="ew", pady=pady) entry.grid(row=index, column=1, sticky="ew")
elif option.type in INT_TYPES: elif option.type in INT_TYPES:
value.set(option.value) value.set(option.value)
@ -141,7 +139,7 @@ class ConfigFrame(FrameScroll):
"<FocusOut>", "<FocusOut>",
lambda event: self.app.validation.focus_out(event, "0"), lambda event: self.app.validation.focus_out(event, "0"),
) )
entry.grid(row=index, column=1, sticky="ew", pady=pady) entry.grid(row=index, column=1, sticky="ew")
elif option.type == core_pb2.ConfigOptionType.FLOAT: elif option.type == core_pb2.ConfigOptionType.FLOAT:
value.set(option.value) value.set(option.value)
entry = ttk.Entry( entry = ttk.Entry(
@ -154,7 +152,7 @@ class ConfigFrame(FrameScroll):
"<FocusOut>", "<FocusOut>",
lambda event: self.app.validation.focus_out(event, "0"), lambda event: self.app.validation.focus_out(event, "0"),
) )
entry.grid(row=index, column=1, sticky="ew", pady=pady) entry.grid(row=index, column=1, sticky="ew")
else: else:
logging.error("unhandled config option type: %s", option.type) logging.error("unhandled config option type: %s", option.type)
self.values[option.name] = value self.values[option.name] = value