From 10664102e86bdb8460fdafb3311f509e4dbb49ec Mon Sep 17 00:00:00 2001 From: Mark Qvist Date: Sun, 6 Sep 2026 18:23:22 +0200 Subject: [PATCH] Added reload images action --- nomadnet/ui/textui/Browser.py | 20 +++++++++++++++----- nomadnet/ui/textui/Network.py | 4 ++-- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/nomadnet/ui/textui/Browser.py b/nomadnet/ui/textui/Browser.py index b41fc65..b15eef7 100644 --- a/nomadnet/ui/textui/Browser.py +++ b/nomadnet/ui/textui/Browser.py @@ -38,6 +38,8 @@ class BrowserFrame(urwid.Frame): self.delegate.url_dialog() elif key == "ctrl l": self.delegate.load_images() + elif key == "ctrl x": + self.delegate.load_images(force_reload=True) elif key == "ctrl s": self.delegate.save_node_dialog() elif key == "ctrl b": @@ -694,19 +696,26 @@ class Browser: return False - def load_images(self): + def load_images(self, force_reload=False): if not self.image_rendering_supported: return elif self.image_mode == IMGLOAD_NEVER: return - else: self.detect_images() + else: self.detect_images(force_reload=force_reload) - def detect_images(self): + def detect_images(self, force_reload=False): if not self.image_rendering_supported: return for w in self.attr_maps: o = w._original_widget if hasattr(o, "_contained_image"): o = o._contained_image if hasattr(o, "image_url"): resolved_image = self.resolve_image(o.image_url) - if resolved_image and self.image_rendering_supported: o.load(resolved_image, remote_source=True) + if resolved_image and force_reload: + RNS.log(f"Clearing image cache for {o.image_url} ({resolved_image})", RNS.LOG_DEBUG) + try: os.unlink(resolved_image) + except Exception as e: RNS.log(f"Could not clear image cache for {o.image_url}: {e}", RNS.LOG_ERROR) + resolved_image = None + + if force_reload: continue + elif resolved_image and self.image_rendering_supported: o.load(resolved_image, remote_source=True) else: image = { "widget": o, "id": o.image_id, "url": o.image_url, "refresh": None, "updated": None, "update_requested": None, "request_id": None, "link": None, "failed": False, "pr_throttle": 0, @@ -714,7 +723,8 @@ class Browser: self.page_images[o.image_id] = image - if len(self.page_images) > 0: self.start_image_updater() + if force_reload: self.reload() + elif len(self.page_images) > 0: self.start_image_updater() def start_image_updater(self): if not self.image_rendering_supported: return diff --git a/nomadnet/ui/textui/Network.py b/nomadnet/ui/textui/Network.py index 24c315c..11c4e54 100644 --- a/nomadnet/ui/textui/Network.py +++ b/nomadnet/ui/textui/Network.py @@ -29,8 +29,8 @@ class BrowserShortcuts(): shortcut_text = "[C-w] Disconnect [C-d] Back [C-f] Forward [C-r] Reload [C-u] URL " if app.config["textui"]["clipboard_copy"]: shortcut_text += "[C-y] Copy " - shortcut_text += "[C-g] Fullscreen [C-s / C-b] Save Node" - if browser.image_rendering_supported: shortcut_text += " [C-l] Load Images" + shortcut_text += "[C-g] Fullscreen [C-s/b] Save Node" + if browser.image_rendering_supported: shortcut_text += " [C-l] Load Images [C-x] Reload Images" self.widget = urwid.AttrMap(urwid.Text(shortcut_text), "shortcutbar") class DialogLineBox(urwid.LineBox):