diff --git a/plugins/searcher/widgets/grep_preview_widget.py b/plugins/searcher/widgets/grep_preview_widget.py index 79a34d6..09e778a 100644 --- a/plugins/searcher/widgets/grep_preview_widget.py +++ b/plugins/searcher/widgets/grep_preview_widget.py @@ -48,7 +48,7 @@ class GrepPreviewWidget(Gtk.Box): return bytes(f"\n{target}", "utf-8").decode("utf-8") def make_utf8_line_highlight(self, buffer, itr, i, color, target, query): - parts = re.split(r"(" + query + ")(?i)", target.replace("\n", "")) + parts = re.split(r"(?i)(" + query + ")", target.replace("\n", "")) for part in parts: itr = buffer.get_end_iter() @@ -57,4 +57,4 @@ class GrepPreviewWidget(Gtk.Box): else: new_s = f"{part}" _part = bytes(new_s, "utf-8").decode("utf-8") - buffer.insert_markup(itr, _part, len(_part)) + buffer.insert_markup(itr, _part, len(_part)) \ No newline at end of file diff --git a/pyrightconfig.json b/pyrightconfig.json index 4d8b8ec..51882b6 100644 --- a/pyrightconfig.json +++ b/pyrightconfig.json @@ -8,6 +8,6 @@ "root": "./src/versions/solarfm-0.0.1/solarfm" } ], - "venvPath": ".", - "venv": ".venv" + "venvPath": "/home/abaddon/Portable_Apps/py-venvs/pylsp-venv/", + "venv": "venv" } diff --git a/src/solarfm/core/fs_actions/handler_mixin.py b/src/solarfm/core/fs_actions/handler_mixin.py index 73705cd..b2d2352 100644 --- a/src/solarfm/core/fs_actions/handler_mixin.py +++ b/src/solarfm/core/fs_actions/handler_mixin.py @@ -110,26 +110,30 @@ class HandlerMixin: tab.move_file(fPath, tPath) else: io_widget = IOWidget(action, file) + io_list = self._builder.get_object("io_list") + + io_list.add(io_widget) + io_list.show_all() if action == "copy": file.copy_async(destination=target, flags=Gio.FileCopyFlags.BACKUP, - io_priority=98, + io_priority=45, cancellable=io_widget.cancle_eve, progress_callback=io_widget.update_progress, callback=io_widget.finish_callback) - self._builder.get_object("io_list").add(io_widget) if action == "move" or action == "rename": file.move_async(destination=target, flags=Gio.FileCopyFlags.BACKUP, - io_priority=98, + io_priority=45, cancellable=io_widget.cancle_eve, - progress_callback=None, # NOTE: progress_callback here causes seg fault when set + progress_callback=None, callback=io_widget.finish_callback) - self._builder.get_object("io_list").add(io_widget) + io_widget = None + io_list = None except GObject.GError as e: raise OSError(e) @@ -162,4 +166,4 @@ class HandlerMixin: target = Gio.File.new_for_path(f"{base_path}/{file_name}-copy{i}{extension}") i += 1 - return target + return target \ No newline at end of file diff --git a/src/solarfm/core/mixins/ui/grid_mixin.py b/src/solarfm/core/mixins/ui/grid_mixin.py index 1cdcb4f..2b3cf94 100644 --- a/src/solarfm/core/mixins/ui/grid_mixin.py +++ b/src/solarfm/core/mixins/ui/grid_mixin.py @@ -56,8 +56,9 @@ class GridMixin: def update_store(self, i, store, icon): itr = store.get_iter(i) - GLib.idle_add(self.insert_store, store, itr, icon) + GLib.idle_add(self.insert_store, store, itr, icon.copy()) itr = None + del icon @daemon_threaded def make_and_load_icon(self, i, store, tab, dir, file): diff --git a/src/solarfm/core/mixins/ui/tab_mixin.py b/src/solarfm/core/mixins/ui/tab_mixin.py index 79a2617..70e53fe 100644 --- a/src/solarfm/core/mixins/ui/tab_mixin.py +++ b/src/solarfm/core/mixins/ui/tab_mixin.py @@ -264,15 +264,16 @@ class TabMixin(GridMixin): path_menu_buttons.add(button) show_path_menu = True - path_menu_buttons = None - query = None - files = None + query = None + files = None if not show_path_menu: + path_menu_buttons = None event_system.emit("hide_path_menu") else: event_system.emit("show_path_menu") buttons = path_menu_buttons.get_children() + path_menu_buttons = None if len(buttons) == 1: self.slowed_focus(buttons[0]) @@ -311,4 +312,4 @@ class TabMixin(GridMixin): self.builder.get_object("refresh_tab").released() wid, tid = None, None - tab = None + tab = None \ No newline at end of file diff --git a/src/solarfm/core/mixins/ui/window_mixin.py b/src/solarfm/core/mixins/ui/window_mixin.py index 5d6aea7..618b9bc 100644 --- a/src/solarfm/core/mixins/ui/window_mixin.py +++ b/src/solarfm/core/mixins/ui/window_mixin.py @@ -130,6 +130,10 @@ class WindowMixin(TabMixin): self.update_tab(tab_label, state.tab, state.icon_grid.get_store(), state.wid, state.tid) else: event_system.emit("open_files") + + state = None + notebook = None + tab_label = None except WindowException as e: traceback.print_exc() self.display_message(settings.theming.error_color, f"{repr(e)}") @@ -197,4 +201,4 @@ class WindowMixin(TabMixin): 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) \ No newline at end of file diff --git a/src/solarfm/core/widgets/io_widget.py b/src/solarfm/core/widgets/io_widget.py index c0bcce1..ab8bf41 100644 --- a/src/solarfm/core/widgets/io_widget.py +++ b/src/solarfm/core/widgets/io_widget.py @@ -65,19 +65,20 @@ class IOWidget(Gtk.Box): logger.info(f"Canceling: [{self._action}] of {self._basename} ...") eve.cancel() - def update_progress(self, current, total, eve=None): + def update_progress(self, current, total, eve = None): self.progress.set_fraction(current/total) - def finish_callback(self, file, task=None, eve=None): + def finish_callback(self, file, task = None, eve = None): + if task.had_error(): + logger.info(f"{self._action} of {self._basename} cancelled/failed...") + return + if self._action == "move" or self._action == "rename": status = self._file.move_finish(task) if self._action == "copy": status = self._file.copy_finish(task) - if status: - self.delete_self() - else: - logger.info(f"{self._action} of {self._basename} failed...") + self.delete_self() - def delete_self(self, widget=None, eve=None): - self.get_parent().remove(self) + def delete_self(self, widget = None, eve = None): + self.get_parent().remove(self) \ No newline at end of file diff --git a/src/solarfm/core/widgets/popups/path_menu_popup_widget.py b/src/solarfm/core/widgets/popups/path_menu_popup_widget.py index e3359bf..3f2c507 100644 --- a/src/solarfm/core/widgets/popups/path_menu_popup_widget.py +++ b/src/solarfm/core/widgets/popups/path_menu_popup_widget.py @@ -29,16 +29,16 @@ class PathMenuPopupWidget(Gtk.Popover): self.set_relative_to(path_entry) self.set_modal(False) self.set_position(Gtk.PositionType.BOTTOM) - self.set_size_request(240, 420) + self.set_size_request(480, 420) def _setup_signals(self): event_system.subscribe("show_path_menu", self.show_path_menu) event_system.subscribe("hide_path_menu", self.hide_path_menu) def _load_widgets(self): - path_menu_buttons = Gtk.ButtonBox() - scroll_window = Gtk.ScrolledWindow() - view_port = Gtk.Viewport() + scroll_window = Gtk.ScrolledWindow() + view_port = Gtk.Viewport() + path_menu_buttons = Gtk.Box() scroll_window.set_vexpand(True) scroll_window.set_hexpand(True) @@ -47,12 +47,13 @@ class PathMenuPopupWidget(Gtk.Popover): self.builder.expose_object(f"path_menu_buttons", path_menu_buttons) view_port.add(path_menu_buttons) scroll_window.add(view_port) - scroll_window.show_all() self.add(scroll_window) + scroll_window.show_all() - def show_path_menu(self, widget=None, eve=None): + + def show_path_menu(self, widget = None, eve = None): self.popup() - def hide_path_menu(self, widget=None, eve=None): - self.popdown() + def hide_path_menu(self, widget = None, eve = None): + self.popdown() \ No newline at end of file diff --git a/src/solarfm/shellfm/windows/tabs/utils/launcher.py b/src/solarfm/shellfm/windows/tabs/utils/launcher.py index 6e07b4b..1b9d772 100644 --- a/src/solarfm/shellfm/windows/tabs/utils/launcher.py +++ b/src/solarfm/shellfm/windows/tabs/utils/launcher.py @@ -113,4 +113,4 @@ class Launcher: if not os.path.islink(fp): # Skip if it is symbolic link total_size += os.path.getsize(fp) - return total_size + return total_size \ No newline at end of file diff --git a/user_config/bin/solarfm b/user_config/bin/solarfm index 60cf37e..9921548 100755 --- a/user_config/bin/solarfm +++ b/user_config/bin/solarfm @@ -23,6 +23,7 @@ function main() { export G_SLICE=always-malloc export G_DEBUG=gc-friendly export GOBJECT_DEBUG=instance-count - python /opt/solarfm.zip "${files[@]}" + export GSK_RENDERER=cairo + python /opt/solarfm.zip "$@" } main "$@"; diff --git a/user_config/usr/bin/solarfm b/user_config/usr/bin/solarfm deleted file mode 100755 index 8cca2db..0000000 --- a/user_config/usr/bin/solarfm +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -# . CONFIG.sh - -# set -o xtrace ## To debug scripts -# set -o errexit ## To exit on error -# set -o errunset ## To exit if a variable is referenced but not set - - -function main() { - call_path=`pwd` - cd "${call_path}" - echo "Working Dir: " $(pwd) - - python /opt/solarfm.zip "$@" -} -main "$@";