本项目最早的前身应该是 FlyEdit (取意为飞翔之意,是想实现自由扩展)。最早也是使用wxPython,但那时wxPython的wxStyledTextCtrl
组件(是Scintilla编辑器包--一个强大的编辑器--的wxPython的封装)还不完善,当使用多文档时(那时想使用多文档来实现)会出现问题,
因此就放弃了wxPython。然后转向了Tcl/Tkinter(另一种跨平台的图型包,但控制受限,中文处理有些麻烦),已经实现了Mixin机制,还可以
允许用户编写自已的插件。它的基础是从Python IDLE中转来的,其中语法高亮等功能是使用Python来实现的,而不是Tcl/Tkinter本身所有的
功能,因此执行效率上很慢。而且许多编辑器的功能都不具备,实现起来也很麻烦。再加上后来在Linux上测试了一下,程序运行出错,所以也
放弃了。
就在2004年4月份,我在freshmeat.net上发现了DrPython,它是一个编辑器,使用wxPython 2.4.2.4(现在已经升级到2.5.1了),实现了
多文档(使用wxNotebook和wxStyledTextCtrl组件),而且功能很不错,于是我提出了一些改进了建议,并且后来成为其中一名开发者,并为
其修改并实现了一些功能。但随着软件的庞大,修改也变得越来越困难。因为一个新的功能的实现可能要修改菜单、参数对话框、事件处理代码
等等地方,但这些地方往往并不是在一起的,而是分散开的,这样改写程序也要同时改好几个地方,很麻烦。而且另一个人不会很清楚地知道你
到底改了什么地方,有可能要比较好几个程序才知道改了什么地方。但如果你同时修改了好几个功能,这样比较出来的结果可能是好几个功能混
在一起,查看改动很不方便。
在经过一段时间对DrPython的修改和学习,我感到wxPython现在已经很稳定(Borland也说想要在他的C++ Builder X中使用wxWindow作为图形
开发开台,这样看来wxWindow还是很有前途的),因此想重新实现一种灵活方便的编程框架,特别是要用到Python强大的动态性的特征,而且许
多新的东西都可以在开发中应用,可以学到许多wxPython的知识。因此我开始了新的项目开发。为了与FlyEdit相区别,我叫它为NewEdit,意
为“新生的编辑器”。
NewEdit项目于2004年4月22正式开始编码,在此前经过仔细的框架考虑。现在它使用两种基本结构:Mixin和Plugin。关于两者区别在我的blog
中仔细进行了区分。简单地说,这两者都是对类进行扩充的机制,Mixin是用来增加新的成员变量和成员方法,而Plugin是对程序中设定的特别
调用点进行处理的插件(有点象回调函数或伪事件)。这样,我首先实现一个基于可用的类,当实现了新的功能时,使用Mixin机制将新功能加入到
类中。在类需要特殊处理的地方,预设插入点(不需要知道可能调用什么东西,只需要定义传入的参数接口即可),然后需要在插入点插入新的代码
时,使用Plugin机制来实现。因为程序中可能不止一个类需要进行扩充,可能是很多的类,因此在Mixin和Plugin的机制中,还加入了接口识别功
能,也就是说:允许进行Mixin和Plugin的类要从统一的Mixin类进行派生,并且定义唯一的Mixin名称,用于区分不同的Mixin类。新增的Mixin或
Plugin需要使用一个插入函数将自身插入到相应的类中,需要提供要插入的Mixin名称。这样允许Mixin的类和可以Mixin以类中的内容就可以对应
起来了。(更详细的内容请参阅《技术手册》)
Version 1.0 发布于2004/05/27
Version 2.0 发布于2004/06/20
Version 2.1 发布于2004/06/28
Version 2.2 发布于2004/07/07
Version 2.3 发布于2004/07/20
Version 2.4 发布于2004/07/28
Version 2.5 发布于2004/08/19
Version 2.6 发布于2004/08/26
Version 2.6.1 发布于2004/09/10
Version 2.7 发布于2004/09/20
Version 2.9 发布于2004/10/08
Version 2.9 发布于2005/07/24