[office/kmymoney/Handbook-5.2] /: finish database chapter

Jack Ostroff null at kde.org
Tue Nov 28 19:18:42 GMT 2023


Git commit a8f0189c0ae0c42976e62b3d9808c5f90b946fee by Jack Ostroff.
Committed on 28/11/2023 at 20:18.
Pushed by ostroffjh into branch 'Handbook-5.2'.

finish database chapter

M  +10   -1    README-CONTRIBUTORS
M  +245  -207  doc/details-database.docbook
M  +247  -115  doc/details-formats.docbook
M  +4    -4    doc/details-settings.docbook
A  +-    --    doc/file-backup.png

https://invent.kde.org/office/kmymoney/-/commit/a8f0189c0ae0c42976e62b3d9808c5f90b946fee

diff --git a/README-CONTRIBUTORS b/README-CONTRIBUTORS
index 424cae9db..44a186719 100644
--- a/README-CONTRIBUTORS
+++ b/README-CONTRIBUTORS
@@ -91,11 +91,14 @@ This is in the order pulled in from index.docbook, with brief note on state of u
   prelim update complete
   
 <!ENTITY details-formats SYSTEM "details-formats.docbook">
+  prelim update complete
 
 <!ENTITY details-database SYSTEM "details-database.docbook">
+  prelim update complete
 
 <!ENTITY details-settings SYSTEM "details-settings.docbook">
-
+  prelim update begun
+  
 <!ENTITY faq SYSTEM "faq.docbook">
 
 <!ENTITY reference SYSTEM "reference.docbook">
@@ -352,3 +355,9 @@ elsewhere.
 
 - Cant search results be sorted any more?  (Could they ever?)
 
+- Need to mention in file formats chapter that all data files can be stored locally
+  or on a network share.  Also mention mounting the share is often an issue on Windows.
+
+- what does File/Backup do if SQL is the current file type?
+
+- 
\ No newline at end of file
diff --git a/doc/details-database.docbook b/doc/details-database.docbook
index eb2ea8f09..cef1b46c1 100644
--- a/doc/details-database.docbook
+++ b/doc/details-database.docbook
@@ -3,253 +3,281 @@
 <chapterinfo>
   <authorgroup>
     <author>&Tony.Bloomfield; &Tony.Bloomfield.mail;</author>
+    <author> &Jack.H.Ostroff; &Jack.H.Ostroff.mail; </author>
   </authorgroup>
-  <date>2011-07-21</date>
-  <releaseinfo>4.6</releaseinfo>
+  <date>2023-11-25</date>
+  <releaseinfo>5.2</releaseinfo>
 </chapterinfo>
 
 <title>Database</title>
 
-<sect1 id="details.database.usage">
-<title>Using relational databases</title>
+<sect1 id="details.database.usage"><title>Using relational databases</title>
+
+<sect2><title>Introduction</title>
 
-<sect2>
-<title>Introduction</title>
 <para>
-  As of release 1.0, &kmymoney; allows you to hold your data in a relational
-  database. One of the advantages of using this industry-standard format is that
-  it may allow you to view your data using one of the graphic front ends such as
-  <trademark>OpenOffice.org</trademark> or <trademark>LibreOffice</trademark>,
-  perhaps in some format that &kmymoney; currently doesn't
-  provide. Also, a little knowledge of SQL (Structured Query Language, the
-  language used world-wide to access relational databases) should enable you
-  more easily to export data to an external program, for example, a budgeting
-  application.
+  Since release 1.0, &kmymoney; allows you to hold your data in a relational
+  database.  One of the advantages of using this industry-standard format is that it
+  may allow you to view your data using one of the graphic front ends such as
+  <trademark>OpenOffice.org</trademark> or <trademark>LibreOffice</trademark>, or
+  perhaps in some format that &kmymoney; currently doesn't provide.  Also, a little
+  knowledge of <acronym><ulink url="https://en.wikipedia.org/wiki/SQL">SQL</ulink>
+  </acronym> (<quote>Structured Query Language</quote>, the language used world-wide
+  to access relational databases) should enable you more easily to export data to an
+  external program, for example, a budgeting application.
 </para>
-<para/>
+
+<note>
+  <para>
+    Although most relational database systems allow concurrent access to a database
+    by more than one user, this is not possible with &kmymoney;.  Even though
+    &kmymoney; can store its data in a relational database, it actually behaves as if
+    the database is just a different type of file storage.  When you open your file,
+    the program reads all of the data from the database.  As you work with your data,
+    the changes are made only to the internal storage; they are not immediately
+    written back to the database.  Only when you save your data does &kmymoney; write
+    the entire file back to the database.
+  </para>
+
+  <para>
+    There have been requests for &kmymoney; to update the database for each data
+    change, but this would require a significant change to the entire way the program
+    manages its internal data structures, so this is extremely unlikely to happen in
+    the foreseeable future.
+  </para>
+</note>
 </sect2>
 
 <sect2><title>Preparation</title>
 
 <para>
-  To access the database, &kmymoney; uses the SQL module supplied by &Qt;
-  Software as part of their &Qt; programming system. This module supports a
-  number of different database systems through a collection of drivers. Among
-  the more popular open-source systems for which drivers are available are
-  <trademark>MySQL</trademark>, SQLite (version 3 and upwards only), and PostgreSQL.
-  The module also supports the 'heavier', more industrial, systems such as <trademark
-  class="registered">Oracle</trademark> and IBM <trademark class="registered">DB2</trademark>.
+  To access the database, &kmymoney; uses the SQL module supplied by &Qt; Software as
+  part of their &Qt; programming system.  This module supports many database systems
+  through a collection of drivers.  &Qt; has drivers for a large numeber of open
+  source and proprietary relational database systems, including
+  <trademark>MySQL</trademark>, PostgreSQL, and Sqlcipher.  The module also supports
+  some 'heavier', more industrial, systems such as <trademark
+  class="registered">Oracle</trademark> and IBM <trademark
+  class="registered">DB2</trademark>.
 </para>
 
 <para>
-  With the exception of SQLite, these systems use a client/server model, where
-  the 'client' software sits on 'your' machine, while the server lives on the
-  same machine as the database itself, which may be elsewhere on a network. Of
-  course, in the normal scenario for a personal finance application such as
-  &kmymoney;, 'your' machine acts as both client and server. Your first task
-  therefore, having decided which database system you wish to use, is to install
-  the client, and most probably server, software.
+  Previous versions of &kmymoney; supported <ulink
+  url="https://www.sqlite.org">SQLite</ulink>.  This has been replaced with support
+  for <ulink url="https://www.zetetic.net/sqlcipher">SQLCipher</ulink>, which is a
+  standalone fork of the SQLite database library that adds 256 bit AES encryption and
+  other security features.  The SQLCipher driver will read existing SQLite files.
+</para>
+
+<para>
+  With the exception of SQLCipher, these systems use a client/server model, where the
+  'client' software sits on 'your' machine, while the server lives on the same
+  machine as the database itself, which may be elsewhere on a network. Of course, in
+  the normal scenario for a personal finance application such as &kmymoney;, 'your'
+  machine can act as both client and server.  Your first task therefore, having
+  decided which database system you wish to use, is to install the client, and most
+  probably server, software.
 </para>
 
 <para>
   In addition to the database software itself, you must also install the
-  corresponding &Qt; driver module. Most distributions will include driver
-  modules for the more popular databases. Otherwise, check with the <ulink
-  url="https://www.qt.io/">&Qt; software web site</ulink> and search for
-  'SQL drivers'.
+  corresponding &Qt; driver module.  Most &Linux; distributions will include driver
+  modules for the more popular databases.  Otherwise, check with the <ulink
+  url="https://www.qt.io/">&Qt; software web site</ulink> and search for <quote>SQL
+  drivers</quote>.
+  <!-- FIXME:  what about Windows and macOS? -->
 </para>
 
 <note>
   <para>
-    SQLite does not operate on a client/server model; each database is held in a
-    regular file, local or remote, accessed using the normal methods supplied by
-    the underlying operating system. In this case, therefore, there is only one
-    software package and the driver to install. Also, some of the following information,
-    particularly that related to administration, may not apply to SQLite.
+    SQLCipher and SQLite do not operate on a client/server model; each database is
+    held in a regular file, local or remote, accessed using the normal methods
+    supplied by the underlying operating system.  In this case, therefore, there is
+    only one software package and the driver to install.  Also, some of the following
+    information, particularly that related to administration, may not apply.
   </para>
 </note>
 </sect2>
 
-<sect2>
-<title>Administration</title>
+<sect2><title>Administration</title>
 
 <para>
-  Looking after databases is a little more complex than dealing with regular
-  files. Each system has different methods for performing those necessary
-  administrative tasks such as creating databases, assigning permissions to
-  various users, producing backups, &etc; Describing these tasks is outside the
-  scope of this manual, but all of the supported products provide comprehensive
-  reference documentation, and a quick search of the web will point you at many
-  tutorials on the subject.
+  Looking after databases is a little more complex than dealing with regular files.
+  Each system has different methods for performing those necessary administrative
+  tasks such as creating databases, assigning permissions to various users, or
+  producing backups.  Describing these tasks is outside the scope of this manual, but
+  all of the supported products provide comprehensive reference documentation, and a
+  quick search of the web will point you at many tutorials on the subject.
 </para>
 
-<sect3>
-<title>Creating the database</title>
+<sect3><title>Creating the database</title>
 
 <para>
-  Code has been included to create an initial database to hold your data if one
-  doesn't exist. However, it is strongly recommended that you pre-create a
-  database, because most of the products provide a number of options which may
-  be relevant. One that may be of particular importance to some would be the
-  designation of the character set (⪚, UTF-8) to be used for text
-  fields.
+  &kmymoney; includes SQL code to create an initial database to hold your data if one
+  doesn't exist.  However, it is strongly recommended that you pre-create a database,
+  because most of the products provide a number of options which may be relevant.
+  One that may be of particular importance to some would be the designation of the
+  character set (⪚, UTF-8) to be used for text fields.
 </para>
 
 <para>
   At this time, you will also need to specify permissions for various users to
-  perform different operations on the database. In most systems, the user who
-  creates the database will be automatically assigned all permissions, but this
-  is an area in which the documentation should be consulted.
+  perform different operations on the database.  In most systems, the user who
+  creates the database will be automatically assigned all permissions, but this is an
+  area in which the documentation should be consulted.
 </para>
 
 <para>
   For your first use of the database, and occasionally at other times when the
   database layout changes, you will need permission (also called privileges) to
-  create and alter tables and views (see next paragraph). There may be different
+  create and alter tables and views (see next paragraph.)  There may be different
   names for the permission/privilege in different systems, but something like
-  <literal>CREATE</literal> and <literal>ALTER</literal> should be commonplace.
-  For normal running, you will need to be able to read and write records; these
-  are normally defined in SQL as <literal>SELECT</literal>, <literal>INSERT</literal>,
+  <literal>CREATE</literal> and <literal>ALTER</literal> should be commonplace.  For
+  normal running, you will need to be able to read and write records; these are
+  normally defined in SQL as <literal>SELECT</literal>, <literal>INSERT</literal>,
   <literal>UPDATE</literal>, and <literal>DELETE</literal> permissions.
 </para>
 </sect3>
 
-<sect3>
-<title>Creating Tables</title>
+<sect3><title>Creating Tables</title>
 
 <para>
   On your first use, &kmymoney; will attempt to create the necessary table
-  structures. In order to achieve the maximum compatibility between various
-  database types, only a subset of common data types are used. There may
-  nevertheless be situations where a particular type is not supported, and in
-  this case, provision has been made to generate the SQL code necessary to
-  create tables. This code can then be modified as required and used to create
-  the tables outside of &kmymoney;. Should you find yourself in this situation,
-  help can usually be obtained from &devlist;. See <link
-  linkend="details.database.generatesql">Manual Database Creation</link> for more information.
+  structures.  In order to achieve the maximum compatibility between various database
+  types, only a subset of common data types are used.  There may nevertheless be
+  situations where a particular type is not supported, and in this case, provision
+  has been made to generate the SQL code necessary to create the tables.  This code
+  can then be modified as required and used to create the tables outside of
+  &kmymoney;.  Should you find yourself in this situation, help can usually be
+  obtained from one of the channels listed in the section on <link
+  linkend="firsttime.contact">Getting Help</link>.  See <link
+  linkend="details.database.generatesql">Manual Database Creation</link> for more
+  information.
 </para>
 </sect3>
 </sect2>
 
-<sect2 id="details.database.selectdatabase">
-<title>Creating a Database</title>
+<sect2 id="details.database.selectdatabase"><title>Creating a Database</title>
 
 <para>
-  Using &kmymoney;, open or import an existing data file, or create a new
-  one. Then select <menuchoice><guimenu>File</guimenu><guimenuitem>Save as Database</guimenuitem></menuchoice>
-  menu item. This will present the following dialog:
+  Using &kmymoney;, open or import an existing data file, or create a new one.  Then
+  select <menuchoice><guimenu>File</guimenu><guimenuitem>Save as
+  Database</guimenuitem></menuchoice> menu item.  Select <guilabel>SQL</guilabel>
+  from the <guilabel>Storage type to use for your data</guilabel> dropdown, and click
+  <guibutton>OK</guibutton>.
+  You will then see the following dialog:
 </para>
 
 <screenshot>
   <mediaobject>
-  <imageobject>
-  <imagedata fileref="select_database.png" format="PNG" />
-  </imageobject>
+    <imageobject>
+      <imagedata fileref="select_database.png" format="PNG" />
+    </imageobject>
   </mediaobject>
 </screenshot>
 
 <para>
-  Complete the fields appropriate to the database type you have selected
-  (as usual, mandatory fields will be highlighted)
-  and click <guibutton>OK</guibutton> to create the database.
+  Complete the fields appropriate to the database type you have selected (as usual,
+  mandatory fields will be highlighted) and click <guibutton>OK</guibutton> to create
+  the database.
 </para>
 
-<sect3>
-<title>Database Type</title>
+<sect3><title>Database Type</title>
 
 <para>
-  This box lists all &Qt; SQL drivers installed on your system. Select the
-  driver for your database type. If the one you want is not in the list, you
-  need to install the appropriate driver. See your distribution documentation,
-  or visit the <ulink url="https://www.qt.io/">&Qt; software web site</ulink>
-  and search for 'SQL drivers'.
+  This box lists all the &Qt; SQL drivers installed on your system.  Select the
+  driver for your database type.  If the one you want is not in the list, you need to
+  install the appropriate driver.  See your distribution documentation, or visit the
+  <ulink url="https://www.qt.io/">&Qt; software web site</ulink> and search for 'SQL
+  drivers'.
 </para>
 </sect3>
 
-<sect3>
-<title>File (SQLite only)</title>
+<sect3><title>File (SQLite only)</title>
+
 <para>
-  SQLite has one database per file so enter the filename in which you wish to
-  create the database.  To browse the file system, click the icon to the right
-  of the filename.  For SQLite databases, the <guilabel>Host name</guilabel>,
-  <guilabel>Username</guilabel>, and <guilabel>Password</guilabel> fields are
-  not relevant. The SQLite file must have the appropriate read/write permissions
-  set by the underlying file system to enable the appropriate access for the
-  currently logged-in user.
+  SQLCipher has one database per file so enter the filename in which you wish to
+  create the database.  To browse the file system, click the icon to the right of the
+  filename.  For SQLCipher databases, the <guilabel>Database Name</guilabel>,
+  <guilabel>Host name</guilabel>, <guilabel>Username</guilabel> fields are not
+  relevant. The SQLCipher file must have the appropriate read/write permissions set
+  by the underlying file system to enable the appropriate access for the currently
+  logged-in user.
 </para>
 </sect3>
 
 <sect3>
 <title>Database name (others)</title>
 <para>
-  The default database name is <literal>KMyMoney</literal>, but you may choose some other
-  name if you like. For some database types, &kmymoney; may not be able to create the
-  database, so it must be pre-created using the appropriate administrative procedure.
-  However, &kmymoney; will usually be able to create all table structures where necessary.
-  If not, you can create them yourself. See <link linkend="details.database.generatesql">Manual
-  Database Creation</link> for more information.
+  The default database name is <literal>KMyMoney</literal>, but you may choose some
+  other name if you like.  For some database types, &kmymoney; may not be able to
+  create the database, so it must be pre-created using the appropriate administrative
+  procedure.  However, &kmymoney; will usually be able to create all table structures
+  where necessary.  If not, you can create them yourself.  See <link
+  linkend="details.database.generatesql">Manual Database Creation</link> for more
+  information.
 </para>
 </sect3>
 
 <sect3><title>Host name</title>
+
 <para>
   For the average user, the default name of <quote>localhost</quote>, being the
-  machine you are currently using, is correct. For networked databases, enter
-  the connected host name.
+  machine you are currently using, is correct.  For networked databases, enter the
+  connected host name of the database server.
 </para>
-
 </sect3>
 
-<sect3>
-<title>User name and password</title>
+<sect3><title>User name and password</title>
+  
 <para>
   Check the permissions set up on your database, or contact the database
-  administrator, for the correct values to use here. The user name must be
-  capable of selecting, inserting, updating, and deleting records. If the user
-  name is the same as your login name, a password is not normally required.
+  administrator, for the correct values to use here.  The user name must be capable
+  of selecting, inserting, updating, and deleting records.  If the user name is the
+  same as your login name, a password is not normally required.
 </para>
 </sect3>
 </sect2>
 
-<sect2>
-<title>Accessing your data</title>
+<sect2><title>Accessing your data</title>
 
-<sect3>
-<title>Table design</title>
+<sect3><title>Table design</title>
 
 <para>
-  To access your data in &kmymoney;, use the <menuchoice><guimenu>File</guimenu><guimenuitem>Open
-  Database</guimenuitem></menuchoice> menu item. This will
-  open a dialog similar to the above.
+  To access your data in &kmymoney;, use the <menuchoice> <guimenu>File</guimenu>
+  <guimenuitem>Open Database</guimenuitem> </menuchoice> menu item. This will open a
+  dialog similar to the above.
 </para>
 
 <note>
-<para>
-  If you created your database by first opening a file, and then doing
-  <guimenuitem>Save as Database</guimenuitem>, as described above, then any
-  subsequent changes to your data are saved only in the database, not in the
-  file.  This means that you can use the file as a backup or snapshot of your
-  data at a particular time.  To make a new backup like this, open your
-  database, choose the <menuchoice><guimenu>File</guimenu><guimenuitem>Save
-  As...</guimenuitem></menuchoice> menu item, giving an appropriate file name.  Remember
-  to re-open your database, so &kmymoney; does not continue to use the file.
-</para>
+  <para>
+  If you created your database by first opening a file, and then doing <guimenu>File</guimenu>
+    <guimenuitem>Save</guimenuitem> and choosing
+    <guilabel>SQL</guilabel> as described above, then any subsequent changes to your
+    data are saved only in the database, not in the file.  This means that you can use
+    the file as a backup or snapshot of your data at a particular time.  To make a new
+    backup like this, open your database, choose the <menuchoice>
+    <guimenu>File</guimenu> <guimenuitem>Save As...</guimenuitem></menuchoice> menu
+    item, chose <guilabel>XML</guilabel> as the storage type, and giving an
+    appropriate file name.  Remember to re-open your database, so &kmymoney; does not
+    continue to use the file.
+  </para>
 </note>
 
 <para>
-  To access your data in other formats, you will need to know a little about how
-  it is held in relational databases. By far the easiest way to get a feel for
-  this is to open the database in a front-end such as <trademark>OpenOffice.org</trademark>.
-  This provides a list of the various tables which make up the database, and
-  enables you to see the layout of each of them.
+  To access your data in other formats, you will need to know a little about how it
+  is held in relational databases.  By far the easiest way to get a feel for this is
+  to open the database in a front-end such as <trademark>OpenOffice.org</trademark>.
+  This provides a list of the various tables which make up the database, and enables
+  you to see the layout of each of them.
 </para>
 
 <para>
-  To extract data, ⪚, into a spreadsheet or external file, it is almost
-  invariably necessary to select linked data from more than one table. This is
-  done by 'joining' the tables, using a field which is common to each. You can
+  To extract data, ⪚, into a spreadsheet or external file, it is almost invariably
+  necessary to select linked data from more than one table.  This is done by
+  <quote>joining</quote> the tables, using a field which is common to them. You can
   find a lot more information about how this is done from the online database
-  tutorials mentioned above. The following table lists the fields used to define
+  tutorials mentioned above.  The following table lists the fields used to define
   these inter-table relationships.
 </para>
 
@@ -387,6 +415,11 @@
   Notes:
 </para>
 
+<!-- FIXME:  can anyone explain why we should use these character codes?
+     &#x2013 en dash
+     &#x201C left double quote
+     &#x201D right double quote
+-->
 <para>
   1 &#x2013; txType = &#x201C;N&#x201D; for normal transactions,
   &#x201C;S&#x201D; for scheduled transactions
@@ -397,128 +430,133 @@
 </para>
 </sect3>
 
-<sect3>
-<title>Field formats</title>
+<sect3><title>Field formats</title>
 
 <para>
   Several of the data fields are held in an internal format which may not be
-  immediately useful to external programs. In these cases, the information has
-  been duplicated in both internal and external formats.
+  immediately useful to external programs.  In these cases, the information has been
+  duplicated in both internal and external formats.
 </para>
 
 <para>
-  Monetary amounts and share values are shown both in numerator/denominator
-  format, and, with a field name suffixed with '<literal>Formatted</literal>',
-  in the form as shown on your screens.
+  Monetary amounts and share values are shown both in numerator/denominator format,
+  and, with a field name suffixed with <quote> <literal>Formatted</literal> </quote>,
+  in the form as typically displayed.
 </para>
 
 <para>
-  Similarly, some fields, such as account type appear both as a numeric code,
-  and in a field suffixed '<literal>String</literal>' in the form and language
-  of the application.
+  Similarly, some fields, such as account type appear both as a numeric code, and in
+  a field suffixed '<literal>String</literal>' in the form and language of the
+  application.
 </para>
 </sect3>
 
-<sect3>
-<title>Updating your data</title>
+<sect3><title>Updating your data</title>
 
 <para>
-  Having data in an industry standard format does give you the ability to modify
-  it outside the &kmymoney; application. DO NOT DO IT unless you really know
-  what you are doing, and always be certain to make a backup copy of your data
-  first. If you get it wrong, &kmymoney; may not be able to access your data,
-  and you could even end up losing it altogether. You have been warned!
+  Having data in an industry standard format does give you the ability to modify it
+  outside the &kmymoney; application.  DO NOT DO IT unless you really know what you
+  are doing, and always be certain to make a backup copy of your data first.  If you
+  get it wrong, &kmymoney; may not be able to access your data, and you could even
+  end up losing it altogether.  You have been warned!
 </para>
 </sect3>
 
-<sect3>
-<title>Stored queries</title>
+<sect3><title>Stored queries</title>
 
 <para>
-  Most database systems allow you to store commonly used queries and procedures,
-  and in some cases, these may be held as tables or other objects within your
-  database itself. As you will have guessed from the above, all the tables used
-  by &kmymoney; begin with the lowercase letters '<literal>kmm</literal>'. This
-  standard will be maintained, and only tables beginning with these letters will
-  be updated. Thus, provided you avoid these in the naming of your queries &etc;,
-  you should not experience any problems.
+  Most database systems allow you to store commonly used queries and procedures, and
+  in some cases, these may be held as tables or other objects within your database
+  itself.  As you will have guessed from the above, all the tables used by &kmymoney;
+  begin with the lowercase letters '<literal>kmm</literal>'.  This standard will be
+  maintained, and only tables beginning with these letters will be updated.  Thus,
+  provided you avoid these in the naming of your queries &etc;, you should not
+  experience any problems.
 </para>
 </sect3>
 </sect2>
 
-<sect2 id="details.database.generatesql">
-<title>Manual database creation</title>
+<sect2 id="details.database.generatesql"><title>Manual database creation</title>
+
 <note>
   <para>
     This section covers more advanced database usage and may be skipped by the general user.
   </para>
 </note>
 
-<sect3>
-<title>When to use</title>
+<sect3><title>When to use</title>
+
 <para>
-  There may be occasions when &kmymoney; is unable to create the database automatically, or creates it without some
-  options required by the user. For example, the database system used may not completely conform
-  to standard SQL usage, or support may be introduced for new systems which have not been fully tested in &kmymoney;.
+  There may be occasions when &kmymoney; is unable to create the database
+  automatically, or creates it without some options required by the user.  For
+  example, the database system used may not completely conform to standard SQL usage,
+  or support may be introduced for new systems which have not been fully tested in
+  &kmymoney;.
 </para>
+
 <para>
-  Prior to using this facility, you should try just creating the database
-  entry itself (&ie; with the <literal>CREATE DATABASE</literal> statement).
-  Provided the database exists, &kmymoney; may well be able to create the
-  tables, &etc; in the normal database save procedure described above.
+  Prior to using this facility, you should try just creating the database entry
+  itself (&ie; with the <literal>CREATE DATABASE</literal> statement).  Provided the
+  database exists, &kmymoney; may well be able to create the tables, &etc; in the
+  normal database save procedure described above.
 </para>
 </sect3>
 
-<sect3>
-<title>Generating the SQL</title>
+<sect3><title>Generating the SQL</title>
+
 <para>
-  If this fails, it is possible to generate the basic SQL commands needed to
-  create the various tables, views and indexes required by the application.
-  Select the <menuchoice><guimenu>Tools</guimenu><guimenuitem>Generate Database
-  SQL</guimenuitem></menuchoice> menu item. This will present the following dialog:
+  If this fails, it is possible to generate the basic SQL commands needed to create
+  the various tables, views, and indexes required by the application.  Select the
+  <menuchoice> <guimenu>Tools</guimenu> <guimenuitem>Generate Database
+  SQL</guimenuitem> </menuchoice> menu item. This will present the following dialog:
 </para>
+
 <screenshot>
   <mediaobject>
-  <imageobject>
-  <imagedata fileref="generate_sql.png" format="PNG" />
-  </imageobject>
+    <imageobject>
+      <imagedata fileref="generate_sql.png" format="PNG" />
+    </imageobject>
   </mediaobject>
 </screenshot>
 
 <para>
-  On selecting the database type, the appropriate SQL will appear in the <guilabel>SQL for creation</guilabel> text box; this can be edited by the user,
-  or saved to a text file by clicking <guibutton>Save SQL</guibutton>. In the latter case, the database
-  must be created using the administrative functions provided by the database system.
+  On selecting the database type, the appropriate SQL will appear in the
+  <guilabel>SQL for creation</guilabel> text box; this can be edited by the user, or
+  saved to a text file by clicking <guibutton>Save SQL</guibutton>.  In the latter
+  case, the database must be created using the administrative functions provided by
+  the database system.
 </para>
+
 <para>
-  If after editing the text in the dialog, you want &kmymoney; to create the database,
-  you will need to complete the other fields in the dialog, as detailed in <link
-  linkend="details.database.selectdatabase">Creating a Database</link> above,
-  and click <guibutton>Create Tables</guibutton>. Note that, except in the case of
-  SQLite, you will need either to include a suitable <literal>CREATE DATABASE</literal> statement
-  as the first command, or have previously issued such a command externally to &kmymoney;.
+  If after editing the text in the dialog, you want &kmymoney; to create the
+  database, you will need to complete the other fields in the dialog, as detailed in
+  <link linkend="details.database.selectdatabase">Creating a Database</link> above,
+  and click <guibutton>Create Tables</guibutton>.  Note that, except in the case of
+  SQLite, you will need either to include a suitable <literal>CREATE
+  DATABASE</literal> statement as the first command, or have previously issued such a
+  command externally to &kmymoney;.  <!-- FIXME:  to KMM or to the RDBMS? -->
 </para>
 </sect3>
 
-<sect3>
-<title>Warning</title>
+<sect3><title>Warning</title>
+
 <para>
-  You should be very careful editing the definitions of any of the basic tables or views
-  (those with names beginning with '<literal>kmm</literal>'). Some changes,
-  such as increasing the length of an integer field, may have little impact, but you should not
-  remove or change the sequence of any fields, or &kmymoney; may refuse to function, or may corrupt your data.
+  You should be very careful editing the definitions of any of the basic tables or
+  views (those with names beginning with '<literal>kmm</literal>'.)  Some changes,
+  such as increasing the length of an integer field, may have little impact, but you
+  should not remove or change the sequence of any fields, or &kmymoney; may refuse to
+  function, or may corrupt your data.
 </para>
+
 <para>
-  Whilst adding or removing indexes may improve performance, you should also be aware that the opposite
-  may happen. Some knowledge of the internal operation of &kmymoney; may help to get the
-  best performance in these circumstances.
+  While adding or removing indexes may improve performance, you should also be aware
+  that the opposite may happen.  Some knowledge of the internal operation of
+  &kmymoney; may help to get the best performance in these circumstances.
 </para>
 </sect3>
-
 </sect2>
 
-<sect2>
-<title>Encryption</title>
+<sect2><title>Encryption</title>
 
 <para>
   Encryption of data in your database is not currently supported.
diff --git a/doc/details-formats.docbook b/doc/details-formats.docbook
index 8affaf8c9..dee886deb 100644
--- a/doc/details-formats.docbook
+++ b/doc/details-formats.docbook
@@ -3,9 +3,10 @@
 <chapterinfo>
   <authorgroup>
     <author> &Thomas.Baumgart; &Thomas.Baumgart.mail; </author>
+    <author> &Jack.H.Ostroff; &Jack.H.Ostroff.mail; </author>
   </authorgroup>
-  <date>2014-08-30</date>
-  <releaseinfo>4.7.01</releaseinfo>
+  <date>2023-11-25</date>
+  <releaseinfo>5.2</releaseinfo>
 </chapterinfo>
 
 <title>File Formats</title>
@@ -13,62 +14,67 @@
 <!-- FIXME: be sure to have a better explanation of the Backup command, including
      mounting the directory.  Can also use OS specifics, especially about folder
      mounting on Windows.  -->
-
 <para>
   Unless you choose to use a <link linkend="details.database">relational
-  database</link>, &kmymoney; will store all your financial information in a file
-  ending in <filename class="extension">.kmy</filename>.  Also, when you launch
-  &kmymoney;, unless you use a <link linkend="firsttime.launch">command line
-  option</link> that tells it not to do so, it will open the last file it had open.
-  However, it is important to know that there is actually more than one type of file
-  &kmymoney; can use to hold your financial data.
+  database</link>, &kmymoney; will store all your financial information in a file.
+  Most commonly, the file name will end in <filename
+  class="extension">.kmy</filename>.  Also, when you launch &kmymoney;, unless you
+  use a <link linkend="firsttime.launch">command line option</link> that tells it not
+  to do so, it will open the last file it had open.  However, it is important to know
+  that there is actually more than one type of file &kmymoney; can use to hold your
+  financial data.
 </para>
 
 <para>
-  This chapter describes the formats in which &kmymoney; stores its data in
-  permanent form on the user's storage device. In general, &kmymoney; stores its
-  information in form of an &XML; document. Depending on the actual format, this
-  &XML; document will be written:
+  This chapter describes the file formats in which &kmymoney; can store its data in
+  permanent form on the user's storage device.  It also discusses backing up your data.
+</para>
 
-<itemizedlist>
-  <listitem><para>as a <link linkend="details.formats.plain">plain text
-    file</link> encoded in UTF-8,</para></listitem>
+<sect1><title>Data File formats</title>
+
+<para>
+  In general, &kmymoney; stores its
+  information in form of an &XML; document.  Depending on the actual format, which is
+  set in &kmymoney;'s configuration, this &XML; document will be written:
+ 
+  <itemizedlist>
+    <listitem><para>as a plain text file, encoded in UTF-8,</para></listitem>
 
-  <listitem><para>as a <link linkend="details.formats.compressed">compressed
-    file</link> using GZIP compression,</para></listitem>
+    <listitem><para>as a compressed file, using GZIP compression,</para></listitem>
 
-  <listitem><para>as an <link linkend="details.formats.encrypted">encrypted
-  file</link> using GPG encryption, or</para></listitem>
+    <listitem><para>as an encrypted file, using GPG encryption, or</para></listitem>
 
-  <listitem><para>as an <link linkend="details.formats.anonymous">anonymous
-    plain text file</link> encoded in UTF-8 but with all your personal data
-    scrambled.</para></listitem>
-</itemizedlist>
+    <listitem>
+      <para>
+        as an anonymous plain text file, encoded in UTF-8 but with all your personal data scrambled.
+      </para>
+    </listitem>
+  </itemizedlist>
+
+  Each of these is described in more detail in the following sections.
 </para>
 
-<sect1 id="details.formats.plain">
-<title>Plain text file</title>
+<sect2 id="details.formats.plain"><title>Plain text file</title>
 <para>
   This is the most space consuming format supported, as no compression is
-  performed. It is not intended for normal use, and is provided to support
-  debugging purposes and the capability to modify the file manually. If you end
+  performed.  It is not intended for normal use, and is provided to support
+  debugging purposes and the capability to modify the file manually.  If you end
   a filename in <filename class="extension">.xml</filename>, the file will be
   stored in this format.
 
+<!-- FIXME: should this caution really be within the above <para>? -->
 <caution>
   <para>
-    Manual modification of the file is not recommended to the normal user, and
-    should only be performed if the internal working of &kmymoney; is fully
-    understood or if instructions from the developers tell you what to do. Don't
-    blame the &kmymoney; developers if you screw up your data: You have been
-    warned!
+    Manual modification of the file is not recommended to the normal user, and should
+    only be performed if the internal working of &kmymoney; is fully understood or if
+    instructions from the developers tell you what to do.  Don't blame the &kmymoney;
+    developers if you screw up your data: You have been warned!
   </para>
 </caution>
 </para>
-</sect1>
+</sect2>
 
-<sect1 id="details.formats.compressed">
-<title>GZIP-compressed file</title>
+<sect2 id="details.formats.compressed"><title>GZIP-compressed file</title>
 <para>
   This is the normal format used by &kmymoney; when you store a file with the
   extension <filename class="extension">.kmy</filename>.
@@ -76,130 +82,256 @@
 
 <note>
   <para>
-    If <link linkend="details.formats.encrypted">encryption</link> has been
-    selected, the file will be stored encrypted.
+    If <link linkend="details.formats.encrypted">encryption</link> has been selected
+    in the configuration, the file will be stored encrypted, as described in the next
+    section.
   </para>
 </note>
 
 <para>
   If you want to look at the contents of a GZIP compressed file, rename it to a
-  filename ending in <filename class="extension">.gz</filename> (⪚,
-  rename <filename>myfinances.kmy</filename>
-  to <filename>myfinances.kmy.gz</filename>), then use <command>gunzip</command>
-  to uncompress the file and look at it. You don't have to compress it before
-  loading it into &kmymoney; the next time, because &kmymoney; can read the
-  uncompressed data as well. Nevertheless, if you save it thereafter, it will be
-  saved compressed again. Use the <link linkend="details.formats.plain"><filename
-  class="extension">.xml</filename></link> extension to write it in uncompressed
-  format.
+  filename ending in <filename class="extension">.gz</filename> (⪚, rename
+  <filename>myfinances.kmy</filename> to <filename>myfinances.kmy.gz</filename>),
+  then use <command>gunzip</command> to uncompress the file and look at it.  You
+  don't have to compress it before loading it into &kmymoney; the next time, because
+  &kmymoney; can read the uncompressed data as well.  Nevertheless, if you save it
+  thereafter, it will be saved compressed again. Use the <link
+  linkend="details.formats.plain"><filename class="extension">.xml</filename></link>
+  extension to write it in uncompressed format.
 </para>
-</sect1>
+</sect2>
 
-<sect1 id="details.formats.encrypted">
-<title>GPG-encrypted file</title>
+<sect2 id="details.formats.encrypted"><title>GPG-encrypted file</title>
 <para>
   Using the GPG-encrypted file format is a very secure method of storing your
-  personal finance data on your storage device. When &kmymoney; has been
-  instructed through the settings dialog to store your data encrypted, it will
-  cipher the data using GPG and the key you provided before actually storing
-  it. When opening an encrypted file, you have to provide the passphrase
-  necessary to open your keyring. The encrypted file itself will be stored in
-  GPG's <emphasis>&ASCII; armored</emphasis> format.
+  personal finance data on your storage device.  When &kmymoney; has been instructed
+  through the settings dialog to store your data encrypted, it will cipher the data
+  using GPG and the key you provided before actually storing it.  When opening an
+  encrypted file, you have to provide the passphrase necessary to open your keyring.
+  The encrypted file itself will be stored in GPG's <emphasis>&ASCII;
+  armored</emphasis> format.
   <note>
     <para>
-      When using GPG encryption, GPG also compresses the file, so no extra
+      When using GPG encryption, GPG also compresses the file using gzip, so no extra
       compression is necessary.
     </para>
   </note>
 </para>
 
-<sect2 id="details.formats.encrypted.gpgkeys">
-<title>GPG-Keys</title>
+<sect3 id="details.formats.encrypted.gpgkeys"><title>GPG-Keys</title>
 <para>
   If you have not done so already for mail encryption, you need to generate a
-  key-pair in order to use the GPG encryption feature of
-  &kmymoney;. Also, <application>GPG</application> must be installed on your
-  system.
+  key-pair in order to use the GPG encryption feature of &kmymoney;.  Also,
+  <application>GPG</application> must be installed on your system.
 </para>
 
 <para>
-  The details about how to generate a key-pair and how to take care of it are
-  beyond the scope of this document.  A Mini Howto on this subject can be found
-  at <ulink url="https://www.gnupg.org/documentation/howtos.en.html">https://www.gnupg.org/documentation/howtos.en.html</ulink>.
+  The details about how to generate a key-pair and how to take care of it are beyond
+  the scope of this document.  A Mini Howto on this subject can be found at <ulink
+  url="https://www.gnupg.org/documentation/howtos.en.html">https://www.gnupg.org/documentation/howtos.en.html</ulink>.
+  The web sites of most &Linux; distributions also contain instructions on using GPG
+  in that distribution.
 </para>
-</sect2>
+</sect3>
 
-<sect2 id="details.formats.encrypted.keysettings">
-<title>Setting the keys in &kmymoney;</title>
-<para>
-  On the encryption page of the settings dialog, there is a drop down 
-  list where you can select the key that should be used for encryption and 
-  decryption. Additionally you can find a field where you can enter the 
-  key-id of a key not in the listbox. You can use either the key-id, the 
-  email address associated with this key, or any other valid GPG key 
-  identification as the value for this field. When you enter the key-id, 
-  &kmymoney; will check its validity and display a green LED icon in the 
-  dialog if a key is found.
+<sect3 id="details.formats.encrypted.keysettings"><title>Setting the keys in &kmymoney;</title>
+<para>
+  On the encryption page of the settings dialog, there is a drop down list where you
+  can select the key that should be used for encryption and decryption.
+  Additionally, there is a field where you can enter the key-id of a key not in the
+  listbox.  You can use either the key-id, the email address associated with this
+  key, or any other valid GPG key identification as the value for this field.  When
+  you enter the key-id, &kmymoney; will check its validity and display a green LED
+  icon in the dialog if a key is found.
   <caution>
     <para>
-      Make sure you have both the public and the private key for this id. If you
-      do not own the private key for the id entered, you will not be able to
-      open the file again.
+      Make sure you have both the public and the private key for this id. If you do
+      not own the private key for the id entered, you will not be able to open the
+      file again.
     </para>
   </caution>
 </para>
-</sect2>
+</sect3>
 
-<sect2 id="details.formats.encrypted.recoverkey">
-<title>The &kmymoney; recover key</title>
+<sect3 id="details.formats.encrypted.recoverkey"><title>The &kmymoney; recover key</title>
 <para>
   Also on this page of the settings dialog you have the choice of selecting
-  supplemental encryption with the &kmymoney; recover key. This option is
-  available to you if that key is stored in your <application>GPG</application>
-  keyring. Selecting this option will allow you to recover your data even in the
-  case you lose your own private key. This is possible because the data is not
-  only encrypted for your own key, but also for the &kmymoney; recover key. This
-  key is only available to selected &kmymoney; developers (at the time of
-  writing only to the author).  As of the release of &kmymoney; version 4.7, the
-  recover key is set to expire on 3 January 2015.
+  supplemental encryption with the &kmymoney; recover key.  This option is available
+  to you if that key is stored in your <application>GPG</application> keyring.
+  Selecting this option will allow you to recover your data even in the case you lose
+  your own private key.  This is possible because the data is not only encrypted for
+  your own key, but also for the &kmymoney; recover key.  This key is only available
+  to selected &kmymoney; developers (at the time of writing only to the author.)  As
+  of the November 2023, the recover key is set to expire on 7 January 2024.
+  <!-- should we specify that you import the PUBLIC key?  More generally, should we
+       give more details on how to find and import the recovery key? -->
 </para>
 
 <para>
-  Under normal circumstances, you will open/save/close your file as usual. In
-  the abnormal case of loss of your key, you have the chance to contact one of
-  the developers who has access to the &kmymoney; recover key and request help
-  to recover your data. You may contact the developers via email to the
-  &kmymoney; developer mailing list at &devlist;.
+  Under normal circumstances, you will open/save/close your file as usual. In the
+  abnormal case of loss of your key, you have the chance to contact one of the
+  developers who has access to the &kmymoney; recover key and request help to recover
+  your data. You may contact the developers via email to the &kmymoney; developer
+  mailing list at &devlist;.
+</para>
+
+<para>
+  To get the recovery key, go to <ulink url="https://kmymoney.org/recovery.html"> The
+  KMyMoney recovery key</ulink> page of the &kmymoney; web site.  Copy and save the
+  <quote>PGP PUBLIC KEY BLOCK</quote> (including the <quote>BEGIN</quote> and
+  <quote>END</quote> lines) to a text file and then import
+</para>
+</sect3>
+</sect2>
+
+<sect2 id="details.formats.anonymous"><title>Anonymous file</title>
+<para>
+  This format is not intended to be used for normal data storage.  It is supported so
+  that in case of a problem, you can supply the &kmymoney; development team with your
+  file without disclosing any of the confidential details in your financial data.
+  For example, it changes institution, account, payee, and category names to strings
+  such as "I000001" and "A000001"; it makes similar changes to all data such as
+  account numbers, and it also randomly changes the amounts of transactions.
+</para>
+
+<para>
+  If instructed by the developers, use the <guimenuitem>Save as...</guimenuitem> menu
+  item to store your data in anonymous format by selecting <literal
+  role="filter">Anonymous files</literal> as the filter.  This also changes the file
+  extension to <filename class="extension">.anon.xml</filename>.
+</para>
+
+<para>
+  To verify that your problem still exists, reload this anonymized file and try to
+  duplicate your problem.  If the problem is still present, send the file to the
+  developer mailing list at &devlist; for further investigation.  If the problem does
+  not show ... well, I don't want to think about this scenario right now.
 </para>
 </sect2>
 </sect1>
 
-<sect1 id="details.formats.anonymous">
-<title>Anonymous file</title>
+<sect1 id="details.formats.backup"><title>Backup</title>
+
+<para>
+  We will not attempt here to convince you that making backup copies of your data is
+  an extremely good idea; hopefully you are already convinced of that.  This section
+  describes three ways to do this, and you can use any one, two, or even all three of
+  them.  Note that this is about backing up a data file; if you use an SQL backend to
+  store your data, see the documentation for that database system for instructions on
+  making backups.
+</para>
+
+<sect2><title>Backup file location</title>
+
 <para>
-  This format is not intended to be used for normal data storage.  It is
-  supported so that in case of a problem, you can supply the &kmymoney;
-  development team with your file without disclosing any of the confidential
-  details in your financial data.  For example, it changes institution, account,
-  payee, and category names to strings such as "I000001" and "A000001", it makes
-  similar changes to all data such as account numbers, and it also randomly
-  changes the amounts of transactions.
+  If you need a backup copy of your data to confirm some aspect of your finances at a
+  previous point in time, or to revert to an earlier state, such as to undo importing
+  a lot of data to the wrong account, it doesn't matter whether the backup copy is
+  local or stored elsewhere, such as on an attached network drive.  However, if you
+  need a backup to recover from loss of data if you disk drive failed, for example,
+  it is essential that the backup is <emphasis>not</emphasis> on the same drive as
+  your primary data file.  In case of a larger disaster, such as a house fire, you
+  would need a backup copy stored in a fireproof safe or at a physically different
+  location.  Please keep this in mind as you establish your backup strategy.
 </para>
+</sect2>
+
+<sect2><title>Autosave</title>
+<!-- FIXME: if the Settings chapter is modified to include screenshots and
+     descriptions of all config settings, this section will move there, and just be
+     referred to here. -->
 
 <para>
-  If instructed by the developers, use the <guimenuitem>Save as...</guimenuitem>
-  menu item to store your data in anonymous format by selecting <literal
-  role="filter">Anonymous files</literal> as the filter. This also changes the
-  file extension to <filename class="extension">.anon.xml</filename>.
+  On the &kmymoney; configuration dialog, General section, Global tab, the upper
+  <guilabel>Autosave options</guilabel> area allows you to control this feature.  An
+  autosave file is just a copy of your data file.  The main point of these is that
+  they are automatically created, according to the configuration settings, so you do
+  not need to remember to take any action.  Any autosave files created will be in the
+  same directory as the data file currently open.
 </para>
 
+<itemizedlist>
+  <listitem>
+    <para>
+      Autosave periodically: if this checkbox is ticked, then &kmymoney; will create
+      a new autosave file at the interval specified by the
+      <guilabel>minutes</guilabel> field.
+    </para>
+  </listitem>
+
+  <listitem>
+    <para>
+      Autosave when file is modified upon close: if this checkbox is ticked, then
+      when you close the program, &kmymoney; will create an autosave file if the data
+      has changed at all since it was last saved.
+    </para>
+  </listitem>
+
+  <listitem>
+    <para>
+      Number of backups to keep (0=off): This sets the number of autosave files
+      &kmymoney; will create.  If your data file is MyFinances.kmy, then when an
+      autosave file is created, it will be called MyFinances.kmy.1~.  Any existing
+      autosave files will have their number increased by 1, up to the specified
+      number.
+    </para>
+  </listitem>
+</itemizedlist>
+</sect2>
+
+<sect2><title>File copy</title>
+
 <para>
-  To verify that your problem still exists, reload this anonymized
-  file and try to duplicate your problem. If the problem is still
-  present, send the file to the developer mailing list at &devlist;
-  for further investigation. If the problem does not show ... well, I
-  don't want to think about this scenario right now.
+  Unless you are using SQL storage, your data may be compressed, and it may be
+  encrypted, but is kept in a regular file.  Whenever you save your data with the
+  <menuchoice><guimenu>File</guimenu><guimenuitem>Save</guimenuitem></menuchoice>
+  menu item, it writes all your data to a file, replacing the previous version.  The
+  most straightforward way of backing up your data is by making a copy of that file.
+  A single copy can even have the same file name if it is in a different folder than
+  your original file, but if you are going to keep multiple copies, it makes sense to
+  include some version of the current date and time in each file name.  You can save
+  these to a network drive, or to a USB storage device, or even to an optical device.
+  The primary downside of this method is that you need to keep track of all the
+  backups, but it does provide the most flexibility.
 </para>
+</sect2>
+
+<sect2><title>Backup command</title>
+
+<para>
+  To make things a bit easier, you can select the <menuchoice>
+  <guimenu>File</guimenu> <guimenuitem>Backup</guimenuitem> </menuchoice> menu item.
+
+  <screenshot>
+    <mediaobject>
+      <imageobject>
+        <imagedata fileref="file-backup.png" format="PNG" />
+      </imageobject>
+      <textobject>
+        <phrase>file backup</phrase>
+      </textobject>
+    </mediaobject>
+  </screenshot>
+
+  When you click <guibutton>OK</guibutton> &kmymoney; will create a copy of your data
+  file, with the date (formatted as YYYY-MM-DD) appended to the name.  Note that this
+  means only one backup per day can be created by this method.
+</para>
+
+<para>
+  &kmymoney; will save this file to the directory specified in the <guilabel>Mount
+  Point</guilabel> field.  You can either manually type the full path to the
+  directory or click <guibutton>Choose...</guibutton> and navigate to it using the
+  file browser.  The directory can be on a local storage device or it can be a
+  network folder.
+</para>
+
+<para>
+  If the specified directory is actually a mount point for a storage device that is
+  not always mounted, you can check the <guilabel>Mount this directory before backing
+  up</guilabel> checkbox.  Do not use this for a regular network file share which is
+  always moutned.
+</para>
+</sect2>
 </sect1>
 </chapter>
-
diff --git a/doc/details-settings.docbook b/doc/details-settings.docbook
index 88aab4ef2..9fc74c901 100644
--- a/doc/details-settings.docbook
+++ b/doc/details-settings.docbook
@@ -13,10 +13,10 @@
 <title>&kmymoney; Settings</title>
 
 <para>
-   The settings described below modify the behavior of &kmymoney;, allowing you to
-   customize it to meet the needs of your unique financial affairs, and to modify its
-   look and feel to match your personality.  These settings can be changed through
-   the <menuchoice> <guimenu>Settings</guimenu> <guimenuitem>Configure
+   The settings described in this chapter modify the behavior of &kmymoney;, allowing
+   you to customize it to meet the needs of your unique financial affairs, and to
+   modify its look and feel to match your personality.  These settings can be changed
+   through the <menuchoice> <guimenu>Settings</guimenu> <guimenuitem>Configure
    &kmymoney;...</guimenuitem> </menuchoice> menu item or by using the keyboard
    shortcut <keycombo action="simul">&Ctrl; &Shift;<keycap>,</keycap></keycombo>.  In
    order for any changes to take effect the <guibutton>Apply</guibutton> button must
diff --git a/doc/file-backup.png b/doc/file-backup.png
new file mode 100644
index 000000000..30fd2491d
Binary files /dev/null and b/doc/file-backup.png differ


More information about the kde-doc-english mailing list