首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

用 Guile 来为 GTK+ 应用添加扩展语言 Scheme(1)

用 Guile 来为 GTK+ 应用添加扩展语言 Scheme(1)

简介我们这里说的扩展语言又称嵌入式脚本语言,在开源社区,有一种工具可以为你开发的应用添加这种嵌入式脚本语言功能,这种工具就是扩展语言开发库,我们只要在应用中连接这一扩展语言开发库,经过简单的处理,就可以为我们的应用增加嵌入式脚本语言功能,也就是说可以为我们的应用编写脚本语言代码,达到相应的功能。本文用到的与这些相关的开发工具有三种:Scheme 语言、Guile 和 GTK+。
Scheme 语言是一种函数编程语言,是古老的 LISP 语言的分支,它的特点是既简单易用,又富有灵活的技巧,同时它还具有挑战性,因为它具有目前许多新生的编程语言还不具备的特色。目前 Scheme 语言已经成为初学编程者首选的语言,也是值得有经验的编程者去研究的语言。它也是扩展语言较好的选择之一。
Guile是GNU工程的扩展语言库(Project GNU's extension language library),它是一个Scheme语言的实现版本,打包成为一个库后,你可以把这个库链接到你的应用中,这样你就为你的应用增加了一种扩展语言,这种语言就是Scheme语言。关于Guile的编译安装,见《Scheme语言概要(上)》。
GTK+是一种跨平台的图形界面开发工具,采用C语言来开发,在Linux平台,它是基于XWindow的GNOME桌面环境的基础开发工具,应用它可以在轻松的开发出图形界面应用程序来,本文就选用它来做GUI开发工具。
关于Scheme语言、Guile和GTK+的更多信息见参考资料。
目标我们的目标很简单,就是用GTK+开发一个简单的应用,结合Guile来为这个简单的应用增添一种扩展语言--Scheme语言,从而使我们的这个简单应用具有灵活的扩展功能。
为什么加扩展语言?加什么样的扩展语言?加扩展语言能达到什么样的功能和效果?如何才能加上扩展语言?扩展语言会让您的简单应用的功能并不简单。
像编辑软件、图像处理软件、游戏、专家系统、办公套件等大型工具或软件开发项目拥有自己的扩展语言,扩展语言使它们多了一双无形的翅膀,灵活使它们更强大。
目前在不同的应用领域有三个代表性的工具软件都不约而同的具有这样的扩展语言,首先是编辑工具软件GNUEmacs,它的扩展语言称为Elisp;其次是著名的CAD工具软件AutoCAD,它的扩展语言称为AutoLisp;最后是开源的图像处理工具软件GIMP,它的扩展语言称为Script-Fu,用它编写的工具可以在GIMP中轻松创建下面这样有特色的图像。这些工具软件的扩展语言和Scheme语言一样,都是LISP语言的变体。而Guile做为GNU扩展语言库则正好为我们提供了达到这一功能的有效途径。
(这是用GIMP1.3.x做的图像,可以在菜单中选择相应的创建功能,只需输入一串字符和更改几个参数就可以轻松创建,实现这些功能的脚本语言称为Script-Fu,它们的代码可以在/usr/share/gimp/scripts目录中找到,是Scheme语言代码)
我们做一个绘图软件,简单得很,以至于我们只能看到画板,而不能用鼠标来画图,(因为实现鼠标绘图要加很长一段令人费解的C代码)。用什么画图呢?用扩展语言代码。经过一翻简单的处理,我们可以用扩展语言代码在绘图板上画点、线、矩形、弧线、圆形,添充矩形、扇形、圆,更改颜色、输出字符串等功能,要画什么样的图形,只需要编写代码就可以了。
扩展结构原理怎样才能为应用加上扩展语言呢?首先得做出绘图板来,我们用GTK+来做应用程序的主体,GTK+中的GtkDrawarea控件的主要用途就是绘图的,用它可以轻松的做一个绘图板。画板是做出来了,怎样画图呢?在GTK+的底层绘图工具GDK中提供了一系列原始的基本绘图函数gdk_draw_*(见下面介绍),用这些函数就可以在画板的GdkWindow上绘图了。如果用这些函数来编码绘图是一件非常繁琐的事情;事实上,应用程序加上Guile库后,只要将这些绘图函数转换为Scheme语言过程,就可以用Scheme语言代码来轻松绘图了。
如果您还没弄懂的话,看一看下面我们这个应用的结构原理图:
从图中可以看出,我们系统中必需安装有GTK+2.0开发库和Guile1.6.4开发库,否则我们将无法继续下面的构建应用和测试。
下面是我们应用执行时的效果图(在Fedora Core 2.0下运行),白色有图形的地方就是GtkDrawarea控件,即绘图板。在标明绘图文件的单行输入框里输入绘图文件名(如draw.scm),然后点击执行按钮,即在绘图板上绘制您想要的图形。在标明图像的单行输入框里输入图像名(默认为test),然后点击保存按钮,即在将绘图板上的图像以PNG格式保存在当前目录中(默认即保存为test.png文件)。
返回列表