aboutsummaryrefslogtreecommitdiff
path: root/src/texty.py
diff options
context:
space:
mode:
authorBobby <[email protected]>2022-11-06 08:03:42 -0500
committerBobby <[email protected]>2022-11-06 08:03:42 -0500
commit2e3f84c8e402563a9c11850ad07d95f59cd43be3 (patch)
treed2b6f5b2a3ee49cd933447fb61ab2bfd1d6c1c9e /src/texty.py
parent57858724265b39bc829df8eaa41d7c04aa486734 (diff)
downloadtexty-2e3f84c8e402563a9c11850ad07d95f59cd43be3.tar.xz
texty-2e3f84c8e402563a9c11850ad07d95f59cd43be3.zip
feat: window manager and file manager
Diffstat (limited to 'src/texty.py')
-rw-r--r--src/texty.py106
1 files changed, 62 insertions, 44 deletions
diff --git a/src/texty.py b/src/texty.py
index 3b043e5..5e847a5 100644
--- a/src/texty.py
+++ b/src/texty.py
@@ -9,9 +9,8 @@ import tkinter as tk
import click
from config.defaults import DEFAULT_PREFS, KEYBINDS, MAC_KEYBINDS, PREFERENCES_FILE
-from helpers.preferences import PreferenceManager
-
-logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
+from helpers.managers import FileManager, PreferenceManager
+from helpers.windows import TextyWindow
class Texty(tk.Tk):
@@ -20,29 +19,24 @@ class Texty(tk.Tk):
self.title("Texty")
self.debug = debug
self.prefs = PreferenceManager(DEFAULT_PREFS, PREFERENCES_FILE)
- self.protocol("WM_DELETE_WINDOW", self.on_close)
+ self.fm = FileManager()
self.system = self.call("tk", "windowingsystem")
- self.log("Running Texty on %s" % self.system)
-
- self.option_add("*tearOff", False)
- self.log("Tearoff disabled")
-
- # Bind Resize, Move, and Close
- self.bind("<Configure>", self.save_prefs)
- self.bind("<Destroy>", self.save_prefs)
- self.log("Resize, Move, and Close bindings set to save preferences.")
-
- # Set Geometry
- self.set_geometry()
+ self.log(
+ "Running Texty on system: {}, platform: {}".format(
+ self.system, sys.platform
+ )
+ )
- # Create Menu Bar
- self.bind_menu()
+ self.withdraw()
+ self.create_window()
- def log(self, message):
- if self.debug:
- logging.info(message)
+ def create_window(self):
+ window = TextyWindow(self)
+ window.grab_set()
+ window.focus_set()
+ window.mainloop()
- def set_geometry(self):
+ def get_window_geometry(self):
width = self.prefs.get("width")
height = self.prefs.get("height")
x_pos = (
@@ -55,27 +49,21 @@ class Texty(tk.Tk):
if self.prefs.get("y_pos") == "center"
else self.prefs.get("y_pos")
)
- self.geometry(f"{width}x{height}+{x_pos}+{y_pos}")
self.log(
"Window geometry set to {}x{}+{}+{}".format(width, height, x_pos, y_pos)
)
+ return f"{width}x{height}+{x_pos}+{y_pos}"
- def save_prefs(self, event):
- if not self.debug:
- self.prefs.set("width", self.winfo_width())
- self.prefs.set("height", self.winfo_height())
- self.prefs.set("x_pos", self.winfo_x())
- self.prefs.set("y_pos", self.winfo_y())
- self.prefs.save()
-
- def bind_menu(self):
+ def get_menubar(self):
menubar = tk.Menu(self)
+ # Setting Keybinds
meta = "Command" if self.system == "aqua" else "Control"
keybinds = {k: v.replace("meta", meta) for k, v in KEYBINDS.items()}
mac_keybinds = {k: v.replace("meta", meta) for k, v in MAC_KEYBINDS.items()}
self.log("Keybinds set to %s" % keybinds)
+ # macOS specific menu items
if self.system == "aqua":
self.log("MacOS detected, Additional Keybinds set to %s" % mac_keybinds)
appmenu = tk.Menu(menubar, name="apple")
@@ -83,28 +71,58 @@ class Texty(tk.Tk):
appmenu.add_command(label="About Texty")
appmenu.add_separator()
self.createcommand("tk::mac::ShowPreferences", self.show_preferences)
+ appmenu.add_separator()
- self.config(menu=menubar)
+ # File Menu
+ filemenu = tk.Menu(menubar)
+ menubar.add_cascade(menu=filemenu, label="File")
+ filemenu.add_command(
+ label="New Text File", accelerator=keybinds["New Text File"]
+ )
+ filemenu.add_command(label="New Window", accelerator=keybinds["New Window"])
+ # filemenu.add_command(label="New Tab", accelerator=keybinds["New Tab"])
+ filemenu.add_separator()
+ filemenu.add_command(label="Open File", accelerator=keybinds["Open File"])
+ filemenu.add_command(label="Save", accelerator=keybinds["Save"])
+ filemenu.add_command(label="Save As", accelerator=keybinds["Save As"])
+ filemenu.add_separator()
+ # filemenu.add_command(label="Close Tab", accelerator=keybinds["Close Tab"])
+ if self.system == "aqua":
+ filemenu.add_command(
+ label="Close Window", accelerator=mac_keybinds["Close Window"]
+ )
+ else:
+ filemenu.add_command(label="Quit", accelerator=keybinds["Close"])
+
+ # Configure Menubar for the current window
+ return menubar
+
+ # Event Logger
+ def log(self, message):
+ if self.debug:
+ logging.info(message)
+
+ # Save Preferences
+ def save_prefs(self, event):
+ if not self.debug:
+ self.prefs.set("width", self.winfo_width())
+ self.prefs.set("height", self.winfo_height())
+ self.prefs.set("x_pos", self.winfo_x())
+ self.prefs.set("y_pos", self.winfo_y())
+ self.prefs.save()
def show_preferences(self):
print("Show Preferences")
- def on_close(self):
- if self.system == "aqua":
- self.destroy()
- else:
- self.quit()
-
@click.command()
@click.option("--debug", is_flag=True, help="Enable debug mode.")
-def main(debug):
+def runtexty(debug):
+ logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
if debug:
logging.info("Running in debug mode. Preferences will not be saved.")
- texty = Texty(debug=debug)
- texty.protocol("WM_DELETE_WINDOW", texty.on_close)
- texty.mainloop()
+ Texty(debug=debug)
if __name__ == "__main__":
- main()
+ runtexty()