New upstream version 3.23.2
This commit is contained in:
@ -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 < 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"><</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, &iter);
|
||||
gtk_list_store_set (list_store, &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">&</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">&</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">&</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">&</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),
|
||||
&iter,
|
||||
path);
|
||||
gtk_tree_path_free (path);
|
||||
gtk_list_store_set (list_store, &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">
|
||||
<object class="GtkListStore">
|
||||
<columns>
|
||||
<column type="gchararray"/>
|
||||
<column type="gchararray"/>
|
||||
<column type="gint"/>
|
||||
</columns>
|
||||
<data>
|
||||
<row>
|
||||
<col id="0">John</col>
|
||||
<col id="1">Doe</col>
|
||||
<col id="2">25</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0">Johan</col>
|
||||
<col id="1">Dahlin</col>
|
||||
<col id="2">50</col>
|
||||
</row>
|
||||
</data>
|
||||
</object>
|
||||
</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"><</span><span class="usertype">object</span><span class="normal"> class</span><span class="symbol">=</span><span class="string">"GtkListStore"</span><span class="symbol">></span>
|
||||
<span class="normal"> </span><span class="symbol"><</span><span class="normal">columns</span><span class="symbol">></span>
|
||||
<span class="normal"> </span><span class="symbol"><</span><span class="usertype">column</span><span class="normal"> type</span><span class="symbol">=</span><span class="string">"gchararray"</span><span class="symbol">/></span>
|
||||
<span class="normal"> </span><span class="symbol"><</span><span class="usertype">column</span><span class="normal"> type</span><span class="symbol">=</span><span class="string">"gchararray"</span><span class="symbol">/></span>
|
||||
<span class="normal"> </span><span class="symbol"><</span><span class="usertype">column</span><span class="normal"> type</span><span class="symbol">=</span><span class="string">"gint"</span><span class="symbol">/></span>
|
||||
<span class="normal"> </span><span class="symbol"></</span><span class="normal">columns</span><span class="symbol">></span>
|
||||
<span class="normal"> </span><span class="symbol"><</span><span class="normal">data</span><span class="symbol">></span>
|
||||
<span class="normal"> </span><span class="symbol"><</span><span class="normal">row</span><span class="symbol">></span>
|
||||
<span class="normal"> </span><span class="symbol"><</span><span class="usertype">col</span><span class="normal"> id</span><span class="symbol">=</span><span class="string">"0"</span><span class="symbol">></span><span class="normal">John</span><span class="symbol"></</span><span class="normal">col</span><span class="symbol">></span>
|
||||
<span class="normal"> </span><span class="symbol"><</span><span class="usertype">col</span><span class="normal"> id</span><span class="symbol">=</span><span class="string">"1"</span><span class="symbol">></span><span class="normal">Doe</span><span class="symbol"></</span><span class="normal">col</span><span class="symbol">></span>
|
||||
<span class="normal"> </span><span class="symbol"><</span><span class="usertype">col</span><span class="normal"> id</span><span class="symbol">=</span><span class="string">"2"</span><span class="symbol">></span><span class="number">25</span><span class="symbol"></</span><span class="normal">col</span><span class="symbol">></span>
|
||||
<span class="normal"> </span><span class="symbol"></</span><span class="normal">row</span><span class="symbol">></span>
|
||||
<span class="normal"> </span><span class="symbol"><</span><span class="normal">row</span><span class="symbol">></span>
|
||||
<span class="normal"> </span><span class="symbol"><</span><span class="usertype">col</span><span class="normal"> id</span><span class="symbol">=</span><span class="string">"0"</span><span class="symbol">></span><span class="normal">Johan</span><span class="symbol"></</span><span class="normal">col</span><span class="symbol">></span>
|
||||
<span class="normal"> </span><span class="symbol"><</span><span class="usertype">col</span><span class="normal"> id</span><span class="symbol">=</span><span class="string">"1"</span><span class="symbol">></span><span class="normal">Dahlin</span><span class="symbol"></</span><span class="normal">col</span><span class="symbol">></span>
|
||||
<span class="normal"> </span><span class="symbol"><</span><span class="usertype">col</span><span class="normal"> id</span><span class="symbol">=</span><span class="string">"2"</span><span class="symbol">></span><span class="number">50</span><span class="symbol"></</span><span class="normal">col</span><span class="symbol">></span>
|
||||
<span class="normal"> </span><span class="symbol"></</span><span class="normal">row</span><span class="symbol">></span>
|
||||
<span class="normal"> </span><span class="symbol"></</span><span class="normal">data</span><span class="symbol">></span>
|
||||
<span class="symbol"></</span><span class="normal">object</span><span class="symbol">></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>
|
||||
Reference in New Issue
Block a user