from GUI import Window, View, CheckBox, Button, Label, \
         RadioButton, RadioGroup, TextField, application
from TestViews import TestDrawing
from TestScrollableViews import TestScrollableDrawing

def pushed_it():
    print "Button pushed."

def checked_it():
    print "Check boxes changed to:", cb1.on, cb2.on

def option_chosen():
    print "Hoopy option %d chosen" % rg.value

def main():
    global cb1, cb2, rg

    win = Window(title = "Place Me By Your Side", width = 720, height = 500)

    view1 = TestDrawing(width = 320, height = 200)

    cb1 = CheckBox(title = "Check Me!", action = checked_it)

    cb2 = CheckBox(title = "Check Me Too!", action = checked_it)

    rbs = []
    for i in xrange(1, 4):	
        rb = RadioButton(title = "Hoopy Option %d" % i, value = i)
        rbs.append(rb)

    rg = RadioGroup(rbs, action = option_chosen)

    pb = Button(title = "Push Me!", action = pushed_it)

    view2 = TestScrollableDrawing(width = 300, height = 300)

    label = Label(text = "Flavour:")

    entry = TextField(width = 200)

    win.place(view1, left = 10, top = 10, border = 1)

    win.place_row([cb1, cb2], left = 10, top = (view1, 20), spacing = 20)

    win.place_column(rbs, left = view1 + 20, top = 10)

    win.place(pb, right = -20, bottom = -10, sticky = 'se')

    win.place(view2, 
        left = rbs[0] + 20, top = 10, 
        right = -20,
        bottom = pb - 10,
        scrolling = 'hv',
        sticky = 'nsew',
        border = 1)
    
    win.place(label, left = 10, top = (cb1, 20))

    win.place(entry, left = 10, top = (label, 10), border = 1)
    entry.become_target()

    win.show()

    application().run()

instructions = """
There should be a window containing:

1. A 320x200 view, 10 pixels from the left and top, containing some drawing.

2. Below the view, aligned with its left edge:

   2a. A row of two check boxes

   2b. A label
   
   2c. A text field
 
3. To the right of the view, aligned with its top edge, a column
   of three radio buttons.

4. To the right of the radio buttons, a scrolling view, 10 pixels from the
   top of the window and 20 from the right edge.

5. In the bottom right corner of the window, a button, 10 pixels from the
   scrolling view and from the bottom of the window, and 20 pixels from the
   right edge.

When the window is resized, the scrolling view should resize with it,
and the button should remain the same distance from the bottom right
corner.
"""

print instructions
main()
