Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / amd64 / lib / python2.4 / site-packages / Pmw / Pmw_1_2 / demos / PanedWidget.py
CommitLineData
920dae64
AT
1title = 'Pmw.PanedWidget demonstration'
2
3# Import Pmw from this directory tree.
4import sys
5sys.path[:0] = ['../../..']
6
7import Tkinter
8import Pmw
9
10class Demo:
11 def __init__(self, parent):
12
13 # Create a main PanedWidget with a few panes.
14 self.pw = Pmw.PanedWidget(parent,
15 orient='vertical',
16 hull_borderwidth = 1,
17 hull_relief = 'sunken',
18 hull_width=300,
19 hull_height=400)
20 for self.numPanes in range(4):
21 if self.numPanes == 1:
22 name = 'Fixed size'
23 pane = self.pw.add(name, min = .1, max = .1)
24 else:
25 name = 'Pane ' + str(self.numPanes)
26 pane = self.pw.add(name, min = .1, size = .25)
27 label = Tkinter.Label(pane, text = name)
28 label.pack(side = 'left', expand = 1)
29 button = Tkinter.Button(pane, text = 'Delete',
30 command = lambda s=self, n=name: s.deletePane(n))
31 button.pack(side = 'left', expand = 1)
32 # TODO: add buttons to invoke self.moveOneUp and self.moveOneUp.
33
34 self.pw.pack(expand = 1, fill='both')
35
36 buttonBox = Pmw.ButtonBox(parent)
37 buttonBox.pack(fill = 'x')
38 buttonBox.add('Add pane', command = self.addPane)
39 buttonBox.add('Move pane', command = self.move)
40 self.moveSrc = 0
41 self.moveNewPos = 1
42 self.moveBack = 0
43
44 def move(self):
45 numPanes = len(self.pw.panes())
46 if numPanes == 0:
47 print 'No panes to move!'
48 return
49
50 if self.moveSrc >= numPanes:
51 self.moveSrc = numPanes - 1
52 if self.moveNewPos >= numPanes:
53 self.moveNewPos = numPanes - 1
54 print 'Moving pane', self.moveSrc, 'to new position', self.moveNewPos
55 self.pw.move(self.moveSrc, self.moveNewPos)
56
57 self.moveSrc, self.moveNewPos = self.moveNewPos, self.moveSrc
58 if self.moveBack:
59 if self.moveNewPos == numPanes - 1:
60 self.moveNewPos = 0
61 if self.moveSrc == numPanes - 1:
62 self.moveSrc = 0
63 else:
64 self.moveSrc = self.moveSrc + 1
65 else:
66 self.moveNewPos = self.moveNewPos + 1
67 self.moveBack = not self.moveBack
68
69 def addPane(self):
70 self.numPanes = self.numPanes + 1
71 name = 'Pane ' + str(self.numPanes)
72 print 'Adding', name
73 pane = self.pw.add(name, min = .1, size = .25)
74 label = Tkinter.Label(pane, text = name)
75 label.pack(side = 'left', expand = 1)
76 button = Tkinter.Button(pane, text = 'Delete',
77 command = lambda s=self, n=name: s.deletePane(n))
78 button.pack(side = 'left', expand = 1)
79 self.pw.updatelayout()
80
81 def deletePane(self, name):
82 print 'Deleting', name
83 self.pw.delete(name)
84 self.pw.updatelayout()
85
86 def moveOneUp(self, name):
87 self.pw.move(name, name, -1)
88
89 def moveOneDown(self, name):
90 self.pw.move(name, name, 1)
91
92######################################################################
93
94# Create demo in root window for testing.
95if __name__ == '__main__':
96 root = Tkinter.Tk()
97 Pmw.initialise(root)
98 root.title(title)
99
100 exitButton = Tkinter.Button(root, text = 'Exit', command = root.destroy)
101 exitButton.pack(side = 'bottom')
102 widget = Demo(root)
103 root.mainloop()