#!/usr/bin/python

from snack import *
import sys

def help(screen, text):
    raise ValueError, "foo"
    ButtonChoiceWindow(screen, "Help", text, help = "Help on help")

t = TextboxReflowed(25, "Some text which needs to be wrapped at a good place.")
li = Listbox(5, width = 20, returnExit = 1)
li.append("First", "f")
li.append("Second", "s")
li.insert("Another", "a", "f")
li.delete("a")
ct = CheckboxTree(5, scroll = 1)
ct.append("Colors")
ct.addItem("Red", (0, snackArgs['append']), "red item key")
ct.addItem("Yellow", (0, snackArgs['append']))
ct.addItem("Blue", (0, snackArgs['append']))
ct.append("Flavors")
ct.addItem("Vanilla", (1, snackArgs['append']))
ct.addItem("Chocolate", (1, snackArgs['append']))
ct.addItem("Stawberry", (1, snackArgs['append']))
ct.append("Numbers")
ct.addItem("1", (2, snackArgs['append']))
ct.addItem("2", (2, snackArgs['append']))
ct.addItem("3", (2, snackArgs['append']))
ct.append("Names")
ct.addItem("Matt", (3, snackArgs['append']))
ct.addItem("Shawn", (3, snackArgs['append']))
ct.addItem("Wilson", (3, snackArgs['append']))
ct.append("Months")
ct.addItem("February", (4, snackArgs['append']))
ct.addItem("August", (4, snackArgs['append']))
ct.addItem("September", (4, snackArgs['append']))
ct.append("Events")
ct.addItem("Christmas", (5, snackArgs['append']))
ct.addItem("Labor Day", (5, snackArgs['append']))
ct.addItem("My Vacation", (5, snackArgs['append']))
b = Button("Button")
e = Entry(15, "Entry")
l = Label("label")
cb = Checkbox("checkbox")
r1 = SingleRadioButton("Radio 1", None, 1)
r2 = SingleRadioButton("Radio 2", r1)

def something():
    print hello

screen = SnackScreen()

screen.helpCallback(help)

foo = EntryWindow(screen, 'Title', 'This is some text for the entry window',
	    ['prompt', 'more', 'info'])

lbcw = ListboxChoiceWindow(screen, 'Title 2', 
		    'Choose one item from the list below:', 
		    ('One', 'Two', 'Three', 'Four', 'Five'), default = 2,
		    help = "Help for a listbox")

sg = Grid(2, 3)
sg.setField(b, 0, 0, anchorLeft = 1)
sg.setField(e, 1, 0, (1, 0, 0, 0), anchorLeft = 1, anchorTop = 1)
sg.setField(l, 0, 1, (0, 1, 0, 0), anchorLeft = 1)
sg.setField(cb, 1, 1, (1, 1, 0, 0), anchorLeft = 1)
sg.setField(r1, 0, 2, (0, 0, 0, 0), anchorLeft = 1)
sg.setField(r2, 1, 2, (1, 0, 0, 0), anchorLeft = 1)

g = Grid(1, 3)

g.setField(t, 0, 0)
g.setField(li, 0, 1, (0, 1, 0, 1))
g.setField(sg, 0, 2)

g.place(1, 1)

screen.gridWrappedWindow(g, "title")

f = Form("This is some help")
f.add(li)
f.add(b)
f.add(e)
f.add(l)
f.add(cb)
f.add(r1)
f.add(r2)
f.add(t)

res = f.run()

screen.popWindow()

g = GridForm(screen, "Tree", 1, 2)
g.add(ct, 0, 0, (0, 0, 0, 1))
g.add(Button("Ok"), 0, 1)
g.runOnce()


screen.finish()

print "val", e.value()
print "check", cb.value()
print "r1", r1.selected()
print "listbox", li.current()
# returns a tuple of the wrapped text, the actual width, and the actual height
print res

print foo
print 'lbcw', lbcw
print "ct selected", ct.getSelection()
print "ct current", ct.getCurrent()
