summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--examples/pygtk-demo/demos/tooltip.py29
-rw-r--r--gtk/gtkiconview.override38
3 files changed, 75 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index b86010ae..e4b045fe 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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;
+}