summaryrefslogtreecommitdiff
path: root/gtk/gtk.override
diff options
context:
space:
mode:
authorGian Mario Tagliaretti <gianmt@src.gnome.org>2008-06-10 21:11:21 +0000
committerGian Mario Tagliaretti <gianmt@src.gnome.org>2008-06-10 21:11:21 +0000
commit5f66637a28ed63ba30020c2f1c4322d2981338ca (patch)
treec88a610024ae52bd452379ad4b95b32b0c7b1db5 /gtk/gtk.override
parentffd814ecfe8bbaeb4b8cec0875313010905d6fdc (diff)
downloadpygtk-5f66637a28ed63ba30020c2f1c4322d2981338ca.tar.gz
wrap gtk.show_about_dialog() fixes #167603 patch from Christopher Aillon
svn path=/trunk/; revision=2993
Diffstat (limited to 'gtk/gtk.override')
-rw-r--r--gtk/gtk.override77
1 files changed, 77 insertions, 0 deletions
diff --git a/gtk/gtk.override b/gtk/gtk.override
index ca255823..beb3b807 100644
--- a/gtk/gtk.override
+++ b/gtk/gtk.override
@@ -5770,6 +5770,83 @@ _wrap_gtk_about_dialog_get_artists(PyGObject *self)
return ret;
}
%%
+override gtk_show_about_dialog kwargs
+static PyObject *
+_wrap_gtk_show_about_dialog(PyGObject *self, PyObject *args, PyObject *kwargs)
+{
+ GtkWindow *parent;
+ PyGObject *py_window = NULL;
+ GtkWidget *dialog;
+ GObjectClass *klass;
+
+ if (!PyArg_ParseTuple (args, "O:Gtk.show_about_dialog", &py_window))
+ return NULL;
+
+ if (py_window == NULL || (PyObject*)py_window == Py_None)
+ parent = NULL;
+ else
+ parent = GTK_WINDOW (py_window->obj);
+
+ dialog = gtk_about_dialog_new ();
+
+ g_signal_connect (dialog, "response",
+ G_CALLBACK (gtk_widget_destroy), NULL);
+
+ if (kwargs) {
+ Py_ssize_t pos = 0;
+ PyObject *py_prop_name;
+ PyObject *py_prop_value;
+
+ while (PyDict_Next (kwargs, &pos, &py_prop_name, &py_prop_value)) {
+ GParamSpec *pspec;
+ const gchar *property_name;
+ GValue property_gvalue = { 0, };
+
+ property_name = PyString_AsString (py_prop_name);
+
+ klass = G_OBJECT_CLASS (GTK_ABOUT_DIALOG_GET_CLASS(dialog));
+
+ pspec = g_object_class_find_property (klass, property_name);
+ if (!pspec) {
+ PyErr_Format(PyExc_TypeError,
+ "Gtk.AboutDialog doesn't support property `%s'",
+ property_name);
+ goto arg_error;
+ }
+
+ g_value_init (&property_gvalue, G_PARAM_SPEC_VALUE_TYPE(pspec));
+ if (pyg_param_gvalue_from_pyobject(&property_gvalue,
+ py_prop_value, pspec) < 0) {
+ PyErr_Format(PyExc_TypeError,
+ "could not convert value for property `%s'",
+ property_name);
+ g_value_unset (&property_gvalue);
+ goto arg_error;
+ }
+
+ g_object_set_property (G_OBJECT (dialog), property_name,
+ &property_gvalue);
+ g_value_unset (&property_gvalue);
+ }
+ }
+
+ if (parent) {
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), parent);
+ gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), TRUE);
+ }
+
+ gtk_window_present (GTK_WINDOW (dialog));
+
+ Py_INCREF(Py_None);
+ return Py_None;
+
+arg_error:
+ if (dialog)
+ gtk_widget_destroy (dialog);
+
+ return NULL;
+}
+%%
override gtk_selection_data_set_uris kwargs
static PyObject *
_wrap_gtk_selection_data_set_uris(PyGBoxed *self, PyObject *args,