Dusty,
You might think about signing up for the pyxides group
(http://groups.google.com/group/pyxides) -- it's a low traffic list
dealing with python based editors and trying to promote collaboration
among us clan of wxPython-based editor writers. (I'm the author of
Peppy.)
Anyway, pyxides sometimes just needs a little spark to come up with
some really cool stuff. Earlier in the year, Stani (of SPE) came up
with a "fold explorer", a way of automatically generate a list of
functions/methods using the STC's code folding code.
So, I recommend joining the pyxides list.
I came across Peppy about a month ago when I started adding
wx.aui. I considered joining development at the time, but it seems a
bit "overengineered" for my taste).
Probably an indictment of my documentation.
I can understand why
you might think that, especially when the website focuses on the
software development process from the project management point of
view. I need to rewrite the focus from a development point of view.
Developer-level docs haven't been a priority for me as my framework is
still evolving, but perhaps that was a bad choice on my part.
And, also, I'm trying to write XEmacs in python.
It is designed to
be much more flexible than a normal text editor, with major modes that
don't necessarily have to be STC instances. For example, you can edit
a file using the STC, switch a hex edit view of the same file and edit
a few bytes in hex, and switch back. Or, view a png file and in
another view look at the hex bytes.
So, my goals for peppy's framework were different than yours, but that
doesn't mean there won't be collaboration among all of us. Check out
PyPE and SPE for more code ideas. I've borrowed a bunch of code from
them.
I like your EventBus idea. My current work in peppy has been with
wx.lib.pubsub and message passing, and the idea of trying to get
messages to particular frames and STC components without keeping track
of a list of listeners myself.
Peter answered this -- you can split the view using the wx.AUI widget.
For multiple frames, the only option right now is to have two
instances running, with no communication between them. Setting up
something like jEdit's view server is on my list of "todo someday",
but hasn't been high priority yet.
From pain of experience, I'd recommend thinking about multiple
top-level windows and multiple views now, if that support is of any
interest to you somewhere down the road. I spent a lot of time
working with other editors before deciding to write my own framework
because I couldn't get around global variables or other assumptions
that made hacking multiple frames into other editors too difficult.
For example, view in your code seems to be tied to one wx.Frame
instance, so that means that a plugin can only be tied to a single
top-level window? Maybe I'm not reading your code correctly...
Also, you might be interested in the setuptools plugin system for
user-written plugins. It is becoming the de-facto standard in plugins
by defining a hooks for plugin entry points. I finally found a nice
tutorial that explained the concepts:
Python plugins egg cooking mini-howto - Base-Art, because I found the setuptools
documentation PkgResources - The PEAK Developers' Center not
to be useful until I knew what was going on.
Anyway, welcome to the club of wxPython editor writers. There are a
few of us out here.
And, I'm finally back on line after a few
months off getting married and moving across country. Most of the
editor writers are on this mailing list; Josiah Carlson (PyPE) is
particularly active.
Rob