refactoring pid logic; addedd window state preservation; slight thread rework
This commit is contained in:
@@ -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("|")
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
@@ -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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user