pygtk r2997 - in trunk: . gtk tests
- From: paulp svn gnome org
- To: svn-commits-list gnome org
- Subject: pygtk r2997 - in trunk: . gtk tests
- Date: Sun, 22 Jun 2008 20:17:18 +0000 (UTC)
Author: paulp
Date: Sun Jun 22 20:17:18 2008
New Revision: 2997
URL: http://svn.gnome.org/viewvc/pygtk?rev=2997&view=rev
Log:
2008-06-22 Paul Pogonyshev <pogonyshev gmx net>
* gtk/gtk.override (_wrap_gtk_action_set_menu_item_type)
(_wrap_gtk_action_set_tool_item_type): Check that argument is a
subclass of gtk.MenuItem or gtk.ToolItem correspondingly (bug
#533644).
* tests/test_actiongroup.py (ActionTest.testSetItemClasses): New
test for the added type check.
Modified:
trunk/ChangeLog
trunk/gtk/gtk.override
trunk/tests/test_actiongroup.py
Modified: trunk/gtk/gtk.override
==============================================================================
--- trunk/gtk/gtk.override (original)
+++ trunk/gtk/gtk.override Sun Jun 22 20:17:18 2008
@@ -8283,15 +8283,23 @@
&py_menu_item_type))
return NULL;
- if ((gtype = pyg_type_from_object(cls)) == 0)
- return NULL;
- if ((menu_item_type = pyg_type_from_object(py_menu_item_type)) == 0)
- return NULL;
- klass = (GtkActionClass *) g_type_class_ref(gtype);
- klass->menu_item_type = menu_item_type;
- g_type_class_unref(klass);
- Py_INCREF(Py_None);
- return Py_None;
+ if ((gtype = pyg_type_from_object(cls)) == 0)
+ return NULL;
+
+ if (!PyType_Check(py_menu_item_type)
+ || !PyType_IsSubtype((PyTypeObject *) py_menu_item_type, &PyGtkMenuItem_Type)) {
+ PyErr_SetString(PyExc_TypeError, "argument must be a subtype of gtk.MenuItem");
+ return NULL;
+ }
+
+ if ((menu_item_type = pyg_type_from_object(py_menu_item_type)) == 0)
+ return NULL;
+
+ klass = (GtkActionClass *) g_type_class_ref(gtype);
+ klass->menu_item_type = menu_item_type;
+ g_type_class_unref(klass);
+ Py_INCREF(Py_None);
+ return Py_None;
}
%%
@@ -8311,15 +8319,23 @@
&py_tool_item_type))
return NULL;
- if ((gtype = pyg_type_from_object(cls)) == 0)
- return NULL;
- if ((tool_item_type = pyg_type_from_object(py_tool_item_type)) == 0)
- return NULL;
- klass = (GtkActionClass *) g_type_class_ref(gtype);
- klass->toolbar_item_type = tool_item_type;
- g_type_class_unref(klass);
- Py_INCREF(Py_None);
- return Py_None;
+ if ((gtype = pyg_type_from_object(cls)) == 0)
+ return NULL;
+
+ if (!PyType_Check(py_tool_item_type)
+ || !PyType_IsSubtype((PyTypeObject *) py_tool_item_type, &PyGtkToolItem_Type)) {
+ PyErr_SetString(PyExc_TypeError, "argument must be a subtype of gtk.ToolItem");
+ return NULL;
+ }
+
+ if ((tool_item_type = pyg_type_from_object(py_tool_item_type)) == 0)
+ return NULL;
+
+ klass = (GtkActionClass *) g_type_class_ref(gtype);
+ klass->toolbar_item_type = tool_item_type;
+ g_type_class_unref(klass);
+ Py_INCREF(Py_None);
+ return Py_None;
}
%%
override gtk_accel_map_foreach kwargs
Modified: trunk/tests/test_actiongroup.py
==============================================================================
--- trunk/tests/test_actiongroup.py (original)
+++ trunk/tests/test_actiongroup.py Sun Jun 22 20:17:18 2008
@@ -145,6 +145,28 @@
myaction = MyAction()
myaction.activate()
self.assertEqual(myaction._activated, True)
+
+ def testSetItemClasses(self):
+
+ class MyAction(gtk.Action):
+ def __init__(self):
+ gtk.Action.__init__(self, 'name', 'label', None, None)
+
+ def set_menu_item_type(type):
+ MyAction.set_menu_item_type(type)
+
+ def set_tool_item_type(type):
+ MyAction.set_tool_item_type(type)
+
+ self.assertRaises(TypeError, lambda: set_menu_item_type(None))
+ self.assertRaises(TypeError, lambda: set_menu_item_type(gtk.Button))
+ set_menu_item_type(gtk.ImageMenuItem)
+ self.assert_(isinstance(MyAction().create_menu_item(), gtk.ImageMenuItem))
+
+ self.assertRaises(TypeError, lambda: set_tool_item_type(None))
+ self.assertRaises(TypeError, lambda: set_tool_item_type(gtk.Button))
+ set_tool_item_type(gtk.SeparatorToolItem)
+ self.assert_(isinstance(MyAction().create_tool_item(), gtk.SeparatorToolItem))
if __name__ == '__main__':
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]