Hi all,
I don't think gtk.Adjustment.set_all() should be deprecated. The individual
setters are nice, but when you change several of an adjustment's components
using individual setters (a common operation), the "changed" signal gets
emitted multiple times. Kind of a bummer if a signal handler is expensive.
The following patch undeprecates Adjustment.set_all(), and allows use of
keyword arguments (so you can say "a.set_all(value=FOO,
page_increment=BAR)" and such). Any chance it might get accepted? Or should
I go back to individual setters?
Eddie Kohler
Index: gtk.py
===================================================================
RCS file: /cvs/gnome/gnome-python/pygtk/gtk.py,v
retrieving revision 1.42
diff -u -u -r1.42 gtk.py
--- gtk.py 7 Apr 2000 10:54:09 -0000 1.42
+++ gtk.py 3 Feb 2003 19:36:02 -0000
@@ -196,8 +196,14 @@
return GtkData.__getattr__(self, attr)
def set_value(self, value):
_gtk.gtk_adjustment_set_value(self._o, value)
- def set_all(self, value, lower, upper, step_increment, page_increment,
- page_size):
+ def set_all(self, value=None, lower=None, upper=None,
+ step_increment=None, page_increment=None, page_size=None):
+ if value is None: value = self.value
+ if lower is None: lower = self.lower
+ if upper is None: upper = self.upper
+ if step_increment is None: step_increment = self.step_increment
+ if page_increment is None: page_increment = self.page_increment
+ if page_size is None: page_size = self.page_size
_gtk.gtk_adjustment_set_all(self._o, value, lower, upper,
step_increment, page_increment,
page_size)
Index: gtk/gtk-extrafuncs.defs
===================================================================
RCS file: /cvs/gnome/gnome-python/pygtk/gtk/gtk-extrafuncs.defs,v
retrieving revision 1.10
diff -u -u -r1.10 gtk-extrafuncs.defs
--- gtk/gtk-extrafuncs.defs 20 Jul 2002 05:44:36 -0000 1.10
+++ gtk/gtk-extrafuncs.defs 3 Feb 2003 19:36:02 -0000
@@ -48,7 +48,6 @@
'("gfloat" "page_increment")
'("gfloat" "page_size")
)
- (deprecated "use individual setters")
)
;; PyGtkTreeModel
Index: gtk/gtk.override
===================================================================
RCS file: /cvs/gnome/gnome-python/pygtk/gtk/gtk.override,v
retrieving revision 1.183
diff -u -u -r1.183 gtk.override
--- gtk/gtk.override 21 Jan 2003 02:11:20 -0000 1.183
+++ gtk/gtk.override 3 Feb 2003 19:36:02 -0000
@@ -7020,6 +7020,7 @@
_wrap_gtk_adjustment_set_all(PyGObject *self, PyObject *args,
PyObject *kwargs)
{
+ static char *kwlist[] = { "value", "lower", "upper", "step_increment",
+"page_increment", "page_size", NULL };
GtkAdjustment *adj = GTK_ADJUSTMENT(self->obj);
double *value = &adj->value, *lower = &adj->lower, *upper = &adj->upper;
double *step_increment = &adj->step_increment;
@@ -7030,11 +7031,10 @@
double old_page_increment = *page_increment;
double old_page_size = *page_size;
- if (PyErr_Warn(PyExc_DeprecationWarning, "use individual setters") < 0)
- return NULL;
- if (!PyArg_ParseTuple(args, "|dddddd:gtk_adjustment_set_all",
- value, lower, upper, step_increment,
- page_increment, page_size)) {
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+ "|dddddd:gtk_adjustment_set_all", kwlist,
+ value, lower, upper, step_increment,
+ page_increment, page_size)) {
adj->value = old_value;
adj->lower = old_lower;
adj->upper = old_upper;
@@ -7043,9 +7043,12 @@
adj->page_size = old_page_size;
return NULL;
}
- if (PyTuple_Size(args) > 0)
+ if (adj->value != old_value)
gtk_adjustment_value_changed(adj);
- if (PyTuple_Size(args) > 1)
+ if (adj->lower != old_lower || adj->upper != old_upper
+ || adj->step_increment != old_step_increment
+ || adj->page_increment != old_page_increment
+ || adj->page_size != old_page_size)
gtk_adjustment_changed(adj);
Py_INCREF(Py_None);
_______________________________________________
pygtk mailing list [EMAIL PROTECTED]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/