title = 'Pmw.ComboBox demonstration'

# Import Pmw from this directory tree.
import sys
sys.path[:0] = ['../../..']

import Tkinter
import Pmw

class Demo:
    def __init__(self, parent):
        parent.configure(background = 'white')

        # Create and pack the widget to be configured.
        self.target = Tkinter.Label(parent,
                                    relief = 'sunken',
                                    padx = 20,
                                    pady = 20,
                                    )
        self.target.pack(fill = 'x', padx = 8, pady = 8)

        # Create and pack the simple ComboBox.
        words = ('Monti', 'Python', 'ik', 'den', 'Holie', 'Grailen', '(Bok)')
        simple = Pmw.ComboBox(parent,
                              label_text = 'Simple ComboBox:',
                              labelpos = 'nw',
                              selectioncommand = self.changeText,
                              scrolledlist_items = words,
                              dropdown = 0,
                              )
        simple.pack(side = 'left', fill = 'both',
                    expand = 1, padx = 8, pady = 8)

        # Display the first text.
        first = words[0]
        simple.selectitem(first)
        self.changeText(first)

        # Create and pack the dropdown ComboBox.
        colours = ('cornsilk1', 'snow1', 'seashell1', 'antiquewhite1',
                   'bisque1', 'peachpuff1', 'navajowhite1', 'lemonchiffon1',
                   'ivory1', 'honeydew1', 'lavenderblush1', 'mistyrose1')
        dropdown = Pmw.ComboBox(parent,
                                label_text = 'Dropdown ComboBox:',
                                labelpos = 'nw',
                                selectioncommand = self.changeColour,
                                scrolledlist_items = colours,
                                )
        dropdown.pack(side = 'left', anchor = 'n',
                      fill = 'x', expand = 1, padx = 8, pady = 8)

        # Display the first colour.
        first = colours[0]
        dropdown.selectitem(first)
        self.changeColour(first)

    def changeColour(self, colour):
        print 'Colour: ' + colour
        self.target.configure(background = colour)

    def changeText(self, text):
        print 'Text: ' + text
        self.target.configure(text = text)

######################################################################

# Create demo in root window for testing.
if __name__ == '__main__':
    root = Tkinter.Tk()
    Pmw.initialise(root)
    root.title(title)

    exitButton = Tkinter.Button(root, text = 'Exit', command = root.destroy)
    exitButton.pack(side = 'bottom')
    widget = Demo(root)
    root.mainloop()
