首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
MCU 单片机技术
»
X86
» 用 Guile 来为 GTK+ 应用添加扩展语言 Scheme(1)
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
用 Guile 来为 GTK+ 应用添加扩展语言 Scheme(1)
发短消息
加为好友
look_w
当前离线
UID
1066743
帖子
8283
精华
0
积分
4142
阅读权限
90
在线时间
233 小时
注册时间
2017-6-23
最后登录
2019-5-18
论坛元老
UID
1066743
1
#
打印
字体大小:
t
T
look_w
发表于 2018-5-18 20:13
|
只看该作者
用 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文件)。
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议