aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.DS_Storebin8196 -> 8196 bytes
-rw-r--r--PKGLIST1
-rw-r--r--assets/.DS_Storebin0 -> 6148 bytes
-rw-r--r--assets/current.pngbin0 -> 1453575 bytes
-rw-r--r--icons/.DS_Storebin0 -> 6148 bytes
-rw-r--r--src/config/defaults.py3
-rw-r--r--src/helpers/managers.py5
-rw-r--r--src/helpers/windows.py135
-rw-r--r--src/texty.py7
9 files changed, 133 insertions, 18 deletions
diff --git a/.DS_Store b/.DS_Store
index 15a41de..d6329db 100644
--- a/.DS_Store
+++ b/.DS_Store
Binary files differ
diff --git a/PKGLIST b/PKGLIST
index 40c5585..6297b79 100644
--- a/PKGLIST
+++ b/PKGLIST
@@ -5,3 +5,4 @@ inquirer
pyyaml
tk
pyinstaller
+tkmacosx
diff --git a/assets/.DS_Store b/assets/.DS_Store
new file mode 100644
index 0000000..5a9d951
--- /dev/null
+++ b/assets/.DS_Store
Binary files differ
diff --git a/assets/current.png b/assets/current.png
new file mode 100644
index 0000000..c6dec73
--- /dev/null
+++ b/assets/current.png
Binary files differ
diff --git a/icons/.DS_Store b/icons/.DS_Store
new file mode 100644
index 0000000..4caea56
--- /dev/null
+++ b/icons/.DS_Store
Binary files differ
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()