summaryrefslogtreecommitdiffstats
path: root/doc/kexi
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-01-20 01:29:50 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-01-20 01:29:50 +0000
commit8362bf63dea22bbf6736609b0f49c152f975eb63 (patch)
tree0eea3928e39e50fae91d4e68b21b1e6cbae25604 /doc/kexi
downloadkoffice-8362bf63dea22bbf6736609b0f49c152f975eb63.tar.gz
koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.zip
Added old abandoned KDE3 version of koffice
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1077364 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'doc/kexi')
-rw-r--r--doc/kexi/Makefile.am4
-rw-r--r--doc/kexi/basics.docbook504
-rw-r--r--doc/kexi/building.docbook248
-rw-r--r--doc/kexi/comparing.docbook98
-rw-r--r--doc/kexi/configuration.docbook230
-rw-r--r--doc/kexi/contact-example.pngbin0 -> 2392 bytes
-rw-r--r--doc/kexi/credits.docbook63
-rw-r--r--doc/kexi/database.docbook649
-rw-r--r--doc/kexi/designingforms.docbook1480
-rw-r--r--doc/kexi/enteringdataintotables.docbook130
-rw-r--r--doc/kexi/enteringdatausingforms.docbook33
-rw-r--r--doc/kexi/index.docbook122
-rw-r--r--doc/kexi/intro.docbook78
-rw-r--r--doc/kexi/menus.docbook701
-rw-r--r--doc/kexi/querydesigning.docbook109
15 files changed, 4449 insertions, 0 deletions
diff --git a/doc/kexi/Makefile.am b/doc/kexi/Makefile.am
new file mode 100644
index 00000000..085981d9
--- /dev/null
+++ b/doc/kexi/Makefile.am
@@ -0,0 +1,4 @@
+
+KDE_LANG = en
+KDE_DOCS = AUTO
+
diff --git a/doc/kexi/basics.docbook b/doc/kexi/basics.docbook
new file mode 100644
index 00000000..7bb34b9f
--- /dev/null
+++ b/doc/kexi/basics.docbook
@@ -0,0 +1,504 @@
+<!--
+ <!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" >
+
+ -->
+
+<chapter id="basics">
+ <title>
+ &kexi; Basics
+ </title>
+
+ <sect1 id="doc-vs-project">
+ <title>
+ &kexi; Databases
+ </title>
+ <para>
+ Many applications such as OpenOffice.org or Microsoft Excel create
+ files which are called <firstterm>documents</firstterm>. &kexi;
+ creates files too, but we refer to them as <firstterm>&kexi;
+ database files</firstterm>, or simple <firstterm>database
+ files</firstterm> here. &kexi; database files usually have the
+ extension <filename>.kexi</filename>.
+ </para>
+
+<!-- TODO: Picture of Kexi database icon? -->
+
+ <para>
+ In addition to storing your databases in database files, &kexi;
+ can also use databases on <firstterm>database
+ servers</firstterm>, which is why we refer to them as
+ <emphasis>database files</emphasis>, and not simply as
+ <emphasis>databases</emphasis>.
+ </para>
+
+ <para>
+ The term <firstterm>&kexi; project</firstterm>, or simply
+ <firstterm>project</firstterm> is also used to refer to a &kexi;
+ database, regardless of whether it is stored in a file or on a
+ database server.
+ </para>
+ </sect1>
+
+ <sect1 id="new-database">
+ <title>
+ Creating a New Database File
+ </title>
+
+ <procedure>
+ <step>
+ <para>
+ Run &kexi;, or if it is already running, use
+ <menuchoice>
+ <shortcut>
+ <keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo>
+ </shortcut>
+ <guimenu>File</guimenu><guimenuitem>New</guimenuitem>
+ </menuchoice>.
+ </para>
+ </step>
+ <step>
+ <para>
+ Click the <guibutton>OK</guibutton> to confirm the
+ creation of the project.
+ </para>
+ </step>
+ <step>
+ <para>
+ Enter a name for your project, and click <guibutton>Next</guibutton>.
+ </para>
+ </step>
+ <step>
+ <para>
+ Use the file browser to choose a folder where you would
+ like to save your database file. You may change the file
+ name in the <guilabel>Location:</guilabel> box if you dislike
+ the one that is suggested.
+ </para>
+ </step>
+ <step>
+ <para>
+ Click <guibutton>Create</guibutton>.
+ </para>
+ </step>
+ </procedure>
+ </sect1>
+
+ <sect1 id="main-window">
+ <title>
+ The &kexi; Main Window
+ </title>
+ <para>
+ The <guilabel>Project Navigator</guilabel> and
+ <guilabel>Properties Editor</guilabel> are shown in panes on
+ each side of the child window. These can be resized or hidden
+ as required. A pane can be hidden by clicking the small cross
+ at the top of the pane (just below the toolbar).
+ </para>
+ <para>
+ Database objects (tables, queries, etc.) listed in the <guilabel>Project
+ Navigator</guilabel> can opened by clicking (or
+ double-clicking, depending upon your global &kde; settings) on their names.
+ </para>
+
+<sect2 id="main-application-elements">
+<title>
+Main application elements
+</title>
+<!--
+<br><img src="img/04_06_00_main_window.png">
+<br>Kexi's main window<br><br>
+-->
+<itemizedlist>
+<title>
+Main elements of &kexi; application's window are:
+</title>
+<listitem>
+<para><emphasis>Menubar</emphasis></para>
+<para>
+contains available commands for the application.
+You will find detailed description of any of the commands in the appendix.
+<!-- @todo: point to the appendix (link) -->
+</para>
+</listitem>
+<listitem>
+<para><emphasis>Toolbar</emphasis></para>
+<para>
+contains most frequently used commands.
+</para>
+</listitem>
+
+<listitem>
+<!-- @todo: link to the various chapters from the listitems -->
+<para><emphasis><guilabel>Project Navigator</guilabel>'s pane</emphasis></para>
+<para>
+contains a list of any object (tables, queries, forms, ...) created
+within the currently opened database project. The navigator also contains
+small toolbar with most usable commands related to the database objects.
+</para>
+</listitem>
+
+<listitem>
+<para><emphasis><guilabel>Opened database objects</guilabel> area</emphasis></para>
+<para>
+a central area of the application taking most of the screen space.
+For IDEAl user interface mode it contains switchable tabs with
+windows that are always maximized. For Childframe user interface
+mode it contains floating windows.
+</para>
+</listitem>
+
+<listitem>
+<para><emphasis><guilabel>Properties</guilabel> pane</emphasis></para>
+<para>
+contains a list of properties of currently activated database object.
+For certain objects (&eg; form's widgets) it can have several tabs.
+</para>
+</listitem>
+
+<listitem>
+<para><emphasis>Taskbar</emphasis></para>
+<para>
+contains a list of currently opened windows with database objects.
+For IDEAl user interface mode, it is available as a number of tabs.
+For Childframe user interface mode, it is available as a number of
+buttons, behaving just like your operating system's taskbar.
+</para>
+</listitem>
+
+</itemizedlist>
+
+<sect3 id="project-navigator-pane">
+<title><guilabel>Project Navigator</guilabel> pane</title>
+<para>
+The <guilabel>Project Navigator</guilabel> pane is one of the most frequently used elements
+of the &kexi; main window. The pane contains a list of all objects
+created within the currently opened &kexi; database project. The objects
+are split into groups: tables, queries, forms.
+</para>
+<para id="project-navigator-pane-toolbar">
+The <guilabel>Project Navigator</guilabel> pane also contains a <emphasis>small toolbar for most
+frequently used commands</emphasis> (from left to right): <guilabel>Open
+selected object</guilabel>, <guilabel>Design selected object</guilabel>,
+<guilabel>Create a new object</guilabel>, and <guilabel>Delete selected
+object</guilabel>.
+<!--
+<img src="img/04_06_01_nav_mini_toolbar.png">
+<br>A toolbar in the Project Navigator pane<br><br>
+-->
+</para>
+<para>
+For each object on the list a context menu is available using the &RMB;.
+For example, this is context menu for the <emphasis>persons</emphasis> table.
+<!--
+ <br><img src="img/04_06_01_context_menu.png">
+ <br>Project Navigator pane's context menu<br><br>
+-->
+
+<!-- TODO Commands of this menu is documented in <appendix>
+
+See also a list of available shortcuts in <a href=
+"ab_00_00_shortcuts.html#nav_panel">Appendix B.2. Project Navigator
+pane <! - - TODO (js) APPENDIX number - - ></a> .
+
+-->
+</para>
+
+<para>
+Double clicking with the &LMB; on the object's name on the list allows to
+open the object in Data View. If the object's window was alread opened,
+the action just activates the window without switching it's view mode.
+</para>
+<para>
+Note that your operating system or window manager can be set up to handle
+single clicks instead of double clicks. In this case it is enough to single
+click on the object name to open its window.
+<!-- TODO (js) but then how to select an object without opening it? -->
+</para>
+
+</sect3>
+
+<sect3 id="database-object-windows">
+<title>Database object windows</title>
+
+<orderedlist>
+<title>Opening an object's window</title>
+<listitem>
+<para>
+Select the object in the <link linkend="project-navigator-pane">Project Navigator
+pane</link>.
+</para>
+</listitem>
+<listitem>
+<para>
+<!-- <img src="icons/edit.png" class="icon"> -->
+Click the <guibutton>Open</guibutton> button on the <link
+linkend="project-navigator-pane-toolbar">Project Navigator pane's toolbar</link>.
+</para>
+</listitem>
+</orderedlist>
+
+<itemizedlist>
+<title>Commands related to object windows</title>
+<listitem><para><emphasis>Closing an object window</emphasis></para>
+<para>
+When the IDEAl user interface mode (the default) is used, each window has
+its own tab. Place the mouse pointer on the icon on the tab. A
+<!-- <img src="fileclose.png" class="icon"> --> <guibutton>Close</guibutton> button will become
+visible. Click it to close the tab.
+</para>
+<para>
+In the Childframe on the right hand of each opened window there are
+buttons you can use to control the window. Click the first one on the
+right hand to close the window.
+</para>
+<para>
+Alternatively, regardless of the user interface mode you are using,
+you can select <menuchoice><guimenu>Window</guimenu>
+<guimenuitem>Close</guimenuitem></menuchoice> from the Menubar.
+</para>
+</listitem>
+<listitem><para><emphasis>Window buttons for Childframe user interface
+mode</emphasis></para>
+<!--
+<para>
+<br><img src="img/04_06_02_window_buttons.png">
+<br>Window's buttons<br><br>
+</para>
+-->
+<para>
+The other buttons (from right to left) can be used to: maximize, minimize
+and undock the window.
+</para>
+<para>
+There's a small icon on the left side of the title bar which can be clicked
+to show a context menu with commands related to the window.
+</para>
+<!--
+<para>See also Docking and undocking of the windows.</para>
+-->
+</listitem>
+</itemizedlist>
+
+</sect3>
+
+<sect3 id="property-editor-pane">
+<title><guilabel>Property Editor</guilabel> pane</title>
+<para>
+In the <guilabel>Property Editor</guilabel> pane you can change properties of the object
+displayed in the active window. Depending on the context, the pane is
+consisted of one or more tabs. The first, always visible tab, Properties,
+contains the list of available properties.
+</para>
+<!--
+<para>
+<img src="img/04_06_03_prop_panel.png">
+<br>Property Editor<br><br>
+</para>
+-->
+<itemizedlist>
+<title>Rules for using the Property Editor:</title>
+<listitem>
+<para>Each row contains a single property.</para>
+</listitem>
+<listitem>
+<para>You can use the mouse or the keyboard to change values of particular
+properties.</para>
+</listitem>
+<listitem>
+<itemizedlist>
+<title>Most frequently used types of property values are:</title>
+<listitem>
+<para><emphasis>a number;</emphasis> you can enter the value directly
+or increase or decrease its value by clicking with the &LMB; on the arrows.
+<!-- <img src="img/04_06_03_prop_arrows.png" class="icon"> -->
+</para>
+</listitem>
+<listitem><para>text</para></listitem>
+<listitem><para>drop down list of values</para></listitem>
+<listitem><para><emphasis>Yes/No;</emphasis>
+you can toggle the value by clicking on the button;
+<guibutton>Yes</guibutton> (<emphasis>true</emphasis>) means that the button is
+toggled on, <guibutton>>No</guibutton> (<emphasis>false</emphasis>) means that
+the button is toggled off.
+<!-- see the above figure -->
+</para>
+</listitem>
+</itemizedlist>
+</listitem>
+<listitem><para>
+There is no need to confirm a changed value: changes are visible immediately
+after moving to a different row of the Property Editor's list or by pressing
+the <keycombo><keycap>Enter</keycap></keycombo> key.
+</para></listitem>
+<listitem>
+<para>
+Names of the recently changed properties that not yet were stored in the
+database are marked with bold text.
+</para>
+</listitem>
+<listitem>
+<para>
+After changing the value of a property, a special <guibutton>Undo changes</guibutton>
+button appears on the right side of the Property Editor's list.
+<!-- <img src="img/04_06_03_prop_undo.png" class="icon"> -->
+By clicking it you can revert the value of the property to the original value
+that was loaded from the database upon opening the database object. The button
+is only visible when the property is actually highlighted.
+</para>
+</listitem>
+</itemizedlist>
+
+<itemizedlist>
+<title>The Property Editor pane is empty if:</title>
+<listitem><para>no single database object's window is opened, or</para>
+</listitem>
+<listitem><para>
+the active database object's window does not offer properties; it is usually
+the case when it is opened in Data View instead of Design View
+</para>
+</listitem>
+</itemizedlist>
+
+<!--
+<para>
+See also the list of keyboard shortcuts available for the Property Editor
+pane in appendix Property Editor pane.
+</para>
+-->
+
+</sect3>
+
+</sect2>
+
+ </sect1>
+
+ <sect1 id="project-opening">
+ <title>
+ Opening an existing &kexi; database file
+ </title>
+ <itemizedlist>
+ <title>
+ To open an existing &kexi; database file:
+ </title>
+ <listitem><para>
+ select it in the <guilabel>Open Existing Project</guilabel>
+ dialog; or
+ </para></listitem>
+ <listitem><para>
+ open it by clicking on the .kexi file icon.
+ </para></listitem>
+ </itemizedlist>
+
+ <sect2 id="window-open-existing">
+ <title>
+ Opening a database file in the <guilabel>Open Existing
+ Project</guilabel> dialog
+ </title>
+ <itemizedlist>
+ <listitem><para>
+ Run &kexi;. <!--(see <a href="04_02_00_running_kexi.html">Running Kexi</a>).-->
+ You should see <guilabel>Choose Project</guilabel> startup dialog.
+ Choose <guilabel>Open Existing Project</guilabel> tab.
+ You will see the following dialog:
+ <!-- image: <img src="img/04_04_01_startup_open_existing.png"> -->
+ </para></listitem>
+ <listitem><para>
+ From <guilabel>Current location</guilabel> drop down box, pick a folder
+ containing a file you are looking for.
+ </para></listitem>
+ <listitem><para>
+ You can either pick a file or enter its name in the
+ <guilabel>Location:</guilabel> box.
+ </para></listitem>
+ <listitem><para>
+ Click <guibutton>OK</guibutton>.
+ </para></listitem>
+ </itemizedlist>
+
+ <sect3 id="open-existing-notes">
+ <title>
+ Notes
+ </title>
+ <itemizedlist>
+ <listitem><para>
+ By default the <guilabel>Filter:</guilabel> drop down list has
+ <guilabel>Kexi Database File-Based Project</guilabel> selected.
+ In case the file you are looking for has an other extension,
+ you can change the selection of the <guilabel>Filter:</guilabel>
+ drop down list to <guilabel>All Files</guilabel> to display
+ all available files (regardless of an extension).
+ </para></listitem>
+ <listitem><para>
+ If you have selected a file of an external type, like a MS Access .mdb
+ file, &kexi; will provide you with the option to import the file.
+<!-- todo an advice to read "importing" chapter will be placed here -->
+ </para></listitem>
+ <listitem><para>
+ If you have selected a <emphasis>connection data</emphasis> file
+ (with .kexic extension) or a <emphasis>shortcut to a project on
+ database server</emphasis> file (with .kexis extension), &kexi;
+ will display appropriate dialogs.
+ </para></listitem>
+ </itemizedlist>
+ </sect3>
+ </sect2>
+
+ <sect2 id="open-icon">
+ <title>
+ Opening an existing &kexi; database file by clicking on .kexi file's icon
+ </title>
+ <para>
+ Click file's icon using your file manager or desktop.
+ &kexi; will open this database project automatically.
+ </para>
+<!-- <img src="icons/mime-kexiproject_sqlite.png" class="icon"/> -->
+ <sect3 id="open-icon-notes">
+ <title>
+ Notes
+ </title>
+ <para>
+ <emphasis>Note about database files accessed remotely.</emphasis>
+ You may want to open a database file that is located on a remote
+ source (&eg; a web or FTP server or a MS Windows network share).
+ K Desktop Environment allows you to open files from remote sources
+ directly in applications and to save changes back to the source, but
+ this is not the case with database files. By clicking on a database
+ file located on a remote source, a copy of the file will be
+ downloaded to a temporary directory on your computer and all your
+ changes will be made to this local file. The remote original of
+ the file will remain unchanged, so it's recommended to copy
+ (download) the file to your computer first, then open the file and
+ copy it back to the remote source if you want to make it up to date.
+ </para>
+ </sect3>
+ </sect2>
+ </sect1>
+
+ <sect1 id="using-help">
+ <title>
+ Using built-in help
+ </title>
+ <itemizedlist>
+ <title>
+ The following ways to get built-in help in &kexi; are available:
+ </title>
+ <listitem>
+ <para><emphasis>The Handbook in form of electronic document.</emphasis></para>
+ <para>
+ The Handbook is available by pressing <keycombo><keycap>F1</keycap></keycombo>
+ key or selecting <menuchoice><guimenu>Help</guimenu><guimenuitem>&kexi;
+ Handbook</guimenuitem></menuchoice> from the menubar.
+ </para>
+ </listitem>
+ <listitem>
+ <para><emphasis>What's This? hints.</emphasis></para>
+ <para>
+ Select <menuchoice><guimenu>Help</guimenu><guimenuitem>What's
+ This?</guimenuitem></menuchoice>from the menu bar and click on
+ an area of the application to get hints about it.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+</chapter>
diff --git a/doc/kexi/building.docbook b/doc/kexi/building.docbook
new file mode 100644
index 00000000..9b900c77
--- /dev/null
+++ b/doc/kexi/building.docbook
@@ -0,0 +1,248 @@
+<!--
+ <!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" >
+-->
+
+<chapter id="building-databases">
+<title>Building Simple Databases</title>
+<sect1 id="building-intro">
+<title>Introduction</title>
+<para>
+To learn the basics of &kexi;, you could build a simple database
+utilizing most elementary &kexi;'s features. To make things simpler,
+advanced database design topics will not be covered here.
+</para>
+<para>
+Start by creating a new empty <emphasis>Phone Book</emphasis>.
+<!--
+See chapter <a href="04_03_00_creating_database.html">4.3.
+Creating a new database project</a> for information how to do this.
+-->
+</para>
+
+<para>Having a new empty database project, perform the following steps:</para>
+<procedure>
+<step><para>Design database tables. Read <xref linkend="designing-tables"/>.</para></step>
+<step><para>Enter data into tables. Read <xref linkend="entering-data-into-tables"/>.</para></step>
+<step><para>Design database queries. Read <xref linkend="designing-queries"/>.</para></step>
+<step><para>Design forms. Read <xref linkend="designing-forms"/>.</para></step>
+<step><para>Use forms to enter data. Read <xref linkend="entering-data-using-forms"/>.</para></step>
+</procedure>
+</sect1>
+
+<sect1 id="designing-tables">
+<title>Designing Database Tables</title>
+<para>
+First, there will be two tables added to your database:
+<emphasis>persons</emphasis> and <emphasis>phone_numbers</emphasis>.
+These are exactly the same tables as described in chapter <link
+linkend="database-and-spreadsheet">Database and spreadsheet</link>.
+A layout for <emphasis>Persons</emphasis> can be found in section
+<link linkend="data-integrity-and-validity">Data integrity and validity</link>
+in that chapter.
+</para>
+
+<procedure>
+<step>
+<para>
+Select <menuchoice><guimenu>Insert</guimenu><guimenuitem>Table</guimenuitem>
+</menuchoice> from the Menubar. You can also use the button <guilabel>Create
+object: table</guilabel> on the <link linkend="project-navigator-pane">Project
+Navigator's toolbar</link>.
+</para>
+</step>
+<step>
+<para>
+The Table Designer's window will appear. Looking at the top of designer's window
+you will notice that &kexi; proposed you a generic name like
+<emphasis>template</emphasis> for the new table. The table design is not saved
+yet so you will be able to assign more proper name later. Moreover, because of
+the same reason, the table name is not yet visible in the
+<link linkend="project-navigator-pane">Project Navigator</link>.
+</para>
+</step>
+</procedure>
+
+
+<sect2 id="design-window">
+<title>The Table Designer window</title>
+<itemizedlist>
+<title>Table Designer window consists of following columns:</title>
+<listitem><para>
+<guilabel>PK</guilabel> - Primary Key. <!-- It will be discussed this topic in
+<link linkend="building-advanced-database">in a later chapter</link>. -->
+</para></listitem>
+<listitem><para>
+<guilabel>Field Caption</guilabel> - caption of the field
+which will be displayed during data entering.
+</para></listitem>
+<listitem><para>
+<guilabel>Data Type</guilabel> - a combo box containing a list of data types,
+allowing to set a main rule for entered data for a given field. For example,
+when an integer number data type is set for a field, a database user will not
+able to enter letter characters into this field.
+</para></listitem>
+<listitem><para>
+<guilabel>Comments</guilabel> - you can enter here any information useful for
+understanding what the given field is provided for. This additional text will
+be saved within the table design and only visible in design mode.
+</para></listitem>
+</itemizedlist>
+<para>
+In the <guilabel>Table designer</guilabel> window, every row corresponds to
+a single table field. You can recognize you are in <emphasis>design
+mode</emphasis> because the <!-- <img src="icons/state_edit.png" class="icon"> -->
+<guibutton>Switch to Design View mode</guibutton> button is toggled on within
+the main &kexi; toolbar.
+</para>
+
+
+<procedure>
+<title>Designing the <emphasis>Persons</emphasis> table</title>
+<step><para>
+In the first row click on the cell in the <guilabel>Field Caption</guilabel>
+column and enter <emphasis>Name</emphasis> as field caption.
+</para>
+<itemizedlist>
+<title>Notes about field names and captions</title>
+<listitem><para>
+Every table field must have a name and a caption, these cannot be empty.
+</para></listitem>
+<listitem><para>
+Field name is a word used by the database, usually not visible for users of the database application. The name may not contain special (national) characters (like ±, ¶, Ü)
+or space characters. The name must only contain roman letters,
+<!-- JSTANIEK: TODO: what about for example japanese letters? Are they allowed in japanese versions?-->
+numbers and underscore sign &quot;_&quot;. Use the latter instead of
+spaces or dashes.
+</para></listitem>
+<listitem><para>
+Field names must be started with a letter or underscore sign
+&quot;_&quot;, never with a number.
+</para></listitem>
+<listitem><para>
+It does not matter whether you are using small or capital letters.
+For &kexi; the database name &quot;Persons&quot; is the same as
+&quot;persons&quot;.
+</para></listitem>
+<listitem><para>
+Field caption, on the other hand, allows you to enter any letters and special characters. It will be displayed for users of the database application.
+</para></listitem>
+</itemizedlist>
+</step>
+
+<step>
+<itemizedlist>
+<title>In a similar way, enter the following fields into the table design:</title>
+<listitem><para><guilabel>surname</guilabel></para></listitem>
+<listitem><para>street</para></listitem>
+<listitem><para>house_number</para></listitem>
+<listitem><para>city</para></listitem>
+</itemizedlist>
+</step>
+
+<step><para>
+All the above fields, except <emphasis>house_number</emphasis>, are of type
+<emphasis>text</emphasis>.
+Change <emphasis>house_number</emphasis> field's type to <emphasis>integer
+number</emphasis>. To do this, click on a cell in the <guilabel>Data
+Type</guilabel> column, <emphasis>house_number</emphasis> row and then
+click on drop down list's button <!--<img src="icons/dropdown_button.png" class="icon">-->
+(you can also press <keycombo><keycap>F4</keycap></keycombo> or
+<keycombo action="simul">&Alt;<keycap>Down</keycap></keycombo>. The list
+of data types will appear. Select the <emphasis>Integer number</emphasis> type.
+<!--
+ <br><img src="img/05_01_01_changing_datatype.png">
+ <br>Changing data type of a filed to integer number<br><br>
+-->
+</para><para>
+From now on, the <emphasis>house_number</emphasis> field only accepts numbers.
+</para></step>
+
+<!-- TODO setting additional properties: e.g. caption -->
+<step><para>
+<emphasis>Persons</emphasis> table design is ready. Click <!-- <img src="icons/state_data.png" class="icon">-->
+<guibutton>Switch to Data View</guibutton> button on the toolbar to finish
+designing and switch to Data View for the table. This allows you entering
+data into the table.
+</para></step>
+
+<step><para>
+As the design is not yet saved in the database, the <guibutton>Save Object As</guibutton>
+dialog window appears. You need to specify the name for the new table.
+<!--
+ <br><img src="img/05_01_01_entering_table_name.png">
+ <br>Entering table name before saving its design<br><br>
+-->
+</para>
+<para>
+&kexi; offers a generic name like <emphasis>Table1</emphasis>.
+To change the name, enter <emphasis>Persons</emphasis> into the
+<emphasis>Caption</emphasis> field and press the <keycombo>
+<keycap>Enter</keycap></keycombo> key or click the <guibutton>OK</guibutton>
+button. The <guilabel>Caption</guilabel> field will be used to display the
+table to database end-users, &eg; as a form. Unlike the name, the caption can
+contain any characters including spaces and special characters.
+</para>
+<para>
+Note that filling the <guilabel>Caption</guilabel> field automatically fills
+the <guilabel>Name</guilabel> field. For your convenience the rule for using
+only letters, numbers and the &quot;_&quot; character is kept. You
+can alter the contents of the <guilabel>Name</guilabel> field if you want to.
+<!--
+ <br><img src="img/05_01_01_automatic_names.png">
+ <br>Example of automatically filled Name field<br><br>
+-->
+</para></step>
+
+<step><para>
+You are asked about an agreement for automatic adding of primary key to the table.
+<!--The idea of primary keys is described in <a href=""> -->
+<!-- TODO chapter # chapter 6</a>.--> Click <guibutton>Add primary key</guibutton>
+button to continue.
+<!--
+ <br><img src="img/05_01_01_pkey_recommended.png">
+ <br>A question about automatic adding a primary key<br><br>
+-->
+</para></step>
+
+<step><para>
+The <emphasis>Persons</emphasis> table has been created and opened in Data View.
+Its name appears in the <guilabel>Project Navigator</guilabel> pane.
+<!-- <br><img src="img/05_01_01_table_created.png">
+ <br><em>Persons</em> table in the Project Navigator pane<br><br>
+-->
+</para></step>
+
+<step><para>
+Create the <emphasis>phone_numbers</emphasis> table, in a similar
+way as <emphasis>persons</emphasis> table.
+</para></step>
+
+<step><para>
+Create a <emphasis>person</emphasis> field of type <emphasis>Integer
+number</emphasis> and <emphasis>phone</emphasis> of type <emphasis>Text</emphasis>.
+Do not use a number type here because phone numbers can have many different
+forms and prefixes.
+</para></step>
+
+<step><para>
+Click <!--<img src="icons/state_data.png" class="icon"> --> <guibutton>Switch to
+Data View</guibutton> button on the toolbar and enter <emphasis>Phones</emphasis>
+caption for the table. As for your previous table, allow &kexi; to automatically
+create a primary key.
+</para></step>
+</procedure>
+
+</sect2>
+
+</sect1>
+
+&enteringdataintotables;
+
+&querydesigning;
+
+&designingforms;
+
+&enteringdatausingforms;
+
+</chapter>
+
diff --git a/doc/kexi/comparing.docbook b/doc/kexi/comparing.docbook
new file mode 100644
index 00000000..f213ac04
--- /dev/null
+++ b/doc/kexi/comparing.docbook
@@ -0,0 +1,98 @@
+<!--
+ <!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" >
+-->
+
+<appendix id="comparing">
+ <title>
+ Comparing &kexi; to other database applications
+ </title>
+ <para>
+ Although different database applications tend to provide similar
+ functionality, they often use different terminology. For your
+ convenience, this appendix shows how the terminology used in
+ &kexi; corresponds to that used by other database applications.
+ Thus, this chapter may be useful when migrating databases from
+ one application to another.
+ </para>
+ <sect1 id="comparing-data-types">
+ <title>
+ Data types
+ </title>
+ <para>
+ The table below shows how the data types in &kexi; correspond
+ to data types in other database applications.
+ </para>
+ <para>
+ Some of the data types listed here are
+ <firstterm>sub-types</firstterm> of other types. For example,
+ the <emphasis>Long text</emphasis> type is a sub-type of the
+ <emphasis>Text</emphasis> type. To use a sub-type in
+ &kexi;, you should select the corresponding basic type (in
+ this case, Text) in the table designer, and then select the
+ sub-type using the <guilabel>Subtype</guilabel> setting in the
+ <guilabel>Properties Editor</guilabel>.
+ </para>
+ <table>
+ <title>
+ Comparison of data types used in &kexi; and other database
+ applications
+ </title>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>&kexi;</entry>
+ <entry>MS Access</entry>
+ <entry>dBase/FoxPro</entry>
+ <entry>Paradox</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>Text (Text)</entry>
+ <entry>Text</entry>
+ <entry>Character</entry>
+ <entry>Alphanumeric</entry>
+ </row>
+ <row>
+ <entry>Long text (Long text)</entry>
+ <entry>Memo</entry>
+ <entry>Memo</entry>
+ <entry>Memo</entry>
+ </row>
+ <row>
+ <entry>Date/Time (Date/Time)</entry>
+ <entry>Date, Time</entry>
+ <entry>Date</entry>
+ <entry>DateTime</entry>
+ </row>
+<!-- Not visible in Kexi GUI yet.
+ <row>
+ <entry>Object (Object)</entry>
+ <entry>OLE Object</entry>
+ <entry>General</entry>
+ <entry>OLE, Graphical Binary</entry>
+ </row>
+-->
+ <row>
+ <entry>Integer Number (Integer Number)</entry>
+ <entry>Number (Integer)</entry>
+ <entry>Numeric</entry>
+ <entry>Integer</entry>
+ </row>
+ <row>
+ <entry>Big Integer Number (Big Integer Number)</entry>
+ <entry>Long Integer</entry>
+ <entry>Numeric</entry>
+ <entry>Long Integer</entry>
+ </row>
+ <row>
+ <entry>Floating Point Number (Floating Point Number)</entry>
+ <entry>Single/Double precision number</entry>
+ <entry>Float</entry>
+ <entry>Number</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </sect1>
+</appendix>
diff --git a/doc/kexi/configuration.docbook b/doc/kexi/configuration.docbook
new file mode 100644
index 00000000..f3d134f7
--- /dev/null
+++ b/doc/kexi/configuration.docbook
@@ -0,0 +1,230 @@
+<!--
+ <!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" >
+-->
+
+<chapter id="configuration">
+ <title>
+ Configuring &kexi;
+ </title>
+
+ <para>
+ This chapter describes how you can configure &kexi; to suit your
+ own needs and preferences.
+ </para>
+
+ <sect1 id="configuring-window-layout">
+ <title>
+ Window Layout
+ </title>
+ <para>
+ &kexi; provides a <firstterm>Mutiple Document
+ Interface</firstterm> (MDI). This means that you can have
+ several database objects (such as tables, queries, forms and
+ scripts) open at the same time and in the same &kexi; main
+ window. Each database object is shown in a <firstterm>child
+ window</firstterm> within the main window.
+ </para>
+ <para>
+ There is a choice of two MDI modes available, allowing a choice
+ of how child windows are managed and displayed. The two modes
+ are:
+ <itemizedlist>
+ <listitem><para><guisubmenu>IDEAl Mode</guisubmenu>; and</para></listitem>
+ <listitem><para><guisubmenu>Childframe Mode</guisubmenu>.</para></listitem>
+ </itemizedlist>
+ These modes are described in the following two sections. You
+ can change the MDI mode from the <guisubmenu>MDI
+ Mode</guisubmenu> sub-menu under the <guimenu>Window</guimenu>
+ menu. Note that changing the MDI mode requires &kexi; to be
+ restarted before the new mode takes effect.
+ </para>
+ <sect2 id="window-layout-ideal">
+ <title>
+ IDEAl mode
+ </title>
+<!-- TODO: Screenshot of IDEAl mode -->
+ <para>
+ IDEAl mode is the default MDI mode, and may be familiar from
+ other &kde; applications. In this mode, a single child window
+ is shown maximized within the &kexi; main window at once.
+ A tab bar, containing one tab for each child window, allows
+ other child windows to be viewed by simply clicking on the
+ relevant tab.
+ </para>
+ </sect2>
+ <sect2 id="window-layout-childframe">
+ <title>
+ Childframe mode
+ </title>
+<!-- TODO: Screenshot of Childframe mode -->
+ <para>
+ In Childframe mode, child windows are displayed in the
+ main &kexi; window, but need not be maximized within it.
+ In order to use Childframe mode, you need to select
+ <action>
+ <guimenu>Window</guimenu>,
+ <guisubmenu>MDI Mode</guisubmenu>,
+ <guimenuitem>Childframe Mode</guimenuitem>
+ </action> from the menu.
+ </para>
+ <para>
+ Each child window has a titlebar with buttons for maximizing,
+ minimizing and closing it. They can also be moved and resized
+ within the main window in the normal way (for example, they
+ can be moved by clicking and dragging the title bar).
+ </para>
+ <para>
+ The buttons behave as follows: the right-most button closes
+ the child window. The button on its left maximizes the child
+ window - note this causes the buttons to move to the top right
+ of the main window, above the <guilabel>Properties
+ editor</guilabel> if it is open. The next button to the left
+ toggles the child window between minimized and restored.
+ </para>
+ <para>
+ The left-most button detaches, or
+ <firstterm>undocks</firstterm>, the child window, allowing it
+ to be moved out of the main window. For more information on
+ docking and undocking windows, see the next section.
+ </para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="docking-windows">
+ <title>
+ Docking and Undocking Windows
+ </title>
+ <para>
+ By default, the <guilabel>Project Navigator</guilabel> and
+ <guilabel>Properties Editor</guilabel> panels are displayed as
+ part of the main &kexi; window. It is possible to
+ <firstterm>undock</firstterm> each panel, so that it is
+ displayed in a separate window. Once undocked, it is possible
+ to <firstterm>dock</firstterm> the panel so it appears back in
+ the main window again.
+ </para>
+ <para>
+ In <link linkend="window-layout-childframe">Childframe
+ mode</link>, it is also possible to undock child windows. For
+ example, a child window showing a database table could be
+ undocked, allowing the child window showing the table to be
+ maximized on the screen.
+ </para>
+ <para>
+ It can be useful to undock a window when using:
+ <itemizedlist>
+ <listitem>
+ <para>
+ a small screen;
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ large tables, queries or forms; and/or
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ more than one montitor.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <sect2>
+ <title>
+ Docking and undocking side panels
+ </title>
+ <para>
+ The <guilabel>Project Navigator</guilabel> and
+ <guilabel>Properties Editor</guilabel> side panels may be
+ undocked by either:
+ <itemizedlist>
+ <listitem>
+ <para>
+ double-clicking on the 'grip' bar at the top of the
+ panel; or
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ clicking once on the arrow at the top of the panel, next
+ to the cross.
+ </para>
+ </listitem>
+ </itemizedlist>
+<!-- TODO: Screenshot -->
+ </para>
+ <para>
+ Once undocked, panel windows may be docked into the main
+ window again similarly to undocking:
+ <itemizedlist>
+ <listitem>
+ <para>
+ double-clicking on the 'grip' bar at the top of the window; or
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ clicking once on the arrow at the top of the panel, next
+ to the cross.
+ </para>
+ </listitem>
+<!-- TODO: Screenshot -->
+ </itemizedlist>
+ </para>
+ </sect2>
+ <sect2>
+ <title>
+ Docking and undocking child windows
+ </title>
+ <para>
+ Child windows may be docked and undocked in <link
+ linkend="window-layout-childframe">Childframe mode</link>
+ only.
+ </para>
+ <para>
+ In Childframe mode, child windows may be undocked by:
+ <itemizedlist>
+ <listitem>
+ <para>
+ right-clicking in the tab bar, on the tab corresponding
+ to the window to be undocked, and selecting
+ <guilabel>Undock</guilabel>; or
+ </para>
+<!-- TODO: Screenshot -->
+ </listitem>
+ <listitem>
+ <para>
+ right-clicking on the title bar of the child window, and
+ selecting <guilabel>Undock</guilabel>; or
+ </para>
+<!-- TODO: Screenshot -->
+ </listitem>
+ <listitem>
+ <para>
+ if the child window is <emphasis>not</emphasis>
+ maximized, clicking the arrow in the top right corner of
+ the child window (next to the minimize, maximize and
+ close buttons for that child window);
+ </para>
+<!-- TODO: Screenshot -->
+ </listitem>
+ <listitem>
+ <para>
+ if the child window is maximized, clicking the arrow to
+ the right of the menu bar (next to the minimize, restore
+ and close buttons for that child window).
+ </para>
+<!-- TODO: Screenshot -->
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ To dock a child window, right-clicking in the tab bar, on the
+ tab corresponding to the window to be docked, and select
+ <guilabel>Dock</guilabel>.
+ </para>
+<!-- TODO: Screenshot -->
+ </sect2>
+ </sect1>
+</chapter>
diff --git a/doc/kexi/contact-example.png b/doc/kexi/contact-example.png
new file mode 100644
index 00000000..9b2e5dbf
--- /dev/null
+++ b/doc/kexi/contact-example.png
Binary files differ
diff --git a/doc/kexi/credits.docbook b/doc/kexi/credits.docbook
new file mode 100644
index 00000000..6b910547
--- /dev/null
+++ b/doc/kexi/credits.docbook
@@ -0,0 +1,63 @@
+<chapter id="credits">
+<!-- Include credits for the programmers, documentation writers, and
+ contributors here. The license for your software should then be
+ included below the credits with a reference to the appropriate
+ license file included in the KDE distribution. -->
+
+<title>Credits and License</title>
+
+<para>
+ &kexi; Copyright 2002-2006 The &kexi; Team
+ <itemizedlist>
+ <title>&kexi; Developers:</title>
+ <listitem>
+ <para>Jaroslaw Staniek / OpenOffice Polska <email>js@iidea.pl</email></para>
+ </listitem>
+ <listitem>
+ <para>Lucijan Busch <email>lucijan@kde.org</email></para>
+ </listitem>
+ <listitem>
+ <para>Cedric Pasteur <email>cedric.pasteur@free.fr</email></para>
+ </listitem>
+ <listitem>
+ <para>Adam Pigg <email>adam@piggz.fsnet.co.uk</email></para>
+ </listitem>
+ <listitem>
+ <para>Martin Ellis <email>martin.ellis@kdemail.net</email></para>
+ </listitem>
+ <listitem>
+ <para>Sebastian Sauer <email>mail@dipe.org</email></para>
+ </listitem>
+ <listitem>
+ <para>Christian Nitschkowski <email>segfault_ii@web.de</email></para>
+ </listitem>
+ <listitem>
+ <para>Peter Simonsson <email>psn@linux.se</email></para>
+ </listitem>
+ <listitem>
+ <para>&Joseph.Wenninger; <email>jowenn@kde.org</email></para>
+ </listitem>
+ <listitem>
+ <para>Seth Kurzenberg <email>seth@cql.com</email></para>
+ </listitem>
+ <listitem>
+ <para>Laurent Montel <email>montel@kde.org</email></para>
+ </listitem>
+ <listitem>
+ <para>Till Busch <email>till@bux.at</email></para>
+ </listitem>
+ </itemizedlist>
+</para>
+
+<para>
+ Documentation by Martin A. Ellis <email>martin.ellis@kdemail.net</email>,
+ Jaroslaw Staniek <email>js@iidea.pl</email>
+ with contributions from Anne-Marie Mahfouf, Raphael Langerhorst, Michal Kubicki and Aron Stansvik.
+</para>
+
+<!-- TRANS:CREDIT_FOR_TRANSLATORS -->
+
+&underFDL; <!-- FDL: do not remove -->
+&underLGPL; <!-- LGPL License -->
+
+</chapter>
diff --git a/doc/kexi/database.docbook b/doc/kexi/database.docbook
new file mode 100644
index 00000000..e89afa55
--- /dev/null
+++ b/doc/kexi/database.docbook
@@ -0,0 +1,649 @@
+<!--
+ <!DOCTYPE appendix PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" >
+-->
+
+<appendix id="database">
+<title>Introduction to Databases</title>
+
+<sect1 id="what-is-a-database">
+<title>What Is a Database?</title>
+<para>
+You can define a database as a collection of data on one topic.
+It is organised in a way allowing to easily browse the information,
+make changes or add new items.
+</para>
+<para>
+Look at this diagram for one of the above examples: a simple phone book.
+</para>
+<screenshot>
+ <screeninfo>A diagram of a phone number database</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="contact-example.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>A diagram of a phone number database</phrase>
+ </textobject>
+ </mediaobject>
+</screenshot>
+<para>
+The above picture shows a set of two contacts each of which is
+presented on a separate card. It appears that such a card can
+constitute a single row in a table:
+</para>
+
+<para><emphasis><guilabel>Contacts</guilabel> table</emphasis></para>
+<informaltable>
+<tgroup cols="2">
+<tbody>
+<row>
+<entry><guilabel>Name</guilabel></entry>
+<entry><guilabel>Tel No.</guilabel></entry>
+</row>
+<row>
+<entry>Joan</entry>
+<entry>699 23 43 12</entry>
+</row>
+<row>
+<entry>Adam</entry>
+<entry>711 19 77 21</entry>
+</row>
+</tbody>
+</tgroup>
+</informaltable>
+
+<para>
+<emphasis>Terms and definitions</emphasis>:
+A single data which constitutes a part of a greater collection can be called a
+<firstterm>row</firstterm> or more professionally a
+<firstterm>record</firstterm>.
+The collection is normally called a <firstterm>table</firstterm>.
+Moreover, the most natural name for the table is one describing the data it
+offers/stores which is <guilabel>Contacts</guilabel>.
+Furthermore, each row in the table consists of <firstterm>columns</firstterm>
+often also called <firstterm>fields</firstterm>. In the table
+<guilabel>Contacts</guilabel> there are two columns (fields):
+<guilabel>Name</guilabel> and <guilabel>Tel No.</guilabel>.
+</para>
+<para>
+For simple uses a single table can make up a <firstterm>database</firstterm>.
+Many people consider these two equivalent.
+As you will see, for real databases we usually need more than one table.
+</para>
+<para>
+To sum up, you have already got a simple database with one table
+<guilabel>Contacts</guilabel>.
+</para>
+</sect1>
+
+
+<sect1 id="database-and-spreadsheet">
+<title>Database and Spreadsheet</title>
+<para>
+It is very likely that you have already used spreadsheet applications like
+KSpread, OpenOffice.org Calc or Microsoft Excel. If so, you will probably
+wonder: since both spreadsheets and databases have tables, why should I use
+the latter?
+</para>
+<para>
+While comparing spreadsheets and databases you may encounter the following issues which you will later see in greater detail:
+</para>
+<itemizedlist>
+<listitem><para><link linkend="referential-data-integrity">Referential
+data integrity</link></para></listitem>
+<listitem><para><link linkend="data-redundyncy">Data redundancy</link>
+</para></listitem>
+<listitem><para><link linkend="data-integrity-and-validity">Data integrity
+and validity</link></para></listitem>
+<listitem><para><link linkend="data-limiting">Limiting data view</link></para></listitem>
+<listitem><para><link linkend="performance-and-capacity">Performance and
+capacity</link></para></listitem>
+<listitem><para><link linkend="convenient-data-entry">Convenient data entry</link></para></listitem>
+<listitem><para><link linkend="reports">Reports</link></para></listitem>
+<listitem><para><link linkend="programming">Programming</link></para></listitem>
+<listitem><para><link linkend="multiuse">Multiuse</link></para></listitem>
+<listitem><para><link linkend="security">Security</link></para></listitem>
+</itemizedlist>
+
+<sect2 id="difference-database-and-spreadsheet">
+<title>How Is a Database Different From a Spreadsheet?</title>
+
+<para>
+Gradually exceeding the capacity of a mobile phone, expand your table
+<guilabel>Contacts</guilabel> adding a column (field)
+<guilabel>Address</guilabel>. Add more telephone numbers
+(office, home) for each person and add surnames to names.
+To make it simpler we assume the following:
+</para>
+<itemizedlist>
+<listitem><para>the table is limited to two people (obviously,
+there could be hundreds and thousands of them in a real
+database)</para></listitem>
+<listitem><para>there are no two persons with the same name and surname</para>
+</listitem>
+</itemizedlist>
+<para><emphasis>Contacts table</emphasis></para>
+<informaltable>
+<tgroup cols="3">
+<tbody>
+<row>
+<entry><emphasis>Name and surname</emphasis></entry>
+<entry><emphasis>Tel</emphasis></entry>
+<entry><emphasis>Address</emphasis></entry>
+</row>
+<row>
+<entry>Joan Smith</entry>
+<entry>699 23 43 12</entry>
+<entry>Western Gate 1, Warsaw</entry>
+</row>
+<row>
+<entry>Adam Willson</entry>
+<entry>711 19 77 21</entry>
+<entry>London, Frogs Drive 5</entry>
+</row>
+<row>
+<entry>Joan Smith</entry>
+<entry>110 98 98 00</entry>
+<entry>Western Gate 1</entry>
+</row>
+<row>
+<entry>Smith Joan</entry>
+<entry>312 43 42 22</entry>
+<entry>Warsaw, Western Gate 1</entry>
+</row>
+<row>
+<entry>ADAM Willson</entry>
+<entry>231 83 02 04</entry>
+<entry>Frogs Drive 5, London</entry>
+</row>
+</tbody>
+</tgroup>
+</informaltable>
+
+<para>
+Such a table can be made both in a spreadsheet and in a database.
+Using a spreadsheet is very easy, of couse. What problems do we
+encounter at this stage?
+</para>
+
+<sect3 id="referential-data-integrity">
+<title>Referential data integrity</title>
+<para>
+Suppose you are using a spreadsheet and you need to change the address of at
+least one person. You have a small problem: you often have to change the
+address in many rows. For example, Joan takes three rows. A real problem
+will arise if you forget to change one of the rows - the address asigned
+to this person will be <emphasis>ambiguous</emphasis>, hence
+<emphasis>your data loses integrity</emphasis>.
+</para>
+<para>
+Moreover there is no simple way of deleting a chosen person from the table
+since you have to remember about deleting all rows releted to him or her.
+</para>
+</sect3>
+
+
+<sect3 id="data-redundyncy">
+<title>Data redundancy</title>
+<para>
+This is directly connected to the previous problem. In fields
+<guilabel>Name and surname</guilabel> and <guilabel>Address</guilabel>
+the same data is entered many times. This is typical of a spreadsheets'
+ineffective way of storing data because the database grows unnecessarily,
+thus requiring more computer resources (larger size of data and slower access).
+</para>
+<para>
+How can you solve these problems with a database? You can split information
+into smaller chunks by creating an additional table <emphasis>Persons</emphasis>
+with only two columns: <guilabel>Name and surname</guilabel>
+and <guilabel>Address</guilabel>:
+</para>
+
+<para><emphasis><guilabel>Persons</guilabel> table</emphasis></para>
+<informaltable>
+<tgroup cols="2">
+<tbody>
+<row>
+<entry><emphasis>Name and surname</emphasis></entry>
+<entry><emphasis>Address</emphasis></entry>
+</row>
+<row>
+<entry>Joan Smith</entry>
+<entry>Western Gate 1, Warsaw</entry>
+</row>
+<row>
+<entry>Adam Willson</entry>
+<entry>Frogs Drive 5, London</entry>
+</row>
+</tbody>
+</tgroup>
+</informaltable>
+
+<para>
+Each row in the table <guilabel>Persons</guilabel> corresponds to a
+<emphasis>single person</emphasis>. Table <guilabel>Contacts</guilabel>
+is from now on a relation to the table <guilabel>Persons</guilabel>
+<!--(see next paragraph)-->.
+</para>
+
+</sect3>
+
+<sect3 id="data-integrity-and-validity">
+<title>Data integrity and validity</title>
+<para>
+Note the way data is entered in the fields <guilabel>Name and surname</guilabel>
+and <guilabel>Address</guilabel>. People entering data can be fallible,
+sometimes even negligent. In our sample data we have both different sequence
+of entering name and surname (Joan Smith and Smith Joan; Adam and ADAM) and
+many more ways of entering the same address. Surely you can think of many
+other ways.
+</para>
+<para>
+The above problem shows that &eg; when searching the telephone number of a
+person whose address is "Western Gate 1, Warsaw" you will not get a full
+result. You will get only one row instead of three. Moreover You will also
+not find all the telephone numbers searching for the value "Joan Smith" in
+the field <guilabel>Name and surname</guilabel>, because "Smith Joan" will
+not fit to "Joan Smith".
+</para>
+<para>
+How can you solve these problems using a database? You can do this by changing the design of the table <guilabel>Persons</guilabel> by:
+</para>
+<orderedlist>
+<listitem><para>
+<emphasis>Dividing data</emphasis> in the field <guilabel>Name and
+surname</guilabel> into two separate fields: <guilabel>Name</guilabel>
+and <guilabel>Surname</guilabel>.
+</para></listitem>
+<listitem><para>
+<emphasis>Dividing data</emphasis> in the field <guilabel>Address</guilabel>
+into three separate fields: <guilabel>Street</guilabel>, <guilabel>House
+number</guilabel> and <guilabel>City</guilabel>.
+</para></listitem>
+<listitem><para>
+<emphasis>Guaranteeing data correctness:</emphasis> by ensuring that no fields
+are empty, &eg; you must always enter house number.
+</para></listitem>
+</orderedlist>
+
+<para>
+A modified table looks something like this:
+</para>
+
+<para><emphasis>Persons table</emphasis></para>
+<informaltable>
+<tgroup cols="5">
+<colspec colnum="1" colname="c1"></colspec>
+<colspec colnum="2" colname="c2"></colspec>
+<colspec colnum="3" colname="c3"></colspec>
+<colspec colnum="4" colname="c4"></colspec>
+<colspec colnum="5" colname="c5"></colspec>
+<tbody>
+<row>
+<entry><emphasis>Name</emphasis></entry>
+<entry><emphasis>Surname</emphasis></entry>
+<entry><emphasis>Street</emphasis></entry>
+<entry><emphasis>House number</emphasis></entry>
+<entry><emphasis>City</emphasis></entry>
+</row>
+<row>
+<entry>Joan</entry>
+<entry>Smith</entry>
+<entry>Western Gate</entry>
+<entry>1</entry>
+<entry>Warsaw</entry>
+</row>
+<row>
+<entry>Adam</entry>
+<entry>Willson</entry>
+<entry>Frogs Drive</entry>
+<entry>5</entry>
+<entry>London</entry>
+</row>
+<row>
+<entry namest="c1" nameend="c5"><emphasis>Conditions</emphasis></entry>
+</row>
+<row>
+<entry>required field</entry>
+<entry>required field</entry>
+<entry>required field</entry>
+<entry>required field</entry>
+<entry>required field</entry>
+</row>
+</tbody>
+</tgroup>
+</informaltable>
+
+<para>
+Thanks to introducing the condition <guilabel>required field</guilabel> we can
+be sure that the entered data is complete. In case of other tables you may
+of course allow omitting certain fields while entering data.
+</para>
+
+</sect3>
+
+<sect3 id="data-limiting">
+<title>Limiting data view</title>
+<para>
+A spreadsheet displays all rows and columns of the table which is bothersome
+in case of very large data sheets. You may of course filter and sort rows
+in spreadsheets, however you must be extra careful while doing so. Spreadsheet
+users are in risk of forgetting that their data view has been filtered what
+can lead to mistakes. For example, while calculating sums you may think you
+have 100 rows of data while in fact there are 20 rows more hidden.
+</para>
+<para>
+If you want to work on a small subset of data, &eg; to send it for others to edit, you can copy and paste it to another spreadsheet and after editing paste the changed data back to the main spreadsheet. Such "manual" editing may cause data loss or incorect calculations.
+</para>
+<para>
+To limit the <emphasis>data view</emphasis> database applications offer
+<emphasis>queries</emphasis>, <emphasis>forms</emphasis>
+and <emphasis>reports</emphasis>.
+</para>
+<para>
+A very practical way of limitting is the following extended version of
+the previously described table <guilabel>Persons</guilabel>:
+</para>
+
+<para><emphasis>Persons table</emphasis></para>
+<informaltable>
+<tgroup cols="6">
+<tbody>
+<row>
+<entry><emphasis>Name</emphasis></entry>
+<entry><emphasis>Surname</emphasis></entry>
+<entry><emphasis>Street</emphasis></entry>
+<entry><emphasis>House number</emphasis></entry>
+<entry><emphasis>City</emphasis></entry>
+<entry><emphasis>Income</emphasis></entry>
+</row>
+<row>
+<entry>Joan</entry>
+<entry>Smith</entry>
+<entry>Western Gate</entry>
+<entry>1</entry>
+<entry>Warsaw</entry>
+<entry>2300</entry>
+</row>
+<row>
+<entry>Adam</entry>
+<entry>Willson</entry>
+<entry>Frogs Drive</entry>
+<entry>5</entry>
+<entry>London</entry>
+<entry>1900</entry>
+</row>
+</tbody>
+</tgroup>
+</informaltable>
+
+<para>
+Let's assume that the newly introduced column <guilabel>Income</guilabel>
+contains confidential data. How can you share &eg; contact details of the
+persons with your coworkers but without <emphasis>revealing their
+income</emphasis>? It is possible if <emphasis>you share only a query and
+not the whole table</emphasis>. The query could select all columns except
+for the column <guilabel>Income</guilabel>. In database world such a query
+is often known as a <guilabel>view</guilabel>.
+</para>
+
+</sect3>
+
+<sect3 id="performance-and-capacity">
+<title>Performance and capacity</title>
+<para>
+Your computer is probably quite fast, however you will easily see that it
+doesn't help with slow, large spreadsheets. Their low efficiency is first
+of all due to lack of indexes accelertaing the process of data search
+(databases do offer them). Moreover if you use things like system clipboard,
+even copying data may become troublesome with time.
+</para>
+<para>
+Spreadsheets containing large data sets may take ages to open. A spreadsheet
+loads lots of data to the computer's memory while opening. Most of the data
+loaded are probably useless/unneccessary for you at the moment. Databases
+unlike spreadsheets load data from computer storage only when needed.
+</para>
+<para>
+In most cases you will not have to worry how the database stores its data.
+This means that unlike spreadsheets, databases do not care about:
+</para>
+<itemizedlist>
+<listitem><para>
+The sequence of rows since you can order the rows according to your needs.
+Moreover, you can view the same data in many views with different orders.
+</para></listitem>
+<listitem><para>
+The same goes for columns (fields) of the table.
+</para></listitem>
+</itemizedlist>
+
+<para>
+Together with <link linkend="data-limiting">Limiting data view</link>
+described in the previous paragraph these qualities constitute the
+advantage of databases.
+</para>
+
+</sect3>
+
+<sect3 id="convenient-data-entry">
+<title>Data entry</title>
+<para>
+The latest editions of applications for creating spreadsheets enable you
+to design data-entry forms. Such forms are most useful if your data cannot
+be conveniently displayed in tabular view, &eg; if the text occupies
+too many rows or if all the columns do not fit on the screen.
+</para>
+<para>
+In this case the very way the spreadsheet works is problematic.
+Fields for data entry are placed loosely within the spreadsheet
+and very often are not secure against the user's (intentional
+or accidental) intervention.
+</para>
+</sect3>
+
+<sect3 id="reports">
+<title>Reports</title>
+<para>
+Databases enable grouping, limiting and summing up data in a form of a
+<emphasis>report</emphasis>. Spreadsheets are usually printed in a form
+of small tables without fully automatic control over page divisions and
+the layout of fields.
+</para>
+</sect3>
+
+<sect3 id="programming">
+<title>Programming</title>
+<para>
+Applications for creating databases often contain full programming languages.
+Newer spreadsheets have this capability too, however calculations come down
+to modifying the spreadsheet's fields and simple data copying, regardless of
+the relevance and integrity rules mentioned in previous paragraphs.
+</para>
+<para>
+Data processing within a spreadsheet is usually done via a graphical user's
+interface which may slow down the data processing speed. Databases are
+capable of working in background, outside of graphical interfaces.
+</para>
+</sect3>
+
+<sect3 id="multiuse">
+<title>Multiuse</title>
+<para>
+It is hard to imagine a multiuse of one spreadsheet. Even if it is technically
+possible in the case of the latest applications, it requires a lot of
+discipline, attention and knowledge from the users, and these cannot
+be guaranteed.
+</para>
+<para>
+A classical way to sharing data saved in a spreadsheet with other person is
+to send a file as a whole (usually using e-mail) or providing a spreadsheet
+file in a computer network. This way of work is ineffective for larger
+groups of people - data that could be needed in a particular time may
+be currently locked by another person.
+</para>
+<para>
+On the other hand, databases have been designed mainly with multiuser
+access in mind. Even for the simplest version locking at a particular table
+row's level is possible, which enables easy sharing of table data.
+</para>
+</sect3>
+
+<sect3 id="security">
+<title>Security</title>
+<para>
+Securing a spreadsheet or its particular sections with a password is only
+symbolic activity. After providing a spreadsheet file in a computer network,
+every person being able to copy the file can try to break the password.
+It is sometimes not so hard as the password is stored in the same file
+as the spreadsheet.
+</para>
+<para>
+Features for edit locking or copy locking of a spreadsheet (or its part)
+is equally easy to break.
+</para>
+<para>
+Databases (except these saved in a file instead of a server) do not need
+to be available in a single file. You're accessing them using a computer
+network, usually by providing a user name and a password. You are gaining
+access only to these areas (tables, forms or even selected rows and columns)
+which were assigned to you by setting appropriate access rights.
+</para>
+<para>
+Access rights can affect ability of data editing or only data reading.
+If any data is not avaliable to you, it will not be even sent to your
+computer, so there is no possibility of making a copy of the data in such
+easy way as in case of spreadsheet files.
+</para>
+
+</sect3>
+</sect2>
+</sect1>
+
+<sect1 id="database-design">
+<title>Database Design</title>
+<para>
+Database design needs careful planning. Note that <guilabel>Contacts</guilabel>
+table redesign proposed in section 1.2 can generate problems when the
+table is filled with data. For example, renaming a field is a simple task,
+but splitting the <guilabel>Address</guilabel> field into separate fields
+requires careful and tedious work.
+</para>
+<para>
+To avoid such situations, <emphasis>rethink your database project</emphasis>
+before you create it in your computer, and before you and others will start
+to use it. Thus, by investing some time initially, you will most probably
+save your time on everyday use.
+</para>
+</sect1>
+
+<sect1 id="who-needs-a-database">
+<title>Who Needs a Database?</title>
+<itemizedlist>
+<title>Stick to spreadsheets if:</title>
+<listitem><para>
+Your needs are limited and your data will never grow to
+large volumes (can you actually forecast that now?)
+</para></listitem>
+<listitem><para>
+You are unable to acquire the methodology of database construction.
+You may however consider either outsourcing this task to someone else
+or using simpler tools.
+</para></listitem>
+<listitem><para>
+You use complicated spreadsheets and you lack time or money to switch
+to databases. Think or ask someone whether this does not lead down a
+blind alley. Don't count on magical tools that would change your
+spreadsheet (regardless how well made) into a database.
+</para></listitem>
+</itemizedlist>
+
+<itemizedlist>
+<title>Consider using databases if:</title>
+<listitem><para>Your data collection expands every week.</para></listitem>
+<listitem><para>
+You often create new spreadsheets, copy within these and you feel
+that this work is getting more and more tedious. In this case the
+effort of switching to databases easily pays off.
+</para></listitem>
+<listitem><para>
+You create reports and statements for which the table view of
+a spreadsheet is not suitable. You can then consider switch
+to using a database with form views.
+</para></listitem>
+</itemizedlist>
+</sect1>
+
+<sect1 id="database-software">
+<title>Database Creation Software</title>
+<para>
+So far you have learnt the general characteristics of databases without
+going into much detail about specific applications for designing them.
+</para>
+<para>
+The first databases were built together with large mainframe computers
+in the 60s, &eg; IBM System/360. Those were not the days of PCs,
+therefore these databases required a highly specialized personnel.
+Although the old computers' hardware was unreliable, they were immeasurably
+slower and had less storage capacity, one feature of databases still remains
+most attractive: the data access by many users through a network.
+</para>
+<para>
+In the 70s scientists formed the theory of relational databases
+(terms like: <firstterm>table</firstterm>, <firstterm>record</firstterm>,
+<firstterm>column (field)</firstterm> and <firstterm>relationality</firstterm>
+and many others).
+On the basis of this theory IBM DB2 and Oracle databases were created,
+which have been developed and used till today. In the late 70s the first
+PCs were constructed. Their users could (gradually) utilize many types of
+applications, including those for database construction.
+</para>
+<para>When it comes to large databases in companies, the situation
+hasn't changed:
+they still require powerful computers or computer complexes called
+<firstterm>clusters</firstterm>. This goes, however, beyond the topic
+of this manual.
+</para>
+<para>
+In the area of "accessible" databases with graphic user interface
+for PCs you can choose from the following:
+</para>
+
+<itemizedlist>
+<listitem><para>
+<ulink url="http://www.dbase.com/">DBase</ulink>
+- a tool for databases operation for DOS popular in the 80s. Files in DBase format
+are still used in some specific cases due to their simplicity.
+</para></listitem>
+<listitem><para>
+<ulink url="http://msdn.microsoft.com/vfoxpro/productinfo/overview/">FoxPro</ulink>
+- an application similar to DBase (early 90s). After being taken over by
+Microsoft, graphic user interfaces were introduced and therefore it is
+used for creating databases on PCs. This product is still offered, though
+seems a bit obsolete.
+</para></listitem>
+<listitem><para>
+<ulink url="http://office.microsoft.com/access/">Microsoft Access</ulink>
+- an application for databases (data and graphic interface design) with many
+simplifications, therefore suitable for beginners, designed in the late 80s,
+based on 16-Bit Architecture. This product is offered and widely used till today, especially
+by small companies, where efficiency and multiuser requirements are not very demanding.
+</para></listitem>
+<listitem><para>
+<ulink url="http://www.filemaker.com/">FileMaker</ulink>
+- popular application similar to MS Access in simplicity, operating on Windows
+and Macintosh platforms, offered since 1985.
+</para></listitem>
+<listitem><para>
+<ulink url="http://www.kexi.pl/">&kexi;</ulink>
+- a multiplatform application (Unix/Linux, Windows, Mac OS X) designed in 2003,
+developed according to OpenSource principles, part of the global
+<ulink url="http://www.kde.org/">K Desktop Environment</ulink> project,
+&ie; graphic environment for Unix/Linux systems. A significant contributor
+to &kexi;'s development is the OpenOffice Poland company.
+</para></listitem>
+</itemizedlist>
+
+</sect1>
+
+</appendix>
diff --git a/doc/kexi/designingforms.docbook b/doc/kexi/designingforms.docbook
new file mode 100644
index 00000000..b205fe71
--- /dev/null
+++ b/doc/kexi/designingforms.docbook
@@ -0,0 +1,1480 @@
+<!--
+ <!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" >
+
+ -->
+
+ <sect1 id="designing-forms">
+ <title>Designing Forms</title>
+
+ <sect2 id="most-important-terms">
+ <title>Most important terms</title>
+ <glosslist>
+ <glossentry id="gloss-form">
+ <glossterm>Form</glossterm>
+ <glossdef>
+ <para>
+ A window provided for easy data entry and presentation on the
+ computer screen.
+ </para>
+ </glossdef>
+ </glossentry>
+ <glossentry id="gloss-form-data-source">
+ <glossterm>Form's data source</glossterm>
+ <glossdef>
+ <para>
+ Database table or query providing data displayed in the
+ form. The data source is needed because forms itself are only
+ <emphasis>tools</emphasis> for displaying and entering data,
+ while tables and queries are the source of data. New, empty
+ forms have no data source assigned, so they are not displaying
+ any data from your database unless you assign a data source
+ to them.
+ </para>
+ </glossdef>
+ </glossentry>
+ <glossentry id="gloss-form-field">
+ <glossterm>Form field</glossterm>
+ <glossdef>
+ <para>
+ Direct equivalent of a column in a table or query. Most frequently
+ used are fields for displaying text and numbers. Entering a new
+ value or changing the existing value of such a field causes a change
+ in the bound table or query column (after accepting the change).
+ </para>
+ </glossdef>
+ </glossentry>
+ <glossentry id="gloss-form-design">
+ <glossterm>Form design</glossterm>
+ <glossdef>
+ <para>
+ Tasks you are performing to define the appearance and functions of
+ the form. To do this, you need to provide
+ <glossterm linkend="gloss-form-data-source">data source</glossterm>,
+ insert <glossterm linkend="gloss-form-field">form fields</glossterm>
+ of various types and place them at the appropriate location.
+ </para>
+ </glossdef>
+ </glossentry>
+ <glossentry id="gloss-form-widget">
+ <glossterm>Form widget</glossterm>
+ <glossdef>
+ <para>Form's element. Main widget types are:</para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Widgets displaying information, &eg; a text box or an image box. Each
+ widget of this type can be <emphasis>bound</emphasis> to a data
+ source field (a table or a query column). Therefore, such widgets
+ are called in short <glossterm linkend="gloss-form-field">form fields</glossterm>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Widgets able to perform a specified action, &eg; a push button
+ that can close the current form. Within other applications this
+ widget type is sometimes called <firstterm>form control</firstterm>
+ because it can perform previously defined action of
+ <emphasis>controlling</emphasis> your database application's
+ behavior.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Other widgets allowing to enrich a form's appearance, &eg;
+ a <quote>line widget</quote> can visually separate two form
+ areas.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </glossdef>
+ </glossentry>
+ <glossentry id="gloss-container-widget">
+ <glossterm>Container widget</glossterm>
+ <glossdef>
+ <para>
+ A widget that can <emphasis>contain</emphasis> other widgets within
+ its area. For example, frame widget or tab widget are containers.
+ The form's surface itself is a container as well. A command button cannot
+ be called as container because it is not possible to insert a widget
+ inside it. In more complex cases, container widgets can be inserted
+ inside a container, so nesting is possible.
+ </para>
+ <!--
+ <screenshot>
+ <screeninfo>Example container widgets</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_04_01_widget_containers.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>Example container widgets</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>-->
+ </glossdef>
+ </glossentry>
+ </glosslist>
+ </sect2>
+
+ <sect2 id="forms-versus-tables">
+ <title>Forms versus tables</title>
+ <para>
+ In chapter <!--<a href="05_02_00_entering_data_into_tables.html">5.2</a>-->
+ 5.2 you learned about how to enter data directly into tables using their
+ data sheet view. However, in many cases forms are better suited for data
+ entry:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ A table can contain too many columns to display them on your
+ screen. A form can display such a data using multiple rows.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ A form allows to visually split data <glossterm linkend="gloss-form-field">fields</glossterm>
+ into logical groups, thus increasing readability. Labels with
+ additional information can be inserted to give users more hints
+ on how to use the form or what given data <glossterm linkend="gloss-form-field">fields</glossterm> mean.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Command buttons can be used within forms for commonly used commands
+ so users can use forms in a similar way as a standalone applications they
+ know.
+ </para>
+ </listitem>
+ <listitem>
+ <para>In data sheet view displaying multi-row data text
+ <glossterm linkend="gloss-form-field">fields</glossterm> or images
+ is as easy as within forms.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Working with form design</title>
+ <para>As with table or query design, you are able to use <interface>Data View</interface>
+ and <interface>Design View</interface>. Form designing is performed in
+ <interface>Design View</interface>. We will often refer to the form design window as to
+ <interface>Form Designer</interface>.
+ </para>
+ <procedure>
+ <step>
+ <para>To create a new empty form, select
+ <menuchoice><guimenu>Insert</guimenu><guimenuitem>
+ <!--<img src="img/form_newobj.png" class="icon">-->Form</guimenuitem></menuchoice>
+ from the Menubar. Optionally, you can use
+ <menuchoice><guimenuitem>
+ <!--<img src="img/form_newobj.png" class="icon">-->New Form</guimenuitem></menuchoice>
+ command from drop-down button on the <interface>Project Navigator's</interface>
+ toolbar or <menuchoice><guimenuitem>Create Object: Form</guimenuitem></menuchoice> command from the context menu.
+ </para>
+ </step>
+ <step>
+ <para>A new frame will appear, you can resize the form by moving the
+ borders. The form is covered with a grid which simplifies
+ accurate positioning of the widgets.
+ </para>
+ <!--<screenshot>
+ <screeninfo>A window with design of a new form</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_04_03_new_empty_form.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>A window with design of a new form</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>-->
+ </step>
+ </procedure>
+ <para>As with table design, <interface>Form Designer</interface> provides
+ <interface>Property pane</interface>. To save some space on the screen,
+ the pane has three tabs related to the currently
+ selected form:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>The <guilabel>Properties</guilabel> tab</term>
+ <listitem>
+ <para>Contains a list of properties for the currently selected widget.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <!--<img src="img/property_pane_datasource_tab.png" class="icon">-->
+ The <guilabel>Data source</guilabel> tab
+ </term>
+ <listitem>
+ <para>
+ Contains properties related specifically to the <glossterm linkend="gloss-form-data-source">data source</glossterm>
+ of the currently selected widget or the form itself.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <!--<img src="img/property_pane_widget_tab.png" class="icon">-->
+ The <guilabel>Widgets</guilabel> tab
+ </term>
+ <listitem>
+ <para>
+ Contains a hierarchy of all widgets of the form. The list simplifies
+ widgets lookup by name and navigation between them.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ There is information about currently selected widget's name and type displayed
+ on the first and second tab.
+ </para>
+ <para>Additional toolbars are also available:</para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The <guilabel>Widgets</guilabel> toolbar used for inserting new widgets
+ into the form
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <guilabel>Format</guilabel> toolbar used to format form's elements (&eg;
+ adjusting widget's size, grouping). Formatting commands are also available
+ in the <guimenu>Format</guimenu> menu. More about these commands can be found
+ in <xref linkend="formatmenu"/>.
+ <!--<a href="aa_05_00_menu.html#menu_format">A.6. Format Menu</a>-->
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2 id="using-the-widgets-tab">
+ <title>Using the <guilabel>Widgets</guilabel> tab</title>
+ <para>
+ The <guilabel>Widgets</guilabel> tab in the <interface>Property pane</interface> provides
+ a list of form widgets and their hierarchy. Each widget is presented
+ within the hierarchy beside other widgets being on the same level
+ (the same parent container). Child widgets (inside containers) are
+ presented using indented names.
+ </para>
+ <!--<para>In the picture below, the form (a container) contains two widgets:
+ <guilabel>groupBox2</guilabel> and <guibutton>options</guibutton> command button. In
+ turn, <guilabel>groupBox2</guilabel> (being a container itself) contains two check box
+ widgets.
+ </para>
+ <screenshot>
+ <screeninfo>Using the <quote>Widgets</quote> tab</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_04_04_widgets_tab.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>Using the <quote>Widgets</quote> tab</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>-->
+ <para>
+ Each widget has displayed its name and type. The type has also an icon
+ displayed - the same as the one displayed on the toolbar used while
+ form designing is performed.
+ </para>
+ <note>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Changing the current selection on the list causes appropriate selection
+ on the designed form. This allows for easier widget lookup by name and
+ easier navigation. For example, it is possible to select a widget by
+ name, and then switch to the <guilabel>Properties</guilabel> tab to change the
+ widget's properties.</para>
+ </listitem>
+ <listitem>
+ <para>
+ Keeping the <keycap>Ctrl</keycap> key pressed while an item on the
+ widgets list is being selected allows to select multiple widgets at a time.
+ Keeping the <keycap>Shift</keycap> key pressed allows to select entire lists
+ of widgets.</para>
+ </listitem>
+ <!--<listitem>
+ <para>
+ When widget is inserted, it is recommended to give it a reasonable name.
+ For example, <guilabel>green</guilabel> check box widget has been named specifically
+ for its meaning, using the <guilabel>Properties</guilabel> tab
+ (<guilabel>Name</guilabel> property has been used to do that). Such change
+ can make it easier to find a widget within the list.
+ </para>
+ <screenshot>
+ <screeninfo>Naming the widget as <guilabel>green</guilabel></screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_04_04_renaming_widgets.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>Naming the widget as <guilabel>green</guilabel></phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </listitem>-->
+ </itemizedlist>
+ </note>
+ <para>
+ Giving widgets reasonable names can be useful but is not mandatory. Note
+ that widget's name is a property that is not visible to the user of your form.
+ Users will only see a widget text, provided by <varname>Text</varname> property
+ or similar.
+ </para>
+ </sect2>
+
+ <sect2 id="inserting-widgets-text-fields">
+ <title>Inserting widgets - text fields</title>
+ <para>
+ Let's create a form providing information about persons, i.e. a form connected
+ it with <literal>Persons</literal> table.
+ </para>
+ <para>
+ If the form being designed should present data obtained from the database,
+ you need to place appropriate <glossterm linkend="gloss-form-field">fields</glossterm>
+ on it. To do this, use the buttons on the <guilabel>Widgets</guilabel> toolbar. Each button corresponds to a single widget type.
+ </para>
+ <procedure>
+ <step>
+ <para>
+ Click <!--<img src="img/lineedit.png" class="icon">-->
+ <guibutton>Text Box</guibutton> button on the <guilabel>Widgets</guilabel> toolbar.
+ </para>
+ </step>
+ <step>
+ <para>
+ Click on the form surface with the <mousebutton>left</mousebutton> mouse
+ button. A new text box widget will be placed in the point where you clicked.
+ Before you release you can drag your mouse to specify a desired size for the widget.
+ </para>
+ </step>
+ <step>
+ <para>
+ If needed, move the inserted widget using drag &amp; drop to a desired
+ position. You can resize the widget afterwards by dragging one of the
+ small boxes appearing near its corners. Note that the boxes are only
+ visible when the widget is selected. If you select another widget or the
+ form surface, the boxes disappear.
+ </para>
+ </step>
+ <step>
+ <para>Click the <guibutton>Text Box</guibutton> toolbar button again and click
+ on the form surface to insert another widget. Repeat this action once
+ again until you get three text boxes inserted in your form. For sake of
+ simplicity we will limit ourselves to three data
+ <glossterm linkend="gloss-form-field">fields</glossterm>.
+ </para>
+ </step>
+ </procedure>
+ <note>
+ <itemizedlist>
+ <listitem>
+ <para>
+ There is a context menu available in form's design mode, activated by a
+ <mousebutton>right</mousebutton> mouse button click the desired widget
+ or the form's surface. The menu offers commands like
+ <!--<img src="img/editcut.png" class="icon">--><guimenuitem>Cut</guimenuitem>,
+ <!--<img src="img/editcopy.png" class="icon">--><guimenuitem>Copy</guimenuitem>,
+ <!--<img src="img/editpaste.png" class="icon">--><guimenuitem>Paste</guimenuitem>,
+ <!--<img src="img/editdelete.png" class="icon">--><guimenuitem>Delete</guimenuitem>
+ and other, more complex. Many of the commands are also provided in the
+ <guilabel>Menubar</guilabel>, usually <guimenuitem>Edit</guimenuitem>.
+ Keyboard shortcuts are also available for these commands. Some of the
+ commands are only available for certain types of widgets.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The commands <guimenuitem>
+ <!--<img src="img/editcut.png" class="icon">-->Cut</guimenuitem>,<guimenuitem>
+ <!--<img src="img/editcopy.png" class="icon">-->Copy</guimenuitem> and <guimenuitem>
+ <!--<img src="img/editpaste.png" class="icon">-->Paste</guimenuitem>
+ makes it possible to move or copy widgets between forms, even between separate
+ database projects.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Holding the <keycap>Ctrl</keycap> key down while clicking a widget allows to select
+ multiple widgets.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Instead of using <guimenuitem>
+ <!--<img src="img/editcopy.png" class="icon">-->Copy</guimenuitem>
+ and <guimenuitem>
+ <!--<img src="img/editpaste.png" class="icon">-->Paste</guimenuitem>
+ commands, to duplicate a widget within the same form you can hold down the
+ <keycap>Ctrl</keycap> key while moving the widget. After the <keycap>Ctrl</keycap>
+ key is released, the dragged widget will not be moved but copied in the new location.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </note>
+ </sect2>
+
+ <sect2 id="assigning-data-sources">
+ <title>Assigning data sources</title>
+ <para>
+ The <glossterm linkend="gloss-form-field">fields</glossterm> you inserted
+ have no <emphasis>data source</emphasis> assigned yet,
+ so these are not able to display information from the database. To assign data
+ source, use the <!--<img src="img/database.png" class="icon">-->
+ <guilabel>Data Source</guilabel> tab of the <interface>Property pane</interface>.
+ </para>
+ <para>
+ The very first step is to specify the <glossterm linkend="gloss-form-data-source">form's data source</glossterm>,
+ i.e. a place the displayed data will be fetched from. As mentioned above, you
+ will use table <literal>persons</literal> as a
+ <glossterm linkend="gloss-form-data-source">data source</glossterm>
+ for your new form.
+ </para>
+ <procedure>
+ <step>
+ <para>Click on the form's surface, as you will alter its properties.</para>
+ </step>
+ <step>
+ <para>
+ Switch to the <!--<img src="img/database.png" class="icon">-->
+ <guilabel>Data Source</guilabel> tab and enter <literal>persons</literal>
+ table name in the <guilabel>Form's data source</guilabel> drop down list.
+ Alternatively, you can select this name from the drop down list.
+ </para>
+ <!--<screenshot>
+ <screeninfo>Entering <glossterm linkend="gloss-form-data-source">form's data source</glossterm> name</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_04_05_entering_form_data_source.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>Entering <glossterm linkend="gloss-form-data-source">form's data source</glossterm> name</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>-->
+ </step>
+ </procedure>
+ <para>
+ You have assigned <glossterm linkend="gloss-form-data-source">form's data source</glossterm>. Now you need to do specify
+ widget's data source.
+ </para>
+ <procedure>
+ <step>
+ <para>Click the first text field widget at the top of the form.</para>
+ </step>
+ <step>
+ <para>
+ In the <!--<img src="img/database.png" class="icon">--><guilabel>Data Source</guilabel>
+ tab of the property pane enter field name <varname>name</varname> in the
+ <emphasis>Widget's data source</emphasis> drop down list. Alternatively, you can select
+ this name from the drop down list.
+ </para>
+ <!--<screenshot>
+ <screeninfo>Entering widget's data source name</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_04_05_entering_text_field_data_source.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>Entering widget's data source name</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>-->
+ </step>
+ <step>
+ <para>Click on next text field widget and enter <varname>surname</varname> as the data source.</para>
+ </step>
+ <step>
+ <para>
+ Enter data sources for <varname>street</varname>, <varname>house_number</varname>
+ and <varname>city</varname> text <glossterm linkend="gloss-form-field">fields</glossterm>
+ in a similar way.
+ </para>
+ </step>
+ </procedure>
+ <para>
+ You can now save the form's design (this is not mandatory to test the
+ form in action). To save, click the
+ <!--<img src="img/filesave.png" class="icon">-->
+ <guilabel>Save object changes</guilabel> toolbar button or use the
+ <menuchoice><shortcut><keycombo action="simul"><keycap>Ctrl</keycap><keycap>S</keycap></keycombo></shortcut>
+ <guimenu>File</guimenu><guimenuitem>
+ <!--<img src="img/filesave.png" class="icon">-->Save</guimenuitem></menuchoice>
+ menu command. Upon saving you will be asked for entering the form's name. Enter
+ <literal>Persons</literal> as caption and click the <guibutton>OK</guibutton>
+ button. The form's name will be filled automatically.
+ </para>
+ <para>
+ This is the right moment for testing your form. Click the <!--<img src="img/state_data.png" class="icon">-->
+ <guibutton>Switch to data view</guibutton> toolbar button. Unless you made a
+ mistake while entering data sources, you should see
+ <glossterm linkend="gloss-form-field">form's fields</glossterm> filled
+ with data from the <literal>persons</literal> table.
+ </para>
+ <!--<screenshot>
+ <screeninfo>The <literal>Persons</literal> form in data view after inserting text fields and assigning data sources</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_04_06_form_with_text_fields.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>The <literal>Persons</literal> form in data view after inserting text fields and assigning data sources</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>-->
+ <note>
+ <itemizedlist>
+ <listitem>
+ <para>
+ If you want to remove widget's <glossterm linkend="gloss-form-data-source">data source</glossterm>
+ assignment for a form widget, you can use <!--<img src="img/clear_left.png" class="icon">-->
+ <guibutton>Clear widget's data source</guibutton> button near
+ the <guilabel>Widet's data source</guilabel> drop down list. Similarly, you can use the
+ <!--<img src="img/clear_left.png" class="icon">-->
+ <guibutton>Clear form's data source</guibutton> button near the
+ <guilabel>Form's data source</guilabel> drop down list.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Use the <!--<img src="img/goto.png" class="icon">-->
+ <guibutton>Go to selected form's data source</guibutton> button to select
+ appropriate table or query in the <interface>Project Navigator</interface>,
+ so you can quickly open a table or query being the
+ <glossterm linkend="gloss-form-data-source">data source</glossterm>
+ of the form.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <!-- TODO: mention about creating Auto Fields by using drag & drop -->
+ </note>
+ </sect2>
+
+ <sect2 id="inserting-text-labels">
+ <title>Inserting text labels</title>
+ <para>
+ To make it easier for the form's user to identify the meaning of every field
+ widget, these should have added text labels with appropriate titles. To
+ create text labels the <!--<img src="img/label.png" class="icon">-->
+ <literal>Label</literal> widget is used.
+ </para>
+ <para>
+ Insert three text label widgets onto the form, placing them on the left
+ side of the text fields (or on the right hand if your operating system
+ uses right-to-left layout). On inserting a new label, a text cursor
+ appears at the location where you can enter the desired title. Enter consecutively:
+ <literal>Name</literal>, <literal>Surname</literal> and <literal>Street</literal>. Additionally,
+ on the top of the form insert another label displaying name of the form,
+ i.e. <literal>Persons</literal>. Enlarge this label's size and and increase the font size using
+ <!--<a href="aa_00_00_menu.html#menu_format_font">-->
+ <menuchoice><guimenu>Format</guimenu><guimenuitem>Font...</guimenuitem></menuchoice>
+ <!--</a>-->
+ menu command.
+ </para>
+ <!--<screenshot>
+ <screeninfo>Ready to use form after adding text labels</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_04_06_form_with_labels.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>Ready to use form after adding text labels</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>-->
+ </sect2>
+
+ <sect2 id="actions">
+ <title>Actions</title>
+ <para>
+ An <literal>Action</literal> is a single activity isolated in the application,
+ available for the user to execute. It can also be executed automatically as a
+ reaction for a given event (&eg; after opening a form).
+ </para>
+
+ <sect3 id="assigning-actions-to-form-buttons">
+ <title>Assigning actions to form buttons</title>
+ <para>
+ Many actions can be assigned to form button. The assigned action is executed
+ after button is clicked.
+ </para>
+ <para>To assign action:</para>
+ <procedure>
+ <step>
+ <para>Switch to form's <interface>Design view</interface> if you have not done yet.</para>
+ </step>
+ <step>
+ <para>
+ Select the existing button widget by clicking on it or put a new button
+ widget onto the form. If you inserted a new button, enter its title and
+ press <keycombo action="press"><keycap>Enter</keycap></keycombo> key.
+ </para>
+ </step>
+ <step>
+ <para>
+ Click the button widget with the <mousebutton>right</mousebutton> mouse
+ button to display the context menu.
+ </para>
+ </step>
+ <step>
+ <para>
+ From the context menu select
+ <!--<img src="img/form_action.png" class="icon">-->
+ <guimenuitem>Assign action...</guimenuitem> command.
+ </para>
+ </step>
+ <step>
+ <para>
+ An <guilabel>Assigning Action to Command Button</guilabel> dialog window
+ will appear presenting a list of available actions. One of the actions
+ is selected if the widget already has action assigned. Otherwise the
+ <guilabel>Action type</guilabel> drop down list has the <guilabel>No type</guilabel>
+ item selected.
+ </para>
+ </step>
+ <step>
+ <para>
+ From the <guilabel>Action type</guilabel> drop down list select
+ <guilabel>Application</guilabel> item. Available application-wide actions
+ will be listed.
+ </para>
+ </step>
+ <step>
+ <para>Select one of the actions on the list (&eg; <guilabel>Delete Row</guilabel>).</para>
+ </step>
+ <step>
+ <para>
+ Click the <guibutton>OK</guibutton> button or press
+ the <keycombo action="press"><keycap>Enter</keycap></keycombo> key to
+ accept your selection.
+ </para>
+ </step>
+ </procedure>
+ <!--<screenshot>
+ <screeninfo>Assigning <guilabel>Delete Row</guilabel> action to a form's button</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_04_07_assigning_action_to_button.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>Assigning <guilabel>Delete Row</guilabel> action to a form's button</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>-->
+ <para>
+ After switching to the form's <emphasis>data view</emphasis> you can try
+ whether the action works. For example, if you assigned <guilabel>Delete Row</guilabel>
+ action, clicking the button, the current database row will be deleted, similarly
+ to executing <menuchoice><shortcut><keycombo action="simul"><keycap>Ctrl</keycap><keycap>Delete</keycap></keycombo></shortcut><guimenu>Edit</guimenu><guimenuitem>Delete Row</guimenuitem></menuchoice>
+ menu command (depending on your settings you may be asked to confirm the removal).
+ </para>
+
+ <note>
+ <itemizedlist>
+ <listitem>
+ <para>
+ To remove an action assignment, select <guilabel>No type</guilabel> item from
+ the <guilabel>Action type</guilabel> drop down list of the
+ <guilabel>Assigning Action to Command Button</guilabel> dialog window.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Actions only work in the form's <emphasis>data view</emphasis>. Not every
+ action's assignment is reasonable. For example, the
+ <guimenuitem>Font...</guimenuitem> action is available in data view, but
+ only if you have a widget selected in the <interface>Design view</interface>. If you
+ make changes to the font settings the changes are applied to the text
+ of that selected widget.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </note>
+ </sect3>
+ </sect2>
+
+ <sect2 id="widget-layouts">
+ <title>Widget layouts</title>
+ <para>
+ In most cases form widgets should be conveniently arranged and aligned.
+ Positioning, aligning and resizing widgets by hand is not easy and these
+ parameters are not adjusted when the user resizes the form. In fact the
+ situation is even worse because you cannot assume a given form requires
+ a given space because users have different font sizes and display resolutions.
+ </para>
+ <!--
+ <para>
+ The following example presents a form where text fields and labels were
+ placed by hand. Some of them cannot fit in the form's window.
+ </para>
+ <screenshot>
+ <screeninfo>An example form with widgets that cannot not fit in the window</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_04_08_form_no_fit.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>An example form with widgets that cannot not fit in the window</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>-->
+ <para>
+ Using special tool called widget layouts can help to automatically lay
+ out the form widgets. Widget layout is an action of grouping two or more
+ widgets so these are well positioned and have appropriate sizes.
+ </para>
+ <para>
+ Using layout in a form improves alignment. Moreover, its space is
+ better used. Text fields are closer to each other, spacing is constant.
+ </para>
+ <!--<screenshot>
+ <screeninfo>Example form with layout used</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_04_08_form_well_fit.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>Example form with layout used</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>-->
+ <para>There are two methods to create widget layout.</para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Select two or more widgets that should be placed in a common layout,
+ and select one of the layout types from the context menu item
+ <!--<a href="aa_00_00_menu.html#menu_format_layout">-->
+ <guilabel>Layout Widgets</guilabel>
+ <!--</a>-->.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Click a container widget (or a form surface itself), where widgets are
+ inserted and select one of the layout types from the context menu item
+ <!--<a href="aa_00_00_menu.html#menu_format_layout">-->Layout Widgets
+ <!--</a>-->.
+ All widgets existing within the container or within the
+ form, being on the same level will be put into a single common layout.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ In each of these cases you can also use
+ <menuchoice><guimenu>Format</guimenu><guimenuitem>Layout Widgets</guimenuitem></menuchoice>
+ menu.
+ </para>
+ <!--<screenshot>
+ <screeninfo>Selecting widgets that will be put into a layout</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_04_08_form_layout_selecting.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>Selecting widgets that will be put into a layout</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ <screenshot>
+ <screeninfo>Four widgets are selected</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_04_08_form_layout_selected.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>Four widgets are selected</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ <screenshot>
+ <screeninfo>Using the context menu for putting the widgets into a grid layout</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_04_08_form_layout_popup.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>Using the context menu for putting the widgets into a grid layout</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>-->
+ <para>
+ Widget layout is presented in the design view using a blue, green or
+ red box drawn with a broken line. This line is displayed only in the
+ form's design view.
+ </para>
+ <!--<screenshot>
+ <screeninfo>Widgets within a grid layout</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_04_08_form_layout_grid.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>Widgets within a grid layout</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>-->
+ <para>Besides the grid type, there are other widget layout types.</para>
+ <variablelist>
+ <varlistentry>
+ <term>vertical</term>
+ <listitem>
+ <para>Vertical widget layout</para>
+ <!--<screenshot>
+ <screeninfo>Vertical widget layout</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_04_08_form_layout_vertical.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>Vertical widget layout</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>-->
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>horizontal</term>
+ <listitem>
+ <para>Horizontal widget layout</para>
+ <!--<screenshot>
+ <screeninfo>Horizontal widget layout</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_04_08_form_layout_horizontal.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>Horizontal widget layout</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>-->
+ </listitem>
+ </varlistentry>
+ <!-- TODO podzia poziomy / pionowy
+ <br><img src="img/05_04_08_form_layout_vertical_splitter.png">
+ <br><br>
+ <br><img src="img/05_04_08_form_layout_horizontal_splitter.png">
+ <br><br>
+ </li> -->
+ </variablelist>
+
+ <sect3 id="springs-in-widget-layouts">
+ <title>Springs in widget layouts</title>
+ <para>
+ A <emphasis>spring</emphasis> in widget layouts is a special, invisible element allowing
+ to adjust widget's position and size within layouts. Such a spring
+ stretches or squeezes a widget on the right, top, bottom or left hand,
+ so it can have desired size and position.
+ </para>
+ <para>To use a spring:</para>
+ <procedure>
+ <step>
+ <para>
+ Select <!--<img src="img/spring.png" class="icon">-->spring icon on the
+ <guilabel>Widgets</guilabel> toolbar.
+ </para>
+ </step>
+ <step>
+ <para>Click on a selected point of the form to insert the spring.</para>
+ </step>
+ </procedure>
+ <!--<para>
+ For the following example, the spring has been inserted on the left
+ hand of the text label "Persons". The label is thus displayed on the
+ right hand of the form. To make the spring work, it has been put into
+ a common horizontal layout with the label.
+ </para>
+ <screenshot>
+ <screeninfo>Horizontal layout containing a spring and a text label</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_04_08_form_spring.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>Horizontal layout containing a spring and a text label</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>-->
+ <para>
+ To make springs work you need to create a global widget layout, i.e. a
+ layout for the form itself. Then, springs can use edges of the form as
+ a boundary for expanding.
+ </para>
+ </sect3>
+ <!--
+
+ TODO: The entire text in this section is built around a screenshot
+ example, so it's commented out for now.
+
+ <sect3 id="advanced-widget-layouts">
+ <title>Advanced widget layouts</title>
+ <para>
+ Widget layouts can be combined (or nested). On the following example
+ you can identify two nested layouts:
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ Horizontal layout with a spring, aligning the <literal>Persons</literal>
+ text label to the right.
+ </para>
+ </listitem>
+ <listitem>
+ <para>Grid layout grouping widgets on the whole form.</para>
+ </listitem>
+ </orderedlist>
+ <screenshot>
+ <screeninfo>Two widget layouts combined: horizontal layout inside of a grid layout</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_04_08_form_advanced_layout.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>Two widget layouts combined: horizontal layout inside of a grid layout</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ <para>
+ The horizontal layout is treated in the example as a single widget by
+ the grid layout - it takes exactly one <quote>cell</quote> of the grid.
+ After opening a form designed this way in the data view, you can notice
+ (by resizing the form) that:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>Persons</literal> text label thanks to the spring used is constantly
+ aligned to the to the right side of the form.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Text fields take all of the available width thanks to putting them
+ into the grid layout.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ All the form's widgets are pushed to the top thanks to the spring
+ used at the bottom of the form.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <screenshot>
+ <screeninfo>The form using the two layouts displayed in data view</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_04_08_form_advanced_layout_view.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>The form using the two layouts displayed in data view</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </sect3>-->
+
+ <sect3 id="removing-widget-layouts">
+ <title>Removing widget layouts</title>
+ <para>
+ To remove widget layout without removing widgets, perform one of
+ these actions:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Click with the <mousebutton>right</mousebutton> mouse button on
+ the layout's border and select <guimenuitem>Break Layout</guimenuitem>
+ command from the context menu.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Click with the <mousebutton>left</mousebutton> mouse button on
+ the layout's border and select
+ <menuchoice><guimenu>Format</guimenu><guimenuitem>Break Layout</guimenuitem></menuchoice>
+ menu command.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <note>
+ <para>
+ Removing widget layout using the <guimenuitem>Break Layout</guimenuitem>
+ command will not remove widgets contained in the layout. If you want to
+ remove the widgets as well, just select the layout by clicking on its
+ border and press <keycap>Delete</keycap> key or use
+ <menuchoice><guimenu>Edit</guimenu><guimenuitem>
+ <!--<img src="img/editdelete.png" class="icon">-->Delete</guimenuitem></menuchoice>
+ menu command or context menu command.
+ </para>
+ </note>
+ </sect3>
+
+ <sect3 id="size-policies-for-widgets-within-a-layout">
+ <title>Size policies for widgets within a layout</title>
+ <para>
+ Instead of setting a fixed size for your widgets, in &kexi; you can
+ choose between various widget's size policies. A <emphasis>size policy</emphasis>
+ is a flexible strategy for controlling how a widget is stretched (or shrunk)
+ depending on other neighbouring widgets and space available within the form.
+ </para>
+ <para>
+ After putting widgets into a <emphasis>layout</emphasis>, typically each widget
+ gets a proportional (<guilabel>Preferred</guilabel>) size policy. These widgets
+ will be automatically resized with preferred settings, depending on their
+ type and size of the entire layout itself. For example, three buttons put
+ into the horizontal layout will be resized to fit their visible text.
+ </para>
+ <para>For each widget inserted into the form, there are settings for size policy
+ available in the <interface>Property Editor</interface>. The settings are presented
+ as a group of properties called <guilabel>Size Policy</guilabel>.
+ </para>
+ <!--<screenshot>
+ <screeninfo>A group of properties for defining a widget's size policy</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_04_09_size_policy_properties.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>A group of properties for defining a widget's size policy</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>-->
+ <para>This group of properties contains:</para>
+ <variablelist>
+ <varlistentry>
+ <term><guilabel>Horizontal Size Policy</guilabel></term>
+ <listitem>
+ <para>defining horizontal size of the widget,</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><guilabel>Vertical Size Policy</guilabel></term>
+ <listitem>
+ <para>defining vertical size of the widget,</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><guilabel>Horizontal Stretch</guilabel></term>
+ <listitem>
+ <para>
+ defining strength of activity of the
+ <guilabel>Horizontal Size Policy</guilabel>,
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><guilabel>Vertical Stretch</guilabel></term>
+ <listitem>
+ <para>
+ defining strength of activity of the
+ <guilabel>Vertical Size Policy</guilabel>
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <sect4>
+ <title>Values of size policies</title>
+ <para>
+ The following values are available in the drop down list for
+ <guilabel>Horizontal Size Policy</guilabel> and
+ <guilabel>Vertical Size Policy</guilabel> properties visible
+ in the <interface>Property Editor</interface>:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><guilabel>Fixed</guilabel></term>
+ <listitem>
+ <para>
+ this value means that the widget cannot be automatically resized; it
+ should maintain the constant size defined at design time (width or height),
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><guilabel>Minimum</guilabel></term>
+ <listitem>
+ <para>
+ this value means that the original size of the widget is set as minimal
+ allowed, it is sufficient and there is no need for expanding the widget,
+ but the widget will be expanded if needed. This type of policy can be used
+ to force the widget to be expanded to the whole width or height, especially
+ if you set a stretch value greater than 0.
+ </para>
+ <!--<screenshot>
+ <screeninfo>Text field and two buttons within a grid layout (Minimum horizontal size policy is set for both buttons, so these are slightly wider than needed)</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_04_09_size_policy_minimum.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>Text field and two buttons within a grid layout (Minimum horizontal size policy is set for both buttons, so these are slightly wider than needed)</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>-->
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><guilabel>Maximum</guilabel></term>
+ <listitem>
+ <para>
+ this value means that the original size of the widget is set as maximum
+ allowed and can be decreased without breaking the widget's usability
+ and readability if other widgets need more space,
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><guilabel>Preferred</guilabel></term>
+ <listitem>
+ <para>
+ this value means that the original size of the widget is the best and
+ preferred; the widget can be shrunk or expanded however and it
+ will stay readable,
+ </para>
+ <!--<screenshot>
+ <screeninfo>Text field and two buttons within a grid layout (Preferred horizontal size policy is set for both buttons)</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_04_09_size_policy_preferred.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>Text field and two buttons within a grid layout (Preferred horizontal size policy is set for both buttons)</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>-->
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><guilabel>Expanding</guilabel></term>
+ <listitem>
+ <para>
+ this value means that the original size of the widget is reasonable but
+ the widget can be also shrunk; it can be expanded as well to take
+ as much space as possible,
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><guilabel>Minimum Expanding</guilabel></term>
+ <listitem>
+ <para>
+ this value means that the original size of the widget is allowed; it
+ can be expanded to take as much space as possible,
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><guilabel>Ignored</guilabel></term>
+ <listitem>
+ <para>
+ this value means that the original size of the widget is ignored; the
+ widget can be expanded to take as much space as possible but other
+ widgets usually will not allow for that
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ Different widget types have various default size policies; for example,
+ button widgets have default size policy set to <guilabel>Minimum</guilabel> (in both directions),
+ while text field widgets have vertical size policy set to <guilabel>Fixed</guilabel>.
+ </para>
+ <para>
+ The most frequently used size policies are <guilabel>Preferred</guilabel>,
+ <guilabel>Minimum</guilabel> and <guilabel>Maximum</guilabel>.
+ </para>
+ </sect4>
+
+ <sect4>
+ <title>Vertical and horizontal stretch</title>
+ <para>
+ The <guilabel>Vertical Stretch</guilabel> and <guilabel>Horizontal Stretch</guilabel>
+ properties accept integer values greater than or equal to 0. These properties allow to fine-tune the
+ behavior of size policies. The default value for the properties is 0.
+ A higher value of the stretch means that the widget will be expanded
+ more than widgets for which a lower stretch value is set. <!--For example,
+ the following image presents two buttons where the first button has
+ Vertical Stretch set to 0 and the second button has Vertical Stretch
+ set to 1.-->
+ </para>
+ <!--<screenshot>
+ <screeninfo>Size of button widgets affected by setting Vertical Stretch property of the second button to 1</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_04_09_size_policy_vertical_stretch.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>Size of button widgets affected by setting Vertical Stretch property of the second button to 1</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>-->
+ </sect4>
+ </sect3>
+ </sect2>
+
+ <sect2 id="setting-widgets-size-and-position-by-hand">
+ <title>Setting widgets size and position by hand</title>
+ <para>In case when your form has no main layout set for auto-positioning and
+ auto-resizing its widgets, you will probably want to modify the position and size of widgets so the form can look cleaner and be easier to use. The &kexi; form
+ designer simplifies this task by offering the following groups of commands:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Adjusting sizes of selected widgets. The commands are available in the
+ <menuchoice><guimenu>Format</guimenu><guisubmenu>Adjust Widgets Size</guisubmenu></menuchoice>
+ submenu of the menubar and in the
+ <menuchoice><guisubmenu>Adjust Widgets Size</guisubmenu></menuchoice>
+ submenu of the context menu. The toolbar's drop down
+ button <!--<img src="img/aogrid.png" class="icon">--><guibutton>Adjust Widgets Size</guibutton>
+ is also available.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><!--<img src="img/aofit.png" class="icon">--><guilabel>To Fit</guilabel></term>
+ <listitem>
+ <para>
+ The size of the selected widgets will be altered so each widget will be
+ resized to its preferred size and its contents; for example, a text
+ label's size will be changed to fit its text. The position of the widgets
+ will not be changed.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><!--<img src="img/aogrid.png" class="icon">--><guilabel>To Grid</guilabel></term>
+ <listitem>
+ <para>
+ The size of the selected widgets will be altered so each widget's corner
+ will be placed on the form's (or other container's) grid point.
+ The widget's position can be slightly altered.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><!--<img src="img/aoshortest.png" class="icon">--><guilabel>To Shortest</guilabel></term>
+ <listitem>
+ <para>
+ The height of the selected widgets will be altered so that each of them
+ will have the same height as the shortest one. The position of the widgets
+ will not be changed.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><!--<img src="img/aotallest.png" class="icon">--><guilabel>To Tallest</guilabel></term>
+ <listitem>
+ <para>
+ The height of the selected widgets will be altered so that each of them
+ will have the same height as the tallest one. The position of the widgets
+ will not be changed.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><!--<img src="img/aonarrowest.png" class="icon">--><guilabel>To Narrowest</guilabel></term>
+ <listitem>
+ <para>
+ The width of the selected widgets will be altered so that each of them
+ will have the same height as the narrowest one. The position of the
+ widgets will not be changed.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><!--<img src="img/aowidest.png" class="icon">--><guilabel>To Widest</guilabel></term>
+ <listitem>
+ <para>
+ The width of the selected widgets will be altered so that each of them
+ will have the same height as the widest one. The position of the widgets
+ will not be changed.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </listitem>
+ <listitem>
+ <para>
+ Aligning positions of the selected widgets. The commands are available
+ in the
+ <menuchoice><guimenu>Format</guimenu><guisubmenu>Align Widgets Position</guisubmenu></menuchoice>
+ submenu of the menubar and in the
+ <menuchoice><guisubmenu>Align Widgets Position</guisubmenu></menuchoice>
+ submenu of the context menu. The toolbar's drop
+ down button <!--<img src="img/aoleft.png" class="icon">-->
+ <guibutton>Align Widgets Position</guibutton> is also available.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><!--<img src="img/aoleft.png" class="icon">--><guilabel>To Left</guilabel></term>
+ <listitem>
+ <para>
+ All the selected widgets' left positions will be moved to the
+ position of the leftmost widget's left edge.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><!--<img src="img/aoright.png" class="icon">--><guilabel>To Right</guilabel></term>
+ <listitem>
+ <para>
+ All the selected widgets' right positions will be moved to the
+ position of the rightmost widget's right edge.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><!--<img src="img/aotop.png" class="icon">--><guilabel>To Top</guilabel></term>
+ <listitem>
+ <para>
+ All the selected widgets' top positions will be moved to the
+ position of the uppermost widget's upper edge.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><!--<img src="img/aobottom.png" class="icon">--><guilabel>To Bottom</guilabel></term>
+ <listitem>
+ <para>
+ All the selected widgets' bottom positions will be moved to the
+ position of the bottommost widget's bottom edge.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><!--<img src="img/aopos2grid.png" class="icon">--><guilabel>To Grid</guilabel></term>
+ <listitem>
+ <para>
+ All the selected widgets' top-left corners will be moved so that
+ they are positioned in the nearest grid point.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>None of the above commands resizes the widgets.</para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ There are also additional commands available:
+ <!--<img src="img/raise.png" class="icon">--><guimenuitem>Bring Widget to Front</guimenuitem>
+ (i.e. above all other widgets) and
+ <!--<img src="img/lower.png" class="icon">--><guimenuitem>Send Widget to Back</guimenuitem> (i.e. below all
+ other widgets). These two commands are rarely used, as it is not
+ common to place one widget on top of an other (except when a
+ container widget contains other widget inside). Also note that clicking
+ a widget with a mouse button is enough to bring the widget to front.
+ </para>
+ </sect2>
+
+ <sect2 id="setting-the-tab-order">
+ <title>Setting the tab order</title>
+ <para>
+ A widget's focus determines that widget's activity available using keyboard.
+ Focus is related to widgets displayed in the form's data view. Exactly one
+ form widget can have focus at the same time. The most frequent use of focus
+ is text entry (when a given text field is active, i.e. it is focused).
+ An other example is a button widget - when focused, it is possible to
+ <quote>press</quote> it using the <keycombo action="press"><keycap>Enter</keycap></keycombo>
+ or <keycombo action="press"><keycap>Space</keycap></keycombo> key instead of a mouse button.
+ </para>
+ <para>
+ There are a few methods of making the widgets active (moving the focus
+ to the widget): clicking with a mouse button, rotating the mouse wheel
+ over the widget, or using the <keycombo action="press"><keycap>Tab</keycap></keycombo>
+ key. The latter method is often used because of its speed and convenience
+ for users. Availability of the focusing methods is controlled by
+ <guilabel>Focus Policy</guilabel> property of a given widget.
+ </para>
+ <para>
+ There is a relationship between focusing (activating) widgets using <keycombo action="press"><keycap>Tab</keycap></keycombo>
+ key and tab order setting of a form. After pressing the <keycombo action="press"><keycap>Tab</keycap></keycombo> key, the
+ next widget should be focused, so the form should know about the tab order.
+ </para>
+ <para>To alter tab order for a form's widget:</para>
+ <procedure>
+ <step>
+ <para>Switch to design view of the form.</para>
+ </step>
+ <step>
+ <para>
+ Execute <menuchoice><guimenu>Edit</guimenu><guimenuitem>Edit Tab Order...</guimenuitem></menuchoice>
+ menu command. The <guilabel>Edit Tab Order</guilabel> dialog will appear with settings for this form.
+ </para>
+ <!--<screenshot>
+ <screeninfo>A window for editing tab order for a form</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_04_11_tab_stop_dialog.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>A window for editing tab order for a form</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>-->
+ <para>
+ The window contains a list with two columns: the first column displays
+ widget names, the second - types of the widgets. To make it easier to
+ recognize meaning of the names and types for the user, icons related
+ to the types are also displayed. The list contains only widgets having
+ focus policy allowing to use the <keycap>Tab</keycap> key. The window
+ allows you to change the tab order or set the automatic tab order.
+ </para>
+ </step>
+ <step>
+ <para>To change tab order, either:</para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Click a selected widget name in the widgets list and drag it
+ to a desired position (up or down) using the mouse.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Click a selected widget name on the widgets list and use
+ <guibutton>Move Up</guibutton> or <guibutton>Move Down</guibutton>
+ buttons, to move the widgets to a desired position.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Click the <guilabel>Handle tab order automatically</guilabel> check box to set the
+ automatic tab order for the form. If this option has been switched
+ on, any changes made to the list of widgets by hand are not taken
+ into account - &kexi; will be handling the tab orders on its own.
+ The automatic ordering means that the top-left widget will be focused
+ first (or the top-right if your operating system uses right-to-left
+ layout), and the order comes from the left to right (from the right
+ to left, respectively) and from the top to bottom.
+ </para>
+ <!--<screenshot>
+ <screeninfo>Automatic tab order for a form</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_04_11_auto_tab_stop.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>Automatic tab order for a form</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>-->
+ </listitem>
+ </itemizedlist>
+ </step>
+ <step>
+ <para>
+ Click the <guibutton>OK</guibutton> button to accept the changes or <guibutton>Cancel</guibutton> button to dismiss
+ the changes.
+ </para>
+ </step>
+ </procedure>
+ </sect2>
+ </sect1>
diff --git a/doc/kexi/enteringdataintotables.docbook b/doc/kexi/enteringdataintotables.docbook
new file mode 100644
index 00000000..d65c17d3
--- /dev/null
+++ b/doc/kexi/enteringdataintotables.docbook
@@ -0,0 +1,130 @@
+<!--
+ <!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" >
+
+ -->
+
+ <sect1 id="entering-data-into-tables">
+ <title>Entering Data Into Tables</title>
+ <para>
+ You have designed the two tables <literal>Persons</literal> and
+ <literal>phone_numbers</literal>. None of them contain any data yet. You can
+ enter some, and in this chapter you will learn how to do this fast and effectively.
+ </para>
+ <procedure>
+ <step>
+ <para>
+ Start with the <literal>persons</literal> table. Open it in <interface>Data View</interface> using the <!--<a href="04_06_01_project_navigator.html">--><interface>Project Navigtor</interface>'s context menu.
+ The current cell is marked with
+ (usually black) thicker border, a <firstterm>cell cursor</firstterm>. The contents
+ of the cell, if present, are highlighted with a different color. The current
+ row, i.e. the one you have placed your rectangular cursor in, is marked
+ on the left hand with an arrow symbol.
+ <!--<img src="icons/button_tableview_currentrow.png" class="icon">-->
+ </para>
+ <para>
+ You can navigate through table cells using the arrow keys, <keycap>Page Down</keycap>,
+ <keycap>Page Down</keycap>, <keycap>Home</keycap>, <keycap>End</keycap> keys; you can also
+ click with the mouse in a cell to select it. <!-- TODO chapter moved
+ To learn more
+ about available key bindings for the data table view, see the section
+ <a href="ab_00_00_shortcuts.html#data_table">
+ B.4. Data Table in the Appendix B. Key Bindings. -->
+ </para>
+ <para>
+ Initially, after opening the table <literal>Persons</literal>, the cursor is placed in
+ the <literal>id</literal> column. The column has autonumber property defined,
+ marked with blue <literal>(autonumber)</literal> text in the last row. It
+ means you do not have to enter values there by hand when entering data for a new
+ row because the cell will be filled automatically with successive numbers.
+ </para>
+ <!--<screenshot>
+ <screeninfo>Data entry</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_02_00_data_editing.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>Data entry</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>-->
+ </step>
+ <step>
+ <para>
+ Inserting new rows and entering data for them in &kexi; is different from
+ the way of doing this in spreadsheets. To enter data for a new row, you need
+ to use the arrow keys or mouse, to move your cursor to the special empty last
+ row marked with a plus <!--<img src="icons/button_tableview_newrow.png" class="icon">-->
+ sign. Place your cursor in the (second) <literal>name</literal> column and enter a
+ person's name. Also enter surname, street, house number and city. When
+ done, move the cell cursor to the last empty row either by using the
+ <keycap>Arrow Down</keycap> key or by clicking in the last
+ row with the mouse to append a new row.
+ </para>
+ <note>
+ <title>Details About Actions Available While Entering Data Into Tables</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ As soon as you enter the first character, the current row is being edited. A pencil <!--<img src="icons/button_tableview_editrow.png" class="icon">--> symbol appears on the left side of the data table.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Double clicking a cell with the &LMB; or pressing <keycap>Enter</keycap> or the <keycap>F2</keycap> key also starts
+ editing of the current row.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Pressing the <keycap>Esc</keycap> key when the contents of a cell is edited
+ <emphasis>cancels changes made to this cell</emphasis>. However, the pencil
+ <!--<img src="icons/button_tableview_editrow.png" class="icon">-->
+ symbol will not disappear because you can still move to a different cell
+ of the edited row to change its contents. To
+ <emphasis>cancel changes made to the entire edited row</emphasis>, press the
+ <keycap>Esc</keycap> key again.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Instead of pressing the <keycap>Esc</keycap> key, you can click the
+ <!--<img src="icons/button_cancel.png" class="icon">--><guibutton>Cancel</guibutton>
+ toolbar button or select
+ <menuchoice><guimenu>Data</guimenu><guimenuitem>Cancel Row Changes</guimenuitem></menuchoice>
+ from the menubar.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Click the <keycombo action="simul"><keycap>Shift</keycap><keycap>Enter</keycap></keycombo>
+ keys to accept changes made to all cells in the currently edited row. You can also click
+ <!--<img src="icons/button_ok.png" class="icon">--><guibutton>OK</guibutton> toolbar
+ button or select <menuchoice><guimenu>Data</guimenu><guimenuitem>Save Row</guimenuitem></menuchoice>
+ from the menubar.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </note>
+ </step>
+ <step>
+ <para>
+ Fill the <literal>phone_numbers</literal> table with data.<!--, e.g. similar to
+ provided in the figure below.--> In the <literal>persons</literal> column you
+ need to provide a number of the person existing in the <literal>persons</literal>
+ table.
+ </para>
+ <!--<screenshot>
+ <screeninfo>Example contents of the <literal>phone_numbers</literal> table</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_01_01_table2_contents.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase>Example contents of the <literal>phone_numbers</literal> table</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>-->
+ </step>
+ </procedure>
+ </sect1>
diff --git a/doc/kexi/enteringdatausingforms.docbook b/doc/kexi/enteringdatausingforms.docbook
new file mode 100644
index 00000000..08fcb627
--- /dev/null
+++ b/doc/kexi/enteringdatausingforms.docbook
@@ -0,0 +1,33 @@
+<!--
+ <!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" >
+
+ -->
+
+ <sect1 id="entering-data-using-forms">
+ <title>Entering Data Using Forms</title>
+ <para>
+ Data entering and editing is usually the task of the user of the database application. The designer of the database should check the form in terms of valid
+ data entry, and see whether the form works as expected.
+ </para>
+ <para>
+ To test your form, switch to its data view. A single database row (record)
+ of data will be displayed and a text cursor will be set inside the first
+ data field. You can move between fields using the &LMB; or the <keycap>Tab</keycap> and
+ <keycombo action="simul"><keycap>Shift</keycap><keycap>Tab</keycap></keycombo>
+ keys. While editing, there will be a
+ <!--<img src="icons/button_tableview_editrow.png" class="icon">-->
+ pencil icon visible near the record navigator. After entering the row's (record)
+ data you can press the
+ <keycombo action="simul"><keycap>Shift</keycap><keycap>Enter</keycap></keycombo>
+ keys or click the
+ <!--<img src="icons/button_ok.png" class="icon">--><guibutton>OK</guibutton>
+ toolbar button to accept changes made to the current row. Clicking the
+ <!--<img src="icons/button_cancel.png" class="icon">--><guibutton>Cancel</guibutton>
+ toolbar button discards changes made to the current row and restores the contents of
+ the data fields. You can use the <!--<img src="icons/navigator_next.png" class="icon">-->
+ record navigator's button to move to a new row. All the navigator's functions are
+ also available in a similar way as in the data table view
+ <!-- TODO link -->.
+ <!-- TODO shortcuts! -->
+ </para>
+ </sect1>
diff --git a/doc/kexi/index.docbook b/doc/kexi/index.docbook
new file mode 100644
index 00000000..04692e4c
--- /dev/null
+++ b/doc/kexi/index.docbook
@@ -0,0 +1,122 @@
+<?xml version="1.0" ?>
+<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
+ <!ENTITY package "koffice">
+ <!ENTITY kappname "&kexi;">
+ <!ENTITY % addindex "IGNORE">
+ <!ENTITY % English "INCLUDE">
+
+ <!-- Chapters -->
+ <!ENTITY intro SYSTEM "intro.docbook">
+ <!ENTITY basics SYSTEM "basics.docbook">
+ <!ENTITY building SYSTEM "building.docbook">
+ <!ENTITY querydesigning SYSTEM "querydesigning.docbook">
+ <!ENTITY enteringdataintotables SYSTEM "enteringdataintotables.docbook">
+ <!ENTITY designingforms SYSTEM "designingforms.docbook">
+ <!ENTITY enteringdatausingforms SYSTEM "enteringdatausingforms.docbook">
+ <!ENTITY configuration SYSTEM "configuration.docbook">
+ <!ENTITY menus SYSTEM "menus.docbook">
+ <!ENTITY credits SYSTEM "credits.docbook">
+ <!ENTITY database SYSTEM "database.docbook">
+ <!ENTITY comparing SYSTEM "comparing.docbook">
+ <!-- Do not define any other entities; instead, use the entities
+ from entities/general.entities and $LANG/user.entities. -->
+]>
+
+<book lang="&language;">
+
+<bookinfo>
+<title>
+ The &kexi; Handbook
+</title>
+
+<authorgroup>
+ <author>
+ <personname>
+ <firstname>Martin</firstname>
+ <othername>A.</othername>
+ <surname>Ellis</surname>
+ </personname>
+ <email>martin.ellis@kdemail.net</email>
+ </author>
+ <author>
+ <personname>
+ <firstname>Jaroslaw</firstname>
+ <surname>Staniek</surname>
+ </personname>
+ <email>js@iidea.pl</email>
+ </author>
+ <!-- TRANS:ROLES_OF_TRANSLATORS -->
+</authorgroup>
+
+<copyright>
+ <year>2004</year>
+ <year>2005</year>
+ <year>2006</year>
+ <holder>Jaroslaw Staniek</holder>
+ <holder>Martin Ellis</holder>
+</copyright>
+
+<!-- Translators: put here the copyright notice of the translation -->
+<!-- Put here the FDL notice. Read the explanation in fdl-notice.docbook
+ and in the FDL itself on how to use it. -->
+<legalnotice>&FDLNotice;</legalnotice>
+
+<!-- Date and version information of the documentation
+Don't forget to include this last date and this last revision number, we
+need them for translation coordination !
+Please respect the format of the date (YYYY-MM-DD) and of the version
+(V.MM.LL), it could be used by automation scripts.
+Do NOT change these in the translation. -->
+
+<date>2006-09-07</date>
+<releaseinfo>1.6</releaseinfo>
+
+<!-- Abstract about this handbook -->
+<abstract>
+ <para>
+ &kexi; is the application for creating databases and for data management
+ in the &koffice; productivity suite.
+ </para>
+</abstract>
+
+<!-- Keywords -->
+<keywordset>
+ <keyword>KDE</keyword>
+ <keyword>KOffice</keyword>
+ <keyword>Kexi</keyword>
+ <keyword>database</keyword>
+</keywordset>
+
+</bookinfo>
+
+<!-- The contents of the documentation begin here. Label
+each chapter so with the id attribute. This is necessary for two reasons: it
+allows you to easily reference the chapter from other chapters of your
+document, and if there is no ID, the name of the generated HTML files will vary
+from time to time making it hard to manage for maintainers and for the CVS
+system. Any chapter labelled (OPTIONAL) may be left out at the author's
+discretion. Other chapters should not be left out in order to maintain a
+consistent documentation style across all KDE apps. -->
+
+&intro;
+&basics;
+&building;
+&configuration;
+&menus;
+&credits;
+&database;
+&comparing;
+
+&documentation.index;
+</book>
+
+<!--
+Local Variables:
+mode: sgml
+sgml-minimize-attributes: nil
+sgml-general-insert-case: lower
+End:
+
+vim:tabstop=2:shiftwidth=2:expandtab
+kate: space-indent on; indent-width 2; tab-width 2; indent-mode none;
+-->
diff --git a/doc/kexi/intro.docbook b/doc/kexi/intro.docbook
new file mode 100644
index 00000000..dc62ba00
--- /dev/null
+++ b/doc/kexi/intro.docbook
@@ -0,0 +1,78 @@
+<!--
+ <!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" >
+-->
+
+<chapter id="introduction">
+<title>Introduction</title>
+
+<!-- The introduction chapter contains a brief introduction for the
+application that explains what it does and where to report
+problems. Basically a long version of the abstract. Don't include a
+revision history. (see installation appendix comment) -->
+
+<para>
+ &kexi; is a database management application. It can be used for
+ creating databases, inserting data, performing queries, and processing
+ data. Forms can be created to provide a custom interface to your
+ data. All database objects - tables, queries and forms - are stored in
+ the database, making it easy to share data and design.
+</para>
+
+<para>
+ &kexi; is part of the &koffice; productivity suite for the K Desktop
+ Environment.
+</para>
+
+<para>
+ In addition to storing your &kexi; databases in files, &kexi; can also
+ store your data on a <firstterm>database server</firstterm>. Using
+ a database server allows you to share your database with other
+ people, and also allows more than one person to use the database at
+ one time. The following database servers are supported by &kexi;:
+ <itemizedlist>
+ <listitem>
+ <para>
+ MySQL (See <ulink url="http://www.mysql.com/"
+ >http://www.mysql.com/</ulink>)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ PostgreSQL (See <ulink url="http://www.postgresql.org/"
+ >http://www.postgresql.org/</ulink>)
+ </para>
+ </listitem>
+ </itemizedlist>
+</para>
+
+<para>
+ More information about &kexi; can be found at the &kexi; page on the
+ &koffice; website
+ at <ulink
+ url="http://www.koffice.org/kexi/">http://www.koffice.org/kexi/</ulink>,
+ and on the website for &kexi; itself
+ at <ulink url="http://www.kexi-project.org/about.html"
+ >http://www.kexi-project.org/about.html</ulink>.
+</para>
+
+<para>
+ If you have any questions about &kexi;, there are two mailing lists
+ you can use. The <ulink url="mailto:kexi@kde.org">Kexi user mailing
+ list</ulink> can be used to ask questions about using &kexi; or about
+ the &kexi; project. The <ulink url="mailto:kexi-devel@kde.org">Kexi
+ development mailing list</ulink> can be used to ask questions about
+ the development of &kexi;. Further information on how to subscribe
+ to these lists, together with a few other ways of making contact with
+ &kexi; developers, can be found at:
+ <itemizedlist>
+ <listitem>
+ <para>
+ <ulink
+ url="http://www.kexi-project.org/support.html"
+ >http://www.kexi-project.org/support.html</ulink>
+ </para>
+ </listitem>
+ </itemizedlist>
+</para>
+</chapter>
+
diff --git a/doc/kexi/menus.docbook b/doc/kexi/menus.docbook
new file mode 100644
index 00000000..8428fcaf
--- /dev/null
+++ b/doc/kexi/menus.docbook
@@ -0,0 +1,701 @@
+<!--
+ <!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" >
+-->
+
+<chapter id="menus">
+ <chapterinfo>
+ <authorgroup>
+ <author>
+ <firstname>Anne-Marie</firstname>
+ <surname>Mahfouf</surname>
+ <affiliation>
+ <address><email>annemarie.mahfouf@free.fr</email></address>
+ </affiliation>
+ </author>
+ <author>
+ <personname>
+ <firstname>Jarosław</firstname>
+ <surname>Staniek</surname>
+ </personname>
+ <email>js@iidea.pl</email>
+ </author>
+ <!-- TRANS:ROLES_OF_TRANSLATORS -->
+ </authorgroup>
+ </chapterinfo>
+ <title>Command Reference</title>
+
+ <sect1 id="filemenu">
+ <title>The <guimenu>File</guimenu> Menu</title>
+ <para>
+ <variablelist>
+ <varlistentry>
+ <term><menuchoice>
+ <shortcut>
+ <keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo>
+ </shortcut>
+ <guimenu>File</guimenu>
+ <guimenuitem>New...</guimenuitem>
+ </menuchoice></term>
+ <listitem><para><action>Create a new project.</action> Currently opened project is not affected.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><menuchoice>
+ <shortcut>
+ <keycombo action="simul">&Ctrl;<keycap>O</keycap></keycombo>
+ </shortcut>
+ <guimenu>File</guimenu>
+ <guimenuitem>Open...</guimenuitem>
+ </menuchoice></term>
+ <listitem><para><action>Open an existing project.</action> Currently opened project is not affected.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <menuchoice>
+ <guimenu>File</guimenu>
+ <guimenuitem>Download Example Databases...</guimenuitem>
+ </menuchoice>
+ </term>
+ <listitem>
+ <para><action>Open the KNewStuff dialog</action> which
+ allows you to download example databases via the
+ Internet. This is currently not available for MS Windows.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <menuchoice>
+ <shortcut>
+ <keycombo action="simul">&Ctrl;<keycap>S</keycap></keycombo>
+ </shortcut>
+ <guimenu>File</guimenu>
+ <guimenuitem>Save</guimenuitem>
+ </menuchoice>
+ </term>
+ <listitem>
+ <para><action>Saves object changes from the active window.</action></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <menuchoice>
+ <guimenu>File</guimenu>
+ <guisubmenu>Import</guisubmenu>
+ <guimenuitem>Data Table...</guimenuitem>
+ </menuchoice>
+ </term>
+ <listitem>
+ <para><action>Imports table data from a file in Comma Separated Value (CSV) format.</action></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <menuchoice>
+ <guimenu>File</guimenu>
+ <guisubmenu>Export</guisubmenu>
+ <guimenuitem>Table or Query as Data Table...</guimenuitem>
+ </menuchoice>
+ </term>
+ <listitem>
+ <para><action>Export data from the active table or query data to a file in Comma Separated Value (CSV) format.</action></para>
+ </listitem>
+ </varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<shortcut>
+<keycombo action="simul">&Ctrl;<keycap>P</keycap></keycombo>
+</shortcut>
+<guimenu>File</guimenu>
+<guimenuitem>Print...</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Print data from the active (opened) table or query.</action></para>
+<important><para>Note for KDE: Make sure the proper print system is selected in the
+<quote>Print system currently used:</quote> section. This option can
+be seen after clicking on the <guimenu>Options&gt;&gt;</guimenu> button.</para></important></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<guimenu>File</guimenu>
+<guimenuitem>Print Preview...</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Show print preview for the active (opened) table or query.</action></para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<guimenu>File</guimenu>
+<guimenuitem>Page Setup...</guimenuitem>
+</menuchoice></term>
+<listitem><para><guibutton>Set Font...</guibutton> for the <guilabel>Page title:</guilabel>,
+<guibutton>Change...</guibutton> <guilabel>Page Size &amp; Margins</guilabel> and
+<guilabel>Add table borders</guilabel>.</para></listitem>
+</varlistentry>
+
+ <varlistentry>
+ <term>
+ <menuchoice>
+ <shortcut>
+ <keycombo action="simul">&Ctrl;<keycap>W</keycap></keycombo>
+ </shortcut>
+ <guimenu>File</guimenu>
+ <guimenuitem>Close Project</guimenuitem>
+ </menuchoice>
+ </term>
+ <listitem>
+ <para><action>Close the currently opened project but leave &kexi; running.
+ </action></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <menuchoice>
+ <shortcut>
+ <keycombo action="simul">&Ctrl;<keycap>Q</keycap></keycombo>
+ </shortcut>
+ <guimenu>File</guimenu>
+ <guimenuitem>Quit</guimenuitem>
+ </menuchoice>
+ </term>
+ <listitem>
+ <para><action>Quit</action> &kexi;.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+ </sect1>
+
+<sect1 id="editmenu">
+<title>The <guimenu>Edit</guimenu> Menu</title>
+
+<variablelist>
+<varlistentry>
+<term><menuchoice>
+<shortcut>
+<keycombo action="simul">&Ctrl;<keycap>Z</keycap></keycombo>
+</shortcut>
+<guimenu>Edit</guimenu>
+<guimenuitem>Undo</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Undoes an action.</action> You can revert to the state that existed
+before your last change.</para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<shortcut>
+<keycombo action="simul">&Ctrl; &Shift; <keycap>Z</keycap></keycombo>
+</shortcut>
+<guimenu>Edit</guimenu>
+<guimenuitem>Redo</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Undoes an undo.</action> Reverse the action of Undo. This will restore the change
+you originally made.</para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<shortcut>
+<keycombo action="simul">&Ctrl;<keycap>X</keycap></keycombo>
+</shortcut>
+<guimenu>Edit</guimenu>
+<guimenuitem>Cut</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Remove currently selected text and put it on the clipboard.</action>
+This command is unavailable if there is no text currently selected. If this action is used
+in the Form Designer, currently selected widget or group of widgets are removed and put on the clipboard.
+</para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<shortcut>
+<keycombo action="simul">&Ctrl;<keycap>C</keycap></keycombo>
+</shortcut>
+<guimenu>Edit</guimenu>
+<guimenuitem>Copy</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Copy currently selected text onto the clipboard. </action>
+This command is unavailable if there is no text currently selected. If this action is used
+in the Form Designer, currently selected widget or group of widgets are copied onto
+the clipboard.</para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<shortcut>
+<keycombo action="simul">&Ctrl;<keycap>V</keycap></keycombo>
+</shortcut>
+<guimenu>Edit</guimenu>
+<guimenuitem>Paste</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Copy of the clipboard contents at the insertion point. </action>
+This command is unavailable if the clipboard is empty. If this action is used
+in the Form Designer and the clipboard contains copied widgets, they will be inserted
+onto the form.</para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<guimenu>Edit</guimenu>
+<guisubmenu>Copy Special</guisubmenu>
+<guimenuitem>Table or Query As Data Table...</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Copy selected table or query data to clipboard.</action></para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<guimenu>Edit</guimenu>
+<guisubmenu>Paste Special</guisubmenu>
+<guimenuitem>As Data Table...</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Paste clipboard data to a new table within the current project.
+</action></para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<shortcut>
+<keycombo action="simul">&Ctrl;<keycap>A</keycap></keycombo>
+</shortcut>
+<guimenu>Edit</guimenu>
+<guimenuitem>Select All</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Select all characters in the edited text box or all widgets in the Form Designer.
+</action></para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<guimenu>Edit</guimenu>
+<guimenuitem>Delete</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Delete the currently selected object.</action></para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<shortcut>
+<keycombo action="simul">&Ctrl;<keycap>Delete</keycap></keycombo>
+</shortcut>
+<guimenu>Edit</guimenu>
+<guimenuitem>Delete Row</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Delete currently selected row from a table.</action></para></listitem>
+</varlistentry>
+
+</variablelist>
+</sect1>
+
+<sect1 id="viewmenu">
+<title>The <guimenu>View</guimenu> Menu</title>
+
+<variablelist>
+<varlistentry>
+<term><menuchoice>
+<shortcut><keycap>F6</keycap></shortcut>
+<guimenu>View</guimenu>
+<guimenuitem>Data View</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Switch to Data View.</action></para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<shortcut><keycap>F7</keycap></shortcut>
+<guimenu>View</guimenu>
+<guimenuitem>Design View</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Switch to Design View.</action></para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<shortcut><keycap>F8</keycap></shortcut>
+<guimenu>View</guimenu>
+<guimenuitem>Text View</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Switch to Text View.</action> Currently, only available for database queries
+and means switching to the SQL View of the Query Designer.</para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<shortcut>
+<keycombo action="simul">&Alt;<keycap>1</keycap></keycombo>
+</shortcut>
+<guimenu>View</guimenu>
+<guimenuitem>Project Navigator</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Go to Project Navigator pane.</action></para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<shortcut>
+<keycombo action="simul">&Alt;<keycap>2</keycap></keycombo>
+</shortcut>
+<guimenu>View</guimenu>
+<guimenuitem>Main Area</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Go to the main area.</action></para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<shortcut>
+<keycombo action="simul">&Alt;<keycap>3</keycap></keycombo>
+</shortcut>
+<guimenu>View</guimenu>
+<guimenuitem>Property Editor</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Go to the Property Editor pane.</action></para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<guimenu>View</guimenu>
+<guimenuitem>Show/Hide Properties</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Display or hide the Property Editor pane.</action></para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<guimenu>View</guimenu>
+<guimenuitem>Show/Hide Project Navigator</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Display or hide the Project Navigator pane.</action></para></listitem>
+</varlistentry>
+
+</variablelist>
+</sect1>
+
+<sect1 id="insertmenu">
+<title>The <guimenu>Insert</guimenu> Menu</title>
+
+<variablelist>
+<varlistentry>
+<term><menuchoice>
+<guimenu>Insert</guimenu>
+<guimenuitem>Table...</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Inserts a new, empty table design without saving it.</action>
+The Table Designer window will appear.</para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<guimenu>Insert</guimenu>
+<guimenuitem>Query...</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Inserts a new, empty query design without saving it.</action>
+The Query Designer window will appear.</para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<guimenu>Insert</guimenu>
+<guimenuitem>Form...</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Inserts a new, empty form design without saving it.</action>
+The Form Designer window will appear.</para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<guimenu>Insert</guimenu>
+<guimenuitem>Script...</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Inserts a new, empty script design without saving it.</action>
+The Script Editor window will appear. The command is available only if scripting
+is enabled in &kexi;.</para></listitem>
+</varlistentry>
+
+</variablelist>
+</sect1>
+
+<sect1 id="formatmenu">
+<title>The <guimenu>Format</guimenu> Menu</title>
+
+<variablelist>
+<varlistentry>
+<term><menuchoice>
+<guimenu>Format</guimenu>
+<guimenuitem>Font...</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Change font for selected object.</action>
+Can be used in the Form Designer to set widget's font.</para></listitem>
+</varlistentry>
+
+<!-- Forms -->
+
+<varlistentry>
+<term><menuchoice>
+<guimenu>Format</guimenu>
+<guimenuitem>Snap to Grid</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>If this is enabled, when moving widgets on the form surface
+the top left corner of the widget will snap or move to the nearest grid point.</action>
+This does reduce your freedom to freely position widgets on the form surface,
+however it also helps to line up widgets precisely.</para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<guimenu>Format</guimenu>
+<guimenuitem>Layout Widgets</guimenuitem>
+</menuchoice></term>
+<listitem><para>Creates a new layout for widgets. Widgets can be layed out Horizontally, Vertically, In Grid, Horizontally in Splitter, Vertically in Splitter.</para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<guimenu>Format</guimenu>
+<guimenuitem>Break Layout</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Breaks the currently selected layout.</action></para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<guimenu>Format</guimenu>
+<guimenuitem>Align Widgets Position</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Align the currently selected widgets' position:
+To Left, To Right, To Top, To Bottom, To Grid.</action></para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<guimenu>Format</guimenu>
+<guimenuitem>Align Widgets Size</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Align the currently selected widgets' size:
+To Fit, To Grid, To Shortest, To Tallest, To Narrowest, To Widest.</action></para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<guimenu>Format</guimenu>
+<guimenuitem>Bring Widget to Front</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Bring the currently selected widgets to front.</action></para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<guimenu>Format</guimenu>
+<guimenuitem>Send Widget to Back</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Send the currently selected widgets to back.</action></para></listitem>
+</varlistentry>
+
+</variablelist>
+</sect1>
+
+<sect1 id="datamenu">
+<title>The <guimenu>Data</guimenu> Menu</title>
+
+<!--when do the first two items appear ???-->
+<variablelist>
+<varlistentry>
+<term><menuchoice>
+<shortcut>
+<keycombo action="simul">&Shift;<keycap>Return</keycap></keycombo>
+</shortcut>
+<guimenu>Data</guimenu>
+<guimenuitem>Save Row</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Save currently selected table row's data.</action></para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<guimenu>Data</guimenu>
+<guimenuitem>Cancel Row Changes</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Cancel changes made to currently selected table row.</action></para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<guimenu>Data</guimenu>
+<guisubmenu>Sort</guisubmenu>
+<guimenuitem>Ascending</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Sorts data in ascending order (from A to Z and from 0 to 9).</action>
+Data from selected column is used for sorting.</para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<guimenu>Data</guimenu>
+<guisubmenu>Sort</guisubmenu>
+<guimenuitem>Descending</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Sorts data in descending (from Z to A and from 9 to 0).</action>
+Data from selected column is used for sorting.</para></listitem>
+</varlistentry>
+
+</variablelist>
+</sect1>
+
+<sect1 id="toolsmenu">
+<title>The <guimenu>Tools</guimenu> Menu</title>
+
+<variablelist>
+<varlistentry>
+<term><menuchoice>
+<guimenu>Tools</guimenu>
+<guimenuitem>Import Database...</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Opens the Data Base Importing Wizard</action>
+to import an existing database into a &kexi; database.</para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<guimenu>Tools</guimenu>
+<guimenuitem>Execute Script File...</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Displays the file dialog</action>
+to open an existing script file.</para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<guimenu>Tools</guimenu>
+<guimenuitem>Scripts Manager...</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Displays &kexi;'s <guilabel>Scripts Manager</guilabel>
+dialog</action> to execute, load, unload, install, unistall or download scripts.</para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<guimenu>Tools</guimenu>
+<guimenuitem>Scripts</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Executes an already loaded script.</action></para></listitem>
+</varlistentry>
+
+</variablelist>
+</sect1>
+
+<sect1 id="windowmenu">
+<title>The <guimenu>Window</guimenu> Menu</title>
+
+<variablelist>
+<varlistentry>
+<term><menuchoice>
+<shortcut>
+<keycombo action="simul">&Ctrl;<keycap>W</keycap></keycombo>
+</shortcut>
+<guimenu>Window</guimenu>
+<guimenuitem>Close</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Close the active window.</action></para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<guimenu>Window</guimenu>
+<guimenuitem>Close All</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Close all opened windows.</action></para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<guimenu>Window</guimenu>
+<guisubmenu>MDI Mode</guisubmenu>
+<guimenuitem>Childframe Mode</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Switch to Childframe user interface mode.</action></para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<guimenu>Window</guimenu>
+<guisubmenu>MDI Mode</guisubmenu>
+<guimenuitem>IDEAl Mode</guimenuitem>
+</menuchoice></term>
+<listitem><para><action><action>Switch to IDEAl user interface mode.</action></action></para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<shortcut>
+<keycombo action="simul">&Alt;<keycap>Right</keycap></keycombo>
+</shortcut>
+<guimenu>Window</guimenu>
+<guimenuitem>Next Window</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Switch to the next window.</action></para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><menuchoice>
+<shortcut>
+<keycombo action="simul">&Alt;<keycap>Left</keycap></keycombo>
+</shortcut>
+<guimenu>Window</guimenu>
+<guimenuitem>Previous Window</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Switch to the previous window.</action></para></listitem>
+</varlistentry>
+
+</variablelist>
+<para>The last items in this menu show the currently opened window names.</para>
+</sect1>
+
+ <sect1 id="settingsmenu">
+ <title>The <guimenu>Settings</guimenu> Menu</title>
+
+ <para>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <menuchoice>
+ <guimenu>Settings</guimenu>
+ <guimenuitem>Toolbars</guimenuitem>
+ </menuchoice>
+ </term>
+ <listitem>
+ <para><action>Show or hide one of the toolbars.</action></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <menuchoice>
+ <guimenu>Settings</guimenu>
+ <guimenuitem>Configure Shortcuts...</guimenuitem>
+ </menuchoice>
+ </term>
+ <listitem>
+ <para><action>Configure the keyboard shortcuts used by &kexi;.
+ </action> See the section on configuring shortcuts for more
+ details.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+</para>
+</sect1>
+
+<sect1 id="helpmenu">
+ <title>The <guimenu>Help</guimenu> Menu</title>
+
+&help.menu.documentation;
+
+</sect1>
+</chapter>
diff --git a/doc/kexi/querydesigning.docbook b/doc/kexi/querydesigning.docbook
new file mode 100644
index 00000000..5114dbd0
--- /dev/null
+++ b/doc/kexi/querydesigning.docbook
@@ -0,0 +1,109 @@
+<!--
+ <!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" >
+
+ -->
+
+ <sect1 id="designing-queries">
+ <title>Designing Database Queries</title>
+ <para>
+ A database's primary purpose is to store and help extract information
+ you are looking for. Unlike databases written on a paper sheets, &kexi;
+ database allows you to specify more search criteria. Results
+ are returend faster even for large data sets. All this is a power of
+ databases, however to be able to perform efffective <emphasis>queries</emphasis>
+ in your database, you need to learn how to tell the database what you are
+ looking for.
+ </para>
+ <para>
+ With database queries you can limit data coming from a table to a predefined
+ set of rows and columns as well as dynamically <firstterm>join</firstterm>
+ data coming from multiple tables.
+ </para>
+ <para>
+ To see how queries work in practice you will create a <literal>contacts</literal>
+ query joining data from two tables: <literal>persons</literal> and
+ <literal>phone_numbers</literal> (designed in
+ <!--<a href="05_01_00_table_designing.html">-->chapter 3.1i
+ <!--</a>-->
+ and filled with data in
+ <!--<a href="05_02_00_entering_data_into_tables.html">-->chapter 3.2
+ <!--</a>-->).
+ </para>
+ <procedure>
+ <step>
+ <para>
+ Create a new empty query by selecting <!--<img src="icons/query_newobj.png" class="icon">-->
+ <menuchoice><guimenu>Insert</guimenu><guimenuitem>Query</guimenuitem></menuchoice> from
+ the menubar. The design window will appear. <!--similar to the one presented in the
+ figure below. -->The window is split into two areas: query
+ relationships at the top and query columns below.
+ <!-- TODO update screenshot with names of window's areas -->
+ </para>
+ </step>
+ <step>
+ <para>
+ Select the table <literal>persons</literal> in the drop down list <guilabel>Table:</guilabel>
+ located at the top of the window and click the <guibutton>Add</guibutton> button. A graphical
+ representation of the table will appear in the relations area. Do the same for the
+ <literal>phone_numbers</literal> table to insert it too, as in the figure below.
+ </para>
+ <!--<screenshot>
+ <screeninfo><literal>contacts</literal> query design</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_03_00_query_design.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase><literal>contacts</literal> query design</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>-->
+ </step>
+ <step>
+ <para>
+ Add query relationship using mouse drag &amp; drop technique: click the field
+ <literal>id</literal> in the table <literal>persons</literal> table, drag it
+ and drop into the <literal>person</literal> field of the <literal>phone_numbers</literal>
+ table. This will <emphasis>join both fields by creating a new relationship</emphasis>.
+ </para>
+ </step>
+ <step>
+ <para>
+ Double-click the <literal>name</literal> field in the <literal>persons</literal>
+ table, to add the field as a <firstterm>query column</firstterm>. In a similar way,
+ add <literal>surname</literal>, <literal>street</literal>, <literal>house_number</literal>,
+ <literal>city</literal> fields from the <literal>persons</literal> table and
+ <literal>phone</literal> from the <literal>phone_numbers</literal> table.
+ </para>
+ </step>
+ <step>
+ <para>
+ Query design is now ready for testing. Click the <!--<img src="icons/state_data.png" class="icon">-->
+ <guibutton>Switch to data view</guibutton> button on the toolbar, to switch from
+ design to viewing the data provided as query results.
+ </para>
+ <!--<screenshot>
+ <screeninfo><literal>Contacts</literal> query results</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="img/05_03_00_query_results.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase><literal>Contacts</literal> query results</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>-->
+ </step>
+ <step>
+ <para>
+ Save the query design for later use by clicking the <!--<img src="icons/filesave.png" class="icon">-->
+ <guibutton>Save</guibutton> button on the toolbar. You can also use
+ <menuchoice><guimenu>File</guimenu><guimenuitem>Save</guimenuitem></menuchoice>
+ from the menubar or press the <keycombo action="simul"><keycap>Ctrl</keycap><keycap>S</keycap></keycombo>
+ keys. Because the query design has not been saved yet, you will be asked to
+ specify a name for it. Enter <literal>Contacts</literal> text in the
+ <guilabel>caption</guilabel> field and click the <guibutton>OK</guibutton> button.
+ </para>
+ </step>
+ </procedure>
+ </sect1>