Adding the beginnings of a Class browser.  Incomplete, yet.
diff --git a/Tools/idle/ClassBrowser.py b/Tools/idle/ClassBrowser.py
new file mode 100644
index 0000000..289d6f6
--- /dev/null
+++ b/Tools/idle/ClassBrowser.py
@@ -0,0 +1,70 @@
+from Tkinter import *
+import string
+import pyclbr
+
+class ClassBrowser:
+    
+    def __init__(self, root, name):
+        try:
+            dict = pyclbr.readmodule(name)
+        except ImportError, msg:
+            tkMessageBox.showerror("Import error", str(msg), parent=root)
+            return
+        if not dict:
+            tkMessageBox.showerror("Nothing to browse",
+                "Module %s defines no classes" % name, parent=root)
+            return
+        self.root = root
+        self.top = top = Toplevel(root)
+        # Create help label
+        self.helplabel = Label(top,
+            text="Classes in module %s" % name,
+            borderwidth=2, relief="groove")
+        self.helplabel.pack(fill="x")
+        # Create top frame, with scrollbar and listbox
+        self.topframe = Frame(top)
+        self.topframe.pack(fill="both", expand=1)
+        self.vbar = Scrollbar(self.topframe, name="vbar")
+        self.vbar.pack(side="right", fill="y")
+        self.listbox = Listbox(self.topframe, exportselection=0, 
+                               takefocus=1, width=60)
+        self.listbox.pack(expand=1, fill="both")
+        # Tie listbox and scrollbar together
+        self.vbar["command"] = self.listbox.yview
+        self.listbox["yscrollcommand"] = self.vbar.set
+        # Bind events to the list box
+        self.listbox.bind("<ButtonRelease-1>", self.click_event)
+	self.listbox.bind("<Double-ButtonRelease-1>", self.double_click_event)
+        ##self.listbox.bind("<ButtonPress-3>", self.popup_event)
+        self.listbox.bind("<Key-Up>", self.up_event)
+        self.listbox.bind("<Key-Down>", self.down_event)
+        # Load the classes
+        self.loadclasses(dict)
+        
+    def loadclasses(self, dict):
+        items = dict.items()
+        items.sort()
+        l = self.listbox
+        for key, value in items:
+            s = key
+            if value.super:
+                super = []
+                for sup in value.super:
+                    name = sup.name
+                    if sup.module != value.module:
+                        name = "%s.%s" % (sup.module, name)
+                    super.append(name)
+                s = s + "(%s)" % string.join(super, ", ")
+            l.insert(END, s)
+
+    def click_event(self, event):
+        pass
+    
+    def double_click_event(self, event):
+        pass
+    
+    def up_event(self, event):
+        pass
+    
+    def down_event(self, event):
+        pass