Adding the beginnings of a Class browser. Incomplete, yet.
This commit is contained in:
parent
b341888971
commit
439c467a0c
|
@ -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
|
Loading…
Reference in New Issue