13 self
.window
= W
.Window((210, 1000), "Module Browser", minsize
= (210, 160), maxsize
= (340, 20000))
15 self
.window
.openbutton
= W
.Button((10, 8, 90, 16), "Open", self
.openbuttonhit
)
16 self
.window
.browsebutton
= W
.Button((110, 8, 90, 16), "Browse\xc9", self
.browsebuttonhit
)
17 self
.window
.reloadbutton
= W
.Button((10, 32, 90, 16), "Reload", self
.reloadbuttonhit
)
18 self
.window
.openotherbutton
= W
.Button((110, 32, 90, 16), "Open other\xc9", self
.openother
)
20 self
.window
.openbutton
.enable(0)
21 self
.window
.reloadbutton
.enable(0)
22 self
.window
.browsebutton
.enable(0)
23 self
.window
.setdefaultbutton(self
.window
.browsebutton
)
25 self
.window
.bind("cmdr", self
.window
.reloadbutton
.push
)
26 self
.window
.bind("cmdb", self
.window
.browsebutton
.push
)
28 self
.window
.bind("<activate>", self
.activate
)
29 self
.window
.bind("<close>", self
.close
)
31 self
.window
.list = W
.List((-1, 56, 1, -14), [], self
.listhit
)
40 def activate(self
, onoff
):
44 def listhit(self
, isdbl
):
47 if self
.window
._defaultbutton
:
48 self
.window
._defaultbutton
.push()
50 def checkbuttons(self
):
51 sel
= self
.window
.list.getselection()
54 if self
.editmodules
[i
]:
55 self
.window
.openbutton
.enable(1)
56 self
.window
.reloadbutton
.enable(1)
57 self
.window
.setdefaultbutton(self
.window
.openbutton
)
60 self
.window
.openbutton
.enable(0)
61 self
.window
.reloadbutton
.enable(0)
62 self
.window
.setdefaultbutton(self
.window
.browsebutton
)
63 self
.window
.browsebutton
.enable(1)
65 #self.window.setdefaultbutton(self.window.browsebutton)
66 self
.window
.openbutton
.enable(0)
67 self
.window
.reloadbutton
.enable(0)
68 self
.window
.browsebutton
.enable(0)
70 def openbuttonhit(self
):
72 sel
= self
.window
.list.getselection()
75 modname
= self
.window
.list[i
]
77 self
.openscript(sys
.modules
[modname
].__file
__, modname
)
80 file, path
, description
= imp
.find_module(modname
)
83 W
.Message("Can't find file for module '%s'."
86 self
.openscript(path
, modname
)
88 def openscript(self
, path
, modname
):
90 if path
[-3:] == '.py':
91 W
.getapplication().openscript(path
, modname
=modname
)
92 elif path
[-4:] in ['.pyc', '.pyo']:
93 W
.getapplication().openscript(path
[:-1], modname
=modname
)
95 W
.Message("Can't edit '%s'; it might be a shared library or a .pyc file."
102 modname
= EasyDialogs
.AskString("Open module:")
105 file, path
, description
= imp
.find_module(modname
)
107 if modname
in sys
.builtin_module_names
:
108 alerttext
= "'%s' is a builtin module, which you can't edit." % modname
110 alerttext
= "No module named '%s'." % modname
111 raise W
.AlertError
, alerttext
112 self
.openscript(path
, modname
)
114 def reloadbuttonhit(self
):
115 sel
= self
.window
.list.getselection()
118 mname
= self
.window
.list[i
]
119 m
= sys
.modules
[mname
]
120 # Set the __name__ attribute of the module to its real name.
121 # reload() complains if it's __main__, which is true
122 # when it recently has been run as a script with "Run as __main__"
127 def browsebuttonhit(self
):
128 sel
= self
.window
.list.getselection()
133 PyBrowser
.Browser(sys
.modules
[self
.window
.list[i
]])
136 editmodules
, modules
= getmoduleslist()
137 if modules
== self
.modules
:
139 self
.editmodules
, self
.modules
= editmodules
, modules
140 self
.window
.list.setdrawingmode(0)
141 sel
= self
.window
.list.getselectedobjects()
142 self
.window
.list.set(self
.modules
)
143 self
.window
.list.setselectedobjects(sel
)
144 self
.window
.list.setdrawingmode(1)
147 def getmoduleslist():
148 import PyBrowser
# for caselesssort function
149 moduleitems
= sys
.modules
.items()
150 moduleitems
= filter(lambda (name
, module
): module
is not None, moduleitems
)
151 modules
= map(lambda (name
, module
): name
, moduleitems
)
152 modules
= PyBrowser
.caselesssort(modules
)
154 sysmodules
= sys
.modules
155 modulesappend
= editmodules
.append
157 module
= sysmodules
[m
]
159 if sysmodules
[m
].__file
__[-3:] == '.py' or \
160 sysmodules
[m
].__file
__[-4:] in ['.pyc', '.pyo']:
164 except AttributeError:
166 return editmodules
, modules
174 if _browser
is not None:
175 _browser
.window
.select()
177 _browser
= _modulebrowser()