From bdb9c157f7d4019bd859071ca0cf4733b15c5f72 Mon Sep 17 00:00:00 2001 From: itdominator <1itdominator@gmail.com> Date: Sat, 16 Mar 2024 22:36:04 -0500 Subject: [PATCH] moved controls to dir; added open files button example; css transparency changes --- src/core/containers/header_container.py | 10 ++- src/core/widgets/controls/__init__.py | 3 + .../widgets/controls/open_files_button.py | 86 +++++++++++++++++++ .../{ => controls}/transparency_scale.py | 2 +- user_config/usr/share/app_name/stylesheet.css | 14 +++ 5 files changed, 110 insertions(+), 5 deletions(-) create mode 100644 src/core/widgets/controls/__init__.py create mode 100644 src/core/widgets/controls/open_files_button.py rename src/core/widgets/{ => controls}/transparency_scale.py (93%) diff --git a/src/core/containers/header_container.py b/src/core/containers/header_container.py index 7ed41a3..695c2cf 100644 --- a/src/core/containers/header_container.py +++ b/src/core/containers/header_container.py @@ -6,7 +6,8 @@ gi.require_version('Gtk', '3.0') from gi.repository import Gtk # Application imports -from ..widgets.transparency_scale import TransparencyScale +from ..widgets.controls.open_files_button import OpenFilesButton +from ..widgets.controls.transparency_scale import TransparencyScale @@ -36,14 +37,15 @@ class HeaderContainer(Gtk.Box): def _load_widgets(self): - button = Gtk.Button(label = "Interactive Debug") + button = Gtk.Button(label = "Interactive Debug") button.connect("clicked", self._interactive_debug) - self.add(TransparencyScale()) + self.add( OpenFilesButton() ) + self.add( TransparencyScale() ) self.add(button) def _interactive_debug(self, widget = None, eve = None): event_system.emit("load-interactive-debug") def tggl_top_main_menubar(self): - self.hide() if self.is_visible() else self.show() + self.hide() if self.is_visible() else self.show() \ No newline at end of file diff --git a/src/core/widgets/controls/__init__.py b/src/core/widgets/controls/__init__.py new file mode 100644 index 0000000..f53f627 --- /dev/null +++ b/src/core/widgets/controls/__init__.py @@ -0,0 +1,3 @@ +""" + Widgets.Controls Module +""" diff --git a/src/core/widgets/controls/open_files_button.py b/src/core/widgets/controls/open_files_button.py new file mode 100644 index 0000000..06e6a9f --- /dev/null +++ b/src/core/widgets/controls/open_files_button.py @@ -0,0 +1,86 @@ +# Python imports +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 Gio + +# Application imports + + + +class OpenFilesButton(Gtk.Button): + """docstring for OpenFilesButton.""" + + def __init__(self): + super(OpenFilesButton, self).__init__() + + self._setup_styling() + self._setup_signals() + self._subscribe_to_events() + self._load_widgets() + + + def _setup_styling(self): + self.set_label("Open File(s)...") + self.set_image( Gtk.Image.new_from_icon_name("gtk-open", 4) ) + self.set_always_show_image(True) + self.set_image_position(1) # Left - 0, Right = 1 + self.set_hexpand(False) + + def _setup_signals(self): + self.connect("button-release-event", self._open_files) + + def _subscribe_to_events(self): + event_system.subscribe("open_files", self._open_files) + + def _load_widgets(self): + ... + + def _open_files(self, widget = None, eve = None, gfile = None): + start_dir = None + _gfiles = [] + + if gfile and gfile.query_exists(): + start_dir = gfile.get_parent() + + chooser = Gtk.FileChooserDialog("Open File(s)...", None, + Gtk.FileChooserAction.OPEN, + ( + Gtk.STOCK_CANCEL, + Gtk.ResponseType.CANCEL, + Gtk.STOCK_OPEN, + Gtk.ResponseType.OK + ) + ) + + chooser.set_select_multiple(True) + + try: + folder = widget.get_current_file().get_parent() if not start_dir else start_dir + chooser.set_current_folder( folder.get_path() ) + except Exception as e: + ... + + response = chooser.run() + if not response == Gtk.ResponseType.OK: + chooser.destroy() + return _gfiles + + filenames = chooser.get_filenames() + if not filenames: + chooser.destroy() + return _gfiles + + for file in filenames: + path = file if os.path.isabs(file) else os.path.abspath(file) + _gfiles.append( Gio.File.new_for_path(path) ) + + chooser.destroy() + + logger.debug(_gfiles) + return _gfiles \ No newline at end of file diff --git a/src/core/widgets/transparency_scale.py b/src/core/widgets/controls/transparency_scale.py similarity index 93% rename from src/core/widgets/transparency_scale.py rename to src/core/widgets/controls/transparency_scale.py index 02c11e4..223b59a 100644 --- a/src/core/widgets/transparency_scale.py +++ b/src/core/widgets/controls/transparency_scale.py @@ -37,7 +37,7 @@ class TransparencyScale(Gtk.Scale): def _load_widgets(self): adjust = self.get_adjustment() adjust.set_lower(0) - adjust.set_upper(99) + adjust.set_upper(100) adjust.set_value(settings.theming.transparency) adjust.set_step_increment(1.0) diff --git a/user_config/usr/share/app_name/stylesheet.css b/user_config/usr/share/app_name/stylesheet.css index ce012b1..db9ed2c 100644 --- a/user_config/usr/share/app_name/stylesheet.css +++ b/user_config/usr/share/app_name/stylesheet.css @@ -1,3 +1,16 @@ +/* ---- Make most desired things base transparent ---- */ +popover, +popover > *, +scrolledwindow > *, +textview > *, +.main-window > .base-container > .body-container, +.main-window > .base-container > .body-container > .left-container, +.main-window > .base-container > .body-container > .center-container, +.main-window > .base-container > .body-container > .right-container { + background: rgba(0, 0, 0, 0.0); + color: rgba(255, 255, 255, 1); +} + .base-container { margin: 10px; } @@ -128,3 +141,4 @@ XfdesktopIconView.view:active { .mw_transparency_97 { background: rgba(39, 43, 52, 0.97); } .mw_transparency_98 { background: rgba(39, 43, 52, 0.98); } .mw_transparency_99 { background: rgba(39, 43, 52, 0.99); } +.mw_transparency_100 { background: rgba(39, 43, 52, 1.00); } \ No newline at end of file