From c3c85a30407fba6e8083e1bfbf8e4cff018c8ab5 Mon Sep 17 00:00:00 2001 From: itdominator <1itdominator@gmail.com> Date: Thu, 29 Feb 2024 19:42:40 -0600 Subject: [PATCH] Added delete of command; added initial special key handling in commands --- src/__builtins__.py | 32 ++++++++++++-------- src/core/columns/controls_column.py | 47 +++++++++++++++++++++++++---- src/libs/logger.py | 9 ++++-- 3 files changed, 68 insertions(+), 20 deletions(-) diff --git a/src/__builtins__.py b/src/__builtins__.py index 86c482d..31b8b30 100644 --- a/src/__builtins__.py +++ b/src/__builtins__.py @@ -6,6 +6,8 @@ import threading # Lib imports # Application imports +from libs.logger import Logger + from libs.pyautogui_control import ControlMixin from libs.endpoint_registry import EndpointRegistry from libs.event_system import EventSystem @@ -73,24 +75,25 @@ builtins.debug = False builtins.app_settings = None builtins.get_clipboard = ['xclip','-selection', 'clipboard', '-o'] builtins.set_clipboard = ['xclip','-selection','clipboard'] -builtins.endpoint_registry = EndpointRegistry() -builtins.event_system = EventSystem() -builtins.typwriter = Pyautogui_Controller() +builtins.FKEYS = [ f"F{i}" for i in range(1, 13) ] +builtins.LSIDE_KEYS = ["", "", ""] +builtins.RSIDE_KEYS = ["", "", ""] - -_USER_HOME = os.path.expanduser('~') -_USR_PATH = f"/usr/share/{app_name.lower()}" -_CONFIG_PATH = f"{_USER_HOME}/.config/{app_name.lower()}" -_ICON_FILE = f"{_CONFIG_PATH}/icons/{app_name.lower()}.png" -_CSS_FILE = f"{_CONFIG_PATH}/stylesheet.css" -_EMOJI_FILE = f"{_CONFIG_PATH}/emoji.json" +_USER_HOME = os.path.expanduser('~') +_USR_PATH = f"/usr/share/{app_name.lower()}" +_CONFIG_PATH = f"{_USER_HOME}/.config/{app_name.lower()}" +_ICON_FILE = f"{_CONFIG_PATH}/icons/{app_name.lower()}.png" +_CSS_FILE = f"{_CONFIG_PATH}/stylesheet.css" +_EMOJI_FILE = f"{_CONFIG_PATH}/emoji.json" +_LOG_FILE = f"{_CONFIG_PATH}/application.log" +ch_log_lvl: int = 10 +fh_log_lvl: int = 20 if not os.path.exists(_ICON_FILE): _ICON_FILE = f"{_USR_PATH}/icons/{app_name.lower()}.png" if not os.path.exists(_ICON_FILE): - print(_ICON_FILE) raise MissingConfigError("Unable to find the application icon.") if not os.path.exists(_CSS_FILE): @@ -104,8 +107,13 @@ if not os.path.exists(_EMOJI_FILE): raise MissingConfigError("Unable to find the stylesheet.") - builtins.CONFIG_PATH = _CONFIG_PATH builtins.ICON_FILE = _ICON_FILE builtins.CSS_FILE = _CSS_FILE builtins.EMOJI_FILE = _EMOJI_FILE + + +builtins.logger = Logger(_LOG_FILE, ch_log_lvl, fh_log_lvl).get_logger() +builtins.endpoint_registry = EndpointRegistry() +builtins.event_system = EventSystem() +builtins.typwriter = Pyautogui_Controller() \ No newline at end of file diff --git a/src/core/columns/controls_column.py b/src/core/columns/controls_column.py index 9cc5b05..7045176 100644 --- a/src/core/columns/controls_column.py +++ b/src/core/columns/controls_column.py @@ -52,9 +52,9 @@ class List_Box(Gtk.ScrolledWindow): event_system.subscribe("del_command", self.del_command) def add_widgets(self): - tree, self.store = self.create_treeview() + self.tree, self.store = self.create_treeview() - self.add(tree) + self.add(self.tree) self.set_size_request(360, 240) def create_treeview(self): @@ -108,9 +108,19 @@ class List_Box(Gtk.ScrolledWindow): f.write( commands.strip() ) def _row_activated(self, tree_view, path, column): - itr = self.store.get_iter(path) - command = self.store.get_value(itr, 0) - typwriter.type(command) + itr = self.store.get_iter(path) + command = self.store.get_value(itr, 0) + use_special = False + + for arg in LSIDE_KEYS + RSIDE_KEYS + FKEYS: + if arg in command: + use_special = True + break + + if use_special: + self.handle_as_special(command) + else: + typwriter.type(command) def run_command(self): ... @@ -119,7 +129,32 @@ class List_Box(Gtk.ScrolledWindow): self.store.append([command]) def del_command(self): - ... + path, column = self.tree.get_cursor() + + if not path or not column: return + + model = self.tree.get_model() + itr = model.get_iter(path) + + if not itr: return + + self.store.remove(itr) + + def handle_as_special(self, command): + lside_count = [] + rside_count = [] + + for arg in LSIDE_KEYS: + lside_count.append( command.count(arg) ) + + for arg in RSIDE_KEYS: + rside_count.append( command.count(arg) ) + + if not lside_count == rside_count: + logger.info("Special keys don't match in open/close count...") + return + + typwriter.press_special_keys(command) class CommandEntry(Gtk.Box): diff --git a/src/libs/logger.py b/src/libs/logger.py index c33444f..10e93c4 100644 --- a/src/libs/logger.py +++ b/src/libs/logger.py @@ -1,10 +1,15 @@ # Python imports -import os, logging +import os +import logging + +# Lib imports # Application imports +from .singleton import Singleton -class Logger: + +class Logger(Singleton): """ Create a new logging object and return it. :note: