Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5634670
  • 博文数量: 922
  • 博客积分: 19333
  • 博客等级: 上将
  • 技术积分: 11226
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-27 14:33
文章分类

全部博文(922)

文章存档

2023年(1)

2020年(2)

2019年(1)

2017年(1)

2016年(3)

2015年(10)

2014年(17)

2013年(49)

2012年(291)

2011年(266)

2010年(95)

2009年(54)

2008年(132)

分类: IT职场

2009-07-02 16:32:10

 一、gtk主题指南
    1.Widgets
    2.Styles
    3.Engines
    4.gtkrc文件
        1)修改构件的属性
        2)每一构件的分为五种状态
        3)风格绑定
            1.将一种风格绑定到组件类
            2.组件嵌套的方式widget_class
                如widget_class "*.GtkButton.*" style "button-content"
            3.应用指定风格
            4.风格绑定的优先次序
        4)组件指定风格
        5)高级指定风格(依据gtk2正式文档)
    5.widget设置示例
    
      
一、gtk主题指南
    1.Widgets
        GTK拥有一套大量的widget集合,如按钮,滚动条,编辑框等,每一种组件的属性都可以单独进行配置。
所有的widget由GtkWidget派生出来的。也就是说,更改GtkWidget的属性所有的widgets会受到影响。幸运的是,大多数widget有其父类,如GtkButton的属性同样使GtkCheckButton生效,除非你对其进行单独的配制。

    2.Styles    
        用户自定义GtkWidget形成 自己的风格,定义的方式有两种形式,一种是以使用Gtk中的style,但style定义方式中只给出了几种有限风格属性,如设置滚动条的宽度。另一种就 是通过使用engine这种机制来实现,其中定义很多的属性可供使用时选择。
        通过定义不同的styles合并在一起成为一个最终的Gtk主题,所以通常可以定义出一个基本的风格,其包含一此通用的选项配置,对于定义组件专有的属性可以在引用它的基础上做设置,如颜色的修改.

    3.Engines
        与styles组合实现出更有吸引力的风格,gtk内部实现很多可供选择的风格。
        
    4.gtkrc文件
        一个rc文件被称为gtkrc,存放的地方取决于系统的配置,通常放在/usr/share/themes/themename目录下,存在gtk-2.0/gtkrc文件,此文件可以是一个rc文件,里面定义了gtk中各种组件的配置。

        1)修改构件的属性:
        fg:设置一个构件的前景色
        bg:设置一个构件的背景色
        text:可编辑文本构件的前景色
        base:可编辑文本构件的背景色
        bg_pixmap:显示像素图的构件的背景色
        font_name:设置字体风格
        xthickness:设置左右边界的宽度
        ythickness:设置上下边界宽度

        2)每一构件的分为五种状态:
        NORMAL:鼠标没有覆盖,点击的状态
        PRELIGHT:鼠标在组件之上
        ACTIVE:鼠标被按下或点击的状态,
        INSENSITIVE:不能被激活,或点击的状态
        SELECTED:被选对象可以带好多属性

        3)风格绑定:
            1.将一种风格绑定到组件类
                格式:class "GtkButton" style "my-button"     将“my-button"风格绑定到GtkButton的所有实例
                widget_class "*Text*" style "bright_yellow"
                将"bright_yellow"风格绑定到名字中含有“Text“的组件
            2.组件嵌套的方式widget_class
                如widget_class "*.GtkButton.*" style "button-content"
            3.应用指定风格
                如果一个应用开发者已经明确陈列一种元素,在gtkrc文件中指明元素名,来将它风格化。
                eg: widget “funky bar“ style “mystyle“
            4.风格绑定的优先次序
                对widget的rc风格绑定 > 对widget_class风格的绑定 > class 同一种组件的多种声明是,后一种优于前一种。指定优先的highest,rc,theme,application,gtk,lowest将覆盖上述的风 格绑定,
            
        4)组件指定风格:
            gtk api文档列表中,列出的style properties,对某种widget类型,是明确的,eg。GtkWiget::focus-line-width = 2

        5)高级指定风格(依据gtk2正式文档):
            界定符#,注释所在行的内容,在解析gtkrc文件时,将此行被忽略掉。
            1.binding name {...} 声明绑定设置
            2.calss pattern [ style | binding [ : priority ]] name       对继承层的一个具体的分支,指定风格或绑定设置
            3.include finename: 在此处引入文件,如果不是包含绝对路径的文件名,将会在当前打开rc文件的文件夹下,搜索此文件
            4.module_path path: 设置搜索rc文件中涉及的主题引擎路径。
            5.pixmap_path path: 设置搜索像素图的路径。
            6.widget pattern [ style | binding [ : priority ]] name 给路径名上相配匹配的一组具体的组件设置风格或绑定。
            7.widget_class pattern [ style | binding [ : priority ]] nane  给路径名上相匹配的一组具体的组件设置风格或绑定。
 
    5.widget设置示例:
        * Buttons:
            buttons不存在背景的设置,只能通过对其所处的widget上添加背景的处理。
            bevelling (relief): 对button进行三种状态的设置: GTK_RELIEF_NORMAL, GTK_RELIEF_HALF, GTK_RELIEF_NONE.
        * Labels:
            不存在背景色,估计可以通过text[]这一属性设置其前景色
        * Text Boxes:
            背景: base[NORMAL]
            文本颜色: text[NORMAL]
            应用自定义的风格: widget_class "*TextView*" style "my_style"
            改变编辑时光标的颜色eg: GtkWidget::cursor-color "red"
        * Scrollbars and Scales:
            使用 widget_class "*Scrollbar*" 来指定scrollbars.
            arrow button and main draggable rectangle colour is controlled by bg[NORMAL]
            槽和边框设置背景色 bg[ACTIVE]
            鼠标光标移动scrollbar(滚动条)上时的颜色使用bg[PRELIGHT]设置
            光标箭头的颜色fg[NORMAL]
        * Combobox:
            combobox是一个按钮包含:label, separator, and arrow
        * Icons:
            设置自定义的图标
            stock["my-stock-item"] =
            {
                { "itemmenusize.png", *, *, "gtk-menu" },
                { "itemtoolbarsize.png", *, *, "gtk-large-toolbar" }
                { "itemgeneric.png" } /* implicit *, *, * as a fallback */
            }
        * Menus:
            菜单是一个组合控件,包括menubar和menuitems.
        * Lists:
            与Treeview组合为一个整体.
        * Treeview:        
            Treeview开为两部分:head_window,bin_window,该组件可以按元素列表和树的形式显示
            Treeview 背景色是通过base[]控制,如果处于非关注状态则按base[ACTIVE]的着色显示.
            设置Treeview的列的顶部的颜色,使用bg控制.
            Treeview列的顶部为一个按钮. 指定widget_class "*TreeView.GtkButton*". 指定顶部文本的颜色The text colour in the heads is controlled with fg, and not text.
            The default line spacing of TreeView lists is quite large. It is not possible to reduce it in the rc file. This is a known issue.
            Treeview 风格自属性有: allow-rules, even-row-color, expander-size, horizontal-separator, indent-expanders, odd-row-color, vertical-separator.
        * Tabs:
            文本内容在非选中的tab上使用的是fg[ACTIVE],背景色设置bg[ACTIVE].
            定义tabs文本设置 widget_class "*GtkNotebook*GtkLabel".
        * engine    
            gtk engines 给开发者提供大量不同的显示风格选项。通过使用不同的engine来设置不同风格的组件。
            style "some-style" {
                engine "clearlooks" {
                        # engine specific settings go here
                    }
            }
阅读(3123) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~