commit b19d93a23765c0dc95f9460fcc0780c21989525b Author: William Henderson Date: Thu Jul 10 15:47:38 2025 +0100 V1.0 diff --git a/Dante Tester V1.0.exe b/Dante Tester V1.0.exe new file mode 100644 index 0000000..56350fe Binary files /dev/null and b/Dante Tester V1.0.exe differ diff --git a/Dante/.vs/Dante/FileContentIndex/39a73f9e-0598-4f82-8a80-32984fb360f5.vsidx b/Dante/.vs/Dante/FileContentIndex/39a73f9e-0598-4f82-8a80-32984fb360f5.vsidx new file mode 100644 index 0000000..58ea58e Binary files /dev/null and b/Dante/.vs/Dante/FileContentIndex/39a73f9e-0598-4f82-8a80-32984fb360f5.vsidx differ diff --git a/Dante/.vs/Dante/v17/.suo b/Dante/.vs/Dante/v17/.suo new file mode 100644 index 0000000..cb3087f Binary files /dev/null and b/Dante/.vs/Dante/v17/.suo differ diff --git a/Dante/.vs/Dante/v17/DocumentLayout.backup.json b/Dante/.vs/Dante/v17/DocumentLayout.backup.json new file mode 100644 index 0000000..075648c --- /dev/null +++ b/Dante/.vs/Dante/v17/DocumentLayout.backup.json @@ -0,0 +1,45 @@ +{ + "Version": 1, + "WorkspaceRootPath": "C:\\Users\\William\\Documents\\HawkEye\\Dante Tones\\Dante\\", + "Documents": [ + { + "AbsoluteMoniker": "D:0:0:{5E5BA753-ACEA-4DC7-912D-3CFCF80D955C}|Dante.pyproj|C:\\Users\\William\\Documents\\HawkEye\\Dante Tones\\Dante\\Dante.py||{8B382828-6202-11D1-8870-0000F87579D2}", + "RelativeMoniker": "D:0:0:{5E5BA753-ACEA-4DC7-912D-3CFCF80D955C}|Dante.pyproj|solutionrelative:Dante.py||{8B382828-6202-11D1-8870-0000F87579D2}" + } + ], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 209, + "SelectedChildIndex": 2, + "Children": [ + { + "$type": "Bookmark", + "Name": "ST:0:0:{e506b91c-c606-466a-90a9-123d1d1e12b3}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{cce594b6-0c39-4442-ba28-10c64ac7e89f}" + }, + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "Dante.py", + "DocumentMoniker": "C:\\Users\\William\\Documents\\HawkEye\\Dante Tones\\Dante\\Dante.py", + "RelativeDocumentMoniker": "Dante.py", + "ToolTip": "C:\\Users\\William\\Documents\\HawkEye\\Dante Tones\\Dante\\Dante.py", + "RelativeToolTip": "Dante.py", + "ViewState": "AgIAAAIAAAAAAAAAAAAowBAAAABSAAAAAAAAAA==", + "Icon": "00000000-0000-0000-0000-000000000000.000000|iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHfSURBVDhPpZCxaxNhGMZ/9zVJaUuDUlq1FBWLZBFTCXo4BFyU1qGKi4OkIHhkzF/g0KF00M2lR9YUdDDQQVAcJILoQUd1UNRmkhoRm8RL777v7nOoCZd4AcEH3uF5nvd73vd74X\u002BgtTai3LIsHeWDEEJct217a1DvwbIs7bpubFUqFW3b9naxWLwWfSOipAvHcfqqi0KhkMtms3cty1rsaomeG4FpmoMSANVqlXQ6nQMWgacMC4hOBchduEj\u002ByjKjScGh8SS1Wq3nxQZEN3j1eY/Vrfe8rTeQvsf89ARLS1cz5XIZ/uUGXxptQiVRUhJIybudXaZn52a7vbEBpmkyNb/A69YM9W8tDEJOTI2hpI\u002BSkvOZH2f13sNAB\u002B07sV9wHIdH9Unquz9RvoeUPtL3UFISKkky\u002BAT7HwTi6FpsgGma3N9\u002Bg5I\u002BKaFZyU8wOpJChwHnjiuE9wKCXyC/zsQGOI7DeELjtiUPbgky6Wd/HA3KBelC4AIpNfQGl88cQ0mfI5PugRhKkM2DUk0INYwtPI/dAGAlf4rbl06T6DyBVgeCABJzYPhwcm0V8ICNvwJKpVIf37h3IxSyKVAuBMDIYQAMw1jvaxwGrYNl3Xq5o79vat3Y3Nedj4\u002B11je7/m\u002BXOuyzFtDhUgAAAABJRU5ErkJggg==", + "WhenOpened": "2025-02-14T16:33:07.888Z", + "EditorCaption": "" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Dante/.vs/Dante/v17/DocumentLayout.json b/Dante/.vs/Dante/v17/DocumentLayout.json new file mode 100644 index 0000000..205cb87 --- /dev/null +++ b/Dante/.vs/Dante/v17/DocumentLayout.json @@ -0,0 +1,41 @@ +{ + "Version": 1, + "WorkspaceRootPath": "C:\\Users\\William\\Documents\\HawkEye\\Dante Tones\\Dante\\", + "Documents": [ + { + "AbsoluteMoniker": "D:0:0:{5E5BA753-ACEA-4DC7-912D-3CFCF80D955C}|Dante.pyproj|C:\\Users\\William\\Documents\\HawkEye\\Dante Tones\\Dante\\Dante.py||{8B382828-6202-11D1-8870-0000F87579D2}", + "RelativeMoniker": "D:0:0:{5E5BA753-ACEA-4DC7-912D-3CFCF80D955C}|Dante.pyproj|solutionrelative:Dante.py||{8B382828-6202-11D1-8870-0000F87579D2}" + } + ], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 209, + "SelectedChildIndex": 1, + "Children": [ + { + "$type": "Bookmark", + "Name": "ST:0:0:{e506b91c-c606-466a-90a9-123d1d1e12b3}" + }, + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "Dante.py", + "DocumentMoniker": "C:\\Users\\William\\Documents\\HawkEye\\Dante Tones\\Dante\\Dante.py", + "RelativeDocumentMoniker": "Dante.py", + "ToolTip": "C:\\Users\\William\\Documents\\HawkEye\\Dante Tones\\Dante\\Dante.py", + "RelativeToolTip": "Dante.py", + "ViewState": "AgIAAAIAAAAAAAAAAAAowBAAAABSAAAAAAAAAA==", + "Icon": "00000000-0000-0000-0000-000000000000.000000|iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd\u002BUAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAUqSURBVEhLvZbRb1RVHsc/5947l3ZaZ6YtbUkVOwxMmlpWhGhCspIASVfTZPvgCxsxGn0xGUkMpvKyf8AmbLJRnzS8sESiWfABE6xEgmsq6mIt6KYpBYemFtthWqaUTtuZe\u002B85v30YatrLOBgf9pt8c3N/55zfJ7/fvefcC/9PiYgKxwCi0ejDjuNEw/EHSAO5u3fvLocH1qoqsK\u002Bv7/zevXv3O44THqqqfD5PsVic9Tzv7\u002BfOnXtvcnJyMTxnVb8KPHbs2P5EIhEeqqqzZ8\u002BysLBwJ5/P356YmDg\u002BNDT01vj4\u002BFJ4HoAVDvxebd26NdHf39\u002BcTCYP7t69e6Cnp6chPAfADgcA0un0i/39/Vtc1\u002BXq1avMzc3d50KhQHNzM0oprl\u002B/TjQapaenpz6VSm2Ynp7e6Lpuu9b60uzsrL829wMrTCaTVd3Z2YlS9z\u002BRTZs2PXTw4MGuVCrVl0gkMuHxmkClFK7r/qpXZVkWp06d4siRIwwMDHD06NGGXC63C0itSwjUfA1FhNHR0XAYANu26e7uRilFb28v\u002B/btWzeezWY5fPjwuhi/pcLt27dXdXd3N7ZtY1B4YlEWB48IOC7RaHRdB9aqJhBgZmamqktlj7HcMh9fzvHBNz9x4ssJTgxlef/LLJ9euYknNi0tLeF0tYEiguM4VR0oh9PDU0zNLzF8Y47PfrjJ4Mgkp7/6kffO/Zeh7AKP79gRTlkbqJSira2tqsvGYqawTGpjA/E6B6M1YgKM1iwUVxifWeSFl16xDxw4sG7r1QSKCCMjI1Xta0NufpETX1xjbOo2Wmt0YDBao41GB5q29k1WR0fHOuD9G2nN0RaPxzHGwL1qA6PI3i4xM7\u002BMrw0rZR9jNMYIN3J3uDg6xd3lEkZrHn80xj9e7iIWKYDTfhu3828bWzvefiCwWCziOA6\u002Bcvnw25/5fDRH2Qsw2icIKi3U2scEGq0DdKAxQcCOznreeUloMN\u002BBWBA7oIk\u002B2ffAlt66dYtCocDoVIEfJucpez7G\u002BGgdVKrTq9DK1egAIwG2Mth4YDToZSh\u002BYQOv1gQqpUilUmzevJlFX1FYXKkkDHQl\u002BWqFq/daY4wmXu\u002BypzuKa26CLlVcugqin67Z0lgsRjabJR6P8/W04fi/r6O1jw4ClAi7kg\u002BxJw0b7DIics\u002BGeN0Sf2idJGZNgCmDeKA9SP5TalZI5TAmkUhgK1AYTGAw2pBur\u002BPN3jx96a/o3fotf9o2zDPp73h22yX\u002B\u002BPAwMSsLegXMvQp1GVRE1QQqpWhsbKSuro6maIRG10JLpW19O1tojVzGYQFLFrHMAlYwhxXMgj8fgpUg0gEqcq0mUES4cuUKY2NjtNYLyZYGlA7QOqApalAYEKm8GMGa5LpUAepSJW40NO41KPV\u002BTaBlWezcuZOuri66O9t5bvcW9jzWwa5UK/GGDSAGjA9mBRBQDaBiYMXAaYUNXVC/HeLPlmh6ZuTChQvv1vw8rZXWml1bWnhqWxsAjuRgtlwBag\u002BsOrCbwIpU4M5GaHnhGnbDxcHBwdzk5L9OZzKZuZoVhmWMwfd9fN\u002BvnIprW\u002BjloTgMlgtOK7L0PSLBxTNnzrx26NChv2YymcvU\u002BgCfPHmSWr\u002BJz//lz7TZreDfAOOB9kHKUJ6DCBjnkfmzn1wYfeONgdLExMQv66ruw9/yIzw7m38iYm6\u002By53BJoqXwJsGDLhpJL5fTOO\u002B/xw7/tHLmUxmPLz2d6m5uVmJSFpE3haRH0XEE5ElEflaRF4/f/58LLwG4H9\u002BJsjcTp8b4QAAAABJRU5ErkJggg==", + "WhenOpened": "2025-02-14T16:33:07.888Z", + "EditorCaption": "" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Dante/Dante.py b/Dante/Dante.py new file mode 100644 index 0000000..3f4b95d --- /dev/null +++ b/Dante/Dante.py @@ -0,0 +1,121 @@ +import sounddevice as sd +import numpy as np +import threading +import tkinter as tk +from tkinter import ttk +import re + +playing_threads = {} + +def list_dante_devices(): + """List all unique Dante Virtual Soundcard output devices sorted by channel order.""" + devices = sd.query_devices() + seen = {} + + for d in devices: + if "DVS Transmit" in d['name'] and d['max_output_channels'] == 2: + match = re.search(r'(\d+)-', d['name']) # Extract first number before '-' + if match: + channel_number = int(match.group(1)) + if channel_number not in seen: + seen[channel_number] = d + + return [seen[key] for key in sorted(seen.keys())] + +def generate_tone(frequency=440, sample_rate=48000): + """Generate a continuous sine wave tone.""" + t = np.linspace(0, 1, sample_rate, False) + wave = 0.5 * np.sin(2 * np.pi * frequency * t) + return wave.astype(np.float32) + +def play_sound_on_device(device_index, channel, frequency=440, sample_rate=48000): + """Continuously play a sine wave on a specific stereo Dante Virtual Soundcard channel using OutputStream.""" + if channel not in [1, 2]: + print("Invalid channel. Must be 1 (Left) or 2 (Right).") + return + + tone = generate_tone(frequency, sample_rate) + output = np.zeros((len(tone), 2), dtype=np.float32) # Stereo output + output[:, channel - 1] = tone # Assign tone to the selected channel + + def callback(outdata, frames, time, status): + if status: + print(status) + outdata[:frames] = output[:frames] + + stream = sd.OutputStream(device=device_index, samplerate=sample_rate, channels=2, callback=callback) + playing_threads[(device_index, channel)] = stream + stream.start() + +def stop_sound(device_index, channel): + """Stop playing sound on a given device and channel.""" + stream = playing_threads.pop((device_index, channel), None) + if stream: + stream.stop() + stream.close() + +def stop_all_sounds(): + """Stop all currently playing sounds.""" + for key in list(playing_threads.keys()): + stop_sound(*key) + +def play_all_sounds(frequency): + """Play sound on all available Dante channels.""" + devices = list_dante_devices() + for device in devices: + for channel in [1, 2]: + play_sound_on_device(device['index'], channel, frequency) + +def start_gui(): + devices = list_dante_devices() + root = tk.Tk() + root.title("Dante Virtual Soundcard Player") + + frame = ttk.Frame(root) + frame.pack(padx=10, pady=10) + + ttk.Label(frame, text="Frequency (Hz):").grid(row=0, column=1) + frequency_entry = ttk.Entry(frame) + frequency_entry.grid(row=0, column=2) + frequency_entry.insert(0, "440") + + def toggle_all_play(): + freq = float(frequency_entry.get()) + play_all_sounds(freq) + + def toggle_all_stop(): + stop_all_sounds() + + all_on_btn = ttk.Button(frame, text="All ON", command=toggle_all_play) + all_on_btn.grid(row=1, column=3, padx=5) + + all_off_btn = ttk.Button(frame, text="All OFF", command=toggle_all_stop) + all_off_btn.grid(row=1, column=4, padx=5) + + buttons = [] + + for idx, device in enumerate(devices): + device_name = device['name'] + device_index = device['index'] + ttk.Label(frame, text=device_name).grid(row=idx + 2, column=0, sticky="w") + + for channel in [1, 2]: + btn = ttk.Button(frame, text=f"Ch {channel} ON", width=10) + btn.grid(row=idx + 2, column=channel, padx=5) + + def toggle_play(dev_idx=device_index, ch=channel, button=btn): + if (dev_idx, ch) in playing_threads: + stop_sound(dev_idx, ch) + button.config(text=f"Ch {ch} ON") + else: + freq = float(frequency_entry.get()) + play_sound_on_device(dev_idx, ch, freq) + button.config(text=f"Ch {ch} OFF") + + btn.config(command=toggle_play) + buttons.append(btn) + + root.mainloop() + +if __name__ == "__main__": + start_gui() \ No newline at end of file diff --git a/Dante/Dante.pyproj b/Dante/Dante.pyproj new file mode 100644 index 0000000..590ec1d --- /dev/null +++ b/Dante/Dante.pyproj @@ -0,0 +1,35 @@ + + + Debug + 2.0 + 5e5ba753-acea-4dc7-912d-3cfcf80d955c + . + Dante.py + + + . + . + Dante + Dante + + + true + false + + + true + false + + + + + + + + + + + + \ No newline at end of file diff --git a/Dante/Dante.sln b/Dante/Dante.sln new file mode 100644 index 0000000..8aebf16 --- /dev/null +++ b/Dante/Dante.sln @@ -0,0 +1,23 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.13.35806.99 d17.13 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{888888A0-9F3D-457C-B088-3A5042F75D52}") = "Dante", "Dante.pyproj", "{5E5BA753-ACEA-4DC7-912D-3CFCF80D955C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {5E5BA753-ACEA-4DC7-912D-3CFCF80D955C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5E5BA753-ACEA-4DC7-912D-3CFCF80D955C}.Release|Any CPU.ActiveCfg = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {1D410C2F-2713-4E1C-AADF-650AB25B7904} + EndGlobalSection +EndGlobal diff --git a/Resources/azure.tcl b/Resources/azure.tcl new file mode 100644 index 0000000..3e75502 --- /dev/null +++ b/Resources/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/Resources/icon1.ico b/Resources/icon1.ico new file mode 100644 index 0000000..bbd8088 Binary files /dev/null and b/Resources/icon1.ico differ diff --git a/Resources/image.png b/Resources/image.png new file mode 100644 index 0000000..b01f576 Binary files /dev/null and b/Resources/image.png differ diff --git a/Resources/theme/dark.tcl b/Resources/theme/dark.tcl new file mode 100644 index 0000000..0c255ff --- /dev/null +++ b/Resources/theme/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 "#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-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/Resources/theme/dark/box-accent.png b/Resources/theme/dark/box-accent.png new file mode 100644 index 0000000..d0e186b Binary files /dev/null and b/Resources/theme/dark/box-accent.png differ diff --git a/Resources/theme/dark/box-basic.png b/Resources/theme/dark/box-basic.png new file mode 100644 index 0000000..0b28fed Binary files /dev/null and b/Resources/theme/dark/box-basic.png differ diff --git a/Resources/theme/dark/box-hover.png b/Resources/theme/dark/box-hover.png new file mode 100644 index 0000000..3ca7c19 Binary files /dev/null and b/Resources/theme/dark/box-hover.png differ diff --git a/Resources/theme/dark/box-invalid.png b/Resources/theme/dark/box-invalid.png new file mode 100644 index 0000000..f180e94 Binary files /dev/null and b/Resources/theme/dark/box-invalid.png differ diff --git a/Resources/theme/dark/button-hover.png b/Resources/theme/dark/button-hover.png new file mode 100644 index 0000000..300eb09 Binary files /dev/null and b/Resources/theme/dark/button-hover.png differ diff --git a/Resources/theme/dark/card.png b/Resources/theme/dark/card.png new file mode 100644 index 0000000..3978e9f Binary files /dev/null and b/Resources/theme/dark/card.png differ diff --git a/Resources/theme/dark/check-accent.png b/Resources/theme/dark/check-accent.png new file mode 100644 index 0000000..9854ec3 Binary files /dev/null and b/Resources/theme/dark/check-accent.png differ diff --git a/Resources/theme/dark/check-basic.png b/Resources/theme/dark/check-basic.png new file mode 100644 index 0000000..529718e Binary files /dev/null and b/Resources/theme/dark/check-basic.png differ diff --git a/Resources/theme/dark/check-hover.png b/Resources/theme/dark/check-hover.png new file mode 100644 index 0000000..c96c80c Binary files /dev/null and b/Resources/theme/dark/check-hover.png differ diff --git a/Resources/theme/dark/check-tri-accent.png b/Resources/theme/dark/check-tri-accent.png new file mode 100644 index 0000000..c0539f9 Binary files /dev/null and b/Resources/theme/dark/check-tri-accent.png differ diff --git a/Resources/theme/dark/check-tri-basic.png b/Resources/theme/dark/check-tri-basic.png new file mode 100644 index 0000000..d0188f5 Binary files /dev/null and b/Resources/theme/dark/check-tri-basic.png differ diff --git a/Resources/theme/dark/check-tri-hover.png b/Resources/theme/dark/check-tri-hover.png new file mode 100644 index 0000000..ae3e19f Binary files /dev/null and b/Resources/theme/dark/check-tri-hover.png differ diff --git a/Resources/theme/dark/circle-accent.png b/Resources/theme/dark/circle-accent.png new file mode 100644 index 0000000..e9a5ee5 Binary files /dev/null and b/Resources/theme/dark/circle-accent.png differ diff --git a/Resources/theme/dark/circle-basic.png b/Resources/theme/dark/circle-basic.png new file mode 100644 index 0000000..85f2bac Binary files /dev/null and b/Resources/theme/dark/circle-basic.png differ diff --git a/Resources/theme/dark/circle-hover.png b/Resources/theme/dark/circle-hover.png new file mode 100644 index 0000000..b439cd6 Binary files /dev/null and b/Resources/theme/dark/circle-hover.png differ diff --git a/Resources/theme/dark/combo-button-basic.png b/Resources/theme/dark/combo-button-basic.png new file mode 100644 index 0000000..4aef1b2 Binary files /dev/null and b/Resources/theme/dark/combo-button-basic.png differ diff --git a/Resources/theme/dark/combo-button-focus.png b/Resources/theme/dark/combo-button-focus.png new file mode 100644 index 0000000..5b1e0ff Binary files /dev/null and b/Resources/theme/dark/combo-button-focus.png differ diff --git a/Resources/theme/dark/combo-button-hover.png b/Resources/theme/dark/combo-button-hover.png new file mode 100644 index 0000000..493cf52 Binary files /dev/null and b/Resources/theme/dark/combo-button-hover.png differ diff --git a/Resources/theme/dark/down-accent.png b/Resources/theme/dark/down-accent.png new file mode 100644 index 0000000..5bb987d Binary files /dev/null and b/Resources/theme/dark/down-accent.png differ diff --git a/Resources/theme/dark/down.png b/Resources/theme/dark/down.png new file mode 100644 index 0000000..d83f92d Binary files /dev/null and b/Resources/theme/dark/down.png differ diff --git a/Resources/theme/dark/empty.png b/Resources/theme/dark/empty.png new file mode 100644 index 0000000..202e3de Binary files /dev/null and b/Resources/theme/dark/empty.png differ diff --git a/Resources/theme/dark/hor-accent.png b/Resources/theme/dark/hor-accent.png new file mode 100644 index 0000000..e59a1c6 Binary files /dev/null and b/Resources/theme/dark/hor-accent.png differ diff --git a/Resources/theme/dark/hor-basic.png b/Resources/theme/dark/hor-basic.png new file mode 100644 index 0000000..bbc2e50 Binary files /dev/null and b/Resources/theme/dark/hor-basic.png differ diff --git a/Resources/theme/dark/hor-hover.png b/Resources/theme/dark/hor-hover.png new file mode 100644 index 0000000..56216f4 Binary files /dev/null and b/Resources/theme/dark/hor-hover.png differ diff --git a/Resources/theme/dark/notebook.png b/Resources/theme/dark/notebook.png new file mode 100644 index 0000000..5b937c1 Binary files /dev/null and b/Resources/theme/dark/notebook.png differ diff --git a/Resources/theme/dark/off-basic.png b/Resources/theme/dark/off-basic.png new file mode 100644 index 0000000..2ca539a Binary files /dev/null and b/Resources/theme/dark/off-basic.png differ diff --git a/Resources/theme/dark/on-accent.png b/Resources/theme/dark/on-accent.png new file mode 100644 index 0000000..4a33465 Binary files /dev/null and b/Resources/theme/dark/on-accent.png differ diff --git a/Resources/theme/dark/on-basic.png b/Resources/theme/dark/on-basic.png new file mode 100644 index 0000000..9dce6a5 Binary files /dev/null and b/Resources/theme/dark/on-basic.png differ diff --git a/Resources/theme/dark/outline-basic.png b/Resources/theme/dark/outline-basic.png new file mode 100644 index 0000000..2f76a1b Binary files /dev/null and b/Resources/theme/dark/outline-basic.png differ diff --git a/Resources/theme/dark/outline-hover.png b/Resources/theme/dark/outline-hover.png new file mode 100644 index 0000000..7ce5290 Binary files /dev/null and b/Resources/theme/dark/outline-hover.png differ diff --git a/Resources/theme/dark/radio-accent.png b/Resources/theme/dark/radio-accent.png new file mode 100644 index 0000000..c34e4a8 Binary files /dev/null and b/Resources/theme/dark/radio-accent.png differ diff --git a/Resources/theme/dark/radio-basic.png b/Resources/theme/dark/radio-basic.png new file mode 100644 index 0000000..f9b55a6 Binary files /dev/null and b/Resources/theme/dark/radio-basic.png differ diff --git a/Resources/theme/dark/radio-hover.png b/Resources/theme/dark/radio-hover.png new file mode 100644 index 0000000..4f3eab8 Binary files /dev/null and b/Resources/theme/dark/radio-hover.png differ diff --git a/Resources/theme/dark/radio-tri-accent.png b/Resources/theme/dark/radio-tri-accent.png new file mode 100644 index 0000000..8084141 Binary files /dev/null and b/Resources/theme/dark/radio-tri-accent.png differ diff --git a/Resources/theme/dark/radio-tri-basic.png b/Resources/theme/dark/radio-tri-basic.png new file mode 100644 index 0000000..def9e27 Binary files /dev/null and b/Resources/theme/dark/radio-tri-basic.png differ diff --git a/Resources/theme/dark/radio-tri-hover.png b/Resources/theme/dark/radio-tri-hover.png new file mode 100644 index 0000000..86f1b59 Binary files /dev/null and b/Resources/theme/dark/radio-tri-hover.png differ diff --git a/Resources/theme/dark/rect-accent-hover.png b/Resources/theme/dark/rect-accent-hover.png new file mode 100644 index 0000000..bb49129 Binary files /dev/null and b/Resources/theme/dark/rect-accent-hover.png differ diff --git a/Resources/theme/dark/rect-accent.png b/Resources/theme/dark/rect-accent.png new file mode 100644 index 0000000..5e7c72c Binary files /dev/null and b/Resources/theme/dark/rect-accent.png differ diff --git a/Resources/theme/dark/rect-basic.png b/Resources/theme/dark/rect-basic.png new file mode 100644 index 0000000..8ab4d10 Binary files /dev/null and b/Resources/theme/dark/rect-basic.png differ diff --git a/Resources/theme/dark/rect-hover.png b/Resources/theme/dark/rect-hover.png new file mode 100644 index 0000000..b9e4c35 Binary files /dev/null and b/Resources/theme/dark/rect-hover.png differ diff --git a/Resources/theme/dark/right.png b/Resources/theme/dark/right.png new file mode 100644 index 0000000..bc840c2 Binary files /dev/null and b/Resources/theme/dark/right.png differ diff --git a/Resources/theme/dark/scale-hor.png b/Resources/theme/dark/scale-hor.png new file mode 100644 index 0000000..570530e Binary files /dev/null and b/Resources/theme/dark/scale-hor.png differ diff --git a/Resources/theme/dark/scale-vert.png b/Resources/theme/dark/scale-vert.png new file mode 100644 index 0000000..c6fcf6f Binary files /dev/null and b/Resources/theme/dark/scale-vert.png differ diff --git a/Resources/theme/dark/separator.png b/Resources/theme/dark/separator.png new file mode 100644 index 0000000..411c970 Binary files /dev/null and b/Resources/theme/dark/separator.png differ diff --git a/Resources/theme/dark/size.png b/Resources/theme/dark/size.png new file mode 100644 index 0000000..51c682e Binary files /dev/null and b/Resources/theme/dark/size.png differ diff --git a/Resources/theme/dark/tab-basic.png b/Resources/theme/dark/tab-basic.png new file mode 100644 index 0000000..6db676b Binary files /dev/null and b/Resources/theme/dark/tab-basic.png differ diff --git a/Resources/theme/dark/tab-disabled.png b/Resources/theme/dark/tab-disabled.png new file mode 100644 index 0000000..736c438 Binary files /dev/null and b/Resources/theme/dark/tab-disabled.png differ diff --git a/Resources/theme/dark/tab-hover.png b/Resources/theme/dark/tab-hover.png new file mode 100644 index 0000000..213e82b Binary files /dev/null and b/Resources/theme/dark/tab-hover.png differ diff --git a/Resources/theme/dark/tick-hor-accent.png b/Resources/theme/dark/tick-hor-accent.png new file mode 100644 index 0000000..b7c28dd Binary files /dev/null and b/Resources/theme/dark/tick-hor-accent.png differ diff --git a/Resources/theme/dark/tick-hor-basic.png b/Resources/theme/dark/tick-hor-basic.png new file mode 100644 index 0000000..ee4b441 Binary files /dev/null and b/Resources/theme/dark/tick-hor-basic.png differ diff --git a/Resources/theme/dark/tick-hor-hover.png b/Resources/theme/dark/tick-hor-hover.png new file mode 100644 index 0000000..bc859f4 Binary files /dev/null and b/Resources/theme/dark/tick-hor-hover.png differ diff --git a/Resources/theme/dark/tick-vert-accent.png b/Resources/theme/dark/tick-vert-accent.png new file mode 100644 index 0000000..da4f481 Binary files /dev/null and b/Resources/theme/dark/tick-vert-accent.png differ diff --git a/Resources/theme/dark/tick-vert-basic.png b/Resources/theme/dark/tick-vert-basic.png new file mode 100644 index 0000000..9e0a5ee Binary files /dev/null and b/Resources/theme/dark/tick-vert-basic.png differ diff --git a/Resources/theme/dark/tick-vert-hover.png b/Resources/theme/dark/tick-vert-hover.png new file mode 100644 index 0000000..e9ff3a3 Binary files /dev/null and b/Resources/theme/dark/tick-vert-hover.png differ diff --git a/Resources/theme/dark/tree-basic.png b/Resources/theme/dark/tree-basic.png new file mode 100644 index 0000000..c71808d Binary files /dev/null and b/Resources/theme/dark/tree-basic.png differ diff --git a/Resources/theme/dark/tree-pressed.png b/Resources/theme/dark/tree-pressed.png new file mode 100644 index 0000000..96d3a53 Binary files /dev/null and b/Resources/theme/dark/tree-pressed.png differ diff --git a/Resources/theme/dark/up-accent.png b/Resources/theme/dark/up-accent.png new file mode 100644 index 0000000..54a20f8 Binary files /dev/null and b/Resources/theme/dark/up-accent.png differ diff --git a/Resources/theme/dark/up.png b/Resources/theme/dark/up.png new file mode 100644 index 0000000..069d440 Binary files /dev/null and b/Resources/theme/dark/up.png differ diff --git a/Resources/theme/dark/vert-accent.png b/Resources/theme/dark/vert-accent.png new file mode 100644 index 0000000..1c228fd Binary files /dev/null and b/Resources/theme/dark/vert-accent.png differ diff --git a/Resources/theme/dark/vert-basic.png b/Resources/theme/dark/vert-basic.png new file mode 100644 index 0000000..4f6c46e Binary files /dev/null and b/Resources/theme/dark/vert-basic.png differ diff --git a/Resources/theme/dark/vert-hover.png b/Resources/theme/dark/vert-hover.png new file mode 100644 index 0000000..142ccce Binary files /dev/null and b/Resources/theme/dark/vert-hover.png differ diff --git a/Resources/theme/light.tcl b/Resources/theme/light.tcl new file mode 100644 index 0000000..69667b4 --- /dev/null +++ b/Resources/theme/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/Resources/theme/light/box-accent.png b/Resources/theme/light/box-accent.png new file mode 100644 index 0000000..89f1faf Binary files /dev/null and b/Resources/theme/light/box-accent.png differ diff --git a/Resources/theme/light/box-basic.png b/Resources/theme/light/box-basic.png new file mode 100644 index 0000000..090a00b Binary files /dev/null and b/Resources/theme/light/box-basic.png differ diff --git a/Resources/theme/light/box-hover.png b/Resources/theme/light/box-hover.png new file mode 100644 index 0000000..e691da4 Binary files /dev/null and b/Resources/theme/light/box-hover.png differ diff --git a/Resources/theme/light/box-invalid.png b/Resources/theme/light/box-invalid.png new file mode 100644 index 0000000..1f16f5c Binary files /dev/null and b/Resources/theme/light/box-invalid.png differ diff --git a/Resources/theme/light/button-hover.png b/Resources/theme/light/button-hover.png new file mode 100644 index 0000000..13366eb Binary files /dev/null and b/Resources/theme/light/button-hover.png differ diff --git a/Resources/theme/light/card.png b/Resources/theme/light/card.png new file mode 100644 index 0000000..09152f5 Binary files /dev/null and b/Resources/theme/light/card.png differ diff --git a/Resources/theme/light/check-accent.png b/Resources/theme/light/check-accent.png new file mode 100644 index 0000000..4aea79b Binary files /dev/null and b/Resources/theme/light/check-accent.png differ diff --git a/Resources/theme/light/check-basic.png b/Resources/theme/light/check-basic.png new file mode 100644 index 0000000..0c00612 Binary files /dev/null and b/Resources/theme/light/check-basic.png differ diff --git a/Resources/theme/light/check-hover.png b/Resources/theme/light/check-hover.png new file mode 100644 index 0000000..3811696 Binary files /dev/null and b/Resources/theme/light/check-hover.png differ diff --git a/Resources/theme/light/check-tri-accent.png b/Resources/theme/light/check-tri-accent.png new file mode 100644 index 0000000..d6baad5 Binary files /dev/null and b/Resources/theme/light/check-tri-accent.png differ diff --git a/Resources/theme/light/check-tri-basic.png b/Resources/theme/light/check-tri-basic.png new file mode 100644 index 0000000..e92bea5 Binary files /dev/null and b/Resources/theme/light/check-tri-basic.png differ diff --git a/Resources/theme/light/check-tri-hover.png b/Resources/theme/light/check-tri-hover.png new file mode 100644 index 0000000..d611d76 Binary files /dev/null and b/Resources/theme/light/check-tri-hover.png differ diff --git a/Resources/theme/light/circle-accent.png b/Resources/theme/light/circle-accent.png new file mode 100644 index 0000000..ea76e7a Binary files /dev/null and b/Resources/theme/light/circle-accent.png differ diff --git a/Resources/theme/light/circle-basic.png b/Resources/theme/light/circle-basic.png new file mode 100644 index 0000000..b16202e Binary files /dev/null and b/Resources/theme/light/circle-basic.png differ diff --git a/Resources/theme/light/circle-hover.png b/Resources/theme/light/circle-hover.png new file mode 100644 index 0000000..6ea1803 Binary files /dev/null and b/Resources/theme/light/circle-hover.png differ diff --git a/Resources/theme/light/combo-button-basic.png b/Resources/theme/light/combo-button-basic.png new file mode 100644 index 0000000..b7daa04 Binary files /dev/null and b/Resources/theme/light/combo-button-basic.png differ diff --git a/Resources/theme/light/combo-button-focus.png b/Resources/theme/light/combo-button-focus.png new file mode 100644 index 0000000..59c7db4 Binary files /dev/null and b/Resources/theme/light/combo-button-focus.png differ diff --git a/Resources/theme/light/combo-button-hover.png b/Resources/theme/light/combo-button-hover.png new file mode 100644 index 0000000..1d06c57 Binary files /dev/null and b/Resources/theme/light/combo-button-hover.png differ diff --git a/Resources/theme/light/down-accent.png b/Resources/theme/light/down-accent.png new file mode 100644 index 0000000..5bb987d Binary files /dev/null and b/Resources/theme/light/down-accent.png differ diff --git a/Resources/theme/light/down.png b/Resources/theme/light/down.png new file mode 100644 index 0000000..1fd7e4f Binary files /dev/null and b/Resources/theme/light/down.png differ diff --git a/Resources/theme/light/empty.png b/Resources/theme/light/empty.png new file mode 100644 index 0000000..202e3de Binary files /dev/null and b/Resources/theme/light/empty.png differ diff --git a/Resources/theme/light/hor-accent.png b/Resources/theme/light/hor-accent.png new file mode 100644 index 0000000..145b10e Binary files /dev/null and b/Resources/theme/light/hor-accent.png differ diff --git a/Resources/theme/light/hor-basic.png b/Resources/theme/light/hor-basic.png new file mode 100644 index 0000000..eb18d1e Binary files /dev/null and b/Resources/theme/light/hor-basic.png differ diff --git a/Resources/theme/light/hor-hover.png b/Resources/theme/light/hor-hover.png new file mode 100644 index 0000000..4d6c0f1 Binary files /dev/null and b/Resources/theme/light/hor-hover.png differ diff --git a/Resources/theme/light/notebook.png b/Resources/theme/light/notebook.png new file mode 100644 index 0000000..430d9f2 Binary files /dev/null and b/Resources/theme/light/notebook.png differ diff --git a/Resources/theme/light/off-basic.png b/Resources/theme/light/off-basic.png new file mode 100644 index 0000000..cf383f0 Binary files /dev/null and b/Resources/theme/light/off-basic.png differ diff --git a/Resources/theme/light/off-hover.png b/Resources/theme/light/off-hover.png new file mode 100644 index 0000000..893b39c Binary files /dev/null and b/Resources/theme/light/off-hover.png differ diff --git a/Resources/theme/light/on-accent.png b/Resources/theme/light/on-accent.png new file mode 100644 index 0000000..f5a86c9 Binary files /dev/null and b/Resources/theme/light/on-accent.png differ diff --git a/Resources/theme/light/on-basic.png b/Resources/theme/light/on-basic.png new file mode 100644 index 0000000..23ec72f Binary files /dev/null and b/Resources/theme/light/on-basic.png differ diff --git a/Resources/theme/light/on-hover.png b/Resources/theme/light/on-hover.png new file mode 100644 index 0000000..d55f7ae Binary files /dev/null and b/Resources/theme/light/on-hover.png differ diff --git a/Resources/theme/light/outline-basic.png b/Resources/theme/light/outline-basic.png new file mode 100644 index 0000000..2e79874 Binary files /dev/null and b/Resources/theme/light/outline-basic.png differ diff --git a/Resources/theme/light/outline-hover.png b/Resources/theme/light/outline-hover.png new file mode 100644 index 0000000..502915d Binary files /dev/null and b/Resources/theme/light/outline-hover.png differ diff --git a/Resources/theme/light/radio-accent.png b/Resources/theme/light/radio-accent.png new file mode 100644 index 0000000..1f7329d Binary files /dev/null and b/Resources/theme/light/radio-accent.png differ diff --git a/Resources/theme/light/radio-basic.png b/Resources/theme/light/radio-basic.png new file mode 100644 index 0000000..793531e Binary files /dev/null and b/Resources/theme/light/radio-basic.png differ diff --git a/Resources/theme/light/radio-hover.png b/Resources/theme/light/radio-hover.png new file mode 100644 index 0000000..d6faa74 Binary files /dev/null and b/Resources/theme/light/radio-hover.png differ diff --git a/Resources/theme/light/radio-tri-accent.png b/Resources/theme/light/radio-tri-accent.png new file mode 100644 index 0000000..86dd4cb Binary files /dev/null and b/Resources/theme/light/radio-tri-accent.png differ diff --git a/Resources/theme/light/radio-tri-basic.png b/Resources/theme/light/radio-tri-basic.png new file mode 100644 index 0000000..da85d03 Binary files /dev/null and b/Resources/theme/light/radio-tri-basic.png differ diff --git a/Resources/theme/light/radio-tri-hover.png b/Resources/theme/light/radio-tri-hover.png new file mode 100644 index 0000000..ded14a6 Binary files /dev/null and b/Resources/theme/light/radio-tri-hover.png differ diff --git a/Resources/theme/light/rect-accent-hover.png b/Resources/theme/light/rect-accent-hover.png new file mode 100644 index 0000000..5daa96a Binary files /dev/null and b/Resources/theme/light/rect-accent-hover.png differ diff --git a/Resources/theme/light/rect-accent.png b/Resources/theme/light/rect-accent.png new file mode 100644 index 0000000..2d08674 Binary files /dev/null and b/Resources/theme/light/rect-accent.png differ diff --git a/Resources/theme/light/rect-basic.png b/Resources/theme/light/rect-basic.png new file mode 100644 index 0000000..239ca31 Binary files /dev/null and b/Resources/theme/light/rect-basic.png differ diff --git a/Resources/theme/light/rect-hover.png b/Resources/theme/light/rect-hover.png new file mode 100644 index 0000000..9252c4f Binary files /dev/null and b/Resources/theme/light/rect-hover.png differ diff --git a/Resources/theme/light/right.png b/Resources/theme/light/right.png new file mode 100644 index 0000000..8122cc9 Binary files /dev/null and b/Resources/theme/light/right.png differ diff --git a/Resources/theme/light/scale-hor.png b/Resources/theme/light/scale-hor.png new file mode 100644 index 0000000..d11f508 Binary files /dev/null and b/Resources/theme/light/scale-hor.png differ diff --git a/Resources/theme/light/scale-vert.png b/Resources/theme/light/scale-vert.png new file mode 100644 index 0000000..f78595d Binary files /dev/null and b/Resources/theme/light/scale-vert.png differ diff --git a/Resources/theme/light/separator.png b/Resources/theme/light/separator.png new file mode 100644 index 0000000..7bffc9a Binary files /dev/null and b/Resources/theme/light/separator.png differ diff --git a/Resources/theme/light/size.png b/Resources/theme/light/size.png new file mode 100644 index 0000000..bde3ade Binary files /dev/null and b/Resources/theme/light/size.png differ diff --git a/Resources/theme/light/tab-basic.png b/Resources/theme/light/tab-basic.png new file mode 100644 index 0000000..365fdff Binary files /dev/null and b/Resources/theme/light/tab-basic.png differ diff --git a/Resources/theme/light/tab-disabled.png b/Resources/theme/light/tab-disabled.png new file mode 100644 index 0000000..eeee518 Binary files /dev/null and b/Resources/theme/light/tab-disabled.png differ diff --git a/Resources/theme/light/tab-hover.png b/Resources/theme/light/tab-hover.png new file mode 100644 index 0000000..5003806 Binary files /dev/null and b/Resources/theme/light/tab-hover.png differ diff --git a/Resources/theme/light/tick-hor-accent.png b/Resources/theme/light/tick-hor-accent.png new file mode 100644 index 0000000..6940b1c Binary files /dev/null and b/Resources/theme/light/tick-hor-accent.png differ diff --git a/Resources/theme/light/tick-hor-basic.png b/Resources/theme/light/tick-hor-basic.png new file mode 100644 index 0000000..ba727d7 Binary files /dev/null and b/Resources/theme/light/tick-hor-basic.png differ diff --git a/Resources/theme/light/tick-hor-hover.png b/Resources/theme/light/tick-hor-hover.png new file mode 100644 index 0000000..cb66b59 Binary files /dev/null and b/Resources/theme/light/tick-hor-hover.png differ diff --git a/Resources/theme/light/tick-vert-accent.png b/Resources/theme/light/tick-vert-accent.png new file mode 100644 index 0000000..dfdb89c Binary files /dev/null and b/Resources/theme/light/tick-vert-accent.png differ diff --git a/Resources/theme/light/tick-vert-basic.png b/Resources/theme/light/tick-vert-basic.png new file mode 100644 index 0000000..a58440d Binary files /dev/null and b/Resources/theme/light/tick-vert-basic.png differ diff --git a/Resources/theme/light/tick-vert-hover.png b/Resources/theme/light/tick-vert-hover.png new file mode 100644 index 0000000..18cbec5 Binary files /dev/null and b/Resources/theme/light/tick-vert-hover.png differ diff --git a/Resources/theme/light/tree-basic.png b/Resources/theme/light/tree-basic.png new file mode 100644 index 0000000..755062b Binary files /dev/null and b/Resources/theme/light/tree-basic.png differ diff --git a/Resources/theme/light/tree-pressed.png b/Resources/theme/light/tree-pressed.png new file mode 100644 index 0000000..ee28416 Binary files /dev/null and b/Resources/theme/light/tree-pressed.png differ diff --git a/Resources/theme/light/up-accent.png b/Resources/theme/light/up-accent.png new file mode 100644 index 0000000..54a20f8 Binary files /dev/null and b/Resources/theme/light/up-accent.png differ diff --git a/Resources/theme/light/up.png b/Resources/theme/light/up.png new file mode 100644 index 0000000..16568f2 Binary files /dev/null and b/Resources/theme/light/up.png differ diff --git a/Resources/theme/light/vert-accent.png b/Resources/theme/light/vert-accent.png new file mode 100644 index 0000000..7f87bdc Binary files /dev/null and b/Resources/theme/light/vert-accent.png differ diff --git a/Resources/theme/light/vert-basic.png b/Resources/theme/light/vert-basic.png new file mode 100644 index 0000000..d5f61ec Binary files /dev/null and b/Resources/theme/light/vert-basic.png differ diff --git a/Resources/theme/light/vert-hover.png b/Resources/theme/light/vert-hover.png new file mode 100644 index 0000000..bfdc9d0 Binary files /dev/null and b/Resources/theme/light/vert-hover.png differ