diff options
| author | Bobby <[email protected]> | 2022-11-06 02:03:59 -0500 |
|---|---|---|
| committer | Bobby <[email protected]> | 2022-11-06 02:03:59 -0500 |
| commit | eb1610e6daaadd6792b4b57e372cf7ea237b949a (patch) | |
| tree | a6ee0f4c88a80ced76073dbd409bc1a96cd06064 | |
| parent | cc117cf27d280843ee724c1cd59003bedb2823b0 (diff) | |
| download | texty-eb1610e6daaadd6792b4b57e372cf7ea237b949a.tar.xz texty-eb1610e6daaadd6792b4b57e372cf7ea237b949a.zip | |
chore: added keybindings
| -rw-r--r-- | .DS_Store | bin | 0 -> 6148 bytes | |||
| -rw-r--r-- | setup.py | 2 | ||||
| -rw-r--r-- | src/config/defaults.py | 35 | ||||
| -rw-r--r-- | src/texty.py | 46 |
4 files changed, 74 insertions, 9 deletions
diff --git a/.DS_Store b/.DS_Store Binary files differnew file mode 100644 index 0000000..72f0653 --- /dev/null +++ b/.DS_Store @@ -183,11 +183,13 @@ def sort(): cli.add_command(sort) + @click.command(help="Build the project.") def build(): logger.info("Building the project...") os.system("pyinstaller --onefile --windowed --name Texty src/texty.py") + cli.add_command(build) if __name__ == "__main__": diff --git a/src/config/defaults.py b/src/config/defaults.py index 87bd5fb..557ea61 100644 --- a/src/config/defaults.py +++ b/src/config/defaults.py @@ -1,7 +1,42 @@ PREFERENCES_FILE = "texty.prefs" + DEFAULT_PREFS = { "width": 800, "height": 600, "x_pos": "center", "y_pos": "center", } + +KEYBINDS = { + "New Text File": f"meta-N", # New Text File + "New Window": f"meta-Shift-N", # New Window + "New Tab": f"meta-T", # New Tab + "Open File": f"meta-O", # Open File + "Save": f"meta-S", # Save + "Save As": f"meta-Shift-S", # Save As + "Close": f"meta-W", # Close + "Quit": f"meta-Q", # Quit + "Undo": f"meta-Z", # Undo + "Redo": f"meta-Shift-Z", # Redo + "Cut": f"meta-X", # Cut + "Copy": f"meta-C", # Copy + "Paste": f"meta-V", # Paste + "Paste and Match Style": f"meta-Shift-V", # Paste and Match Style + "Select All": f"meta-A", # Select All + "Find": f"meta-F", # Find + "Find Next": f"meta-G", # Find Next + "Find Previous": f"meta-Shift-G", # Find Previous + "Replace": f"meta-R", # Replace + "Go To Line": f"meta-L", # Go To Line + "Word Wrap": f"meta-Shift-W", # Word Wrap + "Print Preview": f"meta-Shift-P", # Print Preview + "Print": f"meta-P", # Print + "Maximize": f"meta-M", # Maximize +} + +MAC_KEYBINDS = { + "Preferences": f"meta-,", # Preferences + "Hide Texty": f"meta-H", # Hide Texty + "Hide Others": f"meta-Shift-H", # Hide Others + "Show All": f"meta-Shift-A", # Show All +} diff --git a/src/texty.py b/src/texty.py index 26626ed..3b043e5 100644 --- a/src/texty.py +++ b/src/texty.py @@ -8,7 +8,7 @@ import tkinter as tk import click -from config.defaults import DEFAULT_PREFS, PREFERENCES_FILE +from config.defaults import DEFAULT_PREFS, KEYBINDS, MAC_KEYBINDS, PREFERENCES_FILE from helpers.preferences import PreferenceManager logging.basicConfig(stream=sys.stdout, level=logging.DEBUG) @@ -20,23 +20,28 @@ class Texty(tk.Tk): self.title("Texty") self.debug = debug self.prefs = PreferenceManager(DEFAULT_PREFS, PREFERENCES_FILE) - - if self.debug: - logging.info("Running in debug mode. Preferences will not be saved.") - self.prefs.reset() - self.set_geometry() self.protocol("WM_DELETE_WINDOW", self.on_close) self.system = self.call("tk", "windowingsystem") - if self.system == "aqua": - self.option_add("*tearOff", False) + 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() # Create Menu Bar self.bind_menu() + def log(self, message): + if self.debug: + logging.info(message) + def set_geometry(self): width = self.prefs.get("width") height = self.prefs.get("height") @@ -51,6 +56,9 @@ class Texty(tk.Tk): 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) + ) def save_prefs(self, event): if not self.debug: @@ -61,7 +69,25 @@ class Texty(tk.Tk): self.prefs.save() def bind_menu(self): - pass + menubar = tk.Menu(self) + + 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) + + if self.system == "aqua": + self.log("MacOS detected, Additional Keybinds set to %s" % mac_keybinds) + appmenu = tk.Menu(menubar, name="apple") + menubar.add_cascade(menu=appmenu) + appmenu.add_command(label="About Texty") + appmenu.add_separator() + self.createcommand("tk::mac::ShowPreferences", self.show_preferences) + + self.config(menu=menubar) + + def show_preferences(self): + print("Show Preferences") def on_close(self): if self.system == "aqua": @@ -73,6 +99,8 @@ class Texty(tk.Tk): @click.command() @click.option("--debug", is_flag=True, help="Enable debug mode.") def main(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() |
