A minor nit. The cursor is not the same as the selection. To see the difference press Control-n. The cursor is identified by the outlined box. Of course it's usually the same as the selection.
John Alan F wrote: > > > > Is there some reason why you are not using the TreeSelection "changed" > > signal to track the selction changes and update your display? In your > > case I assume that only one selection at a time is allowed so the > > "changed" signal would seem to be ideal. > > > > John > > Thanks John. Finally got it working. > > If anybodys interested, I've just created a program that displays the > tags of mp3 files in a selected folder. It's quite basic as you have > to enter path into script file. > > > # ######### Start of File > #!/usr/bin/env python > > # tag-tree.py > > import pygtk > pygtk.require('2.0') > import gtk > import os > import glob > from mutagen.id3 import ID3, TPE2, TIT2, TPE1, TALB, TCOM, TDRC, TCON, > TRCK, TPOS > > MUSIC_DIR = "ENTER MUSIC FOLDER PATH HERE" > > class tag_tree: > > # close the window and quit > def delete_event(self, widget, event, data=None): > gtk.main_quit() > return False > > def add_data(self): > > os.chdir(MUSIC_DIR) > file_list = glob.glob('*.mp3') > first_time = True > > if len(file_list) == 0: > print "No mp3 files in folder" > else: > file_list.sort() > for x in file_list: > curr_iter = self.liststore.append([x,x] ) > if first_time == True: > first_iter = curr_iter > first_time = False > return first_iter > > def change_details(self, widget, txt_area): > #get data from highlighted selection > treeselection = self.treeview.get_selection() > > (model, iter) = treeselection.get_selected() > if iter != None : > # Add audio data > txt_buffer = gtk.TextBuffer() > file_name = self.liststore.get_value(iter, 0) > audio = ID3(file_name) > if audio.has_key('TIT2'): > txt_buffer.insert_at_cursor("Title: " + > unicode(audio["TIT2"]) + '\n') > if audio.has_key('TPE1'): > txt_buffer.insert_at_cursor( "Artist: " + > unicode(audio["TPE1"]) + '\n') > if audio.has_key('TCOM'): > txt_buffer.insert_at_cursor("Composer: " + > unicode(audio["TCOM"]) + '\n') > if audio.has_key('TPE2'): > txt_buffer.insert_at_cursor("AlbumArtist: " + > unicode(audio["TPE2"]) + '\n') > if audio.has_key('TALB'): > txt_buffer.insert_at_cursor("Album: " + > unicode(audio["TALB"]) + '\n') > if audio.has_key('TCON'): > txt_buffer.insert_at_cursor("Genre: " + > unicode(audio["TCON"]) + '\n') > if audio.has_key('TDRC'): > txt_buffer.insert_at_cursor("Year: " + > unicode(audio["TDRC"]) + '\n') > if audio.has_key('TRCK'): > txt_buffer.insert_at_cursor("Track num: " + > unicode(audio["TRCK"]) + '\n') > if audio.has_key('TPOS'): > txt_buffer.insert_at_cursor("Disc num: " + > unicode(audio["TPOS"]) + '\n') > txt_area.set_buffer(txt_buffer) > > def __init__(self): > # Create a new window > self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) > > self.window.set_title("Tag Display") > self.window.set_size_request(500, 200) > self.window.connect("delete_event", self.delete_event) > > table1 = gtk.Table(1, 2, False) > table1.set_row_spacings( 5) > table1.set_col_spacings(5) > self.window.add(table1) > > # create a ListStore with one string column to use as the model > self.liststore = gtk.ListStore(str, str) > first_iter = self.add_data() > > # create the TreeView using liststore > self.treeview = gtk.TreeView(self.liststore) > self.treeview.set_headers_visible(False) > > # create the TreeViewColumn to display the data > self.tvcolumn = gtk.TreeViewColumn() > > # 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 drag and drop reordering of rows > self.treeview.set_reorderable(False) > > # values colx, coly, roxx, rowy > table1.attach(self.treeview, 0, 1, 0, 1) > > txt_area = gtk.TextView() > txt_area.set_editable(False) > table1.attach(txt_area, 1,2, 0, 1) > > self.treeview.connect('cursor-changed', self.change_details, > txt_area) > first_path = self.liststore.get_path(first_iter) > self.treeview.set_cursor(0) > > self.window.show_all() > table1.show() > > def main(): > gtk.main() > > if __name__ == "__main__": > tag_tree() > main() > > > # ######### End of File > > ------------------------------------------------------------------------ > Share your photos with Windows Live Photos – Free Find out more! > <http://clk.atdmt.com/UKM/go/132630768/direct/01/> > ------------------------------------------------------------------------ > > _______________________________________________ > pygtk mailing list pygtk@daa.com.au > http://www.daa.com.au/mailman/listinfo/pygtk > Read the PyGTK FAQ: http://faq.pygtk.org/ _______________________________________________ pygtk mailing list pygtk@daa.com.au http://www.daa.com.au/mailman/listinfo/pygtk Read the PyGTK FAQ: http://faq.pygtk.org/