<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.5"/> <title>Geany: stash.h File Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">Geany  <span id="projectnumber">1.23.1</span> </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.5 --> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>Globals</span></a></li> </ul> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="summary"> <a href="#typedef-members">Typedefs</a> | <a href="#func-members">Functions</a> </div> <div class="headertitle"> <div class="title">stash.h File Reference</div> </div> </div><!--header--> <div class="contents"> <p>Lightweight library for reading/writing <code>GKeyFile</code> settings and synchronizing widgets with C variables. <a href="#details">More...</a></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> Typedefs</h2></td></tr> <tr class="memitem:a3afd3193cc9a18b69df8e6936d83efdf"><td class="memItemLeft" align="right" valign="top">typedef typedefG_BEGIN_DECLS <br class="typebreak"/> struct StashGroup </td><td class="memItemRight" valign="bottom"><a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a></td></tr> <tr class="memdesc:a3afd3193cc9a18b69df8e6936d83efdf"><td class="mdescLeft"> </td><td class="mdescRight">Opaque type for a group of settings. <a href="#a3afd3193cc9a18b69df8e6936d83efdf">More...</a><br/></td></tr> <tr class="separator:a3afd3193cc9a18b69df8e6936d83efdf"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a85ab8977a73631effbcb8ce64adc0e8b"><td class="memItemLeft" align="right" valign="top">typedef gconstpointer </td><td class="memItemRight" valign="bottom"><a class="el" href="stash_8h.html#a85ab8977a73631effbcb8ce64adc0e8b">StashWidgetID</a></td></tr> <tr class="memdesc:a85ab8977a73631effbcb8ce64adc0e8b"><td class="mdescLeft"> </td><td class="mdescRight">Can be <code>GtkWidget*</code> or <code>gchar*</code> depending on whether the <em>owner</em> argument is used for <a class="el" href="stash_8h.html#a4dcf7692381c00315467bfed8da6da31" title="Applies Stash settings to widgets, usually called before displaying the widgets. ">stash_group_display()</a> and <a class="el" href="stash_8h.html#aae26428424ceac586890d0b9b6d017f9" title="Applies widget values to Stash settings, usually called after displaying the widgets. ">stash_group_update()</a>. <a href="#a85ab8977a73631effbcb8ce64adc0e8b">More...</a><br/></td></tr> <tr class="separator:a85ab8977a73631effbcb8ce64adc0e8b"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> Functions</h2></td></tr> <tr class="memitem:ad6c04aa05565985b82d60528b6611600"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="stash_8h.html#ad6c04aa05565985b82d60528b6611600">stash_group_add_boolean</a> (<a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> *group, gboolean *setting, const gchar *key_name, gboolean default_value)</td></tr> <tr class="memdesc:ad6c04aa05565985b82d60528b6611600"><td class="mdescLeft"> </td><td class="mdescRight">Adds boolean setting. <a href="#ad6c04aa05565985b82d60528b6611600">More...</a><br/></td></tr> <tr class="separator:ad6c04aa05565985b82d60528b6611600"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:abf51a719815c512d262d8ee9d38488df"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="stash_8h.html#abf51a719815c512d262d8ee9d38488df">stash_group_add_combo_box</a> (<a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> *group, gint *setting, const gchar *key_name, gint default_value, <a class="el" href="stash_8h.html#a85ab8977a73631effbcb8ce64adc0e8b">StashWidgetID</a> widget_id)</td></tr> <tr class="memdesc:abf51a719815c512d262d8ee9d38488df"><td class="mdescLeft"> </td><td class="mdescRight">Adds a <code>GtkComboBox</code> widget pref. <a href="#abf51a719815c512d262d8ee9d38488df">More...</a><br/></td></tr> <tr class="separator:abf51a719815c512d262d8ee9d38488df"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a02af96d48cc9c184129cdce9093da839"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="stash_8h.html#a02af96d48cc9c184129cdce9093da839">stash_group_add_combo_box_entry</a> (<a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> *group, gchar **setting, const gchar *key_name, const gchar *default_value, <a class="el" href="stash_8h.html#a85ab8977a73631effbcb8ce64adc0e8b">StashWidgetID</a> widget_id)</td></tr> <tr class="memdesc:a02af96d48cc9c184129cdce9093da839"><td class="mdescLeft"> </td><td class="mdescRight">Adds a <code>GtkComboBoxEntry</code> widget pref. <a href="#a02af96d48cc9c184129cdce9093da839">More...</a><br/></td></tr> <tr class="separator:a02af96d48cc9c184129cdce9093da839"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:afab734dc626bed4f910009eb1f474e96"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="stash_8h.html#afab734dc626bed4f910009eb1f474e96">stash_group_add_entry</a> (<a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> *group, gchar **setting, const gchar *key_name, const gchar *default_value, <a class="el" href="stash_8h.html#a85ab8977a73631effbcb8ce64adc0e8b">StashWidgetID</a> widget_id)</td></tr> <tr class="memdesc:afab734dc626bed4f910009eb1f474e96"><td class="mdescLeft"> </td><td class="mdescRight">Adds a <code>GtkEntry</code> widget pref. <a href="#afab734dc626bed4f910009eb1f474e96">More...</a><br/></td></tr> <tr class="separator:afab734dc626bed4f910009eb1f474e96"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a71dfa4afcb3c721a9338c3ecf91da90c"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="stash_8h.html#a71dfa4afcb3c721a9338c3ecf91da90c">stash_group_add_integer</a> (<a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> *group, gint *setting, const gchar *key_name, gint default_value)</td></tr> <tr class="memdesc:a71dfa4afcb3c721a9338c3ecf91da90c"><td class="mdescLeft"> </td><td class="mdescRight">Adds integer setting. <a href="#a71dfa4afcb3c721a9338c3ecf91da90c">More...</a><br/></td></tr> <tr class="separator:a71dfa4afcb3c721a9338c3ecf91da90c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a0089855ff8d255b986ed459981a01e95"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="stash_8h.html#a0089855ff8d255b986ed459981a01e95">stash_group_add_radio_buttons</a> (<a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> *group, gint *setting, const gchar *key_name, gint default_value, <a class="el" href="stash_8h.html#a85ab8977a73631effbcb8ce64adc0e8b">StashWidgetID</a> widget_id, gint enum_id,...) G_GNUC_NULL_TERMINATED</td></tr> <tr class="memdesc:a0089855ff8d255b986ed459981a01e95"><td class="mdescLeft"> </td><td class="mdescRight">Adds a <code>GtkRadioButton</code> widget group pref. <a href="#a0089855ff8d255b986ed459981a01e95">More...</a><br/></td></tr> <tr class="separator:a0089855ff8d255b986ed459981a01e95"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a26254f33543f48e05b15569681b2891d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="stash_8h.html#a26254f33543f48e05b15569681b2891d">stash_group_add_spin_button_integer</a> (<a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> *group, gint *setting, const gchar *key_name, gint default_value, <a class="el" href="stash_8h.html#a85ab8977a73631effbcb8ce64adc0e8b">StashWidgetID</a> widget_id)</td></tr> <tr class="memdesc:a26254f33543f48e05b15569681b2891d"><td class="mdescLeft"> </td><td class="mdescRight">Adds a <code>GtkSpinButton</code> widget pref. <a href="#a26254f33543f48e05b15569681b2891d">More...</a><br/></td></tr> <tr class="separator:a26254f33543f48e05b15569681b2891d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a3e50062fed452034c7f0e3c9919c43bd"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="stash_8h.html#a3e50062fed452034c7f0e3c9919c43bd">stash_group_add_string</a> (<a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> *group, gchar **setting, const gchar *key_name, const gchar *default_value)</td></tr> <tr class="memdesc:a3e50062fed452034c7f0e3c9919c43bd"><td class="mdescLeft"> </td><td class="mdescRight">Adds string setting. <a href="#a3e50062fed452034c7f0e3c9919c43bd">More...</a><br/></td></tr> <tr class="separator:a3e50062fed452034c7f0e3c9919c43bd"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a740daabf56fa44a8fac60ae7073b6cea"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="stash_8h.html#a740daabf56fa44a8fac60ae7073b6cea">stash_group_add_string_vector</a> (<a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> *group, gchar ***setting, const gchar *key_name, const gchar **default_value)</td></tr> <tr class="memdesc:a740daabf56fa44a8fac60ae7073b6cea"><td class="mdescLeft"> </td><td class="mdescRight">Adds string vector setting (array of strings). <a href="#a740daabf56fa44a8fac60ae7073b6cea">More...</a><br/></td></tr> <tr class="separator:a740daabf56fa44a8fac60ae7073b6cea"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a4974033abb92118cf6e91d109692c9e7"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="stash_8h.html#a4974033abb92118cf6e91d109692c9e7">stash_group_add_toggle_button</a> (<a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> *group, gboolean *setting, const gchar *key_name, gboolean default_value, <a class="el" href="stash_8h.html#a85ab8977a73631effbcb8ce64adc0e8b">StashWidgetID</a> widget_id)</td></tr> <tr class="memdesc:a4974033abb92118cf6e91d109692c9e7"><td class="mdescLeft"> </td><td class="mdescRight">Adds a <code>GtkToggleButton</code> (or <code>GtkCheckButton</code>) widget pref. <a href="#a4974033abb92118cf6e91d109692c9e7">More...</a><br/></td></tr> <tr class="separator:a4974033abb92118cf6e91d109692c9e7"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ade0d8980af35c7fe74e1318f770fdec5"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="stash_8h.html#ade0d8980af35c7fe74e1318f770fdec5">stash_group_add_widget_property</a> (<a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> *group, gpointer setting, const gchar *key_name, gpointer default_value, <a class="el" href="stash_8h.html#a85ab8977a73631effbcb8ce64adc0e8b">StashWidgetID</a> widget_id, const gchar *property_name, GType type)</td></tr> <tr class="memdesc:ade0d8980af35c7fe74e1318f770fdec5"><td class="mdescLeft"> </td><td class="mdescRight">Adds a widget's read/write property to the stash group. <a href="#ade0d8980af35c7fe74e1318f770fdec5">More...</a><br/></td></tr> <tr class="separator:ade0d8980af35c7fe74e1318f770fdec5"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a4dcf7692381c00315467bfed8da6da31"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="stash_8h.html#a4dcf7692381c00315467bfed8da6da31">stash_group_display</a> (<a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> *group, GtkWidget *owner)</td></tr> <tr class="memdesc:a4dcf7692381c00315467bfed8da6da31"><td class="mdescLeft"> </td><td class="mdescRight">Applies Stash settings to widgets, usually called before displaying the widgets. <a href="#a4dcf7692381c00315467bfed8da6da31">More...</a><br/></td></tr> <tr class="separator:a4dcf7692381c00315467bfed8da6da31"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae3e4b533975b5b732a4a1d55fd590444"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="stash_8h.html#ae3e4b533975b5b732a4a1d55fd590444">stash_group_free</a> (<a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> *group)</td></tr> <tr class="memdesc:ae3e4b533975b5b732a4a1d55fd590444"><td class="mdescLeft"> </td><td class="mdescRight">Frees a group. <a href="#ae3e4b533975b5b732a4a1d55fd590444">More...</a><br/></td></tr> <tr class="separator:ae3e4b533975b5b732a4a1d55fd590444"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a1a1fcb5df42b98f2cfe214a5ed4cb18e"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="stash_8h.html#a1a1fcb5df42b98f2cfe214a5ed4cb18e">stash_group_free_settings</a> (<a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> *group)</td></tr> <tr class="memdesc:a1a1fcb5df42b98f2cfe214a5ed4cb18e"><td class="mdescLeft"> </td><td class="mdescRight">Frees the memory allocated for setting values in a group. <a href="#a1a1fcb5df42b98f2cfe214a5ed4cb18e">More...</a><br/></td></tr> <tr class="separator:a1a1fcb5df42b98f2cfe214a5ed4cb18e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a7804616f767ee50364caa7ecba6858c4"><td class="memItemLeft" align="right" valign="top">gboolean </td><td class="memItemRight" valign="bottom"><a class="el" href="stash_8h.html#a7804616f767ee50364caa7ecba6858c4">stash_group_load_from_file</a> (<a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> *group, const gchar *filename)</td></tr> <tr class="memdesc:a7804616f767ee50364caa7ecba6858c4"><td class="mdescLeft"> </td><td class="mdescRight">Reads group settings from a configuration file using <code>GKeyFile</code>. <a href="#a7804616f767ee50364caa7ecba6858c4">More...</a><br/></td></tr> <tr class="separator:a7804616f767ee50364caa7ecba6858c4"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a9b173ae58f08a07775f939e29110b0ba"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="stash_8h.html#a9b173ae58f08a07775f939e29110b0ba">stash_group_load_from_key_file</a> (<a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> *group, GKeyFile *keyfile)</td></tr> <tr class="memdesc:a9b173ae58f08a07775f939e29110b0ba"><td class="mdescLeft"> </td><td class="mdescRight">Reads key values from <em>keyfile</em> into the group settings. <a href="#a9b173ae58f08a07775f939e29110b0ba">More...</a><br/></td></tr> <tr class="separator:a9b173ae58f08a07775f939e29110b0ba"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a8b4766025f96efa595380a9e143850f3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="stash_8h.html#a8b4766025f96efa595380a9e143850f3">stash_group_new</a> (const gchar *name)</td></tr> <tr class="memdesc:a8b4766025f96efa595380a9e143850f3"><td class="mdescLeft"> </td><td class="mdescRight">Creates a new group. <a href="#a8b4766025f96efa595380a9e143850f3">More...</a><br/></td></tr> <tr class="separator:a8b4766025f96efa595380a9e143850f3"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a4f8f9f765ef3cb9234b78da8b6204da0"><td class="memItemLeft" align="right" valign="top">gint </td><td class="memItemRight" valign="bottom"><a class="el" href="stash_8h.html#a4f8f9f765ef3cb9234b78da8b6204da0">stash_group_save_to_file</a> (<a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> *group, const gchar *filename, GKeyFileFlags flags)</td></tr> <tr class="memdesc:a4f8f9f765ef3cb9234b78da8b6204da0"><td class="mdescLeft"> </td><td class="mdescRight">Writes group settings to a configuration file using <code>GKeyFile</code>. <a href="#a4f8f9f765ef3cb9234b78da8b6204da0">More...</a><br/></td></tr> <tr class="separator:a4f8f9f765ef3cb9234b78da8b6204da0"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a4e9af4712a026b177f3ba556423e56ee"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="stash_8h.html#a4e9af4712a026b177f3ba556423e56ee">stash_group_save_to_key_file</a> (<a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> *group, GKeyFile *keyfile)</td></tr> <tr class="memdesc:a4e9af4712a026b177f3ba556423e56ee"><td class="mdescLeft"> </td><td class="mdescRight">Writes group settings into key values in <em>keyfile</em>. <a href="#a4e9af4712a026b177f3ba556423e56ee">More...</a><br/></td></tr> <tr class="separator:a4e9af4712a026b177f3ba556423e56ee"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aae26428424ceac586890d0b9b6d017f9"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="stash_8h.html#aae26428424ceac586890d0b9b6d017f9">stash_group_update</a> (<a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> *group, GtkWidget *owner)</td></tr> <tr class="memdesc:aae26428424ceac586890d0b9b6d017f9"><td class="mdescLeft"> </td><td class="mdescRight">Applies widget values to Stash settings, usually called after displaying the widgets. <a href="#aae26428424ceac586890d0b9b6d017f9">More...</a><br/></td></tr> <tr class="separator:aae26428424ceac586890d0b9b6d017f9"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <div class="textblock"><p>Lightweight library for reading/writing <code>GKeyFile</code> settings and synchronizing widgets with C variables. </p> <p>Note: Stash should only depend on GLib and GTK, but currently has some minor dependencies on Geany's utils.c.</p> <h1><a class="anchor" id="Terms"></a> Terms</h1> <p>'Setting' is used only for data stored on disk or in memory. 'Pref' can also include visual widget information.</p> <h1><a class="anchor" id="Memory"></a> Usage</h1> <p>Stash will not duplicate strings if they are normally static arrays, such as keyfile group names and key names, string default values, widget_id names, property names.</p> <h1><a class="anchor" id="String"></a> Settings</h1> <p>String settings and other dynamically allocated settings will be initialized to NULL when added to a StashGroup (so they can safely be reassigned later).</p> <h1><a class="anchor" id="Widget"></a> Support</h1> <p>Widgets very commonly used in configuration dialogs will be supported with their own function. Widgets less commonly used such as <code>GtkExpander</code> or widget settings that aren't commonly needed to be persistent won't be directly supported, to keep the library lightweight. However, you can use <a class="el" href="stash_8h.html#ade0d8980af35c7fe74e1318f770fdec5" title="Adds a widget's read/write property to the stash group. ">stash_group_add_widget_property()</a> to also save these settings for any read/write widget property. Macros could be added for common widget properties such as <code>GtkExpander:"expanded"</code>.</p> <h1><a class="anchor" id="settings-example"></a> Settings Example</h1> <p>Here we have some settings for how to make a cup - whether it should be made of china and who's going to make it. (Yes, it's a stupid example). </p> <div class="fragment"><div class="line"><a class="code" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> *group;</div> <div class="line">gboolean china_enabled;</div> <div class="line">gchar *potter_name;</div> <div class="line"><span class="keyword">const</span> gchar filename[] = <span class="stringliteral">"/path/data.conf"</span>;</div> <div class="line"></div> <div class="line"><span class="comment">/* setup the group */</span></div> <div class="line">group = <a class="code" href="stash_8h.html#a8b4766025f96efa595380a9e143850f3">stash_group_new</a>(<span class="stringliteral">"cup"</span>);</div> <div class="line"><a class="code" href="stash_8h.html#ad6c04aa05565985b82d60528b6611600">stash_group_add_boolean</a>(group, &china_enabled, <span class="stringliteral">"china"</span>, TRUE);</div> <div class="line"><a class="code" href="stash_8h.html#a3e50062fed452034c7f0e3c9919c43bd">stash_group_add_string</a>(group, &potter_name, <span class="stringliteral">"potter_name"</span>, <span class="stringliteral">"Miss Clay"</span>);</div> <div class="line"></div> <div class="line"><span class="comment">/* load the settings from a file */</span></div> <div class="line"><span class="keywordflow">if</span> (!<a class="code" href="stash_8h.html#a7804616f767ee50364caa7ecba6858c4">stash_group_load_from_file</a>(group, filename))</div> <div class="line"> g_warning(_(<span class="stringliteral">"Could not load keyfile %s!"</span>), filename);</div> <div class="line"></div> <div class="line"><span class="comment">/* now use settings china_enabled and potter_name */</span></div> <div class="line">...</div> <div class="line"></div> <div class="line"><span class="comment">/* save settings to file */</span></div> <div class="line">if (<a class="code" href="stash_8h.html#a4f8f9f765ef3cb9234b78da8b6204da0">stash_group_save_to_file</a>(group, filename, G_KEY_FILE_NONE) != 0)</div> <div class="line"> g_error(_(<span class="stringliteral">"Could not save keyfile %s!"</span>), filename);</div> <div class="line"></div> <div class="line"><span class="comment">/* free memory */</span></div> <div class="line"><a class="code" href="stash_8h.html#ae3e4b533975b5b732a4a1d55fd590444">stash_group_free</a>(group);</div> </div><!-- fragment --> <dl class="section note"><dt>Note</dt><dd>You might want to handle the warning/error conditions differently from above.</dd></dl> <h1><a class="anchor" id="prefs-example"></a> GUI Prefs Example</h1> <p>For prefs, it's the same as the above example but you tell Stash to add widget prefs instead of just data settings.</p> <p>This example uses lookup strings for widgets as they are more flexible than widget pointers. Code to load and save the settings is omitted - see the first example instead.</p> <p>Here we show a dialog with a toggle button for whether the cup should have a handle. </p> <div class="fragment"><div class="line">gboolean want_handle;</div> <div class="line"><a class="code" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> *group = ...;</div> <div class="line"></div> <div class="line"><span class="comment">/* Add the stash setting first so we can load it from disk if we want.</span></div> <div class="line"><span class="comment"> * Effectively, stash_group_add_boolean() is called for you.</span></div> <div class="line"><span class="comment"> * We need to use either a widget pointer or a widget name, and as we</span></div> <div class="line"><span class="comment"> * haven't created the widget yet we'll use a name - check_handle. */</span></div> <div class="line"><a class="code" href="stash_8h.html#a4974033abb92118cf6e91d109692c9e7">stash_group_add_toggle_button</a>(group, &want_handle, <span class="stringliteral">"handle"</span>, TRUE, <span class="stringliteral">"check_handle"</span>);</div> <div class="line"></div> <div class="line"><span class="comment">/* here we could load the setting from disk */</span></div> <div class="line"></div> <div class="line">...</div> <div class="line"><span class="comment">/* Later we create a dialog holding the toggle button widget.</span></div> <div class="line"><span class="comment"> * (Note: a check button is a subclass of a toggle button). */</span></div> <div class="line">GtkWidget *dialog = ...;</div> <div class="line">GtkWidget *check_button = gtk_check_button_new_with_label(_(<span class="stringliteral">"Handle"</span>));</div> <div class="line"></div> <div class="line"><span class="comment">/* pack the widget into the dialog */</span></div> <div class="line">gtk_container_add(GTK_CONTAINER(dialog->vbox), check_button);</div> <div class="line"></div> <div class="line"><span class="comment">/* Now we set a name to lookup the widget from the dialog.</span></div> <div class="line"><span class="comment"> * We must remember to pass 'dialog' as an argument to Stash later. */</span></div> <div class="line"><a class="code" href="ui__utils_8h.html#a1b85118a02d043d001b58f0fdaeaa762">ui_hookup_widget</a>(dialog, check_button, <span class="stringliteral">"check_handle"</span>);</div> <div class="line"></div> <div class="line">...</div> <div class="line"><span class="comment">/* At some point we want to display the dialog.</span></div> <div class="line"><span class="comment"> * First we apply the want_handle boolean variable to the widget */</span></div> <div class="line">stash_group_display(group, dialog);</div> <div class="line"></div> <div class="line"><span class="comment">/* now display the dialog */</span></div> <div class="line">gtk_widget_show_all(dialog);</div> <div class="line"></div> <div class="line"><span class="comment">/* let the user manipulate widgets */</span></div> <div class="line">...</div> <div class="line"><span class="comment">/* Now synchronize the want_handle variable */</span></div> <div class="line">stash_group_update(group, dialog);</div> </div><!-- fragment --> <dl class="section note"><dt>Note</dt><dd>This example should also work for other widget containers besides dialogs, e.g. popup menus. </dd></dl> </div><h2 class="groupheader">Typedef Documentation</h2> <a class="anchor" id="a3afd3193cc9a18b69df8e6936d83efdf"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef typedefG_BEGIN_DECLS struct StashGroup StashGroup</td> </tr> </table> </div><div class="memdoc"> <p>Opaque type for a group of settings. </p> </div> </div> <a class="anchor" id="a85ab8977a73631effbcb8ce64adc0e8b"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef gconstpointer <a class="el" href="stash_8h.html#a85ab8977a73631effbcb8ce64adc0e8b">StashWidgetID</a></td> </tr> </table> </div><div class="memdoc"> <p>Can be <code>GtkWidget*</code> or <code>gchar*</code> depending on whether the <em>owner</em> argument is used for <a class="el" href="stash_8h.html#a4dcf7692381c00315467bfed8da6da31" title="Applies Stash settings to widgets, usually called before displaying the widgets. ">stash_group_display()</a> and <a class="el" href="stash_8h.html#aae26428424ceac586890d0b9b6d017f9" title="Applies widget values to Stash settings, usually called after displaying the widgets. ">stash_group_update()</a>. </p> </div> </div> <h2 class="groupheader">Function Documentation</h2> <a class="anchor" id="ad6c04aa05565985b82d60528b6611600"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void stash_group_add_boolean </td> <td>(</td> <td class="paramtype"><a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> * </td> <td class="paramname"><em>group</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">gboolean * </td> <td class="paramname"><em>setting</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const gchar * </td> <td class="paramname"><em>key_name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">gboolean </td> <td class="paramname"><em>default_value</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Adds boolean setting. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">group</td><td>. </td></tr> <tr><td class="paramname">setting</td><td>Address of setting variable. </td></tr> <tr><td class="paramname">key_name</td><td>Name for key in a <code>GKeyFile</code>. </td></tr> <tr><td class="paramname">default_value</td><td>Value to use if the key doesn't exist when loading. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="abf51a719815c512d262d8ee9d38488df"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void stash_group_add_combo_box </td> <td>(</td> <td class="paramtype"><a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> * </td> <td class="paramname"><em>group</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">gint * </td> <td class="paramname"><em>setting</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const gchar * </td> <td class="paramname"><em>key_name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">gint </td> <td class="paramname"><em>default_value</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="stash_8h.html#a85ab8977a73631effbcb8ce64adc0e8b">StashWidgetID</a> </td> <td class="paramname"><em>widget_id</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Adds a <code>GtkComboBox</code> widget pref. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">group</td><td>. </td></tr> <tr><td class="paramname">setting</td><td>Address of setting variable. </td></tr> <tr><td class="paramname">key_name</td><td>Name for key in a <code>GKeyFile</code>. </td></tr> <tr><td class="paramname">default_value</td><td>Value to use if the key doesn't exist when loading. </td></tr> <tr><td class="paramname">widget_id</td><td><code>GtkWidget</code> pointer or string to lookup widget later. </td></tr> </table> </dd> </dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="stash_8h.html#a02af96d48cc9c184129cdce9093da839" title="Adds a GtkComboBoxEntry widget pref. ">stash_group_add_combo_box_entry()</a>. </dd></dl> </div> </div> <a class="anchor" id="a02af96d48cc9c184129cdce9093da839"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void stash_group_add_combo_box_entry </td> <td>(</td> <td class="paramtype"><a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> * </td> <td class="paramname"><em>group</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">gchar ** </td> <td class="paramname"><em>setting</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const gchar * </td> <td class="paramname"><em>key_name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const gchar * </td> <td class="paramname"><em>default_value</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="stash_8h.html#a85ab8977a73631effbcb8ce64adc0e8b">StashWidgetID</a> </td> <td class="paramname"><em>widget_id</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Adds a <code>GtkComboBoxEntry</code> widget pref. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">group</td><td>. </td></tr> <tr><td class="paramname">setting</td><td>Address of setting variable. </td></tr> <tr><td class="paramname">key_name</td><td>Name for key in a <code>GKeyFile</code>. </td></tr> <tr><td class="paramname">default_value</td><td>Value to use if the key doesn't exist when loading. </td></tr> <tr><td class="paramname">widget_id</td><td><code>GtkWidget</code> pointer or string to lookup widget later. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="afab734dc626bed4f910009eb1f474e96"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void stash_group_add_entry </td> <td>(</td> <td class="paramtype"><a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> * </td> <td class="paramname"><em>group</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">gchar ** </td> <td class="paramname"><em>setting</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const gchar * </td> <td class="paramname"><em>key_name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const gchar * </td> <td class="paramname"><em>default_value</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="stash_8h.html#a85ab8977a73631effbcb8ce64adc0e8b">StashWidgetID</a> </td> <td class="paramname"><em>widget_id</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Adds a <code>GtkEntry</code> widget pref. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">group</td><td>. </td></tr> <tr><td class="paramname">setting</td><td>Address of setting variable. </td></tr> <tr><td class="paramname">key_name</td><td>Name for key in a <code>GKeyFile</code>. </td></tr> <tr><td class="paramname">default_value</td><td>Value to use if the key doesn't exist when loading. </td></tr> <tr><td class="paramname">widget_id</td><td><code>GtkWidget</code> pointer or string to lookup widget later. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a71dfa4afcb3c721a9338c3ecf91da90c"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void stash_group_add_integer </td> <td>(</td> <td class="paramtype"><a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> * </td> <td class="paramname"><em>group</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">gint * </td> <td class="paramname"><em>setting</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const gchar * </td> <td class="paramname"><em>key_name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">gint </td> <td class="paramname"><em>default_value</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Adds integer setting. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">group</td><td>. </td></tr> <tr><td class="paramname">setting</td><td>Address of setting variable. </td></tr> <tr><td class="paramname">key_name</td><td>Name for key in a <code>GKeyFile</code>. </td></tr> <tr><td class="paramname">default_value</td><td>Value to use if the key doesn't exist when loading. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a0089855ff8d255b986ed459981a01e95"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void stash_group_add_radio_buttons </td> <td>(</td> <td class="paramtype"><a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> * </td> <td class="paramname"><em>group</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">gint * </td> <td class="paramname"><em>setting</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const gchar * </td> <td class="paramname"><em>key_name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">gint </td> <td class="paramname"><em>default_value</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="stash_8h.html#a85ab8977a73631effbcb8ce64adc0e8b">StashWidgetID</a> </td> <td class="paramname"><em>widget_id</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">gint </td> <td class="paramname"><em>enum_id</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname"><em>...</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Adds a <code>GtkRadioButton</code> widget group pref. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">group</td><td>. </td></tr> <tr><td class="paramname">setting</td><td>Address of setting variable. </td></tr> <tr><td class="paramname">key_name</td><td>Name for key in a <code>GKeyFile</code>. </td></tr> <tr><td class="paramname">default_value</td><td>Value to use if the key doesn't exist when loading. </td></tr> <tr><td class="paramname">widget_id</td><td><code>GtkWidget</code> pointer or string to lookup widget later. </td></tr> <tr><td class="paramname">enum_id</td><td>Enum value for <em>widget_id</em>. </td></tr> <tr><td class="paramname">...</td><td>pairs of <em>widget_id</em>, <em>enum_id</em>. Example (using widget lookup strings, but widget pointers can also work): <div class="fragment"><div class="line">* <span class="keyword">enum</span> {FOO, BAR};</div> <div class="line">* <a class="code" href="stash_8h.html#a0089855ff8d255b986ed459981a01e95">stash_group_add_radio_buttons</a>(group, &which_one_setting, <span class="stringliteral">"which_one"</span>, BAR,</div> <div class="line">* <span class="stringliteral">"radio_foo"</span>, FOO, <span class="stringliteral">"radio_bar"</span>, BAR, NULL);</div> <div class="line">* </div> </div><!-- fragment --> </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a26254f33543f48e05b15569681b2891d"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void stash_group_add_spin_button_integer </td> <td>(</td> <td class="paramtype"><a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> * </td> <td class="paramname"><em>group</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">gint * </td> <td class="paramname"><em>setting</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const gchar * </td> <td class="paramname"><em>key_name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">gint </td> <td class="paramname"><em>default_value</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="stash_8h.html#a85ab8977a73631effbcb8ce64adc0e8b">StashWidgetID</a> </td> <td class="paramname"><em>widget_id</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Adds a <code>GtkSpinButton</code> widget pref. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">group</td><td>. </td></tr> <tr><td class="paramname">setting</td><td>Address of setting variable. </td></tr> <tr><td class="paramname">key_name</td><td>Name for key in a <code>GKeyFile</code>. </td></tr> <tr><td class="paramname">default_value</td><td>Value to use if the key doesn't exist when loading. </td></tr> <tr><td class="paramname">widget_id</td><td><code>GtkWidget</code> pointer or string to lookup widget later. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a3e50062fed452034c7f0e3c9919c43bd"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void stash_group_add_string </td> <td>(</td> <td class="paramtype"><a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> * </td> <td class="paramname"><em>group</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">gchar ** </td> <td class="paramname"><em>setting</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const gchar * </td> <td class="paramname"><em>key_name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const gchar * </td> <td class="paramname"><em>default_value</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Adds string setting. </p> <p>The contents of <em>setting</em> will be initialized to <code>NULL</code>. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">group</td><td>. </td></tr> <tr><td class="paramname">setting</td><td>Address of setting variable. </td></tr> <tr><td class="paramname">key_name</td><td>Name for key in a <code>GKeyFile</code>. </td></tr> <tr><td class="paramname">default_value</td><td>String to copy if the key doesn't exist when loading, or <code>NULL</code>. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a740daabf56fa44a8fac60ae7073b6cea"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void stash_group_add_string_vector </td> <td>(</td> <td class="paramtype"><a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> * </td> <td class="paramname"><em>group</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">gchar *** </td> <td class="paramname"><em>setting</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const gchar * </td> <td class="paramname"><em>key_name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const gchar ** </td> <td class="paramname"><em>default_value</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Adds string vector setting (array of strings). </p> <p>The contents of <em>setting</em> will be initialized to <code>NULL</code>. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">group</td><td>. </td></tr> <tr><td class="paramname">setting</td><td>Address of setting variable. </td></tr> <tr><td class="paramname">key_name</td><td>Name for key in a <code>GKeyFile</code>. </td></tr> <tr><td class="paramname">default_value</td><td>Vector to copy if the key doesn't exist when loading. Usually <code>NULL</code>. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a4974033abb92118cf6e91d109692c9e7"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void stash_group_add_toggle_button </td> <td>(</td> <td class="paramtype"><a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> * </td> <td class="paramname"><em>group</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">gboolean * </td> <td class="paramname"><em>setting</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const gchar * </td> <td class="paramname"><em>key_name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">gboolean </td> <td class="paramname"><em>default_value</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="stash_8h.html#a85ab8977a73631effbcb8ce64adc0e8b">StashWidgetID</a> </td> <td class="paramname"><em>widget_id</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Adds a <code>GtkToggleButton</code> (or <code>GtkCheckButton</code>) widget pref. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">group</td><td>. </td></tr> <tr><td class="paramname">setting</td><td>Address of setting variable. </td></tr> <tr><td class="paramname">key_name</td><td>Name for key in a <code>GKeyFile</code>. </td></tr> <tr><td class="paramname">default_value</td><td>Value to use if the key doesn't exist when loading. </td></tr> <tr><td class="paramname">widget_id</td><td><code>GtkWidget</code> pointer or string to lookup widget later. </td></tr> </table> </dd> </dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="stash_8h.html#a0089855ff8d255b986ed459981a01e95" title="Adds a GtkRadioButton widget group pref. ">stash_group_add_radio_buttons()</a>. </dd></dl> </div> </div> <a class="anchor" id="ade0d8980af35c7fe74e1318f770fdec5"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void stash_group_add_widget_property </td> <td>(</td> <td class="paramtype"><a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> * </td> <td class="paramname"><em>group</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">gpointer </td> <td class="paramname"><em>setting</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const gchar * </td> <td class="paramname"><em>key_name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">gpointer </td> <td class="paramname"><em>default_value</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="stash_8h.html#a85ab8977a73631effbcb8ce64adc0e8b">StashWidgetID</a> </td> <td class="paramname"><em>widget_id</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const gchar * </td> <td class="paramname"><em>property_name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">GType </td> <td class="paramname"><em>type</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Adds a widget's read/write property to the stash group. </p> <p>The property will be set when calling <a class="el" href="stash_8h.html#a4dcf7692381c00315467bfed8da6da31" title="Applies Stash settings to widgets, usually called before displaying the widgets. ">stash_group_display()</a>, and read when calling <a class="el" href="stash_8h.html#aae26428424ceac586890d0b9b6d017f9" title="Applies widget values to Stash settings, usually called after displaying the widgets. ">stash_group_update()</a>. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">group</td><td>. </td></tr> <tr><td class="paramname">setting</td><td>Address of e.g. an integer if using an integer property. </td></tr> <tr><td class="paramname">key_name</td><td>Name for key in a <code>GKeyFile</code>. </td></tr> <tr><td class="paramname">default_value</td><td>Value to use if the key doesn't exist when loading. Should be cast into a pointer e.g. with <code>GINT_TO_POINTER()</code>. </td></tr> <tr><td class="paramname">widget_id</td><td><code>GtkWidget</code> pointer or string to lookup widget later. </td></tr> <tr><td class="paramname">property_name</td><td>. </td></tr> <tr><td class="paramname">type</td><td>can be <code>0</code> if passing a <code>GtkWidget</code> as the <em>widget_id</em> argument to look it up from the <code>GObject</code> data. </td></tr> </table> </dd> </dl> <dl class="section warning"><dt>Warning</dt><dd>Currently only string GValue properties will be freed before setting; patch for other types - see <code>handle_widget_property()</code>. </dd></dl> </div> </div> <a class="anchor" id="a4dcf7692381c00315467bfed8da6da31"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void stash_group_display </td> <td>(</td> <td class="paramtype"><a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> * </td> <td class="paramname"><em>group</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">GtkWidget * </td> <td class="paramname"><em>owner</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Applies Stash settings to widgets, usually called before displaying the widgets. </p> <p>The <em>owner</em> argument depends on which type you use for <a class="el" href="stash_8h.html#a85ab8977a73631effbcb8ce64adc0e8b">StashWidgetID</a>. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">group</td><td>. </td></tr> <tr><td class="paramname">owner</td><td>If non-NULL, used to lookup widgets by name, otherwise widget pointers are assumed. </td></tr> </table> </dd> </dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="stash_8h.html#aae26428424ceac586890d0b9b6d017f9" title="Applies widget values to Stash settings, usually called after displaying the widgets. ">stash_group_update()</a>. </dd></dl> </div> </div> <a class="anchor" id="ae3e4b533975b5b732a4a1d55fd590444"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void stash_group_free </td> <td>(</td> <td class="paramtype"><a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> * </td> <td class="paramname"><em>group</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Frees a group. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">group</td><td>. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a1a1fcb5df42b98f2cfe214a5ed4cb18e"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void stash_group_free_settings </td> <td>(</td> <td class="paramtype"><a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> * </td> <td class="paramname"><em>group</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Frees the memory allocated for setting values in a group. </p> <p>Useful e.g. to avoid freeing strings individually. </p> <dl class="section note"><dt>Note</dt><dd>This is <em>not</em> called by <a class="el" href="stash_8h.html#ae3e4b533975b5b732a4a1d55fd590444" title="Frees a group. ">stash_group_free()</a>. </dd></dl> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">group</td><td>. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a7804616f767ee50364caa7ecba6858c4"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">gboolean stash_group_load_from_file </td> <td>(</td> <td class="paramtype"><a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> * </td> <td class="paramname"><em>group</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const gchar * </td> <td class="paramname"><em>filename</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Reads group settings from a configuration file using <code>GKeyFile</code>. </p> <dl class="section note"><dt>Note</dt><dd>Stash settings will be initialized to defaults if the keyfile couldn't be loaded from disk. </dd></dl> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">group</td><td>. </td></tr> <tr><td class="paramname">filename</td><td>Filename of the file to read, in locale encoding. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><code>TRUE</code> if a key file could be loaded. </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="stash_8h.html#a9b173ae58f08a07775f939e29110b0ba" title="Reads key values from keyfile into the group settings. ">stash_group_load_from_key_file()</a>. </dd></dl> </div> </div> <a class="anchor" id="a9b173ae58f08a07775f939e29110b0ba"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void stash_group_load_from_key_file </td> <td>(</td> <td class="paramtype"><a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> * </td> <td class="paramname"><em>group</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">GKeyFile * </td> <td class="paramname"><em>keyfile</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Reads key values from <em>keyfile</em> into the group settings. </p> <dl class="section note"><dt>Note</dt><dd>You should still call this even if the keyfile couldn't be loaded from disk so that all Stash settings are initialized to defaults. </dd></dl> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">group</td><td>. </td></tr> <tr><td class="paramname">keyfile</td><td>Usually loaded from a configuration file first. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a8b4766025f96efa595380a9e143850f3"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a>* stash_group_new </td> <td>(</td> <td class="paramtype">const gchar * </td> <td class="paramname"><em>name</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Creates a new group. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">name</td><td>Name used for <code>GKeyFile</code> group. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>Group. </dd></dl> </div> </div> <a class="anchor" id="a4f8f9f765ef3cb9234b78da8b6204da0"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">gint stash_group_save_to_file </td> <td>(</td> <td class="paramtype"><a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> * </td> <td class="paramname"><em>group</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const gchar * </td> <td class="paramname"><em>filename</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">GKeyFileFlags </td> <td class="paramname"><em>flags</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Writes group settings to a configuration file using <code>GKeyFile</code>. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">group</td><td>. </td></tr> <tr><td class="paramname">filename</td><td>Filename of the file to write, in locale encoding. </td></tr> <tr><td class="paramname">flags</td><td>Keyfile options - <code>G_KEY_FILE_NONE</code> is the most efficient. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 if the file was successfully written, otherwise the <code>errno</code> of the failed operation is returned. </dd></dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="stash_8h.html#a4e9af4712a026b177f3ba556423e56ee" title="Writes group settings into key values in keyfile. ">stash_group_save_to_key_file()</a>. </dd></dl> </div> </div> <a class="anchor" id="a4e9af4712a026b177f3ba556423e56ee"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void stash_group_save_to_key_file </td> <td>(</td> <td class="paramtype"><a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> * </td> <td class="paramname"><em>group</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">GKeyFile * </td> <td class="paramname"><em>keyfile</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Writes group settings into key values in <em>keyfile</em>. </p> <p><em>keyfile</em> is usually written to a configuration file afterwards. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">group</td><td>. </td></tr> <tr><td class="paramname">keyfile</td><td>. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="aae26428424ceac586890d0b9b6d017f9"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void stash_group_update </td> <td>(</td> <td class="paramtype"><a class="el" href="stash_8h.html#a3afd3193cc9a18b69df8e6936d83efdf">StashGroup</a> * </td> <td class="paramname"><em>group</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">GtkWidget * </td> <td class="paramname"><em>owner</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Applies widget values to Stash settings, usually called after displaying the widgets. </p> <p>The <em>owner</em> argument depends on which type you use for <a class="el" href="stash_8h.html#a85ab8977a73631effbcb8ce64adc0e8b">StashWidgetID</a>. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">group</td><td>. </td></tr> <tr><td class="paramname">owner</td><td>If non-NULL, used to lookup widgets by name, otherwise widget pointers are assumed. </td></tr> </table> </dd> </dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="stash_8h.html#a4dcf7692381c00315467bfed8da6da31" title="Applies Stash settings to widgets, usually called before displaying the widgets. ">stash_group_display()</a>. </dd></dl> </div> </div> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated on Fri Oct 18 2013 23:44:59 for Geany by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.5 </small></address> </body> </html>