From a2796d0cf0b629bc9ea2456805c4b0771cb55542 Mon Sep 17 00:00:00 2001 From: MechTechnology <40597106+MechTechnology@users.noreply.github.com> Date: Sat, 23 Oct 2021 20:53:59 +0200 Subject: [PATCH] Adds New Theme and alot of QoL - Adds a brand new modern theme, it was intended to be added with 2.0, but things happened. - Adds scrollbars to the subprocess console. - All subprocess messages will be updated in the console in real time. - Fixed some sizing/padding issues. - Small code polish, here and there. - If the theme is not working well, you can comment the single line that imports it, and build normally, everything should work just fine. --- README.md | 4 +- SmartStitchCore.py | 6 +- SmartStitchGUI.py | 91 +++-- SmartStitchGUI.spec | 11 +- SmartStitchGUI_NoIcon.spec | 10 +- gui_theme/light.tcl | 533 +++++++++++++++++++++++++ gui_theme/light/box-accent.png | Bin 0 -> 3009 bytes gui_theme/light/box-basic.png | Bin 0 -> 319 bytes gui_theme/light/box-hover.png | Bin 0 -> 329 bytes gui_theme/light/box-invalid.png | Bin 0 -> 285 bytes gui_theme/light/button-hover.png | Bin 0 -> 326 bytes gui_theme/light/card.png | Bin 0 -> 444 bytes gui_theme/light/check-accent.png | Bin 0 -> 3124 bytes gui_theme/light/check-basic.png | Bin 0 -> 390 bytes gui_theme/light/check-hover.png | Bin 0 -> 451 bytes gui_theme/light/check-tri-accent.png | Bin 0 -> 2982 bytes gui_theme/light/check-tri-basic.png | Bin 0 -> 281 bytes gui_theme/light/check-tri-hover.png | Bin 0 -> 319 bytes gui_theme/light/circle-accent.png | Bin 0 -> 3139 bytes gui_theme/light/circle-basic.png | Bin 0 -> 128 bytes gui_theme/light/circle-hover.png | Bin 0 -> 429 bytes gui_theme/light/combo-button-basic.png | Bin 0 -> 247 bytes gui_theme/light/combo-button-focus.png | Bin 0 -> 2910 bytes gui_theme/light/combo-button-hover.png | Bin 0 -> 299 bytes gui_theme/light/down-accent.png | Bin 0 -> 2902 bytes gui_theme/light/down.png | Bin 0 -> 271 bytes gui_theme/light/empty.png | Bin 0 -> 130 bytes gui_theme/light/hor-accent.png | Bin 0 -> 2816 bytes gui_theme/light/hor-basic.png | Bin 0 -> 157 bytes gui_theme/light/hor-hover.png | Bin 0 -> 154 bytes gui_theme/light/notebook.png | Bin 0 -> 389 bytes gui_theme/light/off-basic.png | Bin 0 -> 547 bytes gui_theme/light/off-hover.png | Bin 0 -> 663 bytes gui_theme/light/on-accent.png | Bin 0 -> 3330 bytes gui_theme/light/on-basic.png | Bin 0 -> 538 bytes gui_theme/light/on-hover.png | Bin 0 -> 649 bytes gui_theme/light/outline-basic.png | Bin 0 -> 508 bytes gui_theme/light/outline-hover.png | Bin 0 -> 598 bytes gui_theme/light/radio-accent.png | Bin 0 -> 3278 bytes gui_theme/light/radio-basic.png | Bin 0 -> 482 bytes gui_theme/light/radio-hover.png | Bin 0 -> 583 bytes gui_theme/light/radio-tri-accent.png | Bin 0 -> 3179 bytes gui_theme/light/radio-tri-basic.png | Bin 0 -> 400 bytes gui_theme/light/radio-tri-hover.png | Bin 0 -> 465 bytes gui_theme/light/rect-accent-hover.png | Bin 0 -> 2948 bytes gui_theme/light/rect-accent.png | Bin 0 -> 2954 bytes gui_theme/light/rect-basic.png | Bin 0 -> 250 bytes gui_theme/light/rect-hover.png | Bin 0 -> 294 bytes gui_theme/light/right.png | Bin 0 -> 266 bytes gui_theme/light/scale-hor.png | Bin 0 -> 161 bytes gui_theme/light/scale-vert.png | Bin 0 -> 162 bytes gui_theme/light/separator.png | Bin 0 -> 128 bytes gui_theme/light/size.png | Bin 0 -> 471 bytes gui_theme/light/tab-basic.png | Bin 0 -> 219 bytes gui_theme/light/tab-disabled.png | Bin 0 -> 220 bytes gui_theme/light/tab-hover.png | Bin 0 -> 263 bytes gui_theme/light/tick-hor-accent.png | Bin 0 -> 2940 bytes gui_theme/light/tick-hor-basic.png | Bin 0 -> 242 bytes gui_theme/light/tick-hor-hover.png | Bin 0 -> 273 bytes gui_theme/light/tick-vert-accent.png | Bin 0 -> 2931 bytes gui_theme/light/tick-vert-basic.png | Bin 0 -> 234 bytes gui_theme/light/tick-vert-hover.png | Bin 0 -> 266 bytes gui_theme/light/tree-basic.png | Bin 0 -> 149 bytes gui_theme/light/tree-pressed.png | Bin 0 -> 169 bytes gui_theme/light/up-accent.png | Bin 0 -> 2904 bytes gui_theme/light/up.png | Bin 0 -> 270 bytes gui_theme/light/vert-accent.png | Bin 0 -> 2822 bytes gui_theme/light/vert-basic.png | Bin 0 -> 158 bytes gui_theme/light/vert-hover.png | Bin 0 -> 157 bytes gui_theme/modern_theme.tcl | 41 ++ 70 files changed, 658 insertions(+), 38 deletions(-) create mode 100644 gui_theme/light.tcl create mode 100644 gui_theme/light/box-accent.png create mode 100644 gui_theme/light/box-basic.png create mode 100644 gui_theme/light/box-hover.png create mode 100644 gui_theme/light/box-invalid.png create mode 100644 gui_theme/light/button-hover.png create mode 100644 gui_theme/light/card.png create mode 100644 gui_theme/light/check-accent.png create mode 100644 gui_theme/light/check-basic.png create mode 100644 gui_theme/light/check-hover.png create mode 100644 gui_theme/light/check-tri-accent.png create mode 100644 gui_theme/light/check-tri-basic.png create mode 100644 gui_theme/light/check-tri-hover.png create mode 100644 gui_theme/light/circle-accent.png create mode 100644 gui_theme/light/circle-basic.png create mode 100644 gui_theme/light/circle-hover.png create mode 100644 gui_theme/light/combo-button-basic.png create mode 100644 gui_theme/light/combo-button-focus.png create mode 100644 gui_theme/light/combo-button-hover.png create mode 100644 gui_theme/light/down-accent.png create mode 100644 gui_theme/light/down.png create mode 100644 gui_theme/light/empty.png create mode 100644 gui_theme/light/hor-accent.png create mode 100644 gui_theme/light/hor-basic.png create mode 100644 gui_theme/light/hor-hover.png create mode 100644 gui_theme/light/notebook.png create mode 100644 gui_theme/light/off-basic.png create mode 100644 gui_theme/light/off-hover.png create mode 100644 gui_theme/light/on-accent.png create mode 100644 gui_theme/light/on-basic.png create mode 100644 gui_theme/light/on-hover.png create mode 100644 gui_theme/light/outline-basic.png create mode 100644 gui_theme/light/outline-hover.png create mode 100644 gui_theme/light/radio-accent.png create mode 100644 gui_theme/light/radio-basic.png create mode 100644 gui_theme/light/radio-hover.png create mode 100644 gui_theme/light/radio-tri-accent.png create mode 100644 gui_theme/light/radio-tri-basic.png create mode 100644 gui_theme/light/radio-tri-hover.png create mode 100644 gui_theme/light/rect-accent-hover.png create mode 100644 gui_theme/light/rect-accent.png create mode 100644 gui_theme/light/rect-basic.png create mode 100644 gui_theme/light/rect-hover.png create mode 100644 gui_theme/light/right.png create mode 100644 gui_theme/light/scale-hor.png create mode 100644 gui_theme/light/scale-vert.png create mode 100644 gui_theme/light/separator.png create mode 100644 gui_theme/light/size.png create mode 100644 gui_theme/light/tab-basic.png create mode 100644 gui_theme/light/tab-disabled.png create mode 100644 gui_theme/light/tab-hover.png create mode 100644 gui_theme/light/tick-hor-accent.png create mode 100644 gui_theme/light/tick-hor-basic.png create mode 100644 gui_theme/light/tick-hor-hover.png create mode 100644 gui_theme/light/tick-vert-accent.png create mode 100644 gui_theme/light/tick-vert-basic.png create mode 100644 gui_theme/light/tick-vert-hover.png create mode 100644 gui_theme/light/tree-basic.png create mode 100644 gui_theme/light/tree-pressed.png create mode 100644 gui_theme/light/up-accent.png create mode 100644 gui_theme/light/up.png create mode 100644 gui_theme/light/vert-accent.png create mode 100644 gui_theme/light/vert-basic.png create mode 100644 gui_theme/light/vert-hover.png create mode 100644 gui_theme/modern_theme.tcl diff --git a/README.md b/README.md index 456f8d9..a237858 100644 --- a/README.md +++ b/README.md @@ -35,8 +35,8 @@ The smart part of the name comes from the fact that it uses some simple pixel ca ## Screenshots
-screenshot01 -screenshot02 +screenshot01 +screenshot02
## Quick Get Started GUI Version diff --git a/SmartStitchCore.py b/SmartStitchCore.py index 5e23ffc..9fab6ab 100644 --- a/SmartStitchCore.py +++ b/SmartStitchCore.py @@ -144,12 +144,12 @@ def save_data(data, foldername, outputformat, progress_func = None): def call_external_func(cmd, display_output, processed_path): if not os.path.exists(processed_path) and '[Processed]' in cmd: os.makedirs(processed_path) - proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, shell=True) + proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, encoding='utf-8', errors='replace', universal_newlines=True, shell=True) display_output("Subprocess started!\n") for line in proc.stdout: display_output(line) - for line in proc.stderr: - display_output(line) + # for line in proc.stderr: + # display_output(line) display_output("\nSubprocess finished successfully!\n") proc.stdout.close() return_code = proc.wait() diff --git a/SmartStitchGUI.py b/SmartStitchGUI.py index cba8e14..c385c09 100644 --- a/SmartStitchGUI.py +++ b/SmartStitchGUI.py @@ -34,12 +34,12 @@ def __init__(self): self.status = StringVar(value="Idle") self.num_of_inputs = 1 self.progress = "" - self.progress = "" + self.console_canvas = "" self.subprocess_console = "" self.width_enforce_types = ['No Width Enforcement', 'Automatic Uniform Width', 'User Customized Width'] # Application StartUp Sequence self.load_app_settings() - self.setup_window(app_maintainer="MechTechnology", app_version="2.1.2") + self.setup_window(app_maintainer="MechTechnology", app_version="2.2") self.setup_paths_frame().grid(row=0, column=0, padx=(10), sticky="new") self.setup_basic_settings_frame().grid(row=1, column=0, padx=(10), pady=(5,0), sticky="new") self.setup_advanced_settings_frame().grid(row=2, column=0, padx=(10), pady=(5,0), sticky="new") @@ -90,13 +90,15 @@ def setup_window(self, app_maintainer, app_version): self.iconphoto(False, PhotoImage(file="SmartStitchLogo.png")) # Configures logging to save into a log file. logging.basicConfig(filename="crashreport.log", level=logging.WARNING) + # Configure Modern Application Theme + self.call("source", "./gui_theme/modern_theme.tcl") # Centers the window on Launch and Disables Resize. window_width = self.winfo_width() window_height = self.winfo_height() screen_width = self.winfo_screenwidth() screen_height = self.winfo_screenheight() - x = (self.winfo_screenwidth()/2) - (window_height/2) - 120 - y = (self.winfo_screenheight()/2) - (window_width/2) - 120 + x = (screen_width/2) - (window_height/2) - 140 + y = (screen_height/2) - (window_width/2) - 220 self.geometry('+%d+%d' % (x, y)) self.columnconfigure(0, weight=1) self.resizable(False, False) @@ -104,7 +106,7 @@ def setup_window(self, app_maintainer, app_version): def setup_paths_frame(self): """Setups the Fields for the Input and Output Paths.""" # Browse Button and Input and Output Field - paths_frame = LabelFrame(self, text="Input/Output Settings", padx=(5)) + paths_frame = ttk.LabelFrame(self, text="Input/Output Settings", padding=(5,0)) paths_frame.columnconfigure(0, weight=1) # Setup of Input Label, Entry Field, and Browse Button. input_label = ttk.Label(paths_frame, text = 'Input Path') @@ -113,7 +115,7 @@ def setup_paths_frame(self): input_button = ttk.Button(paths_frame, text = 'Browse', command=self.browse_input_path) input_label.grid(row = 0,column = 0, sticky="new") input_field.grid(row = 1, column = 0, pady=(2,0), sticky="new") - input_button.grid(row = 1,column = 1, padx=(15, 0), sticky="ne") + input_button.grid(row = 1,column = 1, padx=(5,0), pady=(2,0), sticky="ne") # Setup of Output Label and Entry Field. output_label = ttk.Label(paths_frame, text = 'Output Path') output_field = ttk.Entry(paths_frame, textvariable=self.output_folder) @@ -126,7 +128,7 @@ def setup_paths_frame(self): def setup_basic_settings_frame(self): """Setups the basic settings controls that most user would need.""" - basic_settings_frame = LabelFrame(self, text="Basic Settings", padx=(5)) + basic_settings_frame = ttk.LabelFrame(self, text="Basic Settings", padding=(5,0)) basic_settings_frame.columnconfigure(0, weight=1, uniform="equal") basic_settings_frame.columnconfigure(1, weight=1, uniform="equal") # Setup of Split Height Label, Entry Field, and Browse Button. @@ -140,8 +142,8 @@ def setup_basic_settings_frame(self): type_label = ttk.Label(basic_settings_frame, text = 'Output Images Type:') type_dropdown = ttk.Combobox(basic_settings_frame, textvariable=self.output_files_type, values=('.png', '.jpg', '.webp', '.bmp', '.tiff', '.tga')) type_dropdown.bind("<>", self.save_app_settings) - type_label.grid(row = 0, column = 1, padx=(5,0), sticky="new") - type_dropdown.grid(row = 1, column = 1, padx=(5, 0), pady=(2,10), sticky="new") + type_label.grid(row = 0, column = 1, sticky="new") + type_dropdown.grid(row = 1, column = 1, pady=(2,10), sticky="new") return basic_settings_frame def setup_advanced_settings_frame(self): @@ -150,7 +152,7 @@ def setup_advanced_settings_frame(self): advanced_settings_frame = Frame(self) advanced_settings_frame.columnconfigure(0, weight=1) # Setup of a Frame That holds the settings is toggleable by a checkbox - shown_settings_frame = LabelFrame(advanced_settings_frame, text="Advanced Settings", padx=(5)) + shown_settings_frame = ttk.LabelFrame(advanced_settings_frame, text="Advanced Settings", padding=(5,0)) shown_settings_frame.columnconfigure(0, weight=1, uniform="equal") shown_settings_frame.columnconfigure(1, weight=1, uniform="equal") # Setup of Slice Senstivity Settings' Label, and Entry Field. @@ -165,8 +167,8 @@ def setup_advanced_settings_frame(self): ignorable_pixels_field = ttk.Entry(shown_settings_frame, textvariable=self.ignorable_edges_pixels, validate='all') ignorable_pixels_field.bind("", self.save_app_settings) ignorable_pixels_field['validatecommand'] = (ignorable_pixels_field.register(self.validate_nums_only),'%P','%d','%s') - ignorable_pixels_label.grid(row = 0, column = 1, padx=(5, 0), sticky="new") - ignorable_pixels_field.grid(row = 1, column = 1, padx=(5, 0), pady=(2,5), sticky="new") + ignorable_pixels_label.grid(row = 0, column = 1, sticky="new") + ignorable_pixels_field.grid(row = 1, column = 1, pady=(2,5), sticky="new") # Setup of Scan Line Step Settings' Label, and Entry Field. scan_line_label = ttk.Label(shown_settings_frame, text = 'Scan Line Step:') scan_line_field = ttk.Entry(shown_settings_frame, textvariable=self.scan_line_step, validate='all') @@ -183,8 +185,8 @@ def setup_advanced_settings_frame(self): width_enforce_label = ttk.Label(shown_settings_frame, text = 'Output Width Enforcement:') width_enforce_dropdown = ttk.Combobox(shown_settings_frame, textvariable=self.width_enforce_type, values=('No Width Enforcement', 'Automatic Uniform Width', 'User Customized Width')) width_enforce_dropdown.bind("<>", lambda event: self.update_width_mode(widthfieldtitle, widthfield)) - width_enforce_label.grid(row = 2, column = 1, padx=(5, 0), sticky="new") - width_enforce_dropdown.grid(row = 3, column = 1, padx=(5, 0), pady=(2,5), sticky="new") + width_enforce_label.grid(row = 2, column = 1, sticky="new") + width_enforce_dropdown.grid(row = 3, column = 1, pady=(2,5), sticky="new") # Setup of Toggle Button to show subprocess settings or not. subprocess_setting_frame = self.setup_subprocess_frame() show_subprocess_checkbox = ttk.Checkbutton(shown_settings_frame, variable=self.show_subprocess_settings, text = 'Show Subprocess Settings [For Experienced Users Only]', command=lambda: self.subprocess_setting_toggle(subprocess_setting_frame)) @@ -200,8 +202,9 @@ def setup_advanced_settings_frame(self): def setup_subprocess_frame(self): """Setups the Fields for the Subprocess Parameters.""" # Browse Button and Input and Output Field - subprocess_frame = LabelFrame(self, text="Subprocess Settings", padx=(5)) + subprocess_frame = ttk.LabelFrame(self, text="Subprocess Settings", padding=(5,0)) subprocess_frame.columnconfigure(0, weight=1) + subprocess_frame.rowconfigure(6, weight=1) # Setup of Toggle Button to enable subprocess execution settings or not. show_advanced_checkbox = ttk.Checkbutton(subprocess_frame, variable=self.enable_subprocess_execution, text = 'Run the following subprocess after stitching is complete', command=lambda: self.save_app_settings) show_advanced_checkbox.grid(row = 0, column = 0, columnspan=2, pady=(2,5), sticky="new") @@ -212,7 +215,7 @@ def setup_subprocess_frame(self): subprocess_path_field.bind("", self.update_subprocess_path) subprocess_path_label.grid(row = 1,column = 0, sticky="new") subprocess_path_field.grid(row = 2, column = 0, pady=(2,0), sticky="new") - subprocess_path_button.grid(row = 2,column = 1, padx=(15, 0), sticky="ne") + subprocess_path_button.grid(row = 2,column = 1, padx=(5,0), pady=(2,0), sticky="ne") # Setup of Arguments Label and Entry Field. subprocess_arguments_label = ttk.Label(subprocess_frame, text = 'Subprocess Arguments') subprocess_arguments_field = ttk.Entry(subprocess_frame, textvariable=self.subprocess_arguments) @@ -220,27 +223,41 @@ def setup_subprocess_frame(self): subprocess_arguments_label.grid(row = 3, column = 0, sticky="new") subprocess_arguments_field.grid(row = 4, column = 0, columnspan=2, pady=(2,0), sticky="new") # Setup of Back Mode Selector/Checkbox. - argument_hint_label = ttk.Label(subprocess_frame, foreground='blue', text = 'To pass the stitch output directory use the argument [stitched], to pass a custom process output directory use the argument [processed]', justify=LEFT, wraplength=380) + argument_hint_label = ttk.Label(subprocess_frame, foreground='blue', text = 'Use [stitched] to pass the stitcher output directory, Use [processed] to pass a custom process output directory ', justify=LEFT, wraplength=400) argument_hint_label.grid(row=5, column=0, columnspan=2, pady=(2,0), sticky="new") - output_label = ttk.Label(subprocess_frame, text = 'Subprocess Console Output') # Setup of the Subprocess Console. - output_label.grid(row=6, column=0, columnspan=2, pady=(5,0), sticky="new") - self.subprocess_console = Label(subprocess_frame, foreground="white",background="#333", height=12, anchor="sw", justify=LEFT) - self.subprocess_console.grid(row=7, column=0, columnspan=2, pady=(0,5), sticky="news") - # Inserting Text which is read only + subprocess_console_frame = self.setup_console_frame(subprocess_frame) + subprocess_console_frame.grid(row=6, column=0, columnspan=2, pady=(0,5), sticky="news") return subprocess_frame + def setup_console_frame(self, Frame): + console_main_frame = ttk.LabelFrame(Frame, text="Subprocess Console Output") + self.console_canvas = Canvas(console_main_frame, height=12) + console_vertical_scroll = ttk.Scrollbar(console_main_frame, orient=VERTICAL, command=self.console_canvas.yview) + console_vertical_scroll.pack(side=RIGHT, fill=Y, pady=(8,8)) + console_horizental_scroll = ttk.Scrollbar(console_main_frame, orient=HORIZONTAL, command=self.console_canvas.xview) + console_horizental_scroll.pack(side=BOTTOM, fill=X, padx=(8,0)) + self.console_canvas.pack(side=TOP, fill=BOTH, expand=1) + self.console_canvas.configure(yscrollcommand=console_vertical_scroll.set) + self.console_canvas.configure(xscrollcommand=console_horizental_scroll.set) + self.console_canvas.bind('', lambda e: self.console_canvas.configure(scrollregion = self.console_canvas.bbox("all"))) + self.set_mousewheel(self.console_canvas, lambda e: self.console_canvas.yview_scroll(self.mousewheel_handler(e), "units")) + console_second_frame = ttk.Frame(self.console_canvas) + console_second_frame.columnconfigure(0, weight=1) + self.console_canvas.create_window((0,0), window=console_second_frame, anchor="nw") + self.subprocess_console = ttk.Label(console_second_frame) + self.subprocess_console.grid(row=0) + return console_main_frame + def setup_action_frame(self): - action_frame = LabelFrame(self, padx=(5)) - status_label = ttk.Label(action_frame, text='Current Status:') + action_frame = ttk.LabelFrame(self, text='Current Status', padding=(5,0)) status_field = ttk.Entry(action_frame, textvariable=self.status) status_field.config(state=DISABLED) - status_label.grid(row = 0, column=0, columnspan=3, sticky="new") - status_field.grid(row = 1, column=0, columnspan=3, pady=(2,5), sticky="new") + status_field.grid(row = 0, column=0, columnspan=2, pady=(0,5), sticky="new") self.progress = ttk.Progressbar(action_frame) - self.actionbutton = ttk.Button(action_frame, text = 'Start Process', command=self.run_stitch_process_async) - self.progress.grid(row = 2, column=0, columnspan=2, pady=(1,5), sticky="new") - self.actionbutton.grid(row = 2, column = 2, padx=(5,0), pady=(0,5), sticky="new") + self.actionbutton = ttk.Button(action_frame, text = 'Start Process', style="Accent.TButton", command=self.run_stitch_process_async) + self.actionbutton.grid(row = 0, column = 2, padx=(5,0), pady=(0,5), sticky="new") + self.progress.grid(row = 1, column=0, columnspan=3, pady=(1,5), sticky="new") action_frame.columnconfigure(0, weight=1) action_frame.columnconfigure(1, weight=1) action_frame.columnconfigure(2, weight=1) @@ -325,6 +342,20 @@ def validate_onetotwenty_only(self,P,d,s): return False return True + def mousewheel_handler(self, event): + """Handles the status of the scroll bar depending on the mouse""" + units = 0 + if event.num == 5 or event.delta == -120: + units = 1 + elif event.num == 4 or event.delta == 120: + units = -1 + return units + + def set_mousewheel(self, widget, command): + """Activate / deactivate mousewheel scrolling when cursor is over / not over the widget respectively.""" + widget.bind("", lambda _: widget.bind_all('', command)) + widget.bind("", lambda _: widget.unbind_all('')) + def update_gui_progress(self, status_message, progress_increase): """Updates/Increments the progress value with the given value""" self.status.set(status_message) @@ -338,6 +369,8 @@ def update_saving_progress(self, num_of_data): def update_subprocess_console(self, console_line): self.subprocess_console["text"] = self.subprocess_console["text"] + console_line + self.console_canvas.configure(scrollregion = self.console_canvas.bbox("all")) + self.console_canvas.yview_moveto('1.0') def pre_process_check(self): """Checks if all the settings and parameters are ready for the operation to start.""" diff --git a/SmartStitchGUI.spec b/SmartStitchGUI.spec index 8beb37a..56a4140 100644 --- a/SmartStitchGUI.spec +++ b/SmartStitchGUI.spec @@ -3,11 +3,18 @@ block_cipher = None +added_files = [ + ( './gui_theme/light/*', 'gui_theme/light' ), + ( './gui_theme/light.tcl', 'gui_theme' ), + ( './gui_theme/modern_theme.tcl', 'gui_theme' ), + ( './SmartStitchLogo.png', '.' ), + ( './SmartStitchLogo.ico', '.' ), + ] a = Analysis(['SmartStitchGUI.py'], pathex=['.'], binaries=[], - datas = [], + datas = added_files, hiddenimports=[], hookspath=[], runtime_hooks=[], @@ -29,7 +36,7 @@ exe = EXE(pyz, upx=True, console=False , icon='SmartStitchLogo.ico') coll = COLLECT(exe, - a.binaries + [('SmartStitchLogo.png', 'SmartStitchLogo.png', 'DATA'), ('SmartStitchLogo.ico', 'SmartStitchLogo.ico', 'DATA')], + a.binaries, a.zipfiles, a.datas, strip=False, diff --git a/SmartStitchGUI_NoIcon.spec b/SmartStitchGUI_NoIcon.spec index 5153fdb..6197fca 100644 --- a/SmartStitchGUI_NoIcon.spec +++ b/SmartStitchGUI_NoIcon.spec @@ -3,11 +3,17 @@ block_cipher = None +added_files = [ + ( './gui_theme/light/*', 'gui_theme/light' ), + ( './gui_theme/light.tcl', 'gui_theme' ), + ( './gui_theme/modern_theme.tcl', 'gui_theme' ), + ( './SmartStitchLogo.png', '.' ), + ] a = Analysis(['SmartStitchGUI.py'], pathex=['.'], binaries=[], - datas = [], + datas = added_files, hiddenimports=[], hookspath=[], runtime_hooks=[], @@ -29,7 +35,7 @@ exe = EXE(pyz, upx=True, console=False) coll = COLLECT(exe, - a.binaries + [('SmartStitchLogo.png', 'SmartStitchLogo.png', 'DATA')], + a.binaries, a.zipfiles, a.datas, strip=False, diff --git a/gui_theme/light.tcl b/gui_theme/light.tcl new file mode 100644 index 0000000..a2f2dd3 --- /dev/null +++ b/gui_theme/light.tcl @@ -0,0 +1,533 @@ +package require Tk 8.6 + +namespace eval ttk::theme::modern-light { + variable version 2.0 + package provide ttk::theme::modern-light $version + + ttk::style theme create modern-light -parent clam -settings { + proc load_images {imgdir} { + variable I + foreach file [glob -directory $imgdir *.png] { + set img [file tail [file rootname $file]] + set I($img) [image create photo -file $file -format png] + } + } + + load_images [file join [file dirname [info script]] light] + + array set colors { + -fg "#000000" + -bg "#ffffff" + -disabledfg "#737373" + -disabledbg "#ffffff" + -selectfg "#000000" + -selectbg "#ffffff" + } + + ttk::style layout TButton { + Button.button -children { + Button.padding -children { + Button.label -side left -expand true + } + } + } + + ttk::style layout Toolbutton { + Toolbutton.button -children { + Toolbutton.padding -children { + Toolbutton.label -side left -expand true + } + } + } + + ttk::style layout TMenubutton { + Menubutton.button -children { + Menubutton.padding -children { + Menubutton.indicator -side right + Menubutton.label -side right -expand true + } + } + } + + ttk::style layout TOptionMenu { + OptionMenu.button -children { + OptionMenu.padding -children { + OptionMenu.indicator -side right + OptionMenu.label -side right -expand true + } + } + } + + ttk::style layout Accent.TButton { + AccentButton.button -children { + AccentButton.padding -children { + AccentButton.label -side left -expand true + } + } + } + + ttk::style layout TCheckbutton { + Checkbutton.button -children { + Checkbutton.padding -children { + Checkbutton.indicator -side left + Checkbutton.label -side right -expand true + } + } + } + + ttk::style layout Switch.TCheckbutton { + Switch.button -children { + Switch.padding -children { + Switch.indicator -side left + Switch.label -side right -expand true + } + } + } + + ttk::style layout Toggle.TButton { + ToggleButton.button -children { + ToggleButton.padding -children { + ToggleButton.label -side left -expand true + } + } + } + + ttk::style layout TRadiobutton { + Radiobutton.button -children { + Radiobutton.padding -children { + Radiobutton.indicator -side left + Radiobutton.label -side right -expand true + } + } + } + + ttk::style layout Vertical.TScrollbar { + Vertical.Scrollbar.trough -sticky ns -children { + Vertical.Scrollbar.thumb -expand true + } + } + + ttk::style layout Horizontal.TScrollbar { + Horizontal.Scrollbar.trough -sticky ew -children { + Horizontal.Scrollbar.thumb -expand true + } + } + + ttk::style layout TCombobox { + Combobox.field -sticky nswe -children { + Combobox.padding -expand true -sticky nswe -children { + Combobox.textarea -sticky nswe + } + } + Combobox.button -side right -sticky ns -children { + Combobox.arrow -sticky nsew + } + } + + ttk::style layout TSpinbox { + Spinbox.field -sticky nsew -children { + Spinbox.padding -expand true -sticky nswe -children { + Spinbox.textarea -sticky nswe + } + + } + Spinbox.button -side right -sticky ns -children { + null -side right -children { + Spinbox.uparrow -side top + Spinbox.downarrow -side bottom + } + } + } + + ttk::style layout Horizontal.TSeparator { + Horizontal.separator -sticky nswe + } + + ttk::style layout Vertical.TSeparator { + Vertical.separator -sticky nswe + } + + ttk::style layout Horizontal.Tick.TScale { + Horizontal.TickScale.trough -sticky ew -children { + Horizontal.TickScale.slider -sticky w + } + } + + ttk::style layout Vertical.Tick.TScale { + Vertical.TickScale.trough -sticky ns -children { + Vertical.TickScale.slider -sticky n + } + } + + ttk::style layout Card.TFrame { + Card.field { + Card.padding -expand 1 + } + } + + ttk::style layout TLabelframe { + Labelframe.border { + Labelframe.padding -expand 1 -children { + Labelframe.label -side right + } + } + } + + ttk::style layout TNotebook.Tab { + Notebook.tab -children { + Notebook.padding -side top -children { + Notebook.label -side top -sticky {} + } + } + } + + ttk::style layout Treeview.Item { + Treeitem.padding -sticky nswe -children { + Treeitem.indicator -side left -sticky {} + Treeitem.image -side left -sticky {} + Treeitem.text -side left -sticky {} + } + } + + + # Elements + + # Button + ttk::style configure TButton -padding {8 4 8 4} -width -10 -anchor center + + ttk::style element create Button.button image \ + [list $I(rect-basic) \ + {selected disabled} $I(rect-basic) \ + disabled $I(rect-basic) \ + selected $I(rect-basic) \ + pressed $I(rect-basic) \ + active $I(button-hover) \ + ] -border 4 -sticky ewns + + # Toolbutton + ttk::style configure Toolbutton -padding {8 4 8 4} -width -10 -anchor center + + ttk::style element create Toolbutton.button image \ + [list $I(empty) \ + {selected disabled} $I(empty) \ + disabled $I(empty) \ + selected $I(rect-basic) \ + pressed $I(rect-basic) \ + active $I(rect-basic) \ + ] -border 4 -sticky ewns + + # Menubutton + ttk::style configure TMenubutton -padding {8 4 4 4} + + ttk::style element create Menubutton.button \ + image [list $I(rect-basic) \ + disabled $I(rect-basic) \ + pressed $I(rect-basic) \ + active $I(button-hover) \ + ] -border 4 -sticky ewns + + ttk::style element create Menubutton.indicator \ + image [list $I(down) \ + active $I(down) \ + pressed $I(down) \ + disabled $I(down) \ + ] -width 15 -sticky e + + # OptionMenu + ttk::style configure TOptionMenu -padding {8 4 4 4} + + ttk::style element create OptionMenu.button \ + image [list $I(rect-basic) \ + disabled $I(rect-basic) \ + pressed $I(rect-basic) \ + active $I(button-hover) \ + ] -border 4 -sticky ewns + + ttk::style element create OptionMenu.indicator \ + image [list $I(down) \ + active $I(down) \ + pressed $I(down) \ + disabled $I(down) \ + ] -width 15 -sticky e + + # AccentButton + ttk::style configure Accent.TButton -padding {8 4 8 4} -width -10 -anchor center + + ttk::style element create AccentButton.button image \ + [list $I(rect-accent) \ + {selected disabled} $I(rect-accent-hover) \ + disabled $I(rect-accent-hover) \ + selected $I(rect-accent) \ + pressed $I(rect-accent) \ + active $I(rect-accent-hover) \ + ] -border 4 -sticky ewns + + # Checkbutton + ttk::style configure TCheckbutton -padding 4 + + ttk::style element create Checkbutton.indicator image \ + [list $I(box-basic) \ + {alternate disabled} $I(check-tri-basic) \ + {selected disabled} $I(check-basic) \ + disabled $I(box-basic) \ + {pressed alternate} $I(check-tri-hover) \ + {active alternate} $I(check-tri-hover) \ + alternate $I(check-tri-accent) \ + {pressed selected} $I(check-hover) \ + {active selected} $I(check-hover) \ + selected $I(check-accent) \ + {pressed !selected} $I(rect-hover) \ + active $I(box-hover) \ + ] -width 26 -sticky w + + # Switch + ttk::style element create Switch.indicator image \ + [list $I(off-basic) \ + {selected disabled} $I(on-basic) \ + disabled $I(off-basic) \ + {pressed selected} $I(on-hover) \ + {active selected} $I(on-hover) \ + selected $I(on-accent) \ + {pressed !selected} $I(off-hover) \ + active $I(off-hover) \ + ] -width 46 -sticky w + + # ToggleButton + ttk::style configure Toggle.TButton -padding {8 4 8 4} -width -10 -anchor center + + ttk::style element create ToggleButton.button image \ + [list $I(rect-basic) \ + {selected disabled} $I(rect-accent-hover) \ + disabled $I(rect-basic) \ + {pressed selected} $I(rect-basic) \ + {active selected} $I(rect-accent) \ + selected $I(rect-accent) \ + {pressed !selected} $I(rect-accent) \ + active $I(rect-basic) \ + ] -border 4 -sticky ewns + + # Radiobutton + ttk::style configure TRadiobutton -padding 4 + + ttk::style element create Radiobutton.indicator image \ + [list $I(outline-basic) \ + {alternate disabled} $I(radio-tri-basic) \ + {selected disabled} $I(radio-basic) \ + disabled $I(outline-basic) \ + {pressed alternate} $I(radio-tri-hover) \ + {active alternate} $I(radio-tri-hover) \ + alternate $I(radio-tri-accent) \ + {pressed selected} $I(radio-hover) \ + {active selected} $I(radio-hover) \ + selected $I(radio-accent) \ + {pressed !selected} $I(circle-hover) \ + active $I(outline-hover) \ + ] -width 26 -sticky w + + # Scrollbar + ttk::style element create Horizontal.Scrollbar.trough image $I(hor-basic) \ + -sticky ew + + ttk::style element create Horizontal.Scrollbar.thumb \ + image [list $I(hor-accent) \ + disabled $I(hor-basic) \ + pressed $I(hor-hover) \ + active $I(hor-hover) \ + ] -sticky ew + + ttk::style element create Vertical.Scrollbar.trough image $I(vert-basic) \ + -sticky ns + + ttk::style element create Vertical.Scrollbar.thumb \ + image [list $I(vert-accent) \ + disabled $I(vert-basic) \ + pressed $I(vert-hover) \ + active $I(vert-hover) \ + ] -sticky ns + + # Scale + ttk::style element create Horizontal.Scale.trough image $I(scale-hor) \ + -border 5 -padding 0 + + ttk::style element create Horizontal.Scale.slider \ + image [list $I(circle-accent) \ + disabled $I(circle-basic) \ + pressed $I(circle-hover) \ + active $I(circle-hover) \ + ] -sticky {} + + ttk::style element create Vertical.Scale.trough image $I(scale-vert) \ + -border 5 -padding 0 + + ttk::style element create Vertical.Scale.slider \ + image [list $I(circle-accent) \ + disabled $I(circle-basic) \ + pressed $I(circle-hover) \ + active $I(circle-hover) \ + ] -sticky {} + + # Tickscale + ttk::style element create Horizontal.TickScale.trough image $I(scale-hor) \ + -border 5 -padding 0 + + ttk::style element create Horizontal.TickScale.slider \ + image [list $I(tick-hor-accent) \ + disabled $I(tick-hor-basic) \ + pressed $I(tick-hor-hover) \ + active $I(tick-hor-hover) \ + ] -sticky {} + + ttk::style element create Vertical.TickScale.trough image $I(scale-vert) \ + -border 5 -padding 0 + + ttk::style element create Vertical.TickScale.slider \ + image [list $I(tick-vert-accent) \ + disabled $I(tick-vert-basic) \ + pressed $I(tick-vert-hover) \ + active $I(tick-vert-hover) \ + ] -sticky {} + + # Progressbar + ttk::style element create Horizontal.Progressbar.trough image $I(hor-basic) \ + -sticky ew + + ttk::style element create Horizontal.Progressbar.pbar image $I(hor-accent) \ + -sticky ew + + ttk::style element create Vertical.Progressbar.trough image $I(vert-basic) \ + -sticky ns + + ttk::style element create Vertical.Progressbar.pbar image $I(vert-accent) \ + -sticky ns + + # Entry + ttk::style element create Entry.field \ + image [list $I(box-basic) \ + {focus hover} $I(box-accent) \ + invalid $I(box-invalid) \ + disabled $I(box-basic) \ + focus $I(box-accent) \ + hover $I(box-hover) \ + ] -border 5 -padding {8} -sticky news + + # Combobox + ttk::style map TCombobox -selectbackground [list \ + {!focus} $colors(-selectbg) \ + {readonly hover} $colors(-selectbg) \ + {readonly focus} $colors(-selectbg) \ + ] + + ttk::style map TCombobox -selectforeground [list \ + {!focus} $colors(-selectfg) \ + {readonly hover} $colors(-selectfg) \ + {readonly focus} $colors(-selectfg) \ + ] + + ttk::style element create Combobox.field \ + image [list $I(box-basic) \ + {readonly disabled} $I(rect-basic) \ + {readonly pressed} $I(rect-basic) \ + {readonly focus hover} $I(button-hover) \ + {readonly focus} $I(button-hover) \ + {readonly hover} $I(button-hover) \ + {focus hover} $I(box-accent) \ + readonly $I(rect-basic) \ + invalid $I(box-invalid) \ + disabled $I(box-basic) \ + focus $I(box-accent) \ + hover $I(box-hover) \ + ] -border 5 -padding {8} + + ttk::style element create Combobox.button \ + image [list $I(combo-button-basic) \ + {!readonly focus} $I(combo-button-focus) \ + {readonly focus} $I(combo-button-hover) \ + {readonly hover} $I(combo-button-hover) + ] -border 5 -padding {2 6 6 6} + + ttk::style element create Combobox.arrow image $I(down) \ + -width 15 -sticky e + + # Spinbox + ttk::style element create Spinbox.field \ + image [list $I(box-basic) \ + invalid $I(box-invalid) \ + disabled $I(box-basic) \ + focus $I(box-accent) \ + hover $I(box-hover) \ + ] -border 5 -padding {8} -sticky news + + ttk::style element create Spinbox.uparrow \ + image [list $I(up) \ + disabled $I(up) \ + pressed $I(up-accent) \ + active $I(up-accent) \ + ] -border 4 -width 15 -sticky e + + ttk::style element create Spinbox.downarrow \ + image [list $I(down) \ + disabled $I(down) \ + pressed $I(down-accent) \ + active $I(down-accent) \ + ] -border 4 -width 15 -sticky e + + ttk::style element create Spinbox.button \ + image [list $I(combo-button-basic) \ + {!readonly focus} $I(combo-button-focus) \ + {readonly focus} $I(combo-button-hover) \ + {readonly hover} $I(combo-button-hover) + ] -border 5 -padding {2 6 6 6} + + # Sizegrip + ttk::style element create Sizegrip.sizegrip image $I(size) \ + -sticky ewns + + # Separator + ttk::style element create Horizontal.separator image $I(separator) + + ttk::style element create Vertical.separator image $I(separator) + + # Card + ttk::style element create Card.field image $I(card) \ + -border 10 -padding 4 -sticky news + + # Labelframe + ttk::style element create Labelframe.border image $I(card) \ + -border 5 -padding 4 -sticky news + + # Notebook + ttk::style element create Notebook.client \ + image $I(notebook) -border 5 + + ttk::style element create Notebook.tab \ + image [list $I(tab-disabled) \ + selected $I(tab-basic) \ + active $I(tab-hover) \ + ] -border 5 -padding {14 4} + + # Treeview + ttk::style element create Treeview.field image $I(card) \ + -border 5 + + ttk::style element create Treeheading.cell \ + image [list $I(tree-basic) \ + pressed $I(tree-pressed) + ] -border 5 -padding 4 -sticky ewns + + ttk::style element create Treeitem.indicator \ + image [list $I(right) \ + user2 $I(empty) \ + user1 $I(down) \ + ] -width 26 -sticky {} + + ttk::style configure Treeview -background $colors(-bg) + ttk::style configure Treeview.Item -padding {2 0 0 0} + ttk::style map Treeview \ + -background [list selected #ccc] \ + -foreground [list selected $colors(-fg)] + + # Panedwindow + # Insane hack to remove clam's ugly sash + ttk::style configure Sash -gripcount 0 + } +} diff --git a/gui_theme/light/box-accent.png b/gui_theme/light/box-accent.png new file mode 100644 index 0000000000000000000000000000000000000000..4f39f3e53590898e0d15c6a6a4e2be767b2220a5 GIT binary patch literal 3009 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 MPgg&ebxsLQ06=ki0RR91 literal 0 HcmV?d00001 diff --git a/gui_theme/light/box-hover.png b/gui_theme/light/box-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..e691da47523a201a84d09b0428a715a91632c934 GIT binary patch literal 329 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`kNVGw3Kp1&dmC@5Lt z8c`CQpH@mmtT}V`<;yxP|-C{7sn8b-nUm5Zfr3SX?@77 zW>^@&pybRLz+h**g=Ojm)?a)T84VgT3xuYw*qwKD)$zlh#6O%ZR8LH^J1_j$;!sq# zgz`I;mWFFm$0VLq^2r=OSbN`CaAR@b`)6~Kl^(5o{lmuJuPyPxB8>|sXV<3g7Zm(f z>z=jNH8ix}fMLaJsoUEWdkvj5ze}6@sD{C) XcJ|G)Z1<)CeaPVH>gTe~DWM4f_4|RJ literal 0 HcmV?d00001 diff --git a/gui_theme/light/box-invalid.png b/gui_theme/light/box-invalid.png new file mode 100644 index 0000000000000000000000000000000000000000..1f16f5c5c466d5c1253eafe703bdab6edae989b8 GIT binary patch literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`kNVGw3Kp1&dmC@5Lt z8c`CQpH@mmtT}V`<;yxP|+$+7sn8b-nUl_`3@QIv_8E4 z&hzlh2@_WFH49;N(vq9ev|o9!`&Vnax{;sFy!O@@x# z<|(fhUiaeka_m`b&%^x2`l?~`zH;UCFMpOr+I~Cn_L*CciHFChgY}-5Jtp0{Kjpj3 z14g+A=?NV7-v0jHHFJLK^04QdmmtT}V`<;yxP|;;i7sn8b-nUl`*R?2!v_4es ze0VEczw^irF`@8BRXTTDvllind2bch;JNH;c=hweU-}PDzx10J^ zWQ*q$f}Av4mt_XL`91GhrQ7w=jN4+Np|(tWzZaZ4DAAlbD?sP;q*I%Y81VEjxWDDv zj`z}MqPP`Z#Ml^|I3$t}B=smP%9+q1;KXoxT3yva@tTA7jdO}C-fv#`dY6MsLXelm z^GyeHZ(sOsJ0pneT2#i`|68wA^RG4SF_bti=<208_xaDg4FZRhCv@x+54dh>cl|(8 VTU7X|89?tbc)I$ztaD0e0st5RgsuPp literal 0 HcmV?d00001 diff --git a/gui_theme/light/card.png b/gui_theme/light/card.png new file mode 100644 index 0000000000000000000000000000000000000000..09152f5f9cef96928b0a31da82fa6c1458202ba2 GIT binary patch literal 444 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2nC-&H|6fVg?4j!ywFfJby(BP*AeO zHKHUqKdq!Zu_%?Hyu4g5GcUV1Ik6yBFTW^#_B$IX1_nk?PZ!6KjK;UO46_b92(&(2 zK3Apn=}~Sr&OJN6*Ve3hqI0q~Mtyf{$Xl-yu8*!R;acLA$Ru^JM!mxRvft4&`V8kZ zmnPr;-hbI7abCJdT90Gw^^951PFsFwe6TesjZabGInR6BHCq)HE#3Za<&>sE8NuY1 zV!nITHcO^VC_eVGL`eQabH{@@&0EE$pJu)NR&3e(>WcT_!XKpt4_5cDd!4W>vuSJD zOW*R%*B({vJ#^;to>SR>6qKd}B}|k16mQ}p#XHf>dC5hAOrn{F$0Vi%O}kgPJ&3D= zW7)dwp2s`B%-hX-xZ!LX^JNp>q@LA#PQ5L2=3vady(lTI&roUUmR07<6D0(k4%F>G z{;UxvCAAzES!PC{xWt~$(696*a By^H_= literal 0 HcmV?d00001 diff --git a/gui_theme/light/check-accent.png b/gui_theme/light/check-accent.png new file mode 100644 index 0000000000000000000000000000000000000000..75da9968d23126e6dc3519d16dbd29da02a1ca45 GIT binary patch literal 3124 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 literal 0 HcmV?d00001 diff --git a/gui_theme/light/check-hover.png b/gui_theme/light/check-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..3811696bcffb6c440fda0c378d0c739e0afa24ac GIT binary patch literal 451 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 XIrp;ozT>-qE@tp_^>bP0l+XkK(A#KJ literal 0 HcmV?d00001 diff --git a/gui_theme/light/check-tri-hover.png b/gui_theme/light/check-tri-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..d611d76c85ac64fb6f2f767d4ca2cd4b57009547 GIT binary patch literal 319 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 TN}JvQB^W$i{an^LB{Ts5?#3bM literal 0 HcmV?d00001 diff --git a/gui_theme/light/circle-hover.png b/gui_theme/light/circle-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..6ea1803a1c50a4b188b8c69eaa7e885b4a8568c6 GIT binary patch literal 429 zcmV;e0aE^nP)pF8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10Xj)U zK~y-6t<^z}!XOxi;TPD~MZ2sgfZn0qih5WhZq+MTdIGyt6LpQ9MN`M9<4ijJb_93= z`3b*hnx^3?Aq2{@q^c_Fy5@X7127tmNYfN!48|CgQqNlv&){yi!#T(Cczjv>m^hA^ zPN!s9_8z?5ZaC-IZnqzy=j3^gwH6@+0J59tg8^(d8&<2;eJr89W*@A}dcDSb--00o zoO8XgE{ny25CXC+%U=udmz+)~y!XiNs6(WxDr8;PgMs_~9(lc92Lmsc%lESxB0>mc z6h(u9Q4}H5G#v~akH<)3%wV9_x&@OY`8O8FaSJM?u-5(?oX_VdrP?ZISw^1cy|JPw z&{_izzm2uF7g`hrlgZ>he)(X%_biu74u``>C`l4#v)TP*KZ4M<0Pp?B7NE6$+XB7- X?E#M&T1q`j00000NkvXXu0mjf)#bFZ literal 0 HcmV?d00001 diff --git a/gui_theme/light/combo-button-basic.png b/gui_theme/light/combo-button-basic.png new file mode 100644 index 0000000000000000000000000000000000000000..b7daa04e0dc7a5d636fea3fcac79da582469d676 GIT binary patch literal 247 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 IM6N<$f^qj{A^-pY literal 0 HcmV?d00001 diff --git a/gui_theme/light/combo-button-hover.png b/gui_theme/light/combo-button-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..1d06c577dc158a8cbba0de6709dbd5e52e7767a8 GIT binary patch literal 299 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 literal 0 HcmV?d00001 diff --git a/gui_theme/light/hor-accent.png b/gui_theme/light/hor-accent.png new file mode 100644 index 0000000000000000000000000000000000000000..1757ffc126579a1263b9d8ca31579847073c8ef2 GIT binary patch literal 2816 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 literal 0 HcmV?d00001 diff --git a/gui_theme/light/off-basic.png b/gui_theme/light/off-basic.png new file mode 100644 index 0000000000000000000000000000000000000000..cf383f0af6c145dac522457fa7115a2265b4475a GIT binary patch literal 547 zcmV+;0^I$HP)r~Gynhq8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10kBC# zK~zYI&6dHgqA(OdPn(ej+%yCtiR@(O|9^@*+(9BC!LEw1ptB(QgfWiK(RrQ~y}7wL zX>aKj&N;^n=N!fuj4@bi>HD5x80KmJgp?A`^9X_ftu#x~_Yv z(BDu>k)|nH>)V3PIm)u6s;d7gHfOb3k*4WoEzcjHAO}!Y6=hjo*1upp*14RNk|>G@ z!w}#10chKnrfI0_nj5YAG7g6W%jI(H%V8MYZnvBCoacFDS#}Yd)3z;np40dJ+a#4z zY`0saF=iqsrMxQ#;QKyVmfgH{ucGTZj4`9&HBl7Zl{@46K5-ns%MV}_wAN07VHiGK z;5)g`V68>Y`{rqfCbqPA>$n*TJq_vhj&)?dEN~!TB zan3no4Ez0lk|2a2j^iJB>Hs#I&6glRQ4}9BEC3`)!g{?1uBMqZO-YjE$E40&%fXF- l)fhuj6rVS+Uh_#K|8EO<@sy`G&7%MS002ovPDHLkV1g@J_;UaN literal 0 HcmV?d00001 diff --git a/gui_theme/light/off-hover.png b/gui_theme/light/off-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..893b39cb40feb6c232d9da5768fc39272523c622 GIT binary patch literal 663 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 M07*qoM6N<$f?zs2e*gdg literal 0 HcmV?d00001 diff --git a/gui_theme/light/on-basic.png b/gui_theme/light/on-basic.png new file mode 100644 index 0000000000000000000000000000000000000000..23ec72fa727e4cd496d1ee4e7042203847988866 GIT binary patch literal 538 zcmV+#0_FXQP)r~Gynhq8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10jEhs zK~zYI&6dH6qd*WqpUuWbb7@405O498|NoTS%uOL8m_D`9gS`hyMxB{#n2o!>lT{S> z=q{~tthJUI)>^dIXst2E&~+Vs-_Ohb3Lylp>*D)9N-305IF9qF&Y25duUCqqpl#c? z3jGNwB}tN?l=@oGT1!zBlx6u(#pdjGJCY=M#Nz(2204JTEGdfO5&weWT9=j+LJ)=_ zK@i}19so_#P}en8RWa_g%jLp$yB+$n?|XYXofhpm*L6wL^dUBfwrH&f!6ga9@TuG#&+~|)Xp+-fBaAUixd9La!H;W= zF^KWKFTpFP_g!t*bsxW(H83A)j^iL)*Io3bP1C$wd%N8x@n*9@_`d&crwMgk|G3uo zeZ+kBy_>44UOGi%3{_Q4a!RQ|P)fO!AJ$s3EPE(^b literal 0 HcmV?d00001 diff --git a/gui_theme/light/on-hover.png b/gui_theme/light/on-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..d55f7ae0df5c1afb4026a8de6da27e6f7f7bba59 GIT binary patch literal 649 zcmV;40(Sk0P)r~Gynhq8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10v1U` zK~zYI&6drs>0lUzpH{=jPojyRG+e;fi5WA@5ceSA7Tkn;khlm;G3&^H_6kTt!hjhm z&OoqrJNAyF`|LIA`c~2>{dwOdold6{E*%aBrqd~wWig-6*=#oK_j`BjpXB%Z35UaI znuf0H=(>*2=lhhC+<=qGgkG=5dcA%t&{v8^qg1O^bX|W8csw5I^?Hm(qaOuxE1%C( zsZ@|82>|(W@EhO&hQlHKe*b!{!1=X$4W}pyxm=D+CPO?P2Vk*SFdmOF3856^AerrmC{*=(+!s;V@bP2}lx>M5L}C{N)4 zlF20XdL2bkuHI_3!Zb}}%d$L!1IXoaPvI^~CX-~d**nj&Eadro?iCvVnM~&8>})ne z-fp+=X1Y@>7W;Pg^7CA@-EMDV<~PW_)Feql4uwLV-gLQKzMKsPgUFhuy_@My|a;iM>t86sMTsWK!9$y%WydK6!N<&7K@b2W#B`bsZ=Ty3Wfg$ z1?MMMC=@7_N;l74SWVNU+wHPit$q|vRaL6hDnf`m{}UjbE5B))ca?v)+r1Si5C{;7 jM9?%1Ap}B*hn4>iGX(J0!$+Lu00000NkvXXu0mjfD^w=D literal 0 HcmV?d00001 diff --git a/gui_theme/light/outline-basic.png b/gui_theme/light/outline-basic.png new file mode 100644 index 0000000000000000000000000000000000000000..2e798741af582c306ee95d06b5c966006fa560ae GIT binary patch literal 508 zcmVpF8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10f|XO zK~y-6t<}w{t1uXa;a8;!)?(6WrFP)`Ur`+dblODx0iz{*AeNqXv-j!ota%<2zPRE! z=NvC_&S8wf7{f3OSZe_Y!;mV6m5e5(h0Yy=uwZ<5;fa_7u=krI{GkUpPsHzI*9KJDzD2g~7 z4j*G{*1;KL7Ent0&)Ayd@wk9}-~T$%zuo094EWPDJ?`0-gkgxacA4`3h;t6l^YB-B zYo=*px7*>zaZJ~Bo58ki+3)xGLI||hn?bELX__wJIF7V!yJ>gUT7(ezp68Ke8A>VU zdHxui=NY9GS(YtB0UrHUmgPt2JkOM6iInnDV}JBvUDs%>$@BczU$Jdllu}43A5HTH y0vKbcs){fSIUbMS7VPbI!&>`u!9Hip6YvGtJMIAU<2DKa0000pF8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10pm$T zK~y-6rIo#ovOpAuU!aFIv{;}eOz=AV>-3KNxd5$=HC6`h17xrQEVNe9hz)wa!qx1j z8+TowawhZ4$(+o41R^5baXOt41OdV@#A>xdnx+5%MNyz>8cfrKX_}BE>Ha8$d*N(0 zgX_9bRTY+Hp;RhCQ4|2ccDu!5v4H1!Sg+Tp*Xv-6eJ?zp&v0EA^Z6X@b{o2`KivM6 zIF4c4HcZn*tyY5|2$v1|WICPFa5$ta%jmacSw@4wfE>rUt$~Qh_kHU3`!C6^91aKS z^?DQp!9|$oId!{TilXRc*_Akssnh9Dp64V6K>$@%Q7)ICzS%QMr4m$C1?Lc@`$w#wyl330#QLzd;Yg^HqJx7$H{+w=($K@bFpvMgh_+r2GJ z(-g8SL)0`4Ns_!ROp*k}ViBTgn(#dDZK3b`Fbv}&+-x?8qUg`EIF7N|Y%W4cl2EJF zVB0nhhr`RVEX!cqHk!>QBuTn-nK1^&7{=oqFmve9S+#uyC40PrQghzPFhf^&{m ztM%hojG_pW$pnlsRIAlnd_4p#=NyjXpin5lvMlJjj*pKI0RIQo>zN&o-= literal 0 HcmV?d00001 diff --git a/gui_theme/light/radio-accent.png b/gui_theme/light/radio-accent.png new file mode 100644 index 0000000000000000000000000000000000000000..87167556ea359abf60c02ad3f60c850dda9baecd GIT binary patch literal 3278 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 M07*qoM6N<$f)f)V#Q*>R literal 0 HcmV?d00001 diff --git a/gui_theme/light/radio-basic.png b/gui_theme/light/radio-basic.png new file mode 100644 index 0000000000000000000000000000000000000000..793531e8943c861c9cf804d514432e8d3c275354 GIT binary patch literal 482 zcmV<80UiE{P)pF8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10dGk} zK~y-6t(DEHvoH{b--t~hlrlSo&JFbb@1^d#GEi3;Diuu|@-2#ftiq5kV<6Z-tr*z4vg=VHk$D;%AI8U}g}}vM{9t z=Ny`*`B5~dC<-w1w9dwdPhVY}U;s;X&}o)Hmb*Xwmr$jmRY zkvz{|PW73t>yX`Ux5ebR&EMog2>-|CFHlM$(^@Yk+qPY8yj(7e@y%v~%v!scbj~5h z_!ht4@2g{GtwlEf7DxKN$MJZC_Z~4u#2DedM^#m;V@5>Ci3rA+#i9@bPN&mi^BiLg zhzOZdYIO{L12aDkWqj45C_a{zWjS4A)7UWcN7Aw^vET2f_1gt2BB<;7`wRA&Z+-#) Y08+8fU7Crx_5c6?07*qoM6N<$g1D^HssI20 literal 0 HcmV?d00001 diff --git a/gui_theme/light/radio-hover.png b/gui_theme/light/radio-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..d6faa74d8e7ffbfccdbe4be5a8e25f37f8392a8e GIT binary patch literal 583 zcmV-N0=WH&P)pF8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10n|xE zK~y-6t(CvdqCgbI4}TiJ0!<)RSX<0c*;+s=!o&Ck`vNw;f^R?^TlEQyG8TqX3KP@> zO$ZITh0!%Inq9M}n|tp0WriVlq}%OwLrFzZAPhrnHXFooj5JLF0QGturfGsw3Q8#y zMJY!im4WN^8jLX$t8`sQzu$*tSz_SzdIe()i^bw2s4UyI;kqs)Ndf@K591pc z0LWY&HYu{0=ON0*tY*VGjjCfTAd%hGF>j0ve45eBVdA-39qk|e40o=zul&Y^U>-Cz6tUI-fu1~5$%s;WX&RWzGTbUGa@mrLY%UdgDc3OSBr z;qH9j$Is7CrCzJm;CY@fv)k<;UoID+`8ejkc<1x^&u{ZTBuNrvP1A&C6h&`?+wE3Z z*E9{XX_`WlF@`M5D)lVO5CnlR(`vOKQ%Z$qk|Y=ohghvv$nzX|o+AuHj7Fp9uqcZV z0+mtNpO1z20+O8L*slOePcIH+_|181OvrxwE%G;Qj<~&Obf@gb?8q@Eew+ V%yYh|vQq#6002ovPDHLkV1n(^^Gg5# literal 0 HcmV?d00001 diff --git a/gui_theme/light/radio-tri-accent.png b/gui_theme/light/radio-tri-accent.png new file mode 100644 index 0000000000000000000000000000000000000000..fada630ba240ef8f0712aeac0e2098bf124118a8 GIT binary patch literal 3179 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 R2Gall002ovPDHLkV1lC%?lJ%X literal 0 HcmV?d00001 diff --git a/gui_theme/light/radio-tri-basic.png b/gui_theme/light/radio-tri-basic.png new file mode 100644 index 0000000000000000000000000000000000000000..da85d039c66782227c9f075e5b47fc8c189ba559 GIT binary patch literal 400 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 AHvj+t literal 0 HcmV?d00001 diff --git a/gui_theme/light/rect-basic.png b/gui_theme/light/rect-basic.png new file mode 100644 index 0000000000000000000000000000000000000000..239ca31ff954f88ffeb031d7e4495175e516e11d GIT binary patch literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`kNVGw3Kp1&dmC@5Lt z8c`CQpH@mmtT}V`<;yxP*J<5i(`mI@7t>z1(_9jTrRS* z#wbY%uwJM)HCezV;;`sor+)E+*}*6DADm5_{q0`$TGr6knFsHFR8e9wc6KR<6~8p6 zxZhCDdH;iZ)|*!CJH~L}?!r|k(!NRUHa33JQCj}4Pi9%I^#ex!AL1S^i4uZ}#>Em5 s*{))OE^Abjwp^RANN>T`wjeIMB4sCzT5<88KqoPHy85}Sb4q9e0I&R3&j0`b literal 0 HcmV?d00001 diff --git a/gui_theme/light/rect-hover.png b/gui_theme/light/rect-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..9252c4faeab9f329e24eec475af8b00fb6add029 GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`kNVGw3Kp1&dmC@5Lt z8c`CQpH@mmtT}V`<;yxP|;>j7sn8b-nUmb=C&G0xISzS zmI%IR(8QV~%I%ie_U3@jykqMoHuSMgnDFnq%31AsP79v!d=TBfv$NxbiEqXGPQy*_ ztC9ged=^iMe^4P-b{`WPntGKGpOE_OIt+`tI*Ouq7D$fH8zGBuP4{$h4B?oWds>n2kb_9e!msJ!yNgbXtK#TXkq?aHuWUKb6P3SLJ!G zd%|w&Ir;g|Wv_Rc-`*C>V9_oxt@i$YhJ;0{mP;hhWnkEs6=Hhl#2>*Tpc5H9UHx3v IIVCg!0GXp=@Bjb+ literal 0 HcmV?d00001 diff --git a/gui_theme/light/scale-hor.png b/gui_theme/light/scale-hor.png new file mode 100644 index 0000000000000000000000000000000000000000..d11f5087d5493467b85dc522ac7d161527f83bb0 GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`kNVGw3Kp1&dmC@5Lt z8c`CQpH@mmtT}V`<;yxP?4Uei(`mIZ}Ol2|NqysX)&o~ zNttCm@GzY4^v%u9A*KZ%s%O4pGwOTxG?1CSv610^5m(2F47Hm;oeZ9?elF{r5}E*E CeKT+X literal 0 HcmV?d00001 diff --git a/gui_theme/light/scale-vert.png b/gui_theme/light/scale-vert.png new file mode 100644 index 0000000000000000000000000000000000000000..f78595dc4e0a85cb4d68a30518f17ea38608a71c GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`kNVGw3Kp1&dmC@5Lt z8c`CQpH@mmtT}V`<;yxP?5f;i(`mIZ}Ol2|Nqys**ti2 zbF)TGa&mIbDajchPEBHTl77lTwumbgZg z1m~xflqVLYGL)B>>t*I;7bhncr0V4trO$q6BL!5%>*?Yc!Z9=1qWIaFdIk;y=9Fbm SxAFre7(8A5T-G@yGywp;h#-If literal 0 HcmV?d00001 diff --git a/gui_theme/light/size.png b/gui_theme/light/size.png new file mode 100644 index 0000000000000000000000000000000000000000..bde3adebe74a153b0c026906ca09e70d59b636b1 GIT binary patch literal 471 zcmV;|0Vw{7P)-JJtZ z&dE*GJkK*9PEi!(d5(yXWf|&IxbJ&Tr_-XXwFIB0j^p^EpU>y#a1=#sHX8txQf#-| z&ujlo+qQ@Z#+bj8z4v^5ec`=dysqmg%aX_A!8A?plfCy`uh&H%4hPojHRto0VHf~# z&Y|C>)^+_$hheyYKi=EgaUB2B)>@1)FW#RE^WIa}HE|r{oO`*mh>#@7H{AC<<2VvU z(E?A?MBBFCpCR~PuxT1ZgfI-zMNx3S-vQWcHthF%x~}7LxiAa^#u$#rBdgVl+wDeG zRVbxM)0803^X1g4s%YDmq9~T-48uTKmNZR6RaF4Y^Gu%S1R}D)N-0DHtzREOL=X{_ zQj4dxCdjf3Yb{!9(lo^wLy{yo=LmuT=Nw6r5QZUXnxeJFTFY*?;~#xqs!OlVh@t=h N002ovPDHLkV1oBe)T00Z literal 0 HcmV?d00001 diff --git a/gui_theme/light/tab-basic.png b/gui_theme/light/tab-basic.png new file mode 100644 index 0000000000000000000000000000000000000000..365fdffacc6dd334f2f7bcbef2bb9eb0e29d91b0 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F_2CHVaAGyU%i10$r9Iy zlHmNblJdl&REF~Ma=pyF?Be9af>gcyqV(DCY@~pSGCW-zLo9mVp4%vRL_vf(P*O-p zYXRf0^=)h+jZ7XU|0fkcJCfY5ysg2!+QntfRtKR;3DV`KEEiwvx+dkNY4L21;jtaO zu?P2-t4!)QWZ1wv$zzgSa{8nR_jXus?)@_BTYj_jod<0D8S5*!3_h=@u{QwP$>8bg K=d#Wzp$P!gcyqV(DCY@~pSGCf@!Lo9mVUNGchQ50~w_{z<| z=+i%UlUFMOcA3reHItYiY4%C}0qcF0%(bl@44xi`{L99; zcVzdLSGd?5V^A;_6fBt3zcF9s;qLSACb87}?zVcs$X{{be}nvaVZ+XjhZ6iiOBp;} L{an^LB{Ts5OsGm% literal 0 HcmV?d00001 diff --git a/gui_theme/light/tab-hover.png b/gui_theme/light/tab-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..500380649a9e64ee6ac01cd8e903f786437c6b0c GIT binary patch literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F_2CHVaAGyU%i10$r9Iy zlHmNblJdl&REF~Ma=pyF?Be9af>gcyqV(DCY@~pSrg*wIhFJ8zJ+qLv)j-7IA~)N` zU2TE_HlCL>BU&pb+-=h2ka85)U~68m>i%P?N$acFEJD3B=RQBVNvGm{r{Sc@2dM5f$n4QboFyt=akR{ E0CWpq`Tzg` literal 0 HcmV?d00001 diff --git a/gui_theme/light/tick-hor-accent.png b/gui_theme/light/tick-hor-accent.png new file mode 100644 index 0000000000000000000000000000000000000000..f045974d22c406ca2b6c65bd7b62f618b4a49889 GIT binary patch literal 2940 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 literal 0 HcmV?d00001 diff --git a/gui_theme/light/tick-vert-basic.png b/gui_theme/light/tick-vert-basic.png new file mode 100644 index 0000000000000000000000000000000000000000..a58440d271a460cd9d5d740e9711fde093280797 GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^B0$W+!3HFM&b|K@NO2Z;L>4nJ@ErzW#^d=bQh9gP2NC6d*sA`k0D z{v-*Zm5hN0zQ*(Nu3%!FkWrA7?w6OqU2$>Q-tTeQ2hTis*TJ!;v*W;-fY2@1COn%{ z-SbiE7rXuW=A5+S5)3XZXLxSj?cW&xuCK=T_q3TmrPP#8tm0C#I_9PMVz2Vu8*VNa ds@>O$%JVB*e|}lcG#Tgw22WQ%mvv4FO#qdRR<-~D literal 0 HcmV?d00001 diff --git a/gui_theme/light/tick-vert-hover.png b/gui_theme/light/tick-vert-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..18cbec55f6d541559da489b18782d9eb74023171 GIT binary patch literal 266 zcmeAS@N?(olHy`uVBq!ia0vp^B0$W+!3HFM&b|K@NO2Z;L>4nJ@ErzW#^d=bQh9gP2NC6d1_jGX#(U`dQ(nj7E1qO$U z{NWNgYwk2;JXTQ2IV57NX>!qo))SNhEjvt)7 zYL!!VuVLG^TtUsHHhs#!_t`hq1$#Z5^Vpc@u=%lw7REWxPj1USA>d?KW`5rIlPRx& zlfu?(>l{EbZF3Yu(0cO7C*_eAhYs>AG3%{p7VvGo|$IU9om8N;skgbRvVN LtDnm{r-UW|EgWaU literal 0 HcmV?d00001 diff --git a/gui_theme/light/tree-basic.png b/gui_theme/light/tree-basic.png new file mode 100644 index 0000000000000000000000000000000000000000..755062b10eafc9d5daff1daa4ff664795df7be2d GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F_2CHVaAGyU%i10$r9Iy zlHmNblJdl&REF~Ma=pyF?Be9af>gcyqV(DCY@~pSlssJ=Lo9leYreg?S4boFyt=akR{07Qu@CIA2c literal 0 HcmV?d00001 diff --git a/gui_theme/light/tree-pressed.png b/gui_theme/light/tree-pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..ee284160ac1ba69c75c3f4b73cdc9f02bf02a1eb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F_2CHVaAGyU%i10$r9Iy zlHmNblJdl&REF~Ma=pyF?Be9af>gcyqV(DCY@~pS%sgEjLo9mVUNID8FyJ}tuvPrn zF~KuuCoE;KiDIa`GVzN+7{er;i1K3HOW_9^7@67baDCgdjxBZ(yY>u!?>L|d44$rj JF6*2Ung9?fGBN-F literal 0 HcmV?d00001 diff --git a/gui_theme/light/up-accent.png b/gui_theme/light/up-accent.png new file mode 100644 index 0000000000000000000000000000000000000000..e906573bda9305cb8e9298611dc78bfa2193fa54 GIT binary patch literal 2904 zcmV-e3#asnP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0001kNkloxemF5voQQ+wa93ol#PWB?&7}( zcVM-gQ+T(p@5!3Op1Qm&T6k7-oI-rpU*ik4am5WsJo2*W{J^{{y13(zLR_Q}*VtCL z583Fo8Q_9t3i0HtyeuYIVcNhR^M3>>#4~2teFgx0#3PlgjwSv800001h`=VjcqrzIbh88o_*+%~ZmtXZ|{)vkAv$3GrF^DR)swD$h~ z8P9*-xhq|MzfC}Izh>k#UDdZ|a#YLhC*JuppFyFefOUgfpPPiaF#P*7-ZbZ>KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0000nNklba4#Pn3(+M|NsB>Y;0_8 xo72x5B`_a5c8muEd?HdeHUzdV=4#*W#E@ISuJUUaH_##m22WQ%mvv4FO#lw1Ff9N8 literal 0 HcmV?d00001 diff --git a/gui_theme/light/vert-hover.png b/gui_theme/light/vert-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..bfdc9d02278550b9e8542460a0453cc3e6bc09ea GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^Ahrkx8<5=cZcP}F;wW40e_3CGI>xT@0SCelF{r5}E*GcPy^} literal 0 HcmV?d00001 diff --git a/gui_theme/modern_theme.tcl b/gui_theme/modern_theme.tcl new file mode 100644 index 0000000..2ac9eda --- /dev/null +++ b/gui_theme/modern_theme.tcl @@ -0,0 +1,41 @@ +source gui_theme/light.tcl + +option add *tearOff 0 + +ttk::style theme use "modern-light" + +array set colors { + -fg "#000000" + -bg "#ffffff" + -disabledfg "#737373" + -disabledbg "#ffffff" + -selectfg "#ffffff" + -selectbg "#737373" +} + +ttk::style configure . \ + -background $colors(-bg) \ + -foreground $colors(-fg) \ + -troughcolor $colors(-bg) \ + -focuscolor $colors(-selectbg) \ + -selectbackground $colors(-selectbg) \ + -selectforeground $colors(-selectfg) \ + -insertcolor $colors(-fg) \ + -insertwidth 1 \ + -fieldbackground $colors(-selectbg) \ + -font {"Segoe Ui" 10} \ + -borderwidth 1 \ + -relief flat + +tk_setPalette background [ttk::style lookup . -background] \ + foreground [ttk::style lookup . -foreground] \ + highlightColor [ttk::style lookup . -focuscolor] \ + selectBackground [ttk::style lookup . -selectbackground] \ + selectForeground [ttk::style lookup . -selectforeground] \ + activeBackground [ttk::style lookup . -selectbackground] \ + activeForeground [ttk::style lookup . -selectforeground] + +ttk::style map . -foreground [list disabled $colors(-disabledfg)] + +option add *font [ttk::style lookup . -font] +option add *Menu.selectcolor $colors(-fg) \ No newline at end of file