2006年1月31日星期二

GUI程序的RAD和脚本化?

在我赖之混饭吃的那个项目上,这个大版本碰到一个比较棘手的问题, 那就是: 业务功能太多,虽然都不是很复杂,但总工作量却相当之多,加上项目组有2/3是新入职不到一年的同事,所以我们一直想把核心功能和业务功能分开来,后者用脚本来写。

但UI怎么办呢? 当然是要求有一些常用控件的,而且有事件响应能力,脚本中也要求能够操纵这些UI元素。基于俺个人多年的爱好,最好是能够同时编辑UI和事件处理代码(我认为没有这个功能就不能叫RAD:-)。


比较理想的是像Excel/Word那样用VBA(该项目是在Windows上用MFC开发的),但似乎这方面的例子和文档都比较少,也拿不到VBA的试用版来评估一下。

从目前看到的一些东西来看,Windows下比较接近我们的需求的是Script Builder, 它是基于Delphi的,可以直接使用ActiveX或者Delphi编写的package,支持ActiveScript(也就是说可以使用 VBScript, JScript, Python和Perl了)和DelphiScript。如果我们自己的项目是用Delphi开发的,把这个集成进去应该是件很酷的事情。(这个东西实际 是基于以前见过的Dream Scripter,只是UI表现上做得更加接近了我们“用脚本写程序”的想法而已。)

再看一些其他的GUI toolkit吧:

  • gtk有一个glade来编辑界面,然后我们可以在pygtk/python-glade或者gtk-perl/glade-perl来写响应代码,没法直接编辑界面代码(毕竟glade不是针对具体哪种语言的) P.S 刚刚在Planet Debian TW上看见yungyuc介绍一个新东东Gazpacho,说是"看起來是 Python+GTK 的 IDE",我还高兴了一阵,拉下来试试却发现只是一个改为完全用python写的一个glade而已。当然,我们可以以此为基础再来扩展。
  • wxWidgets有个wxGlade, 是模仿Glade的,不用多说。
  • Qt有Qt-Designer来编辑UI, 但这个东西也是跟glade差不多;同时它还有个Qt Script for Application,使得可以通过Qt Script(基于JavaScript)来操纵UI,不知道这两个东西是否可以接合,不过这已经很不错了。
  • SpecTcl是一个tk的界面设计器,不过它可以直接生成脚本(tcl甚至perl, python, ruby)
  • Java方面我用过JBuilder, 对于Borland的这种方式,用最近最红火的郭德纲的话说:“ 这个杭子,我做兴!”,简直" 要了亲命了"。只是因为java的烦琐,一个用JBuilder编写的略微复杂的界面,其创建UI部分的代码,基本上是不可手工维护的。至于Eclipse上UI设计器,还没玩过,不瞎说了。

说了这么些,有朋友会问,到底你们用的哪种?呵呵,记住我们的程序是用MFC写的,也没有买Qt这样的界面套件。最后我们用了用友华表的 Cell控件做模板来模拟UI,上面也可以放些按钮、下拉框什么的,虽然显得很不专业,但总算能对付过去。

想 想也知道为什么这种东西没有基于MFC的: 要在脚本中操纵UI控件(当然是说比较自然的方式,比如MainForm.Statubar1.SimpleText = "hello, world", 不是我见一些高手在tcl里面用c代码封装SendMessage来操纵的那种),这显然要求界面库有良好的RTTI,以便宿主程序能够很方便地将界面控 件对象加到脚本解释器当中去,否则脚本中怎么操纵它们。MFC有这些个嘛? ──除非完全自己手工来折腾。

补充:

1. 忘了gambas了,这个接近于Visual Basic,UI是用Qt写的。

2. mozilla的XUL应该是一个很不错的选择,而且传言很快将加入python支持,只是比较耗内存(似乎也没界面编辑器)。

2006年1月28日星期六

找出个头最大的包

dpkg-query -W --showformat='${Installed-Size} ${Package}t ${Description;50}n' | grep ^[0-9] | sort -n

rpm -qa --qf '%{NAME}t%{Size}t%{Summary}n' | sort -nk 2 | tail -20

这多可乐这个

新年来了,给大家推荐一点乐子: 《居家男人》和郭德纲的相声。


居家男人》: 一个周末的早上在某个电视频道看见两集,然后就上网狂搜。因为总共只有20集,我只好隔上好几天看一集,免得以后没有了:-)。常常一个人看得呵呵地傻笑。傅彪和伍宇娟都演得相当好。

郭德纲的相声突然间就红火了起来。普遍的观点是他真正继承了(或者说"复活了"更准确了一点)传统相声,对电视上那些相声明星发起了挑战。他认为相声在电视媒体上的发展使得“传统相声1000多段,经过"努力"就剩下200多段了”。如果时间不多,先推荐这个页面里的那个精品集

2006年1月27日星期五

巴人之谜

有些朋友问我的名字是什么意思,当然也有不少朋友直接从我的名字看出了我的家乡所在。不错,“巴蛮子”这个名字是从“巴蔓子”变化出来的。

晋人常璩在《华阳国志·巴志》中记载:“周之世际,巴国有乱,将军巴蔓子请师于楚,许以三城。楚王救巴,巴国既宁,楚使求城,巴蔓子曰: ‘藉楚之灵,克弥祸乱,诚许楚三城。将吾头往谢之,城不可得也。’乃自刎头授楚使。楚王乃以上卿之礼葬其头、巴国亦以上卿之礼葬其身。”在恩施城南门也有 巴墓。“巴墓在城南二里,昔有巴大栅王世葬于此,历年虽多,垒垒可辨。”(嘉庆《恩施县志》)

当然,也可以说是“巴之蛮人”:-)

探寻巴人之谜

2006年1月26日星期四

SmoothGNOME for Windows XP

呵呵。



User Comments
世界變了
semson | 30 一月, 2006 15:15
向來只有人在gnome上套用xp them, 現在居然有人 "亦" 向行事 ;)
and clearlooks
bamanzi | 30 四月, 2006 21:06
http://www.deviantart.com/view/17870413/ http://www.deviantart.com/deviation/18777943/

2006年1月22日星期日

Tencent不让gaim登录QQ了?

继前几天gaim登录不上MSN之后,这两天连QQ也不能登录了。不同的是,我这里切到Windows下用MSN Messenger自己也登录不上MSN,但QQ却可以。所以也不知道是不是Tencent不让登录了,因为近来似乎QQ的客户端越来越多了: