Attempting threaded thumbnailing update

This commit is contained in:
itdominator 2021-11-13 23:19:09 -06:00
parent 0c5d179c1c
commit f14058634c
5 changed files with 49 additions and 16 deletions

View File

@ -53,4 +53,4 @@ class Builtins:
# NOTE: Just reminding myself we can add to builtins two different ways...
# __builtins__.update({"event_system": Builtins()})
builtins.event_system = Builtins()
builtins.event_sleep_time = 1
builtins.event_sleep_time = 0.2

View File

@ -152,6 +152,7 @@ class View(Settings, Launcher, Icon, Path):
return data
def get_gtk_icon_str_combo(self):
data = []
dir = self.get_current_directory()

View File

@ -8,7 +8,6 @@ from gi.repository import Gtk as gtk
# Application imports
from .mixins import *
# from pyfm.shellfm.windows import WindowController
from shellfm import WindowController
@ -35,12 +34,6 @@ class Signals(WindowMixin, PaneMixin):
self.window4 = self.builder.get_object("window4")
self.notebooks = [self.window1, self.window2, self.window3, self.window4]
event_system.push_gui_event(["update", "window_1", []])
event_system.push_gui_event(["update", "window_2", []])
event_system.push_fm_event(["update", "window_fm_1", []])
event_system.push_fm_event(["update", "window_fm_2", []])
self.single_click_open = False
self.is_pane1_hidden = False
self.is_pane2_hidden = False
@ -60,7 +53,7 @@ class Signals(WindowMixin, PaneMixin):
time.sleep(event_sleep_time)
event = event_system.consume_gui_event()
if event:
print(event)
type, target, data = event
def tear_down(self, widget, eve):

View File

@ -27,10 +27,8 @@ class TabMixin(WidgetMixin):
tab = self.create_tab_widget(view)
scroll, store = self.create_grid_iconview_widget(view, wid)
index = notebook.append_page(scroll, tab)
# scroll, store = self.create_grid_treeview_widget(view, wid)
self.load_store(view, store, save_state)
index = notebook.append_page(scroll, tab)
self.window_controller.set_active_data(wid, view.get_tab_id())
path_entry.set_text(view.get_current_directory())
@ -39,6 +37,7 @@ class TabMixin(WidgetMixin):
# FIXME: set_tab_reorderable doesn't seem to work...
# notebook.set_tab_reorderable(tab, True)
self.load_store(view, store, save_state)
def close_tab(self, widget, eve):
notebook = widget.get_parent().get_parent()

View File

@ -1,27 +1,67 @@
# Python imports
import threading, subprocess
# Lib imports
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
from gi.repository import GLib
from gi.repository import GdkPixbuf
# Application imports
def threaded(fn):
def wrapper(*args, **kwargs):
threading.Thread(target=fn, args=args, kwargs=kwargs).start()
return wrapper
class WidgetMixin:
# This feels ugly but I don't see a better option than itterating over the list.
# @threaded
# def load_store(self, view, store, save_state=True):
# store.clear()
# files = view.get_pixbuf_icon_str_combo()
#
# for data in files:
# store.append(data)
#
# if save_state:
# self.window_controller.save_state()
def load_store(self, view, store, save_state=True):
store.clear()
files = view.get_pixbuf_icon_str_combo()
for data in files:
store.append(data)
files = view.get_files()
dir = view.get_current_directory()
for file in files:
try:
self.create_icon(view, store, dir, file[0])
except Exception as e:
pass
if save_state:
self.window_controller.save_state()
@threaded
def create_icon(self, view, store, dir, file):
icon = view.create_icon(dir, file).get_pixbuf()
data = [icon, file]
GLib.idle_add(self.update_store, (store, data,))
def update_store(self, item):
store, data = item
store.append(data)
def create_tab_widget(self, view):
tab = Gtk.Box()
label = Gtk.Label()