Index: docs/tutorial/gtkmm-tut.xml
===================================================================
RCS file: /cvs/gnome/gtkmm-root/doc-tutorial/gtkmm-tut.xml,v
retrieving revision 1.97
diff -u -r1.97 gtkmm-tut.xml
--- docs/tutorial/gtkmm-tut.xml	29 Feb 2004 19:11:44 -0000	1.97
+++ docs/tutorial/gtkmm-tut.xml	23 Feb 2005 14:15:35 -0000
@@ -104,7 +104,7 @@
 </para>
 </sect1>
 
-<sect1>
+<sect1 id="sec-gtkmm">
 <title>gtkmm</title>
 <para>
 gtkmm is a C++ wrapper for 
@@ -169,10 +169,10 @@
 </itemizedlist>
 </sect1>
 
-<sect1>
+<sect1 id="sec-install_unix_and_linux">
 <title>Unix and Linux</title>
 
-<sect2>
+<sect2 id="sec-install_from_source">
 <title>From Source</title>
 
 <para>
@@ -220,7 +220,7 @@
 </sect2>
 </sect1>
 
-<sect1>
+<sect1 id="sec-packages_windows">
 <title>Microsoft Windows</title>
 <para>GTK+ and gtkmm were designed to work well with Microsoft Windows, and the developers encourage its use on the win32 platform.  However, Windows has no standard installation system for development libraries. Please see the <link linkend="sec-windows-installation">Windows Installation</link>
 appendix for win32-specific installation instructions and notes.</para>
@@ -333,7 +333,7 @@
 </para>
 </sect1>
 
-<sect1>
+<sect1 id="sec-widgets">
 <title>Widgets</title>
 <para>gtkmm applications consist of windows containing widgets, such as buttons and text boxes. In some other systems, widgets are called "controls". For each widget in your application's windows, there is a C++ object in your application's code. So you just need to call a method of the widget's class to affect the visible widget.</para>
  <para>Widgets are arranged inside container widgets such as frames and notebooks, in a hierarchy of widgets within widgets. Some of these container widgets, such as Gtk::VBox, are not visible - they exist only to arrange other widgets. Here is some example code that adds 2 Gtk::Button widgets to a Gtk::VBox container widgets:
@@ -355,7 +355,7 @@
 
 </sect1>
 
-<sect1>
+<sect1 id="sec-signals">
 <title>Signals</title>
 
 <para>
@@ -406,7 +406,7 @@
 
 </sect1>
 
-<sect1>
+<sect1 id="sec-helloworld">
 <title>Hello World in gtkmm</title>
 
 <para>
@@ -904,7 +904,7 @@
 
 </sect1>
 
-<sect1>
+<sect1 id="sec-scale_widgets">
 <title>Scale Widgets</title>
 
 <para>
@@ -946,7 +946,7 @@
 </sect2>
 </sect1>
 
-<sect1>
+<sect1 id="sec-update_policies">
 <title>Update Policies</title>
 
 <para>
@@ -2572,14 +2572,14 @@
 
 </sect1>
 
-<sect1>
+<sect1 id="sec-treeview">
 <title>The View</title>
 <para>The View is the actual widget (Gtk::TreeView) that displays the model (Gtk::TreeModel) data and allows the user to interact with it. The View can show all of the model's columns, or just some, and it can show them in various ways. 
 </para>
 
 <para><ulink url="&url_refdocs_base_gtk;TreeView.html">Reference</ulink></para>
 
-<sect2>
+<sect2 id="sec-using_a_model">
 <title>Using a Model</title>
 <para>
 You can specify a Gtk::TreeModel when constructing the Gtk::TreeView,
@@ -2727,7 +2727,7 @@
 
 </sect1>
 
-<sect1>
+<sect1 id="sec-iterating_over_model_rows">
 <title>Iterating over Model Rows</title>
 <para>
 Gtk::TreeModel provides an STL-style container of its children, via
@@ -2758,7 +2758,7 @@
 
 </sect1>
 
-<sect1>
+<sect1 id="sec-treeview_selection">
 <title>The Selection</title>
 <para>
 To find out what rows the user has selected, get the
@@ -2893,7 +2893,7 @@
 
 </sect1>
 
-<sect1><title>Examples</title>
+<sect1 id="sec-treeview_examples"><title>Examples</title>
 
 <sect2><title>ListStore</title>
 <para>This example has a <literal>Gtk::TreeView</literal> widget, with a <literal>Gtk::ListStore</literal> model.</para>
@@ -2925,7 +2925,7 @@
 
 </sect2>
 
-<sect2><title>Editable Cells</title>
+<sect2 id="sec-editable_cells_example"><title>Editable Cells</title>
 
 <para>
 This example is identical to the ListStore example, but it uses <literal>TreeView::append_column_editable()</literal> instead of <literal>TreeView::append_column()</literal>.
@@ -3103,7 +3103,7 @@
 
 </sect1>
 
-<sect1>
+<sect1 id="sec-widgets_and_childanchors">
 <title>Widgets and ChildAnchors</title>
 <para>
 You can embed widgets, such as <literal>Gtk::Button</literal>s, in the text. Each such child widget needs a <literal>ChildAnchor</literal>. ChildAnchors are associated with <literal>iterators</literal>. For instance, to create a child anchor at a particular position, use <literal>Gtk::TextBuffer::create_child_anchor()</literal>:
@@ -3124,7 +3124,7 @@
 
 </sect1>
 
-<sect1><title>Examples</title>
+<sect1 id="sec-examples"><title>Examples</title>
 
 <sect2><title>Simple Example</title>
 
@@ -3504,7 +3504,7 @@
 
 </sect1>
 
-<sect1>
+<sect1 id="sec-adjustments_the_easy_way">
 <title>Using Adjustments the Easy Way</title>
 
 <para>
@@ -3544,7 +3544,7 @@
 
 </sect1>
 
-<sect1>
+<sect1 id="sec-adjustment_internals">
 <title>Adjustment Internals</title>
 
 <para>
@@ -3604,7 +3604,7 @@
 
 </chapter>
 
-<chapter>
+<chapter id="widgets_without_xwindows">
 <title>Widgets Without X-Windows</title>
 
 <para>
@@ -3746,7 +3746,7 @@
 
 </sect1>
 
-<sect1><title>FileSelection</title>
+<sect1 id="sec-fileselection"><title>FileSelection</title>
 <para>
 This dialog allows the user to choose a file or folder. For instance, it is used when saving or loading documents.
 </para>
@@ -3768,7 +3768,7 @@
 
 </sect1>
 
-<sect1><title>ColorSelectionDialog</title>
+<sect1 id="sec-color_selection_dialog"><title>ColorSelectionDialog</title>
 <para>
 This dialog allows the user to choose a color.
 </para>
@@ -3790,7 +3790,7 @@
 
 </sect1>
 
-<sect1><title>FontSelectionDialog</title>
+<sect1 id="sec-font_selection_dialog"><title>FontSelectionDialog</title>
 <para>
 This dialog allows the user to choose a font.
 </para>
@@ -3867,7 +3867,7 @@
       solid polygons.
     </para>
   </sect1>
-  <sect1>
+  <sect1 id="sec-drawing_pixels">
     <title>Drawing Pixels</title>
     <para>
       You can draw individual pixels with the two methods <function>Gdk::Drawable::draw_point()</function> and <function>
@@ -3891,7 +3891,7 @@
 
     </programlisting>
   </sect1>
-  <sect1>
+  <sect1 id="sec-drawing_lines">
     <title>Drawing Lines</title>
     <sect2><title>Example</title>
     <para>
@@ -3922,7 +3922,7 @@
     </para>
     </sect2>
   </sect1>
-  <sect1>
+  <sect1 id="sec-drawing_rectangles_and_polygons">
     <title>Drawing Rectangles and Polygons</title>
     <para>
       The <function>draw_rectangle()</function> method draws rectangles and squares. The second argument determines whether
@@ -3945,7 +3945,7 @@
       This of course implies that you do not need to repeat the first point as the last point.
     </para>
   </sect1>
-  <sect1>
+  <sect1 id="sec-drawing_ellipses_and_arcs">
     <title>Drawing Ellipses and Arcs</title>
     <para>
       The <function>draw_arc()</function> has a lot of parameters. The second one is again for the choice of filled or unfilled arc.
@@ -3959,7 +3959,7 @@
       angle is measured in 1/64th of a degree, starts at the right, and runs counter-clockwise.
     </para>
   </sect1>
-  <sect1>
+  <sect1 id="sec-drawing_text">
     <title>Drawing Text</title>
     <para>
       Text is drawn via Pango Layouts. The easiest way to create a <classname>Pango::Layout</classname> is to use
@@ -3987,7 +3987,7 @@
     </para>
     </sect2>
   </sect1>
-  <sect1>
+  <sect1 id="sec-draw_images">
     <title>Draw Images</title>
     <para>
       There are a couple of drawing methods for putting image data into a drawing area. <function>draw_pixmap()</function> can
@@ -4047,7 +4047,7 @@
 
 </sect1>
 
-<sect1>
+<sect1 id="sec-drag_and_drop_methods">
 <title>Methods</title>
 <para>Widgets can be identified as sources or destinations using these Gtk::Widget methods:</para>
 <para>
@@ -4074,11 +4074,11 @@
 </para>
 </sect1>
 
-<sect1>
+<sect1 id="sec-drag_and_drop_signals">
 <title>Signals</title>
 <para>When a drop destination has accepted a dragged item, certain signals will be emitted, depending on what action has been selected. For instance, the user might have held down the <literal>Shift</literal> key to specify a <literal>move</literal> rather than a <literal>copy</literal>. Remember that the user can only select the actions which you have specified in your calls to <literal>drag_dest_set()</literal> and <literal>drag_source_set()</literal>.</para>
 
-<sect2>
+<sect2 id="sec-drag_and_drop_copy">
 <title>Copy</title>
 <para>
 The source widget will emit these signals, in this order:
@@ -4114,14 +4114,14 @@
 </sect2>
 </sect1>
 
-<sect1>
+<sect1 id="sec-dragcontext">
 <title>DragContext</title>
 <para>
 The drag and drop signals provide a DragContext, which contains some information about the drag and drop operation and can be used to influence the process. For instance, you can discover the source widget, or  change the drag and drop icon, by using the <literal>set_icon()</literal> methods. More importantly, you should call the <literal>drag_finish()</literal> method from your <literal>drag_data_received</literal> signal handler to indicate whether the drop was successful.
 </para>
 </sect1>
 
-<sect1>
+<sect1 id="sec-drag_and_drop_example">
 <title>Example</title>
 <para>Here is a very simple example, demonstrating a drag and drop <literal>Copy</literal> operation:</para>
 
@@ -4168,7 +4168,7 @@
 <para>The <link linkend="sec-draganddrop">Drag and Drop</link> API uses the same mechanism. You should probably use the same data targets and formats for both Clipboard and Drag and Drap operations.</para>
 </sect1>
 
-<sect1>
+<sect1 id="sec-drag_and_drop_copy">
 <title>Copy</title>
 <para>
 When the user asks to copy some data, you should tell the clipboard what targets are available, and provide the callback methods that it can use to get the data. At this point you should store a copy of the data, to be provided when the clipboard calls your callback method in repsonse to a paste.
@@ -4206,7 +4206,7 @@
 
 </sect1>
 
-<sect1>
+<sect1 id="sec-drag_and_drop_paste">
 <title>Paste</title>
 <para>
 When the user asks to paste data from the clipboard, you should request a specific format and provide a callback method which will be called with the actual data. For instance: 
@@ -4259,9 +4259,9 @@
 
 </sect1>
 
-<sect1><title>Examples</title>
+<sect1 id="sec-examples"><title>Examples</title>
 
-<sect2><title>Simple</title>
+<sect2 id="sec-clipboard_simple"><title>Simple</title>
 <para>This example allows copy and pasting of application-specific data, using the standard text target. Although this is simple, it's not ideal because
 it does not identify the clipboard data as being of a particular type.</para>
 
@@ -4369,7 +4369,7 @@
 
 </sect1>
 
-<sect1>
+<sect1 id="sec-monitoring_io">
 <title>Monitoring I/O</title>
 
 <para>
@@ -4530,7 +4530,7 @@
 
 </sect1>
 
-<sect1>
+<sect1 id="sec-idle_functions">
 <title>Idle Functions</title>
 
 <para>
@@ -4837,7 +4837,7 @@
 
 </sect1>
 
-<sect1>
+<sect1 id="sec-accessing_widgets">
 <title>Accessing widgets</title>
 
 <para>
@@ -4861,7 +4861,7 @@
 
 </sect1>
 
-<sect1>
+<sect1 id="sec-using_derived_widgets">
 <title>Using derived widgets</title>
 <para>
 You can use Glade to layout your own custom widgets derived from gtkmm widget classes. This keeps your code organised and encapsulated. Of course you won't see the exact appearance and properties of your derived widget in Glade, but you can specify its location and child widgets and the properties of its gtkmm base class.
@@ -4995,7 +4995,7 @@
     </sect2>
 </sect1>
 
-<sect1>
+<sect1 id="sec-expecting_utf8">
 <title>Expecting UTF8</title>
 <para>
 A properly internationalized application will not make assumptions about the number of bytes in a character. That means that you shouldn't use pointer arithmetic to step through the characters in a string, and it means you shouldn't use std::string or standard C functions such as strlen() because they make the same assumption.
@@ -5112,7 +5112,7 @@
       </sect2>
     </sect1>
 
-    <sect1>
+    <sect1 id="sec-getting_help_with_translations">
       <title>Getting help with translations</title>
 
       <para>If your program is free software, there is a whole <literal>GNOME</literal>
@@ -5176,7 +5176,7 @@
 <para>Most of our examples use this technique.</para>
 </sect1>
 
-<sect1>
+<sect1 id="sec-using_a_gtkmm_widget">
 <title>Using a gtkmm widget</title>
 
 <para>
@@ -5300,7 +5300,7 @@
 </para>
 </sect1>
 
-<sect1><title>Dereferencing</title>
+<sect1 id="sec-dereferencing"><title>Dereferencing</title>
 <para>You can dereference a smartpointer with the -&gt; operator, to
 call the methods of the underlying instance, just like a normal pointer.
 </para>
@@ -5323,7 +5323,7 @@
 </para>
 </sect1>
 
-<sect1><title>Casting</title>
+<sect1 id="sec-casting"><title>Casting</title>
 <para>You can cast RefPtrs to base types, just like normal pointers.</para>
 <para>
 <programlisting>
@@ -5349,7 +5349,7 @@
 </sect1>
 
 
-<sect1><title>Checking for null</title>
+<sect1 id="sec-checking_for_null"><title>Checking for null</title>
 <para>Just like normal pointers, you can check whether a RefPtr points
 to anything.</para>
 <para>
@@ -5368,7 +5368,7 @@
 </sect1>
 
 
-<sect1><title>Constness</title>
+<sect1 id="sec-constness"><title>Constness</title>
 <para>The use of the const keyword in C++ is not always clear. You
 might not realise that <literal>const Something*</literal> declares a
 pointer to a const Something, The pointer can be changed, but not the
@@ -5528,7 +5528,7 @@
 </para>
 </sect1>
 
-<sect1>
+<sect1 id="sec-writing_signal_handlers">
 <title>Writing signal handlers</title>
 
 <para>
@@ -5582,7 +5582,7 @@
 </para>
 </sect1>
 
-<sect1>
+<sect1 id="sec-disconnecting_signal_handlers">
 <title>Disconnecting signal handlers</title>
 
 <para>
@@ -5602,7 +5602,7 @@
 </para>
 
 </sect1>
-<sect1>
+<sect1 id="sec-overriding_default_signal_handlers">
 <title>Overriding default signal handlers</title>
 
 <para>
@@ -5675,7 +5675,7 @@
 
 </sect1>
 
-<sect1>
+<sect1 id="sec-binding_extra_arguments">
 <title>Binding extra arguments</title>
 <para>
 If you use one signal handler to catch the same signal from several widgets, you might like that signal handler to receive some extra information. For instance, you might want to know which button was clicked. You can do this with <literal>SigC::bind()</literal>. Here's some code from the <link linkend="sec-helloworld2">helloworld2</link> example, which you will encounter later.
@@ -6010,7 +6010,7 @@
     </sect2>
     </sect1>
 
-    <sect1>
+    <sect1 id="sec-build_with_command_line_tools">
       <title>Command line tools</title>
       <para>
 	To build your gtkmm application with command line tools, we recommend you either use mingw combined with cygwin
@@ -6084,7 +6084,7 @@
       </para>
     </sect1>
 
-  <sect1>
+  <sect1 id="sec-building_on_win32">
 	<title>Building gtkmm on Win32</title>
     <para>Please see the appropriate README file in the source distribution.
     </para>
