Commit | Line | Data |
---|---|---|
920dae64 AT |
1 | title = 'Pmw.MessageBar demonstration' |
2 | ||
3 | # Import Pmw from this directory tree. | |
4 | import sys | |
5 | sys.path[:0] = ['../../..'] | |
6 | ||
7 | import Tkinter | |
8 | import Pmw | |
9 | ||
10 | class Demo: | |
11 | def __init__(self, parent): | |
12 | # Create and pack the MessageBar. | |
13 | self._messagebar = Pmw.MessageBar(parent, | |
14 | entry_width = 40, | |
15 | entry_relief='groove', | |
16 | labelpos = 'w', | |
17 | label_text = 'Status:') | |
18 | self._messagebar.pack(side = 'bottom', fill = 'x', | |
19 | expand = 1, padx = 10, pady = 10) | |
20 | ||
21 | # Create and pack the ScrolledListBox to change the MessageBar. | |
22 | self.box = Pmw.ScrolledListBox(parent, | |
23 | listbox_selectmode='single', | |
24 | items=('state', 'help', 'userevent', 'systemevent', | |
25 | 'usererror', 'systemerror', 'busy',), | |
26 | label_text='Message type', | |
27 | labelpos='n', | |
28 | selectioncommand=self.selectionCommand) | |
29 | self.box.pack(fill = 'both', expand = 'yes', padx = 10, pady = 10) | |
30 | ||
31 | self._index = 0 | |
32 | self._stateCounter = 0 | |
33 | ||
34 | def selectionCommand(self): | |
35 | sels = self.box.getcurselection() | |
36 | if len(sels) > 0: | |
37 | self._index = self._index + 1 | |
38 | messagetype = sels[0] | |
39 | if messagetype == 'state': | |
40 | self._stateCounter = (self._stateCounter + 1) % 3 | |
41 | text = stateMessages[self._stateCounter] | |
42 | if text != '': | |
43 | text = text + ' (' + messagetype + ')' | |
44 | self._messagebar.message('state', text) | |
45 | else: | |
46 | text = messages[messagetype] | |
47 | text = text + ' (' + messagetype + ')' | |
48 | self._messagebar.message(messagetype, text) | |
49 | if messagetype == 'busy': | |
50 | Pmw.showbusycursor() | |
51 | self.box.after(2000) | |
52 | Pmw.hidebusycursor() | |
53 | self._messagebar.resetmessages('busy') | |
54 | text = 'All files successfully removed' | |
55 | text = text + ' (userevent)' | |
56 | self._messagebar.message('userevent', text) | |
57 | ||
58 | ||
59 | messages = { | |
60 | 'help': 'Save current file', | |
61 | 'userevent': 'Saving file "foo"', | |
62 | 'busy': 'Busy deleting all files from file system ...', | |
63 | 'systemevent': 'File "foo" saved', | |
64 | 'usererror': 'Invalid file name "foo/bar"', | |
65 | 'systemerror': 'Failed to save file: file system full', | |
66 | } | |
67 | ||
68 | stateMessages = { | |
69 | 0: '', | |
70 | 1: 'Database is down', | |
71 | 2: 'Waiting for reply from database', | |
72 | } | |
73 | ||
74 | ###################################################################### | |
75 | ||
76 | # Create demo in root window for testing. | |
77 | if __name__ == '__main__': | |
78 | root = Tkinter.Tk() | |
79 | Pmw.initialise(root) | |
80 | root.title(title) | |
81 | ||
82 | exitButton = Tkinter.Button(root, text = 'Exit', command = root.destroy) | |
83 | exitButton.pack(side = 'bottom') | |
84 | widget = Demo(root) | |
85 | root.mainloop() |