Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / amd64 / lib / python2.4 / site-packages / Pmw / Pmw_1_2 / demos / Counter.py
CommitLineData
920dae64
AT
1title = 'Pmw.Counter demonstration'
2
3# Import Pmw from this directory tree.
4import sys
5sys.path[:0] = ['../../..']
6
7import string
8import time
9import Tkinter
10import Pmw
11
12class Demo:
13 def __init__(self, parent):
14 # Need to use long ints here because on the Macintosh the maximum size
15 # of an integer is smaller than the value returned by time.time().
16 now = (long(time.time()) / 300) * 300
17
18 # Create the Counters.
19 self._date = Pmw.Counter(parent,
20 labelpos = 'w',
21 label_text = 'Date (4-digit year):',
22 entryfield_value =
23 time.strftime('%d/%m/%Y', time.localtime(now)),
24 entryfield_command = self.execute,
25 entryfield_validate = {'validator' : 'date', 'format' : 'dmy'},
26 datatype = {'counter' : 'date', 'format' : 'dmy', 'yyyy' : 1})
27
28 self._isodate = Pmw.Counter(parent,
29 labelpos = 'w',
30 label_text = 'ISO-Date (4-digit year):',
31 entryfield_value =
32 time.strftime('%Y-%m-%d', time.localtime(now)),
33 entryfield_command = self.execute,
34 entryfield_validate = {'validator' : 'date', 'format' : 'ymd',
35 'separator' : '-' },
36 datatype = {'counter' : 'date', 'format' : 'ymd', 'yyyy' : 1,
37 'separator' : '-' })
38
39 self._time = Pmw.Counter(parent,
40 labelpos = 'w',
41 label_text = 'Time:',
42 entryfield_value =
43 time.strftime('%H:%M:%S', time.localtime(now)),
44 entryfield_validate = {'validator' : 'time',
45 'min' : '00:00:00', 'max' : '23:59:59',
46 'minstrict' : 0, 'maxstrict' : 0},
47 datatype = {'counter' : 'time', 'time24' : 1},
48 increment=5*60)
49 self._real = Pmw.Counter(parent,
50 labelpos = 'w',
51 label_text = 'Real (with comma)\nand extra\nlabel lines:',
52 label_justify = 'left',
53 entryfield_value = '1,5',
54 datatype = {'counter' : 'real', 'separator' : ','},
55 entryfield_validate = {'validator' : 'real',
56 'min' : '-2,0', 'max' : '5,0',
57 'separator' : ','},
58 increment = 0.1)
59 self._custom = Pmw.Counter(parent,
60 labelpos = 'w',
61 label_text = 'Custom:',
62 entryfield_value = specialword[:4],
63 datatype = _custom_counter,
64 entryfield_validate = _custom_validate)
65 self._int = Pmw.Counter(parent,
66 labelpos = 'w',
67 label_text = 'Vertical integer:',
68 orient = 'vertical',
69 entry_width = 2,
70 entryfield_value = 50,
71 entryfield_validate = {'validator' : 'integer',
72 'min' : 0, 'max' : 99}
73 )
74
75 counters = (self._date, self._isodate, self._time, self._real,
76 self._custom)
77 Pmw.alignlabels(counters)
78
79 # Pack them all.
80 for counter in counters:
81 counter.pack(fill='both', expand=1, padx=10, pady=5)
82 self._int.pack(padx=10, pady=5)
83
84 def execute(self):
85 print 'Return pressed, value is', self._date.get()
86
87specialword = 'Monti Python ik den Holie Grailen (Bok)'
88
89def _custom_validate(text):
90 if string.find(specialword, text) == 0:
91 return 1
92 else:
93 return -1
94
95def _custom_counter(text, factor, increment):
96 # increment is ignored here.
97 if string.find(specialword, text) == 0:
98 length = len(text)
99 if factor == 1:
100 if length >= len(specialword):
101 raise ValueError, 'maximum length reached'
102 return specialword[:length + 1]
103 else:
104 if length == 0:
105 raise ValueError, 'empty string'
106 return specialword[:length - 1]
107 else:
108 raise ValueError, 'bad string ' + text
109
110######################################################################
111
112# Create demo in root window for testing.
113if __name__ == '__main__':
114 root = Tkinter.Tk()
115 Pmw.initialise(root)
116 root.title(title)
117
118 exitButton = Tkinter.Button(root, text = 'Exit', command = root.destroy)
119 exitButton.pack(side = 'bottom')
120 widget = Demo(root)
121 root.mainloop()