Hi,

  some time ago [1] I tried hard to make a treeview header widget to be
  sensitive to press-event, with no luck.

  Now I just want to change the cursor but I can't do it eather.

  I can change the widget into a Label + EventBox, make it hihglight when
  mouse hoovers it but I can't make the EventBox change the cursor.

  The attached code is my attempt to make it change the cursor. Does anybody
  know how to make it work?

  TIA
  sandro
  *:-)





[1] http://www.mail-archive.com/pygtk@daa.com.au/msg17784.html
-- 
Sandro Dentella  *:-)
http://sqlkit.argolinux.org        SQLkit home page - PyGTK/python/sqlalchemy

----------------------------------------------------------------------

import gtk

HAND2 = gtk.gdk.Cursor(gtk.gdk.HAND2)
LBL_HOOVER_STYLE = gtk.gdk.color_parse('red')

class TreeMenu(object):

    def __init__(self):
        
        window = gtk.Window()
        vbox = gtk.VBox()
        label = self.make_label("label con hand2")
        mb = gtk.MenuBar()
        mb2 = gtk.MenuBar()
        tv = gtk.TreeView() 
        self.m = create_menu_button("File")

        window.add(vbox)
        vbox.add(mb)
        vbox.add(label)
        vbox.add(tv)
        mb.append(self.m)
        window.show_all()

        liststore = gtk.ListStore(str, str)
        tv.set_model(liststore)
        liststore.append(['abc', 'xyz'])
        
        cr = gtk.CellRendererText()
        cr2 = gtk.CellRendererText()
        tc = gtk.TreeViewColumn('A', cr, text=0)
        tc2 = gtk.TreeViewColumn('B', cr, text=1)
        tc.set_clickable(True)
        tc2.set_clickable(True)
        m = create_menu_button("I'm a MenuItem with submenu")
        ev_box = self.make_label("I'm a label with changed cursor")
        # this to experiment with MenuItem as 
        tc.set_widget(mb2)
        tc2.set_widget(ev_box)
        mb2.append(m)
        mb2.show_all()
        tc.set_clickable(True)
        

        tv.append_column(tc)
        tv.append_column(tc2)
        window.show_all()

    def ene_cb(self, eb, event):
        eb.get_child().set_state(gtk.STATE_PRELIGHT)
        return True

    def lne_cb(self, eb, event):
        eb.get_child().set_state(gtk.STATE_NORMAL)
        return True

    def make_label(self, label="label"):
        label = gtk.Label(label)
        event_box = gtk.EventBox()
        event_box.add(label)
        event_box.connect('realize', self.realize_cb)

        event_box.connect('enter-notify-event', self.ene_cb)
        event_box.connect('leave-notify-event', self.lne_cb)
        label.modify_fg(gtk.STATE_PRELIGHT, LBL_HOOVER_STYLE)

        event_box.connect("realize", self.realize_cb)        
        event_box.show_all()


        return event_box
    
    def realize_cb(self, widget):
        widget.window.set_cursor(HAND2)


def create_menu_button(label):
    m = gtk.MenuItem(label)
    menu = gtk.Menu()
    m.set_submenu(menu)
    menu.append(gtk.MenuItem('Item 1'))
    menu.append(gtk.MenuItem('Item 2'))
    menu.append(gtk.MenuItem('Item 3'))
    m.show_all()
    return m
        
t = TreeMenu()

gtk.main()
_______________________________________________
pygtk mailing list   pygtk@daa.com.au
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://faq.pygtk.org/

Reply via email to