]> SALOME platform Git repositories - tools/eficas.git/blob - Pmw/Pmw_1_2/demos/PanedWidget.py
Salome HOME
Modif V6_4_°
[tools/eficas.git] / Pmw / Pmw_1_2 / demos / PanedWidget.py
1 title = 'Pmw.PanedWidget 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
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.
95 if __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()