EDN首页   博客首页

最新日志

发表于:2008-10-6 0:07:05
标签:无标签

1

用 Glade 设计GTK+的界面

什么是 Glade?

  Glade 是针对 GTK+ 工具箱与 GNOME 桌面开发环境的快速图形界面开发工具。用 Glade 设计的用户接口以 XML 的文件形式保存,然后根据需要由程序通过 libglade 库文件来动态加载。因为使用了 libglade 库,Glade XML 文件能够被 C,C++,Java,Perl,Python,C# 等等语言所支持。

  目前的版本 Glade-3 是对原先 Glade 代码的完全重写,并且去除了代码生成功能。这样据说是为了达到界面与编程分离的目的。

  下面打开 Glade-3 设计一个简单的界面:

  1. 点击顶层下面的窗口,则会生成一个空白的窗口,默认的名称是 window1,不用做任何修改。
  2. 点击容器下面的垂直框,添加到窗口中,条目数为3(默认)。这时候就把窗口分割成了3个区域。
  3. 点击容器下面的菜单条,添加到第一个区域,就生成了菜单。
  4. 点击控制和显示下面的文本视图,添加到第二个区域,就生成了一个文本显示区。
  5. 点击控制和显示下面的状态栏,添加到第三个区域,就生成了状态栏。
  6. 点击保存,命名为 win.glade

  这样,一个简单的程序界面就做好了。下面打开 Dev-C++ 建立一个工程,加入以下代码:

#include <gtk/gtk.h>
#include <glade/glade.h>

int main(int argc, char* argv[])
{
GladeXML *gxml;
GtkWidget *window;

gtk_init (&argc, &argv);
gxml = glade_xml_new("win.glade", NULL, NULL);
window = glade_xml_get_widget(gxml, "window1");
g_object_unref (G_OBJECT (gxml));
gtk_widget_show (window);
gtk_main ();

return 0;
}

  修改工程属性,在连接器的参数中,除了之前所需的参数以外,还要加入一项:-lglade-2.0,比如所有参数为:

-lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -liconv -lglade-2.0

  编译运行就可以显示刚才设计的程序界面了!

  一般情况下是没有错误的...如果出现连接错误,确认下 GTK+ 的各种库是否完整,如果出现窗口显示不出的问题,确认下是否名字写错。

点击此处查看原文 >>

系统分类: 软件开发   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(33)
发表于:2008-10-5 23:54:22
标签:无标签

0

搭建windows下GTK开发环境

在 Windows 下手工搭建各种开发环境都是一件麻烦的事情,下面我要为 Dev-C++ 配置 GTK+ 的开发环境。

  1. Glade/Gtk+ for Windows 下载开发包,这个是已经编译配置好的安装程序,可以省却不少麻烦。下载一个 gtk-dev-2.12.9-win32-2.exe 就行了。Runtime 好像可以不装。
  2. 运行以后,会选择配置 IDE 环境,选上 Dev-C++ 即可。
  3. 这个时候,环境变量以及Dev C++ 的目录设置都应该配置好了。

  检查一下环境变量 PATH

%GTK_BASEPATH%\bin

  检查一下Dev-C++ 的“工具->编译选项->目录”

  1. 库:
    ...\GTK\lib
  2. 包含文件:
    ...\GTK\include
    ...\GTK\include\gtk-2.0
    ...\GTK\include\glib-2.0
    ...\GTK\include\pango-1.0
    ...\GTK\include\cairo
    ...\GTK\include\atk-1.0
    ...\GTK\include\gtkglext-1.0
    ...\GTK\include\libglade-2.0
    ...\GTK\include\libxml2
    ...\GTK\lib\gtk-2.0\include
    ...\GTK\lib\glib-2.0\include
    ...\GTK\lib\gtkglext-1.0\include

  这个时候,GTK+ 已经配置好了。

打开 Dev-C++,建立一个新的工程,添加一个新文件:

#include <gtk/gtk.h>

int main(int argc, char *argv[])
{
GtkWidget *window;
gtk_init(&argc, &argv);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "Hello World");
gtk_widget_show(window);
gtk_main();

return 0 ;
}

  这个时候还不能编译,需要修改工程属性,在"工程->工程属性->参数" 或 "工具->编译选项"中的链接器框里面填入:

-lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -liconv

在编译选项里面填入:

-mms-bitfields

就可以编译通过了。

  在运行以后,你会发现出现一个空白窗口,标题为 Hello World。这个时候只点击窗口的关闭是不能结束进程的,你要去任务管理器里面把进程结束。

  在工程属性里面,如果把工程类型设置为"Win32 控制台程序",则运行的时候会同时出现一个控制台窗口(一个黑色的命令行界面的窗口),这个窗口在调试的时候很有用,一些错误信息会在这里显示。如果把工 程类型设置为"Win32 图形界面程序",这个黑窗口就没有了。

  为什么要在编译选项里面加入"-mms-bitfields"?下面照抄网上找来的解释:

  CPU访问内存时,总是以其整数字长为单位读写。比如 x86 CPU 总是从4字节的整数倍数地址上,读取4字节数据,它不能随心所欲地从任何位置开始读取任意长度数据。为了效率考虑,默认情况下编译器总是让整数存放于其长 度的整数倍数地址上。在一个结构中,为了做到这一点,有时不得不浪费几个字节。

  举个例子,我们定义一个结构:

struct {
char c;
int i;
};

  从字面上看,这个结构的长度是5个字节,但默认情况下编译器总是分配8个字节,是为了让 i 出现在偏移量 4 地址上。

  位域 bitfields 是 C 语言结构中的一个成员,可以指定该成员所占内存的位数 bit。然而,在位域的对齐方式上,GCC和MSVC这2个编译器产生了巨大的分歧。现在,我们将上面这个结构改成下面这样子:

struct {
char c; int b: 1;
int i;
};

  我们在 c 和 i 中插入了一个只占 1 位内存的整数。在 GCC 中,我们测试该结构的长度,发现仍然是 8 个字节,就是说 b 利用了 c 和 i 间的空隙,而没有多占空间。然而在 VC 中我们会发现,结构长达 12 字节。也就是说 b 像其他所有整数一样,在4倍数地址上对齐了。

  如果仅仅这样还好办,不幸的是,如果你在b后面再插入一个位域 b2,长度还是12。而如果插入一个 short 型的位域,长度将变成16!

  其原因在于 VC 使用了一种古怪的对齐方式,且没有完整的文档描述。基本上,VC 将结构中相邻的相同数据结构位域组成位域组,然后每个位域组都默认要求按其数据类型对齐。另外还有许多不同的例外情况。这样的情况与任何一个普通 GCC 支持的 对齐模式都不同。对齐方式不同意味着什么呢?考虑一下,Windows 是用 VC 编译的,也就是说所有 Windows API 都使用 VC 对齐方式。而如果你用 MinGW GCC编译 Windows 程序,你对所有使用了位域的 Windows API 的调用都将出错!而我们的 GTK+ for Windows 显然也是使用了这种对齐方式。

  万幸的是,Windows 版 GCC 在编译时补上了一个新的命令行开关,-mms-bitfields,使其使用 VC 兼容的对齐方式。而这个开关别的平台上的 gcc 则都没有。加上这个编译开关后生成的代码将与 VC 的代码有相同的行为特征。

点击此处查看原文 >>

系统分类: 软件开发   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(43)
发表于:2008-5-2 4:51:28
标签:无标签

1

高效使用Linux的七个习惯

越来越多的人愿意尝试linux系统,这些习惯也许会令你事半功倍,找到其中的乐趣。
刚开始使用Linux时你也许会感到不习惯,许多高手 也都有这样的经历。毕竟,曾经他们也都是新手。但是现在Linux团体已经在为新用户提供有关指南, 手册和基本的技术文档来使他们尽快上手方面做的相当出色。三年前我首次接触Linux,很多人通过论坛,在线聊天和电子邮件等帮助我,这些“企鹅”们真是 相当热心。

对此,我深感应该为无私帮助我的团体做一些力所能及的贡献,我应该给刚使用Linux的朋友写点什么。这 里我编译了七个当我刚入门时别人告诉我的七个习惯。我相信如果你运用了这七个习惯,在你使用Linux时你会感觉更安全,便利,学到很多实用的东西,最终 你会发现使用Linux也是那样的愉悦。

1-不要以根用户登录

这是你首先应该注意和遵守的。以前我们可能已经习惯了Windows,我们一直以为权限越高越好,所以我们喜欢以管理员帐户登录。但是这也许是Windows经常被病毒骚扰和不安全的重要原因,现在太多人都在用根用户登录。

权 限越高责任越大,拥有管理员权限你需要谨慎对待你所做的任何事情,但是错误还是不可避免。我记得我最先使用的是Suse Linux,有很多事项需要管理但是没有图像用户界面我不知道如何做,于是我天真的注销并登录到了根用户的图形界面。根用户图形界面的默认壁纸是一排排的 高亮地雷。这些符号在我脑海里盘旋,我很小心没有终于没有做错什么。



那么以根用户登录有那些危险?

1.你可以想象你在没有保护网的情况下打秋千,会不会感到害怕?这和你以根用户登录的道理是一样的,你会不经意间毁掉你的系统。
2.你可能会不小心运行恶意软件。通常在根用户模式下任何程序的启动都默认给予所有权限的。
3.如果你的系统有安全漏洞没有修补,你就可能被别人完全控制。
4.这是使用Unix的惯例,除非必须那么不要轻易在根用户下运行任何东西。如果一个不是自己触发的程序请求根用户权限,那么你就要小心了。
通常,我们不必登录根用户界面,下面是几条技巧:

*使用“sudo”或“su”命令,并在你完成管理时退出
*如果你不知道如何使用命令行完成这些,你可以使用“gksu”或“kdesu”。比如,按 Alt+F2并打出“gksu nautilus”,并在你完成时马上结束程序

2-合理的命名你的文件

Linux环境下,你可以按照你的意愿命名文件,但是以下两点是不允许的:1)“/”是根目录专用的;2)不要使用无效字符。其它的在技术上都是可以的,但是为了避免以后的麻烦这里有几点经验你可以遵守:

*经验上,只使用字母、数字、连接符(-)和下划线(_)
*避免使用美元符($),括弧和百分号(%)等特殊字符,这些字符对于shell有着特殊意义,可能会引起冲突
*避免使用空格,在终端上处理含有空格的文件是很愚蠢的。你可以用连接符或下划线来代替空格。

这些已经基本上成为我的习惯,并且我在使用Windows和MAC时也不自觉的遵守这些准则。

3-将你的home目录放在一个独立的分区上

 

这 样做会给你很大的灵活性。将home目录放在一个独立的分区上,可以在你重装系统甚至升级你的整个版本而不会丢失你的数据和个人设置。你可以在根目录下重 新设置你所需要的而保留home分区。现在你可以将你需要的随意分类而不必担心的数据和个人设置,你可以随时使用它们。
如果碰巧在你安装系统之后才懂得这一点,不要失望。你可以按照Carthik在ubantu Blog上的一片名为“Move /home to it’s own partition”的指导道一步步的完成。

4-合理的灾难管理



Linux是比较强大和稳定的,但是任何系统都会崩溃。在你CTRL-ALT-DEL,重启之前,你应该学会如何处理你遇到的事故。你需要知道如何在不重启的情况下轻松恢复你的系统。我个人认为这种情况分为几个不同的层次,如果前一步不奏效的话请转向下一步:
1.我将“强制关闭”程序放在我的任务栏上,如果哪个程序出现问题可以单击“强制关闭”图标并结束该程序
2.如果上一步不奏效,调用终端,用“ps -A”,记下那个出问题程序的进程号,结束它
3.使用“killall”命令,比如“killall firefox-bin”
4.如果整个图形界面都冻结,你已经不可能调用终端,按CTRL-ALT-F1,这样可以转到另一个终端,这样你就可以使用步骤2和3来结束出问题的程序
5.还不行的话,你可以使用CTRL-ALT-Backspace组合重启你的图形界面,但是要注意的是,这样会结束你正在运行的GUI程序
6.调用CTRL-ALT-F1再使用CTRL+ALT+DEL这样不会立即重启你的系统,只是按照正常模式重启,所以是安全的(假定你想要重启并且CTRL-ALT-F1可用)。
7.如果这一切都不管用,也不用记着按强制重启按钮,尝试Raise a Skinny Elephant

5-主动尝试

点击看大图

你 可能对朋友给你设置设计的当前版本和配置很满意,这适合你。这很好,但是可能会有比这更好的。为什么不尝试下Linux和开源的灵活性和丰富性呢?不要害 怕尝试不同的程序,图形管理和桌面。实验直到你找到最适合你的。你可以这样想,你现在居住在世界上最好的地方,但是环球旅行也不会有什么坏处的?或许说不 定你还可以找到一个更好的居住地,就算不能,你旅行的时间也值得好好品味,你对其它国家,它们的人和风俗,思考方式了解的更多,最终说不定你会喜欢上这样 的尝试。你尝试的任何新事物都会增加你的学识,一年左右的时间你将会对Linux和开源世界有一个很好的把握。

我个人曾尝试过至少10种分配方式,4种桌面和五种桌面管理。我最近的文章《 Etymology of A Distro》使我对更多的分配感兴趣,象Zenwalk, Foresight和 Sabayon等。朋友,主动尝试,这对你有好处。
在你尝试之前,你可以参考以下几点:

*设置好你感觉最舒服的系统,因为你需要一个时刻工作的系统。这样你就可以按照下面的几点进行尝试
*你可以利用虚拟机来完成。安装一个Vmware或Virtualbox,用它们来做测试
*如果你不知道如何运用虚拟机,你可以设置一个独立分区来尝试
*最好的,你可以用一个设置好的PC,再有一个当作测试用。这样你就可以随心所欲的进行尝试

6-熟悉使用你的命令行

虽 然我不提倡你一定要学习命令行,有太多的文章一直强调学习命令行的重要性。这里我假设你已经知道他的重要性并且已经知道怎样用它处理一些简单的管理任务。 你可以按照指导书和手册做相应的配置。但是不要一味的复制和粘贴。就是说,不止不加思考的执行命令许多有自由天性的人劝诫你要尽量深刻的理解每条命令行的 含义,它能做什么。为什么手册上这样做的,而不是那样做?理解你所做步骤的基本原理。

过了一段时间你就会感觉你已经能很好的运用它了。

最后你会发现它仅仅是种伪装的语言。每条命令可能只是一些词语的首字母,或一个单词的缩写。你希望你的狗理解“Spike fetch ball”这样的长句,为什么不尝试理解下“sudo mv /file1 /file2”那?

7-为你的用武之地做些准备

我有过很多这样的经历,当有个朋友请求我在他的电脑上做些东西,但是由于他所选择的操作系统会出现糗事。有时候我有急事但是仅有的电脑有很挫的操作系统。不必痛苦,随身戴上你的linux系统,不管是存储在U盘或CD上。有相当多的linux版本很方便的,象Knoppix, DSL和 Puppy Linux等.

很惭愧,事实上我自己还没用上这个习惯,我想我也需要言行一致。



转自cnbeta

点击此处查看原文 >>

系统分类: 自由话题   |    用户分类:    |    来源: 转贴

评论(0) | 阅读(156)
发表于:2008-5-2 4:16:36
标签:无标签

0

ubuntu lamp

sudo tasksel install lamp-server
or
sudo tasksel
and then choose lamp-server


Apache 虚拟主机的配置

点击此处查看原文 >>

系统分类: 自由话题   |    用户分类:    |    来源: 整理

评论(0) | 阅读(113)
发表于:2008-5-2 1:55:16
标签:无标签

0

ubuntu install texlive2007


Reffer here


time fontforge -script subfonts.pe simhei.ttf hei Unicode.sfd
It takes me 47 minutes to complete.My CPU P4 2.66GHz, RAM 1G

点击此处查看原文 >>

系统分类: 自由话题   |    用户分类:    |    来源: 转贴

评论(0) | 阅读(159)
发表于:2008-5-1 19:15:06
标签:无标签

0

Installing Code::Blocks nightly build on Ubuntu

Installing Code::Blocks nightly build on Ubuntu

When all the steps above are done, be sure /usr/local/lib is in /etc/ld.so.conf, and then run ldconfig (you must be root). You only need to do that once.

点击此处查看原文 >>

系统分类: 自由话题   |    用户分类:    |    来源: 转贴

评论(0) | 阅读(115)
发表于:2008-5-1 15:02:50
标签:无标签

0

ubuntu ftp client

一直在寻找一款linux下比较称心的FTP图形工具,但寻找的结果比较失望。不过CrossFTP却是一个相当优秀的FTP工具。中文文件名支持良好,操作上接近FlashFXP,感觉是linux下最稳定的一款FTP客户端。 至于FTP的资源,大名鼎鼎的TLF (The Last Fantasy)估计很多人都知道吧?资源相当的丰富。 对于要使用他下TLF系列的用户绝对推荐, 因为前辈的FlashFXP站点列表Site.dat可以直接被导入。Linux, Windows, 或者Mac下都可以用,而且最新版已经支持中文语言界面。

主要功能:
--优良的CJK/中文编码/Unicode支持
--站点管理,配置文件远程备份
--多标签支持
--压缩文档浏览,解压,压缩,直接上传
--退出位置的自动记忆
--队列恢复
--文件本地和Web搜索
--自动重连和anti-idle
--命令控制
--SSL/TSL加密传输[pro only]
--多线程传输[pro only]
--FXP传输[pro only]

* 网络启动: http://www.crossftp.com/crossftp.jnlp,并用java web start(javaws)打开下载连接
或者用命令启动

代码:
javaws http://www.crossftp.com/crossftp.jnlp

第一次成功启动后,以后离线启动的话可以用命令
代码:
javaws -offline http://www.crossftp.com/crossftp.jnlp

* deb下载: http://forum.ubuntu.org.cn/download.php?id=21558
* 系统需求: Java 1.4+
* 中文: 服务器编码(Global Options -> Connection -> Server Encoding)请选择GB18030可以解决服务器的乱码问题; Locale (Global Options -> Display -> Locale) 选择Chinese,重启有就有中文语言界面。
* 若字体有问题, 请确认Java是正确汉化的(http://www.linuxsir.org/bbs/showthread.php?t=222214 的第一和第二步) 或者 (http://www.cublog.cn/u/15923/showart.php?id=113892), 然后到tools->options->display->Table font/Log font选择合适的中文字体.
* 更换外观: tools->options->display->Look & Feel. linux下Metal的外观支持较好.
* 离线使用: 默认支持离线使用。若仍然出现问题, 请打开Java Web Start (命令是javaws), 选择Launch offline(离线启动)
* 测试环境: Windows XP, Windows 2000, Mac OS X, Gentoo Linux, Ubuntu Dapper
* 主页: http://www.crossftp.com/

点击此处查看原文 >>

系统分类: 自由话题   |    用户分类:    |    来源: 转贴

评论(0) | 阅读(836)
发表于:2008-5-1 13:14:19
标签:无标签

1

ubuntu install ns2

 在 ubuntu 上安装还算简单,首先需要安装的是:

    # sudo apt-get install build-essential
    # sudo apt-get install tcl8.4 tcl8.4-dev tk8.4 tk8.4-dev
    # sduo apt-get install libxmu-dev libxmu-headers

接着到NS2的的的SourceForge去下载档案,这边我下载到的是2.31 。

可以把解压缩后的资料夹,搬到你想安装的位置去。例如:

    # tar xvfz ns-allinone-2.31.tar.gz
    # sudo mv ns-allinone-2.31 /usr/local/ns2
    # cd ns2
    # ./install

经过一些时间的等待,就会看到他显示一串要你修改.bashrc或.cshrc文件的讯息,依照讯息加入。

    #sudo gedit ~/.bashrc
如果是 .bashrc 的话就会是:
    
    export PATH=$PATH:/usr/local/ns2/bin:/usr/local/ns2/tcl8.4.14/unix:/usr/local/ns2/tk8.4.14/unix
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/ns2/otcl-1.13:/usr/local/ns2/lib
    export TCL_LIBRARY=$TCL_LIBRARY:/usr/local/ns2/tcl8.4.14/library

接着,
    #source ~/.bashrc
         
依照最后几行的讯息,去做验证,例如:

    # cd ns-2.31; ./validate

等他跑完,就可以工作了。

点击此处查看原文 >>

系统分类: 通信网络   |    用户分类:    |    来源: 转贴

评论(0) | 阅读(151)
总共 , 当前 /