diff --git a/azure.tcl b/azure.tcl new file mode 100644 index 0000000..3e75502 --- /dev/null +++ b/azure.tcl @@ -0,0 +1,87 @@ +# Copyright © 2021 rdbende + +source [file join [file dirname [info script]] theme light.tcl] +source [file join [file dirname [info script]] theme dark.tcl] + +option add *tearOff 0 + +proc set_theme {mode} { + if {$mode == "dark"} { + ttk::style theme use "azure-dark" + + array set colors { + -fg "#ffffff" + -bg "#333333" + -disabledfg "#ffffff" + -disabledbg "#737373" + -selectfg "#ffffff" + -selectbg "#007fff" + } + + 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) + + } elseif {$mode == "light"} { + ttk::style theme use "azure-light" + + array set colors { + -fg "#000000" + -bg "#ffffff" + -disabledfg "#737373" + -disabledbg "#ffffff" + -selectfg "#ffffff" + -selectbg "#007fff" + } + + 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) + } +} diff --git a/azure_png.tcl b/azure_png.tcl new file mode 100644 index 0000000..3e75502 --- /dev/null +++ b/azure_png.tcl @@ -0,0 +1,87 @@ +# Copyright © 2021 rdbende + +source [file join [file dirname [info script]] theme light.tcl] +source [file join [file dirname [info script]] theme dark.tcl] + +option add *tearOff 0 + +proc set_theme {mode} { + if {$mode == "dark"} { + ttk::style theme use "azure-dark" + + array set colors { + -fg "#ffffff" + -bg "#333333" + -disabledfg "#ffffff" + -disabledbg "#737373" + -selectfg "#ffffff" + -selectbg "#007fff" + } + + 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) + + } elseif {$mode == "light"} { + ttk::style theme use "azure-light" + + array set colors { + -fg "#000000" + -bg "#ffffff" + -disabledfg "#737373" + -disabledbg "#ffffff" + -selectfg "#ffffff" + -selectbg "#007fff" + } + + 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) + } +} diff --git a/build.py b/build.py index 78317c4..9a8c2e7 100644 --- a/build.py +++ b/build.py @@ -7,7 +7,7 @@ program_name = "oiw" main = "main.py" -version = "1_7 WIN32" +version = "1_7 WIN32 build2" icon = "assets/icon_centered.ico" folders = ["assets", "ttkbootstrap", "sv_ttk"] diff --git a/main.py b/main.py index ab2d445..d696c15 100644 --- a/main.py +++ b/main.py @@ -556,7 +556,23 @@ def dark_title_bar(window, dark): #Returns to original size root.geometry(str(root.winfo_width()-1) + "x" + str(root.winfo_height()-1)) +def style_dpi(root): + style = ttk.Style(root) + button_font_point = 9#int(ui.inch2pix(0.1) * (12 / 16)) + style.configure('TButton', font=("", button_font_point)) + + radiobutton_font_point = 9#int(ui.inch2pix(0.099) * (12 / 16)) + + style.configure('TRadiobutton', font=("", radiobutton_font_point)) + + label_font_point = 9#int(ui.inch2pix(0.099) * (12 / 16)) + style.configure('TLabel', font=("", label_font_point)) + + checkbutton_font_point = 9#int(ui.inch2pix(0.099) * (12 / 16)) + style.configure('TCheckbutton', font=("", checkbutton_font_point)) + +#from ttkthemes import ThemedStyle def home(): #ui.set_icons(asset_dir + "Paper/") #k = get_light() @@ -585,7 +601,8 @@ def home(): #get tkinter hwnd hwnd = boxRoot.winfo_id() - + + if sett["theme"] == "dark": sv_ttk.set_theme("dark") mode = win32mica.MICAMODE.DARK @@ -593,7 +610,16 @@ def home(): sv_ttk.set_theme("light") mode = win32mica.MICAMODE.LIGHT - + # Make style detect DPI + style_dpi(root) + + + #style = ThemedStyle(root) + #style.set_theme("yaru") + #boxRoot.configure(bg=style.lookup("TButton", "background")) + + #root.tk.call("source", "azure.tcl") + #root.tk.call("set_theme", "dark") #label = tk.Label(boxRoot, bg='#000000') #boxRoot.lift() @@ -608,7 +634,6 @@ def home(): ApplyMica(HWND, ColorMode=mode) - #style = Style(theme='superhero')#darkly') #boxRoot.style = Style(theme='superhero')#darkly') @@ -643,18 +668,20 @@ def quitter(): explain = tk.Label(frame_01, text=f"Make Linux Apps Windows File Handlers ({version})", justify=LEFT)#, font="SunValleySubtitleFont") explain.configure(font=("Segoe UI Semibold",10)) explain.grid(row=1, pady=0, sticky="wS") - frame_01.grid(row=0, column=1, padx=5, pady=(25, 20), sticky="NW", rowspan=1) # , columnspan=3) + frame_01.grid(row=0, column=1, padx=0, pady=("0.23i", "0.2i"), sticky="NW", rowspan=1) # , columnspan=3) imager = Image.open(asset_dir + "oiw6.png") # imager = imager.resize([48, 48]) - img = PIL.ImageTk.PhotoImage(imager.resize([60, 60]))#[75, 75])) + im_size = ui.inch2pix(0.5) + + img = PIL.ImageTk.PhotoImage(imager.resize([im_size, im_size]))#[75, 75])) labelm = tk.Label(frame_0, image=img) labelm.image = img - labelm.grid(row=0, column=0, padx=20, pady=(15, 0)) + labelm.grid(row=0, column=0, padx="0.2i", pady=("0.15i", 0)) frame_0.columnconfigure(1, weight=1) - frame_0.grid(row=0, column=0, padx=10, pady=0, sticky="NEW", rowspan=1) # , columnspan=3) + frame_0.grid(row=0, column=0, padx="0.1i", pady=0, sticky="NEW", rowspan=1) # , columnspan=3) opt_label = ttk.Label(boxRoot, text=" Open In WSL Configuration ", font=("SunValleyBodyLargeFont", 9)) @@ -674,16 +701,16 @@ def set_back(): sett["backend"] = backend.get() iset.set(sett) x_lab = ttk.Label(gui_frame, text="Graphical Backend: ") - x_lab.grid(column=0, row=0, pady=10, sticky="w") + x_lab.grid(column=0, row=0, pady="0.1i", sticky="w") gwsl_radio = ttk.Radiobutton(gui_frame, text="GWSL", value='gwsl', variable=backend, command=set_back)#, style=style) - gwsl_radio.grid(row=0, column=1, sticky="w", ipadx=5) + gwsl_radio.grid(row=0, column=1, sticky="w", ipadx="0.05i") wslg_radio = ttk.Radiobutton(gui_frame, text="wslg", value='wslg', variable=backend, command=set_back) - wslg_radio.grid(row=0, column=2, sticky="w", ipadx=5) + wslg_radio.grid(row=0, column=2, sticky="w", ipadx="0.05i") xserver_radio = ttk.Radiobutton(gui_frame, text="Other XServer", value='x', variable=backend, command=set_back) - xserver_radio.grid(row=0, column=3, sticky="w", ipadx=5) + xserver_radio.grid(row=0, column=3, sticky="w", ipadx="0.05i") gui_frame.grid(row=1, sticky="w", padx=0) @@ -703,13 +730,13 @@ def set_acrylic(): iset.set(sett) x_lab = ttk.Label(acrylic_frame, text="Popup Transparency: ") - x_lab.grid(column=0, row=0, pady=10, sticky="w") + x_lab.grid(column=0, row=0, pady="0.1i", sticky="w") gwsl_radio = ttk.Radiobutton(acrylic_frame, text="On", value=1, variable=acrylic, command=set_acrylic) - gwsl_radio.grid(row=0, column=1, sticky="w", ipadx=5) + gwsl_radio.grid(row=0, column=1, sticky="w", ipadx="0.05i") wslg_radio = ttk.Radiobutton(acrylic_frame, text="Off", value=0, variable=acrylic, command=set_acrylic) - wslg_radio.grid(row=0, column=2, sticky="w", ipadx=5) + wslg_radio.grid(row=0, column=2, sticky="w", ipadx="0.05i") acrylic_frame.grid(row=2, sticky="w", padx=0) @@ -746,18 +773,20 @@ def set_theme(): #ApplyMica(HWND, ColorMode=mode) win32mica.Disable(HWND) + style_dpi(root) + x_lab = ttk.Label(dark_frame, text="App Theme: ") - x_lab.grid(column=0, row=0, pady=10, sticky="w") + x_lab.grid(column=0, row=0, pady="0.1i", sticky="w") dark_radio = ttk.Radiobutton(dark_frame, text="Dark", value='dark', variable=darkmode, command=set_theme) - dark_radio.grid(row=0, column=1, sticky="w", ipadx=5) + dark_radio.grid(row=0, column=1, sticky="w", ipadx="0.05i") light_radio = ttk.Radiobutton(dark_frame, text="Light", value='light', variable=darkmode, command=set_theme) - light_radio.grid(row=0, column=2, sticky="w", ipadx=5) + light_radio.grid(row=0, column=2, sticky="w", ipadx="0.05i") #auto_radio = ttk.Radiobutton(dark_frame, text="Auto", value='auto', variable=darkmode, command=set_theme) #auto_radio.grid(row=0, column=3, sticky="w", ipadx=5) @@ -771,7 +800,7 @@ def manage(): frame_buttons = ttk.Frame(boxRoot) #style="Card.TFrame" manage_button = ttk.Button(frame_buttons, text="Manage File Associations", style="secondary.TButton", command=manage) - manage_button.grid(row=0, column=0, padx=0, ipadx=5, sticky="w") + manage_button.grid(row=0, column=0, padx=0, ipadx="0.05i", sticky="w", pady=0) ######## frame_22 = ttk.Frame(frame_buttons) @@ -791,7 +820,7 @@ def optic_web(): webbrowser.open("https://sites.google.com/bartimee.com/opticos-studios/home") #manage_button = ttk.Button(frame_22, text="Opticos Website", style="primary.Link.TButton", command=optic_web) - manage_button.grid(row=0, padx=0, ipadx=20, sticky="E", column=2) + manage_button.grid(row=0, padx=0, ipadx="0.2i", sticky="E", column=2) def logs(): old_pat = os.getcwd() @@ -814,7 +843,7 @@ def license(): frame_22.columnconfigure(1, weight=1) frame_22.columnconfigure(2, weight=1) - frame_22.grid(row=1, sticky="SEW", columnspan=1, pady=(10, 6))#, padx="0.14i") + #frame_22.grid(row=1, sticky="SEW", columnspan=1, pady=("0.1i", "0.05i"))#, padx="0.14i") frame_1.columnconfigure(0, weight=1) def context(): @@ -851,7 +880,7 @@ def context(): #contexter.set(1) cont_button = ttk.Checkbutton(frame_1, text='Show "Open In WSL" in Explorer Context Menu', command=context, variable=contexter) - cont_button.grid(row=4, padx=0, pady=10, ipadx=5, sticky="w") + cont_button.grid(row=4, padx=0, pady="0.1i", ipadx="0.05i", sticky="w") # Donation disabling system (11/30/22) @@ -869,7 +898,8 @@ def hide_donate(): sett = iset.read() sett["hide_donation_reminder"] = False iset.set(sett) - donate.grid(row=3, padx="0.2i", ipadx=5, sticky="wE", pady="0.1i") + donate.grid(row=3, padx="0.2i", ipadx="0.05i", sticky="wES", pady="0.1i", ipady="0.05i") + donater = tk.IntVar() @@ -885,7 +915,7 @@ def hide_donate(): ad_button = ttk.Checkbutton(frame_1, text='Disable Donation Reminders', command=hide_donate, variable=donater) - ad_button.grid(row=5, padx=0, pady=10, ipadx=5, sticky="wNS") + ad_button.grid(row=5, padx=0, pady="0.1i", ipadx="0.05i", sticky="wNS") """ autolaunch = tk.IntVar() @@ -918,7 +948,7 @@ def donate(): donate = ttk.Button(boxRoot, text="Please Consider Donating 💖", style="Accent.TButton", command=donate) # old for bootstrapstyle="success.TButton" if show_donate: - donate.grid(row=3, padx="0.2i", ipadx=5, sticky="wE", pady="0.1i") + donate.grid(row=3, padx="0.2i", ipadx="0.05i", sticky="wES", pady="0.1i", ipady="0.05i") #frame_2.columnconfigure(1, weight=1) #frame_2.grid(row=2, column=0, padx=20, pady=20, sticky="NWE")#, columnspan=4) @@ -926,24 +956,24 @@ def donate(): frame_3 = ttk.Frame(boxRoot)#, borderwidth=3, relief="ridge") cancel = ttk.Button(frame_3, text="Website", style="secondary.TButton", command=optic_web) - cancel.grid(row=0, column=0, sticky="we", padx=(0,5), ipadx=5, pady=("0.1i", 0)) + cancel.grid(row=0, column=0, sticky="we", padx=(0,"0.05i"), ipadx="0.05i", pady=("0.1i", 0)) manage_button = ttk.Button(frame_3, text="Configure", style="primary.Outline.TButton", command=config) - manage_button.grid(row=0, padx=5, ipadx=5, sticky="we", column=1, pady=("0.1i", 0)) + manage_button.grid(row=0, padx="0.05i", ipadx="0.05i", sticky="we", column=1, pady=("0.1i", 0)) manage_button = ttk.Button(frame_3, text="License", style="primary.Outline.TButton", command=license) - manage_button.grid(row=0, padx=5, ipadx=0, sticky="we", column=2, pady=("0.1i", 0)) + manage_button.grid(row=0, padx="0.05i", ipadx=0, sticky="we", column=2, pady=("0.1i", 0)) manage_button = ttk.Button(frame_3, text="Logs", style="primary.Outline.TButton", command=logs) - manage_button.grid(row=0, padx=5, ipadx=0, sticky="We", column=3, pady=("0.1i", 0)) + manage_button.grid(row=0, padx="0.05i", ipadx=0, sticky="We", column=3, pady=("0.1i", 0)) def helper(): open_help("home") help = ttk.Button(frame_3, text="Help", command=helper) - help.grid(row=0, column=4, sticky="wE", padx=(5, 0), ipadx=5, pady=("0.1i", 0)) + help.grid(row=0, column=4, sticky="wE", padx=("0.05i", 0), ipadx="0.05i", pady=("0.1i", 0)) @@ -960,7 +990,7 @@ def helper(): frame_3.rowconfigure(2, weight=3) - frame_3.grid(row=4, column=0, padx="0.2i", sticky="WESN", ipady="0.1i", pady=(0, "0.2i")) + frame_3.grid(row=4, column=0, padx="0.2i", sticky="WENS", ipady="0.1i", pady=(0, 0)) #HWN = root.winfo_id() #titlebar.ChangeMenuBarColor(HWN) #boxRoot.overrideredirect(True) @@ -970,17 +1000,17 @@ def helper(): #boxRoot.bind("", login) - boxRoot.rowconfigure(1, weight=1) + boxRoot.rowconfigure(1, weight=0) boxRoot.columnconfigure(0, weight=1) - boxRoot.rowconfigure(2, weight=1) + boxRoot.rowconfigure(2, weight=0) - boxRoot.rowconfigure(3, weight=0) + boxRoot.rowconfigure(3, weight=1) - boxRoot.rowconfigure(4, weight=1) + boxRoot.rowconfigure(4, weight=0) @@ -1003,6 +1033,7 @@ def helper(): if rw > WIDTH or rh > HEIGHT: boxRoot.minsize(rw, rh) + boxRoot.geometry('+%d+%d' % (screensize[0] / 2 - rw / 2, screensize[1] / 2 - rh / 2 - ui.inch2pix(0.5))) boxRoot.deiconify() @@ -1099,18 +1130,20 @@ def quitter(): imager = Image.open(asset_dir + "linkedit.png") # imager = imager.resize([48, 48]) - img = PIL.ImageTk.PhotoImage(imager.resize([50, 50])) + img_size = ui.inch2pix(0.43) + + img = PIL.ImageTk.PhotoImage(imager.resize([img_size, img_size])) labelm = tk.Label(frame_0, image=img) labelm.image = img - labelm.grid(row=0, column=0, padx=10, pady=10) + labelm.grid(row=0, column=0, padx="0.1i", pady="0.1i") frame_0.columnconfigure(1, weight=1) - frame_0.grid(row=0, column=0, padx=10, pady=0, sticky="NEW", rowspan=1) # , columnspan=3) + frame_0.grid(row=0, column=0, padx="0.1i", pady=0, sticky="NEW", rowspan=1) # , columnspan=3) frame_1 = ttk.Frame(boxRoot) # , padding="0.15i") selector_label = ttk.Label(frame_1, text="WSL Distro:") - selector_label.grid(row=0, column=0, padx=10, pady=0, sticky="W", rowspan=1) + selector_label.grid(row=0, column=0, padx="0.1i", pady=0, sticky="W", rowspan=1) machines = os.popen("wsl.exe -l -q").read() machines = re.sub(r'[^a-zA-Z0-9_./\n-]', r'', machines).splitlines() @@ -1132,7 +1165,7 @@ def quitter(): quitter() return None - machine_chooser.grid(row=0, column=1, padx=0, pady=20, sticky="WE", rowspan=1, columnspan=2) + machine_chooser.grid(row=0, column=1, padx=0, pady="0.2i", sticky="WE", rowspan=1, columnspan=2) if pre_machine != None: try: @@ -1143,7 +1176,7 @@ def quitter(): cmd_label = ttk.Label(frame_1, text="Command: ") - cmd_label.grid(row=1, column=0, padx=10, pady=0, sticky="WE", rowspan=1) + cmd_label.grid(row=1, column=0, padx="0.1i", pady=0, sticky="WE", rowspan=1) cmd = ttk.Entry(frame_1, width=20) cmd.focus_force() @@ -1191,19 +1224,19 @@ def saver(): except: logger.exception("cannot save edited assoc") chooser = ttk.Button(frame_1, text="App List", style="secondary.TButton", command=app_choose) - chooser.grid(row=1, column=2, padx=(15, 0), pady=0, sticky="ENS", rowspan=1, columnspan=1) + chooser.grid(row=1, column=2, padx=("0.15i", 0), pady=0, sticky="ENS", rowspan=1, columnspan=1) frame_1.rowconfigure(1, weight=2) boxRoot.update() leng = chooser.winfo_width() + cmd.winfo_width() cmd_label = ttk.Label(frame_1, text="* If using custom arguments, use the #fpth# variable in place of the file path.", wraplength="3i") #" * Variable #fpth# replaced with filename being opened." - cmd_label.grid(row=2, column=1, padx=10, pady=10, sticky="WE", columnspan=2) + cmd_label.grid(row=2, column=1, padx="0.1i", pady="0.1i", sticky="WE", columnspan=2) cmd_label = ttk.Label(frame_1, text="Example: gedit --new-window #fpth#") # " * Variable #fpth# replaced with filename being opened." cmd_label.configure(font=("Segoe UI Light", 10)) - cmd_label.grid(row=3, column=1, padx=10, pady=0, sticky="WN", columnspan=2) + cmd_label.grid(row=3, column=1, padx="0.1i", pady=0, sticky="WN", columnspan=2) def manpage(): nonlocal cmd try: @@ -1213,10 +1246,10 @@ def manpage(): except: logger.exception("cannot launch manpage func") man = ttk.Button(frame_1, text="See Command Manpage", command=manpage, style="info.TButton") - man.grid(row=4, column=1, padx=0, ipadx=5, sticky="E", rowspan=1, columnspan=2, pady=("0.2i", 0)) + man.grid(row=4, column=1, padx=0, ipadx="0.05i", sticky="E", rowspan=1, columnspan=2, pady=("0.2i", 0)) frame_1.columnconfigure(1, weight=1) - frame_1.grid(row=1, column=0, padx=20, pady=10, sticky="NEW") # , columnspan=3) + frame_1.grid(row=1, column=0, padx="0.2i", pady="0.1i", sticky="NEW") # , columnspan=3) #frame_2.columnconfigure(1, weight=1) #frame_2.grid(row=2, column=0, padx=20, pady=20, sticky="NWE")#, columnspan=4) @@ -1224,12 +1257,12 @@ def manpage(): frame_3 = ttk.Frame(boxRoot)#, borderwidth=3, relief="ridge") cancel = ttk.Button(frame_3, text="Cancel", style="warning.TButton", command=quitter) - cancel.grid(row=0, column=0, sticky="WE", padx=5, ipadx=5) + cancel.grid(row=0, column=0, sticky="WE", padx="0.05i", ipadx="0.05i") def helper(): open_help("create") help = ttk.Button(frame_3, text="Help", command=helper) - help.grid(row=0, column=1, sticky="WE", padx=5, ipadx=5) + help.grid(row=0, column=1, sticky="WE", padx="0.05i", ipadx="0.05i") column = 2 def tester(): @@ -1273,18 +1306,18 @@ def tester(): test = ttk.Button(frame_3, text="Test Configuration", style="secondary.TButton", command=tester) if test_file != False: - test.grid(row=0, column=2, sticky="WE", padx=(0,5), ipadx=5) + test.grid(row=0, column=2, sticky="WE", padx=(0,"0.05i"), ipadx="0.05i") column += 1 frame_3.columnconfigure(3, weight=1) apply = ttk.Button(frame_3, text="Save Configuration", style="success.TButton", command=saver) - apply.grid(row=0, column=column, sticky="WE", padx=(5,0), ipadx=5) + apply.grid(row=0, column=column, sticky="WE", padx=("0.05i",0), ipadx="0.05i") frame_3.columnconfigure(0, weight=1) frame_3.columnconfigure(1, weight=1) frame_3.columnconfigure(2, weight=1) frame_3.rowconfigure(0, weight=1) - frame_3.grid(row=3, column=0, padx=20, pady=20, sticky="SWEN") + frame_3.grid(row=3, column=0, padx="0.2i", pady="0.2i", sticky="SWEN") #HWN = root.winfo_id() #titlebar.ChangeMenuBarColor(HWN) #boxRoot.overrideredirect(True) @@ -1436,17 +1469,18 @@ def select_app(name): # First the label frame_0 = ttk.Frame(boxRoot) explain = tk.Label(frame_0, text=f"Apps installed on {machine}.\nSelect an app to continue.", justify=LEFT) - explain.grid(row=0, column=1, padx=10, pady=20, sticky="NW", rowspan=1)#, columnspan=3) + explain.grid(row=0, column=1, padx="0.1i", pady="0.2i", sticky="NW", rowspan=1)#, columnspan=3) imager = Image.open(asset_dir + "applist2.png") # imager = imager.resize([48, 48]) - img = PIL.ImageTk.PhotoImage(imager.resize([50, 50])) + img_size = ui.inch2pix(0.43) + img = PIL.ImageTk.PhotoImage(imager.resize([img_size, img_size])) labelm = tk.Label(frame_0, image=img) labelm.image = img - labelm.grid(row=0, column=0, padx=10, pady=10) + labelm.grid(row=0, column=0, padx="0.1i", pady="0.1i") frame_0.columnconfigure(1, weight=1) - frame_0.grid(row=0, column=0, padx=10, pady=0, sticky="NEW", rowspan=1)#, columnspan=3) + frame_0.grid(row=0, column=0, padx="0.1i", pady=0, sticky="NEW", rowspan=1)#, columnspan=3) frame_1 = ttk.Frame(boxRoot)#, borderwidth=2, relief="solid")#, pflatadding="0.15i") @@ -1463,7 +1497,7 @@ def select_app(name): def onFrameConfigure(canvas): '''Reset the scroll region to encompass the inner frame''' canvas.configure(scrollregion=canvas.bbox("all")) - #list_frame.configure(width=canvas.winfo_width()) + list_frame.bind("", lambda event, canvas=list_canvas: onFrameConfigure(list_canvas)) list_frame.configure() list_frame.columnconfigure(0, weight=1) @@ -1484,7 +1518,7 @@ def FrameWidth(event): list_canvas.create_window((4, 4), window=list_frame, anchor="center") - scroller.grid(column=1, row=0, sticky="NES", padx=5, pady=5) + scroller.grid(column=1, row=0, sticky="NES", padx="0.05i", pady="0.05i") frame_1.columnconfigure(0, weight=1) frame_1.rowconfigure(0, weight=1) @@ -1503,7 +1537,7 @@ def on_mousewheel(event): - frame_1.grid(row=1, column=0, padx=20, sticky="NEWS")#, columnspan=3) + frame_1.grid(row=1, column=0, padx="0.2i", sticky="NEWS")#, columnspan=3) #frame_1.grid_columnconfigure(2, weight=1) @@ -1511,12 +1545,12 @@ def on_mousewheel(event): frame_3 = ttk.Frame(boxRoot)#, borderwidth=3, relief="ridge") cancel = ttk.Button(frame_3, text="Cancel", style="warning.TButton", command=quitter) - cancel.grid(row=0, column=0, sticky="W", padx=5) + cancel.grid(row=0, column=0, sticky="W", padx="0.05i") def helper(): open_help("applist") help = ttk.Button(frame_3, text="Help", command=helper) - help.grid(row=0, column=1, sticky="E", padx=5) + help.grid(row=0, column=1, sticky="E", padx="0.05i") #test = ttk.Button(frame_3, text="Test Configuration", style="secondary.TButton") #test.grid(row=0, column=2, sticky="EW", padx=5) @@ -1525,7 +1559,7 @@ def helper(): #apply.grid(row=0, column=3, sticky="E", padx=5) frame_3.columnconfigure(2, weight=1) - frame_3.grid(row=2, column=0, padx=20, pady=20, sticky="SWE") + frame_3.grid(row=2, column=0, padx="0.2i", pady="0.2i", sticky="SWE") #HWN = root.winfo_id() #titlebar.ChangeMenuBarColor(HWN) #boxRoot.overrideredirect(True) @@ -1540,6 +1574,11 @@ def helper(): #boxRoot.wm_attributes("-topmost", 1) done = False + #ico_size = round(ui.inch2pix(0.5) / 48) * 48 + + ico_size = round(ui.inch2pix(0.5) / 24) * 24 + + old = sv_ttk.get_theme() while True: if sv_ttk.get_theme() == "light" and old == "dark": @@ -1556,26 +1595,28 @@ def helper(): # draw(canvas, mouse=False) #time.sleep(0.05) boxRoot.update() + + if loading == False and done == False: load_msg.destroy() for app_num in range(len(app_list)): app = app_list[app_num] app_frame = ttk.Frame(list_frame) imag = Image.open(app_dict[app]["icon"]) - img = PIL.ImageTk.PhotoImage(imag.resize([48, 48])) + img = PIL.ImageTk.PhotoImage(imag.resize([ico_size, ico_size])) icon_label = tk.Label(app_frame, image=img) icon_label.image = img - icon_label.grid(row=0, column=0, sticky="WNE", padx=10, pady=10) + icon_label.grid(row=0, column=0, sticky="WNE", padx="0.1i", pady="0.1i") app_name = ttk.Label(app_frame, text=app[0].upper() + app[1:]) - app_name.grid(row=0, column=1, padx=5, pady=10, sticky="we") + app_name.grid(row=0, column=1, padx="0.05i", pady="0.1i", sticky="we") app_button = ttk.Button(app_frame, text="Select", style="success.TButton", command=lambda j=app: select_app(j)) - app_button.grid(row=0, column=2, padx=10, pady=10, sticky="E") + app_button.grid(row=0, column=2, padx="0.1i", pady="0.1i", sticky="E") app_frame.columnconfigure(1, weight=1) - app_frame.grid(row=app_num, sticky="NWE") + app_frame.grid(row=app_num, sticky="NWE", ipady="0.05i") done = True boxRoot.update() @@ -1723,17 +1764,19 @@ def add_app(): # First the label frame_0 = ttk.Frame(boxRoot) explain = tk.Label(frame_0, text=f"Open In WSL Associations.\nCreate, Edit, and Delete Associations.", justify=LEFT) - explain.grid(row=0, column=1, padx=10, pady=20, sticky="NW", rowspan=1)#, columnspan=3) + explain.grid(row=0, column=1, padx="0.1i", pady="0.2i", sticky="NW", rowspan=1)#, columnspan=3) imager = Image.open(asset_dir + "manageassoc.png") # imager = imager.resize([48, 48]) - img = PIL.ImageTk.PhotoImage(imager.resize([50, 50])) + img_size = ui.inch2pix(0.43) + + img = PIL.ImageTk.PhotoImage(imager.resize([img_size, img_size])) labelm = tk.Label(frame_0, image=img) labelm.image = img - labelm.grid(row=0, column=0, padx=10, pady=10) + labelm.grid(row=0, column=0, padx="0.1i", pady="0.1i") frame_0.columnconfigure(1, weight=1) - frame_0.grid(row=0, column=0, padx=10, pady=0, sticky="NEW", rowspan=1)#, columnspan=3) + frame_0.grid(row=0, column=0, padx="0.1i", pady=0, sticky="NEW", rowspan=1)#, columnspan=3) frame_1 = ttk.Frame(boxRoot)#, borderwidth=2, relief="solid")#, pflatadding="0.15i") @@ -1771,7 +1814,7 @@ def FrameWidth(event): list_canvas.create_window((4, 4), window=list_frame, anchor="center") - scroller.grid(column=1, row=0, sticky="NES", padx=5, pady=5) + scroller.grid(column=1, row=0, sticky="NES", padx="0.05i", pady="0.05i") frame_1.columnconfigure(0, weight=1) frame_1.rowconfigure(0, weight=1) @@ -1798,21 +1841,21 @@ def on_mousewheel(event): frame_3 = ttk.Frame(boxRoot)#, borderwidth=3, relief="ridge") cancel = ttk.Button(frame_3, text="Close", style="secondary.TButton", command=quitter) - cancel.grid(row=0, column=0, sticky="W", padx=5) + cancel.grid(row=0, column=0, sticky="W", padx="0.05i") def helper(): open_help("manage") help = ttk.Button(frame_3, text="Help", command=helper) - help.grid(row=0, column=1, sticky="E", padx=5) + help.grid(row=0, column=1, sticky="E", padx="0.05i") test = ttk.Button(frame_3, text="Add Association", style="success.TButton", command=add_app) - test.grid(row=0, column=3, sticky="E", padx=5, ipadx=5) + test.grid(row=0, column=3, sticky="E", padx="0.05i", ipadx="0.05i") #apply = ttk.Button(frame_3, text="Save Configuration", style="success.TButton") #apply.grid(row=0, column=3, sticky="E", padx=5) frame_3.columnconfigure(2, weight=1) - frame_3.grid(row=2, column=0, padx=20, pady=20, sticky="SWE") + frame_3.grid(row=2, column=0, padx="0.2i", pady="0.2i", sticky="SWE") #HWN = root.winfo_id() #titlebar.ChangeMenuBarColor(HWN) #boxRoot.overrideredirect(True) @@ -1860,20 +1903,20 @@ def helper(): icon_label = tk.Label(app_frame, text=app, width=5) icon_label.configure(font=font) - icon_label.grid(row=0, column=0, sticky="WNE", padx=10, pady=10, ipadx=0, ipady=10) + icon_label.grid(row=0, column=0, sticky="WNE", padx="0.1i", pady="0.1i", ipadx=0, ipady="0.1i") attrib = associations[app] com = attrib['command'].replace('#fpth#', '"file"') app_name = ttk.Label(app_frame, text=f"Distro: {attrib['distro']}\n\nApp: {com[0].upper() + com[1:]}") - app_name.grid(row=0, column=1, padx=5, pady=10, sticky="weNS") + app_name.grid(row=0, column=1, padx="0.05i", pady="0.1i", sticky="weNS") app_button = ttk.Button(app_frame, text="Edit", style="success.TButton", command=lambda j=app: select_app(j)) - app_button.grid(row=0, column=2, padx=5, pady=10, sticky="E") + app_button.grid(row=0, column=2, padx="0.05i", pady="0.1i", sticky="E") del_button = ttk.Button(app_frame, text="Delete", style="danger.TButton", command=lambda j=app: delete_app(j)) - del_button.grid(row=0, column=3, padx=5, pady=10, sticky="E") + del_button.grid(row=0, column=3, padx="0.05i", pady="0.1i", sticky="E") app_frame.columnconfigure(1, weight=1) separator = ttk.Separator(app_frame, orient=tk.HORIZONTAL) @@ -1881,7 +1924,7 @@ def helper(): if assoc_num != len(assoc_list) - 1: separator.grid(row=1, columnspan=4, sticky="we") - app_frame.grid(row=assoc_num + 1, sticky="NWE", pady=5, ipadx=5) + app_frame.grid(row=assoc_num + 1, sticky="NWE", pady="0.05i", ipadx="0.05i") done = True boxRoot.update() diff --git a/sun-valley.tcl b/sun-valley.tcl deleted file mode 100644 index c753e44..0000000 --- a/sun-valley.tcl +++ /dev/null @@ -1,48 +0,0 @@ -# Copyright © 2021 rdbende - -source theme/dark.tcl - -proc set_theme {mode} { - if {$mode == "dark"} { - ttk::style theme use "sun-valley-dark" - - array set colors { - -fg "#ffffff" - -bg "#1c1c1c" - -disabledfg "#595959" - -selectfg "#ffffff" - -selectbg "#2f60d8" - } - - ttk::style configure . \ - -background $colors(-bg) \ - -foreground $colors(-fg) \ - -troughcolor $colors(-bg) \ - -focuscolor $colors(-selectbg) \ - -selectbackground $colors(-selectbg) \ - -selectforeground $colors(-selectfg) \ - -insertwidth 1 \ - -insertcolor $colors(-fg) \ - -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 *Treeview.show tree - option add *Menu.selectcolor $colors(-fg) - option add *tearOff 0 - - } -} \ No newline at end of file diff --git a/theme/dark.tcl b/theme/dark.tcl new file mode 100644 index 0000000..7644ed5 --- /dev/null +++ b/theme/dark.tcl @@ -0,0 +1,460 @@ +source [file join [file dirname [info script]] sprites_dark.tcl] + +namespace eval ttk::theme::sv_dark { + package provide ttk::theme::sv_dark 2.4 + + array set theme_colors { + -fg "#fafafa" + -bg "#1c1c1c" + -disfg "#595959" + -selfg "#ffffff" + -selbg "#2f60d8" + -accent "#57c8ff" + } + + proc load_images {imgfile} { + variable I + image create photo spritesheet -file $imgfile -format png + foreach {name x y width height} $::spriteinfo { + set I($name) [image create photo -width $width -height $height] + $I($name) copy spritesheet -from $x $y [expr {$x+$width}] [expr {$y+$height}] + } + } + + load_images [file join [file dirname [info script]] spritesheet_dark.png] + + ttk::style theme create sun-valley-dark -parent clam -settings { + + # Button + ttk::style layout TButton { + Button.button -children { + Button.padding -children { + Button.label -side left -expand 1 + } + } + } + + ttk::style configure TButton -padding {8 2 8 3} -anchor center -foreground $theme_colors(-fg) -width 12 + ttk::style map TButton -foreground [list disabled "#7a7a7a" pressed "#d0d0d0"] + + ttk::style element create Button.button image \ + [list $I(button-rest) \ + {selected disabled} $I(button-dis) \ + disabled $I(button-dis) \ + selected $I(button-rest) \ + pressed $I(button-pressed) \ + {active focus} $I(button-focus-hover) \ + active $I(button-hover) \ + focus $I(button-focus) \ + ] -border 4 -sticky nsew + + # Toolbutton + ttk::style layout Toolbutton { + Toolbutton.button -children { + Toolbutton.padding -children { + Toolbutton.label -side left -expand 1 + } + } + } + + ttk::style configure Toolbutton -padding {8 2 8 3} -anchor center -width 12 + + ttk::style element create Toolbutton.button image \ + [list $I(empty) \ + disabled $I(button-dis) \ + pressed $I(button-pressed) \ + {active focus} $I(button-focus-hover) \ + active $I(button-hover) \ + focus $I(button-focus) \ + ] -border 4 -sticky nsew + + # Accent.TButton + ttk::style layout Accent.TButton { + AccentButton.button -children { + AccentButton.padding -children { + AccentButton.label -side left -expand 1 + } + } + } + + ttk::style configure Accent.TButton -padding {8 2 8 3} -anchor center -foreground "#000000" + ttk::style map Accent.TButton -foreground [list pressed "#25536a" disabled "#a5a5a5"] + + ttk::style element create AccentButton.button image \ + [list $I(button-accent-rest) \ + {selected disabled} $I(button-accent-dis) \ + disabled $I(button-accent-dis) \ + {active focus} $I(button-accent-focus-hover) \ + focus $I(button-accent-focus) \ + selected $I(button-accent-rest) \ + pressed $I(button-accent-pressed) \ + active $I(button-accent-hover) \ + ] -border 4 -sticky nsew + + # Menubutton + ttk::style layout TMenubutton { + Menubutton.button -children { + Menubutton.padding -children { + Menubutton.label -side left -expand 1 + Menubutton.indicator -side right -sticky nsew + } + } + } + + ttk::style configure TMenubutton -padding {8 2 13 3} -width 10 + + ttk::style element create Menubutton.button image \ + [list $I(button-rest) \ + disabled $I(button-dis) \ + pressed $I(button-pressed) \ + {active focus} $I(button-focus-hover) \ + active $I(button-hover) \ + focus $I(button-focus) \ + ] -border 4 -sticky nsew + + ttk::style element create Menubutton.indicator image $I(down) -width 10 -sticky e + + # OptionMenu + ttk::style layout TOptionMenu { + OptionMenu.button -children { + OptionMenu.padding -children { + OptionMenu.label -side left -expand 1 + OptionMenu.indicator -side right -sticky nsew + } + } + } + + ttk::style configure TOptionMenu -padding {8 2 13 3} -width 10 + + ttk::style element create OptionMenu.button image \ + [list $I(button-rest) \ + disabled $I(button-dis) \ + pressed $I(button-pressed) \ + {active focus} $I(button-focus-hover) \ + active $I(button-hover) \ + focus $I(button-focus) \ + ] -border 4 -sticky nsew + + ttk::style element create OptionMenu.indicator image $I(down) -width 10 -sticky e + + # Checkbutton + ttk::style layout TCheckbutton { + Checkbutton.button -children { + Checkbutton.padding -children { + Checkbutton.indicator -side left + Checkbutton.label -side right -expand 1 + } + } + } + + ttk::style configure TCheckbutton -padding 4 -width 10 + + ttk::style element create Checkbutton.indicator image \ + [list $I(check-unsel-rest) \ + {alternate disabled} $I(check-tri-dis) \ + {selected disabled} $I(check-dis) \ + disabled $I(check-unsel-dis) \ + {pressed alternate} $I(check-tri-hover) \ + {active focus alternate} $I(check-tri-focus-hover) \ + {active alternate} $I(check-tri-hover) \ + {focus alternate} $I(check-tri-focus) \ + alternate $I(check-tri-rest) \ + {pressed selected} $I(check-hover) \ + {active focus selected} $I(check-focus-hover) \ + {active selected} $I(check-hover) \ + {focus selected} $I(check-focus) \ + selected $I(check-rest) \ + {pressed !selected} $I(check-unsel-pressed) \ + {active focus} $I(check-unsel-focus-hover) \ + active $I(check-unsel-hover) \ + focus $I(check-unsel-focus) \ + ] -width 26 -sticky w + + # Switch.TCheckbutton + ttk::style layout Switch.TCheckbutton { + Switch.button -children { + Switch.padding -children { + Switch.indicator -side left + Switch.label -side right -expand 1 + } + } + } + + ttk::style element create Switch.indicator image \ + [list $I(switch-off-rest) \ + {selected disabled} $I(switch-dis) \ + disabled $I(switch-off-dis) \ + {pressed selected} $I(switch-pressed) \ + {active focus selected} $I(switch-focus-hover) \ + {active selected} $I(switch-hover) \ + {focus selected} $I(switch-focus) \ + selected $I(switch-rest) \ + {pressed !selected} $I(switch-off-pressed) \ + {active focus} $I(switch-off-focus-hover) \ + active $I(switch-off-hover) \ + focus $I(switch-off-focus) \ + ] -width 46 -sticky w + + # Toggle.TButton + ttk::style layout Toggle.TButton { + ToggleButton.button -children { + ToggleButton.padding -children { + ToggleButton.label -side left -expand 1 + } + } + } + + ttk::style configure Toggle.TButton -padding {8 2 8 3} -anchor center -foreground $theme_colors(-fg) + + ttk::style map Toggle.TButton -foreground \ + [list {selected disabled} "#a5a5a5" \ + {selected pressed} "#d0d0d0" \ + selected "#000000" \ + pressed "#25536a" \ + disabled "#7a7a7a" + ] + + ttk::style element create ToggleButton.button image \ + [list $I(button-rest) \ + {selected disabled} $I(button-accent-dis) \ + disabled $I(button-dis) \ + {pressed selected} $I(button-rest) \ + {active focus selected} $I(button-accent-focus-hover) \ + {active selected} $I(button-accent-hover) \ + {focus selected} $I(button-accent-focus) \ + selected $I(button-accent-rest) \ + {pressed !selected} $I(button-accent-rest) \ + {active focus} $I(button-focus-hover) \ + active $I(button-hover) \ + focus $I(button-focus) \ + ] -border 4 -sticky nsew + + # Radiobutton + ttk::style layout TRadiobutton { + Radiobutton.button -children { + Radiobutton.padding -children { + Radiobutton.indicator -side left + Radiobutton.label -side right -expand 1 + } + } + } + + ttk::style configure TRadiobutton -padding 4 -width 10 + + ttk::style element create Radiobutton.indicator image \ + [list $I(radio-unsel-rest) \ + {selected disabled} $I(radio-dis) \ + disabled $I(radio-unsel-dis) \ + {pressed selected} $I(radio-pressed) \ + {active focus selected} $I(radio-focus-hover) \ + {active selected} $I(radio-hover) \ + {focus selected} $I(radio-focus) \ + selected $I(radio-rest) \ + {pressed !selected} $I(radio-unsel-pressed) \ + {active focus} $I(radio-unsel-focus-hover) \ + active $I(radio-unsel-hover) \ + focus $I(radio-unsel-focus) \ + ] -width 26 -sticky w + + # Entry + ttk::style configure TEntry -foreground $theme_colors(-fg) -padding {6 1 4 2} + ttk::style map TEntry -foreground [list disabled "#757575" pressed "#cfcfcf"] + + ttk::style element create Entry.field image \ + [list $I(textbox-rest) \ + {focus hover !invalid} $I(textbox-focus) \ + invalid $I(textbox-error) \ + disabled $I(textbox-dis) \ + {focus !invalid} $I(textbox-focus) \ + hover $I(textbox-hover) \ + ] -border 5 -sticky nsew + + # Combobox + ttk::style layout TCombobox { + Combobox.field -sticky nsew -children { + Combobox.arrow -side right -sticky ns + Combobox.padding -sticky nsew -children { + Combobox.textarea -sticky nsew + } + } + } + + ttk::style configure TCombobox -foreground $theme_colors(-fg) -padding {6 1 0 2} + ttk::style configure ComboboxPopdownFrame -borderwidth 1 -relief solid + ttk::style map TCombobox -foreground [list disabled "#757575" pressed "#cfcfcf"] + + ttk::style map TCombobox -selectbackground [list \ + {readonly hover} $theme_colors(-selbg) \ + {readonly focus} $theme_colors(-selbg) \ + ] -selectforeground [list \ + {readonly hover} $theme_colors(-selfg) \ + {readonly focus} $theme_colors(-selfg) \ + ] + + ttk::style element create Combobox.field image \ + [list $I(textbox-rest) \ + {readonly focus} $I(button-focus) \ + {readonly disabled} $I(button-dis) \ + {readonly pressed} $I(button-pressed) \ + {readonly hover} $I(button-hover) \ + readonly $I(button-rest) \ + {focus hover !invalid} $I(textbox-focus) \ + invalid $I(textbox-error) \ + disabled $I(textbox-dis) \ + focus $I(textbox-focus) \ + {focus !invalid} $I(textbox-focus) \ + hover $I(textbox-hover) \ + ] -border 5 + + ttk::style element create Combobox.arrow image $I(down) -width 34 -sticky {} + + # Spinbox + ttk::style layout TSpinbox { + Spinbox.field -side top -sticky we -children { + Spinbox.downarrow -side right -sticky ns + Spinbox.uparrow -side right -sticky ns + Spinbox.padding -sticky nswe -children { + Spinbox.textarea -sticky nsew + } + } + } + + ttk::style configure TSpinbox -foreground $theme_colors(-fg) -padding {6 1 0 2} + ttk::style map TSpinbox -foreground [list disabled "#757575" pressed "#cfcfcf"] + + ttk::style element create Spinbox.field image \ + [list $I(textbox-rest) \ + {focus hover !invalid} $I(textbox-focus) \ + invalid $I(textbox-error) \ + disabled $I(textbox-dis) \ + focus $I(textbox-focus) \ + {focus !invalid} $I(textbox-focus) \ + hover $I(textbox-hover) \ + ] -border 5 -sticky nsew + + ttk::style element create Spinbox.uparrow image $I(up) -width 34 -height 16 -sticky {} + ttk::style element create Spinbox.downarrow image $I(down) -width 34 -height 16 -sticky {} + + # Progressbar + ttk::style element create Horizontal.Progressbar.trough image $I(progressbar-trough-hor) -border 1 -sticky ew + ttk::style element create Horizontal.Progressbar.pbar image $I(progressbar-bar-hor) -border 2 -sticky ew + + ttk::style element create Vertical.Progressbar.trough image $I(progressbar-trough-vert) -border 1 -sticky ns + ttk::style element create Vertical.Progressbar.pbar image $I(progressbar-bar-vert) -border 2 -sticky ns + + # Scale + ttk::style element create Horizontal.Scale.trough image $I(slider-trough-hor) \ + -border 5 -padding 0 -sticky {ew} + + ttk::style element create Vertical.Scale.trough image $I(slider-trough-vert) \ + -border 5 -padding 0 -sticky {ns} + + ttk::style element create Scale.slider image \ + [list $I(slider-thumb-rest) \ + disabled $I(slider-thumb-dis) \ + pressed $I(slider-thumb-pressed) \ + {active focus} $I(slider-thumb-focus-hover) \ + active $I(slider-thumb-hover) \ + focus $I(slider-thumb-focus) \ + ] -sticky {} + + # Scrollbar + ttk::style layout Vertical.TScrollbar { + Vertical.Scrollbar.trough -sticky ns -children { + Vertical.Scrollbar.uparrow -side top + Vertical.Scrollbar.downarrow -side bottom + Vertical.Scrollbar.thumb -expand 1 + } + } + + ttk::style layout Horizontal.TScrollbar { + Horizontal.Scrollbar.trough -sticky ew -children { + Horizontal.Scrollbar.leftarrow -side left + Horizontal.Scrollbar.rightarrow -side right + Horizontal.Scrollbar.thumb -expand 1 + } + } + + ttk::style element create Horizontal.Scrollbar.trough image $I(scrollbar-trough-hor) -sticky ew -border 6 + ttk::style element create Horizontal.Scrollbar.thumb image $I(scrollbar-thumb-hor) -sticky ew -border 3 + + ttk::style element create Horizontal.Scrollbar.rightarrow image $I(scrollbar-right) -sticky e -width 13 + ttk::style element create Horizontal.Scrollbar.leftarrow image $I(scrollbar-left) -sticky w -width 13 + + ttk::style element create Vertical.Scrollbar.trough image $I(scrollbar-trough-vert) -sticky ns -border 6 + ttk::style element create Vertical.Scrollbar.thumb image $I(scrollbar-thumb-vert) -sticky ns -border 3 + + ttk::style element create Vertical.Scrollbar.uparrow image $I(scrollbar-up) -sticky n -height 13 + ttk::style element create Vertical.Scrollbar.downarrow image $I(scrollbar-down) -sticky s -height 13 + + # Separator + ttk::style element create Separator.separator image $I(sep) -width 1 -height 1 + + # Sizegrip + ttk::style element create Sizegrip.sizegrip image $I(grip) -sticky nsew + + # Card + ttk::style layout Card.TFrame { + Card.field { + Card.padding -expand 1 + } + } + + ttk::style element create Card.field image $I(card) -border 10 -padding 4 -sticky nsew + + # Labelframe + ttk::style layout TLabelframe { + Labelframe.border { + Labelframe.padding -expand 1 -children { + Labelframe.label -side left + } + } + } + + ttk::style element create Labelframe.border image $I(card) -border 5 -padding 4 -sticky nsew + ttk::style configure TLabelframe.Label -font SunValleyBodyStrongFont -foreground "#9e9e9e" + + # Notebook + ttk::style layout TNotebook { + Notebook.border -children { + TNotebook.Tab -expand 1 + } + } + + ttk::style configure TNotebook -padding 1 + ttk::style configure TNotebook.Tab -focuscolor $theme_colors(-accent) + ttk::style element create Notebook.border image $I(notebook-border) -border 5 -padding 5 + + ttk::style element create Notebook.tab image \ + [list $I(tab-rest) \ + selected $I(tab-selected) \ + active $I(tab-hover) \ + ] -border 13 -padding {16 14 16 6} -height 32 + + # Treeview + ttk::style configure Treeview \ + -background $theme_colors(-bg) \ + -rowheight [expr {[font metrics SunValleyBodyFont -linespace] + 4}] \ + -font SunValleyBodyFont + ttk::style map Treeview \ + -background [list selected "#292929"] \ + -foreground [list selected $theme_colors(-selfg)] + + ttk::style element create Treeview.field image $I(card) -border 5 -width 0 -height 0 + + ttk::style element create Treeheading.cell image \ + [list $I(heading-rest) \ + pressed $I(heading-pressed) \ + active $I(heading-hover) + ] -border 5 -padding 15 -sticky nsew + + ttk::style element create Treeitem.indicator image \ + [list $I(right) \ + user2 $I(empty) \ + user1 $I(down) \ + ] -width 26 -sticky {} + + # Panedwindow + ttk::style configure Sash -lightcolor "#9e9e9e" -darkcolor "#9e9e9e" -bordercolor "#9e9e9e" -sashthickness 4 -gripcount 20 + } +} diff --git a/theme/light.tcl b/theme/light.tcl new file mode 100644 index 0000000..ae60eaa --- /dev/null +++ b/theme/light.tcl @@ -0,0 +1,461 @@ +source [file join [file dirname [info script]] sprites_light.tcl] + +namespace eval ttk::theme::sv_light { + package provide ttk::theme::sv_light 2.4 + + array set theme_colors { + -fg "#1c1c1c" + -bg "#fafafa" + -disfg "#a0a0a0" + -selfg "#ffffff" + -selbg "#2f60d8" + -accent "#005fb8" + } + + proc load_images {imgfile} { + variable I + image create photo spritesheet -file $imgfile -format png + foreach {name x y width height} $::spriteinfo { + set I($name) [image create photo -width $width -height $height] + $I($name) copy spritesheet -from $x $y [expr {$x+$width}] [expr {$y+$height}] + } + } + + load_images [file join [file dirname [info script]] spritesheet_light.png] + + ttk::style theme create sun-valley-light -parent clam -settings { + + # Button + ttk::style layout TButton { + Button.button -children { + Button.padding -children { + Button.label -side left -expand 1 + } + } + } + + ttk::style configure TButton -padding {8 2 8 3} -anchor center -foreground $theme_colors(-fg) -width 12 + ttk::style map TButton -foreground [list disabled "#a2a2a2" pressed "#636363" active "#1a1a1a"] + + ttk::style element create Button.button image \ + [list $I(button-rest) \ + {selected disabled} $I(button-dis) \ + disabled $I(button-dis) \ + selected $I(button-rest) \ + pressed $I(button-pressed) \ + {active focus} $I(button-focus-hover) \ + active $I(button-hover) \ + focus $I(button-focus) \ + ] -border 4 -sticky nsew + + # Toolbutton + ttk::style layout Toolbutton { + Toolbutton.button -children { + Toolbutton.padding -children { + Toolbutton.label -side left -expand 1 + } + } + } + + ttk::style configure Toolbutton -padding {8 2 8 3} -anchor center -width 12 + + ttk::style element create Toolbutton.button image \ + [list $I(empty) \ + disabled $I(button-dis) \ + pressed $I(button-pressed) \ + {active focus} $I(button-focus-hover) \ + active $I(button-hover) \ + focus $I(button-focus) \ + ] -border 4 -sticky nsew + + # Accent.TButton + ttk::style layout Accent.TButton { + AccentButton.button -children { + AccentButton.padding -children { + AccentButton.label -side left -expand 1 + } + } + } + + ttk::style configure Accent.TButton -padding {8 2 8 3} -anchor center -foreground "#ffffff" + ttk::style map Accent.TButton -foreground [list pressed "#c1d8ee" disabled "#ffffff"] + + ttk::style element create AccentButton.button image \ + [list $I(button-accent-rest) \ + {selected disabled} $I(button-accent-dis) \ + disabled $I(button-accent-dis) \ + {active focus} $I(button-accent-focus-hover) \ + focus $I(button-accent-focus) \ + selected $I(button-accent-rest) \ + pressed $I(button-accent-pressed) \ + active $I(button-accent-hover) \ + ] -border 4 -sticky nsew + + # Menubutton + ttk::style layout TMenubutton { + Menubutton.button -children { + Menubutton.padding -children { + Menubutton.label -side left -expand 1 + Menubutton.indicator -side right -sticky nsew + } + } + } + + ttk::style configure TMenubutton -padding {8 2 13 3} -width 10 + + ttk::style element create Menubutton.button image \ + [list $I(button-rest) \ + disabled $I(button-dis) \ + pressed $I(button-pressed) \ + {active focus} $I(button-focus-hover) \ + active $I(button-hover) \ + focus $I(button-focus) \ + ] -border 4 -sticky nsew + + ttk::style element create Menubutton.indicator image $I(down) -width 10 -sticky e + + # OptionMenu + ttk::style layout TOptionMenu { + OptionMenu.button -children { + OptionMenu.padding -children { + OptionMenu.label -side left -expand 1 + OptionMenu.indicator -side right -sticky nsew + } + } + } + + ttk::style configure TOptionMenu -padding {8 2 13 3} -width 10 + + ttk::style element create OptionMenu.button image \ + [list $I(button-rest) \ + disabled $I(button-dis) \ + pressed $I(button-pressed) \ + {active focus} $I(button-focus-hover) \ + active $I(button-hover) \ + focus $I(button-focus) \ + ] -border 4 -sticky nsew + + ttk::style element create OptionMenu.indicator image $I(down) -width 10 -sticky e + + # Checkbutton + ttk::style layout TCheckbutton { + Checkbutton.button -children { + Checkbutton.padding -children { + Checkbutton.indicator -side left + Checkbutton.label -side right -expand 1 + } + } + } + + ttk::style configure TCheckbutton -padding 4 -width 10 + + ttk::style element create Checkbutton.indicator image \ + [list $I(check-unsel-rest) \ + {alternate disabled} $I(check-tri-dis) \ + {selected disabled} $I(check-dis) \ + disabled $I(check-unsel-dis) \ + {pressed alternate} $I(check-tri-hover) \ + {active focus alternate} $I(check-tri-focus-hover) \ + {active alternate} $I(check-tri-hover) \ + {focus alternate} $I(check-tri-focus) \ + alternate $I(check-tri-rest) \ + {pressed selected} $I(check-hover) \ + {active focus selected} $I(check-focus-hover) \ + {active selected} $I(check-hover) \ + {focus selected} $I(check-focus) \ + selected $I(check-rest) \ + {pressed !selected} $I(check-unsel-pressed) \ + {active focus} $I(check-unsel-focus-hover) \ + active $I(check-unsel-hover) \ + focus $I(check-unsel-focus) \ + ] -width 26 -sticky w + + # Switch.TCheckbutton + ttk::style layout Switch.TCheckbutton { + Switch.button -children { + Switch.padding -children { + Switch.indicator -side left + Switch.label -side right -expand 1 + } + } + } + + ttk::style element create Switch.indicator image \ + [list $I(switch-off-rest) \ + {selected disabled} $I(switch-dis) \ + disabled $I(switch-off-dis) \ + {pressed selected} $I(switch-pressed) \ + {active focus selected} $I(switch-focus-hover) \ + {active selected} $I(switch-hover) \ + {focus selected} $I(switch-focus) \ + selected $I(switch-rest) \ + {pressed !selected} $I(switch-off-pressed) \ + {active focus} $I(switch-off-focus-hover) \ + active $I(switch-off-hover) \ + focus $I(switch-off-focus) \ + ] -width 46 -sticky w + + # Toggle.TButton + ttk::style layout Toggle.TButton { + ToggleButton.button -children { + ToggleButton.padding -children { + ToggleButton.label -side left -expand 1 + } + } + } + + ttk::style configure Toggle.TButton -padding {8 2 8 3} -anchor center -foreground $theme_colors(-fg) + + ttk::style map Toggle.TButton -foreground \ + [list {selected disabled} "#ffffff" \ + {selected pressed} "#636363" \ + selected "#ffffff" \ + pressed "#c1d8ee" \ + disabled "#a2a2a2" \ + active "#1a1a1a" + ] + + ttk::style element create ToggleButton.button image \ + [list $I(button-rest) \ + {selected disabled} $I(button-accent-dis) \ + disabled $I(button-dis) \ + {pressed selected} $I(button-rest) \ + {active focus selected} $I(button-accent-focus-hover) \ + {active selected} $I(button-accent-hover) \ + {focus selected} $I(button-accent-focus) \ + selected $I(button-accent-rest) \ + {pressed !selected} $I(button-accent-rest) \ + {active focus} $I(button-focus-hover) \ + active $I(button-hover) \ + focus $I(button-focus) \ + ] -border 4 -sticky nsew + + # Radiobutton + ttk::style layout TRadiobutton { + Radiobutton.button -children { + Radiobutton.padding -children { + Radiobutton.indicator -side left + Radiobutton.label -side right -expand 1 + } + } + } + + ttk::style configure TRadiobutton -padding 4 -width 10 + + ttk::style element create Radiobutton.indicator image \ + [list $I(radio-unsel-rest) \ + {selected disabled} $I(radio-dis) \ + disabled $I(radio-unsel-dis) \ + {pressed selected} $I(radio-pressed) \ + {active focus selected} $I(radio-focus-hover) \ + {active selected} $I(radio-hover) \ + {focus selected} $I(radio-focus) \ + selected $I(radio-rest) \ + {pressed !selected} $I(radio-unsel-pressed) \ + {active focus} $I(radio-unsel-focus-hover) \ + active $I(radio-unsel-hover) \ + focus $I(radio-unsel-focus) \ + ] -width 26 -sticky w + + # Entry + ttk::style configure TEntry -foreground $theme_colors(-fg) -padding {6 1 4 2} + ttk::style map TEntry -foreground [list disabled "#0a0a0a" pressed "#636363" active "#626262"] + + ttk::style element create Entry.field image \ + [list $I(textbox-rest) \ + {focus hover !invalid} $I(textbox-focus) \ + invalid $I(textbox-error) \ + disabled $I(textbox-dis) \ + {focus !invalid} $I(textbox-focus) \ + hover $I(textbox-hover) \ + ] -border 5 -sticky nsew + + # Combobox + ttk::style layout TCombobox { + Combobox.field -sticky nsew -children { + Combobox.arrow -side right -sticky ns + Combobox.padding -sticky nsew -children { + Combobox.textarea -sticky nsew + } + } + } + + ttk::style configure TCombobox -foreground $theme_colors(-fg) -padding {6 1 0 2} + ttk::style configure ComboboxPopdownFrame -borderwidth 1 -relief solid + ttk::style map TCombobox -foreground [list disabled "#0a0a0a" pressed "#636363" active "#626262"] + + ttk::style map TCombobox -selectbackground [list \ + {readonly hover} $theme_colors(-selbg) \ + {readonly focus} $theme_colors(-selbg) \ + ] -selectforeground [list \ + {readonly hover} $theme_colors(-selfg) \ + {readonly focus} $theme_colors(-selfg) \ + ] + + ttk::style element create Combobox.field image \ + [list $I(textbox-rest) \ + {readonly focus} $I(button-focus) \ + {readonly disabled} $I(button-dis) \ + {readonly pressed} $I(button-pressed) \ + {readonly hover} $I(button-hover) \ + readonly $I(button-rest) \ + {focus hover !invalid} $I(textbox-focus) \ + invalid $I(textbox-error) \ + disabled $I(textbox-dis) \ + focus $I(textbox-focus) \ + {focus !invalid} $I(textbox-focus) \ + hover $I(textbox-hover) \ + ] -border 5 + + ttk::style element create Combobox.arrow image $I(down) -width 34 -sticky {} + + # Spinbox + ttk::style layout TSpinbox { + Spinbox.field -side top -sticky we -children { + Spinbox.downarrow -side right -sticky ns + Spinbox.uparrow -side right -sticky ns + Spinbox.padding -sticky nswe -children { + Spinbox.textarea -sticky nsew + } + } + } + + ttk::style configure TSpinbox -foreground $theme_colors(-fg) -padding {6 1 0 2} + ttk::style map TSpinbox -foreground [list disabled "#0a0a0a" pressed "#636363" active "#626262"] + + ttk::style element create Spinbox.field image \ + [list $I(textbox-rest) \ + {focus hover !invalid} $I(textbox-focus) \ + invalid $I(textbox-error) \ + disabled $I(textbox-dis) \ + focus $I(textbox-focus) \ + {focus !invalid} $I(textbox-focus) \ + hover $I(textbox-hover) \ + ] -border 5 -sticky nsew + + ttk::style element create Spinbox.uparrow image $I(up) -width 34 -height 16 -sticky {} + ttk::style element create Spinbox.downarrow image $I(down) -width 34 -height 16 -sticky {} + + # Progressbar + ttk::style element create Horizontal.Progressbar.trough image $I(progressbar-trough-hor) -border 1 -sticky ew + ttk::style element create Horizontal.Progressbar.pbar image $I(progressbar-bar-hor) -border 2 -sticky ew + + ttk::style element create Vertical.Progressbar.trough image $I(progressbar-trough-vert) -border 1 -sticky ns + ttk::style element create Vertical.Progressbar.pbar image $I(progressbar-bar-vert) -border 2 -sticky ns + + # Scale + ttk::style element create Horizontal.Scale.trough image $I(slider-trough-hor) \ + -border 5 -padding 0 -sticky {ew} + + ttk::style element create Vertical.Scale.trough image $I(slider-trough-vert) \ + -border 5 -padding 0 -sticky {ns} + + ttk::style element create Scale.slider image \ + [list $I(slider-thumb-rest) \ + disabled $I(slider-thumb-dis) \ + pressed $I(slider-thumb-pressed) \ + {active focus} $I(slider-thumb-focus-hover) \ + active $I(slider-thumb-hover) \ + focus $I(slider-thumb-focus) \ + ] -sticky {} + + # Scrollbar + ttk::style layout Vertical.TScrollbar { + Vertical.Scrollbar.trough -sticky ns -children { + Vertical.Scrollbar.uparrow -side top + Vertical.Scrollbar.downarrow -side bottom + Vertical.Scrollbar.thumb -expand 1 + } + } + + ttk::style layout Horizontal.TScrollbar { + Horizontal.Scrollbar.trough -sticky ew -children { + Horizontal.Scrollbar.leftarrow -side left + Horizontal.Scrollbar.rightarrow -side right + Horizontal.Scrollbar.thumb -expand 1 + } + } + + ttk::style element create Horizontal.Scrollbar.trough image $I(scrollbar-trough-hor) -sticky ew -border 6 + ttk::style element create Horizontal.Scrollbar.thumb image $I(scrollbar-thumb-hor) -sticky ew -border 3 + + ttk::style element create Horizontal.Scrollbar.rightarrow image $I(scrollbar-right) -sticky e -width 13 + ttk::style element create Horizontal.Scrollbar.leftarrow image $I(scrollbar-left) -sticky w -width 13 + + ttk::style element create Vertical.Scrollbar.trough image $I(scrollbar-trough-vert) -sticky ns -border 6 + ttk::style element create Vertical.Scrollbar.thumb image $I(scrollbar-thumb-vert) -sticky ns -border 3 + + ttk::style element create Vertical.Scrollbar.uparrow image $I(scrollbar-up) -sticky n -height 13 + ttk::style element create Vertical.Scrollbar.downarrow image $I(scrollbar-down) -sticky s -height 13 + + # Separator + ttk::style element create Separator.separator image $I(sep) -width 1 -height 1 + + # Sizegrip + ttk::style element create Sizegrip.sizegrip image $I(grip) -sticky nsew + + # Card + ttk::style layout Card.TFrame { + Card.field { + Card.padding -expand 1 + } + } + + ttk::style element create Card.field image $I(card) -border 10 -padding 4 -sticky nsew + + # Labelframe + ttk::style layout TLabelframe { + Labelframe.border { + Labelframe.padding -expand 1 -children { + Labelframe.label -side left + } + } + } + + ttk::style element create Labelframe.border image $I(card) -border 5 -padding 4 -sticky nsew + ttk::style configure TLabelframe.Label -font SunValleyBodyStrongFont -foreground "#676767" + + # Notebook + ttk::style layout TNotebook { + Notebook.border -children { + TNotebook.Tab -expand 1 + } + } + + ttk::style configure TNotebook -padding 1 + ttk::style configure TNotebook.Tab -focuscolor $theme_colors(-accent) + ttk::style element create Notebook.border image $I(notebook-border) -border 5 -padding 5 + + ttk::style element create Notebook.tab image \ + [list $I(tab-rest) \ + selected $I(tab-selected) \ + active $I(tab-hover) \ + ] -border 13 -padding {16 14 16 6} -height 32 + + # Treeview + ttk::style configure Treeview \ + -background $theme_colors(-bg) \ + -rowheight [expr {[font metrics SunValleyBodyFont -linespace] + 4}] \ + -font SunValleyBodyFont + ttk::style map Treeview \ + -background [list selected "#e7e7e7"] \ + -foreground [list selected "#191919"] + + ttk::style element create Treeview.field image $I(card) -border 5 -width 0 -height 0 + + ttk::style element create Treeheading.cell image \ + [list $I(heading-rest) \ + pressed $I(heading-pressed) \ + active $I(heading-hover) + ] -border 5 -padding 15 -sticky nsew + + ttk::style element create Treeitem.indicator image \ + [list $I(right) \ + user2 $I(empty) \ + user1 $I(down) \ + ] -width 26 -sticky {} + + # Panedwindow + ttk::style configure Sash -lightcolor "#676767" -darkcolor "#676767" -bordercolor "#676767" -sashthickness 4 -gripcount 20 + } +} diff --git a/theme/sprites_dark.tcl b/theme/sprites_dark.tcl new file mode 100644 index 0000000..267b07f --- /dev/null +++ b/theme/sprites_dark.tcl @@ -0,0 +1,95 @@ +set ::spriteinfo [list \ + card 0 0 50 50 \ + notebook-border 50 0 40 40 \ + switch-dis 50 40 40 20 \ + switch-focus-hover 0 50 40 20 \ + switch-focus 0 70 40 20 \ + switch-hover 40 60 40 20 \ + switch-off-dis 90 0 40 20 \ + switch-off-focus-hover 90 20 40 20 \ + switch-off-focus 90 40 40 20 \ + switch-off-hover 80 60 40 20 \ + switch-off-pressed 0 90 40 20 \ + switch-off-rest 40 80 40 20 \ + switch-pressed 80 80 40 20 \ + switch-rest 0 110 40 20 \ + tab-hover 130 0 32 32 \ + tab-rest 130 32 32 32 \ + tab-selected 120 64 32 32 \ + heading-hover 40 100 22 22 \ + heading-pressed 62 100 22 22 \ + heading-rest 84 100 22 22 \ + slider-thumb-dis 106 100 22 22 \ + slider-thumb-focus-hover 128 96 22 22 \ + slider-thumb-focus 0 130 22 22 \ + slider-thumb-hover 22 130 22 22 \ + slider-thumb-pressed 44 122 22 22 \ + slider-thumb-rest 66 122 22 22 \ + slider-trough-hor 88 122 22 22 \ + slider-trough-vert 110 122 22 22 \ + button-accent-dis 132 118 20 20 \ + button-accent-focus-hover 0 152 20 20 \ + button-accent-focus 20 152 20 20 \ + button-accent-hover 40 152 20 20 \ + button-accent-pressed 60 144 20 20 \ + button-accent-rest 80 144 20 20 \ + button-dis 100 144 20 20 \ + button-focus-hover 120 144 20 20 \ + button-focus 140 138 20 20 \ + button-hover 162 0 20 20 \ + button-pressed 162 20 20 20 \ + button-rest 162 40 20 20 \ + check-dis 162 60 20 20 \ + check-focus-hover 150 96 20 20 \ + check-focus 152 116 20 20 \ + check-hover 160 136 20 20 \ + check-pressed 0 172 20 20 \ + check-rest 20 172 20 20 \ + check-tri-dis 40 172 20 20 \ + check-tri-focus-hover 160 156 20 20 \ + check-tri-focus 140 158 20 20 \ + check-tri-hover 60 164 20 20 \ + check-tri-pressed 80 164 20 20 \ + check-tri-rest 100 164 20 20 \ + check-unsel-dis 120 164 20 20 \ + check-unsel-focus-hover 182 0 20 20 \ + check-unsel-focus 182 20 20 20 \ + check-unsel-hover 182 40 20 20 \ + check-unsel-pressed 182 60 20 20 \ + check-unsel-rest 180 80 20 20 \ + progressbar-bar-hor 180 100 20 5 \ + progressbar-bar-vert 172 80 5 20 \ + progressbar-trough-hor 152 80 20 5 \ + progressbar-trough-vert 172 100 5 20 \ + radio-dis 180 105 20 20 \ + radio-focus-hover 180 125 20 20 \ + radio-focus 180 145 20 20 \ + radio-hover 180 165 20 20 \ + radio-pressed 160 176 20 20 \ + radio-rest 140 178 20 20 \ + radio-unsel-dis 0 192 20 20 \ + radio-unsel-focus-hover 20 192 20 20 \ + radio-unsel-focus 40 192 20 20 \ + radio-unsel-hover 180 185 20 20 \ + radio-unsel-pressed 60 184 20 20 \ + radio-unsel-rest 80 184 20 20 \ + scrollbar-thumb-hor 160 196 20 12 \ + scrollbar-thumb-vert 100 184 12 20 \ + scrollbar-trough-hor 112 198 20 12 \ + scrollbar-trough-vert 202 0 12 20 \ + textbox-dis 0 212 20 20 \ + textbox-error 20 212 20 20 \ + textbox-focus 40 212 20 20 \ + textbox-hover 60 210 20 20 \ + textbox-rest 80 210 20 20 \ + down 40 50 10 5 \ + empty 152 64 10 10 \ + grip 152 85 10 10 \ + right 162 85 5 10 \ + sep 202 20 10 10 \ + up 40 55 10 5 \ + scrollbar-down 132 138 8 6 \ + scrollbar-left 44 144 6 8 \ + scrollbar-right 50 144 6 8 \ + scrollbar-up 172 120 8 6 \ +] diff --git a/theme/sprites_light.tcl b/theme/sprites_light.tcl new file mode 100644 index 0000000..2d9150f --- /dev/null +++ b/theme/sprites_light.tcl @@ -0,0 +1,97 @@ +set ::spriteinfo [list \ + card 0 0 50 50 \ + notebook-border 50 0 40 40 \ + switch-dis 50 40 40 20 \ + switch-focus-hover 0 50 40 20 \ + switch-focus 0 70 40 20 \ + switch-hover 40 60 40 20 \ + switch-off-dis 90 0 40 20 \ + switch-off-focus-hover 90 20 40 20 \ + switch-off-focus 90 40 40 20 \ + switch-off-hover 80 60 40 20 \ + switch-off-pressed 0 90 40 20 \ + switch-off-rest 40 80 40 20 \ + switch-pressed 80 80 40 20 \ + switch-rest 0 110 40 20 \ + tab-hover 130 0 32 32 \ + tab-rest 130 32 32 32 \ + tab-selected 120 64 32 32 \ + heading-hover 40 100 22 22 \ + heading-pressed 62 100 22 22 \ + heading-rest 84 100 22 22 \ + slider-thumb-dis 106 100 22 22 \ + slider-thumb-focus-hover 128 96 22 22 \ + slider-thumb-focus 0 130 22 22 \ + slider-thumb-hover 22 130 22 22 \ + slider-thumb-pressed 44 122 22 22 \ + slider-thumb-rest 66 122 22 22 \ + slider-trough-hor 88 122 22 22 \ + slider-trough-vert 110 122 22 22 \ + button-accent-dis 132 118 20 20 \ + button-accent-focus-hover 0 152 20 20 \ + button-accent-focus 20 152 20 20 \ + button-accent-hover 40 152 20 20 \ + button-accent-pressed 60 144 20 20 \ + button-accent-rest 80 144 20 20 \ + button-dis 100 144 20 20 \ + button-focus-hover 120 144 20 20 \ + button-focus 140 138 20 20 \ + button-hover 162 0 20 20 \ + button-pressed 162 20 20 20 \ + button-rest 162 40 20 20 \ + check-dis 162 60 20 20 \ + check-focus-hover 150 96 20 20 \ + check-focus 152 116 20 20 \ + check-hover 160 136 20 20 \ + check-pressed 0 172 20 20 \ + check-rest 20 172 20 20 \ + check-tri-dis 40 172 20 20 \ + check-tri-focus-hover 160 156 20 20 \ + check-tri-focus 140 158 20 20 \ + check-tri-hover 60 164 20 20 \ + check-tri-pressed 80 164 20 20 \ + check-tri-rest 100 164 20 20 \ + check-unsel-dis 120 164 20 20 \ + check-unsel-focus-hover 182 0 20 20 \ + check-unsel-focus 182 20 20 20 \ + check-unsel-hover 182 40 20 20 \ + check-unsel-pressed 182 60 20 20 \ + check-unsel-rest 180 80 20 20 \ + g2866 180 100 20 20 \ + g2871 180 120 20 20 \ + progressbar-bar-hor 180 140 20 5 \ + progressbar-bar-vert 172 80 5 20 \ + progressbar-trough-hor 152 80 20 5 \ + progressbar-trough-vert 172 100 5 20 \ + radio-dis 180 145 20 20 \ + radio-focus-hover 180 165 20 20 \ + radio-focus 160 176 20 20 \ + radio-hover 140 178 20 20 \ + radio-pressed 0 192 20 20 \ + radio-rest 20 192 20 20 \ + radio-unsel-dis 40 192 20 20 \ + radio-unsel-focus-hover 180 185 20 20 \ + radio-unsel-focus 60 184 20 20 \ + radio-unsel-hover 80 184 20 20 \ + radio-unsel-pressed 100 184 20 20 \ + radio-unsel-rest 120 184 20 20 \ + scrollbar-thumb-hor 160 196 20 12 \ + scrollbar-thumb-vert 202 0 12 20 \ + scrollbar-trough-hor 140 198 20 12 \ + scrollbar-trough-vert 202 20 12 20 \ + textbox-dis 0 212 20 20 \ + textbox-error 20 212 20 20 \ + textbox-focus 40 212 20 20 \ + textbox-hover 60 210 20 20 \ + textbox-rest 80 210 20 20 \ + down 40 50 10 5 \ + empty 152 64 10 10 \ + grip 152 85 10 10 \ + right 162 85 5 10 \ + sep 202 40 10 10 \ + up 40 55 10 5 \ + scrollbar-down 132 138 8 6 \ + scrollbar-left 44 144 6 8 \ + scrollbar-right 50 144 6 8 \ + scrollbar-up 172 120 8 6 \ +] diff --git a/theme/spritesheet_dark.png b/theme/spritesheet_dark.png new file mode 100644 index 0000000..1810f25 Binary files /dev/null and b/theme/spritesheet_dark.png differ diff --git a/theme/spritesheet_light.png b/theme/spritesheet_light.png new file mode 100644 index 0000000..1c7bc5d Binary files /dev/null and b/theme/spritesheet_light.png differ diff --git a/theme_old/dark.tcl b/theme_old/dark.tcl new file mode 100644 index 0000000..24c5b8f --- /dev/null +++ b/theme_old/dark.tcl @@ -0,0 +1,537 @@ +# Copyright (c) 2021 rdbende + +# The Azure theme is a beautiful modern ttk theme inspired by Microsoft's fluent design. + +package require Tk 8.6 + +namespace eval ttk::theme::azure-dark { + variable version 2.0 + package provide ttk::theme::azure-dark $version + + ttk::style theme create azure-dark -parent clam -settings { + proc load_images {imgdir} { + variable I + foreach file [glob -directory $imgdir *.gif] { + set img [file tail [file rootname $file]] + set I($img) [image create photo -file $file -format gif] + } + } + + load_images [file join [file dirname [info script]] dark] + + array set colors { + -fg "#ffffff" + -bg "#333333" + -disabledfg "#ffffff" + -disabledbg "#737373" + -selectfg "#ffffff" + -selectbg "#007fff" + } + + 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) \ + pressed $I(rect-basic) \ + selected $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) \ + pressed $I(rect-basic) \ + selected $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) \ + pressed $I(rect-accent) \ + selected $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-basic) \ + {active selected} $I(on-basic) \ + selected $I(on-accent) \ + {pressed !selected} $I(off-basic) \ + active $I(off-basic) \ + ] -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 $colors(-selectbg)] \ + -foreground [list selected $colors(-selectfg)] + + # Panedwindow + # Insane hack to remove clam's ugly sash + ttk::style configure Sash -gripcount 0 + } +} diff --git a/theme_old/dark/box-accent.gif b/theme_old/dark/box-accent.gif new file mode 100644 index 0000000..e88fe0b Binary files /dev/null and b/theme_old/dark/box-accent.gif differ diff --git a/theme_old/dark/box-basic.gif b/theme_old/dark/box-basic.gif new file mode 100644 index 0000000..a532820 Binary files /dev/null and b/theme_old/dark/box-basic.gif differ diff --git a/theme_old/dark/box-hover.gif b/theme_old/dark/box-hover.gif new file mode 100644 index 0000000..11b42ef Binary files /dev/null and b/theme_old/dark/box-hover.gif differ diff --git a/theme_old/dark/box-invalid.gif b/theme_old/dark/box-invalid.gif new file mode 100644 index 0000000..eced5e2 Binary files /dev/null and b/theme_old/dark/box-invalid.gif differ diff --git a/theme_old/dark/button-hover.gif b/theme_old/dark/button-hover.gif new file mode 100644 index 0000000..5f14eaf Binary files /dev/null and b/theme_old/dark/button-hover.gif differ diff --git a/theme_old/dark/card.gif b/theme_old/dark/card.gif new file mode 100644 index 0000000..8e3d8ce Binary files /dev/null and b/theme_old/dark/card.gif differ diff --git a/theme_old/dark/check-accent.gif b/theme_old/dark/check-accent.gif new file mode 100644 index 0000000..9f429ef Binary files /dev/null and b/theme_old/dark/check-accent.gif differ diff --git a/theme_old/dark/check-basic.gif b/theme_old/dark/check-basic.gif new file mode 100644 index 0000000..6868e83 Binary files /dev/null and b/theme_old/dark/check-basic.gif differ diff --git a/theme_old/dark/check-hover.gif b/theme_old/dark/check-hover.gif new file mode 100644 index 0000000..47b4d34 Binary files /dev/null and b/theme_old/dark/check-hover.gif differ diff --git a/theme_old/dark/check-tri-accent.gif b/theme_old/dark/check-tri-accent.gif new file mode 100644 index 0000000..9b50509 Binary files /dev/null and b/theme_old/dark/check-tri-accent.gif differ diff --git a/theme_old/dark/check-tri-basic.gif b/theme_old/dark/check-tri-basic.gif new file mode 100644 index 0000000..4ff82e3 Binary files /dev/null and b/theme_old/dark/check-tri-basic.gif differ diff --git a/theme_old/dark/check-tri-hover.gif b/theme_old/dark/check-tri-hover.gif new file mode 100644 index 0000000..7720a70 Binary files /dev/null and b/theme_old/dark/check-tri-hover.gif differ diff --git a/theme_old/dark/circle-accent.gif b/theme_old/dark/circle-accent.gif new file mode 100644 index 0000000..2111ed7 Binary files /dev/null and b/theme_old/dark/circle-accent.gif differ diff --git a/theme_old/dark/circle-basic.gif b/theme_old/dark/circle-basic.gif new file mode 100644 index 0000000..ce4b24f Binary files /dev/null and b/theme_old/dark/circle-basic.gif differ diff --git a/theme_old/dark/circle-hover.gif b/theme_old/dark/circle-hover.gif new file mode 100644 index 0000000..f0eb59a Binary files /dev/null and b/theme_old/dark/circle-hover.gif differ diff --git a/theme_old/dark/combo-button-basic.gif b/theme_old/dark/combo-button-basic.gif new file mode 100644 index 0000000..923c671 Binary files /dev/null and b/theme_old/dark/combo-button-basic.gif differ diff --git a/theme_old/dark/combo-button-focus.gif b/theme_old/dark/combo-button-focus.gif new file mode 100644 index 0000000..d7c2cb6 Binary files /dev/null and b/theme_old/dark/combo-button-focus.gif differ diff --git a/theme_old/dark/combo-button-hover.gif b/theme_old/dark/combo-button-hover.gif new file mode 100644 index 0000000..ca098fb Binary files /dev/null and b/theme_old/dark/combo-button-hover.gif differ diff --git a/theme_old/dark/down-accent.gif b/theme_old/dark/down-accent.gif new file mode 100644 index 0000000..b8d8d5d Binary files /dev/null and b/theme_old/dark/down-accent.gif differ diff --git a/theme_old/dark/down.gif b/theme_old/dark/down.gif new file mode 100644 index 0000000..315943d Binary files /dev/null and b/theme_old/dark/down.gif differ diff --git a/theme_old/dark/empty.gif b/theme_old/dark/empty.gif new file mode 100644 index 0000000..7c37f6a Binary files /dev/null and b/theme_old/dark/empty.gif differ diff --git a/theme_old/dark/hor-accent.gif b/theme_old/dark/hor-accent.gif new file mode 100644 index 0000000..e321c96 Binary files /dev/null and b/theme_old/dark/hor-accent.gif differ diff --git a/theme_old/dark/hor-basic.gif b/theme_old/dark/hor-basic.gif new file mode 100644 index 0000000..da17514 Binary files /dev/null and b/theme_old/dark/hor-basic.gif differ diff --git a/theme_old/dark/hor-hover.gif b/theme_old/dark/hor-hover.gif new file mode 100644 index 0000000..b3ebabf Binary files /dev/null and b/theme_old/dark/hor-hover.gif differ diff --git a/theme_old/dark/notebook.gif b/theme_old/dark/notebook.gif new file mode 100644 index 0000000..6b33afa Binary files /dev/null and b/theme_old/dark/notebook.gif differ diff --git a/theme_old/dark/off-basic.gif b/theme_old/dark/off-basic.gif new file mode 100644 index 0000000..769a5e5 Binary files /dev/null and b/theme_old/dark/off-basic.gif differ diff --git a/theme_old/dark/on-accent.gif b/theme_old/dark/on-accent.gif new file mode 100644 index 0000000..c0872b7 Binary files /dev/null and b/theme_old/dark/on-accent.gif differ diff --git a/theme_old/dark/on-basic.gif b/theme_old/dark/on-basic.gif new file mode 100644 index 0000000..7194ab9 Binary files /dev/null and b/theme_old/dark/on-basic.gif differ diff --git a/theme_old/dark/outline-basic.gif b/theme_old/dark/outline-basic.gif new file mode 100644 index 0000000..e2820a7 Binary files /dev/null and b/theme_old/dark/outline-basic.gif differ diff --git a/theme_old/dark/outline-hover.gif b/theme_old/dark/outline-hover.gif new file mode 100644 index 0000000..2a47d95 Binary files /dev/null and b/theme_old/dark/outline-hover.gif differ diff --git a/theme_old/dark/radio-accent.gif b/theme_old/dark/radio-accent.gif new file mode 100644 index 0000000..ea26172 Binary files /dev/null and b/theme_old/dark/radio-accent.gif differ diff --git a/theme_old/dark/radio-basic.gif b/theme_old/dark/radio-basic.gif new file mode 100644 index 0000000..e7cd0b0 Binary files /dev/null and b/theme_old/dark/radio-basic.gif differ diff --git a/theme_old/dark/radio-hover.gif b/theme_old/dark/radio-hover.gif new file mode 100644 index 0000000..4c19941 Binary files /dev/null and b/theme_old/dark/radio-hover.gif differ diff --git a/theme_old/dark/radio-tri-accent.gif b/theme_old/dark/radio-tri-accent.gif new file mode 100644 index 0000000..7291694 Binary files /dev/null and b/theme_old/dark/radio-tri-accent.gif differ diff --git a/theme_old/dark/radio-tri-basic.gif b/theme_old/dark/radio-tri-basic.gif new file mode 100644 index 0000000..f96aef0 Binary files /dev/null and b/theme_old/dark/radio-tri-basic.gif differ diff --git a/theme_old/dark/radio-tri-hover.gif b/theme_old/dark/radio-tri-hover.gif new file mode 100644 index 0000000..1f76cd7 Binary files /dev/null and b/theme_old/dark/radio-tri-hover.gif differ diff --git a/theme_old/dark/rect-accent-hover.gif b/theme_old/dark/rect-accent-hover.gif new file mode 100644 index 0000000..35b1712 Binary files /dev/null and b/theme_old/dark/rect-accent-hover.gif differ diff --git a/theme_old/dark/rect-accent.gif b/theme_old/dark/rect-accent.gif new file mode 100644 index 0000000..7fa51ba Binary files /dev/null and b/theme_old/dark/rect-accent.gif differ diff --git a/theme_old/dark/rect-basic.gif b/theme_old/dark/rect-basic.gif new file mode 100644 index 0000000..f4e60a7 Binary files /dev/null and b/theme_old/dark/rect-basic.gif differ diff --git a/theme_old/dark/rect-hover.gif b/theme_old/dark/rect-hover.gif new file mode 100644 index 0000000..7c95d32 Binary files /dev/null and b/theme_old/dark/rect-hover.gif differ diff --git a/theme_old/dark/right.gif b/theme_old/dark/right.gif new file mode 100644 index 0000000..7c672c4 Binary files /dev/null and b/theme_old/dark/right.gif differ diff --git a/theme_old/dark/scale-hor.gif b/theme_old/dark/scale-hor.gif new file mode 100644 index 0000000..a95a5de Binary files /dev/null and b/theme_old/dark/scale-hor.gif differ diff --git a/theme_old/dark/scale-vert.gif b/theme_old/dark/scale-vert.gif new file mode 100644 index 0000000..8ba14d7 Binary files /dev/null and b/theme_old/dark/scale-vert.gif differ diff --git a/theme_old/dark/separator.gif b/theme_old/dark/separator.gif new file mode 100644 index 0000000..d873bf4 Binary files /dev/null and b/theme_old/dark/separator.gif differ diff --git a/theme_old/dark/size.gif b/theme_old/dark/size.gif new file mode 100644 index 0000000..dbc2771 Binary files /dev/null and b/theme_old/dark/size.gif differ diff --git a/theme_old/dark/tab-basic.gif b/theme_old/dark/tab-basic.gif new file mode 100644 index 0000000..4309e4b Binary files /dev/null and b/theme_old/dark/tab-basic.gif differ diff --git a/theme_old/dark/tab-disabled.gif b/theme_old/dark/tab-disabled.gif new file mode 100644 index 0000000..f0029b2 Binary files /dev/null and b/theme_old/dark/tab-disabled.gif differ diff --git a/theme_old/dark/tab-hover.gif b/theme_old/dark/tab-hover.gif new file mode 100644 index 0000000..fc84389 Binary files /dev/null and b/theme_old/dark/tab-hover.gif differ diff --git a/theme_old/dark/tick-hor-accent.gif b/theme_old/dark/tick-hor-accent.gif new file mode 100644 index 0000000..9d3d7d2 Binary files /dev/null and b/theme_old/dark/tick-hor-accent.gif differ diff --git a/theme_old/dark/tick-hor-basic.gif b/theme_old/dark/tick-hor-basic.gif new file mode 100644 index 0000000..e04630f Binary files /dev/null and b/theme_old/dark/tick-hor-basic.gif differ diff --git a/theme_old/dark/tick-hor-hover.gif b/theme_old/dark/tick-hor-hover.gif new file mode 100644 index 0000000..19e0e33 Binary files /dev/null and b/theme_old/dark/tick-hor-hover.gif differ diff --git a/theme_old/dark/tick-vert-accent.gif b/theme_old/dark/tick-vert-accent.gif new file mode 100644 index 0000000..ad00c99 Binary files /dev/null and b/theme_old/dark/tick-vert-accent.gif differ diff --git a/theme_old/dark/tick-vert-basic.gif b/theme_old/dark/tick-vert-basic.gif new file mode 100644 index 0000000..bcc0e46 Binary files /dev/null and b/theme_old/dark/tick-vert-basic.gif differ diff --git a/theme_old/dark/tick-vert-hover.gif b/theme_old/dark/tick-vert-hover.gif new file mode 100644 index 0000000..c1dfde4 Binary files /dev/null and b/theme_old/dark/tick-vert-hover.gif differ diff --git a/theme_old/dark/tree-basic.gif b/theme_old/dark/tree-basic.gif new file mode 100644 index 0000000..577452d Binary files /dev/null and b/theme_old/dark/tree-basic.gif differ diff --git a/theme_old/dark/tree-pressed.gif b/theme_old/dark/tree-pressed.gif new file mode 100644 index 0000000..768b567 Binary files /dev/null and b/theme_old/dark/tree-pressed.gif differ diff --git a/theme_old/dark/up-accent.gif b/theme_old/dark/up-accent.gif new file mode 100644 index 0000000..652ccaa Binary files /dev/null and b/theme_old/dark/up-accent.gif differ diff --git a/theme_old/dark/up.gif b/theme_old/dark/up.gif new file mode 100644 index 0000000..60b60d6 Binary files /dev/null and b/theme_old/dark/up.gif differ diff --git a/theme_old/dark/vert-accent.gif b/theme_old/dark/vert-accent.gif new file mode 100644 index 0000000..592b7f4 Binary files /dev/null and b/theme_old/dark/vert-accent.gif differ diff --git a/theme_old/dark/vert-basic.gif b/theme_old/dark/vert-basic.gif new file mode 100644 index 0000000..468ed6b Binary files /dev/null and b/theme_old/dark/vert-basic.gif differ diff --git a/theme_old/dark/vert-hover.gif b/theme_old/dark/vert-hover.gif new file mode 100644 index 0000000..895f51d Binary files /dev/null and b/theme_old/dark/vert-hover.gif differ diff --git a/theme_old/light.tcl b/theme_old/light.tcl new file mode 100644 index 0000000..2044ebe --- /dev/null +++ b/theme_old/light.tcl @@ -0,0 +1,537 @@ +# Copyright (c) 2021 rdbende + +# The Azure theme is a beautiful modern ttk theme inspired by Microsoft's fluent design. + +package require Tk 8.6 + +namespace eval ttk::theme::azure-light { + variable version 2.0 + package provide ttk::theme::azure-light $version + + ttk::style theme create azure-light -parent clam -settings { + proc load_images {imgdir} { + variable I + foreach file [glob -directory $imgdir *.gif] { + set img [file tail [file rootname $file]] + set I($img) [image create photo -file $file -format gif] + } + } + + load_images [file join [file dirname [info script]] light] + + array set colors { + -fg "#000000" + -bg "#ffffff" + -disabledfg "#737373" + -disabledbg "#ffffff" + -selectfg "#ffffff" + -selectbg "#007fff" + } + + 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/theme_old/light/box-accent.gif b/theme_old/light/box-accent.gif new file mode 100644 index 0000000..1ffe459 Binary files /dev/null and b/theme_old/light/box-accent.gif differ diff --git a/theme_old/light/box-basic.gif b/theme_old/light/box-basic.gif new file mode 100644 index 0000000..4b4f4cf Binary files /dev/null and b/theme_old/light/box-basic.gif differ diff --git a/theme_old/light/box-hover.gif b/theme_old/light/box-hover.gif new file mode 100644 index 0000000..02b1899 Binary files /dev/null and b/theme_old/light/box-hover.gif differ diff --git a/theme_old/light/box-invalid.gif b/theme_old/light/box-invalid.gif new file mode 100644 index 0000000..934ef45 Binary files /dev/null and b/theme_old/light/box-invalid.gif differ diff --git a/theme_old/light/button-hover.gif b/theme_old/light/button-hover.gif new file mode 100644 index 0000000..c31b240 Binary files /dev/null and b/theme_old/light/button-hover.gif differ diff --git a/theme_old/light/card.gif b/theme_old/light/card.gif new file mode 100644 index 0000000..dc3c655 Binary files /dev/null and b/theme_old/light/card.gif differ diff --git a/theme_old/light/check-accent.gif b/theme_old/light/check-accent.gif new file mode 100644 index 0000000..59b891f Binary files /dev/null and b/theme_old/light/check-accent.gif differ diff --git a/theme_old/light/check-basic.gif b/theme_old/light/check-basic.gif new file mode 100644 index 0000000..2c06547 Binary files /dev/null and b/theme_old/light/check-basic.gif differ diff --git a/theme_old/light/check-hover.gif b/theme_old/light/check-hover.gif new file mode 100644 index 0000000..2bf103a Binary files /dev/null and b/theme_old/light/check-hover.gif differ diff --git a/theme_old/light/check-tri-accent.gif b/theme_old/light/check-tri-accent.gif new file mode 100644 index 0000000..95cfaab Binary files /dev/null and b/theme_old/light/check-tri-accent.gif differ diff --git a/theme_old/light/check-tri-basic.gif b/theme_old/light/check-tri-basic.gif new file mode 100644 index 0000000..800fc06 Binary files /dev/null and b/theme_old/light/check-tri-basic.gif differ diff --git a/theme_old/light/check-tri-hover.gif b/theme_old/light/check-tri-hover.gif new file mode 100644 index 0000000..30e2166 Binary files /dev/null and b/theme_old/light/check-tri-hover.gif differ diff --git a/theme_old/light/circle-accent.gif b/theme_old/light/circle-accent.gif new file mode 100644 index 0000000..31ae3d5 Binary files /dev/null and b/theme_old/light/circle-accent.gif differ diff --git a/theme_old/light/circle-basic.gif b/theme_old/light/circle-basic.gif new file mode 100644 index 0000000..4b1dab7 Binary files /dev/null and b/theme_old/light/circle-basic.gif differ diff --git a/theme_old/light/circle-hover.gif b/theme_old/light/circle-hover.gif new file mode 100644 index 0000000..ffc3ef9 Binary files /dev/null and b/theme_old/light/circle-hover.gif differ diff --git a/theme_old/light/combo-button-basic.gif b/theme_old/light/combo-button-basic.gif new file mode 100644 index 0000000..d7f1266 Binary files /dev/null and b/theme_old/light/combo-button-basic.gif differ diff --git a/theme_old/light/combo-button-focus.gif b/theme_old/light/combo-button-focus.gif new file mode 100644 index 0000000..0b37623 Binary files /dev/null and b/theme_old/light/combo-button-focus.gif differ diff --git a/theme_old/light/combo-button-hover.gif b/theme_old/light/combo-button-hover.gif new file mode 100644 index 0000000..3a43af5 Binary files /dev/null and b/theme_old/light/combo-button-hover.gif differ diff --git a/theme_old/light/down-accent.gif b/theme_old/light/down-accent.gif new file mode 100644 index 0000000..b8d8d5d Binary files /dev/null and b/theme_old/light/down-accent.gif differ diff --git a/theme_old/light/down.gif b/theme_old/light/down.gif new file mode 100644 index 0000000..10b462a Binary files /dev/null and b/theme_old/light/down.gif differ diff --git a/theme_old/light/empty.gif b/theme_old/light/empty.gif new file mode 100644 index 0000000..7c37f6a Binary files /dev/null and b/theme_old/light/empty.gif differ diff --git a/theme_old/light/hor-accent.gif b/theme_old/light/hor-accent.gif new file mode 100644 index 0000000..f74cd6a Binary files /dev/null and b/theme_old/light/hor-accent.gif differ diff --git a/theme_old/light/hor-basic.gif b/theme_old/light/hor-basic.gif new file mode 100644 index 0000000..f69de8b Binary files /dev/null and b/theme_old/light/hor-basic.gif differ diff --git a/theme_old/light/hor-hover.gif b/theme_old/light/hor-hover.gif new file mode 100644 index 0000000..d7e8c65 Binary files /dev/null and b/theme_old/light/hor-hover.gif differ diff --git a/theme_old/light/notebook.gif b/theme_old/light/notebook.gif new file mode 100644 index 0000000..d51af6b Binary files /dev/null and b/theme_old/light/notebook.gif differ diff --git a/theme_old/light/off-basic.gif b/theme_old/light/off-basic.gif new file mode 100644 index 0000000..51d7b64 Binary files /dev/null and b/theme_old/light/off-basic.gif differ diff --git a/theme_old/light/off-hover.gif b/theme_old/light/off-hover.gif new file mode 100644 index 0000000..da7a040 Binary files /dev/null and b/theme_old/light/off-hover.gif differ diff --git a/theme_old/light/on-accent.gif b/theme_old/light/on-accent.gif new file mode 100644 index 0000000..bc7413d Binary files /dev/null and b/theme_old/light/on-accent.gif differ diff --git a/theme_old/light/on-basic.gif b/theme_old/light/on-basic.gif new file mode 100644 index 0000000..a13a66d Binary files /dev/null and b/theme_old/light/on-basic.gif differ diff --git a/theme_old/light/on-hover.gif b/theme_old/light/on-hover.gif new file mode 100644 index 0000000..031cabb Binary files /dev/null and b/theme_old/light/on-hover.gif differ diff --git a/theme_old/light/outline-basic.gif b/theme_old/light/outline-basic.gif new file mode 100644 index 0000000..fe3e674 Binary files /dev/null and b/theme_old/light/outline-basic.gif differ diff --git a/theme_old/light/outline-hover.gif b/theme_old/light/outline-hover.gif new file mode 100644 index 0000000..13221b9 Binary files /dev/null and b/theme_old/light/outline-hover.gif differ diff --git a/theme_old/light/radio-accent.gif b/theme_old/light/radio-accent.gif new file mode 100644 index 0000000..1168277 Binary files /dev/null and b/theme_old/light/radio-accent.gif differ diff --git a/theme_old/light/radio-basic.gif b/theme_old/light/radio-basic.gif new file mode 100644 index 0000000..561b4ba Binary files /dev/null and b/theme_old/light/radio-basic.gif differ diff --git a/theme_old/light/radio-hover.gif b/theme_old/light/radio-hover.gif new file mode 100644 index 0000000..e419fe0 Binary files /dev/null and b/theme_old/light/radio-hover.gif differ diff --git a/theme_old/light/radio-tri-accent.gif b/theme_old/light/radio-tri-accent.gif new file mode 100644 index 0000000..7df1792 Binary files /dev/null and b/theme_old/light/radio-tri-accent.gif differ diff --git a/theme_old/light/radio-tri-basic.gif b/theme_old/light/radio-tri-basic.gif new file mode 100644 index 0000000..86d48b1 Binary files /dev/null and b/theme_old/light/radio-tri-basic.gif differ diff --git a/theme_old/light/radio-tri-hover.gif b/theme_old/light/radio-tri-hover.gif new file mode 100644 index 0000000..64c328c Binary files /dev/null and b/theme_old/light/radio-tri-hover.gif differ diff --git a/theme_old/light/rect-accent-hover.gif b/theme_old/light/rect-accent-hover.gif new file mode 100644 index 0000000..86939af Binary files /dev/null and b/theme_old/light/rect-accent-hover.gif differ diff --git a/theme_old/light/rect-accent.gif b/theme_old/light/rect-accent.gif new file mode 100644 index 0000000..52d6009 Binary files /dev/null and b/theme_old/light/rect-accent.gif differ diff --git a/theme_old/light/rect-basic.gif b/theme_old/light/rect-basic.gif new file mode 100644 index 0000000..cd799a1 Binary files /dev/null and b/theme_old/light/rect-basic.gif differ diff --git a/theme_old/light/rect-hover.gif b/theme_old/light/rect-hover.gif new file mode 100644 index 0000000..39f70e9 Binary files /dev/null and b/theme_old/light/rect-hover.gif differ diff --git a/theme_old/light/right.gif b/theme_old/light/right.gif new file mode 100644 index 0000000..0c97ee4 Binary files /dev/null and b/theme_old/light/right.gif differ diff --git a/theme_old/light/scale-hor.gif b/theme_old/light/scale-hor.gif new file mode 100644 index 0000000..b499792 Binary files /dev/null and b/theme_old/light/scale-hor.gif differ diff --git a/theme_old/light/scale-vert.gif b/theme_old/light/scale-vert.gif new file mode 100644 index 0000000..93f1d79 Binary files /dev/null and b/theme_old/light/scale-vert.gif differ diff --git a/theme_old/light/separator.gif b/theme_old/light/separator.gif new file mode 100644 index 0000000..21d93e4 Binary files /dev/null and b/theme_old/light/separator.gif differ diff --git a/theme_old/light/size.gif b/theme_old/light/size.gif new file mode 100644 index 0000000..5efadf0 Binary files /dev/null and b/theme_old/light/size.gif differ diff --git a/theme_old/light/tab-basic.gif b/theme_old/light/tab-basic.gif new file mode 100644 index 0000000..bcaf179 Binary files /dev/null and b/theme_old/light/tab-basic.gif differ diff --git a/theme_old/light/tab-disabled.gif b/theme_old/light/tab-disabled.gif new file mode 100644 index 0000000..90d1f45 Binary files /dev/null and b/theme_old/light/tab-disabled.gif differ diff --git a/theme_old/light/tab-hover.gif b/theme_old/light/tab-hover.gif new file mode 100644 index 0000000..37854b9 Binary files /dev/null and b/theme_old/light/tab-hover.gif differ diff --git a/theme_old/light/tick-hor-accent.gif b/theme_old/light/tick-hor-accent.gif new file mode 100644 index 0000000..6b056f2 Binary files /dev/null and b/theme_old/light/tick-hor-accent.gif differ diff --git a/theme_old/light/tick-hor-basic.gif b/theme_old/light/tick-hor-basic.gif new file mode 100644 index 0000000..c647188 Binary files /dev/null and b/theme_old/light/tick-hor-basic.gif differ diff --git a/theme_old/light/tick-hor-hover.gif b/theme_old/light/tick-hor-hover.gif new file mode 100644 index 0000000..c14b3a8 Binary files /dev/null and b/theme_old/light/tick-hor-hover.gif differ diff --git a/theme_old/light/tick-vert-accent.gif b/theme_old/light/tick-vert-accent.gif new file mode 100644 index 0000000..ec073a7 Binary files /dev/null and b/theme_old/light/tick-vert-accent.gif differ diff --git a/theme_old/light/tick-vert-basic.gif b/theme_old/light/tick-vert-basic.gif new file mode 100644 index 0000000..2e7e628 Binary files /dev/null and b/theme_old/light/tick-vert-basic.gif differ diff --git a/theme_old/light/tick-vert-hover.gif b/theme_old/light/tick-vert-hover.gif new file mode 100644 index 0000000..c219703 Binary files /dev/null and b/theme_old/light/tick-vert-hover.gif differ diff --git a/theme_old/light/tree-basic.gif b/theme_old/light/tree-basic.gif new file mode 100644 index 0000000..b8a8aea Binary files /dev/null and b/theme_old/light/tree-basic.gif differ diff --git a/theme_old/light/tree-pressed.gif b/theme_old/light/tree-pressed.gif new file mode 100644 index 0000000..2481168 Binary files /dev/null and b/theme_old/light/tree-pressed.gif differ diff --git a/theme_old/light/up-accent.gif b/theme_old/light/up-accent.gif new file mode 100644 index 0000000..652ccaa Binary files /dev/null and b/theme_old/light/up-accent.gif differ diff --git a/theme_old/light/up.gif b/theme_old/light/up.gif new file mode 100644 index 0000000..0c2dc61 Binary files /dev/null and b/theme_old/light/up.gif differ diff --git a/theme_old/light/vert-accent.gif b/theme_old/light/vert-accent.gif new file mode 100644 index 0000000..533b1ac Binary files /dev/null and b/theme_old/light/vert-accent.gif differ diff --git a/theme_old/light/vert-basic.gif b/theme_old/light/vert-basic.gif new file mode 100644 index 0000000..2380b1a Binary files /dev/null and b/theme_old/light/vert-basic.gif differ diff --git a/theme_old/light/vert-hover.gif b/theme_old/light/vert-hover.gif new file mode 100644 index 0000000..e2b6a65 Binary files /dev/null and b/theme_old/light/vert-hover.gif differ diff --git a/theme_old/sprites_dark.tcl b/theme_old/sprites_dark.tcl new file mode 100644 index 0000000..267b07f --- /dev/null +++ b/theme_old/sprites_dark.tcl @@ -0,0 +1,95 @@ +set ::spriteinfo [list \ + card 0 0 50 50 \ + notebook-border 50 0 40 40 \ + switch-dis 50 40 40 20 \ + switch-focus-hover 0 50 40 20 \ + switch-focus 0 70 40 20 \ + switch-hover 40 60 40 20 \ + switch-off-dis 90 0 40 20 \ + switch-off-focus-hover 90 20 40 20 \ + switch-off-focus 90 40 40 20 \ + switch-off-hover 80 60 40 20 \ + switch-off-pressed 0 90 40 20 \ + switch-off-rest 40 80 40 20 \ + switch-pressed 80 80 40 20 \ + switch-rest 0 110 40 20 \ + tab-hover 130 0 32 32 \ + tab-rest 130 32 32 32 \ + tab-selected 120 64 32 32 \ + heading-hover 40 100 22 22 \ + heading-pressed 62 100 22 22 \ + heading-rest 84 100 22 22 \ + slider-thumb-dis 106 100 22 22 \ + slider-thumb-focus-hover 128 96 22 22 \ + slider-thumb-focus 0 130 22 22 \ + slider-thumb-hover 22 130 22 22 \ + slider-thumb-pressed 44 122 22 22 \ + slider-thumb-rest 66 122 22 22 \ + slider-trough-hor 88 122 22 22 \ + slider-trough-vert 110 122 22 22 \ + button-accent-dis 132 118 20 20 \ + button-accent-focus-hover 0 152 20 20 \ + button-accent-focus 20 152 20 20 \ + button-accent-hover 40 152 20 20 \ + button-accent-pressed 60 144 20 20 \ + button-accent-rest 80 144 20 20 \ + button-dis 100 144 20 20 \ + button-focus-hover 120 144 20 20 \ + button-focus 140 138 20 20 \ + button-hover 162 0 20 20 \ + button-pressed 162 20 20 20 \ + button-rest 162 40 20 20 \ + check-dis 162 60 20 20 \ + check-focus-hover 150 96 20 20 \ + check-focus 152 116 20 20 \ + check-hover 160 136 20 20 \ + check-pressed 0 172 20 20 \ + check-rest 20 172 20 20 \ + check-tri-dis 40 172 20 20 \ + check-tri-focus-hover 160 156 20 20 \ + check-tri-focus 140 158 20 20 \ + check-tri-hover 60 164 20 20 \ + check-tri-pressed 80 164 20 20 \ + check-tri-rest 100 164 20 20 \ + check-unsel-dis 120 164 20 20 \ + check-unsel-focus-hover 182 0 20 20 \ + check-unsel-focus 182 20 20 20 \ + check-unsel-hover 182 40 20 20 \ + check-unsel-pressed 182 60 20 20 \ + check-unsel-rest 180 80 20 20 \ + progressbar-bar-hor 180 100 20 5 \ + progressbar-bar-vert 172 80 5 20 \ + progressbar-trough-hor 152 80 20 5 \ + progressbar-trough-vert 172 100 5 20 \ + radio-dis 180 105 20 20 \ + radio-focus-hover 180 125 20 20 \ + radio-focus 180 145 20 20 \ + radio-hover 180 165 20 20 \ + radio-pressed 160 176 20 20 \ + radio-rest 140 178 20 20 \ + radio-unsel-dis 0 192 20 20 \ + radio-unsel-focus-hover 20 192 20 20 \ + radio-unsel-focus 40 192 20 20 \ + radio-unsel-hover 180 185 20 20 \ + radio-unsel-pressed 60 184 20 20 \ + radio-unsel-rest 80 184 20 20 \ + scrollbar-thumb-hor 160 196 20 12 \ + scrollbar-thumb-vert 100 184 12 20 \ + scrollbar-trough-hor 112 198 20 12 \ + scrollbar-trough-vert 202 0 12 20 \ + textbox-dis 0 212 20 20 \ + textbox-error 20 212 20 20 \ + textbox-focus 40 212 20 20 \ + textbox-hover 60 210 20 20 \ + textbox-rest 80 210 20 20 \ + down 40 50 10 5 \ + empty 152 64 10 10 \ + grip 152 85 10 10 \ + right 162 85 5 10 \ + sep 202 20 10 10 \ + up 40 55 10 5 \ + scrollbar-down 132 138 8 6 \ + scrollbar-left 44 144 6 8 \ + scrollbar-right 50 144 6 8 \ + scrollbar-up 172 120 8 6 \ +] diff --git a/theme_old/sprites_light.tcl b/theme_old/sprites_light.tcl new file mode 100644 index 0000000..2d9150f --- /dev/null +++ b/theme_old/sprites_light.tcl @@ -0,0 +1,97 @@ +set ::spriteinfo [list \ + card 0 0 50 50 \ + notebook-border 50 0 40 40 \ + switch-dis 50 40 40 20 \ + switch-focus-hover 0 50 40 20 \ + switch-focus 0 70 40 20 \ + switch-hover 40 60 40 20 \ + switch-off-dis 90 0 40 20 \ + switch-off-focus-hover 90 20 40 20 \ + switch-off-focus 90 40 40 20 \ + switch-off-hover 80 60 40 20 \ + switch-off-pressed 0 90 40 20 \ + switch-off-rest 40 80 40 20 \ + switch-pressed 80 80 40 20 \ + switch-rest 0 110 40 20 \ + tab-hover 130 0 32 32 \ + tab-rest 130 32 32 32 \ + tab-selected 120 64 32 32 \ + heading-hover 40 100 22 22 \ + heading-pressed 62 100 22 22 \ + heading-rest 84 100 22 22 \ + slider-thumb-dis 106 100 22 22 \ + slider-thumb-focus-hover 128 96 22 22 \ + slider-thumb-focus 0 130 22 22 \ + slider-thumb-hover 22 130 22 22 \ + slider-thumb-pressed 44 122 22 22 \ + slider-thumb-rest 66 122 22 22 \ + slider-trough-hor 88 122 22 22 \ + slider-trough-vert 110 122 22 22 \ + button-accent-dis 132 118 20 20 \ + button-accent-focus-hover 0 152 20 20 \ + button-accent-focus 20 152 20 20 \ + button-accent-hover 40 152 20 20 \ + button-accent-pressed 60 144 20 20 \ + button-accent-rest 80 144 20 20 \ + button-dis 100 144 20 20 \ + button-focus-hover 120 144 20 20 \ + button-focus 140 138 20 20 \ + button-hover 162 0 20 20 \ + button-pressed 162 20 20 20 \ + button-rest 162 40 20 20 \ + check-dis 162 60 20 20 \ + check-focus-hover 150 96 20 20 \ + check-focus 152 116 20 20 \ + check-hover 160 136 20 20 \ + check-pressed 0 172 20 20 \ + check-rest 20 172 20 20 \ + check-tri-dis 40 172 20 20 \ + check-tri-focus-hover 160 156 20 20 \ + check-tri-focus 140 158 20 20 \ + check-tri-hover 60 164 20 20 \ + check-tri-pressed 80 164 20 20 \ + check-tri-rest 100 164 20 20 \ + check-unsel-dis 120 164 20 20 \ + check-unsel-focus-hover 182 0 20 20 \ + check-unsel-focus 182 20 20 20 \ + check-unsel-hover 182 40 20 20 \ + check-unsel-pressed 182 60 20 20 \ + check-unsel-rest 180 80 20 20 \ + g2866 180 100 20 20 \ + g2871 180 120 20 20 \ + progressbar-bar-hor 180 140 20 5 \ + progressbar-bar-vert 172 80 5 20 \ + progressbar-trough-hor 152 80 20 5 \ + progressbar-trough-vert 172 100 5 20 \ + radio-dis 180 145 20 20 \ + radio-focus-hover 180 165 20 20 \ + radio-focus 160 176 20 20 \ + radio-hover 140 178 20 20 \ + radio-pressed 0 192 20 20 \ + radio-rest 20 192 20 20 \ + radio-unsel-dis 40 192 20 20 \ + radio-unsel-focus-hover 180 185 20 20 \ + radio-unsel-focus 60 184 20 20 \ + radio-unsel-hover 80 184 20 20 \ + radio-unsel-pressed 100 184 20 20 \ + radio-unsel-rest 120 184 20 20 \ + scrollbar-thumb-hor 160 196 20 12 \ + scrollbar-thumb-vert 202 0 12 20 \ + scrollbar-trough-hor 140 198 20 12 \ + scrollbar-trough-vert 202 20 12 20 \ + textbox-dis 0 212 20 20 \ + textbox-error 20 212 20 20 \ + textbox-focus 40 212 20 20 \ + textbox-hover 60 210 20 20 \ + textbox-rest 80 210 20 20 \ + down 40 50 10 5 \ + empty 152 64 10 10 \ + grip 152 85 10 10 \ + right 162 85 5 10 \ + sep 202 40 10 10 \ + up 40 55 10 5 \ + scrollbar-down 132 138 8 6 \ + scrollbar-left 44 144 6 8 \ + scrollbar-right 50 144 6 8 \ + scrollbar-up 172 120 8 6 \ +] diff --git a/theme_old/spritesheet_dark.png b/theme_old/spritesheet_dark.png new file mode 100644 index 0000000..1810f25 Binary files /dev/null and b/theme_old/spritesheet_dark.png differ diff --git a/theme_old/spritesheet_light.png b/theme_old/spritesheet_light.png new file mode 100644 index 0000000..1c7bc5d Binary files /dev/null and b/theme_old/spritesheet_light.png differ diff --git a/theme_png/dark.tcl b/theme_png/dark.tcl new file mode 100644 index 0000000..7c5e6bd --- /dev/null +++ b/theme_png/dark.tcl @@ -0,0 +1,537 @@ +# Copyright (c) 2021 rdbende + +# The Azure theme is a beautiful modern ttk theme inspired by Microsoft's fluent design. + +package require Tk 8.6 + +namespace eval ttk::theme::azure-dark { + variable version 2.0 + package provide ttk::theme::azure-dark $version + + ttk::style theme create azure-dark -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]] dark] + + array set colors { + -fg "#ffffff" + -bg "#333333" + -disabledfg "#aaaaaa" + -disabledbg "#737373" + -selectfg "#ffffff" + -selectbg "#007fff" + } + + 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) \ + pressed $I(rect-basic) \ + selected $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) \ + pressed $I(rect-basic) \ + selected $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) \ + pressed $I(rect-accent) \ + selected $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-accent) \ + {active selected} $I(on-accent) \ + selected $I(on-accent) \ + {pressed !selected} $I(off-basic) \ + active $I(off-basic) \ + ] -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 $colors(-selectbg)] \ + -foreground [list selected $colors(-selectfg)] + + # Panedwindow + # Insane hack to remove clam's ugly sash + ttk::style configure Sash -gripcount 0 + } +} diff --git a/theme_png/dark/box-accent.png b/theme_png/dark/box-accent.png new file mode 100644 index 0000000..d0e186b Binary files /dev/null and b/theme_png/dark/box-accent.png differ diff --git a/theme_png/dark/box-basic.png b/theme_png/dark/box-basic.png new file mode 100644 index 0000000..0b28fed Binary files /dev/null and b/theme_png/dark/box-basic.png differ diff --git a/theme_png/dark/box-hover.png b/theme_png/dark/box-hover.png new file mode 100644 index 0000000..3ca7c19 Binary files /dev/null and b/theme_png/dark/box-hover.png differ diff --git a/theme_png/dark/box-invalid.png b/theme_png/dark/box-invalid.png new file mode 100644 index 0000000..f180e94 Binary files /dev/null and b/theme_png/dark/box-invalid.png differ diff --git a/theme_png/dark/button-hover.png b/theme_png/dark/button-hover.png new file mode 100644 index 0000000..300eb09 Binary files /dev/null and b/theme_png/dark/button-hover.png differ diff --git a/theme_png/dark/card.png b/theme_png/dark/card.png new file mode 100644 index 0000000..3978e9f Binary files /dev/null and b/theme_png/dark/card.png differ diff --git a/theme_png/dark/check-accent.png b/theme_png/dark/check-accent.png new file mode 100644 index 0000000..9854ec3 Binary files /dev/null and b/theme_png/dark/check-accent.png differ diff --git a/theme_png/dark/check-basic.png b/theme_png/dark/check-basic.png new file mode 100644 index 0000000..529718e Binary files /dev/null and b/theme_png/dark/check-basic.png differ diff --git a/theme_png/dark/check-hover.png b/theme_png/dark/check-hover.png new file mode 100644 index 0000000..c96c80c Binary files /dev/null and b/theme_png/dark/check-hover.png differ diff --git a/theme_png/dark/check-tri-accent.png b/theme_png/dark/check-tri-accent.png new file mode 100644 index 0000000..c0539f9 Binary files /dev/null and b/theme_png/dark/check-tri-accent.png differ diff --git a/theme_png/dark/check-tri-basic.png b/theme_png/dark/check-tri-basic.png new file mode 100644 index 0000000..d0188f5 Binary files /dev/null and b/theme_png/dark/check-tri-basic.png differ diff --git a/theme_png/dark/check-tri-hover.png b/theme_png/dark/check-tri-hover.png new file mode 100644 index 0000000..ae3e19f Binary files /dev/null and b/theme_png/dark/check-tri-hover.png differ diff --git a/theme_png/dark/circle-accent.png b/theme_png/dark/circle-accent.png new file mode 100644 index 0000000..e9a5ee5 Binary files /dev/null and b/theme_png/dark/circle-accent.png differ diff --git a/theme_png/dark/circle-basic.png b/theme_png/dark/circle-basic.png new file mode 100644 index 0000000..85f2bac Binary files /dev/null and b/theme_png/dark/circle-basic.png differ diff --git a/theme_png/dark/circle-hover.png b/theme_png/dark/circle-hover.png new file mode 100644 index 0000000..b439cd6 Binary files /dev/null and b/theme_png/dark/circle-hover.png differ diff --git a/theme_png/dark/combo-button-basic.png b/theme_png/dark/combo-button-basic.png new file mode 100644 index 0000000..4aef1b2 Binary files /dev/null and b/theme_png/dark/combo-button-basic.png differ diff --git a/theme_png/dark/combo-button-focus.png b/theme_png/dark/combo-button-focus.png new file mode 100644 index 0000000..5b1e0ff Binary files /dev/null and b/theme_png/dark/combo-button-focus.png differ diff --git a/theme_png/dark/combo-button-hover.png b/theme_png/dark/combo-button-hover.png new file mode 100644 index 0000000..493cf52 Binary files /dev/null and b/theme_png/dark/combo-button-hover.png differ diff --git a/theme_png/dark/down-accent.png b/theme_png/dark/down-accent.png new file mode 100644 index 0000000..5bb987d Binary files /dev/null and b/theme_png/dark/down-accent.png differ diff --git a/theme_png/dark/down.png b/theme_png/dark/down.png new file mode 100644 index 0000000..d83f92d Binary files /dev/null and b/theme_png/dark/down.png differ diff --git a/theme_png/dark/empty.png b/theme_png/dark/empty.png new file mode 100644 index 0000000..202e3de Binary files /dev/null and b/theme_png/dark/empty.png differ diff --git a/theme_png/dark/hor-accent.png b/theme_png/dark/hor-accent.png new file mode 100644 index 0000000..e59a1c6 Binary files /dev/null and b/theme_png/dark/hor-accent.png differ diff --git a/theme_png/dark/hor-basic.png b/theme_png/dark/hor-basic.png new file mode 100644 index 0000000..bbc2e50 Binary files /dev/null and b/theme_png/dark/hor-basic.png differ diff --git a/theme_png/dark/hor-hover.png b/theme_png/dark/hor-hover.png new file mode 100644 index 0000000..56216f4 Binary files /dev/null and b/theme_png/dark/hor-hover.png differ diff --git a/theme_png/dark/notebook.png b/theme_png/dark/notebook.png new file mode 100644 index 0000000..5b937c1 Binary files /dev/null and b/theme_png/dark/notebook.png differ diff --git a/theme_png/dark/off-basic.png b/theme_png/dark/off-basic.png new file mode 100644 index 0000000..2ca539a Binary files /dev/null and b/theme_png/dark/off-basic.png differ diff --git a/theme_png/dark/on-accent.png b/theme_png/dark/on-accent.png new file mode 100644 index 0000000..4a33465 Binary files /dev/null and b/theme_png/dark/on-accent.png differ diff --git a/theme_png/dark/on-basic.png b/theme_png/dark/on-basic.png new file mode 100644 index 0000000..9dce6a5 Binary files /dev/null and b/theme_png/dark/on-basic.png differ diff --git a/theme_png/dark/outline-basic.png b/theme_png/dark/outline-basic.png new file mode 100644 index 0000000..2f76a1b Binary files /dev/null and b/theme_png/dark/outline-basic.png differ diff --git a/theme_png/dark/outline-hover.png b/theme_png/dark/outline-hover.png new file mode 100644 index 0000000..7ce5290 Binary files /dev/null and b/theme_png/dark/outline-hover.png differ diff --git a/theme_png/dark/radio-accent.png b/theme_png/dark/radio-accent.png new file mode 100644 index 0000000..c34e4a8 Binary files /dev/null and b/theme_png/dark/radio-accent.png differ diff --git a/theme_png/dark/radio-basic.png b/theme_png/dark/radio-basic.png new file mode 100644 index 0000000..f9b55a6 Binary files /dev/null and b/theme_png/dark/radio-basic.png differ diff --git a/theme_png/dark/radio-hover.png b/theme_png/dark/radio-hover.png new file mode 100644 index 0000000..4f3eab8 Binary files /dev/null and b/theme_png/dark/radio-hover.png differ diff --git a/theme_png/dark/radio-tri-accent.png b/theme_png/dark/radio-tri-accent.png new file mode 100644 index 0000000..8084141 Binary files /dev/null and b/theme_png/dark/radio-tri-accent.png differ diff --git a/theme_png/dark/radio-tri-basic.png b/theme_png/dark/radio-tri-basic.png new file mode 100644 index 0000000..def9e27 Binary files /dev/null and b/theme_png/dark/radio-tri-basic.png differ diff --git a/theme_png/dark/radio-tri-hover.png b/theme_png/dark/radio-tri-hover.png new file mode 100644 index 0000000..86f1b59 Binary files /dev/null and b/theme_png/dark/radio-tri-hover.png differ diff --git a/theme_png/dark/rect-accent-hover.png b/theme_png/dark/rect-accent-hover.png new file mode 100644 index 0000000..bb49129 Binary files /dev/null and b/theme_png/dark/rect-accent-hover.png differ diff --git a/theme_png/dark/rect-accent.png b/theme_png/dark/rect-accent.png new file mode 100644 index 0000000..5e7c72c Binary files /dev/null and b/theme_png/dark/rect-accent.png differ diff --git a/theme_png/dark/rect-basic.png b/theme_png/dark/rect-basic.png new file mode 100644 index 0000000..8ab4d10 Binary files /dev/null and b/theme_png/dark/rect-basic.png differ diff --git a/theme_png/dark/rect-hover.png b/theme_png/dark/rect-hover.png new file mode 100644 index 0000000..b9e4c35 Binary files /dev/null and b/theme_png/dark/rect-hover.png differ diff --git a/theme_png/dark/right.png b/theme_png/dark/right.png new file mode 100644 index 0000000..bc840c2 Binary files /dev/null and b/theme_png/dark/right.png differ diff --git a/theme_png/dark/scale-hor.png b/theme_png/dark/scale-hor.png new file mode 100644 index 0000000..570530e Binary files /dev/null and b/theme_png/dark/scale-hor.png differ diff --git a/theme_png/dark/scale-vert.png b/theme_png/dark/scale-vert.png new file mode 100644 index 0000000..c6fcf6f Binary files /dev/null and b/theme_png/dark/scale-vert.png differ diff --git a/theme_png/dark/separator.png b/theme_png/dark/separator.png new file mode 100644 index 0000000..411c970 Binary files /dev/null and b/theme_png/dark/separator.png differ diff --git a/theme_png/dark/size.png b/theme_png/dark/size.png new file mode 100644 index 0000000..51c682e Binary files /dev/null and b/theme_png/dark/size.png differ diff --git a/theme_png/dark/tab-basic.png b/theme_png/dark/tab-basic.png new file mode 100644 index 0000000..6db676b Binary files /dev/null and b/theme_png/dark/tab-basic.png differ diff --git a/theme_png/dark/tab-disabled.png b/theme_png/dark/tab-disabled.png new file mode 100644 index 0000000..736c438 Binary files /dev/null and b/theme_png/dark/tab-disabled.png differ diff --git a/theme_png/dark/tab-hover.png b/theme_png/dark/tab-hover.png new file mode 100644 index 0000000..213e82b Binary files /dev/null and b/theme_png/dark/tab-hover.png differ diff --git a/theme_png/dark/tick-hor-accent.png b/theme_png/dark/tick-hor-accent.png new file mode 100644 index 0000000..b7c28dd Binary files /dev/null and b/theme_png/dark/tick-hor-accent.png differ diff --git a/theme_png/dark/tick-hor-basic.png b/theme_png/dark/tick-hor-basic.png new file mode 100644 index 0000000..ee4b441 Binary files /dev/null and b/theme_png/dark/tick-hor-basic.png differ diff --git a/theme_png/dark/tick-hor-hover.png b/theme_png/dark/tick-hor-hover.png new file mode 100644 index 0000000..bc859f4 Binary files /dev/null and b/theme_png/dark/tick-hor-hover.png differ diff --git a/theme_png/dark/tick-vert-accent.png b/theme_png/dark/tick-vert-accent.png new file mode 100644 index 0000000..da4f481 Binary files /dev/null and b/theme_png/dark/tick-vert-accent.png differ diff --git a/theme_png/dark/tick-vert-basic.png b/theme_png/dark/tick-vert-basic.png new file mode 100644 index 0000000..9e0a5ee Binary files /dev/null and b/theme_png/dark/tick-vert-basic.png differ diff --git a/theme_png/dark/tick-vert-hover.png b/theme_png/dark/tick-vert-hover.png new file mode 100644 index 0000000..e9ff3a3 Binary files /dev/null and b/theme_png/dark/tick-vert-hover.png differ diff --git a/theme_png/dark/tree-basic.png b/theme_png/dark/tree-basic.png new file mode 100644 index 0000000..c71808d Binary files /dev/null and b/theme_png/dark/tree-basic.png differ diff --git a/theme_png/dark/tree-pressed.png b/theme_png/dark/tree-pressed.png new file mode 100644 index 0000000..96d3a53 Binary files /dev/null and b/theme_png/dark/tree-pressed.png differ diff --git a/theme_png/dark/up-accent.png b/theme_png/dark/up-accent.png new file mode 100644 index 0000000..54a20f8 Binary files /dev/null and b/theme_png/dark/up-accent.png differ diff --git a/theme_png/dark/up.png b/theme_png/dark/up.png new file mode 100644 index 0000000..069d440 Binary files /dev/null and b/theme_png/dark/up.png differ diff --git a/theme_png/dark/vert-accent.png b/theme_png/dark/vert-accent.png new file mode 100644 index 0000000..1c228fd Binary files /dev/null and b/theme_png/dark/vert-accent.png differ diff --git a/theme_png/dark/vert-basic.png b/theme_png/dark/vert-basic.png new file mode 100644 index 0000000..4f6c46e Binary files /dev/null and b/theme_png/dark/vert-basic.png differ diff --git a/theme_png/dark/vert-hover.png b/theme_png/dark/vert-hover.png new file mode 100644 index 0000000..142ccce Binary files /dev/null and b/theme_png/dark/vert-hover.png differ diff --git a/theme_png/light.tcl b/theme_png/light.tcl new file mode 100644 index 0000000..69667b4 --- /dev/null +++ b/theme_png/light.tcl @@ -0,0 +1,537 @@ +# Copyright (c) 2021 rdbende + +# The Azure theme is a beautiful modern ttk theme inspired by Microsoft's fluent design. + +package require Tk 8.6 + +namespace eval ttk::theme::azure-light { + variable version 2.0 + package provide ttk::theme::azure-light $version + + ttk::style theme create azure-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 "#ffffff" + -selectbg "#007fff" + } + + 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/theme_png/light/box-accent.png b/theme_png/light/box-accent.png new file mode 100644 index 0000000..89f1faf Binary files /dev/null and b/theme_png/light/box-accent.png differ diff --git a/theme_png/light/box-basic.png b/theme_png/light/box-basic.png new file mode 100644 index 0000000..090a00b Binary files /dev/null and b/theme_png/light/box-basic.png differ diff --git a/theme_png/light/box-hover.png b/theme_png/light/box-hover.png new file mode 100644 index 0000000..e691da4 Binary files /dev/null and b/theme_png/light/box-hover.png differ diff --git a/theme_png/light/box-invalid.png b/theme_png/light/box-invalid.png new file mode 100644 index 0000000..1f16f5c Binary files /dev/null and b/theme_png/light/box-invalid.png differ diff --git a/theme_png/light/button-hover.png b/theme_png/light/button-hover.png new file mode 100644 index 0000000..13366eb Binary files /dev/null and b/theme_png/light/button-hover.png differ diff --git a/theme_png/light/card.png b/theme_png/light/card.png new file mode 100644 index 0000000..09152f5 Binary files /dev/null and b/theme_png/light/card.png differ diff --git a/theme_png/light/check-accent.png b/theme_png/light/check-accent.png new file mode 100644 index 0000000..4aea79b Binary files /dev/null and b/theme_png/light/check-accent.png differ diff --git a/theme_png/light/check-basic.png b/theme_png/light/check-basic.png new file mode 100644 index 0000000..0c00612 Binary files /dev/null and b/theme_png/light/check-basic.png differ diff --git a/theme_png/light/check-hover.png b/theme_png/light/check-hover.png new file mode 100644 index 0000000..3811696 Binary files /dev/null and b/theme_png/light/check-hover.png differ diff --git a/theme_png/light/check-tri-accent.png b/theme_png/light/check-tri-accent.png new file mode 100644 index 0000000..d6baad5 Binary files /dev/null and b/theme_png/light/check-tri-accent.png differ diff --git a/theme_png/light/check-tri-basic.png b/theme_png/light/check-tri-basic.png new file mode 100644 index 0000000..e92bea5 Binary files /dev/null and b/theme_png/light/check-tri-basic.png differ diff --git a/theme_png/light/check-tri-hover.png b/theme_png/light/check-tri-hover.png new file mode 100644 index 0000000..d611d76 Binary files /dev/null and b/theme_png/light/check-tri-hover.png differ diff --git a/theme_png/light/circle-accent.png b/theme_png/light/circle-accent.png new file mode 100644 index 0000000..ea76e7a Binary files /dev/null and b/theme_png/light/circle-accent.png differ diff --git a/theme_png/light/circle-basic.png b/theme_png/light/circle-basic.png new file mode 100644 index 0000000..b16202e Binary files /dev/null and b/theme_png/light/circle-basic.png differ diff --git a/theme_png/light/circle-hover.png b/theme_png/light/circle-hover.png new file mode 100644 index 0000000..6ea1803 Binary files /dev/null and b/theme_png/light/circle-hover.png differ diff --git a/theme_png/light/combo-button-basic.png b/theme_png/light/combo-button-basic.png new file mode 100644 index 0000000..b7daa04 Binary files /dev/null and b/theme_png/light/combo-button-basic.png differ diff --git a/theme_png/light/combo-button-focus.png b/theme_png/light/combo-button-focus.png new file mode 100644 index 0000000..59c7db4 Binary files /dev/null and b/theme_png/light/combo-button-focus.png differ diff --git a/theme_png/light/combo-button-hover.png b/theme_png/light/combo-button-hover.png new file mode 100644 index 0000000..1d06c57 Binary files /dev/null and b/theme_png/light/combo-button-hover.png differ diff --git a/theme_png/light/down-accent.png b/theme_png/light/down-accent.png new file mode 100644 index 0000000..5bb987d Binary files /dev/null and b/theme_png/light/down-accent.png differ diff --git a/theme_png/light/down.png b/theme_png/light/down.png new file mode 100644 index 0000000..1fd7e4f Binary files /dev/null and b/theme_png/light/down.png differ diff --git a/theme_png/light/empty.png b/theme_png/light/empty.png new file mode 100644 index 0000000..202e3de Binary files /dev/null and b/theme_png/light/empty.png differ diff --git a/theme_png/light/hor-accent.png b/theme_png/light/hor-accent.png new file mode 100644 index 0000000..145b10e Binary files /dev/null and b/theme_png/light/hor-accent.png differ diff --git a/theme_png/light/hor-basic.png b/theme_png/light/hor-basic.png new file mode 100644 index 0000000..eb18d1e Binary files /dev/null and b/theme_png/light/hor-basic.png differ diff --git a/theme_png/light/hor-hover.png b/theme_png/light/hor-hover.png new file mode 100644 index 0000000..4d6c0f1 Binary files /dev/null and b/theme_png/light/hor-hover.png differ diff --git a/theme_png/light/notebook.png b/theme_png/light/notebook.png new file mode 100644 index 0000000..430d9f2 Binary files /dev/null and b/theme_png/light/notebook.png differ diff --git a/theme_png/light/off-basic.png b/theme_png/light/off-basic.png new file mode 100644 index 0000000..cf383f0 Binary files /dev/null and b/theme_png/light/off-basic.png differ diff --git a/theme_png/light/off-hover.png b/theme_png/light/off-hover.png new file mode 100644 index 0000000..893b39c Binary files /dev/null and b/theme_png/light/off-hover.png differ diff --git a/theme_png/light/on-accent.png b/theme_png/light/on-accent.png new file mode 100644 index 0000000..f5a86c9 Binary files /dev/null and b/theme_png/light/on-accent.png differ diff --git a/theme_png/light/on-basic.png b/theme_png/light/on-basic.png new file mode 100644 index 0000000..23ec72f Binary files /dev/null and b/theme_png/light/on-basic.png differ diff --git a/theme_png/light/on-hover.png b/theme_png/light/on-hover.png new file mode 100644 index 0000000..d55f7ae Binary files /dev/null and b/theme_png/light/on-hover.png differ diff --git a/theme_png/light/outline-basic.png b/theme_png/light/outline-basic.png new file mode 100644 index 0000000..2e79874 Binary files /dev/null and b/theme_png/light/outline-basic.png differ diff --git a/theme_png/light/outline-hover.png b/theme_png/light/outline-hover.png new file mode 100644 index 0000000..502915d Binary files /dev/null and b/theme_png/light/outline-hover.png differ diff --git a/theme_png/light/radio-accent.png b/theme_png/light/radio-accent.png new file mode 100644 index 0000000..1f7329d Binary files /dev/null and b/theme_png/light/radio-accent.png differ diff --git a/theme_png/light/radio-basic.png b/theme_png/light/radio-basic.png new file mode 100644 index 0000000..793531e Binary files /dev/null and b/theme_png/light/radio-basic.png differ diff --git a/theme_png/light/radio-hover.png b/theme_png/light/radio-hover.png new file mode 100644 index 0000000..d6faa74 Binary files /dev/null and b/theme_png/light/radio-hover.png differ diff --git a/theme_png/light/radio-tri-accent.png b/theme_png/light/radio-tri-accent.png new file mode 100644 index 0000000..86dd4cb Binary files /dev/null and b/theme_png/light/radio-tri-accent.png differ diff --git a/theme_png/light/radio-tri-basic.png b/theme_png/light/radio-tri-basic.png new file mode 100644 index 0000000..da85d03 Binary files /dev/null and b/theme_png/light/radio-tri-basic.png differ diff --git a/theme_png/light/radio-tri-hover.png b/theme_png/light/radio-tri-hover.png new file mode 100644 index 0000000..ded14a6 Binary files /dev/null and b/theme_png/light/radio-tri-hover.png differ diff --git a/theme_png/light/rect-accent-hover.png b/theme_png/light/rect-accent-hover.png new file mode 100644 index 0000000..5daa96a Binary files /dev/null and b/theme_png/light/rect-accent-hover.png differ diff --git a/theme_png/light/rect-accent.png b/theme_png/light/rect-accent.png new file mode 100644 index 0000000..2d08674 Binary files /dev/null and b/theme_png/light/rect-accent.png differ diff --git a/theme_png/light/rect-basic.png b/theme_png/light/rect-basic.png new file mode 100644 index 0000000..239ca31 Binary files /dev/null and b/theme_png/light/rect-basic.png differ diff --git a/theme_png/light/rect-hover.png b/theme_png/light/rect-hover.png new file mode 100644 index 0000000..9252c4f Binary files /dev/null and b/theme_png/light/rect-hover.png differ diff --git a/theme_png/light/right.png b/theme_png/light/right.png new file mode 100644 index 0000000..8122cc9 Binary files /dev/null and b/theme_png/light/right.png differ diff --git a/theme_png/light/scale-hor.png b/theme_png/light/scale-hor.png new file mode 100644 index 0000000..d11f508 Binary files /dev/null and b/theme_png/light/scale-hor.png differ diff --git a/theme_png/light/scale-vert.png b/theme_png/light/scale-vert.png new file mode 100644 index 0000000..f78595d Binary files /dev/null and b/theme_png/light/scale-vert.png differ diff --git a/theme_png/light/separator.png b/theme_png/light/separator.png new file mode 100644 index 0000000..7bffc9a Binary files /dev/null and b/theme_png/light/separator.png differ diff --git a/theme_png/light/size.png b/theme_png/light/size.png new file mode 100644 index 0000000..bde3ade Binary files /dev/null and b/theme_png/light/size.png differ diff --git a/theme_png/light/tab-basic.png b/theme_png/light/tab-basic.png new file mode 100644 index 0000000..365fdff Binary files /dev/null and b/theme_png/light/tab-basic.png differ diff --git a/theme_png/light/tab-disabled.png b/theme_png/light/tab-disabled.png new file mode 100644 index 0000000..eeee518 Binary files /dev/null and b/theme_png/light/tab-disabled.png differ diff --git a/theme_png/light/tab-hover.png b/theme_png/light/tab-hover.png new file mode 100644 index 0000000..5003806 Binary files /dev/null and b/theme_png/light/tab-hover.png differ diff --git a/theme_png/light/tick-hor-accent.png b/theme_png/light/tick-hor-accent.png new file mode 100644 index 0000000..6940b1c Binary files /dev/null and b/theme_png/light/tick-hor-accent.png differ diff --git a/theme_png/light/tick-hor-basic.png b/theme_png/light/tick-hor-basic.png new file mode 100644 index 0000000..ba727d7 Binary files /dev/null and b/theme_png/light/tick-hor-basic.png differ diff --git a/theme_png/light/tick-hor-hover.png b/theme_png/light/tick-hor-hover.png new file mode 100644 index 0000000..cb66b59 Binary files /dev/null and b/theme_png/light/tick-hor-hover.png differ diff --git a/theme_png/light/tick-vert-accent.png b/theme_png/light/tick-vert-accent.png new file mode 100644 index 0000000..dfdb89c Binary files /dev/null and b/theme_png/light/tick-vert-accent.png differ diff --git a/theme_png/light/tick-vert-basic.png b/theme_png/light/tick-vert-basic.png new file mode 100644 index 0000000..a58440d Binary files /dev/null and b/theme_png/light/tick-vert-basic.png differ diff --git a/theme_png/light/tick-vert-hover.png b/theme_png/light/tick-vert-hover.png new file mode 100644 index 0000000..18cbec5 Binary files /dev/null and b/theme_png/light/tick-vert-hover.png differ diff --git a/theme_png/light/tree-basic.png b/theme_png/light/tree-basic.png new file mode 100644 index 0000000..755062b Binary files /dev/null and b/theme_png/light/tree-basic.png differ diff --git a/theme_png/light/tree-pressed.png b/theme_png/light/tree-pressed.png new file mode 100644 index 0000000..ee28416 Binary files /dev/null and b/theme_png/light/tree-pressed.png differ diff --git a/theme_png/light/up-accent.png b/theme_png/light/up-accent.png new file mode 100644 index 0000000..54a20f8 Binary files /dev/null and b/theme_png/light/up-accent.png differ diff --git a/theme_png/light/up.png b/theme_png/light/up.png new file mode 100644 index 0000000..16568f2 Binary files /dev/null and b/theme_png/light/up.png differ diff --git a/theme_png/light/vert-accent.png b/theme_png/light/vert-accent.png new file mode 100644 index 0000000..7f87bdc Binary files /dev/null and b/theme_png/light/vert-accent.png differ diff --git a/theme_png/light/vert-basic.png b/theme_png/light/vert-basic.png new file mode 100644 index 0000000..d5f61ec Binary files /dev/null and b/theme_png/light/vert-basic.png differ diff --git a/theme_png/light/vert-hover.png b/theme_png/light/vert-hover.png new file mode 100644 index 0000000..bfdc9d0 Binary files /dev/null and b/theme_png/light/vert-hover.png differ