refactoring pid logic; addedd window state preservation; slight thread rework

This commit is contained in:
2024-01-08 21:11:10 -06:00
parent 8e5ae4824c
commit be7be00f78
12 changed files with 122 additions and 58 deletions

View File

@@ -41,15 +41,13 @@ class FileActionSignalsMixin:
Gio.FileMonitorEvent.MOVED_OUT]:
if eve_type in [Gio.FileMonitorEvent.MOVED_IN, Gio.FileMonitorEvent.MOVED_OUT]:
# self.update_on_soft_lock_end(data[0])
GLib.Thread("", self.soft_lock_countdown, data[0])
self.update_on_soft_lock_end(data[0])
elif data[0] in self.soft_update_lock.keys():
self.soft_update_lock[data[0]]["last_update_time"] = time.time()
else:
# self.soft_lock_countdown(data[0])
GLib.Thread("", self.soft_lock_countdown, data[0])
self.soft_lock_countdown(data[0])
# @daemon_threaded
@daemon_threaded
def soft_lock_countdown(self, tab_widget):
self.soft_update_lock[tab_widget] = { "last_update_time": time.time()}
@@ -63,9 +61,6 @@ class FileActionSignalsMixin:
self.soft_update_lock.pop(tab_widget, None)
GLib.idle_add(self.update_on_soft_lock_end, *(tab_widget,))
thread = GLib.Thread.self()
thread.unref()
def update_on_soft_lock_end(self, tab_widget):
wid, tid = tab_widget.split("|")

View File

@@ -39,13 +39,15 @@ class GridMixin:
store.append([None, file[0]])
Gtk.main_iteration()
GLib.Thread("", self.generate_icons, tab, store, dir, files)
self.generate_icons(tab, store, dir, files)
# GLib.Thread("", self.generate_icons, tab, store, dir, files)
# NOTE: Not likely called often from here but it could be useful
if save_state and not trace_debug:
self.fm_controller.save_state()
@daemon_threaded
def generate_icons(self, tab, store, dir, files):
try:
loop = asyncio.get_running_loop()
@@ -57,9 +59,6 @@ class GridMixin:
else:
asyncio.run( self.create_icons(tab, store, dir, files) )
thread = GLib.Thread.self()
thread.unref()
async def create_icons(self, tab, store, dir, files):
icons = [self.get_icon(tab, dir, file[0]) for file in files]
data = await asyncio.gather(*icons)
@@ -77,6 +76,7 @@ class GridMixin:
def insert_store(self, store, itr, icon):
store.set_value(itr, 0, icon)
# Note: If the function returns GLib.SOURCE_REMOVE or False it is automatically removed from the list of event sources and will not be called again.
return False

View File

@@ -177,6 +177,10 @@ class WindowMixin(TabMixin):
if from_uri != dest:
event_system.emit("move_files", (uris, dest))
Gtk.drag_finish(drag_context, True, False, time)
return
Gtk.drag_finish(drag_context, False, False, time)
def create_new_tab_notebook(self, widget=None, wid=None, path=None):
self.create_tab(wid, None, path)
self.create_tab(wid, None, path)

View File

@@ -39,13 +39,15 @@ class GridMixin:
store.append([None, file[0]])
Gtk.main_iteration()
GLib.Thread("", self.generate_icons, tab, store, dir, files)
self.generate_icons(tab, store, dir, files)
# GLib.Thread("", self.generate_icons, tab, store, dir, files)
# NOTE: Not likely called often from here but it could be useful
if save_state and not trace_debug:
self.fm_controller.save_state()
@daemon_threaded
def generate_icons(self, tab, store, dir, files):
try:
loop = asyncio.get_running_loop()
@@ -57,9 +59,6 @@ class GridMixin:
else:
asyncio.run( self.create_icons(tab, store, dir, files) )
thread = GLib.Thread.self()
thread.unref()
async def create_icons(self, tab, store, dir, files):
icons = [self.get_icon(tab, dir, file[0]) for file in files]
data = await asyncio.gather(*icons)
@@ -77,6 +76,7 @@ class GridMixin:
def insert_store(self, store, itr, icon):
store.set_value(itr, 0, icon)
# Note: If the function returns GLib.SOURCE_REMOVE or False it is automatically removed from the list of event sources and will not be called again.
return False

View File

@@ -173,6 +173,10 @@ class WindowMixin(TabMixin):
if from_uri != dest:
event_system.emit("move_files", (uris, dest))
Gtk.drag_finish(drag_context, True, False, time)
return
Gtk.drag_finish(drag_context, False, False, time)
def create_new_tab_notebook(self, widget=None, wid=None, path=None):
self.create_tab(wid, None, path)
self.create_tab(wid, None, path)

View File

@@ -25,17 +25,17 @@ class Window(Gtk.ApplicationWindow):
def __init__(self, args, unknownargs):
super(Window, self).__init__()
self._controller = None
settings_manager.set_main_window(self)
self._set_window_data()
self._controller = None
self._setup_styling()
self._setup_signals()
self._subscribe_to_events()
self._load_widgets(args, unknownargs)
self._set_window_data()
self._set_size_constraints()
self.show()
@@ -66,6 +66,18 @@ class Window(Gtk.ApplicationWindow):
self.add( self._controller.get_core_widget() )
def _set_size_constraints(self):
_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()
@@ -91,8 +103,19 @@ class Window(Gtk.ApplicationWindow):
def _load_interactive_debug(self):
self.set_interactive_debugging(True)
def _tear_down(self, widget = None, eve = None):
event_system.emit("shutting_down")
size = self.get_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()
Gtk.main_quit()