热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

转载一份anjuta教程

前言以前开发Linux程序时写出好的图形化用户界面比较难.在GIMP工具包(GTK)诞生之后,这件事就变得比较容易了.当DamonChaplin写出GLADE这个用于在G
前言 

以前开发 Linux 程序时写出好的图形化用户界面比较难. 在 GIMP 工具包 (GTK)诞生之后, 这件事就变得比较容易了. 当 Damon Chaplin 写出 GLADE 这个用于在 GTK 环境下生成图形化用户界面的工具后, 就更容易了. 但是 GLADE 仍然不能算是一个“集成开发环境”(如 Visual Basic 等等.), 因为程序员不能在 GLADE 的环境下手动修改 GLADE 产生的代码。现在,这一切都已成为过去: Anjuta诞生了! 

Anjuta 利用 GLADE 生成优美用户界面的能力,加之以自己强大的源程序编辑能力, 正成为一个极好的应用程序快速开发的集成环境(IDE). 以前,人们使用 GLADE 做界面,用 emacs 或 vi 等等编辑程序,再用某种终端模拟器编辑开发项目. 使用 Anjuta, 所有这些繁杂零散的任务都可以在一个统一的、集成的、自然而然的环境下完成。 这正是集成开发环境的魅力所在!. 

来吧,让我们先用 Anjuta 建立一个简单的Hello World 程序;它将把你直接带到 Anjuta 的世界。 本教程将会着重讲设计部分,也捎带讲一点有关的 GTK 代码. (欲知 GTK 的细节, 请访问 GTK 网站) 

建立一个新的应用项目 

先请打开 Anjuta. 请选择菜单项 File -> New Project. GNOME应用程序精灵 "GNOME Application Wizard" 将会出现. 尽管人们只要点击“下一个”(Next)按钮就可以,而不必去管精灵对话框上有些什么信息,这里还是希望您能读一下对话框上的每一条信息。现在,在您读完精灵第一步的对话框上的信息后,请按 Next 按钮。 

第二步非常关键。这里您需要决定您要建立的应用程序的类型。让我们选择 "Gnome Application" ,然后继续走下去。 第三步要确定应用程序的基本配置。请非常仔细地填入应用程序的配置信息。在本教程中,请输入以下信息。 



Project Name: Hello World(程序项目名) 


Author: (你的名字) 


Version: 0.1(版本号) 


Program name: hello(程序名) 


Source Directory: src(源程序子目录) 


Documents Directory: doc(说明文件目录) 


Pixmaps Directory: pixmaps(图象文件目录) 

下面第四步选择编成语言;这里我们选 C 语言。 如果您不想要,您可以去除 Gettext 功能项. 您最好为本应用程序项目选择一个图标,该图标将会出现在 GNOME 应用程序菜单中。这里我们选取 Hello World example作为项目名, 在 Group 域选取 Applications。最后点击 Next 按钮和 Finish 按钮。这时本应用程序项目就建立起来了。 

因为我们只是在建立一个例子程序,我们可以轻松前行。如果我们是在建立一个要在现实世界使用的应用项目, 那我们在填写应用程序精灵每一步的参数时可要格外小心,因为它们对您的应用程序项目来说非常重要。 

设计用户界面 

在与应用程序精灵对话结束之后, Anjuta 就开始建立您的应用程序项目的目录结构,运行参数配置脚本并建立应用项目本身。 整个创建过程的进行情况显示在 Anjuta 开发环境的下部。创建过程结束后, 屏幕的左边示出应用项目树结构。这个树结构中包含您的源程序文件,说明文件和图形文件。 

现在是启动 GLADE 并用其设计图形用户界面的时候了。请到菜单项 View->Edit Application GUIs 去运行 GLADE。 您将看到三个窗口: 1) Glade 主窗口, 2) 属性窗口, and 3) 绘图工具窗口。 

Figure 1. Glade 窗口 

因为我们并不是在创建一个真正要用的王牌应用程序, 我们不必取预置的 Gnome 设置。取一个简单的 GTK 视窗就行了。请点击 Glade 主视窗上列出的第一项 (hello_app), 然后按 Del 删除键。 

现在到工具视窗(Palette), 点击第一个图标。这时一个空白的 GtkWindow 建起来了。这将是我们的应用程序的主视窗 window1。再到属性视窗(Properties),敲入标题“Hello World!”. 现在再到工具视窗上选取一个垂直包容框(Vertical Box Container)放到主视窗 window1 上。列数取为 2. 

Figure 2. Palette icons 

这样,主视窗被切分为同等大小的上下两部分. 同样地,我们再用水平包容框将这两部分各自再切分为左右两部分。 这时主视窗应该看起来这个样子: 

Figure 3. 用户界面 

现在再从工具视窗中取出两个按钮,分别加到主视窗下面的两个框中。再把这两个按钮的名字和标签属性设置如下: 

左按钮: 
名字: BT_OK 

标签: OK 

右按钮: 
名字: BT_EXIT 

标签: Exit 


在视窗的上半部,左边再加上一个标签控件;在上半部右边加上一个输入框 Entry 控件。该输入框的名字取为 ENTRY。将上述标签控件的标签属性置为 'What's your name, sir?'. 

现在在属性视窗的属性档(Signals tab)上把两个按钮都和 Clicked事件连接起来. 使用GLADE预设的反向调用函数名. 请不要忘记点击 Add 按钮. 这种常见的错误会导致产生空白的 callbacks.c 文件. 在源文件callbacks.c上,我们将会通过 Anjuta界面加入 源代码. 

现在,主视窗看起来似乎不那么漂亮。您可以试试改变视窗的宽度和高度,以及试试改改水平和垂直包容框的几个属性, 看看能不能让视窗好看些。(注意:您可到菜单View,选择控件树,然后选择控件。 ) 下面是一些属性的设置: 



将下面的水平包容框的属性 Homogeneous 置为Yes; 


将属性视窗的定位档的按钮的属性 Fill 置为 Yes; 


将主视窗 window1 的属性 Grow 置为No. 

把这些属性改来改去后,我的主视窗的样子如下: 

Figure 4. 最终的界面 

设计好界面后,在Glade主视窗上点击“存盘”按钮,然后再点击“创建”按钮. 这就按您新设计的界面更新了您的 应用项目的src目录下的源文件 interface.c。现在,让我们选菜单 File -> Exit,回到 Anjuta 用户界面下。开始编程啦! 

编辑程序 

现在回到 Anjuta 环境中来,您应该可以在屏幕左边的项目源程序列表中看到 callbacks.c. 双点击打开该程序. 这样我们在Anjuta集成开发环境的左边就可以编辑该程序了。 

有时一事物如果是有色彩的话就会变得更容易理解、更有趣。Anjuta 的“语法强调色”功能 (在“Format”菜单上)就属于这种情况. Anjuta还有很多很多有用的功能,您可以慢慢品玩。 也许现在花点时间熟悉熟悉这个集成环境是很有好处的。 

现在回到 callbacks.c 文件,我们看到两个反向调用函数: on_BT_OK_clicked 和on_BT_EXIT_clicked. 让我们在第二个函数中加入一个函数调用:gtk_main_quit()。 这样,该函数变成: 

void 
on_BT_EXIT_clicked (GtkButton *button, gpointer user_data) 

gtk_main_quit(); 



这个函数调用的目的是当用户点击退出按钮时,整个应用程序会结束。 与此相仿,我们在 on_BT_OK_clicked函数中加入下列函数调用: 

void 
on_BT_OK_clicked (GtkButton *button, gpointer user_data) 


GtkWidget *entry = lookup_widget (GTK_WIDGET(button), "ENTRY"); 
GtkWidget *msgbox = gnome_app_new("Hello World", "Hello World"); 
gchar *text1, *text2; 

text1 = gtk_entry_get_text (GTK_ENTRY(entry)); 
text2 = strcat ("Hello, ", text1); 
gnome_app_message (GNOME_APP(msgbox), text2); 



现在我们将源程序文件 callbacks.c 存盘,然后关闭(可用菜单 File 上的选项或用工具条上的图标)。 

生成目标代码,执行,以及发行 

现在到了测试您程序的时候了;这一定很有趣。先选择菜单项 Build->Build All。 这时Anjuta就开始编译和链接项目里的源程序main.c, interface.c, support.c and callbacks.c, 然后将产生的可执行文件hello放到 src 目录。编译器一般会用 gcc。 

如果您幸运, 编译过程没有任何错误信息的话,请选菜单项 Build->Execute 于是Anjuta 开辟一个终端视窗,并在其上运行您的应用程序 Hello World! 请在输入框上输入您的名字,然后点击 OK 按钮. 希望这时您的应用程序回您一个问候:Hello ... 您可再敲入一个问候词,然后点退出按钮 Exit,看看程序能否正常退出。如果正常退出,那真好! 您的辛勤劳动终于有了结果! 

这时您可把您的应用程序安装到视窗系统中去:选菜单项 Build->Install 尽管您现在也许并不想为您的应用程序创建一个tarball文件, 但也许以后您要发行软件时就需要这样做了。 在发行应用程序前,务必要填好 TODO,ChangeLog, INSTALL 和 README 这几个文件. 要创建一个应用程序的发行版,请点击 Build->Build Distribution 创建过程也许会持续几秒钟,最终会在 /home/(username)/Projects/hello/ 目录下建立一个文件 hello-0.1.tar.gz。 现在您可以拿着这个证明您能力的可执行文件到处去炫耀炫耀了! 

结论 

尽管本教程从功能来说相当简单,我还是希望它能够让Anjuta的初学者 对这个集成开发环境的使用有点感性认识。至于我,我年龄16岁, 现在就读于Allahabad, India的一个高中. 您若有什么建议,可以以下列地址和我联系:。 若有什么问题需要澄清,请将问题写给 Anjuta电邮表 (您可以到anjuta.sourceforge.net去加入这些电邮表). 继续品玩 Anjuta吧,祝您好运!(翻译者:江毅,2003/7/22,jiangyi@hanwj.com)

请使用以下网址来引用本篇文章:

http://forum.ubuntu.org.cn/trackback.php?e=3172
推荐阅读
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • C# WPF自定义按钮的方法
    本文介绍了在C# WPF中实现自定义按钮的方法,包括使用图片作为按钮背景、自定义鼠标进入效果、自定义按压效果和自定义禁用效果。通过创建CustomButton.cs类和ButtonStyles.xaml资源文件,设计按钮的Style并添加所需的依赖属性,可以实现自定义按钮的效果。示例代码在ButtonStyles.xaml中给出。 ... [详细]
  • 解决github访问慢的问题的方法集锦
    本文总结了国内用户在访问github网站时可能遇到的加载慢的问题,并提供了解决方法,其中包括修改hosts文件来加速访问。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • Android获取app应用程序大小的方法
    Android获取app应用程序大小的方法-Android对这种方法进行了封装,我们没有权限去调用这个方法,所以我们只能通过AIDL,然后利用Java的反射机制去调用系统级的方法。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 本文讨论了在使用Git进行版本控制时,如何提供类似CVS中自动增加版本号的功能。作者介绍了Git中的其他版本表示方式,如git describe命令,并提供了使用这些表示方式来确定文件更新情况的示例。此外,文章还介绍了启用$Id:$功能的方法,并讨论了一些开发者在使用Git时的需求和使用场景。 ... [详细]
author-avatar
xXxHolicxXx900
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有