Focusing Hippo CanvasEntry

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I've just started to play around with Hippo Canvas tonight.  It's been
quite easy so far, but one thing that's got me stumped is how to deal
with focus for canvas items.  Specifically, if I add a new CanvasEntry
to a canvas somewhere, can I make focus go to that item?

Attached is the little program I've been playing around with so far.  If
you run it and click on any text label, it'll be replaced with an entry
item - these newly created entries are the ones I'd like to gain focus as
soon as they're added.

I didn't see any other posts about Hippo Canvas in the archives, but I
also didn't see another list about the project.  If there's a more
appropriate forum for questions about it, please let me know.

Jean-Paul
import pygtk
pygtk.require('2.0')
import gtk, hippo

EVEN = 0xffffffffL
ODD = 0xddddddffL

def makeText(s, row):
    t = hippo.CanvasText(
        text=s, background_color=[EVEN, ODD][row % 2],
        size_mode=hippo.CANVAS_SIZE_FULL_WIDTH, border=3)
    t.connect('button-press-event', textClicked, row)
    return t



def inputSubmitted(input, event, row):
    if event.key == hippo.KEY_RETURN:
        # Convert it back to a label
        text = makeText(input.get_property('text'), row)
        parent = input.get_parent()
        parent.insert_after(text, input, hippo.PACK_EXPAND)
        parent.remove(input)



def textClicked(text, event, row):
    # Convert it to an input
    input = hippo.CanvasEntry()
    input.set_property('text', text.get_property('text'))
    input.connect('key-press-event', inputSubmitted, row)
    parent = text.get_parent()
    parent.insert_after(input, text, hippo.PACK_EXPAND)
    parent.remove(text)



def main():
    canvas = hippo.Canvas()
    root = hippo.CanvasBox(orientation=hippo.ORIENTATION_HORIZONTAL)
    canvas.set_root(root)

    # Add some rows and columns
    for c in xrange(2):
        row = hippo.CanvasBox(orientation=hippo.ORIENTATION_VERTICAL)
        for r in xrange(5):
            text = makeText(u'%dx%d' % (c, r), r)
            row.append(text, hippo.PACK_EXPAND)
        root.append(row, hippo.PACK_EXPAND)

    window = gtk.Window()
    window.connect('destroy', lambda ignored: gtk.main_quit())
    window.add(canvas)

    canvas.show()
    window.show()

    gtk.main()

main()
_______________________________________________
gnome-list mailing list
gnome-list@xxxxxxxxx
http://mail.gnome.org/mailman/listinfo/gnome-list

[Index of Archives]     [Fedora Desktop]     [Trinity Users]     [KDE]     [Gimp]     [Yosemite News]

  Powered by Linux