<p dir="auto">Split from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1052799639" data-permission-text="Title is private" data-url="https://github.com/geany/geany/issues/3000" data-hovercard-type="pull_request" data-hovercard-url="/geany/geany/pull/3000/hovercard" href="https://github.com/geany/geany/pull/3000">#3000</a>.<br>
Adds double key type to stash settings.</p>
<p dir="auto">Example usage (<code>stash-example.c</code>):</p>
<div class="highlight highlight-source-c position-relative overflow-auto" data-snippet-clipboard-copy-content="StashGroup *group;
gboolean porcelain_enabled;
gchar *potter_name;
gint stock;
gdouble price;
const gchar filename[] = "/path/data.conf";

/* setup the group */
group = stash_group_new("cup");
stash_group_add_boolean(group, &porcelain_enabled, "porcelain", TRUE);
stash_group_add_string(group, &potter_name, "potter_name", "Miss Clay");
stash_group_add_integer(group, &stock, "stock", 5);
stash_group_add_double(group, &price, "price", 1.50);

/* load the settings from a file */
if (!stash_group_load_from_file(group, filename))
        g_warning(_("Could not load keyfile %s!"), filename);

/* now use settings porcelain_enabled, potter_name, stock, and price */
/* ... */

/* save settings to file */
if (stash_group_save_to_file(group, filename, G_KEY_FILE_NONE) != 0)
        g_error(_("Could not save keyfile %s!"), filename);

/* free memory */
stash_group_free(group);
"><pre>StashGroup *group;
gboolean porcelain_enabled;
gchar *potter_name;
gint stock;
gdouble price;
<span class="pl-k">const</span> gchar filename[] = <span class="pl-s"><span class="pl-pds">"</span>/path/data.conf<span class="pl-pds">"</span></span>;

<span class="pl-c"><span class="pl-c">/*</span> setup the group <span class="pl-c">*/</span></span>
group = stash_group_new(<span class="pl-s"><span class="pl-pds">"</span>cup<span class="pl-pds">"</span></span>);
<span class="pl-en">stash_group_add_boolean</span>(group, &porcelain_enabled, <span class="pl-s"><span class="pl-pds">"</span>porcelain<span class="pl-pds">"</span></span>, <span class="pl-c1">TRUE</span>);
<span class="pl-en">stash_group_add_string</span>(group, &potter_name, <span class="pl-s"><span class="pl-pds">"</span>potter_name<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>Miss Clay<span class="pl-pds">"</span></span>);
<span class="pl-en">stash_group_add_integer</span>(group, &stock, <span class="pl-s"><span class="pl-pds">"</span>stock<span class="pl-pds">"</span></span>, <span class="pl-c1">5</span>);
<span class="pl-en">stash_group_add_double</span>(group, &price, <span class="pl-s"><span class="pl-pds">"</span>price<span class="pl-pds">"</span></span>, <span class="pl-c1">1.50</span>);

<span class="pl-c"><span class="pl-c">/*</span> load the settings from a file <span class="pl-c">*/</span></span>
<span class="pl-k">if</span> (!stash_group_load_from_file(group, filename))
        <span class="pl-en">g_warning</span>(_(<span class="pl-s"><span class="pl-pds">"</span>Could not load keyfile <span class="pl-c1">%s</span>!<span class="pl-pds">"</span></span>), filename);

<span class="pl-c"><span class="pl-c">/*</span> now use settings porcelain_enabled, potter_name, stock, and price <span class="pl-c">*/</span></span>
<span class="pl-c"><span class="pl-c">/*</span> ... <span class="pl-c">*/</span></span>

<span class="pl-c"><span class="pl-c">/*</span> save settings to file <span class="pl-c">*/</span></span>
<span class="pl-k">if</span> (stash_group_save_to_file(group, filename, G_KEY_FILE_NONE) != <span class="pl-c1">0</span>)
        <span class="pl-en">g_error</span>(_(<span class="pl-s"><span class="pl-pds">"</span>Could not save keyfile <span class="pl-c1">%s</span>!<span class="pl-pds">"</span></span>), filename);

<span class="pl-c"><span class="pl-c">/*</span> free memory <span class="pl-c">*/</span></span>
<span class="pl-en">stash_group_free</span>(group);</pre></div>
<p dir="auto">Generated config:</p>
<div class="snippet-clipboard-content position-relative overflow-auto" data-snippet-clipboard-copy-content="[cup]
porcelain=true
potter_name=Miss Clay
stock=5
price=1.5
"><pre><code>[cup]
porcelain=true
potter_name=Miss Clay
stock=5
price=1.5
</code></pre></div>

<hr>

<h4>You can view, comment on, or merge this pull request online at:</h4>
<p>  <a href='https://github.com/geany/geany/pull/3004'>https://github.com/geany/geany/pull/3004</a></p>

<h4>Commit Summary</h4>
<ul>
  <li><a href="https://github.com/geany/geany/pull/3004/commits/1dfb6fd6b93a1ce9ec824970909d9071f9f515ed" class="commit-link">1dfb6fd</a>  Stash Settings: Add double key type</li>
</ul>

<h4 style="display: inline-block">File Changes </h4> <p style="display: inline-block">(<a href="https://github.com/geany/geany/pull/3004/files">6 files</a>)</p>
<ul>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/3004/files#diff-70a9cbc597e07288bef2c573503ed02fe7bb6c0def5845523e56ef276765b42b">doc/stash-example.c</a>
    (12)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/3004/files#diff-4316f93b38ec68bc3ee98a1ff6a08db0164f9baad6b3b2403909064202cc8fcc">src/plugindata.h</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/3004/files#diff-0c3db84681c58ad4dc7668d31387972c91347df06ee380375de338f321b5b537">src/stash.c</a>
    (35)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/3004/files#diff-0c9dc9d7e85e6ac35bdb7fdc99ece8330a38a45c3c7848617968c6b47aea3fc6">src/stash.h</a>
    (3)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/3004/files#diff-3e04e056edbdc0f772b0ffd1c93cef1187209f37276d40d2a281d9b989398a73">src/utils.c</a>
    (55)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/3004/files#diff-9022459f0ccbb7cf6daac6ecb5af4f37d240219981a8c23076c14c5f002f9c8c">src/utils.h</a>
    (2)
  </li>
</ul>

<h4>Patch Links:</h4>
<ul>
  <li><a href='https://github.com/geany/geany/pull/3004.patch'>https://github.com/geany/geany/pull/3004.patch</a></li>
  <li><a href='https://github.com/geany/geany/pull/3004.diff'>https://github.com/geany/geany/pull/3004.diff</a></li>
</ul>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/geany/geany/pull/3004">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AAIOWJZWQ5MVR3HEYHCNAILUMFRCNANCNFSM5ICQ4AGQ">unsubscribe</a>.<br />Triage notifications on the go with GitHub Mobile for <a href="https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675">iOS</a> or <a href="https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub">Android</a>.
<img src="https://github.com/notifications/beacon/AAIOWJYY7RV6OI4MUL5RSALUMFRCNA5CNFSM5ICQ4AG2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4PWTPLMQ.gif" height="1" width="1" alt="" /></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/geany/geany/pull/3004",
"url": "https://github.com/geany/geany/pull/3004",
"name": "View Pull Request"
},
"description": "View this Pull Request on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>