From c69fca1cd401bb6c9cf360076dc3027979a18cd9 Mon Sep 17 00:00:00 2001 From: Martin Pitt Date: Tue, 13 Nov 2012 12:56:11 +0100 Subject: [PATCH 1/3] Fix Gdk.Atom to have a proper str() and repr() Gdk.Atom is not proper GType'd class, so we cannot override the whole class. Just override its __str__() and __repr__() methods so that printing atoms shows something sensible. For nameless/invalid atoms, fall back to the old output to help with debugging. https://bugzilla.gnome.org/show_bug.cgi?id=678620 --- gi/overrides/Gdk.py | 21 +++++++++++++++++++++ tests/test_atoms.py | 12 ++++++++++++ 2 files changed, 33 insertions(+) diff --git a/gi/overrides/Gdk.py b/gi/overrides/Gdk.py index 20ef910..0571c40 100644 --- a/gi/overrides/Gdk.py +++ b/gi/overrides/Gdk.py @@ -345,6 +345,27 @@ def color_parse(color): return None return color + +# Note, we cannot override the entire class as Gdk.Atom has no gtype, so just +# hack some individual methods +def _gdk_atom_str(atom): + n = atom.name() + if n: + return n + return Gdk.Atom.__str__(n) + + +def _gdk_atom_repr(atom): + n = atom.name() + if n: + return 'Gdk.Atom<%s>' % n + return Gdk.Atom.__str__(n) + + +Gdk.Atom.__str__ = _gdk_atom_str +Gdk.Atom.__repr__ = _gdk_atom_repr + + # constants if Gdk._version >= '3.0': SELECTION_PRIMARY = Gdk.atom_intern('PRIMARY', True) diff --git a/tests/test_atoms.py b/tests/test_atoms.py index a59d15a..449fcda 100644 --- a/tests/test_atoms.py +++ b/tests/test_atoms.py @@ -13,6 +13,18 @@ class TestGdkAtom(unittest.TestCase): atom = Gdk.Atom.intern('my_string', False) self.assertEqual(atom.name(), 'my_string') + def test_str(self): + atom = Gdk.Atom.intern('my_string', False) + self.assertEqual(str(atom), 'my_string') + + self.assertEqual(str(Gdk.SELECTION_CLIPBOARD), 'CLIPBOARD') + + def test_repr(self): + atom = Gdk.Atom.intern('my_string', False) + self.assertEqual(repr(atom), 'Gdk.Atom') + + self.assertEqual(repr(Gdk.SELECTION_CLIPBOARD), 'Gdk.Atom') + def test_in_single(self): a_selection = Gdk.Atom.intern('test_clipboard', False) clipboard = Gtk.Clipboard.get(a_selection) -- 1.7.11.7