New upstream version 3.24.34

This commit is contained in:
Simon McVittie
2022-06-01 16:13:05 +01:00
473 changed files with 306973 additions and 738624 deletions

View File

@ -74,7 +74,7 @@
<tbody>
<tr>
<td class="listing_lines" align="right"><pre>1</pre></td>
<td class="listing_code"><pre class="programlisting"><span class="n">GtkListStore</span> <span class="o">*</span><span class="n">store</span> <span class="o">=</span> <span class="n">gtk_list_store_new</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="n">G_TYPE_STRING</span><span class="p">,</span> <span class="n">G_TYPE_BOOLEAN</span><span class="p">);</span></pre></td>
<td class="listing_code"><pre class="programlisting"><span class="n">GtkListStore</span><span class="w"> </span><span class="o">*</span><span class="n">store</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">gtk_list_store_new</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">G_TYPE_STRING</span><span class="p">,</span><span class="w"> </span><span class="n">G_TYPE_BOOLEAN</span><span class="p">);</span><span class="w"></span></pre></td>
</tr>
</tbody>
</table>
@ -104,18 +104,18 @@
10
11
12</pre></td>
<td class="listing_code"><pre class="programlisting"><span class="k">enum</span>
<span class="p">{</span>
<span class="n">TITLE_COLUMN</span><span class="p">,</span>
<span class="n">AUTHOR_COLUMN</span><span class="p">,</span>
<span class="n">CHECKED_COLUMN</span><span class="p">,</span>
<span class="n">N_COLUMNS</span>
<span class="p">};</span>
<td class="listing_code"><pre class="programlisting"><span class="k">enum</span><span class="w"></span>
<span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">TITLE_COLUMN</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">AUTHOR_COLUMN</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">CHECKED_COLUMN</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">N_COLUMNS</span><span class="w"></span>
<span class="p">};</span><span class="w"></span>
<span class="n">GtkTreeStore</span> <span class="o">*</span><span class="n">store</span> <span class="o">=</span> <span class="n">gtk_tree_store_new</span> <span class="p">(</span><span class="n">N_COLUMNS</span><span class="p">,</span> <span class="cm">/* Total number of columns */</span>
<span class="n">G_TYPE_STRING</span><span class="p">,</span> <span class="cm">/* Book title */</span>
<span class="n">G_TYPE_STRING</span><span class="p">,</span> <span class="cm">/* Author */</span>
<span class="n">G_TYPE_BOOLEAN</span><span class="p">);</span> <span class="cm">/* Is checked out? */</span></pre></td>
<span class="n">GtkTreeStore</span><span class="w"> </span><span class="o">*</span><span class="n">store</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">gtk_tree_store_new</span><span class="w"> </span><span class="p">(</span><span class="n">N_COLUMNS</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Total number of columns */</span><span class="w"></span>
<span class="w"> </span><span class="n">G_TYPE_STRING</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Book title */</span><span class="w"></span>
<span class="w"> </span><span class="n">G_TYPE_STRING</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Author */</span><span class="w"></span>
<span class="w"> </span><span class="n">G_TYPE_BOOLEAN</span><span class="p">);</span><span class="w"> </span><span class="cm">/* Is checked out? */</span><span class="w"></span></pre></td>
</tr>
</tbody>
</table>
@ -145,15 +145,15 @@
7
8
9</pre></td>
<td class="listing_code"><pre class="programlisting"><span class="n">GtkTreeIter</span> <span class="n">iter</span><span class="p">;</span>
<td class="listing_code"><pre class="programlisting"><span class="n">GtkTreeIter</span><span class="w"> </span><span class="n">iter</span><span class="p">;</span><span class="w"></span>
<span class="n">gtk_tree_store_append</span> <span class="p">(</span><span class="n">store</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">iter</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span> <span class="cm">/* Acquire an iterator */</span>
<span class="n">gtk_tree_store_append</span><span class="w"> </span><span class="p">(</span><span class="n">store</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">iter</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span><span class="w"> </span><span class="cm">/* Acquire an iterator */</span><span class="w"></span>
<span class="n">gtk_tree_store_set</span> <span class="p">(</span><span class="n">store</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">iter</span><span class="p">,</span>
<span class="n">TITLE_COLUMN</span><span class="p">,</span> <span class="s">&quot;The Principle of Reason&quot;</span><span class="p">,</span>
<span class="n">AUTHOR_COLUMN</span><span class="p">,</span> <span class="s">&quot;Martin Heidegger&quot;</span><span class="p">,</span>
<span class="n">CHECKED_COLUMN</span><span class="p">,</span> <span class="n">FALSE</span><span class="p">,</span>
<span class="mi">-1</span><span class="p">);</span></pre></td>
<span class="n">gtk_tree_store_set</span><span class="w"> </span><span class="p">(</span><span class="n">store</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">iter</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">TITLE_COLUMN</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;The Principle of Reason&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">AUTHOR_COLUMN</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Martin Heidegger&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">CHECKED_COLUMN</span><span class="p">,</span><span class="w"> </span><span class="n">FALSE</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="mi">-1</span><span class="p">);</span><span class="w"></span></pre></td>
</tr>
</tbody>
</table>
@ -199,30 +199,30 @@
22
23
24</pre></td>
<td class="listing_code"><pre class="programlisting"><span class="n">GtkTreeIter</span> <span class="n">iter1</span><span class="p">;</span> <span class="cm">/* Parent iter */</span>
<span class="n">GtkTreeIter</span> <span class="n">iter2</span><span class="p">;</span> <span class="cm">/* Child iter */</span>
<td class="listing_code"><pre class="programlisting"><span class="n">GtkTreeIter</span><span class="w"> </span><span class="n">iter1</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Parent iter */</span><span class="w"></span>
<span class="n">GtkTreeIter</span><span class="w"> </span><span class="n">iter2</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Child iter */</span><span class="w"></span>
<span class="n">gtk_tree_store_append</span> <span class="p">(</span><span class="n">store</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">iter1</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span> <span class="cm">/* Acquire a top-level iterator */</span>
<span class="n">gtk_tree_store_set</span> <span class="p">(</span><span class="n">store</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">iter1</span><span class="p">,</span>
<span class="n">TITLE_COLUMN</span><span class="p">,</span> <span class="s">&quot;The Art of Computer Programming&quot;</span><span class="p">,</span>
<span class="n">AUTHOR_COLUMN</span><span class="p">,</span> <span class="s">&quot;Donald E. Knuth&quot;</span><span class="p">,</span>
<span class="n">CHECKED_COLUMN</span><span class="p">,</span> <span class="n">FALSE</span><span class="p">,</span>
<span class="mi">-1</span><span class="p">);</span>
<span class="n">gtk_tree_store_append</span><span class="w"> </span><span class="p">(</span><span class="n">store</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">iter1</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span><span class="w"> </span><span class="cm">/* Acquire a top-level iterator */</span><span class="w"></span>
<span class="n">gtk_tree_store_set</span><span class="w"> </span><span class="p">(</span><span class="n">store</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">iter1</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">TITLE_COLUMN</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;The Art of Computer Programming&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">AUTHOR_COLUMN</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Donald E. Knuth&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">CHECKED_COLUMN</span><span class="p">,</span><span class="w"> </span><span class="n">FALSE</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="mi">-1</span><span class="p">);</span><span class="w"></span>
<span class="n">gtk_tree_store_append</span> <span class="p">(</span><span class="n">store</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">iter2</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">iter1</span><span class="p">);</span> <span class="cm">/* Acquire a child iterator */</span>
<span class="n">gtk_tree_store_set</span> <span class="p">(</span><span class="n">store</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">iter2</span><span class="p">,</span>
<span class="n">TITLE_COLUMN</span><span class="p">,</span> <span class="s">&quot;Volume 1: Fundamental Algorithms&quot;</span><span class="p">,</span>
<span class="mi">-1</span><span class="p">);</span>
<span class="n">gtk_tree_store_append</span><span class="w"> </span><span class="p">(</span><span class="n">store</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">iter2</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">iter1</span><span class="p">);</span><span class="w"> </span><span class="cm">/* Acquire a child iterator */</span><span class="w"></span>
<span class="n">gtk_tree_store_set</span><span class="w"> </span><span class="p">(</span><span class="n">store</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">iter2</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">TITLE_COLUMN</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Volume 1: Fundamental Algorithms&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="mi">-1</span><span class="p">);</span><span class="w"></span>
<span class="n">gtk_tree_store_append</span> <span class="p">(</span><span class="n">store</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">iter2</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">iter1</span><span class="p">);</span>
<span class="n">gtk_tree_store_set</span> <span class="p">(</span><span class="n">store</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">iter2</span><span class="p">,</span>
<span class="n">TITLE_COLUMN</span><span class="p">,</span> <span class="s">&quot;Volume 2: Seminumerical Algorithms&quot;</span><span class="p">,</span>
<span class="mi">-1</span><span class="p">);</span>
<span class="n">gtk_tree_store_append</span><span class="w"> </span><span class="p">(</span><span class="n">store</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">iter2</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">iter1</span><span class="p">);</span><span class="w"></span>
<span class="n">gtk_tree_store_set</span><span class="w"> </span><span class="p">(</span><span class="n">store</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">iter2</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">TITLE_COLUMN</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Volume 2: Seminumerical Algorithms&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="mi">-1</span><span class="p">);</span><span class="w"></span>
<span class="n">gtk_tree_store_append</span> <span class="p">(</span><span class="n">store</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">iter2</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">iter1</span><span class="p">);</span>
<span class="n">gtk_tree_store_set</span> <span class="p">(</span><span class="n">store</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">iter2</span><span class="p">,</span>
<span class="n">TITLE_COLUMN</span><span class="p">,</span> <span class="s">&quot;Volume 3: Sorting and Searching&quot;</span><span class="p">,</span>
<span class="mi">-1</span><span class="p">);</span></pre></td>
<span class="n">gtk_tree_store_append</span><span class="w"> </span><span class="p">(</span><span class="n">store</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">iter2</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">iter1</span><span class="p">);</span><span class="w"></span>
<span class="n">gtk_tree_store_set</span><span class="w"> </span><span class="p">(</span><span class="n">store</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">iter2</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">TITLE_COLUMN</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Volume 3: Sorting and Searching&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="mi">-1</span><span class="p">);</span><span class="w"></span></pre></td>
</tr>
</tbody>
</table>
@ -245,9 +245,9 @@
<td class="listing_lines" align="right"><pre>1
2
3</pre></td>
<td class="listing_code"><pre class="programlisting"><span class="n">GtkWidget</span> <span class="o">*</span><span class="n">tree</span><span class="p">;</span>
<td class="listing_code"><pre class="programlisting"><span class="n">GtkWidget</span><span class="w"> </span><span class="o">*</span><span class="n">tree</span><span class="p">;</span><span class="w"></span>
<span class="n">tree</span> <span class="o">=</span> <span class="n">gtk_tree_view_new_with_model</span> <span class="p">(</span><span class="n">GTK_TREE_MODEL</span> <span class="p">(</span><span class="n">store</span><span class="p">));</span></pre></td>
<span class="n">tree</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">gtk_tree_view_new_with_model</span><span class="w"> </span><span class="p">(</span><span class="n">GTK_TREE_MODEL</span><span class="w"> </span><span class="p">(</span><span class="n">store</span><span class="p">));</span><span class="w"></span></pre></td>
</tr>
</tbody>
</table>
@ -285,15 +285,15 @@
7
8
9</pre></td>
<td class="listing_code"><pre class="programlisting"><span class="n">GtkCellRenderer</span> <span class="o">*</span><span class="n">renderer</span><span class="p">;</span>
<span class="n">GtkTreeViewColumn</span> <span class="o">*</span><span class="n">column</span><span class="p">;</span>
<td class="listing_code"><pre class="programlisting"><span class="n">GtkCellRenderer</span><span class="w"> </span><span class="o">*</span><span class="n">renderer</span><span class="p">;</span><span class="w"></span>
<span class="n">GtkTreeViewColumn</span><span class="w"> </span><span class="o">*</span><span class="n">column</span><span class="p">;</span><span class="w"></span>
<span class="n">renderer</span> <span class="o">=</span> <span class="n">gtk_cell_renderer_text_new</span> <span class="p">();</span>
<span class="n">column</span> <span class="o">=</span> <span class="n">gtk_tree_view_column_new_with_attributes</span> <span class="p">(</span><span class="s">&quot;Author&quot;</span><span class="p">,</span>
<span class="n">renderer</span><span class="p">,</span>
<span class="s">&quot;text&quot;</span><span class="p">,</span> <span class="n">AUTHOR_COLUMN</span><span class="p">,</span>
<span class="nb">NULL</span><span class="p">);</span>
<span class="n">gtk_tree_view_append_column</span> <span class="p">(</span><span class="n">GTK_TREE_VIEW</span> <span class="p">(</span><span class="n">tree</span><span class="p">),</span> <span class="n">column</span><span class="p">);</span></pre></td>
<span class="n">renderer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">gtk_cell_renderer_text_new</span><span class="w"> </span><span class="p">();</span><span class="w"></span>
<span class="n">column</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">gtk_tree_view_column_new_with_attributes</span><span class="w"> </span><span class="p">(</span><span class="s">&quot;Author&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">renderer</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="s">&quot;text&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">AUTHOR_COLUMN</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nb">NULL</span><span class="p">);</span><span class="w"></span>
<span class="n">gtk_tree_view_append_column</span><span class="w"> </span><span class="p">(</span><span class="n">GTK_TREE_VIEW</span><span class="w"> </span><span class="p">(</span><span class="n">tree</span><span class="p">),</span><span class="w"> </span><span class="n">column</span><span class="p">);</span><span class="w"></span></pre></td>
</tr>
</tbody>
</table>
@ -329,17 +329,17 @@
9
10
11</pre></td>
<td class="listing_code"><pre class="programlisting"><span class="cm">/* Prototype for selection handler callback */</span>
<span class="k">static</span> <span class="kt">void</span> <span class="nf">tree_selection_changed_cb</span> <span class="p">(</span><span class="n">GtkTreeSelection</span> <span class="o">*</span><span class="n">selection</span><span class="p">,</span> <span class="n">gpointer</span> <span class="n">data</span><span class="p">);</span>
<td class="listing_code"><pre class="programlisting"><span class="cm">/* Prototype for selection handler callback */</span><span class="w"></span>
<span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">tree_selection_changed_cb</span><span class="w"> </span><span class="p">(</span><span class="n">GtkTreeSelection</span><span class="w"> </span><span class="o">*</span><span class="n">selection</span><span class="p">,</span><span class="w"> </span><span class="n">gpointer</span><span class="w"> </span><span class="n">data</span><span class="p">);</span><span class="w"></span>
<span class="cm">/* Setup the selection handler */</span>
<span class="n">GtkTreeSelection</span> <span class="o">*</span><span class="n">select</span><span class="p">;</span>
<span class="cm">/* Setup the selection handler */</span><span class="w"></span>
<span class="n">GtkTreeSelection</span><span class="w"> </span><span class="o">*</span><span class="n">select</span><span class="p">;</span><span class="w"></span>
<span class="n">select</span> <span class="o">=</span> <span class="n">gtk_tree_view_get_selection</span> <span class="p">(</span><span class="n">GTK_TREE_VIEW</span> <span class="p">(</span><span class="n">tree</span><span class="p">));</span>
<span class="n">gtk_tree_selection_set_mode</span> <span class="p">(</span><span class="n">select</span><span class="p">,</span> <span class="n">GTK_SELECTION_SINGLE</span><span class="p">);</span>
<span class="n">g_signal_connect</span> <span class="p">(</span><span class="n">G_OBJECT</span> <span class="p">(</span><span class="n">select</span><span class="p">),</span> <span class="s">&quot;changed&quot;</span><span class="p">,</span>
<span class="n">G_CALLBACK</span> <span class="p">(</span><span class="n">tree_selection_changed_cb</span><span class="p">),</span>
<span class="nb">NULL</span><span class="p">);</span></pre></td>
<span class="n">select</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">gtk_tree_view_get_selection</span><span class="w"> </span><span class="p">(</span><span class="n">GTK_TREE_VIEW</span><span class="w"> </span><span class="p">(</span><span class="n">tree</span><span class="p">));</span><span class="w"></span>
<span class="n">gtk_tree_selection_set_mode</span><span class="w"> </span><span class="p">(</span><span class="n">select</span><span class="p">,</span><span class="w"> </span><span class="n">GTK_SELECTION_SINGLE</span><span class="p">);</span><span class="w"></span>
<span class="n">g_signal_connect</span><span class="w"> </span><span class="p">(</span><span class="n">G_OBJECT</span><span class="w"> </span><span class="p">(</span><span class="n">select</span><span class="p">),</span><span class="w"> </span><span class="s">&quot;changed&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">G_CALLBACK</span><span class="w"> </span><span class="p">(</span><span class="n">tree_selection_changed_cb</span><span class="p">),</span><span class="w"></span>
<span class="w"> </span><span class="nb">NULL</span><span class="p">);</span><span class="w"></span></pre></td>
</tr>
</tbody>
</table>
@ -368,22 +368,22 @@
14
15
16</pre></td>
<td class="listing_code"><pre class="programlisting"><span class="k">static</span> <span class="kt">void</span>
<span class="nf">tree_selection_changed_cb</span> <span class="p">(</span><span class="n">GtkTreeSelection</span> <span class="o">*</span><span class="n">selection</span><span class="p">,</span> <span class="n">gpointer</span> <span class="n">data</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">GtkTreeIter</span> <span class="n">iter</span><span class="p">;</span>
<span class="n">GtkTreeModel</span> <span class="o">*</span><span class="n">model</span><span class="p">;</span>
<span class="n">gchar</span> <span class="o">*</span><span class="n">author</span><span class="p">;</span>
<td class="listing_code"><pre class="programlisting"><span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"></span>
<span class="nf">tree_selection_changed_cb</span><span class="w"> </span><span class="p">(</span><span class="n">GtkTreeSelection</span><span class="w"> </span><span class="o">*</span><span class="n">selection</span><span class="p">,</span><span class="w"> </span><span class="n">gpointer</span><span class="w"> </span><span class="n">data</span><span class="p">)</span><span class="w"></span>
<span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">GtkTreeIter</span><span class="w"> </span><span class="n">iter</span><span class="p">;</span><span class="w"></span>
<span class="w"> </span><span class="n">GtkTreeModel</span><span class="w"> </span><span class="o">*</span><span class="n">model</span><span class="p">;</span><span class="w"></span>
<span class="w"> </span><span class="n">gchar</span><span class="w"> </span><span class="o">*</span><span class="n">author</span><span class="p">;</span><span class="w"></span>
<span class="k">if</span> <span class="p">(</span><span class="n">gtk_tree_selection_get_selected</span> <span class="p">(</span><span class="n">selection</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">model</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">iter</span><span class="p">))</span>
<span class="p">{</span>
<span class="n">gtk_tree_model_get</span> <span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">iter</span><span class="p">,</span> <span class="n">AUTHOR_COLUMN</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">author</span><span class="p">,</span> <span class="mi">-1</span><span class="p">);</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">gtk_tree_selection_get_selected</span><span class="w"> </span><span class="p">(</span><span class="n">selection</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">model</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">iter</span><span class="p">))</span><span class="w"></span>
<span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">gtk_tree_model_get</span><span class="w"> </span><span class="p">(</span><span class="n">model</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">iter</span><span class="p">,</span><span class="w"> </span><span class="n">AUTHOR_COLUMN</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">author</span><span class="p">,</span><span class="w"> </span><span class="mi">-1</span><span class="p">);</span><span class="w"></span>
<span class="n">g_print</span> <span class="p">(</span><span class="s">&quot;You selected a book by %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">author</span><span class="p">);</span>
<span class="w"> </span><span class="n">g_print</span><span class="w"> </span><span class="p">(</span><span class="s">&quot;You selected a book by %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">author</span><span class="p">);</span><span class="w"></span>
<span class="n">g_free</span> <span class="p">(</span><span class="n">author</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span></pre></td>
<span class="w"> </span><span class="n">g_free</span><span class="w"> </span><span class="p">(</span><span class="n">author</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="p">}</span><span class="w"></span></pre></td>
</tr>
</tbody>
</table>
@ -472,74 +472,74 @@
66
67
68</pre></td>
<td class="listing_code"><pre class="programlisting"><span class="k">enum</span>
<span class="p">{</span>
<span class="n">TITLE_COLUMN</span><span class="p">,</span>
<span class="n">AUTHOR_COLUMN</span><span class="p">,</span>
<span class="n">CHECKED_COLUMN</span><span class="p">,</span>
<span class="n">N_COLUMNS</span>
<span class="p">};</span>
<td class="listing_code"><pre class="programlisting"><span class="k">enum</span><span class="w"></span>
<span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">TITLE_COLUMN</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">AUTHOR_COLUMN</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">CHECKED_COLUMN</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">N_COLUMNS</span><span class="w"></span>
<span class="p">};</span><span class="w"></span>
<span class="kt">void</span>
<span class="nf">setup_tree</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">GtkTreeStore</span> <span class="o">*</span><span class="n">store</span><span class="p">;</span>
<span class="n">GtkWidget</span> <span class="o">*</span><span class="n">tree</span><span class="p">;</span>
<span class="n">GtkTreeViewColumn</span> <span class="o">*</span><span class="n">column</span><span class="p">;</span>
<span class="n">GtkCellRenderer</span> <span class="o">*</span><span class="n">renderer</span><span class="p">;</span>
<span class="kt">void</span><span class="w"></span>
<span class="nf">setup_tree</span><span class="w"> </span><span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="w"></span>
<span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">GtkTreeStore</span><span class="w"> </span><span class="o">*</span><span class="n">store</span><span class="p">;</span><span class="w"></span>
<span class="w"> </span><span class="n">GtkWidget</span><span class="w"> </span><span class="o">*</span><span class="n">tree</span><span class="p">;</span><span class="w"></span>
<span class="w"> </span><span class="n">GtkTreeViewColumn</span><span class="w"> </span><span class="o">*</span><span class="n">column</span><span class="p">;</span><span class="w"></span>
<span class="w"> </span><span class="n">GtkCellRenderer</span><span class="w"> </span><span class="o">*</span><span class="n">renderer</span><span class="p">;</span><span class="w"></span>
<span class="cm">/* Create a model. We are using the store model for now, though we</span>
<span class="cm"> * could use any other GtkTreeModel */</span>
<span class="n">store</span> <span class="o">=</span> <span class="n">gtk_tree_store_new</span> <span class="p">(</span><span class="n">N_COLUMNS</span><span class="p">,</span>
<span class="n">G_TYPE_STRING</span><span class="p">,</span>
<span class="n">G_TYPE_STRING</span><span class="p">,</span>
<span class="n">G_TYPE_BOOLEAN</span><span class="p">);</span>
<span class="w"> </span><span class="cm">/* Create a model. We are using the store model for now, though we</span>
<span class="cm"> * could use any other GtkTreeModel */</span><span class="w"></span>
<span class="w"> </span><span class="n">store</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">gtk_tree_store_new</span><span class="w"> </span><span class="p">(</span><span class="n">N_COLUMNS</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">G_TYPE_STRING</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">G_TYPE_STRING</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">G_TYPE_BOOLEAN</span><span class="p">);</span><span class="w"></span>
<span class="cm">/* custom function to fill the model with data */</span>
<span class="n">populate_tree_model</span> <span class="p">(</span><span class="n">store</span><span class="p">);</span>
<span class="w"> </span><span class="cm">/* custom function to fill the model with data */</span><span class="w"></span>
<span class="w"> </span><span class="n">populate_tree_model</span><span class="w"> </span><span class="p">(</span><span class="n">store</span><span class="p">);</span><span class="w"></span>
<span class="cm">/* Create a view */</span>
<span class="n">tree</span> <span class="o">=</span> <span class="n">gtk_tree_view_new_with_model</span> <span class="p">(</span><span class="n">GTK_TREE_MODEL</span> <span class="p">(</span><span class="n">store</span><span class="p">));</span>
<span class="w"> </span><span class="cm">/* Create a view */</span><span class="w"></span>
<span class="w"> </span><span class="n">tree</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">gtk_tree_view_new_with_model</span><span class="w"> </span><span class="p">(</span><span class="n">GTK_TREE_MODEL</span><span class="w"> </span><span class="p">(</span><span class="n">store</span><span class="p">));</span><span class="w"></span>
<span class="cm">/* The view now holds a reference. We can get rid of our own</span>
<span class="cm"> * reference */</span>
<span class="n">g_object_unref</span> <span class="p">(</span><span class="n">G_OBJECT</span> <span class="p">(</span><span class="n">store</span><span class="p">));</span>
<span class="w"> </span><span class="cm">/* The view now holds a reference. We can get rid of our own</span>
<span class="cm"> * reference */</span><span class="w"></span>
<span class="w"> </span><span class="n">g_object_unref</span><span class="w"> </span><span class="p">(</span><span class="n">G_OBJECT</span><span class="w"> </span><span class="p">(</span><span class="n">store</span><span class="p">));</span><span class="w"></span>
<span class="cm">/* Create a cell render and arbitrarily make it red for demonstration</span>
<span class="cm"> * purposes */</span>
<span class="n">renderer</span> <span class="o">=</span> <span class="n">gtk_cell_renderer_text_new</span> <span class="p">();</span>
<span class="n">g_object_set</span> <span class="p">(</span><span class="n">G_OBJECT</span> <span class="p">(</span><span class="n">renderer</span><span class="p">),</span>
<span class="s">&quot;foreground&quot;</span><span class="p">,</span> <span class="s">&quot;red&quot;</span><span class="p">,</span>
<span class="nb">NULL</span><span class="p">);</span>
<span class="w"> </span><span class="cm">/* Create a cell render and arbitrarily make it red for demonstration</span>
<span class="cm"> * purposes */</span><span class="w"></span>
<span class="w"> </span><span class="n">renderer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">gtk_cell_renderer_text_new</span><span class="w"> </span><span class="p">();</span><span class="w"></span>
<span class="w"> </span><span class="n">g_object_set</span><span class="w"> </span><span class="p">(</span><span class="n">G_OBJECT</span><span class="w"> </span><span class="p">(</span><span class="n">renderer</span><span class="p">),</span><span class="w"></span>
<span class="w"> </span><span class="s">&quot;foreground&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;red&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nb">NULL</span><span class="p">);</span><span class="w"></span>
<span class="cm">/* Create a column, associating the &quot;text&quot; attribute of the</span>
<span class="cm"> * cell_renderer to the first column of the model */</span>
<span class="n">column</span> <span class="o">=</span> <span class="n">gtk_tree_view_column_new_with_attributes</span> <span class="p">(</span><span class="s">&quot;Author&quot;</span><span class="p">,</span> <span class="n">renderer</span><span class="p">,</span>
<span class="s">&quot;text&quot;</span><span class="p">,</span> <span class="n">AUTHOR_COLUMN</span><span class="p">,</span>
<span class="nb">NULL</span><span class="p">);</span>
<span class="w"> </span><span class="cm">/* Create a column, associating the &quot;text&quot; attribute of the</span>
<span class="cm"> * cell_renderer to the first column of the model */</span><span class="w"></span>
<span class="w"> </span><span class="n">column</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">gtk_tree_view_column_new_with_attributes</span><span class="w"> </span><span class="p">(</span><span class="s">&quot;Author&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">renderer</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="s">&quot;text&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">AUTHOR_COLUMN</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nb">NULL</span><span class="p">);</span><span class="w"></span>
<span class="cm">/* Add the column to the view. */</span>
<span class="n">gtk_tree_view_append_column</span> <span class="p">(</span><span class="n">GTK_TREE_VIEW</span> <span class="p">(</span><span class="n">tree</span><span class="p">),</span> <span class="n">column</span><span class="p">);</span>
<span class="w"> </span><span class="cm">/* Add the column to the view. */</span><span class="w"></span>
<span class="w"> </span><span class="n">gtk_tree_view_append_column</span><span class="w"> </span><span class="p">(</span><span class="n">GTK_TREE_VIEW</span><span class="w"> </span><span class="p">(</span><span class="n">tree</span><span class="p">),</span><span class="w"> </span><span class="n">column</span><span class="p">);</span><span class="w"></span>
<span class="cm">/* Second column.. title of the book. */</span>
<span class="n">renderer</span> <span class="o">=</span> <span class="n">gtk_cell_renderer_text_new</span> <span class="p">();</span>
<span class="n">column</span> <span class="o">=</span> <span class="n">gtk_tree_view_column_new_with_attributes</span> <span class="p">(</span><span class="s">&quot;Title&quot;</span><span class="p">,</span>
<span class="n">renderer</span><span class="p">,</span>
<span class="s">&quot;text&quot;</span><span class="p">,</span> <span class="n">TITLE_COLUMN</span><span class="p">,</span>
<span class="nb">NULL</span><span class="p">);</span>
<span class="n">gtk_tree_view_append_column</span> <span class="p">(</span><span class="n">GTK_TREE_VIEW</span> <span class="p">(</span><span class="n">tree</span><span class="p">),</span> <span class="n">column</span><span class="p">);</span>
<span class="w"> </span><span class="cm">/* Second column.. title of the book. */</span><span class="w"></span>
<span class="w"> </span><span class="n">renderer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">gtk_cell_renderer_text_new</span><span class="w"> </span><span class="p">();</span><span class="w"></span>
<span class="w"> </span><span class="n">column</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">gtk_tree_view_column_new_with_attributes</span><span class="w"> </span><span class="p">(</span><span class="s">&quot;Title&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">renderer</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="s">&quot;text&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">TITLE_COLUMN</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nb">NULL</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="n">gtk_tree_view_append_column</span><span class="w"> </span><span class="p">(</span><span class="n">GTK_TREE_VIEW</span><span class="w"> </span><span class="p">(</span><span class="n">tree</span><span class="p">),</span><span class="w"> </span><span class="n">column</span><span class="p">);</span><span class="w"></span>
<span class="cm">/* Last column.. whether a book is checked out. */</span>
<span class="n">renderer</span> <span class="o">=</span> <span class="n">gtk_cell_renderer_toggle_new</span> <span class="p">();</span>
<span class="n">column</span> <span class="o">=</span> <span class="n">gtk_tree_view_column_new_with_attributes</span> <span class="p">(</span><span class="s">&quot;Checked out&quot;</span><span class="p">,</span>
<span class="n">renderer</span><span class="p">,</span>
<span class="s">&quot;active&quot;</span><span class="p">,</span> <span class="n">CHECKED_COLUMN</span><span class="p">,</span>
<span class="nb">NULL</span><span class="p">);</span>
<span class="n">gtk_tree_view_append_column</span> <span class="p">(</span><span class="n">GTK_TREE_VIEW</span> <span class="p">(</span><span class="n">tree</span><span class="p">),</span> <span class="n">column</span><span class="p">);</span>
<span class="w"> </span><span class="cm">/* Last column.. whether a book is checked out. */</span><span class="w"></span>
<span class="w"> </span><span class="n">renderer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">gtk_cell_renderer_toggle_new</span><span class="w"> </span><span class="p">();</span><span class="w"></span>
<span class="w"> </span><span class="n">column</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">gtk_tree_view_column_new_with_attributes</span><span class="w"> </span><span class="p">(</span><span class="s">&quot;Checked out&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">renderer</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="s">&quot;active&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">CHECKED_COLUMN</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nb">NULL</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="n">gtk_tree_view_append_column</span><span class="w"> </span><span class="p">(</span><span class="n">GTK_TREE_VIEW</span><span class="w"> </span><span class="p">(</span><span class="n">tree</span><span class="p">),</span><span class="w"> </span><span class="n">column</span><span class="p">);</span><span class="w"></span>
<span class="cm">/* Now we can manipulate the view just like any other GTK widget */</span>
<span class="p">...</span>
<span class="p">}</span></pre></td>
<span class="w"> </span><span class="cm">/* Now we can manipulate the view just like any other GTK widget */</span><span class="w"></span>
<span class="w"> </span><span class="p">...</span><span class="w"></span>
<span class="p">}</span><span class="w"></span></pre></td>
</tr>
</tbody>
</table>