diff options
-rw-r--r-- | docs/reference/pygtk-gtkstatusbar.xml | 35 | ||||
-rw-r--r-- | gtk/Makefile.am | 1 | ||||
-rw-r--r-- | gtk/gtk-base.defs | 13 | ||||
-rw-r--r-- | gtk/gtk.override | 1 | ||||
-rw-r--r-- | gtk/gtkstatusbar.override | 65 |
5 files changed, 110 insertions, 5 deletions
diff --git a/docs/reference/pygtk-gtkstatusbar.xml b/docs/reference/pygtk-gtkstatusbar.xml index fc82f685..d1e63e06 100644 --- a/docs/reference/pygtk-gtkstatusbar.xml +++ b/docs/reference/pygtk-gtkstatusbar.xml @@ -46,6 +46,14 @@ linkend="method-gtkstatusbar--pop">pop</link></methodname> </methodsynopsis> <methodsynopsis language="python"> <methodname><link +linkend="method-gtkstatusbar--remove-message">remove_message</link></methodname> + <methodparam><parameter + role="keyword">context_id</parameter></methodparam> + <methodparam><parameter + role="keyword">message_id</parameter></methodparam> + </methodsynopsis> + <methodsynopsis language="python"> + <methodname><link linkend="method-gtkstatusbar--remove">remove</link></methodname> <methodparam><parameter role="keyword">context_id</parameter></methodparam> @@ -310,7 +318,7 @@ identifier</simpara></listitem> specified by <parameter>text</parameter> with the specified <parameter>context_id</parameter> onto a statusbar's stack and returns a message id that that can be used with the <link -linkend="method-gtkstatusbar--remove"><methodname>remove</methodname>()</link> +linkend="method-gtkstatusbar--remove-message"><methodname>remove_message</methodname>()</link> method.</para> </refsect2> @@ -337,11 +345,11 @@ statusbar's stack.</para> </refsect2> - <refsect2 id="method-gtkstatusbar--remove"> - <title>gtk.Statusbar.remove</title> + <refsect2 id="method-gtkstatusbar--remove-message"> + <title>gtk.Statusbar.remove_message</title> <programlisting><methodsynopsis language="python"> - <methodname>remove</methodname> + <methodname>remove_message</methodname> <methodparam><parameter role="keyword">context_id</parameter></methodparam> <methodparam><parameter @@ -360,12 +368,29 @@ role="keyword">message_id</parameter> :</term> </varlistentry> </variablelist> - <para>The <methodname>remove</methodname>() method removes the message + <para>The <methodname>remove_message</methodname>() method removes the message with the specified <parameter>message_id</parameter> and <parameter>context_id</parameter> from the statusbar's message stack.</para> </refsect2> + <refsect2 id="method-gtkstatusbar--remove"> + <title>gtk.Statusbar.remove</title> + + <warning> + <para>This method is deprecated in PyGTK 2.18 and above</para> + </warning> + + <para>This method calls either + <link linkend="method-gtkcontainer--remove">gtk.Container.remove</link> + or <link linkend="method-gtkstatusbar--remove-message">gtk.Statusbar.remove_message</link> + depending on parameters. The second option is for compatibility only and will be + eventually removed. New code should use <literal>remove</literal> only to remove + widgets (as in <literal>gtk.Container</literal> method). To remove messages, use + <link linkend="method-gtkstatusbar--remove-message">gtk.Statusbar.remove_message</link> + directly.</para> + </refsect2> + <refsect2 id="method-gtkstatusbar--set-has-resize-grip"> <title>gtk.Statusbar.set_has_resize_grip</title> diff --git a/gtk/Makefile.am b/gtk/Makefile.am index 690a6aa2..5b30fa7a 100644 --- a/gtk/Makefile.am +++ b/gtk/Makefile.am @@ -109,6 +109,7 @@ GTK_OVERRIDES = \ gtkctree.override \ gtkiconview.override \ gtkrcstyle.override \ + gtkstatusbar.override \ gtkstyle.override \ gtktextview.override \ gtktoolbar.override \ diff --git a/gtk/gtk-base.defs b/gtk/gtk-base.defs index cd8feda2..60730d72 100644 --- a/gtk/gtk-base.defs +++ b/gtk/gtk-base.defs @@ -16589,8 +16589,21 @@ ) ) +;; Weird c-name is not used, it is overriden. See the next entry. (define-method remove (of-object "GtkStatusbar") + (c-name "gtk_statusbar_remove_compatibility") + (return-type "none") + (parameters + '("guint" "context_id") + '("guint" "message_id") + ) + (deprecated "use gtk.Statusbar.remove_message") +) + +;; Renamed because it hides gtk.Container.remove, see bug #564587. +(define-method remove_message + (of-object "GtkStatusbar") (c-name "gtk_statusbar_remove") (return-type "none") (parameters diff --git a/gtk/gtk.override b/gtk/gtk.override index a2894897..3fb6fd5f 100644 --- a/gtk/gtk.override +++ b/gtk/gtk.override @@ -137,6 +137,7 @@ include gtkctree.override gtkiconview.override gtkrcstyle.override + gtkstatusbar.override gtkstyle.override gtktextview.override gtktoolbar.override diff --git a/gtk/gtkstatusbar.override b/gtk/gtkstatusbar.override new file mode 100644 index 00000000..2c202c48 --- /dev/null +++ b/gtk/gtkstatusbar.override @@ -0,0 +1,65 @@ +/* -*- Mode: C; c-basic-offset: 4 -*- + * pygtk- Python bindings for the GTK toolkit. + * Copyright (C) 2009 Paul Pogonyshev + * + * gtkstatusbar.override: overrides for the gtk.Statusbar object. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ +%% +override gtk_statusbar_remove_compatibility kwargs + +static PyObject * +_wrap_gtk_statusbar_remove(PyGObject *self, PyObject *args, PyObject *kwargs); + +static PyObject * +_wrap_gtk_statusbar_remove_compatibility(PyGObject *self, PyObject *args, PyObject *kwargs) +{ + static char *kwlist[] = { "widget", NULL }; + PyGObject *widget; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs,"O!:gtk.Statusbar.remove", kwlist, + &PyGtkWidget_Type, &widget)) { + PyObject *exc_type, *exc_value, *exc_traceback; + PyObject *result; + + PyErr_Fetch(&exc_type, &exc_value, &exc_traceback); + + /* For compatibility reasons, call remove_message(). See bug #564587. */ + result = _wrap_gtk_statusbar_remove(self, args, kwargs); + if (result) { + Py_XDECREF(exc_type); + Py_XDECREF(exc_value); + Py_XDECREF(exc_traceback); + + if (PyErr_Warn(PyExc_DeprecationWarning, "use gtk.Statusbar.remove_message")) { + Py_DECREF(result); + return NULL; + } + + return result; + } + else { + PyErr_Restore(exc_type, exc_value, exc_traceback); + return NULL; + } + } + + gtk_container_remove(GTK_CONTAINER(self->obj), GTK_WIDGET(widget->obj)); + + Py_INCREF(Py_None); + return Py_None; +} |