From: Benny M. <ben...@gm...> - 2012-07-25 08:19:10
|
2012/7/25 Jérôme <rom...@ya...> > > File "gramps/src/gui/editors/**editperson.py", line 720, in >>> _check_for_unknown_gender >>> d = GenderDialog(self.window) >>> File "gramps/src/gui/editors/**editperson.py", line 1059, in __init__ >>> GObject.GObject.__init__(self, >>> >>> NameError: global name 'GObject' is not defined >>> >> > NameError: global name 'GObject' is not defined >> >> Add at import section of the file: >> >> from gi.repository import GObject >> > > I tried this, but the new error was more difficult to fix while I do not > understand the relation between '/usr/local/lib/python2.7/**site-packages/gi/types.py' > and GObject. > > 27844: ERROR: gramps.py: line 104: Unhandled exception > Traceback (most recent call last): > File "share/gramps/gui/editors/**editperson.py", line 828, in save > self._check_for_unknown_**gender() > File "share/gramps/gui/editors/**editperson.py", line 721, in > _check_for_unknown_gender > d = GenderDialog(self.window) > File "share/gramps/gui/editors/**editperson.py", line 1063, in __init__ > type=Gtk.MessageType.QUESTION, > TypeError: GObject.__init__() takes exactly 0 arguments (1 given) > The error is in editperson.py line 1063. As it says: takes exactly 0 arguments (1 given) So, passing the parent argument is wrong. You should look at the documentation of the class: Gtk.MessageDialog, so http://developer.gnome.org/gtk3/stable/GtkMessageDialog.html The init of us, is the C new method: http://developer.gnome.org/gtk3/stable/GtkMessageDialog.html#gtk-message-dialog-new So from this, one could deduce that parent will be a named argument, and needs to be passed as parent=parent It is interesting to check if there are no specific overrides, as this could override how the arguments must be passed. This is needed here, as the new method above ends with ... and in python that is not defined. So go to the overrides: http://git.gnome.org/browse/pygobject/tree/gi/overrides/Gtk.py and search for MessageDialog. You find: class MessageDialog(Gtk.MessageDialog, Dialog): def __init__(self, parent=None, flags=0, message_type=Gtk.MessageType.INFO, buttons=Gtk.ButtonsType.NONE, message_format=None, **kwds): So indeed, parent is named argument. Conclusion: class GenderDialog(Gtk.**MessageDialog): > def __init__(self, parent=None): > GObject.GObject.__init__(self, > parent, > flags=Gtk.DialogFlags.MODAL, > type=Gtk.MessageType.QUESTION, > ) > should be instead: GObject.GObject.__init__(self, parent=parent, flags=Gtk.DialogFlags.MODAL, type=Gtk.MessageType.QUESTION, ) > > It looks like that 'type' argument does not exist anymore, I saw sample > with This is wrong. In the trace python prints one line, while line 1063 are 5 lines of code, the error can be in all 5, not only in the one line printed. > Note, I always get the warning on gramps' session: > GRAMPS GTK3: a g_value_get_object warning: > /usr/local/lib/python2.7/site-**packages/gi/types.py:47: Warning: > g_value_get_object: assertion > `G_VALUE_HOLDS_OBJECT (value)' failed > return info.invoke(*args, **kwargs) > Yes, this is warning where I know where it happens, so i added a print: GRAMPS GTK3: a g_value_get_object warning: You can grep the code and find that line. I don't know how to avoid the warning message, all looks ok to me. Other lines of output appear, and are related to the interface theme you choose. Eg, if I choose Rayleigh in KDE, I have ugly Gramps with little warnings printed, if I choose Qt-GTK, I have many warnings. As you are on Gnome, perhaps change some themes and let us know which one gives little warnings. Benny |