From 56b8ee6117eb236f02f3169904638f45f75a9056 Mon Sep 17 00:00:00 2001 From: itdominator <1itdominator@gmail.com> Date: Sun, 20 Feb 2022 01:32:51 -0600 Subject: [PATCH] Import refactor, deb build update, docstring additions --- bin/solarfm-0-0-1-x64.deb | Bin 130472 -> 132972 bytes src/debs/clear_pycache_dirs.sh | 12 - .../opt/SolarFM/__builtins__.py | 35 +-- .../solarfm-0-0-1-x64/opt/SolarFM/__init__.py | 8 +- .../solarfm-0-0-1-x64/opt/SolarFM/__main__.py | 2 + .../opt/SolarFM/context/__init__.py | 3 + .../opt/SolarFM/context/controller.py} | 10 +- .../opt/SolarFM/context/controller_data.py} | 4 +- .../opt/SolarFM/context/ipc_server_mixin.py} | 2 +- .../opt/SolarFM/context/mixins/__init__.py | 0 .../context/mixins/exception_hook_mixin.py} | 2 +- .../context/mixins/show_hide_mixin.py} | 0 .../opt/SolarFM/context/mixins/ui/__init__.py | 0 .../SolarFM/context/mixins/ui/pane_mixin.py} | 0 .../SolarFM/context/mixins/ui/tab_mixin.py} | 2 +- .../mixins/ui/widget_file_action_mixin.py} | 2 + .../context/mixins/ui/widget_mixin.py} | 2 + .../context/mixins/ui/window_mixin.py} | 4 +- .../opt/SolarFM/context/mixins/ui_mixin.py | 14 ++ .../opt/SolarFM/context/signals/__init__.py | 0 .../context/signals/ipc_signals_mixin.py} | 2 + .../signals/keyboard_signals_mixin.py} | 2 + .../opt/SolarFM/plugins/__init__.py | 3 + .../opt/SolarFM/plugins/plugins.py} | 3 +- .../opt/SolarFM/shellfm/__init__.py | 1 - .../opt/SolarFM/shellfm/windows/Window.py | 66 ------ .../shellfm/windows/WindowController.py | 181 --------------- .../opt/SolarFM/shellfm/windows/__init__.py | 2 - .../opt/SolarFM/shellfm/windows/controller.py | 185 ++++++++++++++++ .../SolarFM/shellfm/windows/view/__init__.py | 5 - .../shellfm/windows/view/icons/__init__.py | 4 - .../windows/view/icons/mixins/__init__.py | 4 - .../shellfm/windows/view/utils/__init__.py | 3 - .../SolarFM/shellfm/windows/views/__init__.py | 0 .../shellfm/windows/views/icons/__init__.py | 0 .../icons/Icon.py => views/icons/icon.py} | 5 +- .../windows/views/icons/mixins/__init__.py | 0 .../icons/mixins/desktopiconmixin.py} | 3 - .../icons/mixins/videoiconmixin.py} | 0 .../icons/mixins/xdg/BaseDirectory.py | 0 .../icons/mixins/xdg/Config.py | 0 .../icons/mixins/xdg/DesktopEntry.py | 0 .../icons/mixins/xdg/Exceptions.py | 0 .../icons/mixins/xdg/IconTheme.py | 0 .../icons/mixins/xdg/IniFile.py | 0 .../icons/mixins/xdg/Locale.py | 0 .../{view => views}/icons/mixins/xdg/Menu.py | 0 .../icons/mixins/xdg/MenuEditor.py | 0 .../{view => views}/icons/mixins/xdg/Mime.py | 0 .../icons/mixins/xdg/RecentFiles.py | 0 .../icons/mixins/xdg/__init__.py | 0 .../{view => views}/icons/mixins/xdg/util.py | 0 .../windows/{view/Path.py => views/path.py} | 0 .../shellfm/windows/views/utils/__init__.py | 0 .../utils/filehandler.py} | 2 +- .../Launcher.py => views/utils/launcher.py} | 0 .../Settings.py => views/utils/settings.py} | 0 .../windows/{view/View.py => views/view.py} | 209 ++++++++++-------- .../opt/SolarFM/shellfm/windows/window.py | 89 ++++++++ .../opt/SolarFM/signal_classes/Controller.py | 165 -------------- .../opt/SolarFM/signal_classes/Plugins.py | 41 ---- .../opt/SolarFM/signal_classes/__init__.py | 8 - .../SolarFM/signal_classes/mixins/__init__.py | 2 - .../signal_classes/mixins/ui/__init__.py | 5 - .../opt/SolarFM/trasher/trash.py | 2 +- .../opt/SolarFM/utils/__init__.py | 6 - .../SolarFM/utils/{Logger.py => logger.py} | 0 .../opt/SolarFM/utils/settings.py} | 2 +- .../SolarFM/solarfm/__builtins__.py | 2 +- .../solarfm-0.0.1/SolarFM/solarfm/__init__.py | 6 +- .../solarfm-0.0.1/SolarFM/solarfm/__main__.py | 2 +- .../SolarFM/solarfm/context/__init__.py | 3 + .../SolarFM/solarfm/context/controller.py | 172 ++++++++++++++ .../solarfm/context/controller_data.py} | 62 +++++- .../solarfm/context/ipc_server_mixin.py} | 7 +- .../solarfm/context/mixins/__init__.py | 0 .../context/mixins/exception_hook_mixin.py | 62 ++++++ .../context/mixins/show_hide_mixin.py} | 27 ++- .../solarfm/context/mixins/ui/__init__.py | 0 .../solarfm/context/mixins/ui/pane_mixin.py} | 2 +- .../solarfm/context/mixins/ui/tab_mixin.py} | 49 ++-- .../mixins/ui/widget_file_action_mixin.py} | 123 +++++++++-- .../context/mixins/ui/widget_mixin.py} | 20 +- .../context/mixins/ui/window_mixin.py} | 32 +-- .../solarfm/context/mixins/ui_mixin.py | 14 ++ .../solarfm/context/signals/__init__.py | 0 .../context/signals/ipc_signals_mixin.py | 29 +++ .../signals/keyboard_signals_mixin.py} | 20 +- .../SolarFM/solarfm/controller/__init__.py | 7 - .../solarfm/controller/mixins/UIMixin.py | 11 - .../solarfm/controller/mixins/__init__.py | 3 - .../solarfm/controller/mixins/ui/__init__.py | 5 - .../solarfm/controller/signals/__init__.py | 2 - .../SolarFM/solarfm/plugins/__init__.py | 1 - .../SolarFM/solarfm/plugins/plugins.py | 99 +++++++++ .../SolarFM/solarfm/utils/__init__.py | 6 - .../solarfm/utils/{Logger.py => logger.py} | 0 .../SolarFM/solarfm/utils/settings.py} | 26 +-- .../usr/share/solarfm/Main_Window.glade | 40 ++-- .../usr/share/solarfm/solarfm-64x64.png | Bin 0 -> 16172 bytes user_config/usr/share/solarfm/solarfm.png | Bin 0 -> 16172 bytes 101 files changed, 1117 insertions(+), 817 deletions(-) delete mode 100644 src/debs/clear_pycache_dirs.sh create mode 100644 src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/__init__.py rename src/{versions/solarfm-0.0.1/SolarFM/solarfm/controller/Controller.py => debs/solarfm-0-0-1-x64/opt/SolarFM/context/controller.py} (94%) rename src/{versions/solarfm-0.0.1/SolarFM/solarfm/controller/Controller_Data.py => debs/solarfm-0-0-1-x64/opt/SolarFM/context/controller_data.py} (97%) rename src/{versions/solarfm-0.0.1/SolarFM/solarfm/controller/IPCServerMixin.py => debs/solarfm-0-0-1-x64/opt/SolarFM/context/ipc_server_mixin.py} (94%) create mode 100644 src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/__init__.py rename src/{versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ExceptionHookMixin.py => debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/exception_hook_mixin.py} (96%) rename src/{versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ShowHideMixin.py => debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/show_hide_mixin.py} (100%) create mode 100644 src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/ui/__init__.py rename src/{versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ui/PaneMixin.py => debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/ui/pane_mixin.py} (100%) rename src/{versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ui/TabMixin.py => debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/ui/tab_mixin.py} (99%) rename src/{versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ui/WidgetFileActionMixin.py => debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/ui/widget_file_action_mixin.py} (99%) rename src/{versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ui/WidgetMixin.py => debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/ui/widget_mixin.py} (99%) rename src/{versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ui/WindowMixin.py => debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/ui/window_mixin.py} (99%) create mode 100644 src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/ui_mixin.py create mode 100644 src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/signals/__init__.py rename src/{versions/solarfm-0.0.1/SolarFM/solarfm/controller/signals/IPCSignalsMixin.py => debs/solarfm-0-0-1-x64/opt/SolarFM/context/signals/ipc_signals_mixin.py} (89%) rename src/{versions/solarfm-0.0.1/SolarFM/solarfm/controller/signals/KeyboardSignalsMixin.py => debs/solarfm-0-0-1-x64/opt/SolarFM/context/signals/keyboard_signals_mixin.py} (98%) create mode 100644 src/debs/solarfm-0-0-1-x64/opt/SolarFM/plugins/__init__.py rename src/{versions/solarfm-0.0.1/SolarFM/solarfm/plugins/Plugins.py => debs/solarfm-0-0-1-x64/opt/SolarFM/plugins/plugins.py} (99%) delete mode 100644 src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/Window.py delete mode 100644 src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/WindowController.py create mode 100644 src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/controller.py delete mode 100644 src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/__init__.py delete mode 100644 src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/__init__.py delete mode 100644 src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/__init__.py delete mode 100644 src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/utils/__init__.py create mode 100644 src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/__init__.py create mode 100644 src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/__init__.py rename src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/{view/icons/Icon.py => views/icons/icon.py} (94%) create mode 100644 src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/__init__.py rename src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/{view/icons/mixins/DesktopIconMixin.py => views/icons/mixins/desktopiconmixin.py} (96%) rename src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/{view/icons/mixins/VideoIconMixin.py => views/icons/mixins/videoiconmixin.py} (100%) rename src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/{view => views}/icons/mixins/xdg/BaseDirectory.py (100%) rename src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/{view => views}/icons/mixins/xdg/Config.py (100%) rename src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/{view => views}/icons/mixins/xdg/DesktopEntry.py (100%) rename src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/{view => views}/icons/mixins/xdg/Exceptions.py (100%) rename src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/{view => views}/icons/mixins/xdg/IconTheme.py (100%) rename src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/{view => views}/icons/mixins/xdg/IniFile.py (100%) rename src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/{view => views}/icons/mixins/xdg/Locale.py (100%) rename src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/{view => views}/icons/mixins/xdg/Menu.py (100%) rename src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/{view => views}/icons/mixins/xdg/MenuEditor.py (100%) rename src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/{view => views}/icons/mixins/xdg/Mime.py (100%) rename src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/{view => views}/icons/mixins/xdg/RecentFiles.py (100%) rename src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/{view => views}/icons/mixins/xdg/__init__.py (100%) rename src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/{view => views}/icons/mixins/xdg/util.py (100%) rename src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/{view/Path.py => views/path.py} (100%) create mode 100644 src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/utils/__init__.py rename src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/{view/utils/FileHandler.py => views/utils/filehandler.py} (98%) rename src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/{view/utils/Launcher.py => views/utils/launcher.py} (100%) rename src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/{view/utils/Settings.py => views/utils/settings.py} (100%) rename src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/{view/View.py => views/view.py} (51%) create mode 100644 src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/window.py delete mode 100644 src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/Controller.py delete mode 100644 src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/Plugins.py delete mode 100644 src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/__init__.py delete mode 100644 src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/__init__.py delete mode 100644 src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/ui/__init__.py rename src/debs/solarfm-0-0-1-x64/opt/SolarFM/utils/{Logger.py => logger.py} (100%) rename src/{versions/solarfm-0.0.1/SolarFM/solarfm/utils/Settings.py => debs/solarfm-0-0-1-x64/opt/SolarFM/utils/settings.py} (99%) create mode 100644 src/versions/solarfm-0.0.1/SolarFM/solarfm/context/__init__.py create mode 100644 src/versions/solarfm-0.0.1/SolarFM/solarfm/context/controller.py rename src/{debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/Controller_Data.py => versions/solarfm-0.0.1/SolarFM/solarfm/context/controller_data.py} (68%) rename src/{debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/IPCServerMixin.py => versions/solarfm-0.0.1/SolarFM/solarfm/context/ipc_server_mixin.py} (83%) create mode 100644 src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/__init__.py create mode 100644 src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/exception_hook_mixin.py rename src/{debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/ShowHideMixin.py => versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/show_hide_mixin.py} (87%) create mode 100644 src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/ui/__init__.py rename src/{debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/ui/PaneMixin.py => versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/ui/pane_mixin.py} (98%) rename src/{debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/ui/TabMixin.py => versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/ui/tab_mixin.py} (82%) rename src/{debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/ui/WidgetFileActionMixin.py => versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/ui/widget_file_action_mixin.py} (74%) rename src/{debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/ui/WidgetMixin.py => versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/ui/widget_mixin.py} (93%) rename src/{debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/ui/WindowMixin.py => versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/ui/window_mixin.py} (91%) create mode 100644 src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/ui_mixin.py create mode 100644 src/versions/solarfm-0.0.1/SolarFM/solarfm/context/signals/__init__.py create mode 100644 src/versions/solarfm-0.0.1/SolarFM/solarfm/context/signals/ipc_signals_mixin.py rename src/{debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/KeyboardSignalsMixin.py => versions/solarfm-0.0.1/SolarFM/solarfm/context/signals/keyboard_signals_mixin.py} (90%) delete mode 100644 src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/__init__.py delete mode 100644 src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/UIMixin.py delete mode 100644 src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/__init__.py delete mode 100644 src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ui/__init__.py delete mode 100644 src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/signals/__init__.py create mode 100644 src/versions/solarfm-0.0.1/SolarFM/solarfm/plugins/plugins.py rename src/versions/solarfm-0.0.1/SolarFM/solarfm/utils/{Logger.py => logger.py} (100%) rename src/{debs/solarfm-0-0-1-x64/opt/SolarFM/utils/Settings.py => versions/solarfm-0.0.1/SolarFM/solarfm/utils/settings.py} (78%) create mode 100644 user_config/usr/share/solarfm/solarfm-64x64.png create mode 100644 user_config/usr/share/solarfm/solarfm.png diff --git a/bin/solarfm-0-0-1-x64.deb b/bin/solarfm-0-0-1-x64.deb index 744a9c4e99507452717284b862c0db7053bd5651..f09cae707b9219bcd13137661349d7f3bc4834b5 100644 GIT binary patch literal 132972 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

qFEiKeBN=9-czjPK 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

6&UbXW7K|pj2RhWjq!u0_pS^z4ed6P*3xxD_ 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

Q@}XeG*FY9Ma4r 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 n-dGI)A6`5Zk{IV=00E@+2Y`?vb>YT 0: - return self._fm_events.pop(0) + def _pop_module_event(self): + if len(self._module_events) > 0: + return self._module_events.pop(0) return None @@ -41,32 +44,32 @@ class Builtins(IPCServerMixin): self._gui_events.append(event) return None - raise Exception("Invald event format! Please do: [type, target, data]") + raise Exception("Invald event format! Please do: [type, target, (data,)]") - def push_fm_event(self, event): + def push_module_event(self, event): if len(event) == 3: - self._fm_events.append(event) + self._module_events.append(event) return None - raise Exception("Invald event format! Please do: [type, target, data]") + raise Exception("Invald event format! Please do: [type, target, (data,)]") def read_gui_event(self): return self._gui_events[0] - def read_fm_event(self): - return self._fm_events[0] + def read_module_event(self): + return self._module_events[0] def consume_gui_event(self): return self._pop_gui_event() - def consume_fm_event(self): - return self._pop_fm_event() + def consume_module_event(self): + return self._pop_module_event() # NOTE: Just reminding myself we can add to builtins two different ways... # __builtins__.update({"event_system": Builtins()}) -builtins.app_name = "SolarFM" +builtins.app_name = "SolarFM" builtins.event_system = Builtins() builtins.event_sleep_time = 0.2 builtins.debug = False diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/__init__.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/__init__.py index a3de649..40d42d5 100644 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/__init__.py +++ b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/__init__.py @@ -4,20 +4,22 @@ import os, inspect, time # Lib imports # Application imports -from utils import Settings -from signal_classes import Controller +from utils.settings import Settings +from context.controller import Controller from __builtins__ import Builtins class Main(Builtins): + """ Create Settings and Controller classes. Bind signal to Builder. Inherit from Builtins to bind global methods and classes. """ + def __init__(self, args, unknownargs): if not debug: event_system.create_ipc_server() time.sleep(0.2) - if not trace_debug: + if not trace_debug and not debug: if not event_system.is_ipc_alive: if unknownargs: for arg in unknownargs: diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/__main__.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/__main__.py index 66870d2..ba575d0 100644 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/__main__.py +++ b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/__main__.py @@ -19,6 +19,8 @@ from __init__ import Main if __name__ == "__main__": + """ Set process title, get arguments, and create GTK main thread. """ + try: # import web_pdb # web_pdb.set_trace() diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/__init__.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/__init__.py new file mode 100644 index 0000000..90cfadc --- /dev/null +++ b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/__init__.py @@ -0,0 +1,3 @@ +""" + Gtk Bound Signal Module +""" diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/Controller.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/controller.py similarity index 94% rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/Controller.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/controller.py index 3f8cf71..3c620f4 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/Controller.py +++ b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/controller.py @@ -7,9 +7,11 @@ gi.require_version('Gtk', '3.0') from gi.repository import Gtk, GLib # Application imports -from .mixins import ExceptionHookMixin, UIMixin -from .signals import IPCSignalsMixin, KeyboardSignalsMixin -from . import Controller_Data +from .mixins.exception_hook_mixin import ExceptionHookMixin +from .mixins.ui_mixin import UIMixin +from .signals.ipc_signals_mixin import IPCSignalsMixin +from .signals.keyboard_signals_mixin import KeyboardSignalsMixin +from .controller_data import Controller_Data def threaded(fn): @@ -21,7 +23,7 @@ def threaded(fn): class Controller(UIMixin, KeyboardSignalsMixin, IPCSignalsMixin, ExceptionHookMixin, Controller_Data): - ''' Controller coordinates the mixins and is somewhat the root hub of it all. ''' + """ Controller coordinates the mixins and is somewhat the root hub of it all. """ def __init__(self, args, unknownargs, _settings): self.setup_controller_data(_settings) self.window.show() diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/Controller_Data.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/controller_data.py similarity index 97% rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/Controller_Data.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/controller_data.py index c737fb3..6d0a849 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/Controller_Data.py +++ b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/controller_data.py @@ -7,13 +7,13 @@ from gi.repository import GLib # Application imports from trasher.xdgtrash import XDGTrash from shellfm.windows.controller import WindowController -from plugins import Plugins +from plugins.plugins import Plugins class Controller_Data: - ''' Controller_Data contains most of the state of the app at ay given time. It also has some support methods. ''' + """ Controller_Data contains most of the state of the app at ay given time. It also has some support methods. """ def setup_controller_data(self, _settings): self.trashman = XDGTrash() diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/IPCServerMixin.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/ipc_server_mixin.py similarity index 94% rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/IPCServerMixin.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/ipc_server_mixin.py index 575f62c..ff12d4a 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/IPCServerMixin.py +++ b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/ipc_server_mixin.py @@ -16,7 +16,7 @@ def threaded(fn): class IPCServerMixin: - ''' Create a listener so that other SolarFM instances send requests back to existing instance. ''' + """ Create a listener so that other SolarFM instances send requests back to existing instance. """ @threaded def create_ipc_server(self): diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/__init__.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ExceptionHookMixin.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/exception_hook_mixin.py similarity index 96% rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ExceptionHookMixin.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/exception_hook_mixin.py index 0efee11..dbaa065 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ExceptionHookMixin.py +++ b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/exception_hook_mixin.py @@ -16,7 +16,7 @@ def threaded(fn): class ExceptionHookMixin: - ''' ExceptionHookMixin custom exception hook to reroute to a Gtk text area. ''' + """ ExceptionHookMixin custom exception hook to reroute to a Gtk text area. """ def custom_except_hook(self, exec_type, value, _traceback): trace = ''.join(traceback.format_tb(_traceback)) diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ShowHideMixin.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/show_hide_mixin.py similarity index 100% rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ShowHideMixin.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/show_hide_mixin.py diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/ui/__init__.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/ui/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ui/PaneMixin.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/ui/pane_mixin.py similarity index 100% rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ui/PaneMixin.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/ui/pane_mixin.py diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ui/TabMixin.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/ui/tab_mixin.py similarity index 99% rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ui/TabMixin.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/ui/tab_mixin.py index 41cc2c8..bfa78cc 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ui/TabMixin.py +++ b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/ui/tab_mixin.py @@ -7,7 +7,7 @@ gi.require_version('Gtk', '3.0') from gi.repository import Gtk # Application imports -from . import WidgetMixin +from .widget_mixin import WidgetMixin diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ui/WidgetFileActionMixin.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/ui/widget_file_action_mixin.py similarity index 99% rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ui/WidgetFileActionMixin.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/ui/widget_file_action_mixin.py index dd8e274..eda4c7f 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ui/WidgetFileActionMixin.py +++ b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/ui/widget_file_action_mixin.py @@ -16,6 +16,8 @@ def threaded(fn): class WidgetFileActionMixin: + """docstring for WidgetFileActionMixin""" + def sizeof_fmt(self, num, suffix="B"): for unit in ["", "K", "M", "G", "T", "Pi", "Ei", "Zi"]: if abs(num) < 1024.0: diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ui/WidgetMixin.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/ui/widget_mixin.py similarity index 99% rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ui/WidgetMixin.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/ui/widget_mixin.py index 17c40cb..84ecac0 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ui/WidgetMixin.py +++ b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/ui/widget_mixin.py @@ -20,6 +20,8 @@ def threaded(fn): class WidgetMixin: + """docstring for WidgetMixin""" + def load_store(self, view, store, save_state=False): store.clear() dir = view.get_current_directory() diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ui/WindowMixin.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/ui/window_mixin.py similarity index 99% rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ui/WindowMixin.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/ui/window_mixin.py index 89167cb..ee1ad8b 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ui/WindowMixin.py +++ b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/ui/window_mixin.py @@ -9,13 +9,15 @@ gi.require_version('Gdk', '3.0') from gi.repository import Gdk, Gio # Application imports -from . import TabMixin, WidgetMixin +from .tab_mixin import TabMixin +from .widget_mixin import WidgetMixin class WindowMixin(TabMixin): """docstring for WindowMixin""" + def generate_windows(self, session_json = None): if session_json: for j, value in enumerate(session_json): diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/ui_mixin.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/ui_mixin.py new file mode 100644 index 0000000..d127b28 --- /dev/null +++ b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/mixins/ui_mixin.py @@ -0,0 +1,14 @@ +# Python imports + +# Gtk imports + +# Application imports +from .show_hide_mixin import ShowHideMixin +from .ui.widget_file_action_mixin import WidgetFileActionMixin +from .ui.pane_mixin import PaneMixin +from .ui.window_mixin import WindowMixin +from .show_hide_mixin import ShowHideMixin + + +class UIMixin(WidgetFileActionMixin, PaneMixin, WindowMixin, ShowHideMixin): + pass diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/signals/__init__.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/signals/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/signals/IPCSignalsMixin.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/signals/ipc_signals_mixin.py similarity index 89% rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/signals/IPCSignalsMixin.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/signals/ipc_signals_mixin.py index 8a2d4d3..3f46614 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/signals/IPCSignalsMixin.py +++ b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/signals/ipc_signals_mixin.py @@ -6,6 +6,8 @@ class IPCSignalsMixin: + """ IPCSignalsMixin handle messages from another starting solarfm process. """ + def print_to_console(self, message=None): print(self) print(message) diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/signals/KeyboardSignalsMixin.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/signals/keyboard_signals_mixin.py similarity index 98% rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/signals/KeyboardSignalsMixin.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/signals/keyboard_signals_mixin.py index ee27648..a801365 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/signals/KeyboardSignalsMixin.py +++ b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/context/signals/keyboard_signals_mixin.py @@ -14,6 +14,8 @@ valid_keyvalue_pat = re.compile(r"[a-z0-9A-Z-_\[\]\(\)\| ]") class KeyboardSignalsMixin: + """ KeyboardSignalsMixin keyboard hooks controller. """ + def unset_keys_and_data(self, widget=None, eve=None): self.ctrlDown = False self.shiftDown = False diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/plugins/__init__.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/plugins/__init__.py new file mode 100644 index 0000000..5624b32 --- /dev/null +++ b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/plugins/__init__.py @@ -0,0 +1,3 @@ +""" + Gtk Bound Plugins Module +""" diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/plugins/Plugins.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/plugins/plugins.py similarity index 99% rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/plugins/Plugins.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/plugins/plugins.py index 7bb9403..dcfa61b 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/plugins/Plugins.py +++ b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/plugins/plugins.py @@ -19,7 +19,8 @@ class Plugin: class Plugins: - """docstring for Plugins""" + """Plugins controller""" + def __init__(self, settings): self._settings = settings self._plugin_list_widget = self._settings.get_builder().get_object("plugin_list") diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/__init__.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/__init__.py index 0c8b591..e69de29 100644 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/__init__.py +++ b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/__init__.py @@ -1 +0,0 @@ -from .windows import WindowController diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/Window.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/Window.py deleted file mode 100644 index 78c5241..0000000 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/Window.py +++ /dev/null @@ -1,66 +0,0 @@ -# Python imports -from random import randint - - -# Lib imports - - -# Application imports -from .view import View - - -class Window: - def __init__(self): - self.id_length = 10 - self.id = "" - self.name = "" - self.nickname = "" - self.isHidden = False - self.views = [] - - self.generate_id() - - - def random_with_N_digits(self, n): - range_start = 10**(n-1) - range_end = (10**n)-1 - return randint(range_start, range_end) - - def generate_id(self): - self.id = str(self.random_with_N_digits(self.id_length)) - - def get_window_id(self): - return self.id - - def create_view(self): - view = View() - self.views.append(view) - return view - - def pop_view(self): - self.views.pop() - - def delete_view_by_id(self, vid): - for view in self.views: - if view.id == vid: - self.views.remove(view) - break - - - def get_view_by_id(self, vid): - for view in self.views: - if view.id == vid: - return view - - def get_view_by_index(self, index): - return self.views[index] - - def get_views_count(self): - return len(self.views) - - def get_all_views(self): - return self.views - - def list_files_from_views(self): - for view in self.views: - print(view.files) diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/WindowController.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/WindowController.py deleted file mode 100644 index 7f068e7..0000000 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/WindowController.py +++ /dev/null @@ -1,181 +0,0 @@ -# Python imports -import threading, subprocess, time, json -from os import path - -# Lib imports - -# Application imports -from . import Window - - -def threaded(fn): - def wrapper(*args, **kwargs): - threading.Thread(target=fn, args=args, kwargs=kwargs, daemon=True).start() - return wrapper - - -class WindowController: - def __init__(self): - USER_HOME = path.expanduser('~') - CONFIG_PATH = USER_HOME + "/.config/solarfm" - self.session_file = CONFIG_PATH + "/session.json" - - self._event_sleep_time = 1 - self.active_window_id = "" - self.active_tab_id = "" - self.windows = [] - - if not trace_debug: - self.fm_event_observer() - - @threaded - def fm_event_observer(self): - while True: - time.sleep(event_sleep_time) - event = event_system.consume_fm_event() - if event: - print(event) - - def set_active_data(self, wid, tid): - self.active_window_id = str(wid) - self.active_tab_id = str(tid) - - def get_active_data(self): - return self.active_window_id, self.active_tab_id - - def create_window(self): - window = Window() - window.name = "window_" + window.id - window.nickname = "window_" + str(len(self.windows) + 1) - - self.windows.append(window) - return window - - - def add_view_for_window(self, win_id): - for window in self.windows: - if window.id == win_id: - return window.create_view() - - def add_view_for_window_by_name(self, name): - for window in self.windows: - if window.name == name: - return window.create_view() - - def add_view_for_window_by_nickname(self, nickname): - for window in self.windows: - if window.nickname == nickname: - return window.create_view() - - def pop_window(self): - self.windows.pop() - - def delete_window_by_id(self, win_id): - for window in self.windows: - if window.id == win_id: - self.windows.remove(window) - break - - def delete_window_by_name(self, name): - for window in self.windows: - if window.name == name: - self.windows.remove(window) - break - - def delete_window_by_nickname(self, nickname): - for window in self.windows: - if window.nickname == nickname: - self.windows.remove(window) - break - - def get_window_by_id(self, win_id): - for window in self.windows: - if window.id == win_id: - return window - - raise(f"No Window by ID {win_id} found!") - - def get_window_by_name(self, name): - for window in self.windows: - if window.name == name: - return window - - raise(f"No Window by Name {name} found!") - - def get_window_by_nickname(self, nickname): - for window in self.windows: - if window.nickname == nickname: - return window - - raise(f"No Window by Nickname {nickname} found!") - - def get_window_by_index(self, index): - return self.windows[index] - - def get_all_windows(self): - return self.windows - - def set_window_nickname(self, win_id = None, nickname = ""): - for window in self.windows: - if window.id == win_id: - window.nickname = nickname - - def list_windows(self): - print("\n[ ---- Windows ---- ]\n") - for window in self.windows: - print(f"\nID: {window.id}") - print(f"Name: {window.name}") - print(f"Nickname: {window.nickname}") - print(f"Is Hidden: {window.isHidden}") - print(f"View Count: {window.get_views_count()}") - print("\n-------------------------\n") - - - - def list_files_from_views_of_window(self, win_id): - for window in self.windows: - if window.id == win_id: - window.list_files_from_views() - break - - def get_views_count(self, win_id): - for window in self.windows: - if window.id == win_id: - return window.get_views_count() - - def get_views_from_window(self, win_id): - for window in self.windows: - if window.id == win_id: - return window.get_all_views() - - - - - def save_state(self): - windows = [] - for window in self.windows: - views = [] - for view in window.views: - views.append(view.get_current_directory()) - - windows.append( - [ - { - 'window':{ - "ID": window.id, - "Name": window.name, - "Nickname": window.nickname, - "isHidden": f"{window.isHidden}", - 'views': views - } - } - ] - ) - - with open(self.session_file, 'w') as outfile: - json.dump(windows, outfile, separators=(',', ':'), indent=4) - - def load_state(self): - if path.isfile(self.session_file): - with open(self.session_file) as infile: - return json.load(infile) diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/__init__.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/__init__.py index cd9f6ce..e69de29 100644 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/__init__.py +++ b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/__init__.py @@ -1,2 +0,0 @@ -from .Window import Window -from .WindowController import WindowController diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/controller.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/controller.py new file mode 100644 index 0000000..67457b1 --- /dev/null +++ b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/controller.py @@ -0,0 +1,185 @@ +# Python imports +import threading, json +from os import path + +# Lib imports + +# Application imports +from .window import Window + + +def threaded(fn): + def wrapper(*args, **kwargs): + threading.Thread(target=fn, args=args, kwargs=kwargs, daemon=True).start() + return wrapper + + +class WindowController: + def __init__(self): + USER_HOME = path.expanduser('~') + CONFIG_PATH = USER_HOME + "/.config/solarfm" + self._session_file = CONFIG_PATH + "/session.json" + + self._event_sleep_time = 1 + self._active_window_id = "" + self._active_tab_id = "" + self._windows = [] + + + def set__wid_and_tid(self, wid, tid): + self._active_window_id = str(wid) + self._active_tab_id = str(tid) + + def get_active_wid_and_tid(self): + return self._active_window_id, self._active_tab_id + + def create_window(self): + window = Window() + window.set_nickname(f"window_{str(len(self._windows) + 1)}") + self._windows.append(window) + return window + + + def add_view_for_window(self, win_id): + for window in self._windows: + if window.get_id() == win_id: + return window.create_view() + + def add_view_for_window_by_name(self, name): + for window in self._windows: + if window.get_name() == name: + return window.create_view() + + def add_view_for_window_by_nickname(self, nickname): + for window in self._windows: + if window.get_nickname() == nickname: + return window.create_view() + + def pop_window(self): + self._windows.pop() + + def delete_window_by_id(self, win_id): + for window in self._windows: + if window.get_id() == win_id: + self._windows.remove(window) + break + + def delete_window_by_name(self, name): + for window in self._windows: + if window.get_name() == name: + self._windows.remove(window) + break + + def delete_window_by_nickname(self, nickname): + for window in self._windows: + if window.get_nickname() == nickname: + self._windows.remove(window) + break + + def get_window_by_id(self, win_id): + for window in self._windows: + if window.get_id() == win_id: + return window + + raise(f"No Window by ID {win_id} found!") + + def get_window_by_name(self, name): + for window in self._windows: + if window.get_name() == name: + return window + + raise(f"No Window by Name {name} found!") + + def get_window_by_nickname(self, nickname): + for window in self._windows: + if window.get_nickname() == nickname: + return window + + raise(f"No Window by Nickname {nickname} found!") + + def get_window_by_index(self, index): + return self._windows[index] + + def get_all_windows(self): + return self._windows + + + def set_window_nickname(self, win_id = None, nickname = ""): + for window in self._windows: + if window.get_id() == win_id: + window.set_nickname(nickname) + + def list_windows(self): + print("\n[ ---- Windows ---- ]\n") + for window in self._windows: + print(f"\nID: {window.get_id()}") + print(f"Name: {window.get_name()}") + print(f"Nickname: {window.get_nickname()}") + print(f"Is Hidden: {window.is_hidden()}") + print(f"View Count: {window.get_views_count()}") + print("\n-------------------------\n") + + + + def list_files_from_views_of_window(self, win_id): + for window in self._windows: + if window.get_id() == win_id: + window.list_files_from_views() + break + + def get_views_count(self, win_id): + for window in self._windows: + if window.get_id() == win_id: + return window.get_views_count() + + def get_views_from_window(self, win_id): + for window in self._windows: + if window.get_id() == win_id: + return window.get_all_views() + + + + + def unload_views_and_windows(self): + for window in self._windows: + window.get_all_views().clear() + + self._windows.clear() + + def save_state(self, session_file = None): + if not session_file: + session_file = self._session_file + + if len(self._windows) > 0: + windows = [] + for window in self._windows: + views = [] + for view in window.get_all_views(): + views.append(view.get_current_directory()) + + windows.append( + [ + { + 'window':{ + "ID": window.get_id(), + "Name": window.get_name(), + "Nickname": window.get_nickname(), + "isHidden": f"{window.is_hidden()}", + 'views': views + } + } + ] + ) + + with open(session_file, 'w') as outfile: + json.dump(windows, outfile, separators=(',', ':'), indent=4) + else: + raise Exception("Window data corrupted! Can not save session!") + + def load_state(self, session_file = None): + if not session_file: + session_file = self._session_file + + if path.isfile(session_file): + with open(session_file) as infile: + return json.load(infile) diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/__init__.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/__init__.py deleted file mode 100644 index 07d9ad7..0000000 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from .utils import * -from .icons import * - -from .Path import Path -from .View import View diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/__init__.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/__init__.py deleted file mode 100644 index b946d44..0000000 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from .mixins import DesktopIconMixin -from .mixins import VideoIconMixin - -from .Icon import Icon diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/__init__.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/__init__.py deleted file mode 100644 index 54bfe39..0000000 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from . import xdg - -from .VideoIconMixin import VideoIconMixin -from .DesktopIconMixin import DesktopIconMixin diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/utils/__init__.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/utils/__init__.py deleted file mode 100644 index 3efd664..0000000 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/utils/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from .Settings import Settings -from .Launcher import Launcher -from .FileHandler import FileHandler diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/__init__.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/__init__.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/Icon.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/icon.py similarity index 94% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/Icon.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/icon.py index 3c14d2f..6afa0e5 100644 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/Icon.py +++ b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/icon.py @@ -3,10 +3,13 @@ import os, subprocess, threading, hashlib from os.path import isfile # Gtk imports +import gi +gi.require_version('GdkPixbuf', '2.0') from gi.repository import GdkPixbuf # Application imports -from .mixins import * +from .mixins.desktopiconmixin import DesktopIconMixin +from .mixins.videoiconmixin import VideoIconMixin def threaded(fn): diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/__init__.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/DesktopIconMixin.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/desktopiconmixin.py similarity index 96% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/DesktopIconMixin.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/desktopiconmixin.py index 2d3c30b..9f5ed2e 100644 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/DesktopIconMixin.py +++ b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/desktopiconmixin.py @@ -3,9 +3,6 @@ import os, subprocess, hashlib from os.path import isfile # Gtk imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk # Application imports from .xdg.DesktopEntry import DesktopEntry diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/VideoIconMixin.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/videoiconmixin.py similarity index 100% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/VideoIconMixin.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/videoiconmixin.py diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/xdg/BaseDirectory.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/xdg/BaseDirectory.py similarity index 100% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/xdg/BaseDirectory.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/xdg/BaseDirectory.py diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/xdg/Config.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/xdg/Config.py similarity index 100% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/xdg/Config.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/xdg/Config.py diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/xdg/DesktopEntry.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/xdg/DesktopEntry.py similarity index 100% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/xdg/DesktopEntry.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/xdg/DesktopEntry.py diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/xdg/Exceptions.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/xdg/Exceptions.py similarity index 100% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/xdg/Exceptions.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/xdg/Exceptions.py diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/xdg/IconTheme.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/xdg/IconTheme.py similarity index 100% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/xdg/IconTheme.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/xdg/IconTheme.py diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/xdg/IniFile.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/xdg/IniFile.py similarity index 100% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/xdg/IniFile.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/xdg/IniFile.py diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/xdg/Locale.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/xdg/Locale.py similarity index 100% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/xdg/Locale.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/xdg/Locale.py diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/xdg/Menu.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/xdg/Menu.py similarity index 100% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/xdg/Menu.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/xdg/Menu.py diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/xdg/MenuEditor.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/xdg/MenuEditor.py similarity index 100% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/xdg/MenuEditor.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/xdg/MenuEditor.py diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/xdg/Mime.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/xdg/Mime.py similarity index 100% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/xdg/Mime.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/xdg/Mime.py diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/xdg/RecentFiles.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/xdg/RecentFiles.py similarity index 100% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/xdg/RecentFiles.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/xdg/RecentFiles.py diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/xdg/__init__.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/xdg/__init__.py similarity index 100% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/xdg/__init__.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/xdg/__init__.py diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/xdg/util.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/xdg/util.py similarity index 100% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/icons/mixins/xdg/util.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/icons/mixins/xdg/util.py diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/Path.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/path.py similarity index 100% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/Path.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/path.py diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/utils/__init__.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/utils/FileHandler.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/utils/filehandler.py similarity index 98% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/utils/FileHandler.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/utils/filehandler.py index d0f7396..105782a 100644 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/utils/FileHandler.py +++ b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/utils/filehandler.py @@ -1,5 +1,5 @@ # Python imports -import os, shutil, subprocess, threading +import os, shutil # Lib imports diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/utils/Launcher.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/utils/launcher.py similarity index 100% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/utils/Launcher.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/utils/launcher.py diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/utils/Settings.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/utils/settings.py similarity index 100% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/utils/Settings.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/utils/settings.py diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/View.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/view.py similarity index 51% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/View.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/view.py index 594dee1..5676659 100644 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/view/View.py +++ b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/views/view.py @@ -1,6 +1,5 @@ # Python imports -import hashlib -import os +import hashlib, re from os import listdir from os.path import isdir, isfile, join @@ -11,64 +10,43 @@ from random import randint # Application imports -from .utils import Settings, Launcher, FileHandler -from .icons import Icon -from . import Path +from .utils.settings import Settings +from .utils.launcher import Launcher +from .utils.filehandler import FileHandler + +from .icons.icon import Icon +from .path import Path class View(Settings, FileHandler, Launcher, Icon, Path): def __init__(self): - self. logger = None - self.id_length = 10 + self.logger = None + self._id_length = 10 - self.id = "" - self.wid = None - self.dir_watcher = None - self.hide_hidden = self.HIDE_HIDDEN_FILES - self.files = [] - self.dirs = [] - self.vids = [] - self.images = [] - self.desktop = [] - self.ungrouped = [] - self.hidden = [] + self._id = "" + self._wid = None + self._dir_watcher = None + self._hide_hidden = self.HIDE_HIDDEN_FILES + self._files = [] + self._dirs = [] + self._vids = [] + self._images = [] + self._desktop = [] + self._ungrouped = [] + self._hidden = [] - self.generate_id() + self._generate_id() self.set_to_home() - - def random_with_N_digits(self, n): - range_start = 10**(n-1) - range_end = (10**n)-1 - return randint(range_start, range_end) - - def generate_id(self): - self.id = str(self.random_with_N_digits(self.id_length)) - - def get_tab_id(self): - return self.id - - def set_wid(self, _wid): - self.wid = _wid - - def get_wid(self): - return self.wid - - def set_dir_watcher(self, watcher): - self.dir_watcher = watcher - - def get_dir_watcher(self): - return self.dir_watcher - def load_directory(self): - path = self.get_path() - self.dirs = [] - self.vids = [] - self.images = [] - self.desktop = [] - self.ungrouped = [] - self.hidden = [] - self.files = [] + path = self.get_path() + self._dirs = [] + self._vids = [] + self._images = [] + self._desktop = [] + self._ungrouped = [] + self._hidden = [] + self._files = [] if not isdir(path): self.set_to_home() @@ -76,40 +54,31 @@ class View(Settings, FileHandler, Launcher, Icon, Path): for f in listdir(path): file = join(path, f) - if self.hide_hidden: + if self._hide_hidden: if f.startswith('.'): - self.hidden.append(f) + self._hidden.append(f) continue if isfile(file): lowerName = file.lower() if lowerName.endswith(self.fvideos): - self.vids.append(f) + self._vids.append(f) elif lowerName.endswith(self.fimages): - self.images.append(f) + self._images.append(f) elif lowerName.endswith((".desktop",)): - self.desktop.append(f) + self._desktop.append(f) else: - self.ungrouped.append(f) + self._ungrouped.append(f) else: - self.dirs.append(f) + self._dirs.append(f) - self.dirs.sort() - self.vids.sort() - self.images.sort() - self.desktop.sort() - self.ungrouped.sort() + self._dirs.sort(key=self._natural_keys) + self._vids.sort(key=self._natural_keys) + self._images.sort(key=self._natural_keys) + self._desktop.sort(key=self._natural_keys) + self._ungrouped.sort(key=self._natural_keys) - self.files = self.dirs + self.vids + self.images + self.desktop + self.ungrouped - - def hash_text(self, text): - return hashlib.sha256(str.encode(text)).hexdigest()[:18] - - def hash_set(self, arry): - data = [] - for arr in arry: - data.append([arr, self.hash_text(arr)]) - return data + self._files = self._dirs + self._vids + self._images + self._desktop + self._ungrouped def is_folder_locked(self, hash): if self.lock_folder: @@ -129,18 +98,18 @@ class View(Settings, FileHandler, Launcher, Icon, Path): def get_not_hidden_count(self): - return len(self.files) + \ - len(self.dirs) + \ - len(self.vids) + \ - len(self.images) + \ - len(self.desktop) + \ - len(self.ungrouped) + return len(self._files) + \ + len(self._dirs) + \ + len(self._vids) + \ + len(self._images) + \ + len(self._desktop) + \ + len(self._ungrouped) def get_hidden_count(self): - return len(self.hidden) + return len(self._hidden) def get_files_count(self): - return len(self.files) + return len(self._files) def get_path_part_from_hash(self, hash): files = self.get_files() @@ -154,13 +123,13 @@ class View(Settings, FileHandler, Launcher, Icon, Path): return file def get_files_formatted(self): - files = self.hash_set(self.files), - dirs = self.hash_set(self.dirs), + files = self._hash_set(self._files), + dirs = self._hash_set(self._dirs), videos = self.get_videos(), - images = self.hash_set(self.images), - desktops = self.hash_set(self.desktop), - ungrouped = self.hash_set(self.ungrouped) - hidden = self.hash_set(self.hidden) + images = self._hash_set(self._images), + desktops = self._hash_set(self._desktop), + ungrouped = self._hash_set(self._ungrouped) + hidden = self._hash_set(self._hidden) return { 'path_head': self.get_path(), @@ -178,7 +147,7 @@ class View(Settings, FileHandler, Launcher, Icon, Path): def get_pixbuf_icon_str_combo(self): data = [] dir = self.get_current_directory() - for file in self.files: + for file in self._files: icon = self.create_icon(dir, file).get_pixbuf() data.append([icon, file]) @@ -188,7 +157,7 @@ class View(Settings, FileHandler, Launcher, Icon, Path): def get_gtk_icon_str_combo(self): data = [] dir = self.get_current_directory() - for file in self.files: + for file in self._files: icon = self.create_icon(dir, file) data.append([icon, file[0]]) @@ -207,23 +176,71 @@ class View(Settings, FileHandler, Launcher, Icon, Path): size = len(parts) return parts[size - 1] + + def set_hiding_hidden(self, state): + self._hide_hidden = state + + def is_hiding_hidden(self): + return self._hide_hidden + def get_dot_dots(self): - return self.hash_set(['.', '..']) + return self._hash_set(['.', '..']) def get_files(self): - return self.hash_set(self.files) + return self._hash_set(self._files) def get_dirs(self): - return self.hash_set(self.dirs) + return self._hash_set(self._dirs) def get_videos(self): - return self.hash_set(self.vids) + return self._hash_set(self._vids) def get_images(self): - return self.hash_set(self.images) + return self._hash_set(self._images) def get_desktops(self): - return self.hash_set(self.desktop) + return self._hash_set(self._desktop) def get_ungrouped(self): - return self.hash_set(self.ungrouped) + return self._hash_set(self._ungrouped) + + def get_hidden(self): + return self._hash_set(self._hidden) + + def get_id(self): + return self._id + + def set_wid(self, _wid): + self._wid = _wid + + def get_wid(self): + return self._wid + + def set_dir_watcher(self, watcher): + self._dir_watcher = watcher + + def get_dir_watcher(self): + return self._dir_watcher + + def _atoi(self, text): + return int(text) if text.isdigit() else text + + def _natural_keys(self, text): + return [ self._atoi(c) for c in re.split('(\d+)',text) ] + + def _hash_text(self, text): + return hashlib.sha256(str.encode(text)).hexdigest()[:18] + + def _hash_set(self, arry): + data = [] + for arr in arry: + data.append([arr, self._hash_text(arr)]) + return data + + def _random_with_N_digits(self, n): + range_start = 10**(n-1) + range_end = (10**n)-1 + return randint(range_start, range_end) + + def _generate_id(self): + self._id = str(self._random_with_N_digits(self._id_length)) diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/window.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/window.py new file mode 100644 index 0000000..58d8414 --- /dev/null +++ b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/shellfm/windows/window.py @@ -0,0 +1,89 @@ +# Python imports +from random import randint + + +# Lib imports + + +# Application imports +from .views.view import View + + +class Window: + def __init__(self): + self._id_length = 10 + self._id = "" + self._name = "" + self._nickname = "" + self._isHidden = False + self._views = [] + + self._generate_id() + self._set_name() + + + def create_view(self): + view = View() + self._views.append(view) + return view + + def pop_view(self): + self._views.pop() + + def delete_view_by_id(self, vid): + for view in self._views: + if view.get_id() == vid: + self._views.remove(view) + break + + + def get_view_by_id(self, vid): + for view in self._views: + if view.get_id() == vid: + return view + + def get_view_by_index(self, index): + return self._views[index] + + def get_views_count(self): + return len(self._views) + + def get_all_views(self): + return self._views + + def list_files_from_views(self): + for view in self._views: + print(view.get_files()) + + + def get_id(self): + return self._id + + def get_name(self): + return self._name + + def get_nickname(self): + return self._nickname + + def is_hidden(self): + return self._isHidden + + + + + def set_nickname(self, nickname): + self._nickname = f"{nickname}" + + def set_is_hidden(self, state): + self._isHidden = f"{state}" + + def _set_name(self): + self._name = "window_" + self.get_id() + + def _random_with_N_digits(self, n): + range_start = 10**(n-1) + range_end = (10**n)-1 + return randint(range_start, range_end) + + def _generate_id(self): + self._id = str(self._random_with_N_digits(self._id_length)) diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/Controller.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/Controller.py deleted file mode 100644 index 5673203..0000000 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/Controller.py +++ /dev/null @@ -1,165 +0,0 @@ -# Python imports -import sys, traceback, threading, inspect, os, time - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk, GLib - -# Application imports -from .mixins.ui import * -from .mixins import ShowHideMixin, KeyboardSignalsMixin -from . import Controller_Data - - -def threaded(fn): - def wrapper(*args, **kwargs): - threading.Thread(target=fn, args=args, kwargs=kwargs, daemon=True).start() - return wrapper - - - - -class Controller(WidgetFileActionMixin, PaneMixin, WindowMixin, ShowHideMixin, \ - KeyboardSignalsMixin, Controller_Data): - def __init__(self, args, unknownargs, _settings): - # sys.excepthook = self.custom_except_hook - self.setup_controller_data(_settings) - self.window.show() - self.generate_windows(self.state) - self.plugins.launch_plugins() - - if not trace_debug: - self.gui_event_observer() - - if unknownargs: - for arg in unknownargs: - if os.path.isdir(arg): - message = f"FILE|{arg}" - event_system.send_ipc_message(message) - - if args.new_tab and os.path.isdir(args.new_tab): - message = f"FILE|{args.new_tab}" - event_system.send_ipc_message(message) - - - def tear_down(self, widget=None, eve=None): - event_system.send_ipc_message("close server") - self.window_controller.save_state() - time.sleep(event_sleep_time) - Gtk.main_quit() - - - @threaded - def gui_event_observer(self): - while True: - time.sleep(event_sleep_time) - event = event_system.consume_gui_event() - if event: - try: - type, target, data = event - method = getattr(self.__class__, type) - GLib.idle_add(method, (self, data,)) - except Exception as e: - print(repr(e)) - - - def custom_except_hook(self, exctype, value, _traceback): - trace = ''.join(traceback.format_tb(_traceback)) - data = f"Exectype: {exctype} <--> Value: {value}\n\n{trace}\n\n\n\n" - start_itr = self.message_buffer.get_start_iter() - self.message_buffer.place_cursor(start_itr) - self.display_message(self.error, data) - - def display_message(self, type, text, seconds=None): - self.message_buffer.insert_at_cursor(text) - self.message_widget.popup() - if seconds: - self.hide_message_timeout(seconds) - - @threaded - def hide_message_timeout(self, seconds=3): - time.sleep(seconds) - GLib.idle_add(self.message_widget.popdown) - - def save_debug_alerts(self, widget=None, eve=None): - start_itr, end_itr = self.message_buffer.get_bounds() - save_location_prompt = Gtk.FileChooserDialog("Choose Save Folder", self.window, \ - action = Gtk.FileChooserAction.SAVE, \ - buttons = (Gtk.STOCK_CANCEL, \ - Gtk.ResponseType.CANCEL, \ - Gtk.STOCK_SAVE, \ - Gtk.ResponseType.OK)) - - text = self.message_buffer.get_text(start_itr, end_itr, False) - resp = save_location_prompt.run() - if (resp == Gtk.ResponseType.CANCEL) or (resp == Gtk.ResponseType.DELETE_EVENT): - pass - elif resp == Gtk.ResponseType.OK: - target = save_location_prompt.get_filename(); - with open(target, "w") as f: - f.write(text) - - save_location_prompt.destroy() - - - def set_arc_buffer_text(self, widget=None, eve=None): - id = widget.get_active_id() - self.arc_command_buffer.set_text(self.arc_commands[int(id)]) - - - def clear_children(self, widget): - for child in widget.get_children(): - widget.remove(child) - - def get_current_state(self): - wid, tid = self.window_controller.get_active_data() - view = self.get_fm_window(wid).get_view_by_id(tid) - iconview = self.builder.get_object(f"{wid}|{tid}|iconview") - store = iconview.get_model() - return wid, tid, view, iconview, store - - def do_action_from_menu_controls(self, widget, eventbutton): - action = widget.get_name() - self.ctrlDown = True - self.hide_context_menu() - self.hide_new_file_menu() - self.hide_edit_file_menu() - - if action == "open": - self.open_files() - if action == "open_with": - self.show_appchooser_menu() - if action == "execute": - self.execute_files() - if action == "execute_in_terminal": - self.execute_files(in_terminal=True) - if action == "rename": - self.rename_files() - if action == "cut": - self.to_copy_files.clear() - self.cut_files() - if action == "copy": - self.to_cut_files.clear() - self.copy_files() - if action == "paste": - self.paste_files() - if action == "archive": - self.show_archiver_dialogue() - if action == "delete": - self.delete_files() - if action == "trash": - self.trash_files() - if action == "go_to_trash": - self.builder.get_object("path_entry").set_text(self.trash_files_path) - if action == "restore_from_trash": - self.restore_trash_files() - if action == "empty_trash": - self.empty_trash() - - - if action == "create": - self.create_files() - self.hide_new_file_menu() - - self.ctrlDown = False diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/Plugins.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/Plugins.py deleted file mode 100644 index 8715aac..0000000 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/Plugins.py +++ /dev/null @@ -1,41 +0,0 @@ -# Python imports -import importlib - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk, Gio - -# Application imports - - - - -class Plugins: - """docstring for Plugins""" - def __init__(self, settings): - self._settings = settings - self._plugins_path = self._settings.get_plugins_path() - self._plugins_dir_watcher = None - self._socket = Gtk.Socket().new() - - def launch_plugins(self): - self._set_plugins_watcher() - self.load_plugins() - - def _set_plugins_watcher(self): - self._plugins_dir_watcher = Gio.File.new_for_path(self._plugins_path) \ - .monitor_directory(Gio.FileMonitorFlags.WATCH_MOVES, Gio.Cancellable()) - self._plugins_dir_watcher.connect("changed", self._on_plugins_changed, ()) - - def _on_plugins_changed(self, file_monitor, file, other_file=None, eve_type=None, data=None): - if eve_type in [Gio.FileMonitorEvent.CREATED, Gio.FileMonitorEvent.DELETED, - Gio.FileMonitorEvent.RENAMED, Gio.FileMonitorEvent.MOVED_IN, - Gio.FileMonitorEvent.MOVED_OUT]: - self.load_plugins(file) - - def load_plugins(self, file=None): - print(f"(Re)loading plugins...") - print(locals()) - - # importlib.reload(stl_utils) diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/__init__.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/__init__.py deleted file mode 100644 index 314f976..0000000 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -""" - Gtk Bound Signal Module -""" -from .mixins import * -from .IPCServerMixin import IPCServerMixin -from .Plugins import Plugins -from .Controller_Data import Controller_Data -from .Controller import Controller diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/__init__.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/__init__.py deleted file mode 100644 index e457cb5..0000000 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .KeyboardSignalsMixin import KeyboardSignalsMixin -from .ShowHideMixin import ShowHideMixin diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/ui/__init__.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/ui/__init__.py deleted file mode 100644 index cd23f8d..0000000 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/ui/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from .PaneMixin import PaneMixin -from .WidgetMixin import WidgetMixin -from .TabMixin import TabMixin -from .WindowMixin import WindowMixin -from .WidgetFileActionMixin import WidgetFileActionMixin diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/trasher/trash.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/trasher/trash.py index be29701..4210f9c 100644 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/trasher/trash.py +++ b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/trasher/trash.py @@ -21,7 +21,7 @@ class Trash(object): if os.path.isfile(item): size = size + os.path.getsize(item) elif os.path.isdir(item): - size = size + size_dir(item) + size = size + self.size_dir(item) return size diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/utils/__init__.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/utils/__init__.py index 415301e..e69de29 100644 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/utils/__init__.py +++ b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/utils/__init__.py @@ -1,6 +0,0 @@ -""" - Utils module -""" - -from .Logger import Logger -from .Settings import Settings diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/utils/Logger.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/utils/logger.py similarity index 100% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/utils/Logger.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/utils/logger.py diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/utils/Settings.py b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/utils/settings.py similarity index 99% rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/utils/Settings.py rename to src/debs/solarfm-0-0-1-x64/opt/SolarFM/utils/settings.py index d6a42ee..a02f0ce 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/utils/Settings.py +++ b/src/debs/solarfm-0-0-1-x64/opt/SolarFM/utils/settings.py @@ -12,7 +12,7 @@ from gi.repository import Gdk as gdk # Application imports -from . import Logger +from .logger import Logger class Settings: diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/__builtins__.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/__builtins__.py index 3dcbd14..137213e 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/__builtins__.py +++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/__builtins__.py @@ -4,7 +4,7 @@ import builtins # Lib imports # Application imports -from controller import IPCServerMixin +from context.ipc_server_mixin import IPCServerMixin diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/__init__.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/__init__.py index de673d5..40d42d5 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/__init__.py +++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/__init__.py @@ -4,15 +4,15 @@ import os, inspect, time # Lib imports # Application imports -from utils import Settings -from controller import Controller +from utils.settings import Settings +from context.controller import Controller from __builtins__ import Builtins class Main(Builtins): - ''' Create Settings and Controller classes. Bind signal to Builder. Inherit from Builtins to bind global methods and classes.''' + """ Create Settings and Controller classes. Bind signal to Builder. Inherit from Builtins to bind global methods and classes. """ def __init__(self, args, unknownargs): if not debug: diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/__main__.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/__main__.py index 727a85f..ba575d0 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/__main__.py +++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/__main__.py @@ -19,7 +19,7 @@ from __init__ import Main if __name__ == "__main__": - ''' Set process title, get arguments, and create GTK main thread. ''' + """ Set process title, get arguments, and create GTK main thread. """ try: # import web_pdb diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/__init__.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/__init__.py new file mode 100644 index 0000000..90cfadc --- /dev/null +++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/__init__.py @@ -0,0 +1,3 @@ +""" + Gtk Bound Signal Module +""" diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/controller.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/controller.py new file mode 100644 index 0000000..3c620f4 --- /dev/null +++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/controller.py @@ -0,0 +1,172 @@ +# Python imports +import os, gc, threading, time + +# Lib imports +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk, GLib + +# Application imports +from .mixins.exception_hook_mixin import ExceptionHookMixin +from .mixins.ui_mixin import UIMixin +from .signals.ipc_signals_mixin import IPCSignalsMixin +from .signals.keyboard_signals_mixin import KeyboardSignalsMixin +from .controller_data import Controller_Data + + +def threaded(fn): + def wrapper(*args, **kwargs): + threading.Thread(target=fn, args=args, kwargs=kwargs, daemon=True).start() + return wrapper + + + + +class Controller(UIMixin, KeyboardSignalsMixin, IPCSignalsMixin, ExceptionHookMixin, Controller_Data): + """ Controller coordinates the mixins and is somewhat the root hub of it all. """ + def __init__(self, args, unknownargs, _settings): + self.setup_controller_data(_settings) + self.window.show() + + self.generate_windows(self.state) + self.plugins.launch_plugins() + + if debug: + self.window.set_interactive_debugging(True) + + if not trace_debug: + self.gui_event_observer() + + if unknownargs: + for arg in unknownargs: + if os.path.isdir(arg): + message = f"FILE|{arg}" + event_system.send_ipc_message(message) + + if args.new_tab and os.path.isdir(args.new_tab): + message = f"FILE|{args.new_tab}" + event_system.send_ipc_message(message) + + + def tear_down(self, widget=None, eve=None): + event_system.send_ipc_message("close server") + self.window_controller.save_state() + time.sleep(event_sleep_time) + Gtk.main_quit() + + + @threaded + def gui_event_observer(self): + while True: + time.sleep(event_sleep_time) + event = event_system.consume_gui_event() + if event: + try: + type, target, data = event + if type: + method = getattr(self.__class__, "handle_gui_event_and_set_message") + GLib.idle_add(method, *(self, type, target, data)) + else: + method = getattr(self.__class__, target) + GLib.idle_add(method, *(self, *data,)) + except Exception as e: + print(repr(e)) + + def handle_gui_event_and_set_message(self, type, target, parameters): + method = getattr(self.__class__, f"{target}") + data = method(*(self, *parameters)) + self.plugins.set_message_on_plugin(type, data) + + def open_terminal(self, widget=None, eve=None): + wid, tid = self.window_controller.get_active_wid_and_tid() + view = self.get_fm_window(wid).get_view_by_id(tid) + dir = view.get_current_directory() + view.execute(f"{view.terminal_app}", dir) + + def save_load_session(self, action="save_session"): + wid, tid = self.window_controller.get_active_wid_and_tid() + view = self.get_fm_window(wid).get_view_by_id(tid) + save_load_dialog = self.builder.get_object("save_load_dialog") + + if action == "save_session": + self.window_controller.save_state() + return + elif action == "save_session_as": + save_load_dialog.set_action(Gtk.FileChooserAction.SAVE) + elif action == "load_session": + save_load_dialog.set_action(Gtk.FileChooserAction.OPEN) + else: + raise Exception(f"Unknown action given: {action}") + + save_load_dialog.set_current_folder(view.get_current_directory()) + save_load_dialog.set_current_name("session.json") + response = save_load_dialog.run() + if response == Gtk.ResponseType.OK: + if action == "save_session": + path = f"{save_load_dialog.get_current_folder()}/{save_load_dialog.get_current_name()}" + self.window_controller.save_state(path) + elif action == "load_session": + path = f"{save_load_dialog.get_file().get_path()}" + session_json = self.window_controller.load_state(path) + self.load_session(session_json) + if (response == Gtk.ResponseType.CANCEL) or (response == Gtk.ResponseType.DELETE_EVENT): + pass + + save_load_dialog.hide() + + def load_session(self, session_json): + if debug: + print(f"Session Data: {session_json}") + + self.ctrlDown = False + self.shiftDown = False + self.altDown = False + for notebook in self.notebooks: + self.clear_children(notebook) + + self.window_controller.unload_views_and_windows() + self.generate_windows(session_json) + gc.collect() + + + def do_action_from_menu_controls(self, widget, event_button): + action = widget.get_name() + self.hide_context_menu() + self.hide_new_file_menu() + self.hide_edit_file_menu() + + if action == "open": + self.open_files() + if action == "open_with": + self.show_appchooser_menu() + if action == "execute": + self.execute_files() + if action == "execute_in_terminal": + self.execute_files(in_terminal=True) + if action == "rename": + self.rename_files() + if action == "cut": + self.to_copy_files.clear() + self.cut_files() + if action == "copy": + self.to_cut_files.clear() + self.copy_files() + if action == "paste": + self.paste_files() + if action == "archive": + self.show_archiver_dialogue() + if action == "delete": + self.delete_files() + if action == "trash": + self.trash_files() + if action == "go_to_trash": + self.path_entry.set_text(self.trash_files_path) + if action == "restore_from_trash": + self.restore_trash_files() + if action == "empty_trash": + self.empty_trash() + + if action == "create": + self.show_new_file_menu() + if action in ["save_session", "save_session_as", "load_session"]: + self.save_load_session(action) diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/Controller_Data.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/controller_data.py similarity index 68% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/Controller_Data.py rename to src/versions/solarfm-0.0.1/SolarFM/solarfm/context/controller_data.py index 95d8008..6d0a849 100644 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/Controller_Data.py +++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/controller_data.py @@ -1,20 +1,19 @@ # Python imports -import signal +import sys, os, signal # Lib imports from gi.repository import GLib # Application imports -from shellfm import WindowController from trasher.xdgtrash import XDGTrash -from . import Plugins +from shellfm.windows.controller import WindowController +from plugins.plugins import Plugins class Controller_Data: - def has_method(self, o, name): - return callable(getattr(o, name, None)) + """ Controller_Data contains most of the state of the app at ay given time. It also has some support methods. """ def setup_controller_data(self, _settings): self.trashman = XDGTrash() @@ -37,13 +36,14 @@ class Controller_Data: self.message_buffer = self.builder.get_object("message_buffer") self.arc_command_buffer = self.builder.get_object("arc_command_buffer") + self.exists_file_rename_bttn = self.builder.get_object("exists_file_rename_bttn") self.warning_alert = self.builder.get_object("warning_alert") self.edit_file_menu = self.builder.get_object("edit_file_menu") self.file_exists_dialog = self.builder.get_object("file_exists_dialog") self.exists_file_label = self.builder.get_object("exists_file_label") self.exists_file_field = self.builder.get_object("exists_file_field") self.path_menu = self.builder.get_object("path_menu") - self.exists_file_rename_bttn = self.builder.get_object("exists_file_rename_bttn") + self.path_entry = self.builder.get_object("path_entry") self.bottom_size_label = self.builder.get_object("bottom_size_label") self.bottom_file_count_label = self.builder.get_object("bottom_file_count_label") @@ -82,6 +82,7 @@ class Controller_Data: self.selected_files = [] self.to_copy_files = [] self.to_cut_files = [] + self.soft_update_lock = {} self.single_click_open = False self.is_pane1_hidden = False @@ -104,6 +105,53 @@ class Controller_Data: self.warning = "#ffa800" self.error = "#ff0000" - + sys.excepthook = self.custom_except_hook self.window.connect("delete-event", self.tear_down) GLib.unix_signal_add(GLib.PRIORITY_DEFAULT, signal.SIGINT, self.tear_down) + + def get_current_state(self): + ''' + Returns the state info most useful for any given context and action intent. + + Parameters: + a (obj): self + + Returns: + wid, tid, view, iconview, store + ''' + wid, tid = self.window_controller.get_active_wid_and_tid() + view = self.get_fm_window(wid).get_view_by_id(tid) + iconview = self.builder.get_object(f"{wid}|{tid}|iconview") + store = iconview.get_model() + return wid, tid, view, iconview, store + + + def clear_console(self): + ''' Clears the terminal screen. ''' + os.system('cls' if os.name == 'nt' else 'clear') + + def call_method(self, _method_name, data = None): + ''' + Calls a method from scope of class. + + Parameters: + a (obj): self + b (str): method name to be called + c (*): Data (if any) to be passed to the method. + Note: It must be structured according to the given methods requirements. + + Returns: + Return data is that which the calling method gives. + ''' + method_name = str(_method_name) + method = getattr(self, method_name, lambda data: f"No valid key passed...\nkey={method_name}\nargs={data}") + return method(data) if data else method() + + def has_method(self, obj, name): + ''' Checks if a given method exists. ''' + return callable(getattr(obj, name, None)) + + def clear_children(self, widget): + ''' Clear children of a gtk widget. ''' + for child in widget.get_children(): + widget.remove(child) diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/IPCServerMixin.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/ipc_server_mixin.py similarity index 83% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/IPCServerMixin.py rename to src/versions/solarfm-0.0.1/SolarFM/solarfm/context/ipc_server_mixin.py index be92ace..ff12d4a 100644 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/IPCServerMixin.py +++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/ipc_server_mixin.py @@ -1,5 +1,5 @@ # Python imports -import threading, socket, time +import threading, time from multiprocessing.connection import Listener, Client # Lib imports @@ -16,6 +16,7 @@ def threaded(fn): class IPCServerMixin: + """ Create a listener so that other SolarFM instances send requests back to existing instance. """ @threaded def create_ipc_server(self): @@ -34,7 +35,7 @@ class IPCServerMixin: if "FILE|" in msg: file = msg.split("FILE|")[1].strip() if file: - event_system.push_gui_event(["create_tab_from_ipc", None, file]) + event_system.push_gui_event([None, "handle_file_from_ipc", (file,)]) conn.close() break @@ -47,7 +48,7 @@ class IPCServerMixin: conn.close() break - # NOTE: Not perfect but insures we don't lockup the connection for too long. + # NOTE: Not perfect but insures we don't lock up the connection for too long. end_time = time.time() if (end - start) > self.ipc_timeout: conn.close() diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/__init__.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/exception_hook_mixin.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/exception_hook_mixin.py new file mode 100644 index 0000000..dbaa065 --- /dev/null +++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/exception_hook_mixin.py @@ -0,0 +1,62 @@ +# Python imports +import traceback, threading, time + +# Lib imports +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk, GLib + +# Application imports + + +def threaded(fn): + def wrapper(*args, **kwargs): + threading.Thread(target=fn, args=args, kwargs=kwargs, daemon=True).start() + return wrapper + + +class ExceptionHookMixin: + """ ExceptionHookMixin custom exception hook to reroute to a Gtk text area. """ + + def custom_except_hook(self, exec_type, value, _traceback): + trace = ''.join(traceback.format_tb(_traceback)) + data = f"Exec Type: {exec_type} <--> Value: {value}\n\n{trace}\n\n\n\n" + start_itr = self.message_buffer.get_start_iter() + self.message_buffer.place_cursor(start_itr) + self.display_message(self.error, data) + + def display_message(self, type, text, seconds=None): + self.message_buffer.insert_at_cursor(text) + self.message_widget.popup() + if seconds: + self.hide_message_timeout(seconds) + + @threaded + def hide_message_timeout(self, seconds=3): + time.sleep(seconds) + GLib.idle_add(self.message_widget.popdown) + + def save_debug_alerts(self, widget=None, eve=None): + start_itr, end_itr = self.message_buffer.get_bounds() + save_location_prompt = Gtk.FileChooserDialog("Choose Save Folder", self.window, \ + action = Gtk.FileChooserAction.SAVE, \ + buttons = (Gtk.STOCK_CANCEL, \ + Gtk.ResponseType.CANCEL, \ + Gtk.STOCK_SAVE, \ + Gtk.ResponseType.OK)) + + text = self.message_buffer.get_text(start_itr, end_itr, False) + resp = save_location_prompt.run() + if (resp == Gtk.ResponseType.CANCEL) or (resp == Gtk.ResponseType.DELETE_EVENT): + pass + elif resp == Gtk.ResponseType.OK: + target = save_location_prompt.get_filename(); + with open(target, "w") as f: + f.write(text) + + save_location_prompt.destroy() + + + def set_arc_buffer_text(self, widget=None, eve=None): + sid = widget.get_active_id() + self.arc_command_buffer.set_text(self.arc_commands[int(sid)]) diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/ShowHideMixin.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/show_hide_mixin.py similarity index 87% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/ShowHideMixin.py rename to src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/show_hide_mixin.py index 49b29d8..d73d098 100644 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/ShowHideMixin.py +++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/show_hide_mixin.py @@ -4,7 +4,7 @@ import gi gi.require_version('Gtk', '3.0') gi.require_version('Gdk', '3.0') -from gi.repository import Gtk, Gdk, Gio +from gi.repository import Gtk, Gdk # Application imports @@ -16,7 +16,6 @@ class ShowHideMixin: def stop_file_searching(self, widget=None, eve=None): self.is_searching = False - def show_exists_page(self, widget=None, eve=None): response = self.file_exists_dialog.run() self.file_exists_dialog.hide() @@ -57,7 +56,7 @@ class ShowHideMixin: def show_archiver_dialogue(self, widget=None, eve=None): - wid, tid = self.window_controller.get_active_data() + wid, tid = self.window_controller.get_active_wid_and_tid() view = self.get_fm_window(wid).get_view_by_id(tid) archiver_dialogue = self.builder.get_object("archiver_dialogue") archiver_dialogue.set_action(Gtk.FileChooserAction.SAVE) @@ -81,12 +80,14 @@ class ShowHideMixin: appchooser_widget = self.builder.get_object("appchooser_widget") response = appchooser_menu.run() - if response == Gtk.ResponseType.CANCEL: - self.hide_appchooser_menu() if response == Gtk.ResponseType.OK: self.open_with_files(appchooser_widget) self.hide_appchooser_menu() + if response == Gtk.ResponseType.CANCEL: + self.hide_appchooser_menu() + + def hide_appchooser_menu(self, widget=None, eve=None): self.builder.get_object("appchooser_menu").hide() @@ -95,6 +96,12 @@ class ShowHideMixin: dialog.response(Gtk.ResponseType.OK) + def show_plugins_popup(self, widget=None, eve=None): + self.builder.get_object("plugin_list").popup() + + def hide_plugins_popup(self, widget=None, eve=None): + self.builder.get_object("plugin_list").hide() + def show_context_menu(self, widget=None, eve=None): self.builder.get_object("context_menu").run() @@ -103,12 +110,18 @@ class ShowHideMixin: def show_new_file_menu(self, widget=None, eve=None): - self.builder.get_object("new_file_menu").run() + self.builder.get_object("context_menu_fname").set_text("") + + new_file_menu = self.builder.get_object("new_file_menu") + response = new_file_menu.run() + if response == Gtk.ResponseType.APPLY: + self.create_files() + if response == Gtk.ResponseType.CANCEL: + self.hide_new_file_menu() def hide_new_file_menu(self, widget=None, eve=None): self.builder.get_object("new_file_menu").hide() - def show_edit_file_menu(self, widget=None, eve=None): if widget: widget.grab_focus() diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/ui/__init__.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/ui/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/ui/PaneMixin.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/ui/pane_mixin.py similarity index 98% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/ui/PaneMixin.py rename to src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/ui/pane_mixin.py index 235736d..accd2c4 100644 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/ui/PaneMixin.py +++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/ui/pane_mixin.py @@ -61,5 +61,5 @@ class PaneMixin: def _save_state(self, state, pane_index): window = self.window_controller.get_window_by_index(pane_index - 1) - window.isHidden = state + window.set_is_hidden(state) self.window_controller.save_state() diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/ui/TabMixin.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/ui/tab_mixin.py similarity index 82% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/ui/TabMixin.py rename to src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/ui/tab_mixin.py index 51960dd..bfa78cc 100644 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/ui/TabMixin.py +++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/ui/tab_mixin.py @@ -4,11 +4,10 @@ import os # Lib imports import gi gi.require_version('Gtk', '3.0') -gi.require_version('Gdk', '3.0') -from gi.repository import Gtk, Gdk +from gi.repository import Gtk # Application imports -from . import WidgetMixin +from .widget_mixin import WidgetMixin @@ -16,24 +15,6 @@ from . import WidgetMixin class TabMixin(WidgetMixin): """docstring for TabMixin""" - def create_tab_from_ipc(data): - self, path = data - wid, tid = self.window_controller.get_active_data() - notebook = self.builder.get_object(f"window_{wid}") - if notebook.is_visible(): - self.create_tab(wid, path) - return - - if not self.is_pane4_hidden: - self.create_tab(4, path) - elif not self.is_pane3_hidden: - self.create_tab(3, path) - elif not self.is_pane2_hidden: - self.create_tab(2, path) - elif not self.is_pane1_hidden: - self.create_tab(1, path) - - def create_tab(self, wid, path=None): notebook = self.builder.get_object(f"window_{wid}") path_entry = self.builder.get_object(f"path_entry") @@ -48,7 +29,7 @@ class TabMixin(WidgetMixin): # scroll, store = self.create_grid_treeview_widget(view, wid) index = notebook.append_page(scroll, tab) - self.window_controller.set_active_data(wid, view.get_tab_id()) + self.window_controller.set__wid_and_tid(wid, view.get_id()) path_entry.set_text(view.get_current_directory()) notebook.show_all() notebook.set_current_page(index) @@ -65,7 +46,7 @@ class TabMixin(WidgetMixin): def close_tab(self, button, eve=None): notebook = button.get_parent().get_parent() - tid = self.get_tab_id_from_tab_box(button.get_parent()) + tid = self.get_id_from_tab_box(button.get_parent()) wid = int(notebook.get_name()[-1]) scroll = self.builder.get_object(f"{wid}|{tid}") page = notebook.page_num(scroll) @@ -83,12 +64,12 @@ class TabMixin(WidgetMixin): window = self.get_fm_window(wid) view = None - for i, view in enumerate(window.views): - if view.id == tid: + for i, view in enumerate(window.get_all_views()): + if view.get_id() == tid: _view = window.get_view_by_id(tid) watcher = _view.get_dir_watcher() watcher.cancel() - window.views.insert(new_index, window.views.pop(i)) + window.get_all_views().insert(new_index, window.get_all_views().pop(i)) view = window.get_view_by_id(tid) self.set_file_watcher(view) @@ -97,11 +78,11 @@ class TabMixin(WidgetMixin): def on_tab_switch_update(self, notebook, content=None, index=None): self.selected_files.clear() wid, tid = content.get_children()[0].get_name().split("|") - self.window_controller.set_active_data(wid, tid) + self.window_controller.set__wid_and_tid(wid, tid) self.set_path_text(wid, tid) self.set_window_title() - def get_tab_id_from_tab_box(self, tab_box): + def get_id_from_tab_box(self, tab_box): tid = tab_box.get_children()[2] return tid.get_text() @@ -132,7 +113,7 @@ class TabMixin(WidgetMixin): def do_action_from_bar_controls(self, widget, eve=None): action = widget.get_name() - wid, tid = self.window_controller.get_active_data() + wid, tid = self.window_controller.get_active_wid_and_tid() notebook = self.builder.get_object(f"window_{wid}") store, tab_label = self.get_store_and_label_from_notebook(notebook, f"{wid}|{tid}") view = self.get_fm_window(wid).get_view_by_id(tid) @@ -156,11 +137,11 @@ class TabMixin(WidgetMixin): if isinstance(focused_obj, Gtk.Entry): button_box = self.path_menu.get_children()[0].get_children()[0].get_children()[0] query = widget.get_text().replace(dir, "") - files = view.files + view.hidden + files = view.get_files() + view.get_hidden() self.clear_children(button_box) show_path_menu = False - for file in files: + for file, hash in files: if os.path.isdir(f"{dir}{file}"): if query.lower() in file.lower(): button = Gtk.Button(label=file) @@ -201,7 +182,7 @@ class TabMixin(WidgetMixin): self.path_menu.popdown() def keyboard_close_tab(self): - wid, tid = self.window_controller.get_active_data() + wid, tid = self.window_controller.get_active_wid_and_tid() notebook = self.builder.get_object(f"window_{wid}") scroll = self.builder.get_object(f"{wid}|{tid}") page = notebook.page_num(scroll) @@ -216,8 +197,8 @@ class TabMixin(WidgetMixin): # File control events def show_hide_hidden_files(self): - wid, tid = self.window_controller.get_active_data() + wid, tid = self.window_controller.get_active_wid_and_tid() view = self.get_fm_window(wid).get_view_by_id(tid) - view.hide_hidden = not view.hide_hidden + view.set_hiding_hidden(not view.is_hiding_hidden()) view.load_directory() self.builder.get_object("refresh_view").released() diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/ui/WidgetFileActionMixin.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/ui/widget_file_action_mixin.py similarity index 74% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/ui/WidgetFileActionMixin.py rename to src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/ui/widget_file_action_mixin.py index 06ba422..eda4c7f 100644 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/ui/WidgetFileActionMixin.py +++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/ui/widget_file_action_mixin.py @@ -1,17 +1,23 @@ # Python imports -import os +import os, time, threading # Lib imports import gi gi.require_version('Gtk', '3.0') -from gi.repository import Gtk, GObject, Gio +from gi.repository import Gtk, GObject, GLib, Gio # Application imports +def threaded(fn): + def wrapper(*args, **kwargs): + threading.Thread(target=fn, args=args, kwargs=kwargs, daemon=True).start() + return wrapper class WidgetFileActionMixin: + """docstring for WidgetFileActionMixin""" + def sizeof_fmt(self, num, suffix="B"): for unit in ["", "K", "M", "G", "T", "Pi", "Ei", "Zi"]: if abs(num) < 1024.0: @@ -52,29 +58,60 @@ class WidgetFileActionMixin: .monitor_directory(Gio.FileMonitorFlags.WATCH_MOVES, Gio.Cancellable()) wid = view.get_wid() - tid = view.get_tab_id() + tid = view.get_id() dir_watcher.connect("changed", self.dir_watch_updates, (f"{wid}|{tid}",)) view.set_dir_watcher(dir_watcher) + # NOTE: Too lazy to impliment a proper update handler and so just regen store and update view. + # Use a lock system to prevent too many update calls for certain instances but user can manually refresh if they have urgency def dir_watch_updates(self, file_monitor, file, other_file=None, eve_type=None, data=None): if eve_type in [Gio.FileMonitorEvent.CREATED, Gio.FileMonitorEvent.DELETED, Gio.FileMonitorEvent.RENAMED, Gio.FileMonitorEvent.MOVED_IN, - Gio.FileMonitorEvent.MOVED_OUT]: + Gio.FileMonitorEvent.MOVED_OUT]: if debug: print(eve_type) - wid, tid = data[0].split("|") - notebook = self.builder.get_object(f"window_{wid}") - view = self.get_fm_window(wid).get_view_by_id(tid) - iconview = self.builder.get_object(f"{wid}|{tid}|iconview") - store = iconview.get_model() - _store, tab_label = self.get_store_and_label_from_notebook(notebook, f"{wid}|{tid}") + if eve_type in [Gio.FileMonitorEvent.MOVED_IN, Gio.FileMonitorEvent.MOVED_OUT]: + self.update_on_end_soft_lock(data[0]) + elif data[0] in self.soft_update_lock.keys(): + self.soft_update_lock[data[0]]["last_update_time"] = time.time() + else: + self.soft_lock_countdown(data[0]) - view.load_directory() - self.load_store(view, store) - tab_label.set_label(view.get_end_of_path()) - self.set_bottom_labels(view) + @threaded + def soft_lock_countdown(self, tab): + self.soft_update_lock[tab] = { "last_update_time": time.time()} + lock = True + while lock: + time.sleep(0.6) + last_update_time = self.soft_update_lock[tab]["last_update_time"] + current_time = time.time() + if (current_time - last_update_time) > 0.6: + lock = False + + + self.soft_update_lock.pop(tab, None) + GLib.idle_add(self.update_on_end_soft_lock, *(tab,)) + + + def update_on_end_soft_lock(self, tab): + wid, tid = tab.split("|") + notebook = self.builder.get_object(f"window_{wid}") + view = self.get_fm_window(wid).get_view_by_id(tid) + iconview = self.builder.get_object(f"{wid}|{tid}|iconview") + store = iconview.get_model() + _store, tab_label = self.get_store_and_label_from_notebook(notebook, f"{wid}|{tid}") + + view.load_directory() + self.load_store(view, store) + + tab_label.set_label(view.get_end_of_path()) + + _wid, _tid, _view, _iconview, _store = self.get_current_state() + + if [wid, tid] in [_wid, _tid]: + self.set_bottom_labels(view) def popup_search_files(self, wid, keyname): @@ -87,8 +124,8 @@ class WidgetFileActionMixin: def do_file_search(self, widget, eve=None): query = widget.get_text() self.search_iconview.unselect_all() - for i, file in enumerate(self.search_view.files): - if query and query in file.lower(): + for i, file in enumerate(self.search_view.get_files()): + if query and query in file[0].lower(): path = Gtk.TreePath().new_from_indices([i]) self.search_iconview.select_path(path) @@ -174,7 +211,7 @@ class WidgetFileActionMixin: self.to_copy_files = uris def paste_files(self): - wid, tid = self.window_controller.get_active_data() + wid, tid = self.window_controller.get_active_wid_and_tid() view = self.get_fm_window(wid).get_view_by_id(tid) target = f"{view.get_current_directory()}" @@ -227,7 +264,7 @@ class WidgetFileActionMixin: file_name = fname_field.get_text().strip() type = self.builder.get_object("context_menu_type_toggle").get_state() - wid, tid = self.window_controller.get_active_data() + wid, tid = self.window_controller.get_active_wid_and_tid() view = self.get_fm_window(wid).get_view_by_id(tid) target = f"{view.get_current_directory()}" @@ -239,12 +276,12 @@ class WidgetFileActionMixin: else: # Create Folder self.handle_files([path], "create_dir") - fname_field.set_text("") + self.hide_new_file_menu() def move_files(self, files, target): self.handle_files(files, "move", target) - # NOTE: Gtk recommends using fail flow than pre check existence which is more + # NOTE: Gtk recommends using fail flow than pre check which is more # race condition proof. They're right; but, they can't even delete # directories properly. So... f**k them. I'll do it my way. def handle_files(self, paths, action, _target_path=None): @@ -273,8 +310,7 @@ class WidgetFileActionMixin: if _file.query_exists(): if not overwrite_all and not rename_auto_all: - self.exists_file_label.set_label(_file.get_basename()) - self.exists_file_field.set_text(_file.get_basename()) + self.setup_exists_data(file, _file) response = self.show_exists_page() if response == "overwrite_all": @@ -295,7 +331,7 @@ class WidgetFileActionMixin: type = _file.query_file_type(flags=Gio.FileQueryInfoFlags.NONE) if type == Gio.FileType.DIRECTORY: - wid, tid = self.window_controller.get_active_data() + wid, tid = self.window_controller.get_active_wid_and_tid() view = self.get_fm_window(wid).get_view_by_id(tid) view.delete_file( _file.get_path() ) else: @@ -322,7 +358,7 @@ class WidgetFileActionMixin: type = file.query_file_type(flags=Gio.FileQueryInfoFlags.NONE) if type == Gio.FileType.DIRECTORY: - wid, tid = self.window_controller.get_active_data() + wid, tid = self.window_controller.get_active_wid_and_tid() view = self.get_fm_window(wid).get_view_by_id(tid) fPath = file.get_path() tPath = target.get_path() @@ -344,6 +380,45 @@ class WidgetFileActionMixin: self.exists_file_rename_bttn.set_sensitive(False) + def setup_exists_data(self, from_file, to_file): + from_info = from_file.query_info("standard::*,time::modified", 0, cancellable=None) + to_info = to_file.query_info("standard::*,time::modified", 0, cancellable=None) + exists_file_diff_from = self.builder.get_object("exists_file_diff_from") + exists_file_diff_to = self.builder.get_object("exists_file_diff_to") + exists_file_from = self.builder.get_object("exists_file_from") + exists_file_to = self.builder.get_object("exists_file_to") + from_date = from_info.get_modification_date_time() + to_date = to_info.get_modification_date_time() + from_size = from_info.get_size() + to_size = to_info.get_size() + + exists_file_from.set_label(from_file.get_parent().get_path()) + exists_file_to.set_label(to_file.get_parent().get_path()) + self.exists_file_label.set_label(to_file.get_basename()) + self.exists_file_field.set_text(to_file.get_basename()) + + # Returns: -1, 0 or 1 if dt1 is less than, equal to or greater than dt2. + age = GLib.DateTime.compare(from_date, to_date) + age_text = "( same time )" + if age == -1: + age_text = "older" + if age == 1: + age_text = "newer" + + size_text = "( same size )" + if from_size < to_size: + size_text = "smaller" + if from_size > to_size: + size_text = "larger" + + from_label_text = f"{age_text} & {size_text}" + if age_text != "( same time )" or size_text != "( same size )": + from_label_text = f"{from_date.format('%F %R')} {self.sizeof_fmt(from_size)} ( {from_size} bytes ) ( {age_text} & {size_text} )" + to_label_text = f"{to_date.format('%F %R')} {self.sizeof_fmt(to_size)} ( {to_size} bytes )" + + exists_file_diff_from.set_text(from_label_text) + exists_file_diff_to.set_text(to_label_text) + def rename_proc(self, gio_file): full_path = gio_file.get_path() diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/ui/WidgetMixin.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/ui/widget_mixin.py similarity index 93% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/ui/WidgetMixin.py rename to src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/ui/widget_mixin.py index 349cba7..84ecac0 100644 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/ui/WidgetMixin.py +++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/ui/widget_mixin.py @@ -20,6 +20,8 @@ def threaded(fn): class WidgetMixin: + """docstring for WidgetMixin""" + def load_store(self, view, store, save_state=False): store.clear() dir = view.get_current_directory() @@ -100,7 +102,7 @@ class WidgetMixin: label.set_label(f"{view.get_end_of_path()}") label.set_width_chars(len(view.get_end_of_path())) label.set_xalign(0.0) - tid.set_label(f"{view.id}") + tid.set_label(f"{view.get_id()}") close.add(icon) tab.add(label) @@ -133,8 +135,6 @@ class WidgetMixin: grid.connect("button_release_event", self.grid_icon_single_click) grid.connect("item-activated", self.grid_icon_double_click) - # grid.connect("toggle-cursor-item", self.grid_cursor_toggled) - # grid.connect("notify", self.grid_cursor_toggled) grid.connect("selection-changed", self.grid_set_selected_items) grid.connect("drag-data-get", self.grid_on_drag_set) grid.connect("drag-data-received", self.grid_on_drag_data_received) @@ -150,10 +150,10 @@ class WidgetMixin: grid.show_all() scroll.add(grid) - grid.set_name(f"{wid}|{view.id}") - scroll.set_name(f"{wid}|{view.id}") - self.builder.expose_object(f"{wid}|{view.id}|iconview", grid) - self.builder.expose_object(f"{wid}|{view.id}", scroll) + grid.set_name(f"{wid}|{view.get_id()}") + scroll.set_name(f"{wid}|{view.get_id()}") + self.builder.expose_object(f"{wid}|{view.get_id()}|iconview", grid) + self.builder.expose_object(f"{wid}|{view.get_id()}", scroll) return scroll, store def create_grid_treeview_widget(self, view, wid): @@ -199,10 +199,10 @@ class WidgetMixin: grid.show_all() scroll.add(grid) - grid.set_name(f"{wid}|{view.id}") - scroll.set_name(f"{wid}|{view.id}") + grid.set_name(f"{wid}|{view.get_id()}") + scroll.set_name(f"{wid}|{view.get_id()}") grid.columns_autosize() - self.builder.expose_object(f"{wid}|{view.id}", scroll) + self.builder.expose_object(f"{wid}|{view.get_id()}", scroll) return scroll, store diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/ui/WindowMixin.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/ui/window_mixin.py similarity index 91% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/ui/WindowMixin.py rename to src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/ui/window_mixin.py index 17e4be3..ee1ad8b 100644 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/ui/WindowMixin.py +++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/ui/window_mixin.py @@ -9,16 +9,18 @@ gi.require_version('Gdk', '3.0') from gi.repository import Gdk, Gio # Application imports -from . import TabMixin, WidgetMixin +from .tab_mixin import TabMixin +from .widget_mixin import WidgetMixin class WindowMixin(TabMixin): """docstring for WindowMixin""" - def generate_windows(self, data = None): - if data: - for j, value in enumerate(data): + + def generate_windows(self, session_json = None): + if session_json: + for j, value in enumerate(session_json): i = j + 1 isHidden = True if value[0]["window"]["isHidden"] == "True" else False object = self.builder.get_object(f"tggl_notebook_{i}") @@ -79,8 +81,8 @@ class WindowMixin(TabMixin): def set_bottom_labels(self, view): - _wid, _tid, _view, iconview, store = self.get_current_state() - selected_files = iconview.get_selected_items() + _wid, _tid, _view, icon_view, store = self.get_current_state() + selected_files = icon_view.get_selected_items() current_directory = view.get_current_directory() path_file = Gio.File.new_for_path(current_directory) mount_file = path_file.query_filesystem_info(attributes="filesystem::*", cancellable=None) @@ -113,7 +115,7 @@ class WindowMixin(TabMixin): formatted_size = self.sizeof_fmt(combined_size) - if view.hide_hidden: + if view.get_hidden(): self.bottom_path_label.set_label(f" {len(uris)} / {view.get_files_count()} ({formatted_size})") else: self.bottom_path_label.set_label(f" {len(uris)} / {view.get_not_hidden_count()} ({formatted_size})") @@ -121,7 +123,7 @@ class WindowMixin(TabMixin): return # If nothing selected - if view.hide_hidden: + if view.get_hidden(): if view.get_hidden_count() > 0: self.bottom_file_count_label.set_label(f"{view.get_not_hidden_count()} visible ({view.get_hidden_count()} hidden)") else: @@ -132,7 +134,7 @@ class WindowMixin(TabMixin): def set_window_title(self): - wid, tid = self.window_controller.get_active_data() + wid, tid = self.window_controller.get_active_wid_and_tid() notebook = self.builder.get_object(f"window_{wid}") view = self.get_fm_window(wid).get_view_by_id(tid) dir = view.get_current_directory() @@ -146,7 +148,7 @@ class WindowMixin(TabMixin): ctx.remove_class("notebook-unselected-focus") ctx.add_class("notebook-selected-focus") - self.window.set_title("SolarFM ~ " + dir) + self.window.set_title(f"SolarFM ~ {dir}") self.set_bottom_labels(view) def set_path_text(self, wid, tid): @@ -164,7 +166,7 @@ class WindowMixin(TabMixin): try: self.path_menu.popdown() wid, tid = iconview.get_name().split("|") - self.window_controller.set_active_data(wid, tid) + self.window_controller.set__wid_and_tid(wid, tid) self.set_path_text(wid, tid) self.set_window_title() @@ -182,9 +184,11 @@ class WindowMixin(TabMixin): def grid_icon_double_click(self, iconview, item, data=None): try: if self.ctrlDown and self.shiftDown: + self.unset_keys_and_data() self.execute_files(in_terminal=True) return elif self.ctrlDown: + self.unset_keys_and_data() self.execute_files() return @@ -221,7 +225,7 @@ class WindowMixin(TabMixin): data.set_text(uris_text, -1) def grid_on_drag_motion(self, iconview, drag_context, x, y, data): - current = '|'.join(self.window_controller.get_active_data()) + current = '|'.join(self.window_controller.get_active_wid_and_tid()) target = iconview.get_name() wid, tid = target.split("|") store = iconview.get_model() @@ -232,12 +236,12 @@ class WindowMixin(TabMixin): self.override_drop_dest = uri if isdir(uri) else None if target not in current: - self.window_controller.set_active_data(wid, tid) + self.window_controller.set__wid_and_tid(wid, tid) def grid_on_drag_data_received(self, widget, drag_context, x, y, data, info, time): if info == 80: - wid, tid = self.window_controller.get_active_data() + wid, tid = self.window_controller.get_active_wid_and_tid() notebook = self.builder.get_object(f"window_{wid}") store, tab_label = self.get_store_and_label_from_notebook(notebook, f"{wid}|{tid}") view = self.get_fm_window(wid).get_view_by_id(tid) diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/ui_mixin.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/ui_mixin.py new file mode 100644 index 0000000..d127b28 --- /dev/null +++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/mixins/ui_mixin.py @@ -0,0 +1,14 @@ +# Python imports + +# Gtk imports + +# Application imports +from .show_hide_mixin import ShowHideMixin +from .ui.widget_file_action_mixin import WidgetFileActionMixin +from .ui.pane_mixin import PaneMixin +from .ui.window_mixin import WindowMixin +from .show_hide_mixin import ShowHideMixin + + +class UIMixin(WidgetFileActionMixin, PaneMixin, WindowMixin, ShowHideMixin): + pass diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/signals/__init__.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/signals/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/signals/ipc_signals_mixin.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/signals/ipc_signals_mixin.py new file mode 100644 index 0000000..3f46614 --- /dev/null +++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/signals/ipc_signals_mixin.py @@ -0,0 +1,29 @@ +# Python imports + +# Lib imports + +# Application imports + + +class IPCSignalsMixin: + """ IPCSignalsMixin handle messages from another starting solarfm process. """ + + def print_to_console(self, message=None): + print(self) + print(message) + + def handle_file_from_ipc(self, path): + wid, tid = self.window_controller.get_active_wid_and_tid() + notebook = self.builder.get_object(f"window_{wid}") + if notebook.is_visible(): + self.create_tab(wid, path) + return + + if not self.is_pane4_hidden: + self.create_tab(4, path) + elif not self.is_pane3_hidden: + self.create_tab(3, path) + elif not self.is_pane2_hidden: + self.create_tab(2, path) + elif not self.is_pane1_hidden: + self.create_tab(1, path) diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/KeyboardSignalsMixin.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/signals/keyboard_signals_mixin.py similarity index 90% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/KeyboardSignalsMixin.py rename to src/versions/solarfm-0.0.1/SolarFM/solarfm/context/signals/keyboard_signals_mixin.py index b397027..a801365 100644 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/signal_classes/mixins/KeyboardSignalsMixin.py +++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/context/signals/keyboard_signals_mixin.py @@ -14,6 +14,8 @@ valid_keyvalue_pat = re.compile(r"[a-z0-9A-Z-_\[\]\(\)\| ]") class KeyboardSignalsMixin: + """ KeyboardSignalsMixin keyboard hooks controller. """ + def unset_keys_and_data(self, widget=None, eve=None): self.ctrlDown = False self.shiftDown = False @@ -47,6 +49,7 @@ class KeyboardSignalsMixin: if self.ctrlDown and self.shiftDown and keyname == "t": + self.unset_keys_and_data() self.trash_files() @@ -57,6 +60,7 @@ class KeyboardSignalsMixin: if isinstance(focused_obj, Gtk.IconView): self.is_searching = True wid, tid, self.search_view, self.search_iconview, store = self.get_current_state() + self.unset_keys_and_data() self.popup_search_files(wid, keyname) return @@ -79,26 +83,30 @@ class KeyboardSignalsMixin: if (self.ctrlDown and keyname == "up") or (self.ctrlDown and keyname == "u"): self.builder.get_object("go_up").released() if self.ctrlDown and keyname == "l": + self.unset_keys_and_data() self.builder.get_object("path_entry").grab_focus() if self.ctrlDown and keyname == "t": self.builder.get_object("create_tab").released() if self.ctrlDown and keyname == "o": + self.unset_keys_and_data() self.open_files() if self.ctrlDown and keyname == "w": self.keyboard_close_tab() if self.ctrlDown and keyname == "h": self.show_hide_hidden_files() if (self.ctrlDown and keyname == "e"): - self.edit_files() + self.unset_keys_and_data() + self.rename_files() if self.ctrlDown and keyname == "c": - self.to_cut_files.clear() self.copy_files() + self.to_cut_files.clear() if self.ctrlDown and keyname == "x": self.to_copy_files.clear() self.cut_files() if self.ctrlDown and keyname == "v": self.paste_files() if self.ctrlDown and keyname == "n": + self.unset_keys_and_data() self.show_new_file_menu() @@ -110,11 +118,11 @@ class KeyboardSignalsMixin: else: top_main_menubar.show() if keyname == "delete": + self.unset_keys_and_data() self.delete_files() if keyname == "f2": + self.unset_keys_and_data() self.rename_files() if keyname == "f4": - wid, tid = self.window_controller.get_active_data() - view = self.get_fm_window(wid).get_view_by_id(tid) - dir = view.get_current_directory() - view.execute(f"{view.terminal_app}", dir) + self.unset_keys_and_data() + self.open_terminal() diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/__init__.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/__init__.py deleted file mode 100644 index 52c4098..0000000 --- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -""" - Gtk Bound Signal Module -""" -from .mixins import * -from .IPCServerMixin import IPCServerMixin -from .Controller_Data import Controller_Data -from .Controller import Controller diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/UIMixin.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/UIMixin.py deleted file mode 100644 index f6e265f..0000000 --- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/UIMixin.py +++ /dev/null @@ -1,11 +0,0 @@ -# Python imports - -# Gtk imports - -# Application imports -from . import ShowHideMixin -from .ui import * - - -class UIMixin(WidgetFileActionMixin, PaneMixin, WindowMixin, ShowHideMixin): - pass diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/__init__.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/__init__.py deleted file mode 100644 index ec27013..0000000 --- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from .ShowHideMixin import ShowHideMixin -from .ExceptionHookMixin import ExceptionHookMixin -from .UIMixin import UIMixin diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ui/__init__.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ui/__init__.py deleted file mode 100644 index cd23f8d..0000000 --- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/mixins/ui/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from .PaneMixin import PaneMixin -from .WidgetMixin import WidgetMixin -from .TabMixin import TabMixin -from .WindowMixin import WindowMixin -from .WidgetFileActionMixin import WidgetFileActionMixin diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/signals/__init__.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/signals/__init__.py deleted file mode 100644 index f7ae310..0000000 --- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/controller/signals/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .KeyboardSignalsMixin import KeyboardSignalsMixin -from .IPCSignalsMixin import IPCSignalsMixin diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/plugins/__init__.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/plugins/__init__.py index b6a753c..5624b32 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/plugins/__init__.py +++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/plugins/__init__.py @@ -1,4 +1,3 @@ """ Gtk Bound Plugins Module """ -from .Plugins import Plugins diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/plugins/plugins.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/plugins/plugins.py new file mode 100644 index 0000000..dcfa61b --- /dev/null +++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/plugins/plugins.py @@ -0,0 +1,99 @@ +# Python imports +import os, sys, importlib, traceback +from os.path import join, isdir + +# Lib imports +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk, Gio + +# Application imports + + +class Plugin: + name = None + module = None + gtk_socket_id = None + gtk_socket = None + reference = None + + +class Plugins: + """Plugins controller""" + + def __init__(self, settings): + self._settings = settings + self._plugin_list_widget = self._settings.get_builder().get_object("plugin_list") + self._plugin_list_socket = self._settings.get_builder().get_object("plugin_socket") + self._plugins_path = self._settings.get_plugins_path() + self._plugins_dir_watcher = None + self._plugin_collection = [] + + + def launch_plugins(self): + self._set_plugins_watcher() + self.load_plugins() + + def _set_plugins_watcher(self): + self._plugins_dir_watcher = Gio.File.new_for_path(self._plugins_path) \ + .monitor_directory(Gio.FileMonitorFlags.WATCH_MOVES, Gio.Cancellable()) + self._plugins_dir_watcher.connect("changed", self._on_plugins_changed, ()) + + def _on_plugins_changed(self, file_monitor, file, other_file=None, eve_type=None, data=None): + if eve_type in [Gio.FileMonitorEvent.CREATED, Gio.FileMonitorEvent.DELETED, + Gio.FileMonitorEvent.RENAMED, Gio.FileMonitorEvent.MOVED_IN, + Gio.FileMonitorEvent.MOVED_OUT]: + self.reload_plugins(file) + + # @threaded + def load_plugins(self, file=None): + print(f"Loading plugins...") + parent_path = os.getcwd() + + for file in os.listdir(self._plugins_path): + try: + path = join(self._plugins_path, file) + if isdir(path): + os.chdir(path) + + gtk_socket = Gtk.Socket().new() + self._plugin_list_socket.add(gtk_socket) + # NOTE: Must get ID after adding socket to window. Else issues.... + gtk_socket_id = gtk_socket.get_id() + + sys.path.insert(0, path) + spec = importlib.util.spec_from_file_location(file, join(path, "__main__.py")) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + + ref = module.Main(gtk_socket_id, event_system) + plugin = Plugin() + plugin.name = ref.get_plugin_name() + plugin.module = path + plugin.gtk_socket_id = gtk_socket_id + plugin.gtk_socket = gtk_socket + plugin.reference = ref + + self._plugin_collection.append(plugin) + gtk_socket.show_all() + except Exception as e: + print("Malformed plugin! Not loading!") + traceback.print_exc() + + os.chdir(parent_path) + + + def reload_plugins(self, file=None): + print(f"Reloading plugins...") + # if self._plugin_collection: + # to_unload = [] + # for dir in self._plugin_collection: + # if not os.path.isdir(os.path.join(self._plugins_path, dir)): + # to_unload.append(dir) + + def set_message_on_plugin(self, type, data): + print("Trying to send message to plugin...") + for plugin in self._plugin_collection: + if type in plugin.name: + print('Found plugin; posting message...') + plugin.reference.set_message(data) diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/utils/__init__.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/utils/__init__.py index 415301e..e69de29 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/utils/__init__.py +++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/utils/__init__.py @@ -1,6 +0,0 @@ -""" - Utils module -""" - -from .Logger import Logger -from .Settings import Settings diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/utils/Logger.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/utils/logger.py similarity index 100% rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/utils/Logger.py rename to src/versions/solarfm-0.0.1/SolarFM/solarfm/utils/logger.py diff --git a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/utils/Settings.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/utils/settings.py similarity index 78% rename from src/debs/solarfm-0-0-1-x64/opt/SolarFM/utils/Settings.py rename to src/versions/solarfm-0.0.1/SolarFM/solarfm/utils/settings.py index 380210a..a02f0ce 100644 --- a/src/debs/solarfm-0-0-1-x64/opt/SolarFM/utils/Settings.py +++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/utils/settings.py @@ -12,7 +12,7 @@ from gi.repository import Gdk as gdk # Application imports -from . import Logger +from .logger import Logger class Settings: @@ -25,10 +25,10 @@ class Settings: self.PLUGINS_PATH = f"{self.CONFIG_PATH}/plugins" self.USR_SOLARFM = f"/usr/share/{app_name.lower()}" - self.cssFile = f"{self.CONFIG_PATH}/stylesheet.css" - self.windows_glade = f"{self.CONFIG_PATH}/Main_Window.glade" + self.CSS_FILE = f"{self.CONFIG_PATH}/stylesheet.css" + self.WINDOWS_GLADE = f"{self.CONFIG_PATH}/Main_Window.glade" self.DEFAULT_ICONS = f"{self.CONFIG_PATH}/icons" - self.window_icon = f"{self.DEFAULT_ICONS}/{app_name.lower()}.png" + self.WINDOW_ICON = f"{self.DEFAULT_ICONS}/{app_name.lower()}.png" self.main_window = None if not os.path.exists(self.CONFIG_PATH): @@ -36,17 +36,17 @@ class Settings: if not os.path.exists(self.PLUGINS_PATH): os.mkdir(self.PLUGINS_PATH) - if not os.path.exists(self.windows_glade): - self.windows_glade = f"{self.USR_SOLARFM}/Main_Window.glade" - if not os.path.exists(self.cssFile): - self.cssFile = f"{self.USR_SOLARFM}/stylesheet.css" - if not os.path.exists(self.window_icon): - self.window_icon = f"{self.USR_SOLARFM}/icons/{app_name.lower()}.png" + if not os.path.exists(self.WINDOWS_GLADE): + self.WINDOWS_GLADE = f"{self.USR_SOLARFM}/Main_Window.glade" + if not os.path.exists(self.CSS_FILE): + self.CSS_FILE = f"{self.USR_SOLARFM}/stylesheet.css" + if not os.path.exists(self.WINDOW_ICON): + self.WINDOW_ICON = f"{self.USR_SOLARFM}/icons/{app_name.lower()}.png" if not os.path.exists(self.DEFAULT_ICONS): self.DEFAULT_ICONS = f"{self.USR_SOLARFM}/icons" self.logger = Logger(self.CONFIG_PATH).get_logger() - self.builder.add_from_file(self.windows_glade) + self.builder.add_from_file(self.WINDOWS_GLADE) @@ -56,7 +56,7 @@ class Settings: self._set_window_data() def _set_window_data(self): - self.main_window.set_icon_from_file(self.window_icon) + self.main_window.set_icon_from_file(self.WINDOW_ICON) screen = self.main_window.get_screen() visual = screen.get_rgba_visual() @@ -67,7 +67,7 @@ class Settings: # bind css file cssProvider = gtk.CssProvider() - cssProvider.load_from_path(self.cssFile) + cssProvider.load_from_path(self.CSS_FILE) screen = gdk.Screen.get_default() styleContext = gtk.StyleContext() styleContext.add_provider_for_screen(screen, cssProvider, gtk.STYLE_PROVIDER_PRIORITY_USER) diff --git a/user_config/usr/share/solarfm/Main_Window.glade b/user_config/usr/share/solarfm/Main_Window.glade index 07da0ac..5842ded 100644 --- a/user_config/usr/share/solarfm/Main_Window.glade +++ b/user_config/usr/share/solarfm/Main_Window.glade @@ -1784,6 +1784,21 @@ SolarFM is developed on Atom, git, and using Python 3+ with Gtk GObject introspe 0 + + + path_entry + True + True + True + Path... + + + + True + True + 1 + + gtk-refresh @@ -1798,7 +1813,7 @@ SolarFM is developed on Atom, git, and using Python 3+ with Gtk GObject introspe False True - 1 + 2 @@ -1815,21 +1830,6 @@ SolarFM is developed on Atom, git, and using Python 3+ with Gtk GObject introspe False True - 2 - - - - - path_entry - True - True - True - Path... - - - - True - True 3 @@ -1907,7 +1907,7 @@ SolarFM is developed on Atom, git, and using Python 3+ with Gtk GObject introspe - True + False True @@ -1945,7 +1945,7 @@ SolarFM is developed on Atom, git, and using Python 3+ with Gtk GObject introspe - True + False True @@ -1997,7 +1997,7 @@ SolarFM is developed on Atom, git, and using Python 3+ with Gtk GObject introspe - True + False True @@ -2034,7 +2034,7 @@ SolarFM is developed on Atom, git, and using Python 3+ with Gtk GObject introspe - True + False True diff --git a/user_config/usr/share/solarfm/solarfm-64x64.png b/user_config/usr/share/solarfm/solarfm-64x64.png new file mode 100644 index 0000000000000000000000000000000000000000..1a403ae3ca0be18c3661898bdcd9bfb5dfd2b80a GIT binary patch literal 16172 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 literal 0 HcmV?d00001 diff --git a/user_config/usr/share/solarfm/solarfm.png b/user_config/usr/share/solarfm/solarfm.png new file mode 100644 index 0000000000000000000000000000000000000000..1a403ae3ca0be18c3661898bdcd9bfb5dfd2b80a GIT binary patch literal 16172 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 literal 0 HcmV?d00001