From a237757e5e132e3a5375afdc0d87d04316ee4c75 Mon Sep 17 00:00:00 2001
From: itdominator <1itdominator@gmail.com>
Date: Sun, 4 Dec 2022 02:45:26 -0600
Subject: [PATCH] Moved remaining popups to classes and some cleanup
---
.../SolarFM/solarfm/core/controller.py | 8 +-
.../SolarFM/solarfm/core/controller_data.py | 1 -
.../core/mixins/exception_hook_mixin.py | 55 ---------
.../solarfm/core/mixins/show_hide_mixin.py | 13 --
.../solarfm/core/mixins/signals_mixins.py | 3 +-
.../solarfm/core/mixins/ui/tab_mixin.py | 6 +-
.../solarfm/core/mixins/ui/window_mixin.py | 2 +-
.../solarfm-0.0.1/SolarFM/solarfm/core/ui.py | 5 +-
.../SolarFM/solarfm/widgets/about_widget.py | 2 +
.../solarfm/widgets/appchooser_widget.py | 2 +
.../solarfm/widgets/context_menu_widget.py | 2 +
.../solarfm/widgets/file_exists_widget.py | 2 +
.../solarfm/widgets/icon_grid_widget.py | 2 +
.../solarfm/widgets/icon_tree_widget.py | 2 +
.../SolarFM/solarfm/widgets/io_widget.py | 2 +
.../solarfm/widgets/new_file_widget.py | 2 +
.../solarfm/widgets/popups/io_popup_widget.py | 5 +
.../widgets/popups/message_popup_widget.py | 114 ++++++++++++++++++
.../widgets/popups/path_menu_popup_widget.py | 57 +++++++++
.../widgets/popups/plugins_popup_widget.py | 4 +
.../SolarFM/solarfm/widgets/rename_widget.py | 2 +
.../solarfm/widgets/tab_header_widget.py | 2 +
.../usr/share/solarfm/Main_Window.glade | 92 +-------------
23 files changed, 216 insertions(+), 169 deletions(-)
delete mode 100644 src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/exception_hook_mixin.py
delete mode 100644 src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/show_hide_mixin.py
create mode 100644 src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/popups/message_popup_widget.py
create mode 100644 src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/popups/path_menu_popup_widget.py
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/controller.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/controller.py
index 3e4f3fd..1ca8337 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/controller.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/controller.py
@@ -13,6 +13,8 @@ from gi.repository import GLib
from .controller_data import Controller_Data
from .mixins.signals_mixins import SignalsMixins
+from widgets.popups.message_popup_widget import MessagePopupWidget
+from widgets.popups.path_menu_popup_widget import PathMenuPopupWidget
from widgets.popups.plugins_popup_widget import PluginsPopupWidget
from widgets.popups.io_popup_widget import IOPopupWidget
@@ -56,6 +58,8 @@ class Controller(UI, SignalsMixins, Controller_Data):
# NOTE: Really we will move these to the UI/(New) Window 'base' controller
# after we're done cleaning and refactoring to use fewer mixins.
def _load_widgets(self):
+ MessagePopupWidget()
+ PathMenuPopupWidget()
PluginsPopupWidget()
IOPopupWidget()
ContextMenuWidget()
@@ -68,7 +72,6 @@ class Controller(UI, SignalsMixins, Controller_Data):
def _subscribe_to_events(self):
event_system.subscribe("handle_file_from_ipc", self.handle_file_from_ipc)
event_system.subscribe("get_current_state", self.get_current_state)
- event_system.subscribe("display_message", self.display_message)
event_system.subscribe("go_to_path", self.go_to_path)
event_system.subscribe("do_action_from_menu_controls", self.do_action_from_menu_controls)
# NOTE: Needs to be moved (probably just to file actions class) after reducing mixins usage
@@ -171,7 +174,8 @@ class Controller(UI, SignalsMixins, Controller_Data):
event_system.emit("show_io_popup")
if action == "plugins_popup":
event_system.emit("show_plugins_popup")
-
+ if action == "messages_popup":
+ event_system.emit("show_messages_popup")
@endpoint_registry.register(rule="go_home")
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/controller_data.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/controller_data.py
index 5740ca7..211ce95 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/controller_data.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/controller_data.py
@@ -55,7 +55,6 @@ class Controller_Data:
self.exists_file_rename_bttn = self.builder.get_object("exists_file_rename_bttn")
self.warning_alert = self.builder.get_object("warning_alert")
- self.path_menu = self.builder.get_object("path_menu")
self.path_entry = self.builder.get_object("path_entry")
self.bottom_size_label = self.builder.get_object("bottom_size_label")
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/exception_hook_mixin.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/exception_hook_mixin.py
deleted file mode 100644
index b05dc50..0000000
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/exception_hook_mixin.py
+++ /dev/null
@@ -1,55 +0,0 @@
-# Python imports
-import traceback
-import time
-
-# Lib imports
-import gi
-gi.require_version('Gtk', '3.0')
-from gi.repository import Gtk
-from gi.repository import GLib
-
-# Application imports
-
-
-
-
-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_color, data)
-
- def display_message(self, type, text, seconds=None):
- self.message_buffer.insert_at_cursor(text)
- self.message_popup_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_popup_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()
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/show_hide_mixin.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/show_hide_mixin.py
deleted file mode 100644
index ff34987..0000000
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/show_hide_mixin.py
+++ /dev/null
@@ -1,13 +0,0 @@
-# Python imports
-
-# Gtk imports
-import gi
-gi.require_version('Gtk', '3.0')
-from gi.repository import Gtk
-
-# Application imports
-
-
-class ShowHideMixin:
- def show_messages_popup(self, type, text, seconds=None):
- self.message_popup_widget.popup()
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/signals_mixins.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/signals_mixins.py
index d2de706..eb79f46 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/signals_mixins.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/signals_mixins.py
@@ -1,7 +1,6 @@
# Python imports
# Lib imports
-from .exception_hook_mixin import ExceptionHookMixin
from .signals.file_action_signals_mixin import FileActionSignalsMixin
from .signals.ipc_signals_mixin import IPCSignalsMixin
from .signals.keyboard_signals_mixin import KeyboardSignalsMixin
@@ -11,5 +10,5 @@ from .signals.keyboard_signals_mixin import KeyboardSignalsMixin
-class SignalsMixins(FileActionSignalsMixin, KeyboardSignalsMixin, IPCSignalsMixin, ExceptionHookMixin):
+class SignalsMixins(FileActionSignalsMixin, KeyboardSignalsMixin, IPCSignalsMixin):
...
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/ui/tab_mixin.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/ui/tab_mixin.py
index 2460417..fcead0e 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/ui/tab_mixin.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/ui/tab_mixin.py
@@ -167,9 +167,9 @@ class TabMixin(GridMixin):
show_path_menu = True
if not show_path_menu:
- self.path_menu.popdown()
+ event_system.emit("hide_path_menu")
else:
- self.path_menu.popup()
+ event_system.emit("show_path_menu")
widget.grab_focus_without_selecting()
widget.set_position(-1)
@@ -194,7 +194,7 @@ class TabMixin(GridMixin):
path_entry.set_text(path)
path_entry.grab_focus_without_selecting()
path_entry.set_position(-1)
- self.path_menu.popdown()
+ event_system.emit("hide_path_menu")
def show_hide_hidden_files(self):
wid, tid = self.fm_controller.get_active_wid_and_tid()
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/ui/window_mixin.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/ui/window_mixin.py
index 2dcf94b..23b15b5 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/ui/window_mixin.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/ui/window_mixin.py
@@ -188,7 +188,7 @@ class WindowMixin(TabMixin):
def grid_icon_single_click(self, icons_grid, eve):
try:
- self.path_menu.popdown()
+ event_system.emit("hide_path_menu")
wid, tid = icons_grid.get_name().split("|")
self.fm_controller.set_wid_and_tid(wid, tid)
self.set_path_text(wid, tid)
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui.py
index fe3b33b..7edc0a0 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui.py
@@ -3,10 +3,11 @@
# Gtk imports
# Application imports
-from .mixins.show_hide_mixin import ShowHideMixin
from .mixins.ui.pane_mixin import PaneMixin
from .mixins.ui.window_mixin import WindowMixin
-class UI(PaneMixin, WindowMixin, ShowHideMixin):
+
+
+class UI(PaneMixin, WindowMixin):
...
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/about_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/about_widget.py
index 1f80160..c094e85 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/about_widget.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/about_widget.py
@@ -9,6 +9,8 @@ from gi.repository import Gtk
# Application imports
+
+
class AboutWidget:
"""docstring for AboutWidget."""
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/appchooser_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/appchooser_widget.py
index 9bf123d..61ce8a9 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/appchooser_widget.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/appchooser_widget.py
@@ -9,6 +9,8 @@ from gi.repository import Gtk
# Application imports
+
+
class AppchooserWidget:
"""docstring for AppchooserWidget."""
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/context_menu_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/context_menu_widget.py
index e0f4a8f..358961c 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/context_menu_widget.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/context_menu_widget.py
@@ -9,6 +9,8 @@ from gi.repository import Gtk
# Application imports
+
+
class ContextMenuWidget(Gtk.Menu):
"""docstring for ContextMenuWidget"""
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/file_exists_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/file_exists_widget.py
index eaacd56..14c596c 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/file_exists_widget.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/file_exists_widget.py
@@ -10,6 +10,8 @@ from gi.repository import GLib
# Application imports
+
+
class FileExistsWidget:
"""docstring for FileExistsWidget."""
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/icon_grid_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/icon_grid_widget.py
index 9000a02..9f43d99 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/icon_grid_widget.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/icon_grid_widget.py
@@ -12,6 +12,8 @@ from gi.repository import GdkPixbuf
# Application imports
+
+
class IconGridWidget(Gtk.IconView):
"""docstring for IconGridWidget"""
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/icon_tree_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/icon_tree_widget.py
index 416796e..6f935e6 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/icon_tree_widget.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/icon_tree_widget.py
@@ -11,6 +11,8 @@ from gi.repository import GdkPixbuf
# Application imports
+
+
class IconTreeWidget(Gtk.TreeView):
"""docstring for IconTreeWidget"""
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/io_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/io_widget.py
index 0b54e35..f83ede2 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/io_widget.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/io_widget.py
@@ -9,6 +9,8 @@ from gi.repository import Gio
# Application imports
+
+
class IOWidget(Gtk.Box):
"""docstring for IOWidget"""
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/new_file_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/new_file_widget.py
index b261e69..6593e70 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/new_file_widget.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/new_file_widget.py
@@ -11,6 +11,8 @@ from gi.repository import Gdk
# Application imports
+
+
class NewFileWidget:
"""docstring for NewFileWidget."""
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/popups/io_popup_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/popups/io_popup_widget.py
index 0d1d7b2..2dcb199 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/popups/io_popup_widget.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/popups/io_popup_widget.py
@@ -9,6 +9,8 @@ from gi.repository import Gtk
# Application imports
+
+
class IOPopupWidget(Gtk.Popover):
"""docstring for IOPopupWidget."""
@@ -29,12 +31,15 @@ class IOPopupWidget(Gtk.Popover):
self.set_relative_to(io_button)
self.set_modal(True)
self.set_position(Gtk.PositionType.BOTTOM)
+ self.set_size_request(320, 280)
def _setup_signals(self):
event_system.subscribe("show_io_popup", self.show_io_popup)
def _load_widgets(self):
vbox = Gtk.Box()
+
+ vbox.set_orientation(Gtk.Orientation.VERTICAL)
self.builder.expose_object(f"io_list", vbox)
self.add(vbox)
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/popups/message_popup_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/popups/message_popup_widget.py
new file mode 100644
index 0000000..664993e
--- /dev/null
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/popups/message_popup_widget.py
@@ -0,0 +1,114 @@
+# Python imports
+import inspect
+import traceback
+import time
+
+# Lib imports
+import gi
+gi.require_version('Gtk', '3.0')
+from gi.repository import Gtk
+from gi.repository import GLib
+
+# Application imports
+
+
+
+
+class MessagePopupWidget(Gtk.Popover):
+ """ MessagePopupWidget custom exception hook viewer to reroute to log Gtk text area too. """
+
+
+ def __init__(self):
+ super(MessagePopupWidget, self).__init__()
+ self.builder = settings.get_builder()
+
+ self.builder.expose_object(f"message_popup_widget", self)
+ self._message_buffer = None
+
+ self._setup_styling()
+ self._setup_signals()
+ self._load_widgets()
+ self.show_all()
+
+
+ def _setup_styling(self):
+ self.set_relative_to( self.builder.get_object(f"main_menu_bar") )
+ self.set_modal(True)
+ self.set_position(Gtk.PositionType.BOTTOM)
+ self.set_size_request(620, 580)
+
+ def _setup_signals(self):
+ event_system.subscribe("show_messages_popup", self.show_messages_popup)
+ event_system.subscribe("hide_messages_popup", self.hide_messages_popup)
+
+
+ def _load_widgets(self):
+ self._message_buffer = Gtk.TextBuffer()
+ vbox = Gtk.Box()
+ scroll_window = Gtk.ScrolledWindow()
+ message_text_view = Gtk.TextView.new_with_buffer(self._message_buffer)
+
+ button = Gtk.Button(label="Save As")
+ button.set_image( Gtk.Image(stock=Gtk.STOCK_SAVE_AS) )
+ button.connect("released", self.save_debug_alerts)
+ button.set_always_show_image(True)
+
+ vbox.set_vexpand(True)
+ vbox.set_hexpand(True)
+ scroll_window.set_vexpand(True)
+ scroll_window.set_hexpand(True)
+ vbox.set_orientation(Gtk.Orientation.VERTICAL)
+
+ self.builder.expose_object(f"message_popup_widget", self)
+ self.builder.expose_object(f"message_text_view", message_text_view)
+
+ vbox.add(button)
+ scroll_window.add(message_text_view)
+ vbox.add(scroll_window)
+ self.add(vbox)
+
+ def show_messages_popup(self):
+ self.popup()
+
+ def hide_messages_popup(self):
+ self.popup()
+
+
+ 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_color, data)
+
+ def display_message(self, type, text, seconds=None):
+ self._message_buffer.insert_at_cursor(text)
+ self.popup()
+ if seconds:
+ self.hide_message_timeout(seconds)
+
+ @threaded
+ def hide_message_timeout(self, seconds=3):
+ time.sleep(seconds)
+ # GLib.idle_add(self.message_popup_widget.popdown)
+ GLib.idle_add(event_system.emit, ("hide_messages_popup"))
+
+ 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", settings.get_main_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()
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/popups/path_menu_popup_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/popups/path_menu_popup_widget.py
new file mode 100644
index 0000000..02a051e
--- /dev/null
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/popups/path_menu_popup_widget.py
@@ -0,0 +1,57 @@
+# Python imports
+
+# Lib imports
+import gi
+gi.require_version('Gtk', '3.0')
+from gi.repository import Gtk
+
+# Application imports
+
+
+
+
+class PathMenuPopupWidget(Gtk.Popover):
+ """docstring for PathMenuPopupWidget."""
+
+ def __init__(self):
+ super(PathMenuPopupWidget, self).__init__()
+ self.builder = settings.get_builder()
+
+ self.builder.expose_object(f"path_menu", self)
+
+ self._setup_styling()
+ self._setup_signals()
+ self._load_widgets()
+ self.show_all()
+
+
+ def _setup_styling(self):
+ path_entry = self.builder.get_object(f"path_entry")
+ self.set_relative_to(path_entry)
+ self.set_modal(False)
+ self.set_position(Gtk.PositionType.BOTTOM)
+ self.set_size_request(240, 420)
+
+ def _setup_signals(self):
+ event_system.subscribe("show_path_menu", self.show_path_menu)
+ event_system.subscribe("hide_path_menu", self.hide_path_menu)
+
+ def _load_widgets(self):
+ path_menu_buttons = Gtk.ButtonBox()
+ scroll_window = Gtk.ScrolledWindow()
+ view_port = Gtk.Viewport()
+
+ scroll_window.set_vexpand(True)
+ scroll_window.set_hexpand(True)
+ path_menu_buttons.set_orientation(Gtk.Orientation.VERTICAL)
+
+ self.builder.expose_object(f"path_menu_buttons", path_menu_buttons)
+ view_port.add(path_menu_buttons)
+ scroll_window.add(view_port)
+ self.add(scroll_window)
+
+ def show_path_menu(self, widget=None, eve=None):
+ self.popup()
+
+ def hide_path_menu(self, widget=None, eve=None):
+ self.popdown()
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/popups/plugins_popup_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/popups/plugins_popup_widget.py
index c67e82c..61f4004 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/popups/plugins_popup_widget.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/popups/plugins_popup_widget.py
@@ -9,6 +9,8 @@ from gi.repository import Gtk
# Application imports
+
+
class PluginsPopupWidget(Gtk.Popover):
"""docstring for PluginsPopupWidget."""
@@ -37,6 +39,8 @@ class PluginsPopupWidget(Gtk.Popover):
def _load_widgets(self):
vbox = Gtk.Box()
+
+ vbox.set_orientation(Gtk.Orientation.VERTICAL)
self.builder.expose_object(f"plugin_control_list", vbox)
self.add(vbox)
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/rename_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/rename_widget.py
index 0847ba3..7086196 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/rename_widget.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/rename_widget.py
@@ -11,6 +11,8 @@ from gi.repository import Gdk
# Application imports
+
+
class RenameWidget:
"""docstring for RenameWidget."""
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/tab_header_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/tab_header_widget.py
index e125634..e3efccb 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/tab_header_widget.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/tab_header_widget.py
@@ -8,6 +8,8 @@ from gi.repository import Gtk
# Application imports
+
+
class TabHeaderWidget(Gtk.ButtonBox):
"""docstring for TabHeaderWidget"""
diff --git a/user_config/usr/share/solarfm/Main_Window.glade b/user_config/usr/share/solarfm/Main_Window.glade
index 81ee97a..cb7cc31 100644
--- a/user_config/usr/share/solarfm/Main_Window.glade
+++ b/user_config/usr/share/solarfm/Main_Window.glade
@@ -32,7 +32,6 @@
False
gtk-stop
-
@@ -901,94 +901,6 @@
-
-