diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/config/defaults.py | 3 | ||||
| -rw-r--r-- | src/helpers/managers.py | 5 | ||||
| -rw-r--r-- | src/helpers/windows.py | 135 | ||||
| -rw-r--r-- | src/texty.py | 7 |
4 files changed, 132 insertions, 18 deletions
diff --git a/src/config/defaults.py b/src/config/defaults.py index f3796dc..cacbd96 100644 --- a/src/config/defaults.py +++ b/src/config/defaults.py @@ -5,6 +5,7 @@ DEFAULT_PREFS = { "height": 600, "x_pos": "center", "y_pos": "center", + "theme": "system", } KEYBINDS = { @@ -42,5 +43,3 @@ MAC_KEYBINDS = { "Hide Others": f"meta-Shift-H", # Hide Others "Show All": f"meta-Shift-A", # Show All } - -ICONS_FOLDER = "icons" diff --git a/src/helpers/managers.py b/src/helpers/managers.py index 518762c..ca918fc 100644 --- a/src/helpers/managers.py +++ b/src/helpers/managers.py @@ -3,10 +3,11 @@ import os class PreferenceManager: - def __init__(self, default_prefs, preferences_file): + def __init__(self, default_prefs, preferences_file, debug=False): self.DEFAULT_PREFS, self.preferences = default_prefs, default_prefs self.preferences_file = preferences_file - self.load() + if not debug: + self.load() def load(self): if os.path.exists(self.preferences_file): diff --git a/src/helpers/windows.py b/src/helpers/windows.py index 3ed578e..e4dce01 100644 --- a/src/helpers/windows.py +++ b/src/helpers/windows.py @@ -1,7 +1,7 @@ -import os import tkinter as tk -from config.defaults import ICONS_FOLDER +from idlelib.tooltip import Hovertip +from tkmacosx import Button class TextyWindow(tk.Toplevel): @@ -22,26 +22,135 @@ class TextyWindow(tk.Toplevel): self.parent.log("Resize, Move, and Close bindings set to save preferences.") self.config(menu=self.parent.get_menubar()) - self.set_toolbar() + self.draw_layout() def on_close(self): self.parent.destroy_window(self) def draw_layout(self): self.parent.log("Drawing layout") + self.set_toolbar() + + self.parent.log("Drawing Text Editor") + self.text = tk.Text( + self, + undo=True, + autoseparators=True, + maxundo=-1, + wrap=tk.WORD, + font=("Menlo", 12), + borderwidth=0, + highlightthickness=0, + ) + self.text.pack(side=tk.TOP, fill=tk.BOTH, expand=True) + self.text.focus_set() def set_toolbar(self): self.parent.log("Drawing Toolbar") + background_color = "#303030" if self.parent.theme == "dark" else "#f0f0f0" + foreground_color = "#f0f0f0" if self.parent.theme == "dark" else "#303030" + + toolbar = tk.Frame(self, bd=1, relief=tk.RAISED, bg=background_color) + toolbar.pack(side=tk.TOP, fill=tk.X) + + self.parent.log("Drawing Action Buttons") + self.draw_action_buttons(toolbar, background_color, foreground_color) + + def draw_action_buttons(self, toolbar, background_color, foreground_color): + self.parent.log("Drawing New File Button") + new_btn = Button( + toolbar, + image=tk.PhotoImage(file="icons/new.png").subsample(24, 24), + bg=background_color, + bd=0, + borderless=True, + relief="flat", + overrelief="flat", + focusthickness=0, + bordercolor=background_color, + ) # New File + new_btn.pack(side=tk.LEFT, padx=2, pady=2) + Hovertip(new_btn, "New File") + + self.parent.log("Drawing Open File Button") + save_btn = Button( + toolbar, + image=tk.PhotoImage(file="icons/save.png").subsample(24, 24), + bg=background_color, + bd=0, + borderless=True, + relief="flat", + overrelief="flat", + focusthickness=0, + bordercolor=background_color, + ) # Save File + save_btn.pack(side=tk.LEFT, padx=2, pady=2) + Hovertip(save_btn, "Save File") + + self.parent.log("Drawing Spacer") + spacer = tk.Frame(toolbar, width=30, height=30, bg=background_color) + spacer.pack(side=tk.LEFT, padx=2, pady=2) + + self.parent.log("Drawing Cut Button") + cut_btn = Button( + toolbar, + image=tk.PhotoImage(file="icons/cut.png").subsample(24, 24), + bg=background_color, + bd=0, + borderless=True, + relief="flat", + overrelief="flat", + focusthickness=0, + bordercolor=background_color, + ) # Cut + cut_btn.pack(side=tk.LEFT, padx=2, pady=2) + Hovertip(cut_btn, "Cut") + + self.parent.log("Drawing Copy Button") + copy_btn = Button( + toolbar, + image=tk.PhotoImage(file="icons/copy.png").subsample(24, 24), + bg=background_color, + bd=0, + borderless=True, + relief="flat", + overrelief="flat", + focusthickness=0, + bordercolor=background_color, + ) # Copy + copy_btn.pack(side=tk.LEFT, padx=2, pady=2) + Hovertip(copy_btn, "Copy") - toolbar = tk.Frame(self, bd=1, relief=tk.RAISED) + self.parent.log("Drawing Paste Button") + paste_btn = Button( + toolbar, + image=tk.PhotoImage(file="icons/paste.png").subsample(24, 24), + bg=background_color, + bd=0, + borderless=True, + relief="flat", + overrelief="flat", + focusthickness=0, + bordercolor=background_color, + ) # Paste + paste_btn.pack(side=tk.LEFT, padx=2, pady=2) + Hovertip(paste_btn, "Paste") - # add icon 16x16 buttons - def get_icon(name): - return tk.PhotoImage(file=os.path.join(ICONS_FOLDER, name)) + self.parent.log("Drawing Spacer") + spacer = tk.Frame(toolbar, width=30, height=30, bg=background_color) + spacer.pack(side=tk.LEFT, padx=2, pady=2) - new_icon = get_icon("new.png") - save_icon = get_icon("save.png") - cut_icon = get_icon("cut.png") - copy_icon = get_icon("copy.png") - paste_icon = get_icon("paste.png") - print_icon = get_icon("print.png") + self.parent.log("Drawing Print Button") + print_btn = Button( + toolbar, + image=tk.PhotoImage(file="icons/print.png").subsample(24, 24), + bg=background_color, + bd=0, + borderless=True, + relief="flat", + overrelief="flat", + focusthickness=0, + bordercolor=background_color, + ) # Print + print_btn.pack(side=tk.LEFT, padx=2, pady=2) + Hovertip(print_btn, "Print") diff --git a/src/texty.py b/src/texty.py index a8c92b1..35347f5 100644 --- a/src/texty.py +++ b/src/texty.py @@ -7,6 +7,7 @@ import sys import tkinter as tk import click +import darkdetect from config.defaults import DEFAULT_PREFS, KEYBINDS, MAC_KEYBINDS, PREFERENCES_FILE from helpers.managers import FileManager, PreferenceManager @@ -18,7 +19,7 @@ class Texty(tk.Tk): super().__init__() self.title("Texty") self.debug = debug - self.prefs = PreferenceManager(DEFAULT_PREFS, PREFERENCES_FILE) + self.prefs = PreferenceManager(DEFAULT_PREFS, PREFERENCES_FILE, debug=debug) self.fm = FileManager() self.system = self.call("tk", "windowingsystem") self.log( @@ -26,6 +27,10 @@ class Texty(tk.Tk): self.system, sys.platform ) ) + if self.prefs.get("theme") == "system": + self.theme = "dark" if darkdetect.isDark() else "light" + else: + self.theme = self.prefs.get("theme") self.windows = 0 self.withdraw() self.create_window() |
