From ba0cf50ad56d7286aa8ae22d2627539bb0fcbf38 Mon Sep 17 00:00:00 2001 From: itdominator <1itdominator@gmail.com> Date: Sat, 3 Dec 2022 17:00:54 -0600 Subject: [PATCH] Moved rename functionality to class a new glade file --- .../SolarFM/solarfm/core/controller.py | 22 +- .../SolarFM/solarfm/core/controller_data.py | 5 + .../solarfm/core/mixins/show_hide_mixin.py | 8 - .../signals/file_action_signals_mixin.py | 2 +- .../SolarFM/solarfm/utils/settings.py | 32 +-- .../solarfm/widgets/context_menu_widget.py | 2 + .../SolarFM/solarfm/widgets/rename_widget.py | 81 ++++++ .../usr/share/solarfm/Main_Window.glade | 237 ----------------- .../share/solarfm/ui_widgets/rename_ui.glade | 241 ++++++++++++++++++ 9 files changed, 348 insertions(+), 282 deletions(-) create mode 100644 src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/rename_widget.py create mode 100644 user_config/usr/share/solarfm/ui_widgets/rename_ui.glade diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/controller.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/controller.py index 644fb0d..e0a57b7 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/controller.py +++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/controller.py @@ -13,7 +13,6 @@ from gi.repository import GLib from .controller_data import Controller_Data from .mixins.signals_mixins import SignalsMixins from .ui import UI -from widgets.context_menu_widget import ContextMenuWidget @@ -25,8 +24,6 @@ class Controller(UI, SignalsMixins, Controller_Data): self.setup_controller_data() self.generate_windows(self.fm_controller_data) - ContextMenuWidget().build_context_menu() - if args.no_plugins == "false": self.plugins.launch_plugins() @@ -109,7 +106,7 @@ class Controller(UI, SignalsMixins, Controller_Data): self.hide_context_menu() self.hide_new_file_menu() - self.hide_edit_file_menu() + event_system.emit("do_hide_edit_file_menu") if action == "open": self.open_files() @@ -135,23 +132,6 @@ class Controller(UI, SignalsMixins, Controller_Data): self.save_load_session(action) - def set_to_title_case(self, widget, eve=None): - rename_widget = self.builder.get_object("new_rename_fname") - rename_widget.set_text( rename_widget.get_text().title() ) - - def set_to_upper_case(self, widget, eve=None): - rename_widget = self.builder.get_object("new_rename_fname") - rename_widget.set_text( rename_widget.get_text().upper() ) - - def set_to_lower_case(self, widget, eve=None): - rename_widget = self.builder.get_object("new_rename_fname") - rename_widget.set_text( rename_widget.get_text().lower() ) - - def set_to_invert_case(self, widget, eve=None): - rename_widget = self.builder.get_object("new_rename_fname") - rename_widget.set_text( rename_widget.get_text().swapcase() ) - - @endpoint_registry.register(rule="go_home") def go_home(self, widget=None, eve=None): self.builder.get_object("go_home").released() diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/controller_data.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/controller_data.py index 31f3d16..28ae689 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/controller_data.py +++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/controller_data.py @@ -12,6 +12,8 @@ from gi.repository import Gtk from gi.repository import GLib # Application imports +from widgets.context_menu_widget import ContextMenuWidget +from widgets.rename_widget import RenameWidget from shellfm.windows.controller import WindowController from plugins.plugins_controller import PluginsController @@ -37,6 +39,9 @@ class Controller_Data: self.builder = settings.get_builder() self.keybindings = settings.get_keybindings() + RenameWidget() + ContextMenuWidget() + self.fm_controller = WindowController() self.plugins = PluginsController() self.fm_controller_data = self.fm_controller.get_state_from_file() diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/show_hide_mixin.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/show_hide_mixin.py index 389b783..9412b92 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/show_hide_mixin.py +++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/show_hide_mixin.py @@ -119,14 +119,6 @@ class ShowHideMixin: def show_io_popup(self, widget=None, eve=None): self.builder.get_object("io_popup").popup() - def hide_edit_file_menu(self, widget=None, eve=None): - self.builder.get_object("edit_file_menu").hide() - - def hide_edit_file_menu_enter_key(self, widget=None, eve=None): - keyname = Gdk.keyval_name(eve.keyval).lower() - if keyname in ["return", "enter"]: - self.builder.get_object("edit_file_menu").hide() - def hide_edit_file_menu_skip(self, widget=None, eve=None): self.edit_file_menu.response(Gtk.ResponseType.CLOSE) diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/signals/file_action_signals_mixin.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/signals/file_action_signals_mixin.py index dee50f3..170dbbd 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/signals/file_action_signals_mixin.py +++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/signals/file_action_signals_mixin.py @@ -179,7 +179,7 @@ class FileActionSignalsMixin: self.skip_edit = False self.cancel_edit = False - self.hide_edit_file_menu() + event_system.emit("do_hide_edit_file_menu") self.selected_files.clear() def cut_files(self): diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/utils/settings.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/utils/settings.py index d4229a8..f73c5b0 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/utils/settings.py +++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/utils/settings.py @@ -19,20 +19,21 @@ from .keybindings import Keybindings class Settings: def __init__(self): - self._SCRIPT_PTH = os.path.dirname(os.path.realpath(__file__)) - self._USER_HOME = path.expanduser('~') - self._CONFIG_PATH = f"{self._USER_HOME}/.config/{app_name.lower()}" - self._PLUGINS_PATH = f"{self._CONFIG_PATH}/plugins" - self._USR_SOLARFM = f"/usr/share/{app_name.lower()}" + self._SCRIPT_PTH = os.path.dirname(os.path.realpath(__file__)) + self._USER_HOME = path.expanduser('~') + self._CONFIG_PATH = f"{self._USER_HOME}/.config/{app_name.lower()}" + self._UI_WIDEGTS_PATH = f"{self._CONFIG_PATH}/ui_widgets" + self._PLUGINS_PATH = f"{self._CONFIG_PATH}/plugins" + self._USR_SOLARFM = f"/usr/share/{app_name.lower()}" - self._CSS_FILE = f"{self._CONFIG_PATH}/stylesheet.css" - self._GLADE_FILE = f"{self._CONFIG_PATH}/Main_Window.glade" - self._KEY_BINDINGS = f"{self._CONFIG_PATH}/key-bindings.json" - self._DEFAULT_ICONS = f"{self._CONFIG_PATH}/icons" - self._WINDOW_ICON = f"{self._DEFAULT_ICONS}/{app_name.lower()}.png" - self._CONTEXT_MENU = f"{self._CONFIG_PATH}/contexct_menu.json" - self._PID_FILE = f"{self._CONFIG_PATH}/{app_name.lower()}.pid" - self._ICON_THEME = Gtk.IconTheme.get_default() + self._CSS_FILE = f"{self._CONFIG_PATH}/stylesheet.css" + self._GLADE_FILE = f"{self._CONFIG_PATH}/Main_Window.glade" + self._KEY_BINDINGS = f"{self._CONFIG_PATH}/key-bindings.json" + self._DEFAULT_ICONS = f"{self._CONFIG_PATH}/icons" + self._WINDOW_ICON = f"{self._DEFAULT_ICONS}/{app_name.lower()}.png" + self._CONTEXT_MENU = f"{self._CONFIG_PATH}/contexct_menu.json" + self._PID_FILE = f"{self._CONFIG_PATH}/{app_name.lower()}.pid" + self._ICON_THEME = Gtk.IconTheme.get_default() if not os.path.exists(self._CONFIG_PATH): os.mkdir(self._CONFIG_PATH) @@ -149,8 +150,9 @@ class Settings: def get_context_menu_data(self) -> Gtk.Builder: return self._context_menu_data - def get_main_window(self) -> Gtk.ApplicationWindow: return self._main_window - def get_builder(self) -> Gtk.Builder: return self._builder + def get_main_window(self) -> Gtk.ApplicationWindow: return self._main_window + def get_builder(self) -> Gtk.Builder: return self._builder + def get_ui_widgets_path(self) -> Gtk.Builder: return self._UI_WIDEGTS_PATH def get_logger(self) -> Logger: return self._logger def get_keybindings(self) -> Keybindings: return self._keybindings def get_plugins_path(self) -> str: return self._PLUGINS_PATH diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/context_menu_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/context_menu_widget.py index 875dbfc..2efeba8 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/context_menu_widget.py +++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/context_menu_widget.py @@ -18,6 +18,8 @@ class ContextMenuWidget(Gtk.Menu): self._context_menu_data = settings.get_context_menu_data() self._window = settings.get_main_window() + self.build_context_menu() + def make_submenu(self, name, data, keys): menu = Gtk.Menu() diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/rename_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/rename_widget.py new file mode 100644 index 0000000..0683a31 --- /dev/null +++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/rename_widget.py @@ -0,0 +1,81 @@ +# Python imports + +# Lib imports +import inspect +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk +gi.require_version('Gdk', '3.0') +from gi.repository import Gtk +from gi.repository import Gdk + +# Application imports + + +class RenameWidget: + """docstring for RenameWidget.""" + + def __init__(self): + super(RenameWidget, self).__init__() + _GLADE_FILE = f"{settings.get_ui_widgets_path()}/rename_ui.glade" + builder = settings.get_builder() + self._builder = Gtk.Builder() + + self._builder.add_from_file(_GLADE_FILE) + edit_file_menu = self._builder.get_object("edit_file_menu") + new_rename_fname = self._builder.get_object("new_rename_fname") + file_to_rename_label = self._builder.get_object("file_to_rename_label") + + builder.expose_object(f"edit_file_menu", edit_file_menu) + builder.expose_object(f"new_rename_fname", new_rename_fname) + builder.expose_object(f"file_to_rename_label", file_to_rename_label) + + self._setup_styling() + self._setup_signals() + self._load_widgets() + + + def _setup_styling(self): + ... + + def _setup_signals(self): + event_system.subscribe("do_hide_edit_file_menu", self.hide_edit_file_menu) + + classes = [self] + handlers = {} + for c in classes: + methods = None + try: + methods = inspect.getmembers(c, predicate=inspect.ismethod) + handlers.update(methods) + except Exception as e: + print(repr(e)) + + self._builder.connect_signals(handlers) + + def _load_widgets(self): + ... + + def set_to_title_case(self, widget, eve=None): + rename_widget = self._builder.get_object("new_rename_fname") + rename_widget.set_text( rename_widget.get_text().title() ) + + def set_to_upper_case(self, widget, eve=None): + rename_widget = self._builder.get_object("new_rename_fname") + rename_widget.set_text( rename_widget.get_text().upper() ) + + def set_to_lower_case(self, widget, eve=None): + rename_widget = self._builder.get_object("new_rename_fname") + rename_widget.set_text( rename_widget.get_text().lower() ) + + def set_to_invert_case(self, widget, eve=None): + rename_widget = self._builder.get_object("new_rename_fname") + rename_widget.set_text( rename_widget.get_text().swapcase() ) + + def hide_edit_file_menu(self, widget=None, eve=None): + self._builder.get_object("edit_file_menu").hide() + + def hide_edit_file_menu_enter_key(self, widget=None, eve=None): + keyname = Gdk.keyval_name(eve.keyval).lower() + if keyname in ["return", "enter"]: + self._builder.get_object("edit_file_menu").hide() diff --git a/user_config/usr/share/solarfm/Main_Window.glade b/user_config/usr/share/solarfm/Main_Window.glade index 8855f55..42fdd5a 100644 --- a/user_config/usr/share/solarfm/Main_Window.glade +++ b/user_config/usr/share/solarfm/Main_Window.glade @@ -488,12 +488,6 @@ SolarFM is developed on Atom, git, and using Python 3+ with Gtk GObject introspe gtk-stop - - True - False - gtk-edit - 3 - False dialog @@ -554,11 +548,6 @@ SolarFM is developed on Atom, git, and using Python 3+ with Gtk GObject introspe button12 - - True - False - gtk-media-forward - True False @@ -1363,232 +1352,6 @@ SolarFM is developed on Atom, git, and using Python 3+ with Gtk GObject introspe - - False - False - True - center-always - True - dialog - True - True - False - False - center - main_window - - - False - 5 - 5 - 5 - 5 - vertical - 2 - - - False - end - - - gtk-cancel - cancel_renames - True - True - True - True - - - True - True - 0 - - - - - Skip - skip_renames - True - True - True - skip_img - True - - - True - True - 1 - - - - - False - False - 0 - - - - - True - False - vertical - - - True - False - - - True - False - Rename: - - - False - True - 0 - - - - - True - False - - - True - True - 1 - - - - - False - True - 0 - - - - - 500 - 26 - True - True - True - Rename To: - True - gtk-edit - False - False - False - False - To: - - - - False - True - 1 - - - - - True - False - True - expand - - - Title Case - True - True - True - - - - True - True - 0 - - - - - Upper Case - True - True - True - - - - True - True - 1 - - - - - Lower Case - True - True - True - - - - True - True - 2 - - - - - Invert Case - True - True - True - - - - True - True - 3 - - - - - False - True - 2 - - - - - Rename - rename - True - True - True - rename_img - True - - - - False - True - 3 - - - - - True - True - 1 - - - - - - button2 - button1 - - 120 False diff --git a/user_config/usr/share/solarfm/ui_widgets/rename_ui.glade b/user_config/usr/share/solarfm/ui_widgets/rename_ui.glade new file mode 100644 index 0000000..685a515 --- /dev/null +++ b/user_config/usr/share/solarfm/ui_widgets/rename_ui.glade @@ -0,0 +1,241 @@ + + + + + + True + False + gtk-edit + 3 + + + True + False + gtk-media-forward + + + False + False + True + center-always + True + dialog + True + True + False + False + center + + + False + 5 + 5 + 5 + 5 + vertical + 2 + + + False + end + + + gtk-cancel + cancel_renames + True + True + True + True + + + True + True + 0 + + + + + Skip + skip_renames + True + True + True + skip_img + True + + + True + True + 1 + + + + + False + False + 0 + + + + + True + False + vertical + + + True + False + + + True + False + Rename: + + + False + True + 0 + + + + + True + False + + + True + True + 1 + + + + + False + True + 0 + + + + + 500 + 26 + True + True + True + Rename To: + True + gtk-edit + False + False + False + False + To: + + + + False + True + 1 + + + + + True + False + True + expand + + + Title Case + True + True + True + + + + True + True + 0 + + + + + Upper Case + True + True + True + + + + True + True + 1 + + + + + Lower Case + True + True + True + + + + True + True + 2 + + + + + Invert Case + True + True + True + + + + True + True + 3 + + + + + False + True + 2 + + + + + Rename + rename + True + True + True + rename_img + True + + + + False + True + 3 + + + + + True + True + 1 + + + + + + button2 + button1 + + +