summaryrefslogtreecommitdiffstats
path: root/Tools/idle/MultiScrolledLists.py
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/idle/MultiScrolledLists.py')
-rw-r--r--Tools/idle/MultiScrolledLists.py137
1 files changed, 0 insertions, 137 deletions
diff --git a/Tools/idle/MultiScrolledLists.py b/Tools/idle/MultiScrolledLists.py
deleted file mode 100644
index 6398b86..0000000
--- a/Tools/idle/MultiScrolledLists.py
+++ /dev/null
@@ -1,137 +0,0 @@
-# One or more ScrolledLists with HSeparators between them.
-# There is a hierarchical relationship between them:
-# the right list displays the substructure of the selected item
-# in the left list.
-
-from Tkinter import *
-from WindowList import ListedToplevel
-from Separator import HSeparator
-from ScrolledList import ScrolledList
-
-class MultiScrolledLists:
-
- def __init__(self, root, nlists=2):
- assert nlists >= 1
- self.root = root
- self.nlists = nlists
- self.path = []
- # create top
- self.top = top = ListedToplevel(root)
- top.protocol("WM_DELETE_WINDOW", self.close)
- top.bind("<Escape>", self.close)
- self.settitle()
- # create frames and separators in between
- self.frames = []
- self.separators = []
- last = top
- for i in range(nlists-1):
- sepa = HSeparator(last)
- self.separators.append(sepa)
- frame, last = sepa.parts()
- self.frames.append(frame)
- self.frames.append(last)
- # create labels and lists
- self.labels = []
- self.lists = []
- for i in range(nlists):
- frame = self.frames[i]
- label = Label(frame, text=self.subtitle(i),
- relief="groove", borderwidth=2)
- label.pack(fill="x")
- self.labels.append(label)
- list = ScrolledList(frame, width=self.width(i),
- height=self.height(i))
- self.lists.append(list)
- list.on_select = \
- lambda index, i=i, self=self: self.on_select(index, i)
- list.on_double = \
- lambda index, i=i, self=self: self.on_double(index, i)
- # fill leftmost list (rest get filled on demand)
- self.fill(0)
- # XXX one after_idle isn't enough; two are...
- top.after_idle(self.call_pack_propagate_1)
-
- def call_pack_propagate_1(self):
- self.top.after_idle(self.call_pack_propagate)
-
- def call_pack_propagate(self):
- for frame in self.frames:
- frame.pack_propagate(0)
-
- def close(self, event=None):
- self.top.destroy()
-
- def settitle(self):
- short = self.shorttitle()
- long = self.longtitle()
- if short and long:
- title = short + " - " + long
- elif short:
- title = short
- elif long:
- title = long
- else:
- title = "Untitled"
- icon = short or long or title
- self.top.wm_title(title)
- self.top.wm_iconname(icon)
-
- def longtitle(self):
- # override this
- return "Multi Scrolled Lists"
-
- def shorttitle(self):
- # override this
- return None
-
- def width(self, i):
- # override this
- return 20
-
- def height(self, i):
- # override this
- return 10
-
- def subtitle(self, i):
- # override this
- return "Column %d" % i
-
- def fill(self, i):
- for k in range(i, self.nlists):
- self.lists[k].clear()
- self.labels[k].configure(text=self.subtitle(k))
- list = self.lists[i]
- l = self.items(i)
- for s in l:
- list.append(s)
-
- def on_select(self, index, i):
- item = self.lists[i].get(index)
- del self.path[i:]
- self.path.append(item)
- if i+1 < self.nlists:
- self.fill(i+1)
-
- def items(self, i):
- # override this
- l = []
- for k in range(10):
- s = str(k)
- if i > 0:
- s = self.path[i-1] + "." + s
- l.append(s)
- return l
-
- def on_double(self, index, i):
- pass
-
-
-def main():
- root = Tk()
- quit = Button(root, text="Exit", command=root.destroy)
- quit.pack()
- MultiScrolledLists(root, 4)
- root.mainloop()
-
-if __name__ == "__main__":
- main()