GTK+ 2.0 Tutorial
<<< Previous | GTK's rc Files | Next >>>

# Example rc file

    # pixmap_path "<dir 1>:<dir 2>:<dir 3>:..."
    #
    pixmap_path "/usr/include/X11R6/pixmaps:/home/imain/pixmaps"
    #
    # style <name> [= <name>]
    # {
    #   <option>
    # }
    #
    # widget <widget_set> style <style_name>
    # widget_class <widget_class_set> style <style_name>

    # Here is a list of all the possible states.  Note that some do not apply to
    # certain widgets.
    #
    # NORMAL - The normal state of a widget, without the mouse over top of
    # it, and not being pressed, etc.
    #
    # PRELIGHT - When the mouse is over top of the widget, colors defined
    # using this state will be in effect.
    #
    # ACTIVE - When the widget is pressed or clicked it will be active, and
    # the attributes assigned by this tag will be in effect.
    #
    # INSENSITIVE - When a widget is set insensitive, and cannot be
    # activated, it will take these attributes.
    #
    # SELECTED - When an object is selected, it takes these attributes.
    #
    # Given these states, we can set the attributes of the widgets in each of
    # these states using the following directives.
    #
    # fg - Sets the foreground color of a widget.
    # fg - Sets the background color of a widget.
    # bg_pixmap - Sets the background of a widget to a tiled pixmap.
    # font - Sets the font to be used with the given widget.
    #

    # This sets a style called "button".  The name is not really important, as
    # it is assigned to the actual widgets at the bottom of the file.

    style "window"
    {
      #This sets the padding around the window to the pixmap specified.
      #bg_pixmap[<STATE>] = "<pixmap filename>"
      bg_pixmap[NORMAL] = "warning.xpm"
    }

    style "scale"
    {
      #Sets the foreground color (font color) to red when in the "NORMAL"
      #state.

      fg[NORMAL] = { 1.0, 0, 0 }

      #Sets the background pixmap of this widget to that of its parent.
      bg_pixmap[NORMAL] = "<parent>"
    }

    style "button"
    {
      # This shows all the possible states for a button.  The only one that
      # doesn't apply is the SELECTED state.

      fg[PRELIGHT] = { 0, 1.0, 1.0 }
      bg[PRELIGHT] = { 0, 0, 1.0 }
      bg[ACTIVE] = { 1.0, 0, 0 }
      fg[ACTIVE] = { 0, 1.0, 0 }
      bg[NORMAL] = { 1.0, 1.0, 0 }
      fg[NORMAL] = { .99, 0, .99 }
      bg[INSENSITIVE] = { 1.0, 1.0, 1.0 }
      fg[INSENSITIVE] = { 1.0, 0, 1.0 }
    }

    # In this example, we inherit the attributes of the "button" style and then
    # override the font and background color when prelit to create a new
    # "main_button" style.

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

    style "toggle_button" = "button"
    {
      fg[NORMAL] = { 1.0, 0, 0 }
      fg[ACTIVE] = { 1.0, 0, 0 }

      # This sets the background pixmap of the toggle_button to that of its
      # parent widget (as defined in the application).
      bg_pixmap[NORMAL] = "<parent>"
    }

    style "text"
    {
      bg_pixmap[NORMAL] = "marble.xpm"
      fg[NORMAL] = { 1.0, 1.0, 1.0 }
    }

    style "ruler"
    {
      font = "-adobe-helvetica-medium-r-normal--*-80-*-*-*-*-*-*"
    }

    # pixmap_path "~/.pixmaps"

    # These set the widget types to use the styles defined above.
    # The widget types are listed in the class hierarchy, but could probably be
    # just listed in this document for the users reference.

    widget_class "GtkWindow" style "window"
    widget_class "GtkDialog" style "window"
    widget_class "GtkFileSelection" style "window"
    widget_class "*Gtk*Scale" style "scale"
    widget_class "*GtkCheckButton*" style "toggle_button"
    widget_class "*GtkRadioButton*" style "toggle_button"
    widget_class "*GtkButton*" style "button"
    widget_class "*Ruler" style "ruler"
    widget_class "*GtkText" style "text"

    # This sets all the buttons that are children of the "main window" to
    # the main_button style.  These must be documented to be taken advantage of.
    widget "main window.*GtkButton*" style "main_button"

<<< Previous | Home | Next >>>
GTK's rc File Format | Up | Writing Your Own Widgets