Moved about dialogue to class and new glade file

This commit is contained in:
2022-12-03 23:10:25 -06:00
parent 0d01030be3
commit 59adbe58da
9 changed files with 488 additions and 405 deletions

View File

@@ -12,6 +12,13 @@ from gi.repository import GLib
# Application imports
from .controller_data import Controller_Data
from .mixins.signals_mixins import SignalsMixins
from widgets.context_menu_widget import ContextMenuWidget
from widgets.new_file_widget import NewFileWidget
from widgets.rename_widget import RenameWidget
from widgets.file_exists_widget import FileExistsWidget
from widgets.about_widget import AboutWidget
from .ui import UI
@@ -20,7 +27,11 @@ from .ui import UI
class Controller(UI, SignalsMixins, Controller_Data):
""" Controller coordinates the mixins and is somewhat the root hub of it all. """
def __init__(self, args, unknownargs):
self._setup_styling()
self._setup_signals()
self._subscribe_to_events()
self._load_widgets()
self.setup_controller_data()
self.generate_windows(self.fm_controller_data)
@@ -32,6 +43,21 @@ class Controller(UI, SignalsMixins, Controller_Data):
message = f"FILE|{arg}"
event_system.emit("post_file_to_ipc", message)
def _setup_styling(self):
...
def _setup_signals(self):
...
# 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):
ContextMenuWidget()
NewFileWidget()
RenameWidget()
FileExistsWidget()
AboutWidget()
def _subscribe_to_events(self):
event_system.subscribe("handle_file_from_ipc", self.handle_file_from_ipc)
@@ -129,6 +155,8 @@ class Controller(UI, SignalsMixins, Controller_Data):
self.create_files()
if action in ["save_session", "save_session_as", "load_session"]:
self.save_load_session(action)
if action == "about_page":
event_system.emit("show_about_page")
@endpoint_registry.register(rule="go_home")

View File

@@ -12,15 +12,12 @@ from gi.repository import Gtk
from gi.repository import GLib
# Application imports
from widgets.new_file_widget import NewFileWidget
from widgets.rename_widget import RenameWidget
from widgets.file_exists_widget import FileExistsWidget
from widgets.context_menu_widget import ContextMenuWidget
from shellfm.windows.controller import WindowController
from plugins.plugins_controller import PluginsController
@dataclass(slots=True)
class State:
wid: int = None
@@ -39,17 +36,12 @@ class Controller_Data:
__slots__ = "settings", "builder", "logger", "keybindings", "trashman", "fm_controller", "window", "window1", "window2", "window3", "window4"
def setup_controller_data(self) -> None:
self.builder = settings.get_builder()
self.keybindings = settings.get_keybindings()
self.builder = settings.get_builder()
self.keybindings = settings.get_keybindings()
NewFileWidget()
RenameWidget()
FileExistsWidget()
ContextMenuWidget()
self.fm_controller = WindowController()
self.plugins = PluginsController()
self.fm_controller_data = self.fm_controller.get_state_from_file()
self.fm_controller = WindowController()
self.plugins = PluginsController()
self.fm_controller_data = self.fm_controller.get_state_from_file()
self.window = settings.get_main_window()
self.window1 = self.builder.get_object("window_1")

View File

@@ -15,16 +15,6 @@ class ShowHideMixin:
def stop_file_searching(self, widget=None, eve=None):
self.is_searching = False
def show_about_page(self, widget=None, eve=None):
about_page = self.builder.get_object("about_page")
response = about_page.run()
if response in [Gtk.ResponseType.CANCEL, Gtk.ResponseType.DELETE_EVENT]:
self.hide_about_page()
def hide_about_page(self, widget=None, eve=None):
self.builder.get_object("about_page").hide()
def show_appchooser_menu(self, widget=None, eve=None):
appchooser_menu = self.builder.get_object("appchooser_menu")
appchooser_widget = self.builder.get_object("appchooser_widget")

View File

@@ -0,0 +1,61 @@
# Python imports
# Lib imports
import inspect
import gi
gi.require_version('Gtk', '3.0')
gi.require_version('Gdk', '3.0')
from gi.repository import Gtk
from gi.repository import Gdk
# Application imports
class AboutWidget:
"""docstring for AboutWidget."""
def __init__(self):
super(AboutWidget, self).__init__()
_GLADE_FILE = f"{settings.get_ui_widgets_path()}/about_ui.glade"
builder = settings.get_builder()
self._builder = Gtk.Builder()
self._builder.add_from_file(_GLADE_FILE)
self.about_page = self._builder.get_object("about_page")
builder.expose_object(f"about_page", self.about_page)
self._setup_styling()
self._setup_signals()
self._load_widgets()
def _setup_styling(self):
...
def _setup_signals(self):
event_system.subscribe("show_about_page", self.show_about_page)
event_system.subscribe("hide_about_page", self.hide_about_page)
classes = [self]
handlers = {}
for c in classes:
methods = None
try:
methods = inspect.getmembers(c, predicate=inspect.ismethod)
handlers.update(methods)
except Exception as e:
print(repr(e))
self._builder.connect_signals(handlers)
def _load_widgets(self):
...
def show_about_page(self, widget=None, eve=None):
response = self.about_page.run()
if response in [Gtk.ResponseType.CANCEL, Gtk.ResponseType.DELETE_EVENT]:
self.hide_about_page()
def hide_about_page(self, widget=None, eve=None):
self.about_page.hide()