[ 永远的UNIX::UNIX技术资料的宝库 ]

首页 > 编程技术 > 其它 > 正文
GTK入门导引--19. GTK的rc档
翻译: Brian Lin, OK STATION, Webmaster (2001-04-27 13:34:33)
   
--------------------------------------------------------------------------------

19. GTK的rc档
GTK有处理软体内定值的一套方法, 即使用其rc档. 这些可以用来设定颜色, 并且可以用pixmaps来设定某些物件的背景. 


19.1 rc档的功能 
当您的软体启动时, 您应该呼叫这一行: 

void gtk_rc_parse (char *filename);

将您的档名传入做为参数. 这会使GTK来分析这个档案, 并使用设定值来设定物件的形态. 

如果您希望有特别样子的物件, 但可从另一个物件做为基础来产生, 可以用这个: 

void gtk_widget_set_name (GtkWidget *widget,
                          gchar *name);

传入您新产生的物件做为第一个参数, 您要给它的名字做为第二个参数. 这样的话可以让你透过rc档来改变该物件的属性. 

如果我们用像以下的呼叫: 


button = gtk_button_new_with_label ("Special Button");
gtk_widget_set_name (button, "special button");

则这个按钮被给了一个名字叫"special button" 并且会被指向rc档中的"special button.GtkButton". [<--- 要是我错了, 修正我!] 

以下的rc档设定主视窗的属性, 并让所有子视窗继承其形态. 在程式中的程式码为: 


window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_set_name (window, "main window");

而该形态则在rc档中定义为: 


widget "main window.*GtkButton*" style "main_button"

这会设定所有GtkButton物件, 成为在"main window"中的"main_buttons"的形态. 

您可以看到, 这是很强很有弹性的系统. 用您最佳的想像力来看有多少好处. 


19.2 GTK的rc档案格式 
GTK的rc档格式如以下的范例. 这个testgtkrc档从GTK distribution而来, 但我加了点料及注解进去. 您也可以加一点解释来让使用者做微调. 

有好几个指令来改变该物件的属性. 

fg - 前景颜色. 
bg - 背景颜色. 
bg_pixmap - 背景图片pixmap. 
font - 字型. 
除此, 一个物件可以有好几种状态. 您可以设定不同的颜色, 图案及字形. 这些状态是: 

NORMAL - 物件一般的状态, 没有滑鼠滑过, 没有被按下. 
PRELIGHT - 滑鼠滑过该物件. 
ACTIVE - 当该物件被压下或按下, 该视窗会生效. 
INSENSITIVE - 当该物件被设为失效. 
SELECTED - 当物件被选择. 
当我们使用"fg"及"bg"来设定该物件的颜色时, 其格式为: 

fg[] = { Red, Green, Blue }

这里STATE是我们以上所说的其中之一(PRELIGHT, ACTIVE etc), 而Red, Green及Blue为0到1.0, { 1.0, 1.0, 1.0 }为白色. 它们必须要为浮点数, "1"不行, 必须是"1.0", 否则会全部变成0. "0"可以. 不是以此格式者均为"0". 

bg_pixmap跟以上都很近似, 除了变成档名以外. 

pixmap_path是以":"做为分隔的一串路径. 这些路径会用来搜寻您所指定的pixmap. 


font指令很简单: 

font = ""

比较难的是找出想要的font名称. 用xfontsel或类似的工具来找会有点帮助. 

"widget_class"设定物件的类别. 这些类别在物件概论中的类别组织图有列出来. 

"widget"指令指定一个已经定好的形态给一个物件. 替代所有该物件的属性. 这些物件则在程式中以gtk_widget_set_name()注册过了. 这允许您指定各别物件的属性, 而不是设定全部同一类的. 我要求您要做好文件, 这样使用者可以自行修改. 

当"parent"用来当成一个属性时, 该物件会继承其父所有财产. 

当您定义一个形态时, 可以指定以前已经定义过的形态给新的. 

style "main_button" = "button"
{
  font = "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*"
  bg[PRELIGHT] = { 0.75, 0, 0 }
}

这个例子用"button"的形态, 产生一个"main_button"形态, 并且只改变font及背景颜色. 

当然了并非所有属性都对所有物件生效. 因为该物件不见得拥有该属性. 


19.3 rc档的范例 


# pixmap_path ":::..."
#
pixmap_path "/usr/include/X11R6/pixmaps:/home/imain/pixmaps"
#
# style  [= ]
# {
#   
    进入【UNIX论坛

相关文章
GTK入门导引--结束语 (2001-04-27 13:38:49)
GTK入门导引--20. 写出属於您自己的物件 (2001-04-27 13:35:04)
GTK入门导引--19. GTK的rc档 (2001-04-27 13:34:33)
GTK入门导引--18. 设定视窗物件属性 (2001-04-27 13:34:13)
GTK入门导引--17. glib (2001-04-27 13:33:43)
GTK入门导引--16. 选取区域管理 (2001-04-27 13:33:18)
GTK入门导引--14. Menu物件 (2001-04-27 13:32:52)
GTK入门导引--13. Undocumented Widgets (2001-04-27 13:32:29)
GTK入门导引--12. List物件 (2001-04-27 13:31:41)
GTK入门导引--11. 档案选取物件 (2001-04-27 13:31:14)

===更多相关===
 

★  樊强制作 欢迎分享  ★