|
Jakub Filak |
81e31ed |
From 796ac63aa1eb75c8558faa6d21721b331297b4a6 Mon Sep 17 00:00:00 2001
|
|
Jakub Filak |
81e31ed |
From: Matej Habrnal <mhabrnal@redhat.com>
|
|
Jakub Filak |
81e31ed |
Date: Wed, 24 Jun 2015 09:33:19 +0200
|
|
Jakub Filak |
81e31ed |
Subject: [PATCH] Fix loading applicaton icons
|
|
Jakub Filak |
81e31ed |
|
|
Jakub Filak |
81e31ed |
Without this patch gnome-abrt raises an exception in the case the
|
|
Jakub Filak |
81e31ed |
application icon should exists but doesn't.
|
|
Jakub Filak |
81e31ed |
|
|
Jakub Filak |
81e31ed |
Related to rhbz#1234732
|
|
Jakub Filak |
81e31ed |
|
|
Jakub Filak |
81e31ed |
v2: jfilak@redhat.com
|
|
Jakub Filak |
81e31ed |
- added a new function load_icon()
|
|
Jakub Filak |
81e31ed |
|
|
Jakub Filak |
81e31ed |
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
|
|
Jakub Filak |
81e31ed |
Signed-off-by: Jakub Filak <jfilak@redhat.com>
|
|
Jakub Filak |
81e31ed |
---
|
|
Jakub Filak |
81e31ed |
src/gnome_abrt/tools.py | 37 +++++++++++++++++++++++++++++++++++++
|
|
Jakub Filak |
81e31ed |
src/gnome_abrt/views.py | 26 +++++++++-----------------
|
|
Jakub Filak |
81e31ed |
2 files changed, 46 insertions(+), 17 deletions(-)
|
|
Jakub Filak |
81e31ed |
|
|
Jakub Filak |
81e31ed |
diff --git a/src/gnome_abrt/tools.py b/src/gnome_abrt/tools.py
|
|
Jakub Filak |
81e31ed |
index 7e440a3..a7361a0 100644
|
|
Jakub Filak |
81e31ed |
--- a/src/gnome_abrt/tools.py
|
|
Jakub Filak |
81e31ed |
+++ b/src/gnome_abrt/tools.py
|
|
Jakub Filak |
81e31ed |
@@ -17,6 +17,12 @@
|
|
Jakub Filak |
81e31ed |
|
|
Jakub Filak |
81e31ed |
import datetime
|
|
Jakub Filak |
81e31ed |
import calendar
|
|
Jakub Filak |
81e31ed |
+import logging
|
|
Jakub Filak |
81e31ed |
+
|
|
Jakub Filak |
81e31ed |
+#pylint: disable=E0611
|
|
Jakub Filak |
81e31ed |
+from gi.repository import GLib
|
|
Jakub Filak |
81e31ed |
+#pylint: disable=E0611
|
|
Jakub Filak |
81e31ed |
+from gi.repository import Gtk
|
|
Jakub Filak |
81e31ed |
|
|
Jakub Filak |
81e31ed |
from gnome_abrt.l10n import _
|
|
Jakub Filak |
81e31ed |
from gnome_abrt.l10n import ngettext
|
|
Jakub Filak |
81e31ed |
@@ -61,3 +67,34 @@ def smart_truncate(content, length=100, suffix='...'):
|
|
Jakub Filak |
81e31ed |
return content
|
|
Jakub Filak |
81e31ed |
else:
|
|
Jakub Filak |
81e31ed |
return content[:length].rsplit(' ', 1)[0] + suffix
|
|
Jakub Filak |
81e31ed |
+
|
|
Jakub Filak |
81e31ed |
+
|
|
Jakub Filak |
81e31ed |
+def load_icon(name=None, gicon=None):
|
|
Jakub Filak |
81e31ed |
+ theme = Gtk.IconTheme.get_default()
|
|
Jakub Filak |
81e31ed |
+
|
|
Jakub Filak |
81e31ed |
+ icon = None
|
|
Jakub Filak |
81e31ed |
+ if not gicon is None and name is None:
|
|
Jakub Filak |
81e31ed |
+ name = gicon.to_string()
|
|
Jakub Filak |
81e31ed |
+ icon = theme.lookup_by_gicon(gicon, 128,
|
|
Jakub Filak |
81e31ed |
+ Gtk.IconLookupFlags.FORCE_SIZE)
|
|
Jakub Filak |
81e31ed |
+ elif not name is None and gicon is None:
|
|
Jakub Filak |
81e31ed |
+ icon = theme.lookup_icon(name, 128,
|
|
Jakub Filak |
81e31ed |
+ Gtk.IconLookupFlags.FORCE_SIZE
|
|
Jakub Filak |
81e31ed |
+ | Gtk.IconLookupFlags.FORCE_SYMBOLIC)
|
|
Jakub Filak |
81e31ed |
+ else:
|
|
Jakub Filak |
81e31ed |
+ logging.error("BUG: invalid arguments in load_icon():" \
|
|
Jakub Filak |
81e31ed |
+ "name={0}, gicon={1}".format(str(name), str(gicon)))
|
|
Jakub Filak |
81e31ed |
+ return None
|
|
Jakub Filak |
81e31ed |
+
|
|
Jakub Filak |
81e31ed |
+ if icon is None:
|
|
Jakub Filak |
81e31ed |
+ logging.warning(_("Failed to find icon '{0}'").format(name))
|
|
Jakub Filak |
81e31ed |
+ return None
|
|
Jakub Filak |
81e31ed |
+
|
|
Jakub Filak |
81e31ed |
+ try:
|
|
Jakub Filak |
81e31ed |
+ return icon.load_icon()
|
|
Jakub Filak |
81e31ed |
+ #pylint: disable=E0712
|
|
Jakub Filak |
81e31ed |
+ except GLib.Error as ex:
|
|
Jakub Filak |
81e31ed |
+ logging.warning(_("Failed to load icon '{0}': {1}")
|
|
Jakub Filak |
81e31ed |
+ .format(name, str(ex)))
|
|
Jakub Filak |
81e31ed |
+
|
|
Jakub Filak |
81e31ed |
+ return None
|
|
Jakub Filak |
81e31ed |
diff --git a/src/gnome_abrt/views.py b/src/gnome_abrt/views.py
|
|
Jakub Filak |
81e31ed |
index 95c9639..a1e684b 100644
|
|
Jakub Filak |
81e31ed |
--- a/src/gnome_abrt/views.py
|
|
Jakub Filak |
81e31ed |
+++ b/src/gnome_abrt/views.py
|
|
Jakub Filak |
81e31ed |
@@ -40,7 +40,7 @@ import gnome_abrt.wrappers as wrappers
|
|
Jakub Filak |
81e31ed |
import gnome_abrt.errors as errors
|
|
Jakub Filak |
81e31ed |
import gnome_abrt.desktop as desktop
|
|
Jakub Filak |
81e31ed |
from gnome_abrt import GNOME_ABRT_UI_DIR
|
|
Jakub Filak |
81e31ed |
-from gnome_abrt.tools import fancydate, smart_truncate
|
|
Jakub Filak |
81e31ed |
+from gnome_abrt.tools import fancydate, smart_truncate, load_icon
|
|
Jakub Filak |
81e31ed |
from gnome_abrt.l10n import _, GETTEXT_PROGNAME
|
|
Jakub Filak |
81e31ed |
|
|
Jakub Filak |
81e31ed |
|
|
Jakub Filak |
81e31ed |
@@ -833,23 +833,15 @@ class OopsWindow(Gtk.ApplicationWindow):
|
|
Jakub Filak |
81e31ed |
self._builder.lbl_detected_value.set_tooltip_text(
|
|
Jakub Filak |
81e31ed |
problem['date'].strftime(config.get_configuration()['D_T_FMT']))
|
|
Jakub Filak |
81e31ed |
|
|
Jakub Filak |
81e31ed |
+ icon_buf = None
|
|
Jakub Filak |
81e31ed |
if app.icon:
|
|
Jakub Filak |
81e31ed |
- self._builder.img_app_icon.set_from_pixbuf(
|
|
Jakub Filak |
81e31ed |
- Gtk.IconTheme
|
|
Jakub Filak |
81e31ed |
- .get_default()
|
|
Jakub Filak |
81e31ed |
- .lookup_by_gicon(app.icon,
|
|
Jakub Filak |
81e31ed |
- 128,
|
|
Jakub Filak |
81e31ed |
- Gtk.IconLookupFlags.FORCE_SIZE)
|
|
Jakub Filak |
81e31ed |
- .load_icon())
|
|
Jakub Filak |
81e31ed |
- else:
|
|
Jakub Filak |
81e31ed |
- self._builder.img_app_icon.set_from_pixbuf(
|
|
Jakub Filak |
81e31ed |
- Gtk.IconTheme
|
|
Jakub Filak |
81e31ed |
- .get_default()
|
|
Jakub Filak |
81e31ed |
- .lookup_icon("system-run-symbolic",
|
|
Jakub Filak |
81e31ed |
- 128,
|
|
Jakub Filak |
81e31ed |
- Gtk.IconLookupFlags.FORCE_SIZE |
|
|
Jakub Filak |
81e31ed |
- Gtk.IconLookupFlags.FORCE_SYMBOLIC)
|
|
Jakub Filak |
81e31ed |
- .load_icon())
|
|
Jakub Filak |
81e31ed |
+ icon_buf = load_icon(gicon=app.icon)
|
|
Jakub Filak |
81e31ed |
+
|
|
Jakub Filak |
81e31ed |
+ if icon_buf is None:
|
|
Jakub Filak |
81e31ed |
+ icon_buf = load_icon(name="system-run-symbolic")
|
|
Jakub Filak |
81e31ed |
+
|
|
Jakub Filak |
81e31ed |
+ # icon_buf can be None and if it is None, no icon will be displayed
|
|
Jakub Filak |
81e31ed |
+ self._builder.img_app_icon.set_from_pixbuf(icon_buf)
|
|
Jakub Filak |
81e31ed |
|
|
Jakub Filak |
81e31ed |
self._builder.lbl_reported_value.show()
|
|
Jakub Filak |
81e31ed |
self._builder.lbl_reported.set_text(_("Reported"))
|
|
Jakub Filak |
81e31ed |
--
|
|
Jakub Filak |
81e31ed |
2.4.5
|
|
Jakub Filak |
81e31ed |
|