pygtk how to get treeview row(name) from a popup menu

K

kamu

hi all,
thanks in advance for your valuable reply.

I have a pygtk code. which is a simple tree view. and when i click on
any row of the tree view, i get a menu poped up. and i can click on
the options in the poped up menu. and it goes to a function. up to
this its fine with me. but now from this function, how do i get the
name of the tree row which i clicked. ?? I tried some get_path &
get_iter method and tried to pass it with the call. but i could not
get it. I pasted the test code which used. please correct me if i am
doin any mistake, though i am new to this language.
the code is pasted below.
in the function print_A(), i tried some things. ultimately i wanted to
get the name of the row in tree from this function. (ie: like 'CHILD 1
1' or 'PARENT 2' )

any comments on these will be helpful to me. because i am very new to
pygtk

#------------------------
test.py------------------------------------------------------------------------------
#!/usr/bin/env python

# generic treeview

import pygtk
pygtk.require('2.0')
import gtk
import os

class test_tree:

# close the window and quit
def delete_event(self, widget, event, data=None):
gtk.main_quit()
return False

def create_menu(self, window,event, data=None):
# merge = gtk.UIManager()
# self.set_data("ui-manager", merge)
# accel = gtk.AccelGroup(merge)
item_factory = gtk.ItemFactory(gtk.Menu, "<main>", None)
item_factory.create_items(self.menu_items)
# window.add_accel_group(accel)
self.item_factory = item_factory

return item_factory.get_widget("<main>")


def button_press_callback(self, treeview, event, data=None):
if event.button == 3:
x = int(event.x)
y = int(event.y)
time = event.time
pthinfo = self.treeview.get_path_at_pos(x,y)
# TreeSelection =
self.treeview.get_selection().get_treeview()
# tre = gtk.TreeSelection.get_treeview()
# print "***"
# print treeselection
# print "***"
if pthinfo is not None:
path,col,cellx,celly = pthinfo
self.treeview.grab_focus()
self.treeview.set_cursor(path,col,0)
menu = self.create_menu(self,self.window,None)
menu.popup(None,None,None,event.button,event.time)

return 1
def print_A(self, w, data):
iter =
self.menu_items.iter_children(self.menu_items.get_iter(self.menu_path))
#iter = self.treeview.get_path()
#aa = self.treestore.get_path(iter)
print iter

return 1

def print_B(self, w, data):
print "B"
return 1

def print_C(self, w, data):
print "C"
return 1

def print_D(self, w, data):
print "D"
return 1

def print_E(self, w, data):
print "E"
return 1


def __init__(self):
self.menu_items = (
( "/_A", "<control>O", self.print_A, 0, None ),
( "/_B", "<control>I", self.print_B, 0, None ),
( "/_C", "<control>H", self.print_C, 0, None ),
( "/_D", "<control>F", self.print_D, 0, None ),
( "/_E", "<control>U", self.print_E, 0, None ),
)

# Create a new window
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)

self.window.set_title("Project")

self.window.set_size_request(200, 200)

self.window.connect("delete_event", self.delete_event)

# create a TreeStore with one string column to use as the model
self.treestore = gtk.TreeStore(str)

# add some data now - 4 rows with 2 child rows each
for parent in range(4):
piter = self.treestore.append(None, ['PARENT %i' %
parent])
for child in range(1):
self.treestore.append(piter, ['CHILD1 %i' % parent])
self.treestore.append(piter, ['CHILD2 %i' % parent])

# create the TreeView using treestore
self.treeview = gtk.TreeView(self.treestore)

self.treeview.connect ("button_press_event",
self.button_press_callback, None)
iter = self.treestore.get_iter_first()

# create the TreeViewColumn to display the data
self.tvcolumn = gtk.TreeViewColumn('project')

# add tvcolumn to treeview
self.treeview.append_column(self.tvcolumn)

# create a CellRendererText to render the data
self.cell = gtk.CellRendererText()

# add the cell to the tvcolumn and allow it to expand
self.tvcolumn.pack_start(self.cell, True)

# set the cell "text" attribute to column 0 - retrieve text
# from that column in treestore
self.tvcolumn.add_attribute(self.cell, 'text', 0)

# make it searchable
self.treeview.set_search_column(0)

# Allow sorting on the column
self.tvcolumn.set_sort_column_id(0)

# Allow drag and drop reordering of rows
self.treeview.set_reorderable(True)

self.window.add(self.treeview)

self.window.show_all()

def main():
gtk.main()

if __name__ == "__main__":
test_tree = test_tree()
main()
#-------
end--------------------------------------------------------------------


-thanks a lot
-Anuroop
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,578
Members
45,052
Latest member
LucyCarper

Latest Threads

Top