diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | examples/pygtk-demo/demos/tooltip.py | 29 | ||||
-rw-r--r-- | gtk/gtkiconview.override | 38 |
3 files changed, 75 insertions, 0 deletions
@@ -1,3 +1,11 @@ +2008-06-23 Gian Mario Tagliaretti <gianmt@gnome.org> + + Bug 539743 – Missing method gtk.IconView.get_tooltip_context + + * gtk/gtk.override: wrap gtk.IconView.get_tooltip_context + + * examples/pygtk-demo/demos/tooltip.py: use the above method. + 2008-06-22 Paul Pogonyshev <pogonyshev@gmx.net> * gtk/gtk.override (_wrap_gtk_action_set_menu_item_type) diff --git a/examples/pygtk-demo/demos/tooltip.py b/examples/pygtk-demo/demos/tooltip.py index 0ffe1e81..eeabd3aa 100644 --- a/examples/pygtk-demo/demos/tooltip.py +++ b/examples/pygtk-demo/demos/tooltip.py @@ -96,6 +96,24 @@ class TooltipDemo(gtk.Window): button.props.tooltip_text = "Header" box.pack_start(tree_view, False, False, 2) + + # Add an IconView for some more testing + iconview = gtk.IconView() + iconview.props.has_tooltip = True + iconview.connect("query-tooltip", self.query_tooltip_icon_view_cb) + + model = gtk.ListStore(str, gtk.gdk.Pixbuf) + iconview.set_model(model) + iconview.set_text_column(0) + iconview.set_pixbuf_column(1) + + pixbuf1 = iconview.render_icon(gtk.STOCK_APPLY,gtk.ICON_SIZE_BUTTON) + model.append(['Apply', pixbuf1]) + + pixbuf2 = iconview.render_icon(gtk.STOCK_CANCEL,gtk.ICON_SIZE_BUTTON) + model.append(['Cancel', pixbuf2]) + + box.pack_start(iconview, False, False, 2) # And a text view for Matthias buffer = gtk.TextBuffer() @@ -172,7 +190,18 @@ class TooltipDemo(gtk.Window): tooltip.set_markup("<b>Path %s:</b> %s" %(path[0], value[0])) widget.set_tooltip_row(tooltip, path) return True + + def query_tooltip_icon_view_cb(self, widget, x, y, keyboard_tip, tooltip): + if not widget.get_tooltip_context(x, y, keyboard_tip): + return False + else: + model, path, iter = widget.get_tooltip_context(x, y, keyboard_tip) + value = model.get(iter, 0) + tooltip.set_markup("<b>Path %s:</b> %s" %(path[0], value[0])) + widget.set_tooltip_item(tooltip, path) + return True + def query_tooltip_drawing_area_cb(self, widget, x, y, keyboard_tip, tooltip, data=None): if keyboard_tip: diff --git a/gtk/gtkiconview.override b/gtk/gtkiconview.override index f309ca3e..79385d05 100644 --- a/gtk/gtkiconview.override +++ b/gtk/gtkiconview.override @@ -334,3 +334,41 @@ _wrap_gtk_icon_view_enable_model_drag_dest(PyGObject *self, PyObject *args, Py_INCREF(Py_None); return Py_None; } +%% +override gtk_icon_view_get_tooltip_context kwargs +static PyObject * +_wrap_gtk_icon_view_get_tooltip_context(PyGObject *self, + PyObject *args, + PyObject *kwargs) +{ + static char *kwlist[] = { "x", "y", "keyboard_tip", NULL }; + + gboolean ret; + PyObject *py_ret = Py_None, *py_keyboard_tip = Py_True; + gint x, y; + GtkTreeModel *tree_model; + GtkTreePath *path; + GtkTreeIter iter; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, + "iiO:GtkIconView.get_tooltip_context", + kwlist, &x, &y, &py_keyboard_tip)) + return NULL; + + ret = gtk_icon_view_get_tooltip_context(GTK_ICON_VIEW(self->obj), &x, &y, + PyObject_IsTrue(py_keyboard_tip), + &tree_model, + &path, &iter); + if (ret) { + py_ret = Py_BuildValue("(NNN)", + pygobject_new((GObject *)tree_model), + pygtk_tree_path_to_pyobject(path), + pyg_boxed_new(GTK_TYPE_TREE_ITER, &iter, + TRUE, TRUE)); + + gtk_tree_path_free(path); + return py_ret; + } + Py_INCREF(py_ret); + return py_ret; +} |