From 1258ef184c81eac200cd6b170af96b2ffc20d4d9 Mon Sep 17 00:00:00 2001 From: Masato TOYOSHIMA Date: Mon, 3 Feb 2025 14:26:45 +0900 Subject: [PATCH] Resolve "gtk stock icons are deprecated since 3.10." IconTheme seems to be a better choice. For icon_size, Gtk.IconSize.BUTTON seems to be a good choice. --- src/manjaro_hello.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/manjaro_hello.py b/src/manjaro_hello.py index 0487021..e43c9e0 100755 --- a/src/manjaro_hello.py +++ b/src/manjaro_hello.py @@ -72,7 +72,7 @@ class EmbedLayouts(Embed): self.box = LayoutBox(window, usehello=True) grid = Gtk.Grid() grid.set_margin_start(15) - image = Gtk.Image(stock=Gtk.STOCK_GO_BACK) + image = get_icon_image("go-previous", Gtk.IconSize.BUTTON) back_btn=Gtk.Button(label=None, image=image) back_btn.set_name("home") back_btn.connect("clicked", self.on_btn_clicked,window) @@ -106,7 +106,7 @@ class EmbedBrowser(Embed): grid.set_margin_end(5) grid.set_margin_top(5) grid.set_margin_bottom(5) - image = Gtk.Image(stock=Gtk.STOCK_GO_BACK) + image = get_icon_image("go-previous", Gtk.IconSize.BUTTON) back_btn=Gtk.Button(label=None, image=image) back_btn.set_name("home") back_btn.connect("clicked", self.on_btn_clicked,window) @@ -192,7 +192,7 @@ class Hello(Gtk.Window): scrolled_window = Gtk.ScrolledWindow() viewport = Gtk.Viewport(border_width=10) label = Gtk.Label(wrap=True) - image = Gtk.Image(stock=Gtk.STOCK_GO_BACK) + image = get_icon_image("go-previous", Gtk.IconSize.BUTTON) back_btn=Gtk.Button(label=None, image=image) back_btn.set_name("home") back_btn.connect("clicked", self.on_btn_clicked) @@ -483,6 +483,16 @@ def get_lsb_infos(): return 'not Manjaro', '0.0' return lsb["CODENAME"], lsb["RELEASE"] +def get_icon_image(icon_name, icon_size): + icon_theme = Gtk.IconTheme.get_default() + + if icon_theme.has_icon(icon_name): + pixbuf = icon_theme.load_icon(icon_name, icon_size, 0) + if pixbuf: + return Gtk.Image.new_from_pixbuf(pixbuf) + else: + return Gtk.Image.new_from_icon_name(icon_name, icon_size) + return None if __name__ == "__main__": logging.basicConfig(level=logging.INFO)