<refentry id="gtk-Resource-Files">
<refmeta>
<refentrytitle>Resource Files</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>GTK Library</refmiscinfo>
</refmeta>

<refnamediv>
<refname>Resource Files</refname><refpurpose>Routines for handling resource files</refpurpose>
</refnamediv>

<refsynopsisdiv><title>Synopsis</title>
<synopsis>

#include &lt;gtk/gtk.h&gt;


struct      <link linkend="GtkRcStyle-struct">GtkRcStyle</link>;
enum        <link linkend="GtkRcFlags">GtkRcFlags</link>;
enum        <link linkend="GtkRcTokenType">GtkRcTokenType</link>;
<link linkend="GScanner">GScanner</link>*   <link linkend="gtk-rc-scanner-new">gtk_rc_scanner_new</link>              (void);
<link linkend="GtkStyle">GtkStyle</link>*   <link linkend="gtk-rc-get-style">gtk_rc_get_style</link>                (<link linkend="GtkWidget">GtkWidget</link> *widget);
<link linkend="GtkStyle">GtkStyle</link>*   <link linkend="gtk-rc-get-style-by-paths">gtk_rc_get_style_by_paths</link>       (<link linkend="GtkSettings">GtkSettings</link> *settings,
                                             const char *widget_path,
                                             const char *class_path,
                                             <link linkend="GType">GType</link> type);
void        <link linkend="gtk-rc-add-widget-name-style">gtk_rc_add_widget_name_style</link>    (<link linkend="GtkRcStyle">GtkRcStyle</link> *rc_style,
                                             const <link linkend="gchar">gchar</link> *pattern);
void        <link linkend="gtk-rc-add-widget-class-style">gtk_rc_add_widget_class_style</link>   (<link linkend="GtkRcStyle">GtkRcStyle</link> *rc_style,
                                             const <link linkend="gchar">gchar</link> *pattern);
void        <link linkend="gtk-rc-add-class-style">gtk_rc_add_class_style</link>          (<link linkend="GtkRcStyle">GtkRcStyle</link> *rc_style,
                                             const <link linkend="gchar">gchar</link> *pattern);
void        <link linkend="gtk-rc-parse">gtk_rc_parse</link>                    (const <link linkend="gchar">gchar</link> *filename);
void        <link linkend="gtk-rc-parse-string">gtk_rc_parse_string</link>             (const <link linkend="gchar">gchar</link> *rc_string);
<link linkend="gboolean">gboolean</link>    <link linkend="gtk-rc-reparse-all">gtk_rc_reparse_all</link>              (void);
<link linkend="gboolean">gboolean</link>    <link linkend="gtk-rc-reparse-all-for-settings">gtk_rc_reparse_all_for_settings</link> (<link linkend="GtkSettings">GtkSettings</link> *settings,
                                             <link linkend="gboolean">gboolean</link> force_load);
void        <link linkend="gtk-rc-add-default-file">gtk_rc_add_default_file</link>         (const <link linkend="gchar">gchar</link> *filename);
<link linkend="gchar">gchar</link>**     <link linkend="gtk-rc-get-default-files">gtk_rc_get_default_files</link>        (void);
void        <link linkend="gtk-rc-set-default-files">gtk_rc_set_default_files</link>        (<link linkend="gchar">gchar</link> **filenames);
<link linkend="guint">guint</link>       <link linkend="gtk-rc-parse-color">gtk_rc_parse_color</link>              (<link linkend="GScanner">GScanner</link> *scanner,
                                             <link linkend="GdkColor">GdkColor</link> *color);
<link linkend="guint">guint</link>       <link linkend="gtk-rc-parse-state">gtk_rc_parse_state</link>              (<link linkend="GScanner">GScanner</link> *scanner,
                                             <link linkend="GtkStateType">GtkStateType</link> *state);
<link linkend="guint">guint</link>       <link linkend="gtk-rc-parse-priority">gtk_rc_parse_priority</link>           (<link linkend="GScanner">GScanner</link> *scanner,
                                             <link linkend="GtkPathPriorityType">GtkPathPriorityType</link> *priority);
<link linkend="gchar">gchar</link>*      <link linkend="gtk-rc-find-module-in-path">gtk_rc_find_module_in_path</link>      (const <link linkend="gchar">gchar</link> *module_file);
<link linkend="gchar">gchar</link>*      <link linkend="gtk-rc-find-pixmap-in-path">gtk_rc_find_pixmap_in_path</link>      (<link linkend="GtkSettings">GtkSettings</link> *settings,
                                             <link linkend="GScanner">GScanner</link> *scanner,
                                             const <link linkend="gchar">gchar</link> *pixmap_file);
<link linkend="gchar">gchar</link>*      <link linkend="gtk-rc-get-module-dir">gtk_rc_get_module_dir</link>           (void);
<link linkend="gchar">gchar</link>*      <link linkend="gtk-rc-get-im-module-path">gtk_rc_get_im_module_path</link>       (void);
<link linkend="gchar">gchar</link>*      <link linkend="gtk-rc-get-im-module-file">gtk_rc_get_im_module_file</link>       (void);
<link linkend="gchar">gchar</link>*      <link linkend="gtk-rc-get-theme-dir">gtk_rc_get_theme_dir</link>            (void);
<link linkend="GtkRcStyle">GtkRcStyle</link>* <link linkend="gtk-rc-style-new">gtk_rc_style_new</link>                (void);
<link linkend="GtkRcStyle">GtkRcStyle</link>* <link linkend="gtk-rc-style-copy">gtk_rc_style_copy</link>               (<link linkend="GtkRcStyle">GtkRcStyle</link> *orig);
void        <link linkend="gtk-rc-style-ref">gtk_rc_style_ref</link>                (<link linkend="GtkRcStyle">GtkRcStyle</link> *rc_style);
void        <link linkend="gtk-rc-style-unref">gtk_rc_style_unref</link>              (<link linkend="GtkRcStyle">GtkRcStyle</link> *rc_style);


</synopsis>
</refsynopsisdiv>





<refsect1>
<title>Description</title>
<para id="GtkRcStyle">
GTK+ provides resource file mechanism for configuring
various aspects of the operation of a GTK+ program
at runtime.
</para>

<refsect2><title>Default files</title>
<para>
An application can cause GTK+ to parse a specific RC
file by calling <link linkend="gtk-rc-parse">gtk_rc_parse</link>(). In addition to this,
certain files will be read at the end of <link linkend="gtk-init">gtk_init</link>().
Unless modified, the files looked for will be 
<filename>&lt;SYSCONFDIR&gt;/gtk-2.0/gtkrc</filename> 
and <filename>.gtkrc-2.0</filename> in the users home directory.
(<filename>&lt;SYSCONFDIR&gt;</filename> defaults to 
<filename>/usr/local/etc</filename>. It can be changed with the
<option>--prefix</option> or <option>--sysconfdir</option> options when 
configuring GTK+.)
</para>
<para>
The set of these <firstterm>default</firstterm> files
can be retrieved with <link linkend="gtk-rc-get-default-files">gtk_rc_get_default_files</link>()
and modified with <link linkend="gtk-rc-add-default-file">gtk_rc_add_default_file</link>() and
<link linkend="gtk-rc-set-default-files">gtk_rc_set_default_files</link>().
Additionally, the <envar>GTK2_RC_FILES</envar> environment variable
can be set to a <link linkend="G-SEARCHPATH-SEPARATOR-S-separated">G_SEARCHPATH_SEPARATOR_S-separated</link> list of files
in order to overwrite the set of default files at runtime.
</para>
<para><anchor id="locale-specific-rc">
For each RC file, in addition to the file itself, GTK+ will look for 
a locale-specific file that will be parsed after the main file. 
For instance, if <envar>LANG</envar> is set to <literal>ja_JP.ujis</literal>,
when loading the default file <filename>~/.gtkrc</filename> then GTK+ looks 
for <filename>~/.gtkrc.ja_JP</filename> and <filename>~/.gtkrc.ja</filename>, 
and parses the first of those that exists.
</para>
</refsect2>

<refsect2><title>Pathnames and patterns</title>
<para>
A resource file defines a number of styles and key bindings and
attaches them to particular widgets. The attachment is done
by the <literal>widget</literal>, <literal>widget_class</literal>,
and <literal>class</literal> declarations. As an example
of such a statement:
<informalexample><programlisting>
widget "mywindow.*.GtkEntry" style "my-entry-class"
</programlisting></informalexample>
attaches the style <literal>"my-entry-class"</literal>
to all widgets whose <firstterm>widget class</firstterm>
matches the <firstterm>pattern</firstterm>
<literal>"mywindow.*.GtkEntry"</literal>.
</para>
<para>
The patterns here are given in the standard shell glob
syntax. The <literal>"?"</literal> wildcard matches
any character, while <literal>"*"</literal> matches
zero or more of any character. The three types of
matching are against the widget path, the
<firstterm>class path</firstterm> and the class
hierarchy. Both the widget and the class paths consists of a
<literal>"."</literal> separated list of all the
parents of the widget and the widget itself from
outermost to innermost. The difference is that in
the widget path, the name assigned by
<link linkend="gtk-widget-set-name">gtk_widget_set_name</link>() is used
if present, otherwise the class name of the widget, while
for the widget path, the class name is always used.
</para>
<para>
So, if you have a <link linkend="GtkEntry">GtkEntry</link> named
<literal>"myentry"</literal>, inside of a of a window
named <literal>"mywindow"</literal>, then the
widget path is: <literal>"mwindow.GtkHBox.myentry"</literal>
while the class path is: <literal>"GtkWindow.GtkHBox.GtkEntry"</literal>.
</para>
<para>
Matching against class is a little different. The pattern
match is done against all class names in the widgets
class hierarchy (not the layout hierarchy) in sequence, so the
pattern:
<informalexample><programlisting>
class "GtkButton" style "my-style"
</programlisting></informalexample>
will match not just <link linkend="GtkButton">GtkButton</link> widgets,
but also <link linkend="GtkToggleButton">GtkToggleButton</link> and
<link linkend="GtkCheckButton">GtkCheckButton</link> widgets, since
those classes derive from <link linkend="GtkButton">GtkButton</link>.
</para>
</refsect2>

<refsect2><title>Toplevel declarations</title>
<para>
An RC file is a text file which is composed of a sequence
of declarations. <literal>'#'</literal> characters delimit comments and
the portion of a line after a <literal>'#'</literal> is ignored when parsing
an RC file.
</para>

<para>
The possible toplevel declarations are:

<variablelist>
  <varlistentry>
    <term><literal>binding <replaceable>name</replaceable>
     { ... }</literal></term>
    <listitem>
      <para>Declares a binding set.</para>
    </listitem>
  </varlistentry>
  <varlistentry>
    <term><literal>class <replaceable>pattern</replaceable> 
          [ style | binding [ : <replaceable>priority</replaceable> ]]
          <replaceable>name</replaceable></literal></term>
    <listitem>
     <para>Specifies a style or binding set for a particular
     branch of the inheritance hierarchy.</para>
    </listitem>
  </varlistentry>
  <varlistentry>
    <term><literal>include <replaceable>filename</replaceable></literal></term>
    <listitem>
      <para>Parses another file at this point. If
        <replaceable>filename</replaceable> is not an absolute filename, 
        it is searched in the directories of the currently open RC files.
      </para>
      <para>GTK+ also tries to load a 
        <link linkend="locale-specific-rc">locale-specific variant</link> of
        the included file.
       </para>
    </listitem>
  </varlistentry>
  <varlistentry>
    <term><literal>module_path <replaceable>path</replaceable></literal></term>
    <listitem>
      <para>Sets a path (a list of directories separated
      by colons) that will be searched for theme engines referenced in
      RC files.</para>
    </listitem>
  </varlistentry>
  <varlistentry>
    <term><literal>pixmap_path <replaceable>path</replaceable></literal></term>
    <listitem>
      <para>Sets a path (a list of directories separated
      by colons) that will be searched for pixmaps referenced in
      RC files.</para>
    </listitem>
  </varlistentry>
  <varlistentry>
    <term><literal>style <replaceable>name</replaceable> [ =
    <replaceable>parent</replaceable> ] { ... }</literal></term>
    <listitem>
      <para>Declares a style.</para>
    </listitem>
  </varlistentry>
  <varlistentry>
    <term><literal>widget <replaceable>pattern</replaceable> 
          [ style | binding [ : <replaceable>priority</replaceable> ]]
          <replaceable>name</replaceable></literal></term>
    <listitem>
     <para>Specifies a style or binding set for a particular
     group of widgets by matching on the widget pathname.</para>
    </listitem>
  </varlistentry>
  <varlistentry>
    <term><literal>widget_class <replaceable>pattern</replaceable> 
          [ style | binding [ : <replaceable>priority</replaceable> ]]
          <replaceable>name</replaceable></literal></term>
    <listitem>
     <para>Specifies a style or binding set for a particular
     group of widgets by matching on the class pathname.</para>
    </listitem>
  </varlistentry>
</variablelist>
</para>
</refsect2>

<refsect2><title>Styles</title>
<para>
A RC style is specified by a <literal>style</literal> 
declaration in a RC file, and then bound to widgets
with a <literal>widget</literal>, <literal>widget_class</literal>,
or <literal>class</literal> declaration. All styles
applying to a particular widget are composited together
with <literal>widget</literal> declarations overriding
<literal>widget_class</literal> declarations which, in
turn, override <literal>class</literal> declarations.
Within each type of declaration, later declarations override
earlier ones.
</para>

<para>
Within a <literal>style</literal> declaration, the possible
elements are:

<variablelist>
  <varlistentry>
    <term><literal>bg[<replaceable>state</replaceable>] =
      <replaceable>color</replaceable></literal></term>
     <listitem>
       <para>
         Sets the color used for the background of most widgets.
       </para>
     </listitem>
  </varlistentry>
  <varlistentry>
    <term><literal>fg[<replaceable>state</replaceable>] =
      <replaceable>color</replaceable></literal></term>
     <listitem>
       <para>
         Sets the color used for the foreground of most widgets.
       </para>
     </listitem>
  </varlistentry>
  <varlistentry>
    <term><literal>base[<replaceable>state</replaceable>] =
      <replaceable>color</replaceable></literal></term>
     <listitem>
       <para>
         Sets the color used for the background of widgets displaying
         editable text. This color is used for the background
         of, among others, <link linkend="GtkText">GtkText</link>, <link linkend="GtkEntry">GtkEntry</link>, <link linkend="GtkList">GtkList</link>, and <link linkend="GtkClist">GtkClist</link>.
       </para>
     </listitem>
  </varlistentry>
  <varlistentry>
    <term><literal>text[<replaceable>state</replaceable>] =
      <replaceable>color</replaceable></literal></term>
     <listitem>
       <para>
         Sets the color used for foreground of widgets using
         <literal>base</literal> for the background color.
       </para>
     </listitem>
  </varlistentry>
  <varlistentry>
    <term><literal>bg_pixmap[<replaceable>state</replaceable>] =
      <replaceable>pixmap</replaceable></literal></term>
     <listitem>
       <para>
         Sets a background pixmap to be used in place of
         the <literal>bg</literal> color (or for <link linkend="GtkText">GtkText</link>,
         in place of the <literal>base</literal> color. The special
         value <literal>"&lt;parent&gt;"</literal> may be used to indicate that the widget should
         use the same background pixmap as its parent. The special value
         <literal>"&lt;none&gt;"</literal> may be used to indicate no background pixmap.
       </para>
     </listitem>
  </varlistentry>
  <varlistentry>
    <term><literal>font = <replaceable>font</replaceable></literal></term>
     <listitem>
       <para>
         Sets the font for a widget. <replaceable>font</replaceable> must be
         a XLFD font description, e.g. 
         <literal>"-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*"</literal>.
       </para>
     </listitem>
  </varlistentry>
  <varlistentry>
    <term><literal>fontset = <replaceable>font</replaceable></literal></term>
     <listitem>
       <para>
         Sets the fontset for a widget. Overrides any
         <literal>font</literal> declarations. <replaceable>font</replaceable> 
         must be a comma-separated list of XLFD font descriptions, e.g.
         <literal>"-JIS-Fixed-Medium-R-Normal--26-180-100-100-C-240,
                   -JIS-Fixed-Medium-R-Normal--26-180-100-100-C-120,
                   -GB-Fixed-Medium-R-Normal--26-180-100-100-C-240,
                   -Adobe-Courier-Bold-R-Normal--25-180-100-100-M-150"</literal>.
       </para>
     </listitem>
  </varlistentry>
  <varlistentry>
    <term><literal>font_name = <replaceable>font</replaceable></literal></term>
     <listitem>
       <para>
         Sets the font for a widget. Overrides any
         <literal>font</literal> or <literal>fontset</literal> declarations. 
         <replaceable>font</replaceable> must be a Pango font name, e.g.
         <literal>"Sans Italic 10"</literal>.
       </para>
     </listitem>   
  </varlistentry>
  <varlistentry>
    <term><literal>stock[<replaceable>"stock-id"</replaceable>] = { <replaceable>icon source specifications</replaceable> }</literal></term>
     <listitem>
       <para>
        Defines the icon for a stock item.
       </para>
     </listitem>
  </varlistentry>
  <varlistentry>
    <term><literal>engine <replaceable>"engine"</replaceable> { <replaceable>engine-specific
settings</replaceable> }</literal></term>
     <listitem>
       <para>
        Defines the engine to be used when drawing with this style.
       </para>
     </listitem>
  </varlistentry>
</variablelist>
</para>
<para>
The colors and background pixmaps are specified as a function of the
state of the widget. The states are:

<variablelist>
  <varlistentry>
    <term><literal>NORMAL</literal></term>
    <listitem>
      <para>
        A color used for a widget in its normal state.
      </para>
    </listitem>
  </varlistentry>
  <varlistentry>
    <term><literal>ACTIVE</literal></term>
    <listitem>
      <para>
        A variant of the <literal>NORMAL</literal> color used when the
        widget is in the <literal>GTK_STATE_ACTIVE</literal> state, and also for
        the trough of a ScrollBar, tabs of a NoteBook
        other than the current tab and similar areas.
        Frequently, this should be a darker variant
        of the <literal>NORMAL</literal> color.
      </para>
    </listitem>
  </varlistentry>
  <varlistentry>
    <term><literal>PRELIGHT</literal></term>
    <listitem>
      <para>
        A color used for widgets in the <literal>GTK_STATE_PRELIGHT</literal> state. This
        state is the used for Buttons and MenuItems
        that have the mouse cursor over them, and for 
        their children.
      </para>
    </listitem>
  </varlistentry>
  <varlistentry>
    <term><literal>SELECTED</literal></term>
    <listitem>
      <para>
        A color used to highlight data selected by the user.
        for instance, the selected items in a list widget, and the
        selection in an editable widget.
      </para>
    </listitem>
  </varlistentry>
  <varlistentry>
    <term><literal>INSENSITIVE</literal></term>
    <listitem>
      <para>
        A color used for the background of widgets that have
        been set insensitive with <link linkend="gtk-widget-set-sensitive">gtk_widget_set_sensitive</link>().
      </para>
    </listitem>
  </varlistentry>
</variablelist>
</para>

<para><anchor id="color-format">
Colors can be specified as a string containing a color name (GTK+ knows
all names from the X color database 
<filename>/usr/lib/X11/rgb.txt</filename>),  
in one of the hexadecimal forms <literal>&hash;rrrrggggbbbb</literal>,
<literal>&hash;rrrgggbbb</literal>, <literal>&hash;rrggbb</literal>,
or <literal>&hash;rgb</literal>, where <literal>r</literal>,
<literal>g</literal> and <literal>b</literal> are
hex digits, or they can be specified as a triplet 
<literal>{ <replaceable>r</replaceable>, <replaceable>g</replaceable>,
<replaceable>b</replaceable>}</literal>, where <literal>r</literal>,
<literal>g</literal> and <literal>b</literal> are either integers in 
the range 0-65635 or floats in the range 0.0-1.0.
</para>

<para>
In a <literal>stock</literal> definition, icon sources are specified as a
4-tuple of image filename, text direction, widget state, and size, in that
order.  Each icon source specifies an image filename to use with a given
direction, state, and size. The <literal>*</literal> character can be used as a
wildcard, and if direction/state/size are omitted they default to
<literal>*</literal>. So for example, the following specifies different icons to
use for left-to-right and right-to-left languages:
<informalexample><programlisting>
stock["my-stock-item"] = 
{
  { "itemltr.png", LTR, *, * },
  { "itemrtl.png", RTL, *, * }
}
</programlisting></informalexample>
This could be abbreviated as follows:
<informalexample><programlisting>
stock["my-stock-item"] = 
{
  { "itemltr.png", LTR },
  { "itemrtl.png", RTL }
}
</programlisting></informalexample>
</para>

<para>
You can specify custom icons for specific sizes, as follows:
<informalexample><programlisting>
stock["my-stock-item"] = 
{
  { "itemmenusize.png", *, *, "gtk-menu" },
  { "itemtoolbarsize.png", *, *, "gtk-large-toolbar" }
  { "itemgeneric.png" } /* implicit *, *, * as a fallback */
}
</programlisting></informalexample>
The sizes that come with GTK+ itself are <literal>"gtk-menu"</literal>,
<literal>"gtk-small-toolbar"</literal>, <literal>"gtk-large-toolbar"</literal>,
<literal>"gtk-button"</literal>, <literal>"gtk-dialog"</literal>. Applications
can define other sizes.
</para>

<para>
It's also possible to use custom icons for a given state, for example:
<informalexample><programlisting>
stock["my-stock-item"] = 
{
  { "itemprelight.png", *, PRELIGHT },
  { "iteminsensitive.png", *, INSENSITIVE }, 
  { "itemgeneric.png" } /* implicit *, *, * as a fallback */
}
</programlisting></informalexample>
</para>

<para>
When selecting an icon source to use, GTK+ will consider text direction most
important, state second, and size third. It will select the best match based on
those criteria. If an attribute matches exactly (e.g. you specified
<literal>PRELIGHT</literal> or specified the size), GTK+ won't modify the image;
if the attribute matches with a wildcard, GTK+ will scale or modify the image to
match the state and size the user requested.
</para>

</refsect2>

<refsect2><title>Key bindings</title>
<para>
Key bindings allow the user to specify actions to be 
taken on particular key presses. The form of a binding
set declaration is:
</para>

<informalexample><programlisting>
binding <replaceable>name</replaceable> {
  bind <replaceable>key</replaceable> { 
    <replaceable>signalname</replaceable> (<replaceable>param</replaceable>, ...)
    ...
  }
  ...
}
</programlisting></informalexample>

<para>
<replaceable>key</replaceable> is a string consisting of a 
series of modifiers followed by the name of a key. The
modifiers can be:
<simplelist>
<member><literal>&lt;alt&gt;</literal></member>
<member><literal>&lt;control&gt;</literal></member>
<member><literal>&lt;mod1&gt;</literal></member>
<member><literal>&lt;mod2&gt;</literal></member>
<member><literal>&lt;mod3&gt;</literal></member>
<member><literal>&lt;mod4&gt;</literal></member>
<member><literal>&lt;mod5&gt;</literal></member>
<member><literal>&lt;release&gt;</literal></member>
<member><literal>&lt;shft&gt;</literal></member>
<member><literal>&lt;shift&gt;</literal></member>
</simplelist>
<literal>&lt;shft&gt;</literal> is an alias for 
<literal>&lt;shift&gt;</literal> and 
<literal>&lt;alt&gt;</literal> is an alias for
<literal>&lt;mod1&gt;</literal>.
</para>

<para>
The action that is bound to the key is a sequence
of signal names (strings) followed by parameters for 
each signal. The signals must be action signals.
(See <link linkend="g-signal-new">g_signal_new</link>()). Each parameter can be
a float, integer, string, or unquoted string
representing an enumeration value. The types of
the parameters specified must match the types of the 
parameters of the signal.
</para>

<para>
Binding sets are connected to widgets in the
same manner as styles, with one addition. 
A priority can be specified for each pattern,
and within each type of pattern, binding sets
override other binding sets first by priority,
and only then by order of specification. (Later
overrides earlier). The priorities that can
be specified are (highest to lowest):
<simplelist>
<member><literal>highest</literal></member>
<member><literal>rc</literal></member>
<member><literal>theme</literal></member>
<member><literal>application</literal></member>
<member><literal>gtk</literal></member>
<member><literal>lowest</literal></member>
</simplelist>
<literal>rc</literal> is the default for bindings
read from an RC file, <literal>theme</literal>
is the default for bindings read from theme RC files,
<literal>application</literal> 
should be used for bindings an application sets
up, and <literal>gtk</literal> is used for bindings
that GTK+ creates internally.
</para>
</refsect2>
</refsect1>

<refsect1>
<title>Details</title>
<refsect2>
<title><anchor id="GtkRcStyle-struct">struct GtkRcStyle</title>
<programlisting>struct GtkRcStyle {
  
  gchar *name;
  gchar *bg_pixmap_name[5];
  PangoFontDescription *font_desc;

  GtkRcFlags color_flags[5];
  GdkColor   fg[5];
  GdkColor   bg[5];
  GdkColor   text[5];
  GdkColor   base[5];

  gint xthickness;
  gint ythickness;

};
</programlisting>
<para>
The <link linkend="GtkRcStyle">GtkRcStyle</link> structure is used to represent a set
of information about the appearance of a widget.
This can later be composited together with other
<link linkend="GtkRcStyle">GtkRcStyle</link> structures to form a <link linkend="GtkStyle">GtkStyle</link>.
</para></refsect2>
<refsect2>
<title><anchor id="GtkRcFlags">enum GtkRcFlags</title>
<programlisting>typedef enum
{
  GTK_RC_FG		= 1 &lt;&lt; 0,
  GTK_RC_BG		= 1 &lt;&lt; 1,
  GTK_RC_TEXT		= 1 &lt;&lt; 2,
  GTK_RC_BASE		= 1 &lt;&lt; 3
} GtkRcFlags;
</programlisting>
<para>
The <link linkend="GtkRcFlags">GtkRcFlags</link> enumeration is used as a bitmask
to specify which fields of a <link linkend="GtkRcStyle">GtkRcStyle</link> have been
set for each state.
</para><informaltable pgwide="1" frame="none" role="enum">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row>
<entry><literal>GTK_RC_FG</literal></entry>
<entry>If present, the foreground color has been set for this state.
</entry>
</row>
<row>
<entry><literal>GTK_RC_BG</literal></entry>
<entry>If present, the background color has been set for this state.
</entry>
</row>
<row>
<entry><literal>GTK_RC_TEXT</literal></entry>
<entry>If present, the text color has been set for this state.
</entry>
</row>
<row>
<entry><literal>GTK_RC_BASE</literal></entry>
<entry>If present, the base color has been set for this state.

</entry>
</row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GtkRcTokenType">enum GtkRcTokenType</title>
<programlisting>typedef enum {
  GTK_RC_TOKEN_INVALID = G_TOKEN_LAST,
  GTK_RC_TOKEN_INCLUDE,
  GTK_RC_TOKEN_NORMAL,
  GTK_RC_TOKEN_ACTIVE,
  GTK_RC_TOKEN_PRELIGHT,
  GTK_RC_TOKEN_SELECTED,
  GTK_RC_TOKEN_INSENSITIVE,
  GTK_RC_TOKEN_FG,
  GTK_RC_TOKEN_BG,
  GTK_RC_TOKEN_TEXT,
  GTK_RC_TOKEN_BASE,
  GTK_RC_TOKEN_XTHICKNESS,
  GTK_RC_TOKEN_YTHICKNESS,
  GTK_RC_TOKEN_FONT,
  GTK_RC_TOKEN_FONTSET,
  GTK_RC_TOKEN_FONT_NAME,
  GTK_RC_TOKEN_BG_PIXMAP,
  GTK_RC_TOKEN_PIXMAP_PATH,
  GTK_RC_TOKEN_STYLE,
  GTK_RC_TOKEN_BINDING,
  GTK_RC_TOKEN_BIND,
  GTK_RC_TOKEN_WIDGET,
  GTK_RC_TOKEN_WIDGET_CLASS,
  GTK_RC_TOKEN_CLASS,
  GTK_RC_TOKEN_LOWEST,
  GTK_RC_TOKEN_GTK,
  GTK_RC_TOKEN_APPLICATION,
  GTK_RC_TOKEN_THEME,
  GTK_RC_TOKEN_RC,
  GTK_RC_TOKEN_HIGHEST,
  GTK_RC_TOKEN_ENGINE,
  GTK_RC_TOKEN_MODULE_PATH,
  GTK_RC_TOKEN_IM_MODULE_PATH,
  GTK_RC_TOKEN_IM_MODULE_FILE,
  GTK_RC_TOKEN_STOCK,
  GTK_RC_TOKEN_LTR,
  GTK_RC_TOKEN_RTL,
  GTK_RC_TOKEN_LAST
} GtkRcTokenType;
</programlisting>
<para>
The <link linkend="GtkRcTokenType">GtkRcTokenType</link> enumeration represents the tokens
in the RC file. It is exposed so that theme engines
can reuse these tokens when parsing the theme-engine
specific portions of a RC file.
</para></refsect2>
<refsect2>
<title><anchor id="gtk-rc-scanner-new">gtk_rc_scanner_new ()</title>
<programlisting><link linkend="GScanner">GScanner</link>*   gtk_rc_scanner_new              (void);</programlisting>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-rc-get-style">gtk_rc_get_style ()</title>
<programlisting><link linkend="GtkStyle">GtkStyle</link>*   gtk_rc_get_style                (<link linkend="GtkWidget">GtkWidget</link> *widget);</programlisting>
<para>
Finds all matching RC styles for a given widget,
composites them together, and then creates a 
<link linkend="GtkStyle">GtkStyle</link> representing the composite appearance.
(GTK+ actually keeps a cache of previously 
created styles, so a new style may not be
created.)</para>
<para>
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>widget</parameter>&nbsp;:</entry>
<entry> a <link linkend="GtkWidget">GtkWidget</link>
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry> the resulting style. No refcount is added
  to the returned style, so if you want to save this
  style around, you should add a reference yourself.
</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-rc-get-style-by-paths">gtk_rc_get_style_by_paths ()</title>
<programlisting><link linkend="GtkStyle">GtkStyle</link>*   gtk_rc_get_style_by_paths       (<link linkend="GtkSettings">GtkSettings</link> *settings,
                                             const char *widget_path,
                                             const char *class_path,
                                             <link linkend="GType">GType</link> type);</programlisting>
<para>
Creates up a <link linkend="GtkStyle">GtkStyle</link> from styles defined in a RC file by providing
the raw components used in matching. This function may be useful
when creating pseudo-widgets that should be themed like widgets but
don't actually have corresponding GTK+ widgets. An example of this
would be items inside a GNOME canvas widget.
</para>
<para>
The action of <link linkend="gtk-rc-get-style">gtk_rc_get_style</link>() is similar to:
<informalexample><programlisting>
<!> gtk_widget_path (widget, NULL, &amp;path, NULL);
<!> gtk_widget_class_path (widget, NULL, &amp;class_path, NULL);
<!> gtk_rc_get_style_by_paths (gtk_widget_get_settings (widget), path, class_path,
<!>                            G_OBJECT_TYPE (widget));
</programlisting></informalexample></para>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>settings</parameter>&nbsp;:</entry>
<entry> a <link linkend="GtkSettings">GtkSettings</link> object
</entry></row>
<row><entry align="right"><parameter>widget_path</parameter>&nbsp;:</entry>
<entry> the widget path to use when looking up the style, or <literal>NULL</literal>
              if no matching against the widget path should be done
</entry></row>
<row><entry align="right"><parameter>class_path</parameter>&nbsp;:</entry>
<entry> the class path to use when looking up the style, or <literal>NULL</literal>
              if no matching against the class path should be done.
</entry></row>
<row><entry align="right"><parameter>type</parameter>&nbsp;:</entry>
<entry> a type that will be used along with parent types of this type
       when matching against class styles, or <link linkend="G-TYPE-NONE-CAPS">G_TYPE_NONE</link>
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry> A style created by matching with the supplied paths,
  or <literal>NULL</literal> if nothing matching was specified and the default style should
  be used. The returned value is owned by GTK+ as part of an internal cache,
  so you must call <link linkend="g-object-ref">g_object_ref</link>() on the returned value if you want to
  keep a reference to it.
</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-rc-add-widget-name-style">gtk_rc_add_widget_name_style ()</title>
<programlisting>void        gtk_rc_add_widget_name_style    (<link linkend="GtkRcStyle">GtkRcStyle</link> *rc_style,
                                             const <link linkend="gchar">gchar</link> *pattern);</programlisting>
<warning>
<para>
<literal>gtk_rc_add_widget_name_style</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Adds a <link linkend="GtkRcStyle">GtkRcStyle</link> that will be looked up by a match against
the widget's pathname. This is equivalent to a:
<literal>
widget PATTERN style STYLE
</literal>
statement in a RC file.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>rc_style</parameter>&nbsp;:</entry>
<entry>the <link linkend="GtkRcStyle">GtkRcStyle</link> to use for widgets matching <parameter>pattern</parameter>
</entry></row>
<row><entry align="right"><parameter>pattern</parameter>&nbsp;:</entry>
<entry>the pattern


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-rc-add-widget-class-style">gtk_rc_add_widget_class_style ()</title>
<programlisting>void        gtk_rc_add_widget_class_style   (<link linkend="GtkRcStyle">GtkRcStyle</link> *rc_style,
                                             const <link linkend="gchar">gchar</link> *pattern);</programlisting>
<warning>
<para>
<literal>gtk_rc_add_widget_class_style</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Adds a <link linkend="GtkRcStyle">GtkRcStyle</link> that will be looked up by a match against
the widget's class pathname. This is equivalent to a:
<literal>
widget_class PATTERN style STYLE
</literal>
statement in a RC file.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>rc_style</parameter>&nbsp;:</entry>
<entry>the <link linkend="GtkRcStyle">GtkRcStyle</link> to use for widgets matching <parameter>pattern</parameter>
</entry></row>
<row><entry align="right"><parameter>pattern</parameter>&nbsp;:</entry>
<entry>the pattern


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-rc-add-class-style">gtk_rc_add_class_style ()</title>
<programlisting>void        gtk_rc_add_class_style          (<link linkend="GtkRcStyle">GtkRcStyle</link> *rc_style,
                                             const <link linkend="gchar">gchar</link> *pattern);</programlisting>
<warning>
<para>
<literal>gtk_rc_add_class_style</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Adds a <link linkend="GtkRcStyle">GtkRcStyle</link> that will be looked up by a matching against
the class hierarchy of the widget. This is equivalent to a:
<literal>
class PATTERN style STYLE
</literal>
statement in a RC file.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>rc_style</parameter>&nbsp;:</entry>
<entry>the <link linkend="GtkRcStyle">GtkRcStyle</link> to use for widgets deriving from <parameter>pattern</parameter>
</entry></row>
<row><entry align="right"><parameter>pattern</parameter>&nbsp;:</entry>
<entry>the pattern


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-rc-parse">gtk_rc_parse ()</title>
<programlisting>void        gtk_rc_parse                    (const <link linkend="gchar">gchar</link> *filename);</programlisting>
<para>
Parses a given resource file.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>filename</parameter>&nbsp;:</entry>
<entry>the filename of a file to parse. If <parameter>filename</parameter> is not absolute, it
  is searched in the current directory.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-rc-parse-string">gtk_rc_parse_string ()</title>
<programlisting>void        gtk_rc_parse_string             (const <link linkend="gchar">gchar</link> *rc_string);</programlisting>
<para>
Parses resource information directly from a string.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>rc_string</parameter>&nbsp;:</entry>
<entry>a string to parse.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-rc-reparse-all">gtk_rc_reparse_all ()</title>
<programlisting><link linkend="gboolean">gboolean</link>    gtk_rc_reparse_all              (void);</programlisting>
<para>
If the modification time on any previously read file for the
default <link linkend="GtkSettings">GtkSettings</link> has changed, discard all style information
and then reread all previously read RC files.</para>
<para>
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>  <literal>TRUE</literal> if the files were reread.
</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-rc-reparse-all-for-settings">gtk_rc_reparse_all_for_settings ()</title>
<programlisting><link linkend="gboolean">gboolean</link>    gtk_rc_reparse_all_for_settings (<link linkend="GtkSettings">GtkSettings</link> *settings,
                                             <link linkend="gboolean">gboolean</link> force_load);</programlisting>
<para>
If the modification time on any previously read file
for the given <link linkend="GtkSettings">GtkSettings</link> has changed, discard all style information
and then reread all previously read RC files.</para>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>settings</parameter>&nbsp;:</entry>
<entry> a <link linkend="GtkSettings">GtkSettings</link>
</entry></row>
<row><entry align="right"><parameter>force_load</parameter>&nbsp;:</entry>
<entry> load whether or not anything changed
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry> <literal>TRUE</literal> if the files were reread.
</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-rc-add-default-file">gtk_rc_add_default_file ()</title>
<programlisting>void        gtk_rc_add_default_file         (const <link linkend="gchar">gchar</link> *filename);</programlisting>
<para>
Adds a file to the list of files to be parsed at the
end of <link linkend="gtk-init">gtk_init</link>().</para>
<para>
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>filename</parameter>&nbsp;:</entry>
<entry> the pathname to the file. If <parameter>filename</parameter> is not absolute, it
   is searched in the current directory.
</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-rc-get-default-files">gtk_rc_get_default_files ()</title>
<programlisting><link linkend="gchar">gchar</link>**     gtk_rc_get_default_files        (void);</programlisting>
<para>
Retrieves the current list of RC files that will be parsed
at the end of <link linkend="gtk-init">gtk_init</link>().</para>
<para>
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry> A <literal>NULL</literal>-terminated array of filenames. This memory
is owned by GTK+ and must not be freed by the application.
If you want to store this information, you should make a copy.
</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-rc-set-default-files">gtk_rc_set_default_files ()</title>
<programlisting>void        gtk_rc_set_default_files        (<link linkend="gchar">gchar</link> **filenames);</programlisting>
<para>
Sets the list of files that GTK+ will read at the
end of <link linkend="gtk-init">gtk_init</link>().</para>
<para>
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>filenames</parameter>&nbsp;:</entry>
<entry> A <literal>NULL</literal>-terminated list of filenames.
</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-rc-parse-color">gtk_rc_parse_color ()</title>
<programlisting><link linkend="guint">guint</link>       gtk_rc_parse_color              (<link linkend="GScanner">GScanner</link> *scanner,
                                             <link linkend="GdkColor">GdkColor</link> *color);</programlisting>
<para>
Parses a color in the <link linkend="color-format">format</link> expected in a RC file.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>scanner</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkScanner">GtkScanner</link>
</entry></row>
<row><entry align="right"><parameter>color</parameter>&nbsp;:</entry>
<entry>a pointer to a <link linkend="GtkColor">GtkColor</link> structure in which to store the result
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry><literal>G_TOKEN_NONE</literal> if parsing suceeded, otherwise the token
that was expected but not found.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-rc-parse-state">gtk_rc_parse_state ()</title>
<programlisting><link linkend="guint">guint</link>       gtk_rc_parse_state              (<link linkend="GScanner">GScanner</link> *scanner,
                                             <link linkend="GtkStateType">GtkStateType</link> *state);</programlisting>
<para>
Parses a <link linkend="GtkStateType">GtkStateType</link> variable from the format expected
in a RC file.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>scanner</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkScanner">GtkScanner</link> (must be initialized for parsing an RC file)
</entry></row>
<row><entry align="right"><parameter>state</parameter>&nbsp;:</entry>
<entry>A pointer to a <link linkend="GtkStateType">GtkStateType</link> variable in which to
store the result.
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry><literal>G_TOKEN_NONE</literal> if parsing suceeded, otherwise the token
that was expected but not found.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-rc-parse-priority">gtk_rc_parse_priority ()</title>
<programlisting><link linkend="guint">guint</link>       gtk_rc_parse_priority           (<link linkend="GScanner">GScanner</link> *scanner,
                                             <link linkend="GtkPathPriorityType">GtkPathPriorityType</link> *priority);</programlisting>
<para>
Parses a <link linkend="GtkPathPriorityType">GtkPathPriorityType</link> variable from the format expected
in a RC file.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>scanner</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkScanner">GtkScanner</link> (must be initialized for parsing an RC file)
</entry></row>
<row><entry align="right"><parameter>priority</parameter>&nbsp;:</entry>
<entry>A pointer to <link linkend="GtkPathPriorityType">GtkPathPriorityType</link> variable in which
to store the result.
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry><literal>G_TOKEN_NONE</literal> if parsing suceeded, otherwise the token
that was expected but not found.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-rc-find-module-in-path">gtk_rc_find_module_in_path ()</title>
<programlisting><link linkend="gchar">gchar</link>*      gtk_rc_find_module_in_path      (const <link linkend="gchar">gchar</link> *module_file);</programlisting>
<para>
Searches for a theme engine in the GTK+ search path. This function
is not useful for applications and should not be used.</para>
<para>
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>module_file</parameter>&nbsp;:</entry>
<entry> name of a theme engine
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry> The filename, if found (must be freed with <link linkend="g-free">g_free</link>()),
  otherwise <literal>NULL</literal>.
</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-rc-find-pixmap-in-path">gtk_rc_find_pixmap_in_path ()</title>
<programlisting><link linkend="gchar">gchar</link>*      gtk_rc_find_pixmap_in_path      (<link linkend="GtkSettings">GtkSettings</link> *settings,
                                             <link linkend="GScanner">GScanner</link> *scanner,
                                             const <link linkend="gchar">gchar</link> *pixmap_file);</programlisting>
<para>
Looks up a file in pixmap path for the specified <link linkend="GtkSettings">GtkSettings</link>.
If the file is not found, it outputs a warning message using
<link linkend="g-warning">g_warning</link>() and returns <literal>NULL</literal>.</para>
<para>
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>settings</parameter>&nbsp;:</entry>
<entry> a <link linkend="GtkSettings">GtkSettings</link>
</entry></row>
<row><entry align="right"><parameter>scanner</parameter>&nbsp;:</entry>
<entry> Scanner used to get line number information for the
  warning message, or <literal>NULL</literal>
</entry></row>
<row><entry align="right"><parameter>pixmap_file</parameter>&nbsp;:</entry>
<entry> name of the pixmap file to locate.
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry> the filename. 
</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-rc-get-module-dir">gtk_rc_get_module_dir ()</title>
<programlisting><link linkend="gchar">gchar</link>*      gtk_rc_get_module_dir           (void);</programlisting>
<para>
Returns a directory in which GTK+ looks for theme engines.
For full information about the search for theme engines,
see the docs for <envar>GTK_PATH</envar> in
<xref linkend="gtk-running">.</para>
<para>
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry> the directory. (Must be freed with <link linkend="g-free">g_free</link>())
</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-rc-get-im-module-path">gtk_rc_get_im_module_path ()</title>
<programlisting><link linkend="gchar">gchar</link>*      gtk_rc_get_im_module_path       (void);</programlisting>
<para>
Obtains the path in which to look for IM modules. See the documentation
of the <link linkend="im-module-path"><envar>GTK_PATH</envar></link>
environment variable for more details about looking up modules. This
function is useful solely for utilities supplied with GTK+ and should
not be used by applications under normal circumstances.</para>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry> a newly-allocated string containing the path in which to 
   look for IM modules.
</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-rc-get-im-module-file">gtk_rc_get_im_module_file ()</title>
<programlisting><link linkend="gchar">gchar</link>*      gtk_rc_get_im_module_file       (void);</programlisting>
<para>
Obtains the path to the IM modules file. See the documentation
of the <link linkend="im-module-file"><envar>GTK_IM_MODULE_FILE</envar></link>
environment variable for more details.</para>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry> a newly-allocated string containing the name of the file
listing the IM modules available for loading
</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-rc-get-theme-dir">gtk_rc_get_theme_dir ()</title>
<programlisting><link linkend="gchar">gchar</link>*      gtk_rc_get_theme_dir            (void);</programlisting>
<para>
Returns the standard directory in which themes should
be installed. (GTK+ does not actually use this directory
itself.)
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>The directory (must be freed with <link linkend="g-free">g_free</link>()).


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-rc-style-new">gtk_rc_style_new ()</title>
<programlisting><link linkend="GtkRcStyle">GtkRcStyle</link>* gtk_rc_style_new                (void);</programlisting>
<para>
Creates a new <link linkend="GtkRcStyle">GtkRcStyle</link> with no fields set and
a reference count of 1.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>the newly-created <link linkend="GtkRcStyle">GtkRcStyle</link>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-rc-style-copy">gtk_rc_style_copy ()</title>
<programlisting><link linkend="GtkRcStyle">GtkRcStyle</link>* gtk_rc_style_copy               (<link linkend="GtkRcStyle">GtkRcStyle</link> *orig);</programlisting>
<para>
Makes a copy of the specified <link linkend="GtkRcStyle">GtkRcStyle</link>. This function
will correctly copy an RC style that is a member of a class
derived from <link linkend="GtkRcStyle">GtkRcStyle</link>.</para>
<para>

</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>orig</parameter>&nbsp;:</entry>
<entry> the style to copy
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry> the resulting <link linkend="GtkRcStyle">GtkRcStyle</link>
</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-rc-style-ref">gtk_rc_style_ref ()</title>
<programlisting>void        gtk_rc_style_ref                (<link linkend="GtkRcStyle">GtkRcStyle</link> *rc_style);</programlisting>
<para>
Increments the reference count of a <link linkend="GtkRcStyle">GtkRcStyle</link>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>rc_style</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkRcStyle">GtkRcStyle</link>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-rc-style-unref">gtk_rc_style_unref ()</title>
<programlisting>void        gtk_rc_style_unref              (<link linkend="GtkRcStyle">GtkRcStyle</link> *rc_style);</programlisting>
<para>
Decrements the reference count of a <link linkend="GtkRcStyle">GtkRcStyle</link> and
frees if the result is 0.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>rc_style</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkRcStyle">GtkRcStyle</link>


</entry></row>
</tbody></tgroup></informaltable></refsect2>

</refsect1>




</refentry>
