13 self
.window
= W
.Window((194, 1000), "Module Browser", minsize
= (194, 160), maxsize
= (340, 20000))
15 #self.window.bevelbox = W.BevelBox((0, 0, 0, 56))
16 self
.window
.openbutton
= W
.Button((10, 8, 80, 16), "Open", self
.openbuttonhit
)
17 self
.window
.browsebutton
= W
.Button((100, 8, 80, 16), "BrowseŠ", self
.browsebuttonhit
)
18 self
.window
.reloadbutton
= W
.Button((10, 32, 80, 16), "Reload", self
.reloadbuttonhit
)
19 self
.window
.openotherbutton
= W
.Button((100, 32, 80, 16), "Open otherŠ", self
.openother
)
21 self
.window
.openbutton
.enable(0)
22 self
.window
.reloadbutton
.enable(0)
23 self
.window
.browsebutton
.enable(0)
24 self
.window
.setdefaultbutton(self
.window
.browsebutton
)
26 self
.window
.bind("cmdr", self
.window
.reloadbutton
.push
)
27 self
.window
.bind("cmdb", self
.window
.browsebutton
.push
)
29 self
.window
.bind("<activate>", self
.activate
)
30 self
.window
.bind("<close>", self
.close
)
32 self
.window
.list = W
.List((-1, 56, 1, -14), [], self
.listhit
)
41 def activate(self
, onoff
):
45 def listhit(self
, isdbl
):
48 if self
.window
._defaultbutton
:
49 self
.window
._defaultbutton
.push()
51 def checkbuttons(self
):
52 sel
= self
.window
.list.getselection()
55 if self
.editmodules
[i
]:
56 self
.window
.openbutton
.enable(1)
57 self
.window
.reloadbutton
.enable(1)
58 self
.window
.setdefaultbutton(self
.window
.openbutton
)
61 self
.window
.openbutton
.enable(0)
62 self
.window
.reloadbutton
.enable(0)
63 self
.window
.setdefaultbutton(self
.window
.browsebutton
)
64 self
.window
.browsebutton
.enable(1)
66 #self.window.setdefaultbutton(self.window.browsebutton)
67 self
.window
.openbutton
.enable(0)
68 self
.window
.reloadbutton
.enable(0)
69 self
.window
.browsebutton
.enable(0)
71 def openbuttonhit(self
):
73 sel
= self
.window
.list.getselection()
76 modname
= self
.window
.list[i
]
78 self
.openscript(sys
.modules
[modname
].__file
__, modname
)
81 file, path
, description
= imp
.find_module(modname
)
84 W
.Message("Can¹t find file for module ³%s²."
87 self
.openscript(path
, modname
)
89 def openscript(self
, path
, modname
):
91 if path
[-3:] == '.py':
92 W
.getapplication().openscript(path
, modname
=modname
)
93 elif path
[-4:] in ['.pyc', '.pyo']:
94 W
.getapplication().openscript(path
[:-1], modname
=modname
)
96 W
.Message("Can¹t edit ³%s²; it might be a shared library or a .pyc file."
103 modname
= EasyDialogs
.AskString("Open module:")
106 file, path
, description
= imp
.find_module(modname
)
108 if modname
in sys
.builtin_module_names
:
109 alerttext
= "³%s² is a builtin module, which you can¹t edit." % modname
111 alerttext
= "No module named ³%s²." % modname
112 raise W
.AlertError
, alerttext
113 self
.openscript(path
, modname
)
115 def reloadbuttonhit(self
):
116 sel
= self
.window
.list.getselection()
119 mname
= self
.window
.list[i
]
120 m
= sys
.modules
[mname
]
121 # Set the __name__ attribute of the module to its real name.
122 # reload() complains if it's __main__, which is true
123 # when it recently has been run as a script with "Run as __main__"
128 def browsebuttonhit(self
):
129 sel
= self
.window
.list.getselection()
134 PyBrowser
.Browser(sys
.modules
[self
.window
.list[i
]])
137 editmodules
, modules
= getmoduleslist()
138 if modules
== self
.modules
:
140 self
.editmodules
, self
.modules
= editmodules
, modules
141 self
.window
.list.setdrawingmode(0)
142 sel
= self
.window
.list.getselectedobjects()
143 self
.window
.list.set(self
.modules
)
144 self
.window
.list.setselectedobjects(sel
)
145 self
.window
.list.setdrawingmode(1)
148 def getmoduleslist():
149 import PyBrowser
# for caselesssort function
150 moduleitems
= sys
.modules
.items()
151 moduleitems
= filter(lambda (name
, module
): module
is not None, moduleitems
)
152 modules
= map(lambda (name
, module
): name
, moduleitems
)
153 modules
= PyBrowser
.caselesssort(modules
)
155 sysmodules
= sys
.modules
156 modulesappend
= editmodules
.append
158 module
= sysmodules
[m
]
160 if sysmodules
[m
].__file
__[-3:] == '.py' or \
161 sysmodules
[m
].__file
__[-4:] in ['.pyc', '.pyo']:
165 except AttributeError:
167 return editmodules
, modules
175 if _browser
is not None:
176 _browser
.window
.select()
178 _browser
= _modulebrowser()