Attempting threaded thumbnailing update
This commit is contained in:
parent
0c5d179c1c
commit
f14058634c
@ -53,4 +53,4 @@ class Builtins:
|
|||||||
# NOTE: Just reminding myself we can add to builtins two different ways...
|
# NOTE: Just reminding myself we can add to builtins two different ways...
|
||||||
# __builtins__.update({"event_system": Builtins()})
|
# __builtins__.update({"event_system": Builtins()})
|
||||||
builtins.event_system = Builtins()
|
builtins.event_system = Builtins()
|
||||||
builtins.event_sleep_time = 1
|
builtins.event_sleep_time = 0.2
|
||||||
|
@ -152,6 +152,7 @@ class View(Settings, Launcher, Icon, Path):
|
|||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
def get_gtk_icon_str_combo(self):
|
def get_gtk_icon_str_combo(self):
|
||||||
data = []
|
data = []
|
||||||
dir = self.get_current_directory()
|
dir = self.get_current_directory()
|
||||||
|
@ -8,7 +8,6 @@ from gi.repository import Gtk as gtk
|
|||||||
|
|
||||||
# Application imports
|
# Application imports
|
||||||
from .mixins import *
|
from .mixins import *
|
||||||
# from pyfm.shellfm.windows import WindowController
|
|
||||||
from shellfm import WindowController
|
from shellfm import WindowController
|
||||||
|
|
||||||
|
|
||||||
@ -35,12 +34,6 @@ class Signals(WindowMixin, PaneMixin):
|
|||||||
self.window4 = self.builder.get_object("window4")
|
self.window4 = self.builder.get_object("window4")
|
||||||
self.notebooks = [self.window1, self.window2, self.window3, self.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.single_click_open = False
|
||||||
self.is_pane1_hidden = False
|
self.is_pane1_hidden = False
|
||||||
self.is_pane2_hidden = False
|
self.is_pane2_hidden = False
|
||||||
@ -60,7 +53,7 @@ class Signals(WindowMixin, PaneMixin):
|
|||||||
time.sleep(event_sleep_time)
|
time.sleep(event_sleep_time)
|
||||||
event = event_system.consume_gui_event()
|
event = event_system.consume_gui_event()
|
||||||
if event:
|
if event:
|
||||||
print(event)
|
type, target, data = event
|
||||||
|
|
||||||
|
|
||||||
def tear_down(self, widget, eve):
|
def tear_down(self, widget, eve):
|
||||||
|
@ -27,10 +27,8 @@ class TabMixin(WidgetMixin):
|
|||||||
|
|
||||||
tab = self.create_tab_widget(view)
|
tab = self.create_tab_widget(view)
|
||||||
scroll, store = self.create_grid_iconview_widget(view, wid)
|
scroll, store = self.create_grid_iconview_widget(view, wid)
|
||||||
index = notebook.append_page(scroll, tab)
|
|
||||||
|
|
||||||
# scroll, store = self.create_grid_treeview_widget(view, wid)
|
# 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())
|
self.window_controller.set_active_data(wid, view.get_tab_id())
|
||||||
path_entry.set_text(view.get_current_directory())
|
path_entry.set_text(view.get_current_directory())
|
||||||
@ -39,6 +37,7 @@ class TabMixin(WidgetMixin):
|
|||||||
|
|
||||||
# FIXME: set_tab_reorderable doesn't seem to work...
|
# FIXME: set_tab_reorderable doesn't seem to work...
|
||||||
# notebook.set_tab_reorderable(tab, True)
|
# notebook.set_tab_reorderable(tab, True)
|
||||||
|
self.load_store(view, store, save_state)
|
||||||
|
|
||||||
def close_tab(self, widget, eve):
|
def close_tab(self, widget, eve):
|
||||||
notebook = widget.get_parent().get_parent()
|
notebook = widget.get_parent().get_parent()
|
||||||
|
@ -1,27 +1,67 @@
|
|||||||
# Python imports
|
# Python imports
|
||||||
|
import threading, subprocess
|
||||||
|
|
||||||
# Lib imports
|
# Lib imports
|
||||||
import gi
|
import gi
|
||||||
|
|
||||||
gi.require_version("Gtk", "3.0")
|
gi.require_version("Gtk", "3.0")
|
||||||
from gi.repository import Gtk
|
from gi.repository import Gtk
|
||||||
|
from gi.repository import GLib
|
||||||
from gi.repository import GdkPixbuf
|
from gi.repository import GdkPixbuf
|
||||||
|
|
||||||
# Application imports
|
# Application imports
|
||||||
|
|
||||||
|
|
||||||
|
def threaded(fn):
|
||||||
|
def wrapper(*args, **kwargs):
|
||||||
|
threading.Thread(target=fn, args=args, kwargs=kwargs).start()
|
||||||
|
return wrapper
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class WidgetMixin:
|
class WidgetMixin:
|
||||||
# This feels ugly but I don't see a better option than itterating over the list.
|
# 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):
|
def load_store(self, view, store, save_state=True):
|
||||||
store.clear()
|
store.clear()
|
||||||
files = view.get_pixbuf_icon_str_combo()
|
files = view.get_files()
|
||||||
|
dir = view.get_current_directory()
|
||||||
for data in files:
|
for file in files:
|
||||||
store.append(data)
|
try:
|
||||||
|
self.create_icon(view, store, dir, file[0])
|
||||||
|
except Exception as e:
|
||||||
|
pass
|
||||||
|
|
||||||
if save_state:
|
if save_state:
|
||||||
self.window_controller.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):
|
def create_tab_widget(self, view):
|
||||||
tab = Gtk.Box()
|
tab = Gtk.Box()
|
||||||
label = Gtk.Label()
|
label = Gtk.Label()
|
||||||
|
Loading…
Reference in New Issue
Block a user