New upstream version 3.23.2

This commit is contained in:
Andrea Azzarone
2018-08-09 13:46:53 +03:00
882 changed files with 323996 additions and 311120 deletions

View File

@ -3,12 +3,12 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>GtkListStore: GTK+ 3 Reference Manual</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot">
<link rel="home" href="index.html" title="GTK+ 3 Reference Manual">
<link rel="up" href="TreeWidgetObjects.html" title="Tree, List and Icon Grid Widgets">
<link rel="prev" href="GtkCellRendererSpinner.html" title="GtkCellRendererSpinner">
<link rel="next" href="GtkTreeStore.html" title="GtkTreeStore">
<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
<meta name="generator" content="GTK-Doc V1.28 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@ -261,55 +261,109 @@ application writer to call <a class="link" href="GtkTreeModel.html#gtk-tree-mode
<a class="link" href="GtkTreeModel.html#GtkTreeModel-row-changed" title="The “row-changed” signal"><span class="type">“row_changed”</span></a> signal. This most commonly affects lists with
<span class="type">GdkPixbufs</span> stored.</p>
<p>An example for creating a simple list store:</p>
<div class="informalexample"><pre class="programlisting">
enum {
COLUMN_STRING,
COLUMN_INT,
COLUMN_BOOLEAN,
N_COLUMNS
};
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td class="listing_lines" align="right"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47</pre></td>
<td class="listing_code"><pre class="programlisting"><span class="keyword">enum</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal"> COLUMN_STRING</span><span class="symbol">,</span>
<span class="normal"> COLUMN_INT</span><span class="symbol">,</span>
<span class="normal"> COLUMN_BOOLEAN</span><span class="symbol">,</span>
<span class="normal"> N_COLUMNS</span>
<span class="cbracket">}</span><span class="symbol">;</span>
{
GtkListStore *list_store;
GtkTreePath *path;
GtkTreeIter iter;
gint i;
<span class="cbracket">{</span>
<span class="normal"> </span><span class="usertype">GtkListStore</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">list_store</span><span class="symbol">;</span>
<span class="normal"> </span><span class="usertype">GtkTreePath</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">path</span><span class="symbol">;</span>
<span class="normal"> </span><span class="usertype">GtkTreeIter</span><span class="normal"> iter</span><span class="symbol">;</span>
<span class="normal"> </span><span class="usertype">gint</span><span class="normal"> i</span><span class="symbol">;</span>
list_store = gtk_list_store_new (N_COLUMNS,
G_TYPE_STRING,
G_TYPE_INT,
G_TYPE_BOOLEAN);
<span class="normal"> list_store </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GtkListStore.html#gtk-list-store-new">gtk_list_store_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">N_COLUMNS</span><span class="symbol">,</span>
<span class="normal"> G_TYPE_STRING</span><span class="symbol">,</span>
<span class="normal"> G_TYPE_INT</span><span class="symbol">,</span>
<span class="normal"> G_TYPE_BOOLEAN</span><span class="symbol">);</span>
for (i = 0; i &lt; 10; i++)
{
gchar *some_data;
<span class="normal"> </span><span class="keyword">for</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">i </span><span class="symbol">=</span><span class="normal"> </span><span class="number">0</span><span class="symbol">;</span><span class="normal"> i </span><span class="symbol">&lt;</span><span class="normal"> </span><span class="number">10</span><span class="symbol">;</span><span class="normal"> i</span><span class="symbol">++)</span>
<span class="normal"> </span><span class="cbracket">{</span>
<span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">some_data</span><span class="symbol">;</span>
some_data = get_some_data (i);
<span class="normal"> some_data </span><span class="symbol">=</span><span class="normal"> </span><span class="function">get_some_data</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">i</span><span class="symbol">);</span>
// Add a new row to the model
gtk_list_store_append (list_store, &amp;iter);
gtk_list_store_set (list_store, &amp;iter,
COLUMN_STRING, some_data,
COLUMN_INT, i,
COLUMN_BOOLEAN, FALSE,
-1);
<span class="normal"> </span><span class="comment">// Add a new row to the model</span>
<span class="normal"> </span><span class="function"><a href="GtkListStore.html#gtk-list-store-append">gtk_list_store_append</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">list_store</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">iter</span><span class="symbol">);</span>
<span class="normal"> </span><span class="function"><a href="GtkListStore.html#gtk-list-store-set">gtk_list_store_set</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">list_store</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">iter</span><span class="symbol">,</span>
<span class="normal"> COLUMN_STRING</span><span class="symbol">,</span><span class="normal"> some_data</span><span class="symbol">,</span>
<span class="normal"> COLUMN_INT</span><span class="symbol">,</span><span class="normal"> i</span><span class="symbol">,</span>
<span class="normal"> COLUMN_BOOLEAN</span><span class="symbol">,</span><span class="normal"> FALSE</span><span class="symbol">,</span>
<span class="normal"> </span><span class="symbol">-</span><span class="number">1</span><span class="symbol">);</span>
// As the store will keep a copy of the string internally,
// we free some_data.
g_free (some_data);
}
<span class="normal"> </span><span class="comment">// As the store will keep a copy of the string internally,</span>
<span class="normal"> </span><span class="comment">// we free some_data.</span>
<span class="normal"> </span><span class="function">g_free</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">some_data</span><span class="symbol">);</span>
<span class="normal"> </span><span class="cbracket">}</span>
<span class="normal"> </span><span class="comment">// Modify a particular row</span>
<span class="normal"> path </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GtkTreeModel.html#gtk-tree-path-new-from-string">gtk_tree_path_new_from_string</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"4"</span><span class="symbol">);</span>
<span class="normal"> </span><span class="function"><a href="GtkTreeModel.html#gtk-tree-model-get-iter">gtk_tree_model_get_iter</a></span><span class="normal"> </span><span class="symbol">(</span><span class="function">GTK_TREE_MODEL</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">list_store</span><span class="symbol">),</span>
<span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">iter</span><span class="symbol">,</span>
<span class="normal"> path</span><span class="symbol">);</span>
<span class="normal"> </span><span class="function"><a href="GtkTreeModel.html#gtk-tree-path-free">gtk_tree_path_free</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">path</span><span class="symbol">);</span>
<span class="normal"> </span><span class="function"><a href="GtkListStore.html#gtk-list-store-set">gtk_list_store_set</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">list_store</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">iter</span><span class="symbol">,</span>
<span class="normal"> COLUMN_BOOLEAN</span><span class="symbol">,</span><span class="normal"> TRUE</span><span class="symbol">,</span>
<span class="normal"> </span><span class="symbol">-</span><span class="number">1</span><span class="symbol">);</span>
<span class="cbracket">}</span></pre></td>
</tr>
</tbody>
</table>
</div>
// Modify a particular row
path = gtk_tree_path_new_from_string ("4");
gtk_tree_model_get_iter (GTK_TREE_MODEL (list_store),
&amp;iter,
path);
gtk_tree_path_free (path);
gtk_list_store_set (list_store, &amp;iter,
COLUMN_BOOLEAN, TRUE,
-1);
}
</pre></div>
<p></p>
<div class="refsect2">
<a name="id-1.3.12.27.8.7"></a><h3>Performance Considerations</h3>
@ -355,27 +409,53 @@ and one might consider it a layering violation to specify the content of
a list store in a UI definition, data, not presentation, and common wisdom
is to separate the two, as far as possible.</p>
<p>An example of a UI Definition fragment for a list store:</p>
<div class="informalexample"><pre class="programlisting">
&lt;object class="GtkListStore"&gt;
&lt;columns&gt;
&lt;column type="gchararray"/&gt;
&lt;column type="gchararray"/&gt;
&lt;column type="gint"/&gt;
&lt;/columns&gt;
&lt;data&gt;
&lt;row&gt;
&lt;col id="0"&gt;John&lt;/col&gt;
&lt;col id="1"&gt;Doe&lt;/col&gt;
&lt;col id="2"&gt;25&lt;/col&gt;
&lt;/row&gt;
&lt;row&gt;
&lt;col id="0"&gt;Johan&lt;/col&gt;
&lt;col id="1"&gt;Dahlin&lt;/col&gt;
&lt;col id="2"&gt;50&lt;/col&gt;
&lt;/row&gt;
&lt;/data&gt;
&lt;/object&gt;
</pre></div>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td class="listing_lines" align="right"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19</pre></td>
<td class="listing_code"><pre class="programlisting"><span class="symbol">&lt;</span><span class="usertype">object</span><span class="normal"> class</span><span class="symbol">=</span><span class="string">"GtkListStore"</span><span class="symbol">&gt;</span>
<span class="normal"> </span><span class="symbol">&lt;</span><span class="normal">columns</span><span class="symbol">&gt;</span>
<span class="normal"> </span><span class="symbol">&lt;</span><span class="usertype">column</span><span class="normal"> type</span><span class="symbol">=</span><span class="string">"gchararray"</span><span class="symbol">/&gt;</span>
<span class="normal"> </span><span class="symbol">&lt;</span><span class="usertype">column</span><span class="normal"> type</span><span class="symbol">=</span><span class="string">"gchararray"</span><span class="symbol">/&gt;</span>
<span class="normal"> </span><span class="symbol">&lt;</span><span class="usertype">column</span><span class="normal"> type</span><span class="symbol">=</span><span class="string">"gint"</span><span class="symbol">/&gt;</span>
<span class="normal"> </span><span class="symbol">&lt;/</span><span class="normal">columns</span><span class="symbol">&gt;</span>
<span class="normal"> </span><span class="symbol">&lt;</span><span class="normal">data</span><span class="symbol">&gt;</span>
<span class="normal"> </span><span class="symbol">&lt;</span><span class="normal">row</span><span class="symbol">&gt;</span>
<span class="normal"> </span><span class="symbol">&lt;</span><span class="usertype">col</span><span class="normal"> id</span><span class="symbol">=</span><span class="string">"0"</span><span class="symbol">&gt;</span><span class="normal">John</span><span class="symbol">&lt;/</span><span class="normal">col</span><span class="symbol">&gt;</span>
<span class="normal"> </span><span class="symbol">&lt;</span><span class="usertype">col</span><span class="normal"> id</span><span class="symbol">=</span><span class="string">"1"</span><span class="symbol">&gt;</span><span class="normal">Doe</span><span class="symbol">&lt;/</span><span class="normal">col</span><span class="symbol">&gt;</span>
<span class="normal"> </span><span class="symbol">&lt;</span><span class="usertype">col</span><span class="normal"> id</span><span class="symbol">=</span><span class="string">"2"</span><span class="symbol">&gt;</span><span class="number">25</span><span class="symbol">&lt;/</span><span class="normal">col</span><span class="symbol">&gt;</span>
<span class="normal"> </span><span class="symbol">&lt;/</span><span class="normal">row</span><span class="symbol">&gt;</span>
<span class="normal"> </span><span class="symbol">&lt;</span><span class="normal">row</span><span class="symbol">&gt;</span>
<span class="normal"> </span><span class="symbol">&lt;</span><span class="usertype">col</span><span class="normal"> id</span><span class="symbol">=</span><span class="string">"0"</span><span class="symbol">&gt;</span><span class="normal">Johan</span><span class="symbol">&lt;/</span><span class="normal">col</span><span class="symbol">&gt;</span>
<span class="normal"> </span><span class="symbol">&lt;</span><span class="usertype">col</span><span class="normal"> id</span><span class="symbol">=</span><span class="string">"1"</span><span class="symbol">&gt;</span><span class="normal">Dahlin</span><span class="symbol">&lt;/</span><span class="normal">col</span><span class="symbol">&gt;</span>
<span class="normal"> </span><span class="symbol">&lt;</span><span class="usertype">col</span><span class="normal"> id</span><span class="symbol">=</span><span class="string">"2"</span><span class="symbol">&gt;</span><span class="number">50</span><span class="symbol">&lt;/</span><span class="normal">col</span><span class="symbol">&gt;</span>
<span class="normal"> </span><span class="symbol">&lt;/</span><span class="normal">row</span><span class="symbol">&gt;</span>
<span class="normal"> </span><span class="symbol">&lt;/</span><span class="normal">data</span><span class="symbol">&gt;</span>
<span class="symbol">&lt;/</span><span class="normal">object</span><span class="symbol">&gt;</span></pre></td>
</tr>
</tbody>
</table>
</div>
<p></p>
</div>
</div>
@ -863,19 +943,37 @@ values given to this function.</p>
<p>Calling
<code class="literal">gtk_list_store_insert_with_values (list_store, iter, position...)</code>
has the same effect as calling</p>
<div class="informalexample"><pre class="programlisting">
static void
insert_value (GtkListStore *list_store,
GtkTreeIter *iter,
int position)
{
gtk_list_store_insert (list_store, iter, position);
gtk_list_store_set (list_store,
iter
// ...
);
}
</pre></div>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td class="listing_lines" align="right"><pre>1
2
3
4
5
6
7
8
9
10
11</pre></td>
<td class="listing_code"><pre class="programlisting"><span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
<span class="function">insert_value</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GtkListStore</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">list_store</span><span class="symbol">,</span>
<span class="normal"> </span><span class="usertype">GtkTreeIter</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">iter</span><span class="symbol">,</span>
<span class="normal"> </span><span class="type">int</span><span class="normal"> position</span><span class="symbol">)</span>
<span class="cbracket">{</span>
<span class="normal"> </span><span class="function"><a href="GtkListStore.html#gtk-list-store-insert">gtk_list_store_insert</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">list_store</span><span class="symbol">,</span><span class="normal"> iter</span><span class="symbol">,</span><span class="normal"> position</span><span class="symbol">);</span>
<span class="normal"> </span><span class="function"><a href="GtkListStore.html#gtk-list-store-set">gtk_list_store_set</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">list_store</span><span class="symbol">,</span>
<span class="normal"> iter</span>
<span class="normal"> </span><span class="comment">// ...</span>
<span class="normal"> </span><span class="symbol">);</span>
<span class="cbracket">}</span></pre></td>
</tr>
</tbody>
</table>
</div>
<p>
with the difference that the former will only emit a row_inserted signal,
while the latter will emit row_inserted, row_changed and, if the list store
@ -1286,6 +1384,6 @@ will be moved to the start of the list.</p>
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.27</div>
<hr>Generated by GTK-Doc V1.28</div>
</body>
</html>