1 # -*- Mode: Python; py-indent-offset: 4 -*-
2 # vim: tabstop=4 shiftwidth=4 expandtab
8 from gi.repository import Gtk
9 from gi.repository import Pango
10 from gi.repository import Atk
11 from gi.repository import Gdk
12 (Atk, Gtk, Pango) # pyflakes
17 pygtkcompat.enable_gtk(version=Gtk._version)
24 except (ValueError, ImportError):
27 from helper import capture_gi_deprecation_warnings, capture_glib_warnings
30 @unittest.skipUnless(Gtk, 'Gtk not available')
31 class TestMultipleEnable(unittest.TestCase):
38 pygtkcompat.enable_gtk("3.0")
39 pygtkcompat.enable_gtk("3.0")
41 # https://bugzilla.gnome.org/show_bug.cgi?id=759009
44 self.assertEqual(len(w.window.get_origin()), 2)
47 def test_gtk_version_conflict(self):
48 self.assertRaises(ValueError, pygtkcompat.enable_gtk, version='2.0')
51 @unittest.skipUnless(Gtk, 'Gtk not available')
52 class TestATKCompat(unittest.TestCase):
53 def test_object(self):
54 self.assertTrue(hasattr(atk, 'Object'))
57 @unittest.skipUnless(Gtk, 'Gtk not available')
58 class TestPangoCompat(unittest.TestCase):
59 def test_layout(self):
60 self.assertTrue(hasattr(pango, 'Layout'))
63 @unittest.skipUnless(Gtk, 'Gtk not available')
64 class TestPangoCairoCompat(unittest.TestCase):
65 def test_error_underline_path(self):
66 self.assertTrue(hasattr(pangocairo, 'error_underline_path'))
69 @unittest.skipUnless(Gtk, 'Gtk not available')
70 class TestGTKCompat(unittest.TestCase):
71 def test_buttons(self):
72 self.assertEqual(Gdk._2BUTTON_PRESS, 5)
73 self.assertEqual(Gdk.BUTTON_PRESS, 4)
76 self.assertEqual(gtk.WINDOW_TOPLEVEL, Gtk.WindowType.TOPLEVEL)
77 self.assertEqual(gtk.PACK_START, Gtk.PackType.START)
80 self.assertEqual(gtk.EXPAND, Gtk.AttachOptions.EXPAND)
81 self.assertEqual(gtk.gdk.SHIFT_MASK, Gdk.ModifierType.SHIFT_MASK)
83 def test_keysyms(self):
85 self.assertEqual(gtk.keysyms.Escape, Gdk.KEY_Escape)
86 self.assertTrue(gtk.keysyms._0, Gdk.KEY_0)
90 with capture_gi_deprecation_warnings():
91 widget.get_style_context().set_state(gtk.STATE_NORMAL)
92 self.assertTrue(isinstance(widget.style.base[gtk.STATE_NORMAL],
95 def test_alignment(self):
96 # Creation of pygtk.Alignment causes hard warnings, ignore this in testing.
97 with capture_glib_warnings(allow_warnings=True):
100 self.assertEqual(a.props.xalign, 0.0)
101 self.assertEqual(a.props.yalign, 0.0)
102 self.assertEqual(a.props.xscale, 0.0)
103 self.assertEqual(a.props.yscale, 0.0)
109 box.pack_start(child)
110 expand, fill, padding, pack_type = box.query_child_packing(child)
111 self.assertTrue(expand)
112 self.assertTrue(fill)
113 self.assertEqual(padding, 0)
114 self.assertEqual(pack_type, gtk.PACK_START)
118 expand, fill, padding, pack_type = box.query_child_packing(child)
119 self.assertTrue(expand)
120 self.assertTrue(fill)
121 self.assertEqual(padding, 0)
122 self.assertEqual(pack_type, gtk.PACK_END)
124 def test_combobox_entry(self):
125 liststore = gtk.ListStore(int, str)
126 liststore.append((1, 'One'))
127 liststore.append((2, 'Two'))
128 liststore.append((3, 'Three'))
129 # might cause a Pango warning, do not break on this
130 with capture_glib_warnings(allow_warnings=True):
131 combo = gtk.ComboBoxEntry(model=liststore)
132 combo.set_text_column(1)
134 self.assertEqual(combo.get_text_column(), 1)
135 self.assertEqual(combo.get_child().get_text(), 'One')
136 combo = gtk.combo_box_entry_new()
137 combo.set_model(liststore)
138 combo.set_text_column(1)
140 self.assertEqual(combo.get_text_column(), 1)
141 self.assertEqual(combo.get_child().get_text(), 'One')
142 combo = gtk.combo_box_entry_new_with_model(liststore)
143 combo.set_text_column(1)
145 self.assertEqual(combo.get_text_column(), 1)
146 self.assertEqual(combo.get_child().get_text(), 'One')
148 def test_size_request(self):
150 with capture_gi_deprecation_warnings():
151 self.assertEqual(box.size_request(), [0, 0])
153 def test_pixbuf(self):
156 def test_pixbuf_loader(self):
157 # load a 1x1 pixel PNG from memory
158 data = base64.b64decode('iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP4n8Dw'
159 'HwAGIAJf85Z3XgAAAABJRU5ErkJggg==')
160 loader = gtk.gdk.PixbufLoader('png')
164 pixbuf = loader.get_pixbuf()
165 self.assertEqual(pixbuf.get_width(), 1)
166 self.assertEqual(pixbuf.get_height(), 1)
168 def test_pixbuf_formats(self):
169 formats = gtk.gdk.pixbuf_get_formats()
170 self.assertEqual(type(formats[0]), dict)
171 self.assertTrue('name' in formats[0])
172 self.assertTrue('description' in formats[0])
173 self.assertTrue('mime_types' in formats[0])
174 self.assertEqual(type(formats[0]['extensions']), list)
176 def test_gdk_window(self):
179 origin = w.get_window().get_origin()
180 self.assertTrue(isinstance(origin, tuple))
181 self.assertEqual(len(origin), 2)