<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Conceptual differences: GIO Reference Manual</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="GIO Reference Manual">
<link rel="up" href="ch34.html" title="Migrating from GConf to GSettings">
<link rel="prev" href="ch34.html" title="Migrating from GConf to GSettings">
<link rel="next" href="ch34s03.html" title="GConfClient (and GConfBridge) API conversion">
<meta name="generator" content="GTK-Doc V1.25.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="ch34.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="ch34.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="ch34s03.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="id-1.5.4.3"></a>Conceptual differences</h2></div></div></div>
<p>
        Conceptually, GConf and GSettings are fairly similar. Both
        have a concept of pluggable backends. Both keep information
        about keys and their types in schemas. Both have a concept of
        mandatory values, which lets you implement lock-down.
      </p>
<p>
        There are some differences in the approach to schemas. GConf
        installs the schemas into the database and has API to handle
        schema information (<code class="function">gconf_client_get_default_from_schema()</code>,
        <code class="function">gconf_value_get_schema()</code>, etc). GSettings on the other hand
        assumes that an application knows its own schemas, and does
        not provide API to handle schema information at runtime.
        GSettings is also more strict about requiring a schema whenever
        you want to read or write a key. To deal with more free-form
        information that would appear in schema-less entries in GConf,
        GSettings allows for schemas to be 'relocatable'.
      </p>
<p>
        One difference in the way applications interact with their
        settings is that with GConf you interact with a tree of
        settings (ie the keys you pass to functions when reading
        or writing values are actually paths with the actual name
        of the key as the last element. With GSettings, you create
        a GSettings object which has an implicit prefix that determines
        where the settings get stored in the global tree of settings,
        but the keys you pass when reading or writing values are just
        the key names, not the full path.
      </p>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25.1</div>
</body>
</html>