From 231eb902e43857fee7aeb81142f7a22582c891d7 Mon Sep 17 00:00:00 2001 From: itdominator <1itdominator@gmail.com> Date: Sun, 30 Jul 2023 00:36:52 -0500 Subject: [PATCH] Restructured settings logic and loading --- src/__builtins__.py | 11 +- src/__main__.py | 6 +- src/app.py | 2 +- src/core/containers/base_container.py | 22 +-- src/core/containers/center_container.py | 47 +++++ src/core/containers/left_container.py | 35 ++++ src/core/containers/right_container.py | 35 ++++ src/core/controller.py | 9 +- src/core/controller_data.py | 2 +- src/core/window.py | 49 +++--- src/plugins/plugins_controller.py | 4 +- src/utils/debugging.py | 19 ++- src/utils/ipc_server.py | 4 +- src/utils/settings/__init__.py | 4 - src/utils/settings_manager/__init__.py | 4 + .../manager.py} | 57 +++---- .../settings_manager/options/__init__.py | 8 + src/utils/settings_manager/options/config.py | 35 ++++ .../settings_manager/options/debugging.py | 12 ++ src/utils/settings_manager/options/filters.py | 18 ++ .../settings_manager/options/settings.py | 24 +++ src/utils/settings_manager/options/theming.py | 13 ++ .../start_check_mixin.py | 1 + user_config/usr/share/app_name/settings.json | 160 +++++++++++++----- user_config/usr/share/app_name/stylesheet.css | 62 +------ 25 files changed, 452 insertions(+), 191 deletions(-) create mode 100644 src/core/containers/center_container.py create mode 100644 src/core/containers/left_container.py create mode 100644 src/core/containers/right_container.py delete mode 100644 src/utils/settings/__init__.py create mode 100644 src/utils/settings_manager/__init__.py rename src/utils/{settings/settings.py => settings_manager/manager.py} (76%) create mode 100644 src/utils/settings_manager/options/__init__.py create mode 100644 src/utils/settings_manager/options/config.py create mode 100644 src/utils/settings_manager/options/debugging.py create mode 100644 src/utils/settings_manager/options/filters.py create mode 100644 src/utils/settings_manager/options/settings.py create mode 100644 src/utils/settings_manager/options/theming.py rename src/utils/{settings => settings_manager}/start_check_mixin.py (96%) diff --git a/src/__builtins__.py b/src/__builtins__.py index c7b3d32..dbc6f1c 100644 --- a/src/__builtins__.py +++ b/src/__builtins__.py @@ -9,7 +9,7 @@ from utils.event_system import EventSystem from utils.endpoint_registry import EndpointRegistry from utils.keybindings import Keybindings from utils.logger import Logger -from utils.settings import Settings +from utils.settings_manager.manager import SettingsManager @@ -33,10 +33,11 @@ builtins.app_name = "" builtins.keybindings = Keybindings() builtins.event_system = EventSystem() builtins.endpoint_registry = EndpointRegistry() -builtins.settings = Settings() -builtins.logger = Logger(settings.get_home_config_path(), \ - _ch_log_lvl=settings.get_ch_log_lvl(), \ - _fh_log_lvl=settings.get_fh_log_lvl()).get_logger() +builtins.settings_manager = SettingsManager() +builtins.settings = settings_manager.settings +builtins.logger = Logger(settings_manager.get_home_config_path(), \ + _ch_log_lvl=settings.debugging.ch_log_lvl, \ + _fh_log_lvl=settings.debugging.fh_log_lvl).get_logger() builtins.threaded = threaded_wrapper builtins.daemon_threaded = daemon_threaded_wrapper diff --git a/src/__main__.py b/src/__main__.py index 065a783..e1914c8 100644 --- a/src/__main__.py +++ b/src/__main__.py @@ -40,12 +40,12 @@ if __name__ == "__main__": args, unknownargs = parser.parse_known_args() if args.debug == "true": - settings.set_debug(True) + settings_manager.set_debug(True) if args.trace_debug == "true": - settings.set_trace_debug(True) + settings_manager.set_trace_debug(True) - settings.do_dirty_start_check() + settings_manager.do_dirty_start_check() Application(args, unknownargs) Gtk.main() except Exception as e: diff --git a/src/app.py b/src/app.py index 67b6211..9325654 100644 --- a/src/app.py +++ b/src/app.py @@ -21,7 +21,7 @@ class Application(IPCServer): def __init__(self, args, unknownargs): super(Application, self).__init__() - if not settings.is_trace_debug(): + if not settings_manager.is_trace_debug(): try: self.create_ipc_listener() except Exception: diff --git a/src/core/containers/base_container.py b/src/core/containers/base_container.py index 272f744..51989c3 100644 --- a/src/core/containers/base_container.py +++ b/src/core/containers/base_container.py @@ -6,6 +6,9 @@ gi.require_version('Gtk', '3.0') from gi.repository import Gtk # Application imports +from .left_container import LeftContainer +from .center_container import CenterContainer +from .right_container import RightContainer @@ -13,8 +16,6 @@ class BaseContainer(Gtk.Box): def __init__(self): super(BaseContainer, self).__init__() - self._builder = settings.get_builder() - self._setup_styling() self._setup_signals() self._load_widgets() @@ -24,20 +25,13 @@ class BaseContainer(Gtk.Box): def _setup_styling(self): self.set_orientation(Gtk.Orientation.VERTICAL) + ctx = self.get_style_context() + ctx.add_class("base-container") def _setup_signals(self): ... def _load_widgets(self): - glade_box = self._builder.get_object("glade_box") - button = Gtk.Button(label="Click Me!") - - button.connect("clicked", self._hello_world) - - self.add(button) - self.add(glade_box) - - - - def _hello_world(self, widget=None, eve=None): - logger.debug("Hello, World!") + self.add(LeftContainer()) + self.add(CenterContainer()) + self.add(RightContainer()) diff --git a/src/core/containers/center_container.py b/src/core/containers/center_container.py new file mode 100644 index 0000000..cd2cc0f --- /dev/null +++ b/src/core/containers/center_container.py @@ -0,0 +1,47 @@ +# Python imports + +# Lib imports +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk + +# Application imports + + + +class CenterContainer(Gtk.Box): + def __init__(self): + super(CenterContainer, self).__init__() + + self._builder = settings_manager.get_builder() + + self._setup_styling() + self._setup_signals() + self._subscribe_to_events() + self._load_widgets() + + + def _setup_styling(self): + self.set_orientation(Gtk.Orientation.VERTICAL) + ctx = self.get_style_context() + ctx.add_class("center-container") + + def _setup_signals(self): + ... + + def _subscribe_to_events(self): + # event_system.subscribe("handle_file_from_ipc", self.handle_file_from_ipc) + ... + + def _load_widgets(self): + glade_box = self._builder.get_object("glade_box") + button = Gtk.Button(label="Click Me!") + + button.connect("clicked", self._hello_world) + + self.add(button) + self.add(glade_box) + + + def _hello_world(self, widget=None, eve=None): + logger.debug("Hello, World!") diff --git a/src/core/containers/left_container.py b/src/core/containers/left_container.py new file mode 100644 index 0000000..77cd490 --- /dev/null +++ b/src/core/containers/left_container.py @@ -0,0 +1,35 @@ +# Python imports + +# Lib imports +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk + +# Application imports + + + +class LeftContainer(Gtk.Box): + def __init__(self): + super(LeftContainer, self).__init__() + + self._setup_styling() + self._setup_signals() + self._subscribe_to_events() + self._load_widgets() + + + def _setup_styling(self): + self.set_orientation(Gtk.Orientation.VERTICAL) + ctx = self.get_style_context() + ctx.add_class("left-container") + + def _setup_signals(self): + ... + + def _subscribe_to_events(self): + # event_system.subscribe("handle_file_from_ipc", self.handle_file_from_ipc) + ... + + def _load_widgets(self): + ... diff --git a/src/core/containers/right_container.py b/src/core/containers/right_container.py new file mode 100644 index 0000000..f0ac75d --- /dev/null +++ b/src/core/containers/right_container.py @@ -0,0 +1,35 @@ +# Python imports + +# Lib imports +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk + +# Application imports + + + +class RightContainer(Gtk.Box): + def __init__(self): + super(RightContainer, self).__init__() + + self._setup_styling() + self._setup_signals() + self._subscribe_to_events() + self._load_widgets() + + + def _setup_styling(self): + self.set_orientation(Gtk.Orientation.VERTICAL) + ctx = self.get_style_context() + ctx.add_class("right-container") + + def _setup_signals(self): + ... + + def _subscribe_to_events(self): + # event_system.subscribe("handle_file_from_ipc", self.handle_file_from_ipc) + ... + + def _load_widgets(self): + ... diff --git a/src/core/controller.py b/src/core/controller.py index 6d7c8c3..238882a 100644 --- a/src/core/controller.py +++ b/src/core/controller.py @@ -4,10 +4,7 @@ import os # Lib imports import gi gi.require_version('Gtk', '3.0') -gi.require_version('Gdk', '3.0') from gi.repository import Gtk -from gi.repository import Gdk -from gi.repository import GLib # Application imports from .mixins.signals_mixins import SignalsMixins @@ -60,13 +57,13 @@ class Controller(DummyMixin, SignalsMixins, ControllerData): def setup_builder_and_container(self): self.builder = Gtk.Builder() - self.builder.add_from_file(settings.get_glade_file()) + self.builder.add_from_file(settings_manager.get_glade_file()) self.builder.expose_object("main_window", self.window) - settings.set_builder(self.builder) + settings_manager.set_builder(self.builder) self.base_container = BaseContainer() - settings.register_signals_to_builder([self, self.base_container]) + settings_manager.register_signals_to_builder([self, self.base_container]) def get_base_container(self): return self.base_container diff --git a/src/core/controller_data.py b/src/core/controller_data.py index 5e11284..15e2b05 100644 --- a/src/core/controller_data.py +++ b/src/core/controller_data.py @@ -13,7 +13,7 @@ class ControllerData: ''' ControllerData contains most of the state of the app at ay given time. It also has some support methods. ''' def setup_controller_data(self) -> None: - self.window = settings.get_main_window() + self.window = settings_manager.get_main_window() self.builder = None self.base_container = None self.was_midified_key = False diff --git a/src/core/window.py b/src/core/window.py index d31f2eb..48fce90 100644 --- a/src/core/window.py +++ b/src/core/window.py @@ -26,6 +26,7 @@ class Window(Gtk.ApplicationWindow): def __init__(self, args, unknownargs): super(Window, self).__init__() + settings_manager.set_main_window(self) self._controller = None @@ -33,36 +34,29 @@ class Window(Gtk.ApplicationWindow): self._setup_styling() self._setup_signals() self._subscribe_to_events() - - settings.set_main_window(self) self._load_widgets(args, unknownargs) - self.show() - - # NOTE: Need to set size after show b/c get_allocation methods are initially incorrect if done beforehand... self._set_size_constraints() + self.show() def _setup_styling(self): - self.set_default_size(settings.get_main_window_width(), - settings.get_main_window_height()) self.set_title(f"{app_name}") - self.set_icon_from_file( settings.get_window_icon() ) + self.set_icon_from_file( settings_manager.get_window_icon() ) self.set_gravity(5) # 5 = CENTER self.set_position(1) # 1 = CENTER, 4 = CENTER_ALWAYS def _setup_signals(self): - self.connect("delete-event", self._tear_down) GLib.unix_signal_add(GLib.PRIORITY_DEFAULT, signal.SIGINT, self._tear_down) + self.connect("delete-event", self._tear_down) def _subscribe_to_events(self): event_system.subscribe("tear_down", self._tear_down) def _load_widgets(self, args, unknownargs): - if settings.is_debug(): + if settings_manager.is_debug(): self.set_interactive_debugging(True) - self._controller = Controller(args, unknownargs) if not self._controller: raise ControllerStartException("Controller exited and doesn't exist...") @@ -70,35 +64,50 @@ class Window(Gtk.ApplicationWindow): self.add( self._controller.get_base_container() ) def _set_size_constraints(self): - self.set_default_size(settings.get_main_window_width(), - settings.get_main_window_height()) - self.set_size_request(settings.get_main_window_min_width(), - settings.get_main_window_min_height()) + _window_x = settings.config.main_window_x + _window_y = settings.config.main_window_y + _min_width = settings.config.main_window_min_width + _min_height = settings.config.main_window_min_height + _width = settings.config.main_window_width + _height = settings.config.main_window_height + + self.move(_window_x, _window_y - 28) + self.set_size_request(_min_width, _min_height) + self.set_default_size(_width, _height) def _set_window_data(self) -> None: screen = self.get_screen() visual = screen.get_rgba_visual() - if visual and screen.is_composited() and settings.make_transparent() == 0: + if visual and screen.is_composited() and settings.config.make_transparent == 0: self.set_visual(visual) self.set_app_paintable(True) self.connect("draw", self._area_draw) # bind css file cssProvider = Gtk.CssProvider() - cssProvider.load_from_path( settings.get_css_file() ) + cssProvider.load_from_path( settings_manager.get_css_file() ) screen = Gdk.Screen.get_default() styleContext = Gtk.StyleContext() styleContext.add_provider_for_screen(screen, cssProvider, Gtk.STYLE_PROVIDER_PRIORITY_USER) def _area_draw(self, widget: Gtk.ApplicationWindow, cr: cairo.Context) -> None: - cr.set_source_rgba( *settings.get_paint_bg_color() ) + cr.set_source_rgba( *settings_manager.get_paint_bg_color() ) cr.set_operator(cairo.OPERATOR_SOURCE) cr.paint() cr.set_operator(cairo.OPERATOR_OVER) - def _tear_down(self, widget=None, eve=None): - settings.clear_pid() + def _tear_down(self, widget = None, eve = None): + size = self.get_default_size() + pos = self.get_position() + + settings_manager.set_main_window_width(size.width) + settings_manager.set_main_window_height(size.height) + settings_manager.set_main_window_x(pos.root_x) + settings_manager.set_main_window_y(pos.root_y) + settings_manager.save_settings() + + settings_manager.clear_pid() time.sleep(event_sleep_time) Gtk.main_quit() diff --git a/src/plugins/plugins_controller.py b/src/plugins/plugins_controller.py index 8e1fad2..564d49f 100644 --- a/src/plugins/plugins_controller.py +++ b/src/plugins/plugins_controller.py @@ -30,8 +30,8 @@ class PluginsController: path = os.path.dirname(os.path.realpath(__file__)) sys.path.insert(0, path) # NOTE: I think I'm not using this correctly... - self._builder = settings.get_builder() - self._plugins_path = settings.get_plugins_path() + self._builder = settings_manager.get_builder() + self._plugins_path = settings_manager.get_plugins_path() self._plugins_dir_watcher = None self._plugin_collection = [] diff --git a/src/utils/debugging.py b/src/utils/debugging.py index 97faff0..b84193a 100644 --- a/src/utils/debugging.py +++ b/src/utils/debugging.py @@ -19,12 +19,29 @@ def debug_signal_handler(signal, frame): rpdb2.setbreak(depth=1) return except StandardError: - pass + ... try: from rfoo.utils import rconsole logger.debug("\n\nStarting embedded rconsole debugger...\n\n") rconsole.spawn_server() + return + except StandardError as ex: + ... + + try: + from pudb import set_trace + logger.debug("\n\nStarting PuDB debugger...\n\n") + set_trace(paused = True) + return + except StandardError as ex: + ... + + try: + import pdb + logger.debug("\n\nStarting embedded PDB debugger...\n\n") + pdb.Pdb(skip=['gi.*']).set_trace() + return except StandardError as ex: ... diff --git a/src/utils/ipc_server.py b/src/utils/ipc_server.py index 662fc89..5d19ccc 100644 --- a/src/utils/ipc_server.py +++ b/src/utils/ipc_server.py @@ -40,7 +40,7 @@ class IPCServer(Singleton): def create_ipc_listener(self) -> None: if self._conn_type == "socket": - if os.path.exists(self._ipc_address) and settings.is_dirty_start(): + if os.path.exists(self._ipc_address) and settings_manager.is_dirty_start(): os.unlink(self._ipc_address) listener = Listener(address=self._ipc_address, family="AF_UNIX", authkey=self._ipc_authkey) @@ -69,7 +69,7 @@ class IPCServer(Singleton): def _handle_ipc_message(self, conn, start_time) -> None: while True: msg = conn.recv() - if settings.is_debug(): + if settings_manager.is_debug(): print(msg) if "FILE|" in msg: diff --git a/src/utils/settings/__init__.py b/src/utils/settings/__init__.py deleted file mode 100644 index e07c5a0..0000000 --- a/src/utils/settings/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -""" - Settings module -""" -from .settings import Settings diff --git a/src/utils/settings_manager/__init__.py b/src/utils/settings_manager/__init__.py new file mode 100644 index 0000000..a0b3452 --- /dev/null +++ b/src/utils/settings_manager/__init__.py @@ -0,0 +1,4 @@ +""" + Settings module +""" +from .manager import SettingsManager diff --git a/src/utils/settings/settings.py b/src/utils/settings_manager/manager.py similarity index 76% rename from src/utils/settings/settings.py rename to src/utils/settings_manager/manager.py index f684373..c3d6fa1 100644 --- a/src/utils/settings/settings.py +++ b/src/utils/settings_manager/manager.py @@ -4,12 +4,15 @@ import io import json import inspect import zipfile +from dataclasses import asdict # Lib imports # Application imports from ..singleton import Singleton from .start_check_mixin import StartCheckMixin +from .options.settings import Settings + class MissingConfigError(Exception): @@ -17,7 +20,7 @@ class MissingConfigError(Exception): -class Settings(StartCheckMixin, Singleton): +class SettingsManager(StartCheckMixin, Singleton): def __init__(self): self._SCRIPT_PTH = os.path.dirname(os.path.realpath(__file__)) self._USER_HOME = os.path.expanduser('~') @@ -105,18 +108,14 @@ class Settings(StartCheckMixin, Singleton): print( f"Settings: {self._CONTEXT_MENU}\n\t\t{repr(e)}" ) - self._main_window = None - self._main_window_w = 800 - self._main_window_h = 600 - self._main_window_mw = 720 - self._main_window_mh = 480 + self.settings: Settings = None + self._main_window = None + self._builder = None + self.PAINT_BG_COLOR = (0, 0, 0, 0.54) - self._builder = None - self.PAINT_BG_COLOR = (0, 0, 0, 0.54) - - self._trace_debug = False - self._debug = False - self._dirty_start = False + self._trace_debug = False + self._debug = False + self._dirty_start = False self.load_settings() @@ -148,10 +147,6 @@ class Settings(StartCheckMixin, Singleton): return monitors def get_main_window(self) -> any: return self._main_window - def get_main_window_width(self) -> any: return self._main_window_w - def get_main_window_height(self) -> any: return self._main_window_h - def get_main_window_min_width(self) -> any: return self._main_window_mw - def get_main_window_min_height(self) -> any: return self._main_window_mh def get_builder(self) -> any: return self._builder def get_paint_bg_color(self) -> any: return self.PAINT_BG_COLOR def get_glade_file(self) -> str: return self._GLADE_FILE @@ -164,25 +159,16 @@ class Settings(StartCheckMixin, Singleton): def get_home_config_path(self) -> str: return self._HOME_CONFIG_PATH def get_window_icon(self) -> str: return self._WINDOW_ICON def get_home_path(self) -> str: return self._USER_HOME - def make_transparent(self) -> int: return self._config["make_transparent"] - - # Filter returns - def get_office_filter(self) -> tuple: return tuple(self._settings["filters"]["office"]) - def get_vids_filter(self) -> tuple: return tuple(self._settings["filters"]["videos"]) - def get_text_filter(self) -> tuple: return tuple(self._settings["filters"]["text"]) - def get_music_filter(self) -> tuple: return tuple(self._settings["filters"]["music"]) - def get_images_filter(self) -> tuple: return tuple(self._settings["filters"]["images"]) - def get_pdf_filter(self) -> tuple: return tuple(self._settings["filters"]["pdf"]) - - def get_success_color(self) -> str: return self._theming["success_color"] - def get_warning_color(self) -> str: return self._theming["warning_color"] - def get_error_color(self) -> str: return self._theming["error_color"] def is_trace_debug(self) -> str: return self._trace_debug def is_debug(self) -> str: return self._debug - def get_ch_log_lvl(self) -> str: return self._settings["debugging"]["ch_log_lvl"] - def get_fh_log_lvl(self) -> str: return self._settings["debugging"]["fh_log_lvl"] + def set_main_window_x(self, x = 0): self.settings.config.window_x = x + def set_main_window_y(self, y = 0): self.settings.config.window_y = y + def set_main_window_width(self, width = 800): self.settings.config.window_width = width + def set_main_window_height(self, height = 600): self.settings.config.window_height = height + def set_main_window_min_width(self, width = 720): self.settings.config.window_min_width = width + def set_main_window_min_height(self, height = 480): self.settings.config.window_min_height = height def set_trace_debug(self, trace_debug): self._trace_debug = trace_debug @@ -192,11 +178,10 @@ class Settings(StartCheckMixin, Singleton): def load_settings(self): - with open(self._CONFIG_FILE) as f: - self._settings = json.load(f) - self._config = self._settings["config"] - self._theming = self._settings["theming"] + with open(self._CONFIG_FILE) as file: + data = json.load(file) + self.settings = Settings(**data) def save_settings(self): with open(self._CONFIG_FILE, 'w') as outfile: - json.dump(self._settings, outfile, separators=(',', ':'), indent=4) + json.dump(asdict(self.settings), outfile, separators=(',', ':'), indent=4) diff --git a/src/utils/settings_manager/options/__init__.py b/src/utils/settings_manager/options/__init__.py new file mode 100644 index 0000000..0046efd --- /dev/null +++ b/src/utils/settings_manager/options/__init__.py @@ -0,0 +1,8 @@ +""" + Options module +""" +from .settings import Settings +from .config import Config +from .filters import Filters +from .theming import Theming +from .debugging import Debugging diff --git a/src/utils/settings_manager/options/config.py b/src/utils/settings_manager/options/config.py new file mode 100644 index 0000000..db234bc --- /dev/null +++ b/src/utils/settings_manager/options/config.py @@ -0,0 +1,35 @@ +# Python imports +from dataclasses import dataclass + +# Lib imports + +# Application imports + + +@dataclass +class Config: + base_of_home: str + hide_hidden_files: str + thumbnailer_path: str + blender_thumbnailer_path: str + go_past_home: str + lock_folder: str + locked_folders: [] + mplayer_options: str + music_app: str + media_app: str + image_app: str + office_app: str + pdf_app: str + code_app: str + text_app: str + file_manager_app: str + terminal_app: str + remux_folder_max_disk_usage: str + make_transparent: int + main_window_x: int + main_window_y: int + main_window_min_width: int + main_window_min_height: int + main_window_width: int + main_window_height: int diff --git a/src/utils/settings_manager/options/debugging.py b/src/utils/settings_manager/options/debugging.py new file mode 100644 index 0000000..22c9957 --- /dev/null +++ b/src/utils/settings_manager/options/debugging.py @@ -0,0 +1,12 @@ +# Python imports +from dataclasses import dataclass + +# Lib imports + +# Application imports + + +@dataclass +class Debugging: + ch_log_lvl: int + fh_log_lvl: int diff --git a/src/utils/settings_manager/options/filters.py b/src/utils/settings_manager/options/filters.py new file mode 100644 index 0000000..7666358 --- /dev/null +++ b/src/utils/settings_manager/options/filters.py @@ -0,0 +1,18 @@ +# Python imports +from dataclasses import dataclass + +# Lib imports + +# Application imports + + +@dataclass +class Filters: + meshs: [] + code: [] + videos: [] + office: [] + images: [] + text: [] + music: [] + pdf: [] diff --git a/src/utils/settings_manager/options/settings.py b/src/utils/settings_manager/options/settings.py new file mode 100644 index 0000000..8b976ae --- /dev/null +++ b/src/utils/settings_manager/options/settings.py @@ -0,0 +1,24 @@ +# Python imports +from dataclasses import dataclass + +# Gtk imports + +# Application imports +from .config import Config +from .filters import Filters +from .theming import Theming +from .debugging import Debugging + + +@dataclass +class Settings: + config: Config + filters: Filters + theming: Theming + debugging: Debugging + + def __post_init__(self): + self.config = Config(**self.config) + self.filters = Filters(**self.filters) + self.theming = Theming(**self.theming) + self.debugging = Debugging(**self.debugging) diff --git a/src/utils/settings_manager/options/theming.py b/src/utils/settings_manager/options/theming.py new file mode 100644 index 0000000..eff7696 --- /dev/null +++ b/src/utils/settings_manager/options/theming.py @@ -0,0 +1,13 @@ +# Python imports +from dataclasses import dataclass + +# Lib imports + +# Application imports + + +@dataclass +class Theming: + success_color: str + warning_color: str + error_color: str diff --git a/src/utils/settings/start_check_mixin.py b/src/utils/settings_manager/start_check_mixin.py similarity index 96% rename from src/utils/settings/start_check_mixin.py rename to src/utils/settings_manager/start_check_mixin.py index 7fba503..688da36 100644 --- a/src/utils/settings/start_check_mixin.py +++ b/src/utils/settings_manager/start_check_mixin.py @@ -41,6 +41,7 @@ class StartCheckMixin: def _write_new_pid(self): pid = os.getpid() self._write_pid(pid) + print(f"{app_name} PID: {pid}") def _clean_pid(self): os.unlink(self._PID_FILE) diff --git a/user_config/usr/share/app_name/settings.json b/user_config/usr/share/app_name/settings.json index c11b4fd..7d46632 100644 --- a/user_config/usr/share/app_name/settings.json +++ b/user_config/usr/share/app_name/settings.json @@ -1,41 +1,123 @@ { - "config": { - "base_of_home": "", - "hide_hidden_files": "true", - "thumbnailer_path": "ffmpegthumbnailer", - "go_past_home": "true", - "lock_folder": "false", - "locked_folders": "venv::::flasks", - "mplayer_options": "-quiet -really-quiet -xy 1600 -geometry 50%:50%", - "music_app": "/opt/deadbeef/bin/deadbeef", - "media_app": "mpv", - "image_app": "mirage", - "office_app": "libreoffice", - "pdf_app": "evince", - "text_app": "leafpad", - "file_manager_app": "solarfm", - "terminal_app": "terminator", - "remux_folder_max_disk_usage": "8589934592", - "make_transparent": 0 + "config":{ + "base_of_home":"", + "hide_hidden_files":"true", + "thumbnailer_path":"ffmpegthumbnailer", + "blender_thumbnailer_path":"", + "go_past_home":"true", + "lock_folder":"false", + "locked_folders":[ + "venv", + "flasks" + ], + "mplayer_options":"-quiet -really-quiet -xy 1600 -geometry 50%:50%", + "music_app":"/opt/deadbeef/bin/deadbeef", + "media_app":"mpv", + "image_app":"mirage", + "office_app":"libreoffice", + "pdf_app":"evince", + "code_app":"atom", + "text_app":"leafpad", + "file_manager_app":"solarfm", + "terminal_app":"terminator", + "remux_folder_max_disk_usage":"8589934592", + "make_transparent":0, + "main_window_x":721, + "main_window_y":465, + "main_window_min_width":720, + "main_window_min_height":480, + "main_window_width":800, + "main_window_height":600 }, - "filters": { - "meshs": [".blend", ".dae", ".fbx", ".gltf", ".obj", ".stl"], - "code": [".cpp", ".css", ".c", ".go", ".html", ".htm", ".java", ".js", ".json", ".lua", ".md", ".py", ".rs", ".toml", ".xml", ".pom"], - "videos": [".mkv", ".mp4", ".webm", ".avi", ".mov", ".m4v", ".mpg", ".mpeg", ".wmv", ".flv"], - "office": [".doc", ".docx", ".xls", ".xlsx", ".xlt", ".xltx", ".xlm", ".ppt", ".pptx", ".pps", ".ppsx", ".odt", ".rtf"], - "images": [".png", ".jpg", ".jpeg", ".gif", ".ico", ".tga", ".webp"], - "text": [".txt", ".text", ".sh", ".cfg", ".conf", ".log"], - "music": [".psf", ".mp3", ".ogg", ".flac", ".m4a"], - "pdf": [".pdf"] - - }, - "theming":{ - "success_color":"#88cc27", - "warning_color":"#ffa800", - "error_color":"#ff0000" - }, - "debugging": { - "ch_log_lvl": 10, - "fh_log_lvl": 20 - } -} + "filters":{ + "meshs":[ + ".blend", + ".dae", + ".fbx", + ".gltf", + ".obj", + ".stl" + ], + "code":[ + ".cpp", + ".css", + ".c", + ".go", + ".html", + ".htm", + ".java", + ".js", + ".json", + ".lua", + ".md", + ".py", + ".rs", + ".toml", + ".xml", + ".pom" + ], + "videos":[ + ".mkv", + ".mp4", + ".webm", + ".avi", + ".mov", + ".m4v", + ".mpg", + ".mpeg", + ".wmv", + ".flv" + ], + "office":[ + ".doc", + ".docx", + ".xls", + ".xlsx", + ".xlt", + ".xltx", + ".xlm", + ".ppt", + ".pptx", + ".pps", + ".ppsx", + ".odt", + ".rtf" + ], + "images":[ + ".png", + ".jpg", + ".jpeg", + ".gif", + ".ico", + ".tga", + ".webp" + ], + "text":[ + ".txt", + ".text", + ".sh", + ".cfg", + ".conf", + ".log" + ], + "music":[ + ".psf", + ".mp3", + ".ogg", + ".flac", + ".m4a" + ], + "pdf":[ + ".pdf" + ] + }, + "theming":{ + "success_color":"#88cc27", + "warning_color":"#ffa800", + "error_color":"#ff0000" + }, + "debugging":{ + "ch_log_lvl":10, + "fh_log_lvl":20 + } +} \ No newline at end of file diff --git a/user_config/usr/share/app_name/stylesheet.css b/user_config/usr/share/app_name/stylesheet.css index c0383f6..f38e46f 100644 --- a/user_config/usr/share/app_name/stylesheet.css +++ b/user_config/usr/share/app_name/stylesheet.css @@ -1,69 +1,17 @@ /* Set fm to have transparent window */ -box, -iconview, -notebook, -paned, -stack, -scrolledwindow, -treeview.view, -.content-view, -.view { - background: rgba(19, 21, 25, 0.14); +* { + /* background: rgba(0, 0, 0, 0.14); */ color: rgba(255, 255, 255, 1); + border: 2px solid rgba(0, 0, 0, 0.0); } -notebook > header > tabs > tab:checked { - /* Neon Blue 00e8ff */ - background-color: rgba(0, 232, 255, 0.2); - /* Dark Bergundy */ - /* background-color: rgba(116, 0, 0, 0.25); */ - - color: rgba(255, 255, 255, 0.8); -} - -#message_view { - font: 16px "Monospace"; -} - -.view:selected, -.view:selected:hover { - box-shadow: inset 0 0 0 9999px rgba(21, 158, 167, 0.34); - color: rgba(255, 255, 255, 0.5); -} - -.alert-border { - border: 2px solid rgba(116, 0, 0, 0.64); -} - -.search-border { - border: 2px solid rgba(136, 204, 39, 1); -} - -.notebook-selected-focus { - /* Neon Blue 00e8ff border */ - border: 2px solid rgba(0, 232, 255, 0.34); - /* Dark Bergundy */ - /* border: 2px solid rgba(116, 0, 0, 0.64); */ -} - -.notebook-unselected-focus { - /* Neon Blue 00e8ff border */ - /* border: 2px solid rgba(0, 232, 255, 0.25); */ - /* Dark Bergundy */ - /* border: 2px solid rgba(116, 0, 0, 0.64); */ - /* Snow White */ - border: 2px solid rgba(255, 255, 255, 0.24); +.base-container { + margin: 10px; } - -/* * { - background: rgba(0, 0, 0, 0.14); - color: rgba(255, 255, 255, 1); -} */ - /* * selection { background-color: rgba(116, 0, 0, 0.65); color: rgba(255, 255, 255, 0.5);