2005年10月22日

今天看到一个有趣的网站 RSSFWD ,这个网站可以让你订阅RSS,但首先你要先sign up,它要求你提供一个email帐号。然后你可以订阅一些RSS,那么这些RSS的内容会发送到你的email信箱中去。很有意思。

在最下面我还看到它是 Ruby on Rails 开发的。

为了方便大家学习使用 NewEdit 我现在开始有目的地使用 wink 软件来创建Flash的教程,所有flash教程可以去这个页面查询:

NewEditTutorial

CheckList.py 是一个有checkbox的list模块。我创建了一个使用easyapp代码框架使用CheckList.py的flash教程,大家可以看到 NewEdit 的一些简单的方便用法,及如何对easyapp代码进行扩展以完成wxPython的学习、试验工作。

how_checklist.swf 下载

有兴趣的可以看一看。希望对大家学习和使用NewEdit及相关的东西有帮助。

 有兴趣地可以看一看,主要演示了:

如何增加easyapp Wizard包,并简单地演示了使用wizard来生成easyapp代码和演示了目录浏览功能的使用

下载 how_easyapp.swf

访问地址:

http://wiki.woodpecker.org.cn/moin/NewEdit

在wizards一节中。下载easyapp.zip,解压到wizard目录下。然后进入NewEdit的wizard功能会看到有一个Easy
App Wizard的wizard项,双击执行,然后会生成一个easyapp的应用框架。

这个框架可以直接运行。你可以在这个框架基础上进行修改。这个框架已经缺省有工具条,菜单,命令行参数的处理。增加新的菜单和工具条还有事件处理可以修改resource.py和MainFrame.py程序。resource.py是修改菜单,工具条的相应的配置,同时可以指明菜单或工具对应的处理方法名。在MainFrame.py中增加相应的事件处理方法。

更详细的说明参见我以前写的blog:

[EasyGui]使用EasyGui来生成wxPython代码框架
http://blog.donews.com/limodou/archive/2005/08/17/513872.aspx
[EasyGui]快速生成菜单和工具条
http://blog.donews.com/limodou/archive/2005/08/18/515499.aspx

而使用NewEdit的wizard功能可以很方便地执行调用过程。想使用EasyApp框架的,还需要下载EasyGui的代码,并且安装。虽然NewEdit已经带了,但它只能算是内部模块,而为了更广泛地使用需要作为独立的模块进行安装。

下载页面:
http://wiki.woodpecker.org.cn/moin/EasyGui
下面地址:
http://wiki.woodpecker.org.cn/moin/EasyGui?action=AttachFile&do=get&target=EasyGui-0.1.tar.gz

2005年10月21日

经过多次的修改,自动扩展功能已经基本完成,但因为使用时间比较少,不保证有错误。

此功能目前可以在选项->文档->允许自动扩展进行开关。

另外对于acp文件的规定略有变化:

增加key的转义串<equal>为’=', <div>为’/’

对于autore不再是追加而是替换,因此:

<(\w+).*?> = !^</\1>

就改为:

<(\w+).*?> = \0!^</\1>

\0表示匹配上的全串。

下面是一个python.acp的示例,你可以按规则自行修改:

[autostring]
def = def !^():
if = if !^:
class = class !^:
from = from !^ import
__ = __!^__
else = else:\n\t
while = while !^:
for = for !^ in :

另外我已经在wiki中创建了相应的acp文件页面,有什么好的东西可以共享,访问 NewEditAcps 。

在昨天我又对自动扩展(原来我叫做自动完成)进行了完善,现在配置文件的格式如下:

[autostring]
def = def !^():
if = if !^:
class = class !^:
from = from !^ import
__ = __!^__
else = else:\n\t
< = href,a,div,table,

[autore]
<(\w+).*?> = !^</\1>

那么差别在,不再设置[common]节中的autokey了,而是通过key的最后一个字母来判断,因此可以有不同的激活键。将原来autocomplete和autoappend改为了autostring和autore。每一个节由若干个匹配项构成,格式为dict4ini的格式,形式为"key = value"。其中key为匹配项,value为要处理的值。这两个节的区别在于autostring表示索引串是一个单词,或一个字符。它会直接匹配这个单词或串的。比如你按下’f'时,如果前面为de,则自动变成

def !^():

注,!^为光标位。对于value可以为一个字符串或是一个list(符合dict4ini的格式)。如果为字符串,则匹配成功后将进行替换,如上面按下’f'后,如果前面为de,则替换’de’为’def !^():’。如果value为一个list(如上面的 < = href,a,div,table,)表示按下’<’会弹出一个选择框,让你从几个中选择一个,此时会将选中的内容追加到’<’之后,不是替换。因此对于替换你完全可以写为:

def = abc

而对于替换,已经输入的东西是不会删除的,这一点区别请注意。

对于autore则是把key认为是正则表达式,因此你可以写一个正则式来处理。如上面的:

<(\w+).*?> = !^</\1>

其中这里使用了括号来分组。对于value的处理,NewEdit会根据分组自动对形式为\N(N为数字)进行替换,并且规定\0表示匹配全串,\1表示第一个分组。那么它也采用追回的方式,而不是替换,请注意。上面的例子可以用在xml的acp文件中,可以实现当输入<img src="aa.gif",然后按下’>’时,会自动将</img>补上,并且将当标置于</img>之前。

另外,对于value中如果存在\n和\t则NewEdit会自动转换为真正的回车和制表符。困此上面的:

else = else:\n\t

就表示,如果匹配else成功,就替换成else:然后是一个回车,然后是一个tab,这样就实现的自动的换行加缩近了。

上面的一些示例本不应该属于python的语法,我只是为了方便试验,请注意。

那么这些规则是否合适还有待检验,只是希望不要对性能影响太大。

有兴趣地可以下载最新的源码试验,并且写出自已的acp文件。

2005年10月20日

 此功能基本与EditPlus中的acp一样,因为我也使用相同的acp后缀。主要功能目前有两个:

1. 当敲入某些单词时,会自动对单词进行扩展。如def后按空格,则会变成def
():的形式,然后光标停留在()之前。那么空格是一个特殊的字符,可以称为扩展符。它的定义形式为:

def = def !^():

2. 当敲入某个特殊字符时,会弹出一个列表可以选择,如:

< = href,a,tr,

这些信息都定义在一个.acp文件中。目前python支持四种语法格式:c, html, text,
Python,那么对应也支持四种acp文件,分别为c.acp, html.acp, text.acp,
python.acp。这些文件需要放在NewEdit的安装目录下。并且在运行NewEdit时可以动态地修改这些文件,不用重新启动。

一个示例的python.acp文件为:

[common]
autokey = <space>

[autocomplete]
def = def !^():
if = if !^:
class = class !^:
from = from !^ import
__ = __!^__

[autolist]
< = href,a,div,table,

autokey定义了扩展符,这里<space>为空格<tab>为制表符,其它非特殊的直接输入即可
autocomplete节定义了可扩展的关键字。!^表示扩展后光标停留的位置。也可以没有。
autolist节定义了可以弹出下拉选择框的关键符,目前功能简单只能写一个字符,以后可以考虑加入前缀。

此功能还在不停完善中,希望可以方便录入。

需要下载最新的程序才能使用。请从svn中下载。

http://cvs.woodpecker.org.cn/svn/woodpecker/newedit

 在windows下的cmd窗口中执行python程序,我一般是这样做:

1. 执行一个reg文件,内容为:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\cmd\command]
@="cmd.exe /k \"cd %L\""

它的作用是在你的资源管理器上的右键菜单上增加一个菜单,名字为cmd。那么以后你在目录栏中点击一个目录,然后点右键,再执行这个cmd菜单,就会直接进入这个目录的命令行。

2. 因为已经进入了你的python程序所在的目录,因此直接在命令行下运行:

Python yourprog.py

即可。

前提是你已经将 Python 的安装目录加到 PATH 的环境变量中。

2005年10月19日

在邮件列表中写错了人名,改了一次还是忘了改了,希望梁兄不要见怪。

 由 Liang Osmond 奉献出方便写docbook的snippets(代码片段)专门用于NewEdit,现在已经放在了wiki上大家可以下载使用了。下载地址:
http://wiki.woodpecker.org.cn/moin/NewEditSnippets?action=AttachFile&do=get&target=docbook.zip

如何安装呢?

1. 必须安装好NewEdit
2. 下载docbook.zip,解压到一个目录下
3. 选择 [工具]->[片段]->[片段分类管理...]
4. 增加一个分类,如docbook, 选增加,然后ok即可
5. 选择 [工具]->[片段]->[片段代码管理...]
6. 选中刚才增加的分类,然后选择import,选择解压后的docbook.xml文件,这时代码片段就被导入进去了
7. 打开代码片段窗口(点工具条上的侧边栏即可或[窗口]->[左侧窗口])
8. 在上面分类中选中增加的分类,在下面就可以看到对应的代码片段了
9. 打开你要编辑的文档,选择需要插入代码的位置,在左边列表中双击即可插入代码

使用docbook的同学可以试一试啊。

还做了一个Flash的教程,在这里

2005年10月18日

 采用script的扩展方式。已经放在源代码中了,可以下载。程序在scripts/makedot.py。使用它需要执行tools->scripts
manage中将这个程序加进去,然后就可以在这个菜单下运行它了。

如果运行还需要安装graphviz软件,并且能够在命令行运行dot程序。当你编辑一个dot文件时,执行这个script就可以弹出一个对话框让你输入一些命令行参数,输入完毕后将执行转换,然后显示生成后的图片。

有兴趣的可以试一试。