In effect addeed socket recovery logic; removed endpoint registery

This commit is contained in:
2023-10-18 21:23:45 -05:00
parent 153cc450d9
commit 6fe4db7c63
15 changed files with 144 additions and 128 deletions

View File

@@ -65,9 +65,11 @@ class Controller(UIMixin, SignalsMixins, Controller_Data):
FileSystemActions()
def _subscribe_to_events(self):
event_system.subscribe("shutting_down", self._shutting_down)
event_system.subscribe("handle_file_from_ipc", self.handle_file_from_ipc)
event_system.subscribe("generate_file_views", self._generate_file_views)
event_system.subscribe("clear_notebooks", self.clear_notebooks)
event_system.subscribe("set_window_title", self._set_window_title)
event_system.subscribe("unset_selected_files_views", self._unset_selected_files_views)
event_system.subscribe("get_current_state", self.get_current_state)
@@ -107,6 +109,10 @@ class Controller(UIMixin, SignalsMixins, Controller_Data):
FileExistsWidget()
SaveLoadWidget()
def _shutting_down(self):
if not settings_manager.is_trace_debug():
self.fm_controller.save_state()
def reload_plugins(self, widget=None, eve=None):
self.plugins.reload_plugins()
@@ -162,28 +168,22 @@ class Controller(UIMixin, SignalsMixins, Controller_Data):
event_system.emit("tear_down")
@endpoint_registry.register(rule="go_home")
def go_home(self, widget=None, eve=None):
self.builder.get_object("go_home").released()
@endpoint_registry.register(rule="refresh_tab")
def refresh_tab(self, widget=None, eve=None):
self.builder.get_object("refresh_tab").released()
@endpoint_registry.register(rule="go_up")
def go_up(self, widget=None, eve=None):
self.builder.get_object("go_up").released()
@endpoint_registry.register(rule="grab_focus_path_entry")
def grab_focus_path_entry(self, widget=None, eve=None):
self.builder.get_object("path_entry").grab_focus()
@endpoint_registry.register(rule="tggl_top_main_menubar")
def tggl_top_main_menubar(self, widget=None, eve=None):
top_main_menubar = self.builder.get_object("top_main_menubar")
top_main_menubar.hide() if top_main_menubar.is_visible() else top_main_menubar.show()
@endpoint_registry.register(rule="open_terminal")
def open_terminal(self, widget=None, eve=None):
wid, tid = self.fm_controller.get_active_wid_and_tid()
tab = self.get_fm_window(wid).get_tab_by_id(tid)

View File

@@ -1,7 +1,6 @@
# Python imports
import os
import subprocess
from dataclasses import dataclass
# Lib imports
import gi
@@ -9,55 +8,13 @@ gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
# Application imports
from .sfm_builder import SFMBuilder
from .widgets.dialogs.message_widget import MessageWidget
from .widgets.dialogs.user_pass_widget import UserPassWidget
from shellfm.windows.controller import WindowController
from utils.types.state import State
from plugins.plugins_controller import PluginsController
@dataclass(slots=True)
class State:
fm_controller: any = None
notebooks: any = None
wid: int = None
tid: int = None
tab: type = None
icon_grid: gi.overrides.Gtk.IconView = None
store: gi.overrides.Gtk.ListStore = None
uris: [] = None
uris_raw: [] = None
selected_files: [] = None
to_copy_files: [] = None
to_cut_files: [] = None
message_dialog: type = None
user_pass_dialog: type = None
class SFMBuilder(Gtk.Builder):
"""docstring for SFMBuilder."""
def __init__(self):
super(SFMBuilder, self).__init__()
self.objects = {}
def get_object(self, id: str, use_gtk: bool = True) -> any:
if not use_gtk:
return self.objects[id]
return super(SFMBuilder, self).get_object(id)
def expose_object(self, id: str, object: any, use_gtk: bool = True) -> None:
if not use_gtk:
self.objects[id] = object
else:
super(SFMBuilder, self).expose_object(id, object)
def dereference_object(self, id: str) -> None:
del self.objects[id]
from shellfm.windows.controller import WindowController

View File

@@ -85,7 +85,7 @@ class WindowMixin(TabMixin):
self.set_window_title()
if eve.type == Gdk.EventType.BUTTON_RELEASE and eve.button == 1: # l-click
if self.ctrl_down:
if eve.state & Gdk.ModifierType.CONTROL_MASK:
self.dnd_left_primed = 0
if self.single_click_open: # FIXME: need to find a way to pass the model index

View File

@@ -0,0 +1,33 @@
# Python imports
# Lib imports
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
# Application imports
class SFMBuilder(Gtk.Builder):
"""docstring for SFMBuilder."""
def __init__(self):
super(SFMBuilder, self).__init__()
self.objects = {}
def get_object(self, id: str, use_gtk: bool = True) -> any:
if not use_gtk:
return self.objects[id]
return super(SFMBuilder, self).get_object(id)
def expose_object(self, id: str, object: any, use_gtk: bool = True) -> None:
if not use_gtk:
self.objects[id] = object
else:
super(SFMBuilder, self).expose_object(id, object)
def dereference_object(self, id: str) -> None:
del self.objects[id]

View File

@@ -77,7 +77,7 @@ class UIMixin(PaneMixin, WindowMixin):
scroll_win = notebook.get_children()[-1]
icon_grid = scroll_win.get_children()[0]
self._focus_last_visible_notebook(icon_grid)
# self._focus_last_visible_notebook(icon_grid)
except UIMixinException as e:
logger.info("\n: The saved session might be missing window data! :\nLocation: ~/.config/solarfm/session.json\nFix: Back it up and delete it to reset.\n")
logger.debug(repr(e))

View File

@@ -80,7 +80,7 @@ class WindowMixin(TabMixin):
self.set_window_title()
if eve.type == Gdk.EventType.BUTTON_RELEASE and eve.button == 1: # l-click
if self.ctrl_down:
if eve.state & Gdk.ModifierType.CONTROL_MASK:
self.dnd_left_primed = 0
if self.single_click_open: # FIXME: need to find a way to pass the model index

View File

@@ -20,8 +20,6 @@ class IconGridWidget(Gtk.IconView):
def __init__(self):
super(IconGridWidget, self).__init__()
# self._store = None
self._setup_styling()
self._setup_signals()
self._set_up_dnd()

View File

@@ -88,11 +88,7 @@ class Window(Gtk.ApplicationWindow):
cr.set_operator(cairo.OPERATOR_OVER)
def _tear_down(self, widget=None, eve=None):
if not settings_manager.is_trace_debug():
self._controller.fm_controller.save_state()
def _tear_down(self, widget = None, eve = None):
event_system.emit("shutting_down")
settings_manager.clear_pid()
time.sleep(event_sleep_time)
Gtk.main_quit()