Subject: pyhoca-gui gtk3 support

From: Orion Poplawski <[email-masked]>
Date: Mon, 26 Jan 2015 14:39:09 -0700

Package: pyhoca-gui
Version: 0.5.0.3

Fedora rawhide is in the process of moving to wxPython 3.0 with gtk3 support.
 This appears to be breaking pyhoca-gui:

/usr/lib64/python2.7/site-packages/gtk-2.0/gtk/__init__.py:40: Warning:
g_boxed_type_register_static: assertion 'g_type_from_name (name) == 0' failed
  from gtk import _gtk
/usr/lib64/python2.7/site-packages/gtk-2.0/gtk/__init__.py:40: Warning:
g_type_set_qdata: assertion 'node != NULL' failed
  from gtk import _gtk
/usr/lib64/python2.7/site-packages/gtk-2.0/gtk/__init__.py:40: Warning: cannot
register existing type 'GtkWidget'
  from gtk import _gtk
/usr/lib64/python2.7/site-packages/gtk-2.0/gtk/__init__.py:40: Warning:
g_type_add_interface_static: assertion 'G_TYPE_IS_INSTANTIATABLE
(instance_type)' failed
  from gtk import _gtk
/usr/lib64/python2.7/site-packages/gtk-2.0/gtk/__init__.py:40: Warning: cannot
register existing type 'GtkBuildable'
  from gtk import _gtk
/usr/lib64/python2.7/site-packages/gtk-2.0/gtk/__init__.py:40: Warning:
g_type_interface_add_prerequisite: assertion 'G_TYPE_IS_INTERFACE
(interface_type)' failed
  from gtk import _gtk
/usr/lib64/python2.7/site-packages/gtk-2.0/gtk/__init__.py:40: Warning:
g_once_init_leave: assertion 'result != 0' failed
  from gtk import _gtk
/usr/lib64/python2.7/site-packages/gtk-2.0/gtk/__init__.py:40: Warning:
g_type_register_static: assertion 'parent_type > 0' failed
  from gtk import _gtk

I believe this is because we are mixing a gtk2 based notify-python module with
the gtk3 wxPython module.  This seems like further impetus to move to a modern
python libnotify interface, either notify2 or gobject introspection Notify.

Code difference for gi appears to be:

diff --git a/pyhoca/wxgui/notify.py b/pyhoca/wxgui/notify.py
index bc49028..85f0d52 100644
--- a/pyhoca/wxgui/notify.py
+++ b/pyhoca/wxgui/notify.py
@@ -22,7 +22,7 @@ import wx
 from x2go import X2GOCLIENT_OS
 from x2go import log
 if X2GOCLIENT_OS in ('Linux', 'Mac'):
-    import pynotify
+    from gi.repository import Notify
 import exceptions
 import basepath

@@ -52,7 +52,7 @@ class libnotify_NotifierPopup(object):
         self._PyHocaGUI = _PyHocaGUI
         self._pyhoca_logger = self._PyHocaGUI._pyhoca_logger

-        if not pynotify.init("PyHocaGUI"):
+        if not Notify.init("PyHocaGUI"):
             raise NotSupportedException

     def prepare(self, context, title=None, text=None, icon=None, timeout=None):
@@ -132,8 +132,8 @@ class libnotify_NotifierPopup(object):

         try:
             if not self._PyHocaGUI.disable_notifications and title and text:
-                n = pynotify.Notification(title, text, icon)
-                n.set_urgency(pynotify.URGENCY_NORMAL)
+                n = Notify.Notification.new(title, text, icon)
+                n.set_urgency(Notify.Urgency.NORMAL)
                 n.set_timeout(timeout)
                 n.show()
         except:

Although with that change, unless I comment out the set_urgency() call, I
don't see the message "SSH key authentication has been successful." pop-up
above the pyhoca-gui icon.  But perhaps the new behavior is proper.

-- 
Orion Poplawski
Technical Manager                     303-415-9701 x222
NWRA, Boulder/CoRA Office             FAX: 303-415-9702
3380 Mitchell Lane                       [email-masked]
Boulder, CO 80301                   http://www.nwra.com

---

From: Orion Poplawski <[email-masked]>
Date: Tue, 26 May 2015 11:22:32 -0600

Now that F22 is out, we've gotten a bug report on this:

https://bugzilla.redhat.com/show_bug.cgi?id=1225142

I'm going to push a package with my change, but I think it's incomplete.