Up
index

source: TreeView Context Menu


import pygtk
pygtk.require("2.0")
import gtk

NAME="TreeView Context Menu"

class ContextMenu(gtk.Menu):
	def __init__(self, t):
		gtk.Menu.__init__(self)
		self.t = t
		i = gtk.MenuItem("Menu1")
		i.connect("activate", self.response_menu1)
		i.show()
		self.append(i)
		
		i = gtk.MenuItem("Menu2")
		i.connect("activate", self.response_menu2)
		i.show()
		self.append(i)

	def response_menu1(self, widget):
		print "menu1 activated"

	def response_menu2(self, widget):
		print "menu2 activated"

class T_TreeviewContextMenu(gtk.Window):
	def __init__(self):
		gtk.Window.__init__(self)

		self.set_title("TreeviewContextMenu")
		self.set_geometry_hints(min_width=200)
		self.connect("destroy", gtk.main_quit)

		self.list = gtk.ListStore(int, str)
		iter = self.list.append( (0, "toto",) )
		self.list.set(iter)
		iter = self.list.append( (1, "toto2",) )
		self.list.set(iter)

		self.treeview = gtk.TreeView()
		model = self.treeview.get_selection()
		model.set_mode(gtk.SELECTION_SINGLE)
		r = gtk.CellRendererText()
		self.treeview.insert_column_with_attributes(-1, "List", r, text=1)
		self.treeview.set_model(self.list)

		self.treeview.connect("cursor-changed", self.on_treeview_cursor_changed)
		self.treeview.connect("button_press_event", self.on_button_press_event)
		self.treeview.show()
		self.add(self.treeview)

	def on_button_press_event(self, widget, event):
		print "button clicked"
		if event.button == 3 and event.type == gtk.gdk.BUTTON_PRESS:
			print "1"
			c = ContextMenu(self)
			c.popup(None, None, None, event.button, event.get_time())
			
	def on_treeview_cursor_changed(self, treeview):
		print "Treeview Cursor changed"
		s = treeview.get_selection()
		(ls, iter) = s.get_selected()
		if iter is None:
			print "nothing selected"
		else:
			data0 = ls.get_value(iter, 0)
			data1 = ls.get_value(iter, 1)
			print "Selected:", data0, data1

t = T_TreeviewContextMenu()
t.show()
gtk.main()

$Id: page.wml,v 1.5 2007-01-04 15:52:08 dakol Exp $

Valid XHTML 1.0! Valid CSS!