diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | e9ae80694875f869892f13f4fcaf1170a00dea41 (patch) | |
tree | aa2f8d8a217e2d376224c8d46b7397b68d35de2d /doc | |
download | tdewebdev-e9ae80694875f869892f13f4fcaf1170a00dea41.tar.gz tdewebdev-e9ae80694875f869892f13f4fcaf1170a00dea41.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdewebdev@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'doc')
187 files changed, 15435 insertions, 0 deletions
diff --git a/doc/Makefile.am b/doc/Makefile.am new file mode 100644 index 00000000..85c6cdef --- /dev/null +++ b/doc/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = en +KDE_DOCS = AUTO +SUBDIRS = $(AUTODIRS) + diff --git a/doc/kfilereplace/Makefile.am b/doc/kfilereplace/Makefile.am new file mode 100644 index 00000000..e97402c7 --- /dev/null +++ b/doc/kfilereplace/Makefile.am @@ -0,0 +1,2 @@ +KDE_DOCS = AUTO +KDE_LANG = en diff --git a/doc/kfilereplace/addstringsdialog_window.png b/doc/kfilereplace/addstringsdialog_window.png Binary files differnew file mode 100644 index 00000000..7d6aeee7 --- /dev/null +++ b/doc/kfilereplace/addstringsdialog_window.png diff --git a/doc/kfilereplace/backup_option.png b/doc/kfilereplace/backup_option.png Binary files differnew file mode 100644 index 00000000..a0e1e02f --- /dev/null +++ b/doc/kfilereplace/backup_option.png diff --git a/doc/kfilereplace/casesensitive_option.png b/doc/kfilereplace/casesensitive_option.png Binary files differnew file mode 100644 index 00000000..6302c0f2 --- /dev/null +++ b/doc/kfilereplace/casesensitive_option.png diff --git a/doc/kfilereplace/command_option.png b/doc/kfilereplace/command_option.png Binary files differnew file mode 100644 index 00000000..1da3688b --- /dev/null +++ b/doc/kfilereplace/command_option.png diff --git a/doc/kfilereplace/edit.png b/doc/kfilereplace/edit.png Binary files differnew file mode 100644 index 00000000..ce8b2267 --- /dev/null +++ b/doc/kfilereplace/edit.png diff --git a/doc/kfilereplace/edit_add.png b/doc/kfilereplace/edit_add.png Binary files differnew file mode 100644 index 00000000..c46aed2b --- /dev/null +++ b/doc/kfilereplace/edit_add.png diff --git a/doc/kfilereplace/edit_remove.png b/doc/kfilereplace/edit_remove.png Binary files differnew file mode 100644 index 00000000..1a2f87c5 --- /dev/null +++ b/doc/kfilereplace/edit_remove.png diff --git a/doc/kfilereplace/eraser.png b/doc/kfilereplace/eraser.png Binary files differnew file mode 100644 index 00000000..33775463 --- /dev/null +++ b/doc/kfilereplace/eraser.png diff --git a/doc/kfilereplace/filereplace.png b/doc/kfilereplace/filereplace.png Binary files differnew file mode 100644 index 00000000..c3692e11 --- /dev/null +++ b/doc/kfilereplace/filereplace.png diff --git a/doc/kfilereplace/filesearch.png b/doc/kfilereplace/filesearch.png Binary files differnew file mode 100644 index 00000000..1be59c49 --- /dev/null +++ b/doc/kfilereplace/filesearch.png diff --git a/doc/kfilereplace/filesimulate.png b/doc/kfilereplace/filesimulate.png Binary files differnew file mode 100644 index 00000000..7cc5b284 --- /dev/null +++ b/doc/kfilereplace/filesimulate.png diff --git a/doc/kfilereplace/index.docbook b/doc/kfilereplace/index.docbook new file mode 100644 index 00000000..b790a5e0 --- /dev/null +++ b/doc/kfilereplace/index.docbook @@ -0,0 +1,613 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY kfilereplace "<application>KFileReplace</application>"> + <!ENTITY kappname "&kfilereplace;"> + <!ENTITY package "kdewebdev"> + <!ENTITY % addindex "IGNORE"> + <!ENTITY % English "INCLUDE"> + <!ENTITY kdewebdev "<application>kdewebdev</application>"> + <!ENTITY bc "<application>bc</application>"> +]> + +<book lang="&language;"> + +<bookinfo> +<title>The &kfilereplace; Handbook</title> + +<authorgroup> +<author> +<firstname>Emiliano</firstname> +<surname>Gulmini</surname> +<affiliation> +<address><email>emi_barbarossa@yahoo.it</email></address> +</affiliation> +</author> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> + +<copyright> +<year>2004</year> +<holder>Emiliano Gulmini</holder> +</copyright> + +<legalnotice>&FDLNotice;</legalnotice> + +<date>2004-08-09</date> +<releaseinfo>1.0.0</releaseinfo> + +<!-- Abstract about this handbook --> + +<abstract> +<para> +&kfilereplace; is an utility to search and replace strings. +</para> +</abstract> + +<keywordset> +<keyword>KDE</keyword> +<keyword>KFileReplace</keyword> +<keyword>replace</keyword> +<keyword>search</keyword> +<keyword>string</keyword> +</keywordset> + +</bookinfo> + +<chapter id="introduction"> + <title>Introduction</title> + <para>&kfilereplace; is an application used to search and replace a list of strings in a file tree. The strings may be literal or Qt-like regular expressions. There are also other options to tune your search. + </para> +</chapter> + +<chapter id="using-kfilereplace"> +<title>Using &kfilereplace;</title> + +<para> + <screenshot> + <screeninfo>&kfilereplace; in its standalone incarnation</screeninfo> + <mediaobject> + <imageobject> + <imagedata fileref="kfr_standalone_main_window_1.png" format="PNG"/> + </imageobject> + <textobject> + <phrase>&kfilereplace; in its standalone incarnation</phrase> + </textobject> + </mediaobject> + </screenshot> +</para> + + +<sect1 id="kfilereplace-the-toolbar"> +<title>The Toolbar</title> + +<para>The &kfilereplace; toolbar should looks like this: + <screenshot> + <screeninfo>&kfilereplace;'s toolbar</screeninfo> + <mediaobject> + <imageobject> + <imagedata fileref="toolbar.png" format="PNG"/> + </imageobject> + <imageobject> + <imagedata fileref="toolbar.eps" format="EPS"/> + </imageobject> + <textobject> + <phrase>&kfilereplace;'s toolbar</phrase> + </textobject> + </mediaobject> + </screenshot> +</para> + +<para>The toolbar shows you the buttons of the main functionalities. + <variablelist> + <title>Toolbar Icons</title> + + <varlistentry> + <term> + <inlinemediaobject> + <imageobject> + <imagedata fileref="project.png" format="PNG"/> + </imageobject> + </inlinemediaobject><guiicon>New session</guiicon></term> + <listitem> + <para>This button shows a <link linkend="kfilereplace-the-project-dialog">session dialog</link> in which you can set several basic options; if &kfilereplace; run as standalone application you should click this button as first step.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + <inlinemediaobject> + <imageobject> + <imagedata fileref="filesearch.png" format="PNG"/> + </imageobject> + </inlinemediaobject><guiicon>Search only</guiicon></term> + <listitem> + <para>This button starts a search loop.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + <inlinemediaobject> + <imageobject> + <imagedata fileref="filereplace.png" format="PNG"/> + </imageobject> + </inlinemediaobject><guiicon>Replace</guiicon></term> + <listitem> + <para>This button starts a search&replace loop. When a string has been found, &kfilereplace; replaces it with another string.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + <inlinemediaobject> + <imageobject> + <imagedata fileref="filesimulate.png" format="PNG"/> + </imageobject> + </inlinemediaobject><guiicon>Simulated Replace</guiicon></term> + <listitem> + <para>This button starts a simulated search&replace loop. Nothing really happens when you click this button.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + <inlinemediaobject> + <imageobject> + <imagedata fileref="stop.png" format="PNG"/> + </imageobject> + </inlinemediaobject><guiicon>Stop</guiicon></term> + <listitem> + <para>This button stops an operation.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + <inlinemediaobject> + <imageobject> + <imagedata fileref="edit_add.png" format="PNG"/> + </imageobject> + </inlinemediaobject><guiicon>Add Strings</guiicon></term> + <listitem> + <para>This button opens the <link linkend="kfilereplace-the-add-dialog">Add Strings</link> dialog in which you can edit your string list.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + <inlinemediaobject> + <imageobject> + <imagedata fileref="edit_remove.png" format="PNG"/> + </imageobject> + </inlinemediaobject><guiicon>Delete Strings</guiicon></term> + <listitem> + <para>This button deletes the selected (or the current if there is no selection) string from the list.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + <inlinemediaobject> + <imageobject> + <imagedata fileref="edit.png" format="PNG"/> + </imageobject> + </inlinemediaobject><guiicon>Edit Strings</guiicon></term> + <listitem> + <para>This button edits a selected string.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + <inlinemediaobject> + <imageobject> + <imagedata fileref="eraser.png" format="PNG"/> + </imageobject> + </inlinemediaobject><guiicon>Delete List</guiicon></term> + <listitem> + <para>This button deletes all the strings in the list.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + <inlinemediaobject> + <imageobject> + <imagedata fileref="invert.png" format="PNG"/> + </imageobject> + </inlinemediaobject><guiicon>Invert Strings</guiicon></term> + <listitem> + <para>This button swaps the search string with the replace string, so you can revert a search/replace operation.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + <inlinemediaobject> + <imageobject> + <imagedata fileref="unsortedList.png" format="PNG"/> + </imageobject> + </inlinemediaobject><guiicon>Load String List</guiicon></term> + <listitem> + <para>This button loads a <link linkend="kfilereplace-the-kfr-file">string list</link> saved in a xml file with a <literal role="extension">kfr</literal> extension.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + <inlinemediaobject> + <imageobject> + <imagedata fileref="recursive_option.png" format="PNG"/> + </imageobject> + </inlinemediaobject><guiicon>Search in Subfolders</guiicon></term> + <listitem> + <para>This button allows you to search/replace recursively in the subfolders of your base directory.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + <inlinemediaobject> + <imageobject> + <imagedata fileref="backup_option.png" format="PNG"/> + </imageobject> + </inlinemediaobject><guiicon>Make Backup Files</guiicon></term> + <listitem> + <para>This button enables generation of <link linkend="kfilereplace-backup-file">backup</link> files.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + <inlinemediaobject> + <imageobject> + <imagedata fileref="casesensitive_option.png" format="PNG"/> + </imageobject> + </inlinemediaobject><guiicon>Case-sensitive Search</guiicon></term> + <listitem> + <para>This button enables case-sensitive searching.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + <inlinemediaobject> + <imageobject> + <imagedata fileref="command_option.png" format="PNG"/> + </imageobject> + </inlinemediaobject><guiicon>Commands</guiicon></term> + <listitem> + <para>This button enables commands capability. Commands are special strings. See <xref linkend="kfilereplace-commands"/>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + <inlinemediaobject> + <imageobject> + <imagedata fileref="regularexpression_option.png" format="PNG"/> + </imageobject> + </inlinemediaobject><guiicon>Regular expressions</guiicon></term> + <listitem> + <para>This button enables <link linkend="kfilereplace-QT-regexp">Qt-like regular expressions</link>.</para> + </listitem> + </varlistentry> + +</variablelist> +</para> + +</sect1> + +<sect1 id="kfilereplace-the-results-view"> + <title>The Results List</title> + <screenshot> + <screeninfo>&kfilereplace;'s Results view</screeninfo> + <mediaobject> + <imageobject> + <imagedata fileref="results_view.png" format="PNG"/> + </imageobject> + <imageobject> + <imagedata fileref="results_view.eps" format="EPS"/> + </imageobject> + <textobject> + <phrase>&kfilereplace;'s Results view</phrase> + </textobject> + </mediaobject> + </screenshot> + <para>The <guilabel>Results</guilabel> view shows the name of the files that contain the strings you have to retrieve (and replace), their path, their size, the number of strings found and the user id of the files. This view also provides the exact position of each match. You can also open a file by clicking with the &RMB; on an list entry that contains line and column position.</para> + +</sect1> + +<sect1 id="kfilereplace-the-strings-view"> + <title>The String List</title> + + <para>This is the <guilabel>Strings</guilabel> view: + <screenshot> + <screeninfo>&kfilereplace;'s Strings view</screeninfo> + <mediaobject> + <imageobject> + <imagedata fileref="strings_view.png" format="PNG"/> + </imageobject> + <textobject> + <phrase>&kfilereplace;'s Strings view</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + + <para>The <guilabel>Strings</guilabel> view visualizes the list of strings you want search/replace. Please note that in search mode the <guilabel>Results</guilabel> view and the <guilabel>Strings</guilabel> view have a different layout.</para> + +</sect1> + +<sect1 id="kfilereplace-the-project-dialog"> + <title>The <guilabel>New Session</guilabel> Dialog</title> + <para>The <guilabel>New Session</guilabel> dialog is used to setup the basic parameters needed by &kfilereplace; to work. It consists of two tabs, <guilabel>General</guilabel> and <guilabel>Advanced</guilabel>. + </para> + + <sect2 id="kfilereplace-the-project-dialog-general-page"> + <title>The <guilabel>General</guilabel> Tab</title> + <screenshot> + <screeninfo>&kfilereplace; General tab</screeninfo> + <mediaobject> + <imageobject> + <imagedata fileref="projectdialog_main_window_1.png" format="PNG"/> + </imageobject> + <textobject> + <phrase>&kfilereplace; General tab</phrase> + </textobject> + </mediaobject> + </screenshot> + <para>When you want to begin a new session the first step is to click on the <link linkend="kfilereplace-the-toolbar"><guiicon>New Session</guiicon> button</link>. Then you must enter the base path and a sequence of shell-like wildcards to use as filter.</para> + <para>Then you could set some useful options, like searching in all the subfolders, doing a case-sensitive search, enabling commands and/or regular expressions<footnote id="performancewarning"><para>Please note that regular expressions and commands could slow down the speed performances.</para></footnote>, doing a backup copy of each file before replacing.</para> + <para>If you want to start searching, you can put a string in the search box and press <guibutton>Search Now</guibutton>, otherwise leave the search box empty and press <guibutton>Search Later</guibutton>.</para> + </sect2> + + <sect2 id="kfilereplace-the-project-dialog-advanced-page"> + <title>The <guilabel>Advanced</guilabel> Tab</title> + <screenshot> + <screeninfo>&kfilereplace; Advanced tab</screeninfo> + <mediaobject> + <imageobject> + <imagedata fileref="projectdialog_main_window_2.png" format="PNG"/> + </imageobject> + <textobject> + <phrase>&kfilereplace; Advanced tab</phrase> + </textobject> + </mediaobject> + </screenshot> + <para>The <guilabel>Advanced</guilabel> tab allows you to set up some useful options to restrict the search to a subset of your target file tree. If you want to run &kfilereplace; only over files that have a size in the range of 10KB - 100KB, then you could use the size options. There is also a date option that restricts the search in a temporal range, and a last option that allows you to only search for files owned (or not owned) by a particular user (this may be more useful to the system administrators).</para> + </sect2> +</sect1> + +<sect1 id="kfilereplace-the-options-dialog"> + <title>The <guilabel>Options</guilabel> Dialog</title> + <para>This dialog contains options that are in the toolbar and extra options that may come in handy in some situations. You can invoke it selecting <menuchoice><guimenu>Settings</guimenu><guimenuitem>Configure KFileReplace...</guimenuitem></menuchoice> in the main menu. + </para> + <sect2 id="kfilereplace-the-options-dialog-general-page"> + <title>General options</title> + <para>These options have been presented in the <link linkend="kfilereplace-the-toolbar">Toolbar</link> section. + <screenshot> + <screeninfo>The General tab of the Options window</screeninfo> + <mediaobject> + <imageobject> + <imagedata fileref="optionsdialog_main_window_1.png" format="PNG"/> + </imageobject> + <textobject> + <phrase>The General tab of the Options window</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + </sect2> + <sect2 id="kfilereplace-the-options-dialog-advanced-page"> + <title>Advanced options</title> + <para> + <screenshot> + <screeninfo>The Advanced tab of the Options window</screeninfo> + <mediaobject> + <imageobject> + <imagedata fileref="optionsdialog_main_window_2.png" format="PNG"/> + </imageobject> + <textobject> + <phrase>The Advanced tab of the Options window</phrase> + </textobject> + </mediaobject> + </screenshot> + <segmentedlist> + <segtitle>Do not show files if no strings are found or replaced</segtitle> + <segtitle>When searching, stop on first string found</segtitle> + <segtitle>Follow symbolic links</segtitle> + <segtitle>Ignore hidden files and directories</segtitle> + <seglistitem> + <seg>shows only the files that match some of your strings. This will speed up the search.</seg> + <seg>&kfilereplace; will stop when it finds a matching string, and will continue to search for other strings or, if you search for only one string, it will continue with the next file.</seg> + <seg>if a file is a link to another one, then search in the real file.</seg> + <seg>if hidden files or folders are encountered, ignore them.</seg> + </seglistitem> + </segmentedlist> + </para> + </sect2> +</sect1> +<sect1 id="kfilereplace-the-add-dialog"> + <title>The <guilabel>Add Strings</guilabel> Dialog</title> + <screenshot> + <screeninfo>&kfilereplace;'s Add Strings dialog</screeninfo> + <mediaobject> + <imageobject> + <imagedata fileref="addstringsdialog_window.png" format="PNG"/> + </imageobject> + <textobject> + <phrase>&kfilereplace;'s Add Strings dialog</phrase> + </textobject> + </mediaobject> + </screenshot> + <para>This dialog is used to insert and edit a list of strings. You just have to insert either a search-only or a search-and-replace list, and then with the two mini-editors you will introduce your text. The arrow buttons allow you to add pairs of strings or delete them. When you finish, click <guibutton>OK</guibutton>.</para> +</sect1> +</chapter> + +<chapter id="kfilereplace-features"> + <title>&kfilereplace; features</title> + <para>This chapter provides informations about some useful capabilities of &kfilereplace;.</para> + <sect1 id="kfilereplace-the-kfr-file"> + <title>How to save your string list</title> + <para>When you want to reuse a list of strings you can save it in a <literal role="extension">xml</literal> file. To do this select from the menubar <menuchoice><guimenu>Search/Replace</guimenu><guisubmenu>Strings</guisubmenu><guimenuitem>Save Strings List to File</guimenuitem></menuchoice>. When you save a list, a simple <literal role="extension">xml</literal> file with extension <literal role="extension">kfr</literal> is created. To load a <literal role="extension">kfr</literal> file select from menubar <menuchoice><guimenu>Search/Replace</guimenu><guisubmenu>Strings</guisubmenu><guimenuitem>Load Strings List from File</guimenuitem></menuchoice>. The actual file looks like this:</para> + <screen> +<?xml version="1.0" ?> +<kfr> + <mode search="false"/> + <replacement> + <oldstring><![CDATA[SEARCH_STRING_1]] ></oldstring> + <newstring><![CDATA[REPLACE_STRING_1]]></newstring> + </replacement> + <replacement> + <oldstring><![CDATA[SEARCH_STRING_2]]></oldstring> + <newstring><![CDATA[REPLACE_STRING_2]]></newstring> + </replacement> + + + <replacement> + <oldstring><![CDATA[SEARCH_STRING_N]]></oldstring> + <newstring><![CDATA[REPLACE_STRING_N]]></newstring> + </replacement> + +</kfr></screen> + + <para>If you are using a previous format, you can update by hand your file by simply modifying it according to the above scheme. Alternatively, you can load the file written in the old format and save it again with &kfilereplace; in the way explained before.</para> +</sect1> + +<sect1 id="kfilereplace-the-report-file"> + <title>How to Create a Simple Report</title> + <para>You can create a report by choosing <menuchoice><guimenu>Search/Replace</guimenu><guisubmenu>Results</guisubmenu><guimenuitem>Create Report File</guimenuitem></menuchoice> from the main menu. A report is a folder containing an <literal role="extension">xml</literal> and a <literal role="extension">css</literal> file. Reports may be useful to maintain a simple log of your operations. + <screenshot> + <screeninfo>&kfilereplace;'s Report feature</screeninfo> + <mediaobject> + <imageobject> + <imagedata fileref="report_example.png" format="PNG"/> + </imageobject> + <imageobject> + <imagedata fileref="report_example.eps" format="EPS"/> + </imageobject> + <textobject> + <phrase>&kfilereplace;'s Report feature</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> +</sect1> + +<sect1 id="kfilereplace-QT-regexp"> + <title>How to use Regular Expressions</title> + <para> + If you want search for every string that starts with <quote>x</quote>, <quote>ht</quote> or <quote>u</quote> and ends with <quote>ml</quote>, you can write a regular expression like this: <userinput>(x|ht|u)ml</userinput>. Insert this expression in the search editor, click <guibutton>OK</guibutton>, and enable regular expressions by toggling the <link linkend="kfilereplace-the-toolbar"><guibutton>Regular Expression</guibutton> button</link>. Please note that using regular expressions lets you to make very complicated searches, but the cost could be a performance degradation. Regular expression can be very tricky, and it is often the case that <quote>if you want to solve a problem with a regular expression, you have two problems</quote>.</para> +</sect1> + +<sect1 id="kfilereplace-backup-file"> + <title>How to Protect Original Files</title> + <para>If you do not want to lose your original files, you can make a copy of them before replacing the strings. After inserting your strings, and before starting the replacement process, you have just to toggle the <link linkend="kfilereplace-the-toolbar"><guiicon>Backup</guiicon> button</link>. If you want to customize the extension of the backup files open the <link linkend="kfilereplace-the-options-dialog"><guilabel>Options</guilabel> dialog</link>. + </para> +</sect1> + +<sect1 id="kfilereplace-open-file"> + <title>How to Open a File</title> + <para>If you want to open a file that matches some of your strings, you have to select a line in the result view and click on it with the &RMB;. A context menu will appear from which you can open the file. If you use &kfilereplace; embedded in &quantaplus;, you can open the file directly in it at the specified line and column.</para> +</sect1> + +<sect1 id="kfilereplace-commands"> + <title>Commands</title> + <para>Suppose you want replace the phrase <quote>Alice's adventures in Wonderland</quote> with the <ulink url="http://www.textlibrary.com/download/alice-wo.txt">entire file that contains Carroll's novel</ulink>. Probably you don't want to do this by hand, what you need is a command that will do it for you. Click the <link linkend="kfilereplace-the-toolbar"><guiicon>Add</guiicon></link> button, select <guilabel>Search and Replace Mode</guilabel> and insert the following strings: <userinput>Alice's adventure in Wonderland</userinput> in the search mini-editor and the string <userinput>[$loadfile:<replaceable>/the-path-to-my-folder/my-folder/my-file</replaceable>$]</userinput> in the replacement mini-editor. Click <guibutton>OK</guibutton>. When you come back to the &kfilereplace; main window, toggle the <link linkend="kfilereplace-the-toolbar">Command action</link> button that enables the commands, and start the replacement process. There are also other commands, see <xref linkend="available-commands"/> for a list of all of them.</para> +</sect1> +</chapter> + +<chapter id="credits"> +<title>Credits and License</title> + +<para>&kfilereplace;. Program copyright 1999 by François Dupoux <email>dupoux@dupoux.com</email>, 2003 Andras Mantia <email>amantia@kde.org</email>, 2004 Emiliano Gulmini <email>emi_barbarossa@yahoo.it</email> +</para> + +<variablelist> + <title>The &kfilereplace; authors and maintainers:</title> + <varlistentry> + <term>François Dupoux <email>dupoux@dupoux.com</email></term> + <listitem><para>Original author</para></listitem> + </varlistentry> + <varlistentry> + <term>Andras Mantia <email>amantia@kde.org</email></term> + <listitem><para>Shell autor, KPart creator, co-maintainer</para></listitem> + </varlistentry> + <varlistentry> + <term>Emiliano Gulmini <email>emi_barbarossa@yahoo.it</email></term> + <listitem><para>Current maintainer, code cleaner & rewriter</para></listitem> + </varlistentry> +</variablelist> + +<para> +Documentation Copyright © 2004 Emiliano Gulmini <email>emi_barbarossa@yahoo.it</email> +</para> + +<!-- TRANS:CREDIT_FOR_TRANSLATORS --> + +&underFDL; <!-- FDL: do not remove --> +&underGPL; <!-- GPL License --> + +</chapter> + +<appendix id="installation"> +<title>Installation</title> + +<sect1 id="getting-kfilereplace"> +<title>How to install &kfilereplace;</title> +<para> +&kfilereplace; is currently part of &kdewebdev; package, so, in order to install it, you have to get a copy of &kdewebdev;. Note that if you are using a &kde; installation provided by your OS vendor, probably you already have &kdewebdev; installed; in this case, you can use &kfilereplace; either by opening &quantaplus; Web editor, or by calling it directly (unless you have an old &kde; version). Else you can download the &kdewebdev; package from the Internet: please refer to <ulink url="http://kdewebdev.org">&kdewebdev; home site</ulink> for more information. +<!--&install.intro.documentation;--> +</para> + +</sect1> + +<sect1 id="requirements"> + <title>Requirements</title> + <para>In order to use the command <link linkend="available-commands">[$mathexp:<replaceable>some_math_expression</replaceable>$]</link> you should install the &bc; mathematical utility (version 1.06 or newer) written by Philip A. Nelson (<email>philnelson@acm.org</email>).</para> +</sect1> + +</appendix> + +<appendix id="available-commands"> + <title>&kfilereplace; commands</title> + <para> + <segmentedlist> + <segtitle>[$datetime:iso$]</segtitle> + <segtitle>[$datetime:local$]</segtitle> + <segtitle>[$user:uid$]</segtitle> + <segtitle>[$user:gid$]</segtitle> + <segtitle>[$user:loginname$]</segtitle> + <segtitle>[$user:fullname$]</segtitle> + <segtitle>[$user:homedir$]</segtitle> + <segtitle>[$user:shell$]</segtitle> + <segtitle>[$loadfile:<replaceable>/my-path/my-directory/my-file</replaceable>$]</segtitle> + <segtitle>[$empty:$]</segtitle> + <segtitle>[$random:<replaceable>AN_INTEGER_NUMBER</replaceable>$]</segtitle> + <segtitle>[$random:$]</segtitle> + <segtitle>[$mathexp:<replaceable>bc-expression</replaceable>$]</segtitle> + <seglistitem> + <seg>this command return the current date and time in Qt ISO format.</seg> + <seg>like above but in local format.</seg> + <seg>return the UID of the current user.</seg> + <seg>return the GID of the current user.</seg> + <seg>return the login name of the current user.</seg> + <seg>return the full name of the current user.</seg> + <seg>return the home directory of the current user.</seg> + <seg>return the shell of the current user.</seg> + <seg>return the content of the <emphasis>my-file</emphasis> file.</seg> + <seg>return the empty string.</seg> + <seg>return a random number string using <emphasis>AN_INTEGER_NUMBER</emphasis> as the initial seed.</seg> + <seg>like above, but without initial seed.</seg> + <seg>return the result of a &bc; v1.06 mathematical expression.</seg> + </seglistitem> + </segmentedlist> + </para> +</appendix> + +&documentation.index; +</book> + diff --git a/doc/kfilereplace/invert.png b/doc/kfilereplace/invert.png Binary files differnew file mode 100644 index 00000000..f3ab8be6 --- /dev/null +++ b/doc/kfilereplace/invert.png diff --git a/doc/kfilereplace/kfr_standalone_main_window_1.png b/doc/kfilereplace/kfr_standalone_main_window_1.png Binary files differnew file mode 100644 index 00000000..3e4f85db --- /dev/null +++ b/doc/kfilereplace/kfr_standalone_main_window_1.png diff --git a/doc/kfilereplace/optionsdialog_main_window_1.png b/doc/kfilereplace/optionsdialog_main_window_1.png Binary files differnew file mode 100644 index 00000000..959c3977 --- /dev/null +++ b/doc/kfilereplace/optionsdialog_main_window_1.png diff --git a/doc/kfilereplace/optionsdialog_main_window_2.png b/doc/kfilereplace/optionsdialog_main_window_2.png Binary files differnew file mode 100644 index 00000000..3213b6ff --- /dev/null +++ b/doc/kfilereplace/optionsdialog_main_window_2.png diff --git a/doc/kfilereplace/project.png b/doc/kfilereplace/project.png Binary files differnew file mode 100644 index 00000000..607e6aa8 --- /dev/null +++ b/doc/kfilereplace/project.png diff --git a/doc/kfilereplace/projectdialog_main_window_1.png b/doc/kfilereplace/projectdialog_main_window_1.png Binary files differnew file mode 100644 index 00000000..58c622f0 --- /dev/null +++ b/doc/kfilereplace/projectdialog_main_window_1.png diff --git a/doc/kfilereplace/projectdialog_main_window_2.png b/doc/kfilereplace/projectdialog_main_window_2.png Binary files differnew file mode 100644 index 00000000..6fe2cb98 --- /dev/null +++ b/doc/kfilereplace/projectdialog_main_window_2.png diff --git a/doc/kfilereplace/recursive_option.png b/doc/kfilereplace/recursive_option.png Binary files differnew file mode 100644 index 00000000..bc98df90 --- /dev/null +++ b/doc/kfilereplace/recursive_option.png diff --git a/doc/kfilereplace/regularexpression_option.png b/doc/kfilereplace/regularexpression_option.png Binary files differnew file mode 100644 index 00000000..f74c7b56 --- /dev/null +++ b/doc/kfilereplace/regularexpression_option.png diff --git a/doc/kfilereplace/report_example.png b/doc/kfilereplace/report_example.png Binary files differnew file mode 100644 index 00000000..359de5ab --- /dev/null +++ b/doc/kfilereplace/report_example.png diff --git a/doc/kfilereplace/results_view.png b/doc/kfilereplace/results_view.png Binary files differnew file mode 100644 index 00000000..8f91469d --- /dev/null +++ b/doc/kfilereplace/results_view.png diff --git a/doc/kfilereplace/stop.png b/doc/kfilereplace/stop.png Binary files differnew file mode 100644 index 00000000..73b27d9f --- /dev/null +++ b/doc/kfilereplace/stop.png diff --git a/doc/kfilereplace/strings_view.png b/doc/kfilereplace/strings_view.png Binary files differnew file mode 100644 index 00000000..7396e53c --- /dev/null +++ b/doc/kfilereplace/strings_view.png diff --git a/doc/kfilereplace/toolbar.png b/doc/kfilereplace/toolbar.png Binary files differnew file mode 100644 index 00000000..84e699eb --- /dev/null +++ b/doc/kfilereplace/toolbar.png diff --git a/doc/kfilereplace/unsortedList.png b/doc/kfilereplace/unsortedList.png Binary files differnew file mode 100644 index 00000000..bed281f1 --- /dev/null +++ b/doc/kfilereplace/unsortedList.png diff --git a/doc/klinkstatus/Makefile.am b/doc/klinkstatus/Makefile.am new file mode 100644 index 00000000..e97402c7 --- /dev/null +++ b/doc/klinkstatus/Makefile.am @@ -0,0 +1,2 @@ +KDE_DOCS = AUTO +KDE_LANG = en diff --git a/doc/klinkstatus/index.docbook b/doc/klinkstatus/index.docbook new file mode 100644 index 00000000..33dbbd7d --- /dev/null +++ b/doc/klinkstatus/index.docbook @@ -0,0 +1,498 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY klinkstatus "<application>KLinkStatus</application>"> + <!ENTITY kappname "&klinkstatus;"> + <!ENTITY package "kdewebdev"> + <!ENTITY % addindex "IGNORE"> + <!ENTITY % English "INCLUDE"><!-- change language only here --> +]> +<!-- kdoctemplate v0.8 October 1 1999 + Minor update to "Credits and Licenses" section on August 24, 2000 + Removed "Revision history" section on 22 January 2001 + Changed to Installation/Help menu entities 18 October 2001 + Other minor cleanup and changes 18 October 2001 --> + + +<!-- +This template was designed by: David Rugge davidrugge@mindspring.com +with lots of help from: Eric Bischoff ebisch@cybercable.tm.fr +and Frederik Fouvry fouvry@sfs.nphil.uni-tuebingen.de +of the KDE DocBook team. + +You may freely use this template for writing any sort of KDE documentation. +If you have any changes or improvements, please let us know. + +Remember: +- in XML, the case of the <tags> and attributes is relevant ; +- also, quote all attributes. + +Please don't forget to remove all these comments in your final documentation, +thanks ;-). +--> + +<!-- ................................................................ --> + +<!-- The language must NOT be changed here. --> + +<book lang="&language;"> + +<!-- This header contains all of the meta-information for the document such +as Authors, publish date, the abstract, and Keywords --> + +<bookinfo> +<title>The &klinkstatus; Handbook</title> + +<authorgroup> +<author> +<firstname>Paulo</firstname> +<surname>Moura Guedes</surname> +<affiliation> +<address><email>moura@kdewebdev.org</email></address> +</affiliation> +</author> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> + +<copyright> +<year>2004</year> +<holder>Paulo Moura Guedes</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>2004-04-29</date> +<releaseinfo>0.1.3</releaseinfo> + +<!-- Abstract about this handbook --> + +<abstract> +<para> +&klinkstatus; is a link checker for &kde;. +</para> +</abstract> + +<!-- This is a set of Keywords for indexing by search engines. +Please at least include KDE, the KDE package it is in, the name + of your application, and a few relevant keywords. --> + +<keywordset> +<keyword>KDE</keyword> +<keyword>KLinkStatus</keyword> +<keyword>link checker</keyword> +<keyword>validation</keyword> +</keywordset> + +</bookinfo> + + +<chapter id="introduction"> +<title>Introduction</title> + +<para>&klinkstatus; is a link checker for &kde;. +It allows you to search internal and external links in your entire web site, +just a single page and choose the depth to search. +You can also check local files, ftp, fish, &etc;, as &klinkstatus; uses KIO. +For performance, links can be checked simultaneously. + +Please report any problems or feature requests to http://linkstatus.paradigma.co.pt/bugs/. +</para> +</chapter> + +<chapter id="using-klinkstatus"> +<title>Using &klinkstatus;</title> + +<para> + +<!-- Note that all graphics should be in .png format. Use no gifs because of +patent issues. --> + +<screenshot> +<screeninfo>Here's a screenshot of &klinkstatus;</screeninfo> + <mediaobject> + <imageobject> + <imagedata fileref="screenshot.png" format="PNG"/> + </imageobject> + <imageobject> + <imagedata fileref="screenshot.eps" format="EPS"/> + </imageobject> + <textobject> + <phrase>Screenshot</phrase> + </textobject> + </mediaobject> +</screenshot> +</para> + +</chapter> + +<chapter id="commands"> +<title>Command Reference</title> + +<sect1 id="klinkstatus-mainwindow"> +<title>The main &klinkstatus; window</title> + +<sect2> +<title>The File Menu</title> +<para> +<variablelist> +<varlistentry> +<term><menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo> +</shortcut> +<guimenu>File</guimenu> +<guimenuitem>New Link Check</guimenuitem> +</menuchoice></term> +<listitem><para><action>Creates a new session, if none is empty</action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>O</keycap></keycombo> +</shortcut> +<guimenu>File</guimenu> +<guimenuitem>Open URL</guimenuitem> +</menuchoice></term> +<listitem><para><action>Opens a &URL;</action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>W</keycap></keycombo> +</shortcut> +<guimenu>File</guimenu> +<guimenuitem>Close Tab</guimenuitem> +</menuchoice></term> +<listitem><para><action>Close the current tab.</action></para></listitem> +</varlistentry> +</variablelist> +</para> + +</sect2> + +<sect2> +<title>The <guimenu>Help</guimenu> Menu</title> + +<!-- Assuming you have a standard help menu (help, what's this, about --> +<!-- &klinkstatus;, about &kde;) then the documentation is already written. --> +<!-- The following entity is valid anywhere that a variablelist is --> +<!-- valid. --> + +&help.menu.documentation; + +</sect2> + +</sect1> +</chapter> + +<!-- +<chapter id="developers"> +<title>Developer's Guide to &klinkstatus;</title> +--> +<!-- (OPTIONAL) A Programming/Scripting reference chapter should be +used for apps that use plugins or that provide their own scripting hooks +and/or development libraries. --> +<!-- +<para>FILL_ME</para> +--> +<!-- Use refentries to describe APIs. Refentries are fairly complicated and you +should consult the docbook reference for further details. The example below was +taken from that reference and shortened a bit for readability. + +<refentry id="re-1007-unmanagechildren-1"> +<refmeta> +<refentrytitle>XtUnmanageChildren</refentrytitle> +<refmiscinfo>Xt - Geometry Management</refmiscinfo> +</refmeta> +<refnamediv> +<refname>XtUnmanageChildren +</refname> +<refpurpose>remove a list of children from a parent widget's managed +list. +<indexterm id="ix-1007-unmanagechildren-1"><primary>widgets</primary><secondary>removing</secondary></indexterm> +<indexterm id="ix-1007-unmanagechildren-2"><primary>XtUnmanageChildren</primary></indexterm> +</refpurpose> + +</refnamediv> +<refsynopsisdiv> +<refsynopsisdivinfo> +<date>4 March 1996</date> +</refsynopsisdivinfo> +<synopsis> +void XtUnmanageChildren(<replaceable class="parameter">children</replaceable>, <replaceable class="parameter">num_children</replaceable>) + WidgetList <replaceable class="parameter">children</replaceable>; + Cardinal <replaceable class="parameter">num_children</replaceable>; +</synopsis> + +<refsect2 id="r2-1007-unmanagechildren-1"> +<title>Inputs</title> +<variablelist> +<varlistentry> +<term><replaceable class="parameter">children</replaceable> +</term> +<listitem> +<para>Specifies an array of child widgets. Each child must be of +class RectObj or any subclass thereof. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term><replaceable class="parameter">num_children</replaceable> +</term> +<listitem> +<para>Specifies the number of elements in <replaceable class="parameter">children</replaceable>. +</para> +</listitem> +</varlistentry> +</variablelist> +</refsect2></refsynopsisdiv> + +<refsect1 id="r1-1007-unmanagechildren-1"> +<title>Description +</title> +<para><function>XtUnmanageChildren()</function> unmaps the specified widgets +and removes them from their parent's geometry management. +The widgets will disappear from the screen, and (depending +on its parent) may no longer have screen space allocated for +them. +</para> +<para>Each of the widgets in the <replaceable class="parameter">children</replaceable> array must have +the same parent. +</para> +<para>See the “Algorithm” section below for full details of the +widget unmanagement procedure. +</para> +</refsect1> + +<refsect1 id="r1-1007-unmanagechildren-2"> +<title>Usage</title> +<para>Unmanaging widgets is the usual method for temporarily +making them invisible. They can be re-managed with +<function>XtManageChildren()</function>. +</para> +<para>You can unmap a widget, but leave it under geometry +management by calling <function>XtUnmapWidget()</function>. You can +destroy a widget's window without destroying the widget by +calling <function>XtUnrealizeWidget()</function>. You can destroy a +widget completely with <function>XtDestroyWidget()</function>. +</para> +<para>If you are only going to unmanage a single widget, it is +more convenient to call <function>XtUnmanageChild()</function>. It is +often more convenient to call <function>XtUnmanageChild()</function> +several times than it is to declare and initialize an array +of widgets to pass to <function>XtUnmanageChildren()</function>. Calling +<function>XtUnmanageChildren()</function> is more efficient, however, +because it only calls the parent's <function>change_managed()</function> +method once. +</para> +</refsect1> + +<refsect1 id="r1-1007-unmanagechildren-3"> +<title>Algorithm +</title> +<para><function>XtUnmanageChildren()</function> performs the following: +</para> +<variablelist> +<varlistentry> +<term>- +</term> +<listitem> +<para>Ignores the child if it already is unmanaged or is being +destroyed. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term>- +</term> +<listitem> +<para>Otherwise, if the child is realized, it makes it nonvisible +by unmapping it. +</para> +</listitem> +</varlistentry> +</variablelist> +<para>FILL_ME +</para> +</refsect1> + +<refsect1 id="r1-1007-unmanagechildren-4"> +<title>Structures</title> +<para>The <type>WidgetList</type> type is simply an array of widgets: +</para> +<screen id="sc-1007-unmanagechildren-1">typedef Widget *WidgetList; +</screen> +</refsect1> +</refentry> + +</chapter> +--> + +<!-- +<chapter id="faq"> +<title>Questions and Answers</title> +--> +<!-- (OPTIONAL but recommended) This chapter should include all of the silly +(and not-so-silly) newbie questions that fill up your mailbox. This chapter +should be reserved for BRIEF questions and answers! If one question uses more +than a page or so then it should probably be part of the +"Using this Application" chapter instead. You should use links to +cross-reference questions to the parts of your documentation that answer them. +This is also a great place to provide pointers to other FAQ's if your users +must do some complicated configuration on other programs in order for your +application work. --> +<!-- +&reporting.bugs; +&updating.documentation; + + +<qandaset id="faqlist"> +<qandaentry> +- +<question> +<para>My Mouse doesn't work. How do I quit &klinkstatus;?</para> +</question> +<answer> +<para>You silly goose! Check out the <link linkend="commands">Commands +Section</link> for the answer.</para> +</answer> +</qandaentry> +<qandaentry> +<question> +<para>Why am I unable to twiddle my documents?</para> +</question> +<answer> +<para>You can only twiddle your documents if you have the foobar.lib +installed.</para> +</answer> + +</qandaentry> +</qandaset> + +</chapter> +--> + +<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> +&klinkstatus; +</para> +<para> +Program Copyright © 2004 Paulo Moura Guedes <email>pmg@netcabo.pt</email> +</para> +<para> +Documentation Copyright © 2004 Paulo Moura Guedes <email>pmg@netcabo.pt</email> +</para> + +<!-- TRANS:CREDIT_FOR_TRANSLATORS --> + +&underFDL; <!-- FDL: do not remove --> +&underGPL; <!-- GPL License --> + +</chapter> + +<appendix id="installation"> +<title>Installation</title> + +<sect1 id="getting-klinkstatus"> +<title>How to obtain &klinkstatus;</title> + +<!-- This first entity contains boiler plate for applications that are +part of KDE CVS. You should remove it if you are releasing your +application --> + +<!--&install.intro.documentation;--> +<para>http://kde-apps.org +</para> + +</sect1> + + +<!-- +<sect1 id="requirements"> +<title>Requirements</title> + +List any special requirements for your application here. This should include: +.Libraries or other software that is not included in kdesupport, +kdelibs, or kdebase. +.Hardware requirements like amount of RAM, disk space, graphics card +capabilities, screen resolution, special expansion cards, etc. +.Operating systems the app will run on. If your app is designed only for a +specific OS, (you wrote a graphical LILO configurator for example) put this +information here. +--> +<!-- +<para> +In order to successfully use &klinkstatus;, you need &kde; 1.1. Foobar.lib is +required in order to support the advanced &klinkstatus; features. &klinkstatus; uses +about 5 megs of memory to run, but this may vary depending on your +platform and configuration. +</para> + +<para> +All required libraries as well as &klinkstatus; itself can be found +on <ulink url="ftp://ftp.klinkstatus.org">The &klinkstatus; home page</ulink>. +</para> +--> +<!-- For a list of updates, you may refer to the application web site +or the ChangeLog file, or ... --> +<!-- +<para> +You can find a list of changes at <ulink +url="http://apps.kde.org/klinkstatus">http://apps.kde.org/klinkstatus</ulink>. +</para> +</sect1> +--> +<sect1 id="compilation"> +<title>Compilation and Installation</title> + +<!-- This entity contains the boilerplate text for standard --> +<!-- compilation instructions. If your application requires any --> +<!-- special handling, remove it, and replace with your own text. --> + +&install.compile.documentation; + +</sect1> +<!-- +<sect1 id="configuration"> +<title>Configuration</title> + +<para>Don't forget to tell your system to start the <filename>dtd</filename> +dicer-toaster daemon first, or &klinkstatus; won't work !</para> + +</sect1> +--> +</appendix> + +&documentation.index; +</book> + +<!-- +Local Variables: +mode: sgml +sgml-minimize-attributes:nil +sgml-general-insert-case:lower +sgml-indent-step:0 +sgml-indent-data:nil +End: + +vim:tabstop=2:shiftwidth=2:expandtab +--> + diff --git a/doc/klinkstatus/screenshot.png b/doc/klinkstatus/screenshot.png Binary files differnew file mode 100644 index 00000000..9c3c7bf0 --- /dev/null +++ b/doc/klinkstatus/screenshot.png diff --git a/doc/kommander/Makefile.am b/doc/kommander/Makefile.am new file mode 100644 index 00000000..41691557 --- /dev/null +++ b/doc/kommander/Makefile.am @@ -0,0 +1,3 @@ +KDE_LANG = en +KDE_DOCS = AUTO + diff --git a/doc/kommander/basics.docbook b/doc/kommander/basics.docbook new file mode 100644 index 00000000..5d7dc2cf --- /dev/null +++ b/doc/kommander/basics.docbook @@ -0,0 +1,135 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<chapter id="kmdr-basics"> +<chapterinfo> +<title>&kommander; Basics</title> +<authorgroup> +<author> +<firstname>Tamara</firstname> +<surname>King</surname> +<affiliation><address> +<email>tik@acm.org</email> +</address></affiliation> +</author> +<author> +<firstname>Eric</firstname> +<surname>Laffoon</surname> +<affiliation><address> +<email>sequitur@kde.org</email> +</address></affiliation> +</author> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> +</chapterinfo> + +<title>&kommander; Basics</title> + +<!-- This chapter should tell the user how to use your app. You should use as +many sections (Chapter, Sect1, Sect3, etc...) as is necessary to fully document +your application. --> + +<sect1 id="concepts"> +<title>Concepts</title> + + +<para> +&kommander; was originally designed around a simple concept that has proven somewhat revolutionairy among visual design tools. Typically these tools allow you to create dialogs and possibly mainwindow interfaces. Of course a mainwindow interface is the main program window which typically has menus, toolbars, statusbar and the application area. Dialogs are child windows which typically don't have menus and are so named because their purpose is to <quote>have a dialog</quote> or exchange information between you and the main application. The elements on a dialog are called <quote>widgets</quote> and you hook your program into these widgets. &kommander; is different because it is inherently nonprogrammatic here. It uses the concept of associating text with the widgets on the dialog. Initially this was called <quote>Associated Text</quote> but now it is called <quote>&kommander; Text</quote>. Widgets on &kommander; dialogs can include the content of other widgets by reference and a widget can reference its own content by use of a <quote>Special</quote> that looks like this, @widgetText. Specials are commands with special meaning in &kommander;. So if you created a dialog with two LineEdit widgets and named the first <quote>FirstName</quote> and the second <quote>LastName</quote> you could create a button and set its &kommander; Text to <quote>My name is @FirstName @LastName</quote>. You would need to set @widgetText in the first and last name widgets. Remember? We need to tell &kommander; to reference the text in them. You could run this from a <application>Konsole</application> and it would output the string for you. So it would reference the first name like so: @FirstName -> get the widget named FirstName(@FirstName) -> @widgetText -> get the contents of the LineEdit widget. So in this case @FirstName returns <quote>Eric</quote>: @FirstName -> @widgetText -> <quote>Eric</quote>. +</para> + +<para> +That is the simple core of &kommander;. What you can do with this is where it gets interesting. First of all it is worth noting that compared to the normal approach of a language based tool &kommander; does not need programming statements to define these operations. This makes &kommander; quick for developers. For end users it's much simpler than learning language constructs. For everyone it means you can focus on your task instead of having your reference material eternally at hand. Initially when people are exposed to a tool like &kommander; the first question is <quote>Where could I find a use for this cool tool?</quote> As it turns out, manipulating strings is used just about anywhere you look. +</para> + +<para> +So what can &kommander; do? Here is the list distilled to the base operations. +&kommander; can: +</para> + +<orderedlist> +<listitem><para>Pass strings to the calling program via stdout.</para></listitem> +<listitem><para>Call executable programs.</para></listitem> +<listitem><para>Use &DCOP; to interact with &kde; programs</para></listitem> +</orderedlist> + +<para> +If you're not a programmer you may want that in laymans terms. In number one, if you launch &kommander; from a console then the console is the calling program. There is a parent child relationship there. Sending a message to console is done with the standard output (stdout) of the child program, so named because there is also error output. This is interesting because some programs, like &quantaplus;, use stdout to receive information from programs they launch. So &kommander; dialogs can output their text strings directly into &quantaplus;'s editor if they are called from &quantaplus;. This means &kommander; dialogs can be useful extentions to programs. +</para> + +<para> +The second case is calling an executable. Any program that runs on your system is an executable. Even a script program is run by the script's interpreter so technically it's executed too. &kommander; can run commands just like the console even if you run it from the menu. So for instance if you wanted it to open &GIMP; you would have a button derive the string <quote>gimp</quote> and put it in a special like so: @exec(gimp). Just like that you will see &GIMP; open when using this. You could also exec <quote>ls -l</quote> too but you would only see the output if you were running from a console. +</para> + +<para> +The third case is very interesting indeed. &DCOP; is short for &kde;'s <emphasis>D</emphasis>esktop <emphasis>CO</emphasis>mmunication <emphasis>P</emphasis>rotocol and it is very powerful. Go ahead and run the <application>kdcop</application> program and have a look around. You'll quickly see that any &kde; application that is built to standards has things happening in &DCOP; and the well designed ones have a lot going on. With &DCOP; you can query information of all sorts as well as set widget values and more. There is a section on using &DCOP; in this manual. &kommander; can send &DCOP; to any &kde; program as well as be controlled by &DCOP;. In fact you can send &DCOP; from the command line to any &kde; program. So what's the big deal? The deal is, if you want to do any volume of commands you begin to realized that command line &DCOP; is adequate for short commands, but it can cause delays for instance being called from a loop several hundred times. This is why &kommander; has a @dcop special, because this is roughly 1000 times faster. Because &kommander; can send and receive &DCOP;, &DCOP; can be used to script &kommander;. That is why we also have a local &DCOP; special, @ldcop, that allows you to type a lot less to issue a command. +</para> + +<para> +Is that all the core concepts in &kommander;? No, but it should help you to make sense of how it works so that what is covered does not look like a foreign language to you. There are a few more. Signals and slots are how &kommander; handles events. An event in a program basically means <quote>something happened</quote> like a widget was created or had its text changed. These changes <quote>emit signals</quote> and you can connect those signals to a receiving slot which will then do something when the event happens. One use of this in &kommander; is the sibling of &kommander; Text, <quote>Population Text</quote>. Population Text will populate a widget when called. Just like &kommander; Text, Population Text can contain text strings or scripts. +</para> + +<para> +That should give you the base concepts to begin using &kommander;. We try to keep the number of Specials low and we use &DCOP; a lot. The idea is that we want to keep the power of &kommander; as consistent and streamlined as possible. You will find that you can incorporate any scripting language into &kommander; where ever you need to and even multiple scripting languages in a dialog. The rest of the information in this document assumes you are familiar with the concepts and terms presented here. The examples and tutorials are also very useful to understanding what can be done with &kommander;. +</para> +</sect1> + +&editor; + +<sect1 id="executor"> +<title>The Executor</title> + +<para> +The executor, called <application>kmdr-executor</application>, runs &kommander; scripts. It loads <literal role="extension">.kmdr</literal> files and dynamically produces a fully functional dialog. +<warning><para>Starting with version 1.3, the executor warns if the script file is not executable. This is an extra security feature that tries to make the user think about the possible bad consequences of running a script from untrusted source. The user can confirm to run the dialog or if he trusts the source, can make the script executable and get rid of the warning completely.</para></warning> +<note><para>Version 1.3 supports the <emphasis>#!/path/kmdr-executor</emphasis> shebang in the beginning of the .kmdr script files (replace path with path to the +Such files if they are made executable can be run from command line just like any executable application, without the need to pass the script to kmdr-executor as argument.</para> +<para> +Remember, that once you add the shebang at the beginning of the file, the dialog cannot be run or edited with older versions of &kommander;.</para> +<para>The recommended usage is +<screen> +#!/usr/bin/kommander +</screen> +and create a symlink from kmdr-executor to /usr/bin/kommander.</para> +<para>The shebang can be added to a dialog directly from the editor, by modifying the <guilabel>useShebang</guilabel> and <guilabel>shebang</guilabel> properties for the main dialog.</para> + +</note> +</para> + +<sect2 id="executor-for-programmers"> +<title>Executor for Programmers</title> + +<para> +C++ developers can easily use the Instance class in their C++ programs so that the execution functionality is embedded in the their application obsoleting the need for running the external executor program. For standard dialog the dialog creation overhead is minimal but the creation of the &kde; application may delay the dialog for around a second. +</para> +<para>Another approach is to use the <emphasis>kommander_part</emphasis> KReadOnlyPart. This KPart can load and execute any &kommander; dialog inside another KDE application.</para> +</sect2> + +</sect1> + +<sect1 id="create-dialog"> +<title>Creating a Dialog</title> +<para> +To learn about how to create a dialog, add widgets, use layouts, modify widgets properties, please consult the &Qt; Designer (version 3.x) manual. You can access it by running <command>designer</command> from the command line or from your desktop menu. +</para> +<para> +The extra functionality that &kommander; offers is the <guilabel>Kommander Text</guilabel> associated with each widget. These texts are the executable (script) part of the dialog, written either in a script language (with the old &kommander; syntax) or using the internal &kommander; language, the so called new parser. +</para> +<para>To learn more about the language syntax, commands and how to use the text editor, consult the upcoming chapters and check the examples shipped with the &kommander; source.</para> +</sect1> + +<sect1 id="exec-bit"> +<title>Executable bit - new in 1.3</title> +<para> +For security reasons we introduced the executable bit requirement in version 1.3. Some will applaud this as long overdue. Others will consider it a terrible annoyance or even too scarey to use. Unfortunately there is no perfect solution. The problem is that you can download a Kommander dialog from anywhere or get one in your email and click on it and run it by accident. Because Kommander can run shell scripts it is sort of in an odd place. While other applications don't nag you this way you actually had to install them so clearly you felt safe and intended to run them. A single line of shell scripting could permanently wipe out your home directory. Our intent is to eliminate an accidental click on an untrusted dialog. We aplogize for any inconvenience, but there is no way to do this to even the developer's satisfaction that it will not annoy you while keeping you safe. +</para> +<para> +You are not prevented from running a dialog, just nagged. You can make it go away by using a file manager or the shell to set the executable bit. Right click on the dialog in Konqueror, select properties from the menu, choose the permissions tab and check the <quote>is executable</quote> checkbox. Now the nag will be gone from this dialog forever. Check our web site for a tool that searchesfor &kommander; dialogs and allows you to review them and choose whether any or all of them should have the bit set. To use the shell and make all the &kommander; dialogs in a directory executable use this command. +</para> +<screen> +chmod u+x *.kmdr +</screen> +<warning><para>Do not set dialogs as executable if you are not confident of their origin.</para></warning> +</sect1> + +</chapter> diff --git a/doc/kommander/buttongroup.png b/doc/kommander/buttongroup.png Binary files differnew file mode 100644 index 00000000..d89e28fd --- /dev/null +++ b/doc/kommander/buttongroup.png diff --git a/doc/kommander/checkbox.png b/doc/kommander/checkbox.png Binary files differnew file mode 100644 index 00000000..ab6f53e0 --- /dev/null +++ b/doc/kommander/checkbox.png diff --git a/doc/kommander/closebutton.png b/doc/kommander/closebutton.png Binary files differnew file mode 100644 index 00000000..63903b30 --- /dev/null +++ b/doc/kommander/closebutton.png diff --git a/doc/kommander/combobox.png b/doc/kommander/combobox.png Binary files differnew file mode 100644 index 00000000..7d4890a7 --- /dev/null +++ b/doc/kommander/combobox.png diff --git a/doc/kommander/commands.docbook b/doc/kommander/commands.docbook new file mode 100644 index 00000000..87a6dc54 --- /dev/null +++ b/doc/kommander/commands.docbook @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<chapter id="commands"> +<chapterinfo> +<title>Command Reference</title> +</chapterinfo> + +<title>Reference</title> + +&widgets; +&specials; +&dcop-functions; + +</chapter> diff --git a/doc/kommander/contents.png b/doc/kommander/contents.png Binary files differnew file mode 100644 index 00000000..7596e67a --- /dev/null +++ b/doc/kommander/contents.png diff --git a/doc/kommander/credits.docbook b/doc/kommander/credits.docbook new file mode 100644 index 00000000..95c38541 --- /dev/null +++ b/doc/kommander/credits.docbook @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<chapter id="credits"> +<chapterinfo> +<title>Credits and License</title> +<authorgroup> +<author> +<firstname>Tamara</firstname> +<surname>King</surname> +<affiliation><address> +<email>tik@acm.org</email> +</address></affiliation> +</author> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> +</chapterinfo> + +<title>Credits and License</title> + +<variablelist> +<title>The &kommander; Development Team</title> +<varlistentry> +<term>Britton, Marc <email>consume@optusnet.com.au</email></term> +<listitem><para>Developer and documentation</para></listitem> +</varlistentry> +<varlistentry> +<term>King, Tamara <email>tik@acm.org</email></term> +<listitem><para>Documentation</para></listitem> +</varlistentry> +<varlistentry> +<term>Laffoon, Eric <email>sequitur@kde.org</email></term> +<listitem><para>Project manager and documentation</para></listitem> +</varlistentry> +<varlistentry> +<term>Mantia, András <email>amantia@kde.org</email></term> +<listitem><para>Developer</para></listitem> +</varlistentry> +<varlistentry> +<term>Rudolf, Michal <email>mrudolf@kdewebdev.org</email></term> +<listitem><para>Developer</para></listitem> +</varlistentry> +</variablelist> + +<para> +&kommander; <trademark class="copyright" /> 2004 - 2008 &kommander; Development Team. +</para> + +<para> +&kommander; User Manual <trademark class="copyright" /> 2004 - 2008 &kommander; Development Team. +</para> + +<!-- TRANS:CREDIT_FOR_TRANSLATORS --> + +&underFDL; +&underGPL; + +</chapter> diff --git a/doc/kommander/datepicker.png b/doc/kommander/datepicker.png Binary files differnew file mode 100644 index 00000000..4bcc6450 --- /dev/null +++ b/doc/kommander/datepicker.png diff --git a/doc/kommander/dcop.docbook b/doc/kommander/dcop.docbook new file mode 100644 index 00000000..2fbf70a1 --- /dev/null +++ b/doc/kommander/dcop.docbook @@ -0,0 +1,203 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<sect1 id="dcop-interface"> +<sect1info> +<title>&DCOP; Functions</title> +</sect1info> + +<title>&DCOP; Functions</title> + +<para> +&kommander; began accessing it's widgets internally with &DCOP;, which evolved to widget functions. &DCOP; is still available and can be used to share information between dialogs. It can also be used to extend and integrate nearly every existing KDE application. +&DCOP; can be called in several ways in &kommander;. First is the console method. Open a &kommander; dialog and open a console and try this. +</para> +<note><para>This is largely focused on the old parser. If you are looking for internal widget functions please see the <link linkend="new_parserdocs">new parser</link>. This information is particularly relevent to communicating between dialogs and applications, or running other scripting languages inside Kommander as scripts.</para></note> +<screen> +dcop | grep kmdr +dcop `dcop | grep kmdr` +dcop `dcop | grep kmdr` KommanderIf +</screen> +<para> +This will show you what dialogs are running and what interfaces are available, as well as what is available to call in the &kommander; special interface to internals. In the explanation of &DCOP; here remember that &DCOP; is used internally by KDE applications (replaced with DBUS in KDE4) and it is very useful. Have a look at <command>kdcop</command> by pressing Alt-F2 and typing it in a run dialog. Here you can explore everything running. Now back to &DCOP; in &kommander;. +</para> +<screen> +dcop kmdr-executor-@pid KommanderIf setText myWidget <quote>new text</quote> +</screen> +<para> +This assumes you are inside a &kommander; file and have access to the special @pid which contains the process ID. In fact it is simpler to replace <quote>kmdr-executor-@pid</quote> with @dcopid. However, you can use this syntax (obviously without the specials) from the command line or any external script to alter the &kommander; window. +</para> +<para> +&kommander; evolved the much faster internal &DCOP; function. Using it from another application window (console &DCOP; is very slow) is more complicated because you must give lots of information, including a prototype of the call. The above call would become: (Note that @dcopid is actually internal to the dialog, but you could replace it with a valid process ID) +</para> +<screen> +@dcop(@dcopid, KommanderIf, <quote>enableWidget(QString, bool)</quote>, Widget, true) +</screen> +<para> +In the early &kommander; nesting &DCOP; calls inside script language structures (like <application>bash</application>) used console method calls. <emphasis>If you use internal &DCOP; all &kommander; specials will be executed first and then the script will be executed.</emphasis> Please read that again as it will cause you no end of grief with a <application>bash</application> loop using &kommander; specials. +</para> +<para> +There is a new simplified way to use &DCOP; inside &kommander; using an object syntax. Let's say you want to change the text in a widget name @LineEdit1. It would look like this. +</para> +<screen> +@LineEdit1.setText(New text) +</screen> +<para> +As you can see the new syntax is very easy, as well as consistent visually with function groups. All the &DCOP; reference here will use the new object syntax listed above. <emphasis>Please note that if you are referencing a widget using &DCOP; from another window or another application the first parameter will always be the widget name. All functions are listed here starting with the second parameter.</emphasis> +</para> + +<sect2 id="dcop-globals"> +<title>&DCOP; for Global Variables</title> +<variablelist> +<varlistentry> +<term>global(QString variableName)</term> +<listitem> +<para> +Returns the value of the specified global variable. When a script is run from within a &kommander; window any (non-global) variables set in that script will cease to exist after the script completes and therfore will not be available to other script processes or in a new instance of the calling process. The global <quote>scope</quote> means the variable will exist for any process of the window until that window is closed. You may change these variables at any time with a new call to <function>@setGlobal</function>. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term>setGlobal(QString variableName, QString value)</term> +<listitem> +<para> +Creates a variable that is global to the window process and assigns the value to it. This value can be retrieved with global(QString variableName) or set again. +</para> +</listitem> +</varlistentry> +</variablelist> +</sect2> + +<sect2 id="dcop-all"> +<title>&DCOP; for all Widgets</title> + +<para> +The following list is old and left here for reference purposes only. For a complete and current reference to all widget functions please look at the <emphasis>Function Browser</emphasis> which is available from any &kommander; text editor window by pressing the lower left button. These are now widget functions, not &DCOP; functions but the &DCOP; functions are published in the <emphasis>KommanderIf</emphasis> &DCOP; interface as described above. Dialogs for listing and constructing calls for this functionality are available at our web site. +</para> +<variablelist> +<varlistentry> +<term>setText(QString text)</term> +<listitem> +<para> +This removes the text displayed in the widget and replaces it with the text supplied. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term>enableWidget(bool enable)</term> +<listitem> +<para> +Enables or disables a widget. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term>associatedText</term> +<listitem> +<para> +Returns the text associated with the specified widget. This is not the same as the displayed text. It would be <quote>@widgetText</quote> or the text and/or scripting used to arrive at the displayed value. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term>setAssociatedText(QString text)</term> +<listitem> +<para> +This sets the &kommander; Text default string. This is typically set to <quote>@widgetText</quote> to display what is entered into the widget. It is unlikely you will have much need for this, but if you do it is there. Applies to all widgets that can contain data. +</para> +</listitem> +</varlistentry> +</variablelist> +</sect2> + +<sect2 id="dcop-box"> +<title>&DCOP; for ListBox and ComboBox Widgets</title> +<variablelist> +<varlistentry> +<term>addListItem(QString item, int index)</term> +<listitem> +<para> +Adds an item to a ListBox widget at the specified index. List index starts at zero. To add to the end of the list use -1. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term>addListItems(QStringList items, int index)</term> +<listitem> +<para> +This adds a list of strings all at once. The list should be delimited by <acronym>EOL</acronym> (\n - newlines). This is handy as you can use bash to derive the list rather easily. For instance, using @exec(ls -l ~/projects | grep kmdr) for items will give you a directory listing of &kommander; files in your projects folder. List index starts at zero. Use -1 to add to the end of the list. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term>addUniqueItem(QString item)</term> +<listitem> +<para> +addUniqueItem will add an item to the end of the list only if it is unique. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term>clearList</term> +<listitem> +<para> +Removes all items. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term>removeListItem(int index)</term> +<listitem> +<para> +Removes the item at the specified index. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term>item(int index)</term> +<listitem> +<para> +Returns the text of the item at the specified index. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term>setCurrentListItem(int index)</term> +<listitem> +<para> +Set the current (or selected) item to the index specified. Applies to ListBox and ComboBox widgets. +</para> +</listitem> +</varlistentry> +</variablelist> +</sect2> + +<sect2 id="dcop-button"> +<title>&DCOP; for CheckBox and RadioButton Widgets</title> +<variablelist> +<varlistentry> +<term>setChecked(QString widgetName, bool checked)</term> +<listitem> +<para> +Checks/unchecks CheckBox or RadioButton widgets. +</para> +</listitem> +</varlistentry> +</variablelist> +</sect2> + +<sect2 id="dcop-tab"> +<title>&DCOP; for TabWidget Widgets</title> +<variablelist> +<varlistentry> +<term>setCurrentTab(QString widgetName, int index)</term> +<listitem> +<para> +Selected the tab by index for TabWidgets. Index starts at 0. +</para> +</listitem> +</varlistentry> +</variablelist> +</sect2> + + +</sect1> diff --git a/doc/kommander/editor.docbook b/doc/kommander/editor.docbook new file mode 100644 index 00000000..3b288e9c --- /dev/null +++ b/doc/kommander/editor.docbook @@ -0,0 +1,642 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<sect1 id="editor"> +<sect1info> +<title>The Editor</title> +<authorgroup> +<author> +<firstname>Tamara</firstname> +<surname>King</surname> +<affiliation><address> +<email>tik@acm.org</email> +</address></affiliation> +</author> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> +</sect1info> + +<title>The Editor</title> + +<para> +The editor is based on &designer;, a tool for designing and implementing user interfaces created by <ulink url="http://www.trolltech.com">Trolltech</ulink>. We have modified &designer; in the following ways: +</para> +<itemizedlist> +<listitem><para>Its interface is much simpler</para></listitem> +<listitem><para>Built in our own widgets</para></listitem> +<listitem><para>Added the ability to setup &kommander; Text</para></listitem> +<listitem><para>Various other superficial changes</para></listitem> +</itemizedlist> +<para> +For those of you already familiar with using &designer;, using the &kmdr-editor; will be trivial. +</para> + +<sect2 id="editor-gui"> +<title>Main Window</title> + +<mediaobject> +<imageobject> +<imagedata format="PNG" fileref="editor.png" /> +</imageobject> +</mediaobject> + +<orderedlist> +<listitem><para>Toolbars contain a number of buttons to provide quick access to number of functions.</para></listitem> +<listitem><para>The File Overview displays all of the files. Use the search field to rapidly switch between files.</para></listitem> +<listitem><para>The Object Explorer provides an overview of the relationships between the widgets in a form. It is useful for selecting widgets in a form with a complex layout.</para></listitem> +<listitem><para>The Property Editor is where the behavior and appearance of a widget is changed.</para></listitem> +<listitem><para>The Dialog Editor is where dialogs are created and edited.</para></listitem> +</orderedlist> +</sect2> + +<sect2> +<title>The File 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>Creates a new dialog</action></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>Search the file system to open an existing dialog</action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<guimenu>File</guimenu> +<guimenuitem>Open Recent</guimenuitem> +</menuchoice></term> +<listitem><para><action>Quick list of the last several files you've opened. This list will change each time you open a file that is not on it with the oldest being bumped off first.</action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<guimenu>File</guimenu> +<guimenuitem>Close</guimenuitem> +</menuchoice></term> +<listitem><para><action>Closes the active dialog</action></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 the active dialog</action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<guimenu>File</guimenu> +<guimenuitem>Save As</guimenuitem> +</menuchoice></term> +<listitem><para><action>Saves the active dialog with another name</action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<guimenu>File</guimenu> +<guimenuitem>Save All</guimenuitem> +</menuchoice></term> +<listitem><para><action>Saves all open dialogs</action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<guimenu>File</guimenu> +<guimenuitem>Exit</guimenuitem> +</menuchoice></term> +<listitem><para><action>Quits</action> &kommander;</para></listitem> +</varlistentry> +</variablelist> +</para> + +</sect2> + +<sect2> +<title>The Edit Menu</title> +<para> +<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>Undo the last action performed.</action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>Y</keycap></keycombo> +</shortcut> +<guimenu>Edit</guimenu> +<guimenuitem>Redo</guimenuitem> +</menuchoice></term> +<listitem><para><action>Redo the last action undone.</action></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>Cut the current item and place it content on the clipboard.</action></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 the current item to the clipbard.</action></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>Paste the contents of the clipboard at the current cursor position.</action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>Z</keycap></keycombo> +</shortcut> +<guimenu>Edit</guimenu> +<guimenuitem>Delete</guimenuitem> +</menuchoice></term> +<listitem><para><action>Delete the current item.</action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<shortcut> +<keycap>Del</keycap> +</shortcut> +<guimenu>Edit</guimenu> +<guimenuitem>Select All</guimenuitem> +</menuchoice></term> +<listitem><para><action>Select all of the items in the current dialog.</action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<shortcut> +<keycombo action="simul">&Alt;<keycap>R</keycap></keycombo> +</shortcut> +<guimenu>Edit</guimenu> +<guimenuitem>Check Accelerators</guimenuitem> +</menuchoice></term> +<listitem><para><action>Verifies that all the accelerators are used only once.</action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<guimenu>Edit</guimenu> +<guimenuitem>Connectors</guimenuitem> +</menuchoice></term> +<listitem><para><action>Displays the view and edit connections dialog.</action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<guimenu>Edit</guimenu> +<guimenuitem>Form Setting</guimenuitem> +</menuchoice></term> +<listitem><para><action>Displays the form setting dialog.</action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<guimenu>Edit</guimenu> +<guimenuitem>Preferences</guimenuitem> +</menuchoice></term> +<listitem><para><action>Displays the preferences dialog.</action></para></listitem> +</varlistentry> +</variablelist> +</para> +</sect2> + +<sect2> +<title>The Tools Menu</title> +<para> +<variablelist> +<varlistentry> +<term><menuchoice> +<shortcut> +<keycap>F2</keycap> +</shortcut> +<guimenu>Tools</guimenu> +<guimenuitem>Pointer</guimenuitem> +</menuchoice></term> +<listitem><para><action></action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<shortcut> +<keycap>F3</keycap> +</shortcut> +<guimenu>Tools</guimenu> +<guimenuitem>Connect Signal/Slots</guimenuitem> +</menuchoice></term> +<listitem><para><action></action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<shortcut> +<keycap>F3</keycap> +</shortcut> +<guimenu>Tools</guimenu> +<guimenuitem>Tab Order</guimenuitem> +</menuchoice></term> +<listitem><para><action></action></para></listitem> +</varlistentry> + +<varlistentry> +<term><menuchoice> +<guimenu>Tools</guimenu> +<guisubmenu>&kommander;</guisubmenu> +</menuchoice></term> +<listitem> +<para>Here there are listed all the &kommander; widgets. This widgets are guaranteed to be available on every system running the same (or higher) version of &kommander;.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><menuchoice> +<guimenu>Tools</guimenu> +<guisubmenu>Custom</guisubmenu> +</menuchoice></term> +<listitem> +<para>The widgets provided by the plugins will be listed under this menu entry. The dialogs using these widgets will run only if the plugin that provides them is installed and configured.</para> +</listitem> +</varlistentry> + +</variablelist> + +</para> + +</sect2> + +<sect2> +<title>The Layout Menu</title> +<para> +<variablelist> +<varlistentry> +<term><menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>J</keycap></keycombo> +</shortcut> +<guimenu>Layout</guimenu> +<guimenuitem>Adjust Size</guimenuitem> +</menuchoice></term> +<listitem><para><action></action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>H</keycap></keycombo> +</shortcut> +<guimenu>Layout</guimenu> +<guimenuitem>Lay Out Horizontally</guimenuitem> +</menuchoice></term> +<listitem><para><action></action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>L</keycap></keycombo> +</shortcut> +<guimenu>Layout</guimenu> +<guimenuitem>Lay Out Vertically</guimenuitem> +</menuchoice></term> +<listitem><para><action></action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>G</keycap></keycombo> +</shortcut> +<guimenu>Layout</guimenu> +<guimenuitem>Lay Out in a Grid</guimenuitem> +</menuchoice></term> +<listitem><para><action></action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<guimenu>Layout</guimenu> +<guimenuitem>Lay Out Horizontally (in Splitter)</guimenuitem> +</menuchoice></term> +<listitem><para><action></action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<guimenu>Layout</guimenu> +<guimenuitem>Lay Out Vertically (in Splitter)</guimenuitem> +</menuchoice></term> +<listitem><para><action></action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>B</keycap></keycombo> +</shortcut> +<guimenu>Layout</guimenu> +<guimenuitem>Break Layout</guimenuitem> +</menuchoice></term> +<listitem><para><action></action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<guimenu>Layout</guimenu> +<guimenuitem>Add Spacer</guimenuitem> +</menuchoice></term> +<listitem><para><action></action></para></listitem> +</varlistentry> +</variablelist> +</para> +</sect2> + +<sect2> +<title>The Run Menu</title> +<para> +<variablelist> +<varlistentry> +<term><menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>R</keycap></keycombo> +</shortcut> +<guimenu>Run</guimenu> +<guimenuitem>Run Dialog</guimenuitem> +</menuchoice></term> +<listitem><para><action>Runs the current dialog.</action></para></listitem> +</varlistentry> +</variablelist> +</para> +</sect2> + +<sect2> +<title>The Window Menu</title> +<para> +<variablelist> +<varlistentry> +<term><menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>F4</keycap></keycombo> +</shortcut> +<guimenu>Window</guimenu> +<guimenuitem>Close</guimenuitem> +</menuchoice></term> +<listitem><para><action>Closes current dialog.</action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<guimenu>Window</guimenu> +<guimenuitem>Close All</guimenuitem> +</menuchoice></term> +<listitem><para><action>Closes all dialogs.</action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>F6</keycap></keycombo> +</shortcut> +<guimenu>Window</guimenu> +<guimenuitem>Next</guimenuitem> +</menuchoice></term> +<listitem><para><action></action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;&Shift;<keycap>F6</keycap></keycombo> +</shortcut> +<guimenu>Window</guimenu> +<guimenuitem>Previous</guimenuitem> +</menuchoice></term> +<listitem><para><action></action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<guimenu>Window</guimenu> +<guimenuitem>Tile</guimenuitem> +</menuchoice></term> +<listitem><para><action></action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<guimenu>Window</guimenu> +<guimenuitem>Cascade</guimenuitem> +</menuchoice></term> +<listitem><para><action></action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<guimenu>Window</guimenu> +<guisubmenu>Views</guisubmenu> +</menuchoice></term> +<listitem> +<variablelist> +<varlistentry> +<term> +<menuchoice> +<guimenu>Window</guimenu> +<guisubmenu>Views</guisubmenu> +<guimenuitem>File Overview</guimenuitem> +</menuchoice> +</term> +<listitem><para></para></listitem> +</varlistentry> +<varlistentry> +<term> +<menuchoice> +<guimenu>Window</guimenu> +<guisubmenu>Views</guisubmenu> +<guimenuitem>Object Explorer</guimenuitem> +</menuchoice> +</term> +<listitem><para></para></listitem> +</varlistentry> +<varlistentry> +<term> +<menuchoice> +<guimenu>Window</guimenu> +<guisubmenu>Views</guisubmenu> +<guimenuitem>Property Editor/Signal Handlers</guimenuitem> +</menuchoice> +</term> +<listitem><para></para></listitem> +</varlistentry> +<varlistentry> +<term> +<menuchoice> +<guimenu>Window</guimenu> +<guisubmenu>Views</guisubmenu> +<guimenuitem>Line Up</guimenuitem> +</menuchoice> +</term> +<listitem><para></para></listitem> +</varlistentry> +</variablelist> +</listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<guimenu>Window</guimenu> +<guisubmenu>Toolbars</guisubmenu> +</menuchoice></term> +<listitem> +<variablelist> +<varlistentry> +<term> +<menuchoice> +<guimenu>Window</guimenu> +<guisubmenu>Toolbars</guisubmenu> +<guimenuitem>File</guimenuitem> +</menuchoice> +</term> +<listitem><para></para></listitem> +</varlistentry> +<varlistentry> +<term> +<menuchoice> +<guimenu>Window</guimenu> +<guisubmenu>Toolbars</guisubmenu> +<guimenuitem>Edit</guimenuitem> +</menuchoice> +</term> +<listitem><para></para></listitem> +</varlistentry> +<varlistentry> +<term> +<menuchoice> +<guimenu>Window</guimenu> +<guisubmenu>Layout</guisubmenu> +<guimenuitem>File</guimenuitem> +</menuchoice> +</term> +<listitem><para></para></listitem> +</varlistentry> +<varlistentry> +<term> +<menuchoice> +<guimenu>Window</guimenu> +<guisubmenu>Toolbars</guisubmenu> +<guimenuitem>Tools</guimenuitem> +</menuchoice> +</term> +<listitem><para></para></listitem> +</varlistentry> +<varlistentry> +<term> +<menuchoice> +<guimenu>Window</guimenu> +<guisubmenu>Toolbars</guisubmenu> +<guimenuitem>&kommander;</guimenuitem> +</menuchoice> +</term> +<listitem><para></para></listitem> +</varlistentry> +<varlistentry> +<term> +<menuchoice> +<guimenu>Window</guimenu> +<guisubmenu>Toolbars</guisubmenu> +<guimenuitem>Custom</guimenuitem> +</menuchoice> +</term> +<listitem><para></para></listitem> +</varlistentry> +<varlistentry> +<term> +<menuchoice> +<guimenu>Window</guimenu> +<guisubmenu>Toolbars</guisubmenu> +<guimenuitem>Help</guimenuitem> +</menuchoice> +</term> +<listitem><para></para></listitem> +</varlistentry> +<varlistentry> +<term> +<menuchoice> +<guimenu>Window</guimenu> +<guisubmenu>Toolbars</guisubmenu> +<guimenuitem>Line Up</guimenuitem> +</menuchoice> +</term> +<listitem><para></para></listitem> +</varlistentry> +</variablelist> +</listitem> +</varlistentry> +</variablelist> +</para> +</sect2> + +<sect2> +<title>The Settings Menu</title> +<para> +<variablelist> +<varlistentry> +<term><menuchoice> +<guimenu>Settings</guimenu> +<guimenuitem>Configure Shortcuts</guimenuitem> +</menuchoice></term> +<listitem><para><action>See and modify the editor keyboard shortcuts.</action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<guimenu>Settings</guimenu> +<guimenuitem>Configure Plugins</guimenuitem> +</menuchoice></term> +<listitem><para><action>Add or remove &kommander; plugins. The editor needs to be restarted after a new plugin is added.</action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<guimenu>Settings</guimenu> +<guimenuitem>Configure Editor</guimenuitem> +</menuchoice></term> +<listitem><para><action>Configure the text editor used for modifying the Kommander text associated with widgets.</action></para></listitem> +</varlistentry> +<varlistentry> +<term><menuchoice> +<guimenu>Settings</guimenu> +<guimenuitem>Configure &kommander;</guimenuitem> +</menuchoice></term> +<listitem><para><action>Configure how the editor looks and works.</action></para></listitem> +</varlistentry> +</variablelist> +</para> +</sect2> + +<sect2> +<title>The <guimenu>Help</guimenu> Menu</title> + +<!-- Assuming you have a standard help menu (help, what's this, about --> +<!-- &kommander;, about KDE) then the documentation is already written. --> +<!-- The following entity is valid anywhere that a variablelist is --> +<!-- valid. --> + +&help.menu.documentation; + +</sect2> + + +</sect1> diff --git a/doc/kommander/editor.png b/doc/kommander/editor.png Binary files differnew file mode 100644 index 00000000..6c0db299 --- /dev/null +++ b/doc/kommander/editor.png diff --git a/doc/kommander/extending.docbook b/doc/kommander/extending.docbook new file mode 100644 index 00000000..a5b38b05 --- /dev/null +++ b/doc/kommander/extending.docbook @@ -0,0 +1,440 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<chapter id="extending"> +<chapterinfo> +<authorgroup> +<author> +<firstname>Andras</firstname> +<surname>Mantia</surname> +<affiliation><address><email>amantia@kde.org</email></address></affiliation> +</author> +<author> +<firstname>Michal</firstname> +<surname>Rudolf</surname> +<affiliation><address><email>mrudolf@kdewebdev.org</email></address></affiliation> +</author> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> +</chapterinfo> +<title>Extending &kommander;</title> + +<sect1 id="create-widgets"> +<title>Creating &kommander; Widgets</title> +<para> +With &kommander; you can create new widgets based on non-&kommander; widgets +fairly easily. +</para> +<para>There are two ways of adding new widgets to &kommander;: by creating +plugins or by adding it directly to the &kommander; source. +</para> +<sect2 id="create-class"> +<title>Create the widget class</title> +<para> + The first step is to create the widget class. The approach is to derive your new &kommander; widget class from the +&Qt;/&kde; widget which you wish to integrate with &kommander;, and then also from the +KommanderWidget class. Overriding methods from this class gives the &kommander; +widget its functionality. +</para> +<para> +Most of the code of a &kommander; widget is just template code. +Therefore, you can use the KDevelop &kommander; plugin template to generate +most the &kommander; widget code for you. To do so run KDevelop (3.5 is recommended), +select <guimenu>Project->New Project</guimenu>, tick the <guilabel>Show all project templates</guilabel> checkbox, +select the <guilabel>C++/&kommander;/KommanderPlugin</guilabel> template. Give a name for your plugin and +follow the instructions in the wizard. +</para> +<para> +All you have to do is fill in the +important parts relating to your widget like any state information, widget text +etc. +</para> +<para> +Let's say we want to create a new line edit widget for &kommander;, +based on the KDE widget KLineEdit. Using the &kommander; widget generator +dialog, we get something like this in the generated header file: +</para> +<screen> +#include <kommanderwidget.h> + +class QShowEvent; +class KomLineEdit : public KLineEdit, public KommanderWidget +{ + Q_OBJECT + + Q_PROPERTY(QString populationText READ populationText WRITE setPopulationText DESIGNABLE false) + Q_PROPERTY(QStringList associations READ associatedText WRITE setAssociatedText DESIGNABLE false) + Q_PROPERTY(bool KommanderWidget READ isKommanderWidget) + +public: + KomLineEdit(QWidget *a_parent, const char *a_name); + ~KomLineEdit(); + + virtual QString widgetText() const; + + virtual bool isKommanderWidget() const; + virtual void setAssociatedText(const QStringList&); + virtual QStringList associatedText() const; + virtual QString currentState() const; + + virtual QString populationText() const; + virtual void setPopulationText(const QString&); +public slots: + virtual void setWidgetText(const QString &); + virtual void populate(); +protected: + void showEvent( QShowEvent *e ); +signals: + void widgetOpened(); + void widgetTextChanged(const QString &); +}; +</screen> +<para>Most of this is just template code that you don't need to worry about. +The only two things you need to take notice of are that the kommanderwidget.h +file is included at the top, and that the class is derived first from the +widget we wish to integrate with &kommander;, and secondly from KommanderWidget. +</para> +<para> +There are a few parts in the cpp file that are important to each particular widget. +</para> +<screen> +KomLineEdit::KomLineEdit(QWidget *a_parent, const char *a_name) + : KLineEdit(a_parent, a_name), KommanderWidget(this) +{ + QStringList states; + states << "default"; + setStates(states); + setDisplayStates(states); +} +</screen> +<para>In the constructor, we set the states this widget may have. +Our line edit doesn't have any kind of state, so we just +give it one state <emphasis>default</emphasis>. If you were creating a widget +that had different kinds of states, such as a check box, you might +set three states <emphasis>unchecked</emphasis>, <emphasis>semichecked</emphasis> and <emphasis>checked</emphasis> here. +</para> +<screen> +QString KomLineEdit::currentState() const +{ + return QString("default"); +}</screen> +<para>We set the states in the constructor above, and this just +returns the current state of the widget. For our widget +it will always be <emphasis>default</emphasis>, but you should put code here +that checks what state your widget is currently in and +return the appropriate string here. +</para> +<screen> +QString KomLineEdit::widgetText() const +{ + return KLineEdit::text(); +} + +void KomLineEdit::setWidgetText(const QString &a_text) +{ + KLineEdit::setText(a_text); + emit widgetTextChanged(a_text); +} +</screen> +<para>These are the two most important methods, where the bulk of the +functional code goes. +<emphasis>QString KomLineEdit::widgetText() const</emphasis> method returns the widget text of the +widget (the text that the <emphasis>@widgetText</emphasis> special is expanded to in text +associations). For our widget, the widget text is simply the text inside +the line edit, so we just return that. Similarly when setting the widget text, +we just set the text inside the line edit. We emit the <emphasis>widgetTextChanged()</emphasis> +signal after setting the widget text so other widgets can recognize the fact +that this widget was updated. +</para> +<para> +In order to add functionality to the widget, you need to register some function and add code to handle them. Here is the code to be used to register, put it in the beginning of the cpp file, above the constructor: +</para> +<screen> +#include <klocale.h> //for i18n + +#include "kommanderplugin.h" +#include "specials.h" + +enum Functions { + FirstFunction = 1159, + Function1, + Function2, + LastFunction +}; +KomLineEdit::KomLineEdit(QWidget *a_parent, const char *a_name) + : KLineEdit(a_parent, a_name), KommanderWidget(this) +{ + ... //code like described above + KommanderPlugin::setDefaultGroup(Group::DCOP); + KommanderPlugin::registerFunction(Function1, "function1(QString widget, QString arg1, int arg2)", i18n("Call function1 with two arguments, second is optional."), 2, 3); + KommanderPlugin::registerFunction(function2, "function2(QString widget)", i18n("Get a QString as a result of function2."), 1); +} +</screen> +<para>This registers two functions: <emphasis>function1 and function2</emphasis>. The number assigned to the functions (here <emphasis>1160</emphasis> and <emphasis>1161</emphasis>) must be unique, not used in any other plugin or +inside &kommander;. <emphasis>function1</emphasis> takes two arguments, one is optional, <emphasis>function2</emphasis> takes no argument and returns a string. The <emphasis>QString widget</emphasis> argument in the signatures notes that this functions work on a widget, like: <emphasis>KomLineEdit.function1("foo", 1)</emphasis>. +</para> +<para>To teach &kommander; that the widget supports these functions, add a method like this: +</para> +<screen> +bool KomLineEdit::isFunctionSupported(int f) +{ + return (f > FirstFunction && f < LastFunction) || f == DCOP::text; +} +</screen> +<para>This means that KomLineEdit supports the above functions and the standard <emphasis>text</emphasis> +function. +The function code should be handled inside the handleDCOP method: +</para> +<screen> +QString KomLineEdit::handleDCOP(int function, const QStringList& args) +{ + switch (function) + { + case function1: + handleFunction1(arg[0], arg[1].toInt()); //call your function1 handler + break; + case function2: + return handleFunction2(); //call function2 + break; + case DCOP::text: + return text(); //call the standard KLineEdit::text() method + break; + default: + return KommanderWidget::handleDCOP(function, args); + } + return QString::null; +} +</screen> +<para>There are cases when the widget should appear differently in the editor than in +the executor, like the case of ScriptObjects, about dialog, etc. The usual solution is to show a QLabel instead of the widget. For this, your widget must +derive from QLabel, and use this in the constructor: +</para> +<screen> + if (KommanderWidget::inEditor) + { + setPixmap(KGlobal::iconLoader()->loadIcon("iconname", KIcon::NoGroup, KIcon::SizeMedium)); + setFrameStyle(QFrame::Box | QFrame::Plain); + setLineWidth(1); + setFixedSize(pixmap()->size()); + } + else + setHidden(true); +</screen> +<para>You can create the widget itself (if you need a widget at all, maybe your +"widget" provides only functionality to access e.g databases) in one of your +functions, like in the <emphasis>execute</emphasis> function. Here is an example from the AboutDialog widget: +</para> +<screen> +QString AboutDialog::handleDCOP(int function, const QStringList& args) +{ + switch (function) { + ... + case DCOP::execute: + { + if (m_aboutData) + { + KAboutApplication dialog(m_aboutData, this); + dialog.exec(); + } + break; + } + ... +} +</screen> +<para>You now have a complete &kommander; widget. All that's left +to do is make it available to the &kommander; system via plugins. +</para> + +</sect2> + +<sect2 id="create-plugin"> +<title>Create the &kommander; plugin</title> +<para> +All of the widgets in &kommander; are provided by plugins. +The standard widgets are loaded as widget plugins, but the &kommander; editor +is also linked against this library because certain mechanisms in the editor +are tied specifically to the standard widgets. +</para> +<para> +A plugin in &kommander; is simply a shared library that has the symbol +'kommander_plugin'. This symbol is a function returning a pointer +to an instance of a KommanderPlugin class. +</para> +<para> +&kommander; makes it easy to create a plugin for you widgets, so you don't +need to worry about this low level stuff. The basic idea is to derive +a new plugin class for your widgets from the KommanderPlugin base class +and implement a few specific details. A template code is generated by the above described KDevelop project template. +</para> +<para>The following code continues on our example of creating a Kommander line edit +widget. +</para> +<screen> +#include <kommanderplugin.h> + +/* WIDGET INCLUDES */ +#include "komlineedit.h" + +</screen> +<para> +First thing we do is include kommanderplugin.h. This contains the definition +of the KommanderPlugin class. We also include all header files of the widgets +this plugin provides - only komlineedit.h in this case. +</para> +<screen> +class MyKomPlugin : public KommanderPlugin +{ +public: + MyKomPlugin(); + virtual QWidget *create( const QString &className, QWidget *parent = 0, const char *name = 0 ); +}; +</screen> +<para> +We then create a KommanderPlugin sub-class called <emphasis>MyKomPlugin</emphasis>. +This class simply has a constructor and an overridden create method. +</para> +<screen> +MyKomPlugin::MyKomPlugin() +{ + addWidget( "KomLineEdit", "My Widget Group", i18n("A Kommander line edit widget") new QIconSet(KGlobal::iconLoader()->loadIcon("iconname", KIcon::NoGroup, KIcon::SizeMedium))); + //add my other widgets here +} +</screen> +<para>In the constructor of the plugin, we call <emphasis>addWidget()</emphasis> for each widget we wish +to provide in this plugin. <emphasis>addWidget()</emphasis> takes 6 arguments but only the first 4 +are required. In order, the arguments are the widget's class name, group, +tool tip, an iconset for the icon used in the editor toolbar, what's this information, and a bool indicating whether the widget +is a container for other widgets or not. This information is used +by the editor when grouping your widget in menus, providing help information +etc. +</para> +<para> +Regarding the icon, the above example loads a medium sized icon called <emphasis>iconname</emphasis> from the standard &kde; icon location. +</para> +<screen> +QWidget *MyKomPlugin::create( const QString &className, QWidget *parent, const char *name ) +{ + if( className == "KomLineEdit" ) + return new KomLineEdit( parent, name ); + //create my other widgets here + return 0; +} +</screen> +<para> +<emphasis>create()</emphasis> is where instances of our widgets actually get created. +Whenever &kommander; wants an instance of one of the classes provided +by our plugin, it will call <emphasis>create()</emphasis> with the name of the class it wants, +and the parent and name that should be used. +If the <emphasis>className</emphasis> matches any widget we know about, we return a new instance +of that class but otherwise we return 0. +</para> +<para> +Finally, we export our plugin. This just provides an entry point to our +plugin so the &kommander; system can get access to it. Without this, +&kommander; will not recognize your library as a &kommander; plugin. +</para> +<screen> +KOMMANDER_EXPORT_PLUGIN(MyKomPlugin) +</screen> +<para> +To compile your new &kommander; extension, you should compile all files +as a shared library, linking against the kommanderplugin, kommanderwidget +and any appropriate KDE libraries. +With the line edit example, if we had komlineedit.h, komlineedit.cpp and +mykomplugin.cpp, compiling and installing your plugin would involve +something similar to the following commands: +</para> +<screen> +libtool --mode=compile g++ -$KDEDIR/include -IQTDIR/include \ + -I. -fPIC -c komlineedit.cpp +libtool --mode=compile g++ -$KDEDIR/include -IQTDIR/include \ + -I. -fPIC -c mykomplugin.cpp + +libtool --mode=link g++ -shared -L$KDEDIR/lib -lkdeui -lkommanderwidget \ + -lkommanderplugin komlineedit.cppkomlineedit.o mykomplugin.o + -o libmykomplugin.so +</screen> +<para> +If you want to install new plugin system-wide, root, use: +</para> +<screen> +su -c "cp libmykomplugin.so $KDEDIR/lib" +</screen> +<note><para>If you use the KDevelop project generator, you will not need to do the above, but instead adapt the Makefile.am to link against extra libraries. By default, it will link to &Qt; and &kde; libraries and generate all the needed object files. Just run <command>make</command> to build, and <command>su -c make install</command> to install.</para></note> +</sect2> +<sect2 id="config-plugin"> +<title>Configure the installed plugins</title> +<para> +Now that the plugin is installed, run the <command>kmdr-plugins</command> program or choose <guimenu>Settings->Configure Plugins</guimenu> from the Editor. The list in this program displays the +plugins that are currently loaded by &kommander;. Add the new plugin to the +list by clicking the <guilabel>Add</guilabel> button in the toolbar and choosing your plugin. +Closing the program saves changes. +</para> +<para> +If you now restart the &kommander; editor, the widgets your new plugin +provides should be available in the menus and toolbars. You can +now use your new widgets in &kommander; dialogs. +</para> +</sect2> +<sect2 id="add-widget"> +<title>Add the widget directly to &kommander;</title> +<para>This section is for &kommander; developers and describes how to add a new widget directly to &kommander;.</para> +<para> +Ironically, this one is more complicated, especially if the widget needs +extra editing methods. +First you create the widget like above. After that you need to register the +widget to the editor and the executor. +To register it inside the editor, add it to <emphasis>editor/widgetdatabase.cpp</emphasis>: +</para> +<screen> +... +#include "mywidget.h" +... +void WidgetDatabase::setupDataBase( int id ) +{ + ... + r = new WidgetDatabaseRecord; + r->name = "MyWidgetName"; + r->iconName = "icon.png"; + r->group = widgetGroup( "Kommander" ); + r->toolTip = i18n("My new widget"); + append(r); + ... +} +</screen> +<para> +You need to add to the <emphasis>editor/widgetfactory.cpp</emphasis> as well: +</para> +<screen> +... +#include "mywidget.h" +... +QWidget *WidgetFactory::createWidget( const QString &className, QWidget *parent, const char *name, bool init, + const QRect *r, Qt::Orientation orient ) +{ + ... + else if (className == "MyWidgetName") + return new MyWidget(parent, name); + ... +} +</screen> +<para> +To register to the executor (actually to the plugin system), add this to +<emphasis>widgets/plugin.cpp</emphasis>: +</para> +<screen> +KomStdPlugin::KomStdPlugin() +{ + ... + addWidget("MyWidgetName", group, "", new QIconSet(KGlobal::iconLoader()->loadIcon("iconname", KIcon::NoGroup, KIcon::SizeMedium))); + ... +} +</screen> +<para>This is similar to how the widget is registered via the plugin system in the +first case. +</para> +</sect2> +</sect1> + +</chapter> diff --git a/doc/kommander/frame.png b/doc/kommander/frame.png Binary files differnew file mode 100644 index 00000000..e9fd684d --- /dev/null +++ b/doc/kommander/frame.png diff --git a/doc/kommander/glossary.docbook b/doc/kommander/glossary.docbook new file mode 100644 index 00000000..b8434888 --- /dev/null +++ b/doc/kommander/glossary.docbook @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<glossary id="glossary"> + +<glossaryinfo> +<authorgroup> +<author> +<firstname>Tamara</firstname> +<surname>King</surname> +<affiliation><address> +<email>tik@acm.org</email> +</address></affiliation> +</author> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> +</glossaryinfo> + +<glossdiv> +<title>Keywords</title> +<glossentry id="text-association-glosref"> +<glossterm>Text Association</glossterm> +<glossdef> +<para> +A piece of text that is associated or bound to a widget's particular state. +</para> +</glossdef> +</glossentry> +<glossentry id="widget-text-glosref"> +<glossterm>Widget Text</glossterm> +<glossdef> +<para> +Text associated to a widget. This is represented in &kommander; with the special @widgetText. The widget text varies depending on the widget. +</para> +</glossdef> +</glossentry> +</glossdiv> +</glossary> diff --git a/doc/kommander/groupbox.png b/doc/kommander/groupbox.png Binary files differnew file mode 100644 index 00000000..4025b4dc --- /dev/null +++ b/doc/kommander/groupbox.png diff --git a/doc/kommander/index.docbook b/doc/kommander/index.docbook new file mode 100644 index 00000000..71582056 --- /dev/null +++ b/doc/kommander/index.docbook @@ -0,0 +1,121 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY kommander "<application>Kommander</application>"> + <!ENTITY kappname "&kommander;"> + <!ENTITY package "kdewebdev"> + <!ENTITY basics SYSTEM "basics.docbook"> + <!ENTITY commands SYSTEM "commands.docbook"> + <!ENTITY parser SYSTEM "parser.docbook"> + <!ENTITY credits SYSTEM "credits.docbook"> + <!ENTITY dcop-functions SYSTEM "dcop.docbook"> + <!ENTITY editor SYSTEM "editor.docbook"> + <!ENTITY extending SYSTEM "extending.docbook"> + <!ENTITY translating SYSTEM "translating.docbook"> + <!ENTITY glossary SYSTEM "glossary.docbook"> + <!ENTITY installation SYSTEM "installation.docbook"> + <!ENTITY introduction SYSTEM "introduction.docbook"> + <!ENTITY q-and-a SYSTEM "q-and-a.docbook"> + <!ENTITY specials SYSTEM "specials.docbook"> + <!ENTITY tutorials SYSTEM "tutorials.docbook"> + <!ENTITY widgets SYSTEM "widgets.docbook"> + <!ENTITY designer "<application>&Qt; Designer</application>"> + <!ENTITY kmdr-editor "&kommander; Editor"> + <!ENTITY kmdr-executor "&kommander; Executor"> + <!ENTITY GIMP "<application>The GIMP</application>"> + <!ENTITY IDE "<acronym>IDE</acronym>"> + <!ENTITY PHP "<acronym>PHP</acronym>"> + <!ENTITY PID "<acronym>PID</acronym>"> + <!ENTITY % addindex "IGNORE"> + <!ENTITY % English "INCLUDE"> +]> + +<book lang="&language;"> + +<bookinfo> +<title>The &kommander; Handbook</title> + +<authorgroup> +<author> +<firstname>Marc</firstname> +<surname>Britton</surname> +<affiliation> +<address><email>consume@optushome.com.au</email></address> +</affiliation> +</author> +<author> +<firstname>Tamara</firstname> +<surname>King</surname> +<affiliation> +<address><email>tik@acm.org</email></address> +</affiliation> +</author> +<author> +<firstname>Eric</firstname> +<surname>Laffoon</surname> +<affiliation> +<address><email>eric@kdewebdev.org</email></address> +</affiliation> +</author> +<author> +<firstname>András</firstname> +<surname>ManÅ£ia</surname> +<affiliation> +<address><email>amantia@kde.org</email></address> +</affiliation> +</author> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> + +<copyright> +<year>2008</year> +<holder>&kommander; Development Team</holder> +</copyright> + +<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>2008-02-12</date> +<releaseinfo>3.2.95</releaseinfo> + +<!-- Abstract about this handbook --> + +<abstract> +<para>These docs have been partially complete for years, but not always available or easy to find. Since around 2002 little spurts of effort on &kommander; have produced dramtic results. &kommander; is a new approach to development and there have been modifications in approach and features. Consequently much of this documentation is out of date, however still useful due to legacy support. Please refer to our web site at <ulink url="http://kommander.kdewebdev.org">http://kommander.kdewebdev.org</ulink> for up to date information, news on KDE4 development, new tools, plugins, tips and tutorials.</para> +<para> +&kommander; is a set of tools that allow you to create dynamic &GUI; windows that has been used as a front end for command line programs, database front ends, simple program extentions and much more. The best part of it all? You aren't required to write a single line of code! Okay, that was old text... You can actually use the function browser and even with the new parser write almost none of the code. The inherent difference between &kommander; and other &GUI; scripting tools is that &kommander; doesn't care about how the window gets drawn. &kommander; was designed from the GUI down to the language elements and can embrace multiple languages. &kommander; does not use scripting to draw a window on the screen like other &GUI; scripting tools. As Kommander matures it will expose all it's internals to any scripting language people want to enable. We welcome anyone wishing to enhance support for any scripting language. +</para> +</abstract> + +<!-- This is a set of Keywords for indexing by search engines. +Please at least include KDE, the KDE package it is in, the name + of your application, and a few relevant keywords. --> + +<keywordset> +<keyword>KDE</keyword> +<keyword>Kommander</keyword> +<keyword>Quanta</keyword> +</keywordset> + +</bookinfo> + +&introduction; +&basics; +&commands; +&parser; +&extending; +&translating; +&tutorials; +&q-and-a; +&credits; +&installation; +&glossary; + +</book>
\ No newline at end of file diff --git a/doc/kommander/installation.docbook b/doc/kommander/installation.docbook new file mode 100644 index 00000000..707df7a0 --- /dev/null +++ b/doc/kommander/installation.docbook @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<appendix id="installation"> +<title>Installation</title> + +<sect1 id="getting-kapp"> +<title>How to obtain &kommander;</title> + +<!-- This first entity contains boiler plate for applications that are +part of KDE CVS. You should remove it if you are releasing your +application --> + +&install.intro.documentation; + +<para>There is a dedicated homepage for &kommander; at <ulink url="http://kommander.kdewebdev.org">http://kommander.kdewebdev.org</ulink>. +</para> +</sect1> + +<sect1 id="requirements"> +<title>Requirements</title> + +<!-- +List any special requirements for your application here. This should include: +.Libraries or other software that is not included in kdesupport, +kdelibs, or kdebase. +.Hardware requirements like amount of RAM, disk space, graphics card +capabilities, screen resolution, special expansion cards, etc. +.Operating systems the app will run on. If your app is designed only for a +specific OS, (you wrote a graphical LILO configurator for example) put this +information here. +--> +<para> +&kommander; requires the latest version of &kde; 3.x series, currently 3.5.9. It might work with previous 3.5.x versions, but this was not tested throughfully. +<!-- For a list of updates, you may refer to the application web site +or the ChangeLog file, or ... --> +</para> +</sect1> + +<sect1 id="compilation"> +<title>Compilation and Installation</title> + +<!-- This entity contains the boilerplate text for standard --> +<!-- compilation instructions. If your application requires any --> +<!-- special handling, remove it, and replace with your own text. --> + +&install.compile.documentation; + +</sect1> + +</appendix> diff --git a/doc/kommander/interface.png b/doc/kommander/interface.png Binary files differnew file mode 100644 index 00000000..3cae0ef4 --- /dev/null +++ b/doc/kommander/interface.png diff --git a/doc/kommander/introduction.docbook b/doc/kommander/introduction.docbook new file mode 100644 index 00000000..7b40475a --- /dev/null +++ b/doc/kommander/introduction.docbook @@ -0,0 +1,134 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<chapter id="introduction"> +<chapterinfo> +<title>Introduction</title> +<authorgroup> +<author> +<firstname>Eric</firstname> +<surname>Laffoon</surname> +<affiliation> +<address><email>sequitur@kde.org</email></address> +</affiliation> +</author> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> +</chapterinfo> + +<title>Introduction</title> + +<para> +&kommander; is a visual dialog building tool which can be used to create +full mainwindow applications, provided the window is initially created in Qt Designer +or from a template in &kommander;. The primary objective is to create as much +functionality as possible with the absolute minimum use of scripting. This is +provided by the following features: +</para> +<note><para>Please note this document includes legacy documentation for compatibility reasons. In a nutshell &kommander; offers extremely rapid development and extensive abilities and capabilities. Following is a new list, followed by the legacy content.</para></note> + +<itemizedlist> +<listitem> +<para><emphasis>Capable internal scripting</emphasis> - &kommander; now offers nested logic structures, simple arrays and useful functions </para> +</listitem> +<listitem><para> +<emphasis>Function Browsers</emphasis> - One never need know exact syntax for any function or command, just click the button and point and click your way to a functional program. Even the project lead finds it easier than typos much of the time.</para> +</listitem> +<listitem><para> +<emphasis>Extensive widgets</emphasis> - &kommander; now has a tree/detail widget, spreadsheet like table widget, font dialog, color dialog, about dialog, timer, tab widgets, toolbox, popup menus, date picker and a lot more. </para> +</listitem> +<listitem> +<para><emphasis>Plugins</emphasis> - &kommander; can run easy to create plugins. Plugins as of this writing are a database plugin offering a set of non visual tools, an HTTP plugin offering HTTPS and access to password protected areas and a KPart loader. +</para></listitem> +<listitem> +<para><emphasis>Scripting language support</emphasis> - The ability to run multiple scripting language in &kommander; scripts, inside your dialog +</para></listitem> +<listitem> +<para><emphasis>KPart creation</emphasis> - the ability to make your own plugins... and stranger yet you can even make a &kommander; window load a dialog as a KPart and directly access it with &kommander; functions! +</para></listitem> +</itemizedlist> +<para>Look for documentation on tips and tricks like how to make &kommander; fake programming techniques like including a file, creating and using custom widgets, making collapsable panels in windows and other unexpected tricks. Below is our legacy list.</para> +<itemizedlist> + + +<listitem><para>Specials are prefaced with an <quote>@</quote> like @widgetText. The offer +special features like the value of a widget, functions, aliases, global +variables and such.</para></listitem> + + +<listitem><para>&DCOP; integration allows &kommander; dialogs to control and be +controlled in interactions with other &kde; applications. It is a very powerful +feature!</para></listitem> + +<listitem><para>Signals and Slots is a little less intuitive to a new user. It is +under review for how we process things in the first major release. These +offer a limited event model for when a button is pushed or a widget is +changed. Combined with <quote>Population Text</quote> it is rather powerful.</para></listitem> +</itemizedlist> + +<para> +The central key feature of &kommander; dialogs is that you can bind text +(&kommander; Text) to a widget. So if you have @widget1 and @widget2 and +they are line edits you can set &kommander; to show their contents by +entering @widgetText in their &kommander; Text area. Then enter hello in +@widget1 and world in @widget2. A button can have the string +My first @widget1 @widget2 program in &kommander; +If you run this dialog from a console it will output +My first hello world program in &kommander; +</para> + +<para> +Hopefully you begin to see a small glimmering of the potential. &kommander; +enables a much faster design model for simple applications because if allows +you to stop thinking so much about language and revert to the more basic and +natural conceptual model. In computers language is a means to define concepts +and as such it is a layer between concept and implementation that can impede +progress with minutia. &kommander; seeks to minimize that layer. +</para> + +<para> +&kommander; also seeks to build on standards. It is built on the &Qt; Designer +framework and creates *.ui files which it renames to *.kmdr. It can easily +import any &kde; widget and this can be done without having to rebuild +&kommander;, by using plugins. +</para> + +<para> +&kommander;'s other significant factor is how it addresses the requirements of +language. Computer languages can be wonderful things but they tend to have +their own dogmas and zealots often seeking to provide an advance to &GUI; +design in an integrated development environment. Ironically the acceptance +of such &IDE;s is limited by the number of people willing to adopt a new new +language to gain access to a desired feature. It is really not reasonable to +expect people to need to change over to a dozen languages to access various +feature sets. By being language neutral and allowing a &kommander; dialog to be +extended by using any scripting language &kommander; positions itself in a +unique position for wide spread adoption. Multiple script languages can be +used in a single dialog and applications can be taken over by people using +a different language than the original developer and gradually converting +and extending it. New widgets and features can be instantly leveraged by all +available languages. +</para> + +<para> +We hope that &kommander; begins to get the developer support and recognition +required to achieve the potential it offers. Our end goal is to make &kommander; +useful for novice users to extend and merge their applications. At the same +time it should become a good prototyping tool. Also it opens the door to the +promise of open source in a new way. We know that people can extend our GPL'd +programs, but the fact remains very few have the skills. With &kommander; those +numbers see a huge multiplier! Some applications may be most logical as a +&kommander; application. We already use it in areas we want to allow +extensibility in &quantaplus;. +</para> + +<para> +We hope you enjoy &kommander;. Please help us with bug reports and example +dialogs, as well as any requests you may have. You can join our <ulink url="http://mail.kdewebdev.org/mailman/listinfo/kommander">user list</ulink> +for help developing &kommander; applications. +</para> + +<para>Best Regards from the &kommander; development team!</para> + +</chapter> diff --git a/doc/kommander/kfontcombo.png b/doc/kommander/kfontcombo.png Binary files differnew file mode 100644 index 00000000..87835d6c --- /dev/null +++ b/doc/kommander/kfontcombo.png diff --git a/doc/kommander/kommander.png b/doc/kommander/kommander.png Binary files differnew file mode 100644 index 00000000..f14697d6 --- /dev/null +++ b/doc/kommander/kommander.png diff --git a/doc/kommander/konsole.png b/doc/kommander/konsole.png Binary files differnew file mode 100644 index 00000000..3e60f289 --- /dev/null +++ b/doc/kommander/konsole.png diff --git a/doc/kommander/label.png b/doc/kommander/label.png Binary files differnew file mode 100644 index 00000000..5d7d7b4c --- /dev/null +++ b/doc/kommander/label.png diff --git a/doc/kommander/lineedit.png b/doc/kommander/lineedit.png Binary files differnew file mode 100644 index 00000000..dafdfdf3 --- /dev/null +++ b/doc/kommander/lineedit.png diff --git a/doc/kommander/listbox.png b/doc/kommander/listbox.png Binary files differnew file mode 100644 index 00000000..d467fc9f --- /dev/null +++ b/doc/kommander/listbox.png diff --git a/doc/kommander/listview.png b/doc/kommander/listview.png Binary files differnew file mode 100644 index 00000000..d71cc1c9 --- /dev/null +++ b/doc/kommander/listview.png diff --git a/doc/kommander/multilineedit.png b/doc/kommander/multilineedit.png Binary files differnew file mode 100644 index 00000000..e7f6db94 --- /dev/null +++ b/doc/kommander/multilineedit.png diff --git a/doc/kommander/parser.docbook b/doc/kommander/parser.docbook new file mode 100644 index 00000000..a008c431 --- /dev/null +++ b/doc/kommander/parser.docbook @@ -0,0 +1,751 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<chapter id="new_parserdocs"> +<chapterinfo> +<title>&kommander; New Parser</title> +<authorgroup> +<author> +<firstname>Michal</firstname> +<othername></othername> +<surname>Rudolf</surname> +<affiliation> +<address><email>mrudolf@kdewebdev.org</email></address> +</affiliation> +</author> +<author> +<firstname>Eric</firstname> +<othername></othername> +<surname>Laffoon</surname> +<affiliation> +<address><email>eric@kdewebdev.org</email></address> +</affiliation> +</author> +<!-- TRANS:ROLES_OF_TRANSLATORS --> +</authorgroup> +<copyright> +<year>2005-2008</year> +<holder>Michal Rudolf</holder> +<holder>Eric Laffoon</holder> +</copyright> +<legalnotice>&FDLNotice;</legalnotice> +</chapterinfo> + +<title>New Parser Documentation</title> +<para> +The new parser was introduced in &kommander; with version 1.2, released with +KDE 3.4. This document was originally released to show all the features of new parser. +As of &kommander; 1.3, released with KDE 3.5.9, the new parser is now the default, except for MainWindow applications created in &Qt; Designer. Because +the new parser is so much richer in ability, overcomes the limitations of nesting in the +old parser and adds so many new features we strongly recommend using it. +</para> +<para> +&kommander; itself will not be described here. Please refer to other documents to +see what is &kommander; for, how to create dialogs and how to manipulate widgets +on runtime. +</para> +<!-- +</chapter> + + + +<chapter id="two_parsers"> +<title>New parser vs. old parser</title> +--> +<sect1 id="two_parsers"> +<title>Old parser</title> +<para> +Here we compare the two parsers. While we advocate the new one for most purposes the old one is still +supported and useful, particularly when working with other scripting languages. +</para> + +<sect2 id="old_parser"> +<title>Old parser</title> +<para> +The old parser was in fact macro parser. Only strings beginning with @ were +recognized, locally parsed and expanded. +<screen> +@LineEdit1.setText(@ListBox.selection) +</screen> +</para> + +<para> +All the underlying functionality (local variables, expressions, file manipulation) +had to be done in another scripting language, such as Bash. While the intent with &kommander; is to support +all other scripting languages, and this is presently possible to some degree, there +was a need for a fast, native scripting language that was assured to be portable. +The biggest problem with the old parser is that the &kommander; specials are evaluated <emphasis>before</emphasis> the code is passed to the scripting language, making them impossible to use in loops and conditions.</para> +<para> +The developers considered bash slow and not friendly to new users, and the old parser +had been initially bash calling DCOP. The paradox for &kommander; being language neutral +resulted in a need to do more than just functions natively. +</para> +</sect2> + +<sect2 id="new_parser"> +<title>New parser</title> +<para> +The new parser is a full parser. It parses the whole script, not just functions. As we were interested +in GUI interaction, not the proliferation of scripting languages, we made compromises. +As a result you should find &kommander;'s scripting to be capable for most basic tasks +and natural and easy to use. There is also the <emphasis>Function Browser</emphasis>, which will help you +assemble statements. The Function Browser is intended to make &kommander; accessible to complete novice +programmers. It is similar to what you would find in KSpread to help you choose a function +and fill in the parameters. +<tip><para>If you want enhanced functionality found in other languages you can include +them in &kommander; script objects headed with a shebang. While in these scripts the Function +Browser will help you insert references to widgets. Just remember when using this functionality +that the parser makes one pass for the old parser functions and one pass for your script. So if you +try to change something in a widget and read it in the middle of a script you may not get what you expect.</para></tip> +<screen> +#!/usr/bin/php +</screen> +</para> +<para>The following feature list is from version 1.2</para> +<itemizedlist> +<listitem><para>local and global variables and associative arrays</para></listitem> +<listitem><para>numerical expressions</para></listitem> +<listitem><para>string manipulation</para></listitem> +<listitem><para>various structure commands: if, while, for, foreach</para></listitem> +<listitem><para>most functions from old parser</para></listitem> +<listitem><para>direct widget manipulation</para></listitem> +<listitem><para>many additional functions</para></listitem> +<listitem><para>decent execution speed</para></listitem> +<listitem><para>receive parameters from signals in script slots</para></listitem> +</itemizedlist> +<para>This list is from version 1.3</para> +<itemizedlist> +<listitem><para>pass parameters and receive them with script execute calls</para></listitem> +<listitem><para>return a value from a script</para></listitem> +<listitem><para>create widgets on the fly</para></listitem> +<listitem><para>connect signals and slots on the fly</para></listitem> +<listitem><para>use a variable alias for a widget name</para></listitem> +<listitem><para>simple indexed array functions</para></listitem> +<listitem><para>directly access a widgets slots</para></listitem> +</itemizedlist> +</sect2> + +<sect2 id="invoking"> +<title>Invoking new parser</title> +<para> +To enable new parser, set <command>useInternalParser</command> property of the dialog to +<command>true</command>. You can also enable new parser in a single script by putting +<screen> +#!kommander +</screen> +on the first line of the script. Also note if you are using another scripting language in +a script with a shebang that &kommander; automatically enables the old parser for interacting +with the dialog. +<screen> +#!/bin/bash +echo @Self.item(0) +# returns first parameter passed to script +# echo $returnvalue passes back to calling script +</screen> +</para> +</sect2> +</sect1> +<!-- +</chapter> +<chapter id="features"> +--> +<sect1 id="features"> +<title>New Parser Features</title> + +<sect2 id="types"> +<title>Types</title> +<para> +Each value is of one of three types: string, integer or double. Type conversion is +automatic and chooses most appropriate type (for example, if you add double to integer, +result will be double). If one of the values is string, result will be string too. +</para> +<para>Places you can get into trouble here are getting a numerical value from a widget +and trying to perform a mathematical function on it. Since &kommander; uses <command>+</command> +to concatonate two strings of text it can treat <command>LineEdit1.text + 2</command> as +<command>22</command> instead of <command>2</command>. See the conversion functions in +<link linkend="string_functions">String functions</link> to avoid problems. +</para> +</sect2> + +<sect2 id="expressions"> +<title>Expressions</title> +<para> +The following mathematical operators are supported: <command>+, -, *, mod, </command>. Standard brackets +are of course supported as well. +</para> + +<para> +All kinds of comparisons are supported: <command><</command>, <command>></command>, <command><=</command>, +<command>>=</command>, <command>==</command>, <command>!=</command>. Instead of +<command>!=</command> you can also use <command><></command>. +Also, logical operators <command>and</command>, <command>or</command>, <command>not</command> +are supported, as well as their C equivalents (<command>&&</command>, <command>||</command>, <command>!</command>). +</para> + +<para> +For strings you can use <command>+</command> operator for string concatenation. +</para> + +<para> +Some examples of valid expressions: +<screen> +2+3 +-5 * (2 - 13 mod 3) +"This list has " + 12 + "items." +</screen> +</para> +</sect2> + +<sect2 id="variables"> +<title>Variables</title> +<para> +Variables don't need to be declared. Once you use variable, it is considered declared. +<link linkend="types">Type</link> of a variable is recognized automatically and can be changed later. +</para> + +<para> +Associative arrays are supported as well. They map string keys onto values of any type. To declare +such array, you can just add some element to it, for example: <command>A["Quanta"] = "Web editor"</command>. +Arrays are also handled by <link linkend="foreach">foreach </link> command and +<link linkend="array_functions">array functions</link>. +</para> + +<para> +Local and global variables are supported. Global variables are marked by leading underscore. +So, <command>myVar</command> is a local variable, but <command>_myVar</command> is global. The same applies +to arrays. +</para> + +<screen> +a = 5 +b = 2 * 5 - (a + 1) +c = "[Item " + b + "]" +d["MyKey"] = "MyValue" +d["MyKey2"] = 5 +</screen> + +<para> +Using variables for widgets works much as you would expect. This is useful when looping widgets into a table. +</para> + +<screen> +for i=0 to 10 do + mycombo = "ComboTable"+i + createWidget(mycombo, "ComboBox", "Form1") +end +</screen> +</sect2> + +<sect2 id="comments"> +<title>Comments</title> +<para> +You can use comments in &kommander; using the two traditional program language comment forms for line comments. For those users who are new to programming wondering <quote>what traditional form?</quote> see below. You can copy and paste the text below into a button or dialog initialization and see how comments behave in action. +</para> +<screen> +// this is a comment for one line +message_info("Hello World") //traditional first program +// the above comment also ignored - the messagebox is not +# this is also a comment +message_info("This message will show") +</screen> +<para> +Using the following multi-line comment will <emphasis>not</emphasis> work and will cause the rest of the widget execution to fail. +</para> +<screen> +/* +Hi, I was supposed to be a comment +None of the script after this will execute +DON'T USE THIS TYPE OF COMMENT IN KOMMANDER! +*/ +</screen> +</sect2> + +<sect2 id="globals"> +<title>Built in Globals</title> +<para> +&kommander; has some built in globals you may find handy. +</para> +<itemizedlist> +<listitem> +<para><command>_ARGS</command> - the argument string passed to the dialog on opening +</para></listitem> +<listitem> +<para><command>_ARGCOUNT</command> - the count of arguments passed. These can be retrieved as <command>ARG1</command> to <command>ARGn</command> where n is the total number of args passed +</para></listitem> +<listitem> +<para><command>_KDDIR</command> - the directory from which the dialog was run. &kommander; will default to your home directory, or a directory change if asked for it's current directory. This is useful for saving and reading files with the &kommander; file. +</para></listitem> +<listitem> +<para><command>_NAME</command> - there is no reason to use this so don't +</para></listitem> +<listitem> +<para><command>_PID</command> - the process id the current dialog is being run from - also available as just <emphasis>pid</emphasis> Avoid using this name for your variables! +</para></listitem> +<listitem> +<para><command>_VERSION</command> - this is handy if you want to display the version of &kommander; that is running +</para></listitem> +</itemizedlist> +</sect2> +<sect2 id="passargs"> +<title>Passing arguments in &kommander;</title> +<para>You can pass arguments via script parameters, signals and slots, command line parameters and DCOP. Let's look at scripts. Call your script like: +<screen>result = ScriptObject1.execute("Hello World") +debug(result)</screen> +Inside your script you might have the following +<screen>var = str_upper(Self.Item(0)) +return(var)</screen> +Now you will get a return in your <emphasis>Stderr</emphasis> message log of <emphasis>HELLO WORLD</emphasis> +</para> +<para>Receiving a signal connected to a script slot works the same way. <emphasis>Self.Item(0)</emphasis> is parameter one and so on. You can retrieve the count of arguments passed with <emphasis>ScriptObject.count</emphasis>. +</para> +<para>Command line parameters allow for named or unnamed arguments. Unnamed look like +<screen>kmdr-executor myprog.kmdr 100 red</screen> +Where you will find _ARG1 = 100 and _ARG2 = red. One quirk is passing strings with spaces as an argument means they need to be quoted. Using the dialog command complicates matters as the entire argument string must pass as one string, meaning in quotes. +<screen>dialog("mydialog.kmdr", 100+" \"Hello World\"")</screen> +This returns <emphasis>_ARG1 = 100</emphasis> and <emphasis>_ARG2 = Hello World</emphasis>. Without the escaped quotes you would have <emphasis>_ARG2 = Hello</emphasis> and <emphasis>_ARG3 = World</emphasis>. Using Named Parameters is rather nice and potentially less confusing. +<screen>dialog("mydialog.kmdr", "xcount=100 xquote=Hello world")</screen> +And now you access those with <emphasis>_xcount</emphasis> and <emphasis>_xquote</emphasis> global variables. +</para> +<para> +DCOP can be complex, which is why we recommend using the tools we develop to enable creating DCOP for remote &kommander; dialogs with something like a function browser. Here is an example DCOP call issued from a dialog opened from a parent &kommander; window. Since it knows who its parent is it can send information back while it is open and freely access all its parent's functionality with the exception of slots. Of course that can be done internally with a script which can be called externally, so in practice there is no limit to what can be done. +<screen>dcop("kmdr-executor-"+parentPid, "KommanderIf", "setText(QString,QString)", "StatusBar8", "Hello")</screen> +Let's look at this piece by piece. First of all we add <emphasis>parentPid</emphasis> to "kmdr-executor-" as we make no assumption a &kommander; window was the caller. You could use this with Quanta or KSpread or whatever. Next we are addressing <emphasis>KommanderIf</emphasis>, which is a <emphasis>nice</emphasis> interface for end users which has been cleaned up. We hope eventually as KDE moves from DCOP to DBUS on KDE4 that more applications adopt a nice interface for integration. The next parameter, <emphasis>"setText(QString,QString)"</emphasis> is important because it <emphasis>prototypes</emphasis> the parameters allowed. Otherwise &kommander; could not validate the call. So without a definition of the DCOP call being used you will get an error. The remaining parameters are of course what is being passed. We recommend you look at applications with <command>kdcop</command> to see how this works and practice dcop calls from the shell to get your syntax right. +</para> +</sect2> +</sect1> +<!-- +</chapter> +--> +<sect1 id="parser_commands"> + +<title>Commands</title> +<para> +Various structure commands are supported. They can be freely nested. +</para> + +<para> +There are also three special commands: <command>exit</command>, <command>break</command> and <command>continue</command>. +The first one ends script execution and returns. The second exits current block (<link linkend="while">while</link>, +<link linkend="for">for</link> or <link linkend="foreach">foreach</link> and the third exits just a current step, restarting +from the beginning of the loop. +</para> + + +<sect2 id="if"> +<title>if</title> +<para> +Command <command>if</command> has following syntax: +</para> + +<para> +<command>if</command> <emphasis>condition</emphasis> <command>then</command> +<emphasis>code</emphasis> <command>elseif</command> <emphasis>condition</emphasis> +<command>then</command> <emphasis>code</emphasis> <command>else</command> +<emphasis>code</emphasis> <command>endif</command> +</para> + +<para> +Both <command>elseif</command> and <command>else</command> parts are optional. <emphasis>Condition</emphasis> +is any expression. <emphasis>Code</emphasis> is executed if condition is true. That means: +<itemizedlist> +<listitem><para>non-zero for integers and double</para></listitem> +<listitem><para>non-empty for strings</para></listitem> +</itemizedlist> +</para> + +<screen> +if a * 2 > 7 then + b = 1 +elseif a < 0 then + b = 2 +elseif + b = 0 +endif +</screen> +</sect2> + +<sect2 id="while"> +<title>while</title> +<para> +<command>while</command> <emphasis>condition</emphasis> <command>do</command> +<emphasis>code</emphasis> <command>end</command> +</para> + +<para> +<emphasis>Condition</emphasis> is recalculated each time loop is executed. +<screen> +while i < 15 do + i = i + a +end +</screen> +</para> + + +</sect2> + +<sect2 id="for"> +<title>for</title> +<para> +Command <command>for</command> has following syntax: +</para> + +<para> +<command>for</command> <emphasis>variable</emphasis> <command>=</command> +<emphasis>start value</emphasis> <command>to</command> <emphasis>end value</emphasis> +<command>step</command> <emphasis>expression</emphasis> <command>do</command> +<emphasis>code</emphasis> <command>end</command> +</para> + +<para> +Loop is executed starting from <emphasis>start value</emphasis> and it is ended when variable's value is +bigger then <emphasis>end value</emphasis>. If <command>step</command> part is specified, on each step +variable's value is increased by given value instead of <command>1</command>. +<screen> +foreach i = 1 to 20 step 5 do + a = a + 2 * i +end +</screen> +</para> +</sect2> + +<sect2 id="foreach"> +<title>foreach</title> +<para> +Command <command>foreach</command> has following syntax: +</para> + +<para> +<command>for</command> <emphasis>variable</emphasis> <command>in</command> +<emphasis>array</emphasis> <command>do</command> +<emphasis>code</emphasis> <command>end</command> +</para> + +<para> +Loop is executed for each key in given array. In each step variable is assigned the next key from the array. + +<screen> +sum = 0 +foreach i in myArray do + sum = sum + myArray[i] +end +</screen> +</para> +</sect2> +</sect1> +<!-- +</chapter> +--> +<sect1 id="functions"> + +<title>Functions</title> +<para> +Most old parser functions are supported by new parser. Also, some new functions were added. +</para> + + +<sect2 id="string_functions"> +<title>String functions</title> +<para>String functions are the same as in old parser, the only difference is that their names +are preceeded by <command>str_</command> instead of <command>@String.</command> + +<itemizedlist> +<listitem> +<para><command>str_length(<parameter>string</parameter>)</command> - returns length of <emphasis>string</emphasis> +</para></listitem> +<listitem> +<para><command>str_contains(<parameter>string</parameter>, <parameter>text</parameter>)</command> - returns 1 if <emphasis>string</emphasis> contains <emphasis>text</emphasis> +</para></listitem> +<listitem> +<para><command>str_find(<parameter>string</parameter>, <parameter>text</parameter>, <parameter>start</parameter>)</command> - returns position of the first occurrence of <emphasis>text</emphasis> in <emphasis>string</emphasis>; optional <emphasis>start</emphasis> + specifies start of the search +</para></listitem> +<listitem> +<para><command>str_find(<parameter>string</parameter>, <parameter>text</parameter>, <parameter>start</parameter>)</command> - returns position of the last occurrence of <emphasis>text</emphasis> in <emphasis>string</emphasis>; optional <emphasis>start</emphasis> + specifies start of the search +</para></listitem> +<listitem> +<para><command>str_left(<parameter>string</parameter>, <parameter>count</parameter>)</command> - returns first <emphasis>count</emphasis> characters of <emphasis>string</emphasis> +</para></listitem> +<listitem> +<para><command>str_right(<parameter>string</parameter>, <parameter>count</parameter>)</command> - returns last <emphasis>count</emphasis> characters of <emphasis>string</emphasis> +</para></listitem> +<listitem> +<para><command>str_right(<parameter>string</parameter>, <parameter>start</parameter>, <parameter>count</parameter>)</command> - returns substring of <emphasis>string</emphasis> starting from <emphasis>start</emphasis> and containing <emphasis>count</emphasis> +characters (or everything to the end of the string if last parameter is not specified) +</para></listitem> +<listitem> +<para><command>str_remove(<parameter>string</parameter>, <parameter>text</parameter>)</command> - returns <emphasis>string</emphasis> with all substrings equal to <emphasis>text</emphasis> removed +</para></listitem> +<listitem> +<para><command>str_replace(<parameter>string</parameter>, <parameter>text</parameter>, <parameter>text2</parameter>)</command> - returns <emphasis>string</emphasis> with all substrings equal to <emphasis>text</emphasis> replaced with <emphasis>text2</emphasis> +</para></listitem> +<listitem> +<para><command>str_lower(<parameter>string</parameter>)</command> - returns <emphasis>string</emphasis> converted to lowercase +</para></listitem> +<listitem> +<para><command>str_upper(<parameter>string</parameter>)</command> - returns <emphasis>string</emphasis> converted to uppercase +</para></listitem> +<listitem> +<para><command>str_section(<parameter>string</parameter>, <parameter>separator</parameter>, <parameter>start</parameter>, +<parameter>end</parameter>)</command> - returns substring containing appropriate sections of <emphasis>string</emphasis> determined +by <emphasis>separator</emphasis>; if no <emphasis>end</emphasis> is given, single <emphasis>start</emphasis> section is returned +</para></listitem> +<listitem> +<para><command>str_args(<parameter>string</parameter>, <parameter>...</parameter>)</command> - returns <emphasis>string</emphasis> with <command>%1</command>, <command>%2</command>, <command>%3</command> replaced with following parameters. +</para></listitem> +<listitem> +<para><command>str_isnumber(<parameter>string</parameter>)</command> - returns 1 if <emphasis>string</emphasis> is a valid number +</para></listitem> +<listitem> +<para><command>str_isempty(<parameter>string</parameter>)</command> - returns 1 if <emphasis>string</emphasis> is empty +</para></listitem> +<listitem> +<para><command>str_toint(<parameter>string</parameter>, <parameter>default</parameter>)</command> - returns <emphasis>string</emphasis> converted to integer; if conversion is not possible, optional <emphasis>default</emphasis> value is returned +</para></listitem> +<listitem> +<para><command>str_todouble(<parameter>string</parameter>, <parameter>default</parameter>)</command> - returns <emphasis>string</emphasis> converted to double; if conversion is not possible, optional <emphasis>default</emphasis> value is returned +</para></listitem> +</itemizedlist></para> +</sect2> + +<sect2 id="kommander_functions"> +<title>&kommander; functions</title> +<para> +Most &kommander; functions are supported; some (such as <command>expr</command>) +were obsoleted by new parser and are not available. +</para> + +<itemizedlist> +<listitem> +<para><command>debug(<parameter>string</parameter>, <parameter>...</parameter>)</command> - writes all parameters on stderr +</para></listitem> +<listitem> +<para><command>echo(<parameter>string</parameter>, <parameter>...</parameter>)</command> - writes all parameters on stdout +</para></listitem> +<listitem> +<para><command>dcop(<parameter>string</parameter>, <parameter>...</parameter>)</command> - calls DCOP function</para> +</listitem> +<listitem> +<para><command>exec(<parameter>string</parameter>, <parameter>shell</parameter>)</command> - executes external program +(using optional <emphasis>shell</emphasis>); block the execution of the current dialog until the program passed as the parameter exits; returns output of that program +</para></listitem> +<listitem> +<para><command>i18n(<parameter>string</parameter>)</command> - marks <emphasis>string</emphasis> for future translation +</para></listitem> +<listitem> +<para><command>env(<parameter>string</parameter>)</command> - returns a value of environmental variable +</para></listitem> +<listitem> +<para><command>readSetting(<parameter>key</parameter>, <parameter>default</parameter>)</command> - returns a value stored in config +file with given <emphasis>key</emphasis>; if there is no such value <emphasis>default</emphasis> is returned +</para></listitem> +<listitem><para> +<command>writeSetting(<parameter>key</parameter>, <parameter>value</parameter>)</command> - writes pair +<emphasis>key</emphasis> and <emphasis>value</emphasis> in config file +</para></listitem> +</itemizedlist> +<para>New in &kommander; 1.3</para> +<itemizedlist> +<listitem> +<para><command>execBackground(<parameter>string</parameter>, <parameter>shell</parameter>)</command> - executes external program +(using optional <emphasis>shell</emphasis>) in the background, without blocking the current dialog; contrary to the above <command>exec</command> function, it will not return the output of the program. +</para></listitem> +<listitem> +<para><command>return(<parameter>value</parameter>)</command> - returns a value to the calling object (script, button...) +</para></listitem> +<listitem> +<para><command>createWidget(<parameter>widgetname</parameter>, <parameter>widgettype</parameter>, <parameter>parent</parameter>)</command> - creates a new widget. You can then place it in a table or toolbox, for example and use <command>mywidget.show(true)</command> to make it visible. If you are putting an new widget on the form you need to consider layout issues. &kommander; will not create layouts on the fly or edit pixel by pixel positioning (in most cases). This is confusing even in C++ development. We recommend you use a groupbox and do a layout in the dialog +for best control. +</para></listitem> +<listitem> +<para><command>connect(<parameter>sender</parameter>, <parameter>signal</parameter>, <parameter>receiver</parameter>, <parameter>slot</parameter>)</command> - connect a widget signal to a widget slot. See the connection dialog and select similar widgets for possibilities. If for instance a signal looks like looks like <command>execute(const QString&)</command> that is exactly what must be in quotes there. +</para></listitem> +<listitem> +<para><command>disconnect(<parameter>sender</parameter>, <parameter>signal</parameter>, <parameter>receiver</parameter>, <parameter>slot</parameter>)</command> - undo the connection as listed above. Again, exact syntax is essential. +</para></listitem> +<listitem> +<para><command>widgetExists(<parameter>widgetname</parameter>)</command> - remember you can use a variable name to reference a widget now. Use this when accessing created widgets to insure they are there. Calling a non-existant widget obviously will throw an error. +</para></listitem> +</itemizedlist> +</sect2> + +<sect2 id="array_functions"> +<title>Array functions</title> +<para> +Most array functions are supported; some (such as <command>value</command>) +were obsoleted by new parser and are not available. The only difference is that their names +are preceeded by <command>array_</command> instead of <command>@Array.</command> +</para> + +<warning><para>Due to parser limitation, name of array has to be specified as string now; for example +<command>array_count("MyArray")</command>.</para></warning> + +<itemizedlist> +<listitem> +<para><command>array_clear(<parameter>array</parameter>)</command> - removes all elements from <emphasis>array</emphasis> +</para></listitem> +<listitem> +<para><command>array_count(<parameter>array</parameter>)</command> - returns number of elements in <emphasis>array</emphasis> +</para></listitem> +<listitem> +<para><command>array_keys(<parameter>array</parameter>)</command> - returns string containing EOL-separated keys of <emphasis>array</emphasis> - note that if you had imported a scalar (keys without values, see below for an example) into an array with &kommander; you would not be able to access it with <command>array_values("myarray")</command> as you might think (since it seems to only have values) but would instead need to use <command>array_keys("myarray")</command>. You might find a better choice for this is to use the new <emphasis>indexed arrays</emphasis> described below. +</para></listitem> +<listitem> +<para><command>array_values(<parameter>array</parameter>)</command> - returns string containing EOL-separated values of <emphasis>array</emphasis> +</para></listitem> +<listitem> +<para><command>array_tostring(<parameter>array</parameter>)</command> - returns string containing whole <emphasis>array</emphasis> +as EOL-separated pairs containing key and value separated with TAB character +</para></listitem> +<listitem> +<para><command>array_fromstring(<parameter>array</parameter>, <parameter>string</parameter>)</command> - reads array from <emphasis>string</emphasis> (usually provided by <command>array_tostring</command> function) +</para></listitem> +<listitem> +<para><command>array_remove(<parameter>array</parameter>, <parameter>key</parameter>)</command> - removes item with key +<emphasis>key</emphasis> from <emphasis>array</emphasis> +</para></listitem> +</itemizedlist> +<para>Here is an example for array manipulation:</para> +<screen> +array_fromstring("myArray", "1\tA\nsecond\tB\n3\tC") +foreach key in myArray do + debug("myArray[" + key + "]= " + myArray[key]) +end +</screen> +<para>This will print out the following to the stderr. It is visible that there is no guarantee about the order of array elements, as well that the keys are strings, not numbers.</para> +<screen> +myArray[1]= A +myArray[3]= C +myArray[second]= B +</screen> +<para>Another example for keyless arrays:</para> +<screen> +array_fromstring("myArray", "A\nB\nC") +foreach key in myArray do + debug(key) +end +debug("Array elements:\n" + array_keys("myArray")) +</screen> +<para>This results in:</para> +<screen> +A +B +C +Array elements: +A +B +C +</screen> + +<para>New in &kommander; 1.3</para> +<itemizedlist> +<listitem> +<para><command>array_indexedFromString(<parameter>array</parameter>, <parameter>string</parameter>, <parameter>separator</parameter>)</command> - this compensates for &kommander; not having indexed arrays. it creates an array with a zero based sequential index. Remember to use quotes on the array name and any strings not represented by a variable. The separator argument is optional and defaults to "\t" [TAB] which is used to separate fields reading and writing tables, arrays or detail widgets. <emphasis>Remember this array index does not enforce any rules on its self. It is just like you created it with a for loop, just more convenient.</emphasis> +</para></listitem> +<listitem> +<para><command>array_indexedInsertElements(<parameter>array</parameter>, <parameter>key</parameter>, <parameter>string</parameter>, <parameter>separator</parameter>)</command> - this function is part of the indexed array suite and enables you to insert elements in your array while maintaining an index that is sequential, contiguous and unique. Set the index key to start at and the text string and how it is separated. The elements will be added shifting all the index numbers after by the number added. +</para></listitem> +<listitem> +<para><command>array_indexedRemoveElements(<parameter>array</parameter>, <parameter>key start</parameter>, <parameter>number</parameter>)</command> - this enables you to remove elements from an indexed array and avoid gaps in your index. Specify the key to start at and optionally how many to remove. The default is one. You will end up with a re-indexed array less the removed elements. +</para></listitem> +<listitem> +<para><command>array_indexedToString(<parameter>array</parameter>, <parameter>separator</parameter>)</command> - this enables you to convert your indexed array back into a string, particularly useful for detail widgets. For instance if you are displaying a database query result in TreeWidget1 and it has six columns you can use <command>TreeWidget1.selection</command> to get the selected row. it will be separated by tabs and you could look at a the fifth element by using <command>str_section(TreeWidget1.selection, "\t", 4)</command> (remember it is zero based). That's nice for reading a value, but if you want to change it you can see you have a lot more work to do. After you split that string you have to reassemble with <command>val1+"\t"+val2...</command> Using indexed arrays you could edit that fifth element like so... +<screen> +idx = TreeWidget1.currentItem +array_indexedFromString("z", TreeWidget1.selection) +z[4] = "new value" +TreeWidget1.removeItem(idx) +TreeWidget1.insertItem(array_indexedToString("z"), idx) +</screen> +Note that only two short lines were added to accomplish this! This was very welcome for database use. +</para></listitem> +</itemizedlist> +</sect2> + + +<sect2 id="file_functions"> +<title>File functions</title> +<para> +All file functions are supported, the only difference is that their names +are preceeded by <command>file_</command> instead of <command>@File.</command> +</para> + +<itemizedlist> +<listitem> +<para><command>file_read(<parameter>name</parameter>)</command> - returns content of file <emphasis>name</emphasis> +</para></listitem> +<listitem> +<para><command>file_write(<parameter>name</parameter>, <parameter>...</parameter>)</command> - writes all arguments +to file <emphasis>name</emphasis> +</para></listitem> +<listitem> +<para><command>file_append(<parameter>name</parameter>, <parameter>...</parameter>)</command> - appends all arguments +to file <emphasis>name</emphasis> +</para></listitem> +</itemizedlist> +</sect2> + + +<sect2 id="input_functions"> +<title>Input functions</title> +<para> +These functions show some dialog allowing user to enter some value. They are accessible in the old parser using <command>@Input.</command>. For most functions all parameters are optional, exception is +<command>input_text</command> which requires 2 parameters and <command>input_value</command> which requires 5 parameters. +</para> + +<itemizedlist> +<listitem> +<para><command>input_color(<parameter>caption</parameter>, <parameter>default</parameter>)</command> - returns color in #RRGGBB format +</para></listitem> +<listitem> +<para><command>input_text(<parameter>caption</parameter>, <parameter>label</parameter>, <parameter>default</parameter>)</command> - returns text entered by user +</para></listitem> +<listitem> +<para><command>input_value(<parameter>caption</parameter>, <parameter>label</parameter>, <parameter>default</parameter>, +<parameter>min</parameter>, <parameter>max</parameter>, <parameter>step</parameter>)</command> - returns value entered by user +</para></listitem> +<listitem> +<para><command>input_directory(<parameter>startdir</parameter>, <parameter>filter</parameter>, <parameter>caption</parameter>)</command> - returns directory selected by user +</para></listitem> +<listitem> +<para><command>input_openfile(<parameter>caption</parameter>, <parameter>label</parameter>, <parameter>default</parameter>)</command> - returns existing file entered by user +</para></listitem> +<listitem> +<para><command>input_savefile(<parameter>caption</parameter>, <parameter>label</parameter>, <parameter>default</parameter>)</command> - returns file entered by user (if file exists, confirmation will be required) +</para></listitem> +<listitem> +<para><command>input_openfiles(<parameter>caption</parameter>, <parameter>label</parameter>, <parameter>default</parameter>)</command> - returns string of EOL-separated existing files entered by user +</para></listitem> +</itemizedlist> +</sect2> + + +<sect2 id="message_functions"> +<title>Message functions</title> +<para> +These functions show some message for user or ask user to confirm some action. In the old parser use <command>@Message.</command> instead. +</para> + +<itemizedlist> +<listitem> +<para><command>message_info(<parameter>text</parameter>, <parameter>caption</parameter>)</command> - shows information text +</para></listitem> +<listitem> +<para><command>message_error(<parameter>text</parameter>, <parameter>caption</parameter>)</command> - shows error text +</para></listitem> +<listitem> +<para><command>message_warning(<parameter>text</parameter>, <parameter>caption</parameter>, <parameter>button1</parameter>, +<parameter>button2</parameter>, <parameter>button3</parameter>)</command> - shows question with warning and up to three buttons; number +of chosen button is returned; if no button names are specified, <command>Yes</command> and <command>No</command> will be displayed +</para></listitem> +<listitem> +<para><command>message_question(<parameter>text</parameter>, <parameter>caption</parameter>, <parameter>button1</parameter>, +<parameter>button2</parameter>, <parameter>button3</parameter>)</command> - shows question and up to three buttons; number +of chosen button is returned; if no button names are specified, <command>Yes</command> and <command>No</command> will be displayed +</para></listitem> +</itemizedlist> +</sect2> +</sect1> +</chapter> + + + diff --git a/doc/kommander/pixlabel.png b/doc/kommander/pixlabel.png Binary files differnew file mode 100644 index 00000000..32b90d82 --- /dev/null +++ b/doc/kommander/pixlabel.png diff --git a/doc/kommander/progress.png b/doc/kommander/progress.png Binary files differnew file mode 100644 index 00000000..29416702 --- /dev/null +++ b/doc/kommander/progress.png diff --git a/doc/kommander/pushbutton.png b/doc/kommander/pushbutton.png Binary files differnew file mode 100644 index 00000000..61f779ce --- /dev/null +++ b/doc/kommander/pushbutton.png diff --git a/doc/kommander/q-and-a.docbook b/doc/kommander/q-and-a.docbook new file mode 100644 index 00000000..2b76331c --- /dev/null +++ b/doc/kommander/q-and-a.docbook @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<chapter id="faq"> +<chapterinfo> +<title>Questions and Answers</title> +</chapterinfo> + +<title>Questions and Answers</title> +<para>The list of Frequently Asked Questions can be found on <ulink url="http://kommander.kdewebdev.org/faq.php">our home page</ulink>. +</para> +</chapter> diff --git a/doc/kommander/radiobutton.png b/doc/kommander/radiobutton.png Binary files differnew file mode 100644 index 00000000..10c1d8c3 --- /dev/null +++ b/doc/kommander/radiobutton.png diff --git a/doc/kommander/richtextedit.png b/doc/kommander/richtextedit.png Binary files differnew file mode 100644 index 00000000..73573a8a --- /dev/null +++ b/doc/kommander/richtextedit.png diff --git a/doc/kommander/shadow.png b/doc/kommander/shadow.png Binary files differnew file mode 100644 index 00000000..37c44694 --- /dev/null +++ b/doc/kommander/shadow.png diff --git a/doc/kommander/shellscript.png b/doc/kommander/shellscript.png Binary files differnew file mode 100644 index 00000000..59de8cfe --- /dev/null +++ b/doc/kommander/shellscript.png diff --git a/doc/kommander/slider.png b/doc/kommander/slider.png Binary files differnew file mode 100644 index 00000000..525bd1ca --- /dev/null +++ b/doc/kommander/slider.png diff --git a/doc/kommander/specials.docbook b/doc/kommander/specials.docbook new file mode 100644 index 00000000..ddd3e3b6 --- /dev/null +++ b/doc/kommander/specials.docbook @@ -0,0 +1,371 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<sect1 id="specials"> +<sect1info> +<title>Specials and Built-in Global Variables</title> +</sect1info> + +<title>Specials and Built-in Global Variables</title> + +<para> +Specials are functions that are processed by &kommander;. You should be aware that whe using the old style parser all &kommander; specials will be executed first and then the script will be executed. In most cases this is not a problem, but in a few (mostly in loops, conditions) it is. +</para> +<note><para>The below list might be slightly outdated. It is recommended to use the <guilabel>Function Browser</guilabel> to get help about the available functions. +The <guilabel>Function Browser</guilabel> can be reached from inside the <guilabel>Kommander Text</guilabel> editor, by clicking the <guilabel>Function...</guilabel> button. +</para> +</note> + +<variablelist> +<varlistentry> +<term><function>@dcop(<parameter>appId</parameter>, <parameter>object</parameter>, <parameter>function</parameter>, <parameter>arguments</parameter>)</function></term> +<listitem> +<para> +Make a &DCOP; call. @dcop(<quote>kmail</quote>, <quote>KMailIface</quote>, <quote>checkMail()</quote>, <quote></quote>) +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@dcopid</function></term> +<listitem> +<para> +The &DCOP; id of the process. (kmdr-executor-@pid) +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@dialog(<parameter>dialog</parameter>[,<parameter>parameters</parameter>])</function></term> +<listitem> +<para> +Launches the specified Kommander dialog. Dialog is sought in dialog directory and in current directory - in that order. This prepends the call to the executor and sets the default directory to the one the Kommander application is in. Parameters can be passed in the usual Unix way or you can pass named parameters like <quote>variable=value</quote>. You can then find passed parameters in the global pool. @global(variable) would return <quote>value</quote>. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@env(<parameter>environmentVariable</parameter>)</function></term> +<listitem> +<para> +Expands to the specified environment variable. @env(PWD) expands to $PWD. Remember that <quote>$</quote> is part of the shell and shouldn't be used. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@exec(<parameter>command</parameter >)</function></term> +<listitem> +<para> +returns the output of executing the specified command. @exec(ls -l). +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@execBegin ... @execEnd</function ></term> +<listitem> +<para> +same as <function>@exec</function>, but supports shebang and multiline scripts. This serves for various scripting languages either by decalring them or using a shebang. +</para> +<itemizedlist> +<listitem><para><function>@execBegin(php)</function></para></listitem> +<listitem><para><function>@execBegin</function>(#!/usr/bin/php)</para></listitem> +</itemizedlist> +<para>The first one uses the name of the <acronym>PHP</acronym> executable. &kommander; searches PATH for <application>php</application> and if it is not found looks to see if it is registered with &kommander; in a location outside of your path. If not it tells the user it cannot be found. The second examples uses the classic <quote>shebang</quote> which can have some benefits and also problems. If you have a beta copy of <acronym>PHP5</acronym>, for instance, in <filename>/usr/local/bin</filename> which would not be found because it would find on in <filename>/usr/bin</filename> this is useful. If, however, you distribute the dialog to someone who has <acronym>PHP</acronym> in <filename>/usr/local/bin</filename> only it will not be found with the shebang used. So using shebangs is cautioned and using the executable is recommenede if you are sharing files.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@global(<parameter>variable</parameter>)</function></term> +<listitem> +<para>expands to the value of the specified global variable. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@null</function></term> +<listitem> +<para>Returns null. Now that Kommander checks for empty widgetText on execution this will prevent erroneous errors in the case of an unset state on a widget.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@parentPid</function></term> +<listitem> +<para> +The &PID; of the parent process. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@pid</function></term> +<listitem> +<para> +The &PID; of the process. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@readSetting(<parameter>key</parameter >, <parameter>defaultValue</parameter >)</function></term> +<listitem> +<para> +reads a value from <filename>kommanderrc</filename>. See also @writeSetting. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@selectedWidgetText</function ></term> +<listitem> +<para> +the selected content in a widget that can show more than one value, like list widgets +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@setGlobal(<parameter>variable</parameter>, <parameter>value</parameter>)</function></term> +<listitem> +<para> +Sets the global variable to the specified value. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@widgetText</function></term> +<listitem> +<para> +the content of a widget +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@writeSetting(<parameter>key</parameter>, <parameter>value</parameter >)</function ></term> +<listitem> +<para> +write value to <filename>kommanderrc</filename>. All &kommander; dialogs share the same kommanderc file, each one will have its own section inside it. +</para> +</listitem> +</varlistentry> +</variablelist> + +<sect2 id="arrays"> +<title>Array Function Group</title> + +<variablelist> +<varlistentry> +<term><function>@Array.values(<parameter>array</parameter>)</function></term> +<listitem> +<para>Returns an EOL-separated list of all values in the array. Can be used to walk through an array.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@Array.keys(<parameter>array</parameter>)</function></term> +<listitem> +<para>Returns an EOL-separated list of all keys in the array.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@Array.setValue(<parameter>array</parameter>, <parameter>key</parameter>, <parameter>value</parameter>)</function></term> +<listitem> +<para>Sets a key and value for an element of an array. If no array exists it is created.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@Array.clear(<parameter>array</parameter>)</function></term> +<listitem> +<para>Remove all elements from the array.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@Array.count(<parameter>array</parameter>)</function></term> +<listitem> +<para>Return number of elements in the array.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@Array.value(<parameter>array</parameter>,<parameter>key</parameter>)</function></term> +<listitem> +<para>Return the value associated with the given key.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@Array.remove(<parameter>array</parameter>,<parameter>key</parameter>)</function></term> +<listitem> +<para>Remove element with the given key from the array.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@Array.fromString(<parameter>array</parameter>,<parameter>string</parameter>)</function></term> +<listitem> +<para>Add all elements in the string to the array. String should have <emphasis>key\tvalue\n</emphasis> format."</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@Array.toString(<parameter>array</parameter>,<parameter>string</parameter>)</function></term> +<listitem> +<para>"Return all elements in the array in <emphasis>key\tvalue\n</emphasis> format."</para> +</listitem> +</varlistentry> + +</variablelist> +</sect2> + +<sect2 id="files"> +<title>File Function Group</title> +<variablelist> + +<varlistentry> +<term><function>@File.read(<parameter>file</parameter>)</function></term> +<listitem> +<para>Return content of the given file.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@File.write(<parameter>file</parameter><parameter>string</parameter>)</function></term> +<listitem> +<para>Write given string to a file.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@File.append(<parameter>file</parameter><parameter>string</parameter>)</function></term> +<listitem> +<para>Append given string to the end of a file.</para> +</listitem> +</varlistentry> + +</variablelist> +</sect2> + +<sect2 id="strings"> +<title>String Function Group</title> +<variablelist> + +<varlistentry> +<term><function>@String.length(<parameter>string</parameter>)</function></term> +<listitem> +<para>Return number of chars in the string.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@String.contains(<parameter>string</parameter>,<parameter>substring</parameter>)</function></term> +<listitem> +<para>Check if the string contains given substring.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@String.find(<parameter>string</parameter>)</function></term> +<listitem> +<para>Return position of a substring in the string, or -1 if it isn't found."</para> +<note><para>This will have an optional integer start postion for find next uses in Alpha 6.</para></note> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@String.left(<parameter>string</parameter>, <parameter>int</parameter>)</function></term> +<listitem> +<para>Return first n chars of the string.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@String.right(<parameter>string</parameter>, <parameter>int</parameter>)</function></term> +<listitem> +<para>Return last n chars of the string.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@String.mid(<parameter>string</parameter>, <parameter>int start</parameter>, <parameter>int end</parameter>)</function></term> +<listitem> +<para>Return substring of the string, starting from given position.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@String.remove(<parameter>string</parameter>, <parameter>substring</parameter>)</function></term> +<listitem> +<para>Remove all occurences of a given substring.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@String.replace(<parameter>string</parameter>, <parameter>substring find</parameter>, <parameter>substring replace</parameter>)</function></term> +<listitem> +<para>Replace all occurences of a given substring with a given replacement.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@String.upper(<parameter>string</parameter>)</function></term> +<listitem> +<para>Convert the string to uppercase.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@String.lower(<parameter>string</parameter>)</function></term> +<listitem> +<para>Convert the string to lowercase.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@String.compare(<parameter>string</parameter>, <parameter>string</parameter>)</function></term> +<listitem> +<para>Compare two strings. Return 0 if they are equal, -1 if the first one is lower, 1 if the first one is higher</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@String.isEmpty(<parameter>string</parameter>)</function></term> +<listitem> +<para>Check if string is empty.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><function>@String.isNumber(<parameter>string</parameter>)</function></term> +<listitem> +<para>Check if string is a valid number.</para> +</listitem> +</varlistentry> + +</variablelist> +</sect2> + +<sect2 id="builtins"> +<title>Built-in Globals</title> +<para>Built-in globals are accessed just like regular global variables with <function>@global</function>.</para> +<variablelist> +<varlistentry> +<term><function>@global(_KDDIR)</function></term> +<listitem> +<para>The directory the current dialog is in.</para> +</listitem> +</varlistentry> +<varlistentry> +<term><function>@global(_NAME)</function></term> +<listitem><para>The name of the dialog</para></listitem> +</varlistentry> +</variablelist> +</sect2> + +</sect1> diff --git a/doc/kommander/spinbox.png b/doc/kommander/spinbox.png Binary files differnew file mode 100644 index 00000000..7ae20630 --- /dev/null +++ b/doc/kommander/spinbox.png diff --git a/doc/kommander/statusbar.png b/doc/kommander/statusbar.png Binary files differnew file mode 100644 index 00000000..ac08552d --- /dev/null +++ b/doc/kommander/statusbar.png diff --git a/doc/kommander/table.png b/doc/kommander/table.png Binary files differnew file mode 100644 index 00000000..4bbd9c2d --- /dev/null +++ b/doc/kommander/table.png diff --git a/doc/kommander/tabwidget.png b/doc/kommander/tabwidget.png Binary files differnew file mode 100644 index 00000000..1254bb63 --- /dev/null +++ b/doc/kommander/tabwidget.png diff --git a/doc/kommander/textbrowser.png b/doc/kommander/textbrowser.png Binary files differnew file mode 100644 index 00000000..090e2f84 --- /dev/null +++ b/doc/kommander/textbrowser.png diff --git a/doc/kommander/textedit.png b/doc/kommander/textedit.png Binary files differnew file mode 100644 index 00000000..823d0818 --- /dev/null +++ b/doc/kommander/textedit.png diff --git a/doc/kommander/timer.png b/doc/kommander/timer.png Binary files differnew file mode 100644 index 00000000..e2e17452 --- /dev/null +++ b/doc/kommander/timer.png diff --git a/doc/kommander/toolbox.png b/doc/kommander/toolbox.png Binary files differnew file mode 100644 index 00000000..2ab71dc7 --- /dev/null +++ b/doc/kommander/toolbox.png diff --git a/doc/kommander/translating.docbook b/doc/kommander/translating.docbook new file mode 100644 index 00000000..15db90bd --- /dev/null +++ b/doc/kommander/translating.docbook @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<chapter id="translating"> +<chapterinfo> +<authorgroup> +<author> +<firstname>András</firstname> +<surname>Mantia</surname> +<affiliation><address><email>amantia@kde.org</email></address></affiliation> +</author> +<author> +<firstname>Michal</firstname> +<surname>Rudolf</surname> +<affiliation><address><email>mrudolf@kdewebdev.org</email></address></affiliation> +</author> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> +</chapterinfo> +<title>Translating &kommander; dialogs</title> + +<sect1 id="translation-howto"> +<title>Translating &kommander; dialogs</title> +<para> +&kommander; dialogs can be translated to different languages. The mechanism is similar to the translation of other &kde; applications. The dialog is written in English, the texts that are needed to be translated are specially marked. A tool extracts these strings, another tool can be used to translate them. The translation then can be compiled and installed and the dialog will automatically recognize and use it. +</para> +<para> +Here is a short description about the needed steps to make a dialog translatable and translated it: +<orderedlist> +<listitem><para>How to prepare dialog to be translated?</para> +<para>Always use <emphasis>@i18n("This is my text")</emphasis> when you use some English text. This marks "This is my text" as a text to be translated.</para> +</listitem> + +<listitem><para>How to extract the messages and create the .po file?</para> +<para> + Use the <command>kmdr2po</command> script to extract the strings. The script is inside the <emphasis>working</emphasis> directory of the source release tarball and should be installed to <command>$KDEDIR/share/apps/kommander/translating</command> as well. +</para> +<para> +Just run: +<screen> +kmdr2po <your-kommander-dialog.kmdr> +</screen> +An appropriate <your-kommander-dialog.po> file will be created. +</para> +</listitem> + +<listitem> +<para>How to translate it?</para> +<para>Use <command>KBabel</command> to translate it. <command>Use msgfmt</command> to compile the translation. Look at <ulink url="http://i18n.kde.org">http://i18n.kde.org</ulink> for help on this subject.</para> +</listitem> + +<listitem><para>How to install the translation?</para> +<para>Put the compiled *.mo file either to</para> +<para><command>$KDEDIR/share/locale/<your language>/LC_MESSAGES/</command> (will be available globally for all users)</para> +<para>or to </para> +<para><command>$HOME/.kde/share/locale/<your language>/LC_MESSAGES/</command> (will be available only for the current user)</para> +<para>directory.</para> +</listitem> +</orderedlist> +</para> + +<para> +To open a different catalog (translation *.mo file) for a dialog, use the -c argument for kmdr-executor. The below example will take the translations from the Quanta translation file: +<screen> +kmdr-executor mydialog.kmdr -c quanta +</screen> + +</para> +</sect1> + +</chapter> diff --git a/doc/kommander/tutorials.docbook b/doc/kommander/tutorials.docbook new file mode 100644 index 00000000..095e9a28 --- /dev/null +++ b/doc/kommander/tutorials.docbook @@ -0,0 +1,380 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<chapter id="tutorials"> +<chapterinfo> +<title>Tips and Tutorials</title> +<authorgroup> +<author> +<firstname>Eric</firstname> +<surname>Laffoon</surname> +<affiliation><address> +<email>eric@kdewebdev.org</email> +</address></affiliation> +</author> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> +</chapterinfo> + +<title>Tips on use &kommander;</title> +<para>In this section we go beyond listing widgets to actually using &kommander;. If you want to have a good experience you will find this section very helpful.</para> + +<sect1 id="tutorial-editor"> +<title>Using the Editor</title> +<para> +At first glance the editor looks pretty obvious, and in many ways it is. Click on the icon to create a new form, then click a widget and click or click and drag on the form. There are the widget handles that will be familiar to anyone who ever put a picture in a word processing document. What is less obvious are the little things. One thing to mention up front is widget naming. Names must be unique and &kommander; employs a naming scheme of the formal widget name and a number unique to that widget type. You can rename a widget and &kommander; will not allow a duplicate name. However if you build a complex dialog and decide to start renaming you're going to have problems. Signals and slots will manage naming for you and any widget you change will be reflected in the signals and slots connections. Unfortunately we never got this feature in the widget functions. So ever call to that widget will be wrong. You could close the dialog and open it in a text editor like KWrite and do find and replace. A better solution is to start out with some idea what kind of descriptive names you want to give to key widgets. It may be a waste of time naming Labels, but scripts and container widgets for data quickly prove a real mistake not to name. You can also set icons for scripts making them even quicker to visually identify. +</para> + + +<sect2 id="tutorial-editor-tools"> +<title>Editor Tools</title> +<para> +The first thing you will notice is a properties window, generally docked on the left. Explore this! Here you will find many useful settings for forms and widgets. Some of them would be layout settings, icons, if something is active, text and more. For instance if you put a TreeWidget in a form you can change the default path separator, which is useful if you have data in there. It's easy for a slash to create a sub-item accidentally. Here you will also find selection modes, whether to highlight the whole row in multi column widgets and more. Before you assune something is just how &kommander; is check this. +</para> +<para> +If you play with layouts and lose a widget behind another or off the form the object explorer will come in handy. It's also nice for seeing structure. The next very useful view is the log view which shows stdout and stderr. The error view is indispensable. This is where your debug() commands prints and where you get detailed information. For instance when using the database plugin this gives you additional information with data errors. It also shows you all shell calls and more. The Stdout view lets you see what would go to the shell or an application using this like Quanta. The dialog view is of little use unless you have a lot of dialogs open. The Action view is only active with MainWindow use and in that case it is the only way to add Actions, menu and toolbar items. +</para> +</sect2> + +<sect2 id="tututorial-add-tools"> +<title>Adding Custom Tools</title> +<para> +&kommander; makes it easy to add custom tools, which you can develop in &kommander;, to the editor. We will be shipping some with &kommander; as well as making some available for download. You can add your own easily. First have a look and see where they are. If they are installed they are on the tools menu below the splitter. The &kommander; menu offers access to widgets. The Custom menu offers access to installed plugins. The Editor menu is where your custom tools go. To manually add a tool first decide if you are going to make it available system wide or just to your desktop. System wide start from the directory KDE is installed in. For your desktop user start in the hidden KDE directory in your home directory, usually ~/kde. From either the path is/share/apps/kmdr-editor/editor/ If the dialog you add needs access to tools or files you can put them in a subdirectory. Whatever &kommander; dialogs you put there will be recognized and added to your menu on startup. Clicking the menu will load the dialog. You will note there is a templates directory there too and you can add templates for new dialogs. +</para> +</sect2> + +<sect2 id="included-tools"> +<title>Included custom tools</title> +<para> +Several tools are included with this release, already installed on the tools meu under editor. More tools are under development for project management, database front end development, code snippets and more. The most imporant and useful tool to look for is the examples dialog. As the editor is no longer under development for KDE3 it cannot insert a dialog in the current editor, but it will open any selected dialog in a new instance of the editor. There are old dialogs from the early days of &kommander;, tutorials from more recent development and the current section showing new features of this release. Looking at these should help. Keep an eye on our web site for more. +</para> +</sect2> + +<sect2 id="tutorial-layout"> +<title>Using Layout</title> +<para> +People love to share &kommander; dialogs. Almost without fail they don't know about laying them out. Make a dialog and then try resizing it and see what happens. Wouldn't it be nice if it behaved like it should instead of leaving your widgets the same? It gets worse when you share it and differences in fonts, monitor size and X pixel resolution conspire to make your masterpiece look like it was put together by a three year old using bubblegum and thumbtacks. Always, always always... Lay out your dialogs! +</para> +<para> +Okay, you're sold you don't want a frustrated email from me asking you to please layout your dialog. How do you do it. There are layout buttons on the toolbar and the context menu. Since &kommander; is based on an older version of Qt Designer you can look at Qt Designer docs and tutorials here. I'm just going to mention a few basics and a few tips. +</para> +<itemizedlist> +<listitem><para>Use the Grid. This will place everything in a <quote>best guess</quote> location</para></listitem> +<listitem><para>Remember containers are separate. A TabWidget, GroupBox or layout group has it's own layout. So don't forget the window.</para></listitem> +<listitem><para>Widgets that are not visible during execution can make layout seem more challenging. What to do with them? I recommend grouping them in their own layour next to or below your main layout. Your visible widgets will simply push these aside and give you a predictable result.</para></listitem> +<listitem><para>Look at your properties were you can set a widget to expand or do other things as well as minimum and maximum size. A little experimentation will teach you a lot. You can also set a tighter spacing here,</para></listitem> +</itemizedlist> +<para>And now for a few tricks and tips.</para> +<itemizedlist> +<listitem><para>Along with basic layout you can use splitters. When your dialog is running you can drag the splitter up and down or right and left to get a better look at things. It may look like there is a limitation here or it doesn't work. It works and has no limitations. Just make sure to put multiple widgets into two layouts and make sure when you click or right click to get the layout and not just a child widget. You are free to create a maze of splitters as long as you adhere to the rules.</para></listitem> +<listitem><para>Fake docs are possible! Create a GroupBox and drop widgets on it. Position it in your layout so that when it's invisible other widgets/layouts will expand to take it's place. Now toggle it's visibility with a button or menu. </para></listitem> +<listitem><para>ToolBox tricks - The Toolbox has an editor bug where you can't add widget panels in the editor without it going nuts. As a result you need to add them at run time. However it looks for one widget and if you want something complex you should use a groupbox and lay it out. then layout your dialog with the groupbox at the outside, even if it goes off the edge of the window. Now load it on initialization into the ToolBox. Your window layout will snap into place.</para></listitem> +<listitem><para>Layout glitches can occur where widgets set to something like Minimum/Expanding can end up obscured before you complete layout on the window. The layout system will honor your oddness and can be shrunk to obscure scrollbars and more. Make sure all is visible before finishing layout and consider not using minimum in that case.</para></listitem> +</itemizedlist> +<para>For more on this look up the Qt Designer docs for Qt 3.x.</para> +</sect2> + +<sect2 id="signals-slots"> +<title>Signals and Slots</title> +<para> +One of the very useful features inherited from Qt Designer was signals and slots. Of course the interface has been redesigned in an attempt to make it friendly to &kommander;. Signals and slots are internal event control for Qt/KDE applications. We try to make it so you don't have to know the difference between C++ data types, but if you use the new function to create connections on the fly it is handy to be able to copy that information from the connection tool. Let's look at what all this means. Something happens in one of you widgets. It could be click on, double clicked, have it's value changed, something selected or a menu could be requested. That is just some of the possible events that would enable a signal to be sent. You may want to change the list in a ListBox if a new selection is made in a ComboBox. That's a useful feature in a sophisticated application and the only way to do it without having to press a button next is to have a signal connected to a slot. That slot could be in a script or button. When the slot receives the signal it goes about doing what it was told. There is a tool to edit these connections. Pay attention when do this as there are a good number of inherited signals and slots. Telling a script which is invisible when the dialog is run to adjust it's size by accident when you meant to execute will have you wondering what happened. +</para> +<para> +To access the connection tool you can open it by right clicking anywhere on the dialog and selecting it. Click the menu and you will see a list of connections made at the bottom. Above that are two lists of signals and slots and above them the respective sender and receiver are selected. An easy way to make connections is visually. Look at the toolbar or the Tools menu. There are three items grouped there. A pointer, signals and slot connections and the tab order or widgets. Selecting this sets connection mode for the curios. Click on your widget to send the signal and drag it to your widget to receive it in a slot. As you do this you will see a line and drop indications on the widget under the mouse. The StatusBar on the Editor will tell you what is being connected. +</para> +<note><para>In version 1.3 there is a &kommander; function connect() which allows you to connect signals and slots on the fly. This is useful if you just used createWidget. Obviously you can't use the dialog for something &kommander; doesn't yet know exists. Unfortunately there are too many combinations to list so you have to type out signals and slots. <emphasis>These must be typed verbatim or they will fail.</emphasis> This is where the connection tool is handy again. Open it and select two widgets like the two you want to connect and read the connection information. if it says <command>execute(const QString&)</command> that is exactly what you must type.</para></note> +</sect2> + +<sect2 id="slot-functions"> +<title>Slot Functions</title> +<para> +As of version 1.3 &kommander; adds Slot functions. You can see this in the Function Browser, which is uncharacteristicly less than friendly with descriptions here. What &kommander; is doing is reading every slot registered for a given widget and making it available directly. This is very useful. For instance the Table widget doesn't have a default method to auto adjust column width. You may find this annoying, but if you look under slots there it is. The TextEdit is also lacking in built in functions for any real editing, but look under slots and there is anything you could wish for. You may have to reference some docs or just experiment. It is simply too difficult to document every slot available in builtin widgets and plugins. Most slots however are self explanatory. +</para> +</sect2> +</sect1> + +<sect1 id="tutorial-basics"> +<title>Basic Tutorials</title> +<para> +Most of the information in this section is based on example dialogs some time ago, which unfortunately were not widely available as they were shipped with the source, but not installed. You should find them in your tools menu under examples in the <quote>tutorial</quote> section. Keep in mind most of these particular examples use the old parser. That is neither good nor bad. Most of the functionality in &kommander; is shared in both parsers. It's just each is particularly suited to do a better job with a given task. As &kommander; now defaults to the new parser you can set either one. Please see the <link linkend="new_parserdocs">New Parser docs</link> for more information on the two parsers. +</para> +<para> +When examining example dialogs remember to look in the following places to see how things are done. +</para> +<itemizedlist> +<listitem><para>Dialog Initialization - middle click on the dialog face or right click and select &kommander; Text. Here you see what is run when the dialog starts.</para></listitem> +<listitem><para>Buttons - middle click the button, or right click. Scripts are typically here.</para></listitem> +<listitem><para>Widgets - some widgets like Timers and Konsoles will hold instructions inside them.</para></listitem> +<listitem><para><link linkend="signals-slots">Signals and Slots</link> - this is how Qt/KDE programs internally communicate. </para></listitem> +</itemizedlist> +<para> +The following list of dialogs may be brief so as to focus on where more information is required to explain more complex tasks possible with &kommander;. They were copied from Michal's notes. +</para> + +<sect2 id="tutorial-globals"> +<title>Globals</title> +<para>Shows using global and setGlobal &DCOP; calls to provide global variables for script</para> +<blockquote><para> +Functions/concepts: +- global +- setGlobal +- changeWidgetText +</para></blockquote> +</sect2> + +<sect2 id="tutorial-dcop"> +<title>&DCOP;</title> +<para>Shows how to use both local and external &DCOP; calls to communicate with external application (here: KMail).</para> +<blockquote><para> +Functions/concepts: +- external DCOP +- addListItem +- enableWidget +- @selectedWidgetText +- @widgetText +</para></blockquote> +</sect2> + +<sect2 id="tutorlal-slots"> +<title>Slots</title> +<para>Shows how to us connections/slot to handle events. Both population and standard slots are used.</para> +<note><para>Population text was originally developed before &kommander; DCOP, specials and scripting. Given that everything it does can be done in other ways and that it is easy to forget to look here for problems, along with the inherent difference of introducing an additional behavior to explain, this is a deprecated function. It is left in for illustration, however while &kommander; dialogs will be easy to port to KDE4 this feature is not assured to work in the future. <emphasis>Don't use it!</emphasis> </para></note> +<blockquote><para> +standard slots are used. +- slots/connections +- populate() +</para></blockquote> +</sect2> + +<sect2 id="tutorial-settings"> +<title>Settings</title> +<para>Shows how to use @readSetting and @writeSetting functions to write/restore widget content. Also, show how to use populate() slot to initialize widget content.</para> +<blockquote><para> +Functions/concepts: +- @readSetting +- @writeSetting +- populate() +- slots/connections +- destroy +</para></blockquote> +</sect2> + +<sect2 id="tutorial-append"> +<title>Append</title> +<para>Shows how you can append text to TextEdit and how you can use it to display formatted text. See newer examples for how to use slots to edit rich text and new font and color dialogs too.</para> +<blockquote><para> +Functions/concepts: +- changeWidetText +- RichTextEdit +</para></blockquote> +</sect2> + +<sect2 id="tutorial-cmdline"> +<title>Command Line</title> +<para>Shows how you can pass parameters to &kommander; dialog via command line. Also, shows how to change list content and button text. See the section on <link linkend="passargs">passing arguments</link> in the new parser for more on this.</para> +<blockquote><para> +Functions/concepts: +- command-line arguments +- global +- changeWidgetText +- addListItem +- clearList +</para></blockquote> +</sect2> + +<sect2 id="tutorial-initialize"> +<title>Initialize</title> +<para> +Shows how you use 'initialization' to 'destroy' scripts of main dialog to initialize and store some settings. +</para> +<blockquote><para> +Functions/concepts: +- initialization +- destroy +- readSetting +- writeSetting +</para></blockquote> +</sect2> + +<sect2 id="tutorial-array"> +<title>Array</title> +<para> +Shows how to use associative arrays to store and restore information +associated with container items.</para> +<blockquote><para> +Functions/concepts: +- @Array functions +</para></blockquote> +</sect2> + +<sect2 id="tutorial-strings"> +<title>Strings</title> +<para> +Shows how to use string-handling functions +Functions/concepts: +</para> +<blockquote><para> +- @String functions +- rich text editor +</para></blockquote> +</sect2> + +<sect2 id="tutorial-tree"> +<title>Tree</title> +<para> +Shows how to use tree widget +</para> +<blockquote><para> +- tree widget +- FileSelector +- initialization +- env +</para></blockquote> +</sect2> + +<sect2 id="tutorial-widgets"> +<title>Widgets</title> +<para> +Shows how to get widget information +</para> +<blockquote><para> +- type method +- children method +</para></blockquote> +</sect2> + +<sect2 id="tutorial-statusbar"> +<title>StatusBar</title> +<para> +Shows how to use statusbar widget +</para> +<blockquote><para> +- statusbar widget +- populate +</para></blockquote> +</sect2> + +<sect2 id="tutorial-loop"> +<title>Loop</title> +<para> +Shows how to use internal loops +</para> +<blockquote><para> +- for +- forEach +</para></blockquote> +</sect2> + +<sect2 id="tutorial-calc"> +<title>Calc</title> +<para> +Shows how to use @expr function to do some calculations +</para> +<blockquote><para> +- expr +- String.replace +</para></blockquote> +<note><para>The @expr() function is no longer required in the new parser as expressions can be directly interpreted anywhere you would logically want to use them.</para></note> +</sect2> + +<sect2 id="tutorial-picview"> +<title>Picview</title> +<para> +Shows how to use PixmapLabel widget using populate() function +</para> +<blockquote><para> +- PixmapLabel +- populate +- FileSelector +- slots/connections +</para></blockquote> +</sect2> + +<sect2 id="tutorial-table"> +<title>Table</title> +<para> +Shows how to use Table widget +</para> +<blockquote><para> +- insertRow +- insertColumn +- currentRow +- currentColumn +- setColumnCaption +- setRowCaption +- removeRow +- removeColumn +</para></blockquote> +</sect2> + +</sect1> + +<sect1 id="examples"> +<title>Current Examples</title> +<para> +These examples reflect the most recent development state of &kommander;. In its current state &kommander; has few limitations for developing small to medium applications. It certainly is not suitable for building a KWord clone, but for a simple editor, database frontend, GUI for commandline programs or any application in the spirit of Unix/Linux small applications it is a good choice. The examples presented here are intended to show the potential as well as how to work around limitations. There are some useful tricks included in these if you want to do a more capable small application with &kommander;. Remember &kommander; is not intended to do everything, but to do most things. For this concession you should be able to build something in &kommander; faster than other alternatives ad add GUI to scripting languages not otherwise supported in KDE. +</para> +<note><para> +The examples are installed to <command>$KDEDIR/share/apps/kmdr-editor/editor</command>. In case you do not have them there, get from <ulink url="http://kommander.kdewebdev.org">our home page</ulink>, by downloading the latest release. +</para> +</note> + +<sect2 id="editor-poc"> +<title>editor-poc.kmdr</title> +<para> +The little dialog that grew into a Mainwindow. As &kommander; does not have a native MainWindow widget it has been assumed it only does dialogs. In fact only dialogs are officially supported... but you can run MainWindows in &kommander;. This is an example editor. If you want to create a MainWindow application in &kommander; just open Qt Designer and make one, save it and rename the *.ui file to a *.kmdr file. Now open it in &kommander; and do what you would do normally. +</para> +<note><para>As of this writing what is known not to work on the &kommander; side is the settings read and write. There is no Initialize or Destroy section as there is no &kommander; Text, however there are signals for this on the window, so the functionality is intact. On the MainWindow side it is not possible to talk to any actions via DCOP as these are QActions from Designer and KActions are not derived from QActions in KDE 3.x. This means a DCOP call to list actions or set states will not work. It is also not possible to talk to the Statusbar. Also submenus on the menubar and dropdown actions on the Toolbar will not work. Even though this is not a &kommander; widget, or officicially supported, it seems suitable for many small application uses.</para></note> +<para> +There is a quick help dialog this editor launches that discusses in depth what is happening inside. +</para> +</sect2> + +<sect2 id="example-key-value"> +<title>kevaluecombo.kmdr</title> +<para> +&kommander; can be used with databases and has an optional <ulink url="http://kommander.kdewebdev.org/releases.php#plugins">database plugin</ulink>. One shortcoming is not being able to store key/value pairs in the ComboBox. An ingenious trick was realized for this. It requires only that the content of the ComboBox not be changed unless it is done using the arrays that go with it. As this is commonly used with SQL in small data sets it's quite fast even to reload the whole Combobox. The inherent problem is that &kommander; does not have internally indexed arrays by default. This is compounded by the fact that to accommodate shell commands that return lines separated by newlines &kommander;'s array functions will load what is effectively an array of keys. Such an array can only be accessed with a foreach loop. This is the reason new indexed array functions were added. It is important to remember that these arrays are not self maintaining, but their insert and delete functions will help you. +</para> +<para> +Getting back to the ComboBox, it will return selected text, but it also will return the current index. It does rigidly maintain a contiguous zero based array. That's the key. We loop through a data set with a zero based index counter and create two arrays, as &kommander; also cannot create arrays of arrays. It can however use an array value to represent a key just like any value could. .If you look at the included dialog the code actually managing this is in <quote>ScriptObject36</quote>. We will extract the key code here. +</para> +<screen> +c = ListBox1.count-1 +for i = 0 to c do + array_indexedFromString("x", ListBox1.item(i)) + _a[x[0]] = x[1] + _b[i] = x[0] + ComboBox10.insertItem(_a[_b[i]], i) +end +</screen> +<para> +There is more going on, like checking for duplicate keys, but this is the core. You can right click on the ListBox and try menu items. The net result is that it is using keyed index by proxy and returning both the key and the value. Use this code if you want to be 100% certain your key/value relationship is accurate. +</para> +</sect2> + +<sect2 id="kpart-demo"> +<title>Kpart demo</title> +<para> +As of Kommander 1.3 Kommander automatically makes KParts using the libkommander_part.la. In addition to this there is a KPart plugin which allows Kommander to load plugins. Being curious developers we tried loading a Kommander part into Kommander. Why do that? Why not? The results were interesting and are demonstrated here. One interesting thing is the parent part can directly access all of the child part. While this is handy it has a down side. Any child widget being called with the same name as a parent widget will cause a lock up! In addition to that the DCOP interface is generated all over again for the part which wipes out the parent interface and disables most of the old parser functionality as well as Kommander specific DCOP to the parent. This is too difficult to fix for the remaining life of the KDE3 version. Even with these limitations and cautions this can be useful, if used carefully. The example files to look at this are in the current examples as kpartmwframe.kmdr and kpartpart.kmdr. Remember you will need the KPart plugin to fully run this example. +</para> +<para> +You can also load KMail, KOrganizer and many other KDE applications right into Kommander, of course without the problems. KHTML and KDE's file manager widgets seem not to have some functionality but there is a special KHTML plugin if you really want to incorporate a browser. +</para> +</sect2> +<sect2 id="example-passed-params"> +<title>passvariables.kmdr</title> +<para> +As of &kommander; 1.3 you can pass and return variables with scripts. This dialog demonstrates that. Look carefully at the content of the buttons. You will see that neither button directly writes to any of the LineEdit boxes receiving text from the script. While one is written directly from the script another is written with the content passed from the button. The third is not written at all but passed back in a return() function where it is received by the button and written. This is also shown on the right side using PHP so you can see how this might work with Python, Ruby, Perl or even a less commonly used language like Rexx. Languages that Speak DCOP can do a lot more in &kommander; too. The point of this demo is the freedom provided. &kommander; does not have functions, yet it does. Create a script, declare some globals if you like, pass some parameters to another script and return a value. For an intentionally simplified GUI scripting tool that is capable behavior. This behavior is only in the new parser and is documented <link linkend="passargs">here</link>. +</para> +</sect2> + +<sect2 id="tableselect"> +<title>tableselect.kmdr</title> +<para> +This example demonstrates how to use the new select function in the table widget. It is now possible to get four coordinates to enable a block selection. This also shows how it would have had to be done prior to this function. and how to use the parameters passed to a script. In addition this demonstrates a simple block copy and paste function for a table as well as summation of a block. +</para> +</sect2> + +</sect1> +</chapter> diff --git a/doc/kommander/widgets.docbook b/doc/kommander/widgets.docbook new file mode 100644 index 00000000..fa187cfc --- /dev/null +++ b/doc/kommander/widgets.docbook @@ -0,0 +1,599 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<sect1 id="widgets"> +<sect1info> +<title>Widgets</title> +</sect1info> + +<title>Widgets</title> + +<para> +The building blocks of a &kommander; dialog are the widgets. They are like any other widget in the &Qt; and &kde; libraries except they have some extra functionality that allows them to have a <quote>text association</quote>. Text is associated with a state of the widget or its populate slot. The number of states depends on the widget. If a widget only has one state, that state is called default. +</para> + +<note> +<para>The main dialog has two special states for &kommander; text. They are Initialization and Destroy. These are run when the dialog is initialized and when it is destroyed. These protect against what is know as <quote>race</quote> problems on open and mean that you do not require any special procedures on close to manage housekeeping.</para> +<para>In case of using a MainWindow based application (created with &Qt; Designer), there are no Initialization and Destroy states, instead the <emphasis>initialize</emphasis> and <emphasis>destroy</emphasis> signals can be used to get information when is the application constructed or closed</para> +</note> + +<para> +Below are the standard &kommander; widgets. Each of them has numerous functions, you can learn about them by looking at the widget functions in the <guilabel>Function Browser</guilabel>. Many of them have signals and slots as well, documentation about these methods can be found in the &Qt; and &kde; API documentation. Each &kommander; widget has a note about its base widget. +</para> + +<variablelist> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="label.png" format="PNG" /> +</imageobject></inlinemediaobject> +Label +</term> +<listitem> +<para> +A simple widget that contains a piece of text. This widget lets you set a pixmap too. +</para> +<para> +See the QLabel documentation to learn more about text labels in &Qt;. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="pixlabel.png" format="PNG" /> +</imageobject></inlinemediaobject> +PixmapLabel +</term> +<listitem> +<para> +A simple widget that contains an image or text label. The pixmap to display is set in the pixmap property. The text is set in the text property. Only one of these properties can be set at the same time (I think, I can't get the editor to set both at the same time). If scaledContents is set to true the image will be scaled to fit the size of the widget. The format of the text can be set with the textFormat property. +</para> +<para> +See the QLabel documentation to learn more about text labels in &Qt;. +</para> +</listitem> +</varlistentry> + + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="lineedit.png" format="PNG" /> +</imageobject></inlinemediaobject> +LineEdit +</term> +<listitem> +<para> +A LineEdit widget is a one line text editor. It allows the user to enter and modify a single line of text. Initial text for the editor can be set in the text property. The widget can be set to read-only with the readOnly property. There are 3 modes for the widget, Normal, NoEcho, and Password. The mode is set with the echoMode property. +</para> +<para> +LineEdit has one state, default. +</para> +<para> +The widget text for LineEdit is the text contained in the editor. +</para> +<para> +See the KLineEdit documentation to learn more about text labels in &kde;. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="multilineedit.png" format="PNG" /> +</imageobject></inlinemediaobject> +TextEdit +</term> +<listitem> +<para> +A simple multi-line text editor. +</para> +<para> +See the KTextEdit documentation to learn more about multiline text edit in &kde;. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="textbrowser.png" format="PNG" /> +</imageobject></inlinemediaobject> +TextBrowser +</term> +<listitem> +<para> +A simple reach text browser with hyperlink navigation. +</para> +<para> +See the KTextBrowser documentation to learn more about it. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="listbox.png" format="PNG" /> +</imageobject></inlinemediaobject> +ListBox +</term> +<listitem> +<para> +A ListBox widget provides a list of selectable items. Normally one or no items are selected. This behavior can be changed with the selectionMode property. Items are added to the ListBox using the edit window. +</para> +<para> +A ListBox has only one state, default. +</para> +<para> +The widget text for a ListBox is the items contained in the ListBox. @selectedWidgetText will return only the items that are currently selected. +</para> +<para> +See the KListBox documentation to learn more about it. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="combobox.png" format="PNG" /> +</imageobject></inlinemediaobject> +ComboBox +</term> +<listitem> +<para> +ComboBox is a selection widget that combines a button and a pop-up menu. It shows the user's current choice from a list of options in minimal space. Items are added to the list using the edit window. If the editable property is set to true the user can enter arbitrary strings. +</para> +<para> +ComboBox has one state, default. +</para> +<para> +The widget text for a ComboBox is the text of the selected item. +</para> +<para> +See the KComboBox documentation to learn more about it. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="listview.png" format="PNG" /> +</imageobject></inlinemediaobject> +TreeWidget +</term> +<listitem> +<para> +A widget that provides a list in the form of a tree structure. You can add child items and multi-column data. The current limitation is that you cannot modify columns. To add a child node use <quote>/</quote> as a separator. To add column data use the escaped tab <quote>\t</quote> character between columns. +</para> +<para> +See the KListView documentation to learn more about it. +</para> + +</listitem> +</varlistentry> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="table.png" format="PNG" /> +</imageobject></inlinemediaobject> +Table +</term> +<listitem> +<para> +A table widget that support different widgets in its cells. +</para> +<para> +See the QTable documentation to learn more about it. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="pushbutton.png" format="PNG" /> +</imageobject></inlinemediaobject> +ExecButton +</term> +<listitem> +<para> +A button that when clicked executes its text association. The label on the button is set with the text property. Output from the text association (how to say that) will be echoed to stdout if the writeStdout property is set to true. The button can be the default action for the dialog if the default property is set to true. +</para> +<para> +ExecButton has one state, default. +</para> +<para> +There isn't widget text associated with ExecButton. +</para> +<para> +See the KPushButton documentation to learn more about it. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="closebutton.png" format="PNG" /> +</imageobject></inlinemediaobject> +CloseButton +</term> +<listitem> +<para> +A button that when clicked, executes its text association and then closes the dialog. The label on the button is set with the text property. Output from the text association (how to say that) will be echoed to stdout if the writeStdout property is set to true. The button can be the default action for the dialog if the default property is set to true. +</para> +<para> +CloseButton has one state, default. +</para> +<para> +There isn't any widget text associated with a CloseButton. +</para> +<para> +See the KPushButton documentation to learn more about it. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="konsole.png" format="PNG" /> +</imageobject></inlinemediaobject> +Konsole +</term> +<listitem> +<para> +A widget that captures the output of scripts in a text browser. The default state is executed and the output of those commands (internal or external) are shown in the widget. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="lineedit.png" format="PNG" /> +</imageobject></inlinemediaobject> +FileSelector +</term> +<listitem> +<para> +The FileSelector widget combines a LineEdit with a button when clicked will present the user with dialog for the selection of files/folders. The file/folder selected is stored in the LineEdit. The type of the FileSelector is set with the selectionType property. Available types are Open, Save, and Directory. Multiple files/folders can be selected if the selectionOpenMutliple property is set to true. A caption for the FileChooser can be set with the selectionCaption property. This is display as the window title of the dialog. If a caption isn't specified, the type of selection will be display in the title. The files displayed in the dialog can be limited using the selectionFilter property. +</para> +<para> +FileSelector has one state, default. +</para> +<para> +The widget text for a FileSelector is the text contained in the LineEdit (the file chosen by the user). +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="checkbox.png" format="PNG" /> +</imageobject></inlinemediaobject> +CheckBox +</term> +<listitem> +<para> +A button that can be checked on and off. It can also be semi-checked if the tristate property is set to true. The label associated with the CheckBox is set in the text property. Setting the checked property will have the CheckBox initially checked. +</para> +<para> +A CheckBox has 3 states, checked, semichecked, and unchecked. +</para> +<para> +The widget text for a CheckBox is the value from the text property. +</para> +<para> +See the KCheckBox documentation to learn more about it. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="radiobutton.png" format="PNG" /> +</imageobject></inlinemediaobject> +RadioButton +</term> +<listitem> +<para> +A button that can be checked or unchecked, usually used in the ButtonGroup to make an exclusive choice. A label associated with the button can be set in the text property. A button can be initialized to checked by setting the checked property to true. If all RadioButtons in a ButtonGroup have the checked property set to true, then the last button will be the one that is checked. +</para> +<para> +RadioButton has 2 states checked and unchecked. +</para> +<para> +There is no widget text associated with a RadioButton. +</para> +<para> +See the KRadioButton documentation to learn more about it. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="buttongroup.png" format="PNG" /> +</imageobject></inlinemediaobject> +ButtonGroup +</term> +<listitem> +<para> +A container to organize buttons into a group. An optional title can be set using the title property. The frame can be adjusted with the lineWidth property. The button group can be set to exclusive by setting the exclusive property to true. This means when one toggle button is clicked all other toggle buttons will be set to off with the exception of radio buttons that are always mutual exclusive even if the group is non-exclusive. Radio buttons can be set to non-exclusive using the radioButtonExclusive property. (I am not so sure that this property actually works.) +</para> +<para>ButtonGroup has one state, default.</para> +<para> +The widget text for a ButtonGroup is the text associations for each of the buttons in the order they appear in the ButtonGroup. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="groupbox.png" format="PNG" /> +</imageobject></inlinemediaobject> +GroupBox +</term> +<listitem> +<para> +A container widget that holds other widgets. The frame is adjusted with the lineWidth property. A title can be added by setting the title property. +</para> +<para> +GroupBox has one state, default. +</para> +<para> +The widget text for GroupBox is the text associations of each of the widgets it contains combined. They will be in the order they appear inside of the GroupBox. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="tabwidget.png" format="PNG" /> +</imageobject></inlinemediaobject> +TabWidget +</term> +<listitem> +<para> +A widget that provides multiple tabs each may contain other widgets. +</para> +<para> +See the KTabWidget documentation to learn more about it. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="spinbox.png" format="PNG" /> +</imageobject></inlinemediaobject> +SpinBoxInt +</term> +<listitem> +<para> +A widget that allows the user to change a integer value by either press up and down arrows or entering a value into the box. Minimum and maximum values for the widget can be set with the minValue and maxValue properties. The specialValueText property is used to set a text value that will be displayed instead of the minimum value. +</para> +<para> +This widget has only one state, default. +</para> +<para> +The widget text for a SpinBoxInt is the currently displayed integer. +</para> +<para> +See the QSpinBox documentation to learn more about it. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="slider.png" format="PNG" /> +</imageobject></inlinemediaobject> +Slider +</term> +<listitem> +<para> +A widget that provides horizontal or vertical slider. +</para> +<para> +See the QSlider documentation to learn more about it. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="richtextedit.png" format="PNG" /> +</imageobject></inlinemediaobject> +RichTextEditor +</term> +<listitem> +<para> +This widgets provides a text editor that allows for simple text formatting. +</para> +<para> +RichTextEditor has one state, default. +</para> +<para> +The widget text for RichTextEditor is the text contained in the editor in rich text format. Selected text can be returned with @selectedWidgetText. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="statusbar.png" format="PNG" /> +</imageobject></inlinemediaobject> +StatusBar +</term> +<listitem> +<para> +A widget to display status information, usually used at the bottom of the dialogs. +</para> +<para> +See the KStatusBar documentation to learn more about it. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="progress.png" format="PNG" /> +</imageobject></inlinemediaobject> +ProgressBar +</term> +<listitem> +<para> +A widget to display progress information. +</para> +<para> +See the KProgress documentation to learn more about it. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="shellscript.png" format="PNG" /> +</imageobject></inlinemediaobject> +ScriptObject +</term> +<listitem> +<para> +This is a pseudo-widget, it does not appear when the dialog is run. It can be though about as a function. A ScriptObject holds code that can be executed anytime from the dialog by calling its <emphasis>execute</emphasis> function. Arguments can be passed to the ScripObject with the above method and accessed inside the ScriptObject as <emphasis>@Self.item(0), @Self.item(1), etc.</emphasis> if using the old style parsing or <emphasis>Self.item(0, Self.item(1), etc.</emphasis> with the new parser. +</para> +<para> +Signals can be connected to the <emphasis>execute</emphasis> function as well, as it acts also as a slot. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="timer.png" format="PNG" /> +</imageobject></inlinemediaobject> +Timer +</term> +<listitem> +<para> +This is a pseudo-widget, it does not appear when the dialog is run. It can be used to perform an action after a specified time once, or regularly. Set the timeout <guilabel>interval</guilabel> in milliseconds, choose if it should run once (<guilabel>singleShot</guilabel>) or not. Connect its <emphasis>timeout</emphasis> signal to a slot, which will be executed once the specified time passes. +</para> +<para> +The timer is not started by default, run the <emphasis>execute</emphasis> function to start it. +</para> +<para> +See the QTimer documentation to learn more. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="datepicker.png" format="PNG" /> +</imageobject></inlinemediaobject> +DatePicker +</term> +<listitem> +<para> +A widget used to select a date. The default date can be set in the <guilabel>date</guilabel> property or with the <emphasis>setText</emphasis> function in ISO format: <emphasis>YYYY-MM-DD</emphasis>. +</para> +<para> +The widget text is the currently displayed date. +</para> +<para> +See the KDatePicker documentation to learn more. +</para> +<note><para>New in Kommander 1.3.</para></note> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="kommander.png" format="PNG" /> +</imageobject></inlinemediaobject> +AboutDialog +</term> +<listitem> +<para> +This is a pseudo-widget, it does not appear when the dialog is run. It stores information about the application, the authors, the license. Shows the about dialog +when the <emphasis>execute</emphasis> function is called. +<warning><para>The <emphasis>initialize</emphasis> function must be called before anything else, including the <emphasis>execute</emphasis> function.</para></warning> +</para> +<note><para>New in Kommander 1.3.</para></note> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="kfontcombo.png" format="PNG" /> +</imageobject></inlinemediaobject> +FontDialog +</term> +<listitem> +<para> +A pseudo-widget, that can be used to get a font selection dialog. The default font can be set with the <emphasis>setFont</emphasis> function, and the selected font's properties retrieved with the <emphasis>family, pointSize, bold, italic</emphasis> functions. The dialog is shown when the <emphasis>execute</emphasis> function is called. +</para> +<note><para>New in Kommander 1.3.</para></note> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="contents.png" format="PNG" /> +</imageobject></inlinemediaobject> +PopupMenu +</term> +<listitem> +<para> +A pseudo-widget, that can be used to display a menu. Use the <emphasis>insert...</emphasis> functions to add menu entries. Whenever the user clicks on a menu entry, the specified <emphasis>executeWidget</emphasis>'s <emphasis>execute</emphasis> function will be run. It is possible to connect the menu entries to the popupmenu's own <emphasis>execute</emphasis> function, in which case the text assigned to the <emphasis>default</emphasis> state is run. When adding menu items you can assign an index to them and handle the all the items on a menu in the menu widget as the request passes this index back. To see how this works look at the current example <link linkend="example-key-value">keyvaluecombo.kmdr</link> included with this release. To find it look on the tools menu of the editor for the examples dialog. +</para> +<para>To show the menu, use <emphasis>popup</emphasis> slot. Usually this is connected to another widget's <emphasis>contextMenuRequested</emphasis> signal.</para> +<para>A menu can contain other PopupMenu submenus.</para> +<note><para>New in Kommander 1.3.</para></note> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<inlinemediaobject><imageobject> +<imagedata fileref="toolbox.png" format="PNG" /> +</imageobject></inlinemediaobject> +ToolBox +</term> +<listitem> +<para> +A container widget, like TabWidget. It has several pages, each page can hold other widgets. +</para> +<warning><para>This widget has an editor bug that does not affect it's use in execution, but does affect it's use in the editor. If you try to add pages in the editor it will become unreadable. Don't do this. If you want to use the ToolBox please use fill the widget on the fly using the <command>addWidget</command> command. If there is time an example will be added to the 1.3 release, or check the web site.</para></warning> +<para>See the QToolBox documentation to learn more about it.</para> +<note><para>New in Kommander 1.3.</para></note> +</listitem> +</varlistentry> + + +</variablelist> +</sect1> diff --git a/doc/kxsldbg/1downarrow.png b/doc/kxsldbg/1downarrow.png Binary files differnew file mode 100644 index 00000000..b8a8b0ff --- /dev/null +++ b/doc/kxsldbg/1downarrow.png diff --git a/doc/kxsldbg/Makefile.am b/doc/kxsldbg/Makefile.am new file mode 100644 index 00000000..41691557 --- /dev/null +++ b/doc/kxsldbg/Makefile.am @@ -0,0 +1,3 @@ +KDE_LANG = en +KDE_DOCS = AUTO + diff --git a/doc/kxsldbg/breakpoints_window.png b/doc/kxsldbg/breakpoints_window.png Binary files differnew file mode 100644 index 00000000..b4033935 --- /dev/null +++ b/doc/kxsldbg/breakpoints_window.png diff --git a/doc/kxsldbg/callstack.docbook b/doc/kxsldbg/callstack.docbook new file mode 100644 index 00000000..20c46fab --- /dev/null +++ b/doc/kxsldbg/callstack.docbook @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<sect1 id="callstack"> +<sect1info> +<authorgroup> +<author> +<firstname>Keith</firstname> +<surname>Isdale</surname> +<affiliation> +<address><email>k_isdale@tpg.com.au</email></address> +</affiliation> +</author> +<!-- TRANS:ROLES_OF_TRANSLATORS --> +</authorgroup> +</sect1info> + +<title>Working With the Callstack</title> + +<para> +All call stack items found are listed here. The older the callstack entry +the lower the frame number it will have. See below for an example.</para> + +<screenshot> +<screeninfo>The Callstack Window</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="callstack_window.png" format="PNG" /> +</imageobject> +<textobject><phrase>The Callstack Window</phrase></textobject> +</mediaobject> +</screenshot> + +<para> +Clicking on a callstack entry in the list shown will cause the cursor in +the main window to move to the file and line number indicated. +</para> +</sect1> + diff --git a/doc/kxsldbg/callstack_window.png b/doc/kxsldbg/callstack_window.png Binary files differnew file mode 100644 index 00000000..0bccd8e5 --- /dev/null +++ b/doc/kxsldbg/callstack_window.png diff --git a/doc/kxsldbg/configure.png b/doc/kxsldbg/configure.png Binary files differnew file mode 100644 index 00000000..37fd0bc6 --- /dev/null +++ b/doc/kxsldbg/configure.png diff --git a/doc/kxsldbg/configure_window.png b/doc/kxsldbg/configure_window.png Binary files differnew file mode 100644 index 00000000..3910c99f --- /dev/null +++ b/doc/kxsldbg/configure_window.png diff --git a/doc/kxsldbg/credits.docbook b/doc/kxsldbg/credits.docbook new file mode 100644 index 00000000..0bd018d6 --- /dev/null +++ b/doc/kxsldbg/credits.docbook @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<chapter id="credits-and-licenses"> +<chapterinfo> +<authorgroup> +<author> +<firstname>Keith</firstname> +<surname>Isdale</surname> +<affiliation> +<address><email>k_isdale@tpg.com.au</email></address> +</affiliation> +</author> +<!-- TRANS:ROLES_OF_TRANSLATORS --> +</authorgroup> +</chapterinfo> +<title>Credits and Licenses</title> + +<para>&kxsldbg; © 2004 Keith Isdale</para> +<para>Documentation © 2004 Keith Isdale</para> + + +<itemizedlist> +<title>Thanks to:</title> +<listitem> +<para> +The writers the <application>libxml</application> and +<application>libxslt</application>. +</para> +</listitem> +<listitem> +<para> +Robert Jacolin for feedback on earlier version of &kxsldbg;. +</para> +</listitem> +<listitem> +<para> +Igor Zlatkovic for creating WIN32 binaries of +<application>libxml/xslt</application> and &xsldbg;. +</para> +</listitem> +</itemizedlist> +&underFDL; +&underGPL; + +</chapter> diff --git a/doc/kxsldbg/entities.docbook b/doc/kxsldbg/entities.docbook new file mode 100644 index 00000000..1f680971 --- /dev/null +++ b/doc/kxsldbg/entities.docbook @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<sect1 id="entities"> +<sect1info> +<authorgroup> +<author> +<firstname>Keith</firstname> +<surname>Isdale</surname> +<affiliation> +<address><email>k_isdale@tpg.com.au</email></address> +</affiliation> +</author> +<!-- TRANS:ROLES_OF_TRANSLATORS --> +</authorgroup> +</sect1info> +<title>Working With &XML; Data Files (Entities)</title> + +<para> If the inspector dialog is not showing use the <menuchoice> +<guimenu>Tools</guimenu> <guimenuitem>Show inspectors</guimenuitem> +</menuchoice> menu item. To work with entities click on the +<guilabel>Entities</guilabel> tab of dialog shown. </para> + +<para> All external &XML; entities included via the DATA file or one +of its siblings are listed here. For this example I have run &kxsldbg; +on <filename>testdoc.xsl</filename> with +<filename>testdoc.xml</filename> (found in the +<filename role="directory"><KDE PREFIX>/share/apps/kxsldbg</filename> folder so that you can see some entities.</para> + +<screenshot> +<screeninfo>The Entities Window</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="entities_window.png" format="PNG" /> +</imageobject> +<textobject><phrase>The Entities Window</phrase></textobject> +</mediaobject> +</screenshot> + +<para> +Clicking on a entity entry in the list shown will cause the cursor in the +main window to move to the start of the file indicated. +</para> +</sect1> diff --git a/doc/kxsldbg/entities_window.png b/doc/kxsldbg/entities_window.png Binary files differnew file mode 100644 index 00000000..29d57f6b --- /dev/null +++ b/doc/kxsldbg/entities_window.png diff --git a/doc/kxsldbg/exit.png b/doc/kxsldbg/exit.png Binary files differnew file mode 100644 index 00000000..6ea935d1 --- /dev/null +++ b/doc/kxsldbg/exit.png diff --git a/doc/kxsldbg/glossary.docbook b/doc/kxsldbg/glossary.docbook new file mode 100644 index 00000000..4a980984 --- /dev/null +++ b/doc/kxsldbg/glossary.docbook @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<glossary id="glossary"> +<glossaryinfo> +<authorgroup> +<author> +<firstname>Keith</firstname> +<surname>Isdale</surname> +<affiliation> +<address><email>k_isdale@tpg.com.au</email></address> +</affiliation> +</author> +<!-- TRANS:ROLES_OF_TRANSLATORS --> +</authorgroup> +</glossaryinfo> + +<glossdiv> +<title>Keywords</title> +<glossentry id="xsldbg-glosref"> +<glossterm>&xsldbg;</glossterm> +<glossdef> +<para> +See <ulink url="http://xsldbg.sourceforge.net"></ulink>. +</para> +</glossdef> +</glossentry> + +<glossentry> +<glossterm>XPath</glossterm> +<glossdef> +<para> +A valid expression that defines what data is required. See +<ulink url="http://www.w3.org">W3C web site</ulink>. +</para> +</glossdef> +</glossentry> + +<glossentry> +<glossterm>QName</glossterm> +<glossdef> +<para> +A fully qualified name. For example, <emphasis>xsl:myvariable</emphasis>. +See <ulink url="http://www.w3.org">W3C web site</ulink> +</para> +</glossdef> +</glossentry> +</glossdiv> +</glossary> diff --git a/doc/kxsldbg/index.docbook b/doc/kxsldbg/index.docbook new file mode 100644 index 00000000..8b52c114 --- /dev/null +++ b/doc/kxsldbg/index.docbook @@ -0,0 +1,150 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY kxsldbg "<application>KXSLDbg</application>"> + <!ENTITY kappname "&kxsldbg;"> + <!ENTITY package "quanta"> + <!ENTITY % addindex "IGNORE"> + <!ENTITY % English "INCLUDE"> + <!ENTITY configure-section SYSTEM "kxsldbg_configure.docbook"> + <!ENTITY mainwindow-section SYSTEM "kxsldbg_mainwindow.docbook"> + <!ENTITY inspector-section SYSTEM "kxsldbg_inspector.docbook"> + <!ENTITY tools-section SYSTEM "kxsldbg_tools.docbook"> + <!ENTITY credits-chapter SYSTEM "credits.docbook"> + <!ENTITY callstack SYSTEM "callstack.docbook"> + <!ENTITY entities SYSTEM "entities.docbook"> + <!ENTITY sources SYSTEM "sources.docbook"> + <!ENTITY templates SYSTEM "templates.docbook"> + <!ENTITY variables SYSTEM "variables.docbook"> + <!ENTITY xsldbg "<application>xsldbg</application>"> + <!ENTITY DTD "<acronym>DTD</acronym>"> + <!ENTITY XSD "<acronym>XSD</acronym>"> + <!ENTITY XSLT "<acronym>XSLT</acronym>"> +]> + +<book lang="&language;"> + +<bookinfo> +<title>The &kxsldbg; Handbook</title> + +<authorgroup> +<author> +<firstname>Keith</firstname> +<surname>Isdale</surname> +<affiliation> +<address><email>k_isdale@tpg.com.au</email></address> +</affiliation> +</author> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> + +<copyright> +<year>2002</year> +<year>2003</year> +<year>2004</year> +<holder>Keith Isdale</holder> +</copyright> + +<legalnotice>&FDLNotice;</legalnotice> +<date>2004-11-18</date> +<releaseinfo>0.5</releaseinfo> + +<abstract> +<para> +&kxsldbg; is a provides a graphic user interface front-end to +&xsldbg;, which supports +debugging of &XSLT; scripts. +</para> +</abstract> + +<keywordset> +<keyword>KDE</keyword> +<keyword>xsldbg</keyword> +<keyword>libxslt</keyword> +<keyword>debugger</keyword> +</keywordset> +</bookinfo> + +<chapter id="introduction"> +<title>Introduction</title> + +<sect1 id="features"> +<title>Features</title> + +<para> +&kxsldbg; provides access to most of &xsldbg;'s commands to + +<itemizedlist> +<listitem> +<para> +Set and modify breakpoints +</para> +</listitem> +<listitem> +<para> +Display value of XPaths +</para> +</listitem> +<listitem> +<para> +Display information about the templates, variables, +callstack entries, stylesheets and entities present +</para> +</listitem> +<listitem> +<para> +Set and modify breakpoints and variables +</para> +</listitem> +<listitem> +<para> +Move around &XSL; source and &XML; document via XPaths +</para> +</listitem> +<listitem> +<para> +Lookup PUBLIC and SYSTEM ID's in the current &XML; catalog +</para> +</listitem> +</itemizedlist> +</para> +</sect1> + +<sect1 id="new-features"> +<title>Recently added features</title> +<para>&kxsldbg; can now +</para> +<itemizedlist> +<listitem> +<para> +Set and modify variables +</para> +</listitem> +<listitem> +<para> +Renders the text in the main window using the &kate; libraries +</para> +</listitem> +</itemizedlist> +</sect1> + + +</chapter> + +<chapter id="using-kxsldbg"> +<title>Using &kxsldbg;</title> +&configure-section; +&mainwindow-section; +&inspector-section; +&variables; +&callstack; +&templates; +&sources; +&entities; +&tools-section; +</chapter> + +&credits-chapter; + +</book> diff --git a/doc/kxsldbg/kxsldbg_configure.docbook b/doc/kxsldbg/kxsldbg_configure.docbook new file mode 100644 index 00000000..115cd4d3 --- /dev/null +++ b/doc/kxsldbg/kxsldbg_configure.docbook @@ -0,0 +1,102 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<sect1 id="configure"> +<sect1info> +<authorgroup> +<author> +<firstname>Keith</firstname> +<surname>Isdale</surname> +<affiliation> +<address><email>k_isdale@tpg.com.au</email></address> +</affiliation> +</author> +<!-- TRANS:ROLES_OF_TRANSLATORS --> +</authorgroup> +</sect1info> + +<title>Configuring a &kxsldbg; Session</title> + +<para> +You start configuration by clicking +<menuchoice> +<guimenu>Debug</guimenu> +<guimenuitem>Configure</guimenuitem> +</menuchoice> in the Menubar. +</para> + +<screenshot> +<screeninfo>The Configuration Dialog</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="configure_window.png" format="PNG" /> +</imageobject> +<textobject><phrase>The Configuration Dialog</phrase></textobject> +<caption><para>The Configuration Dialog.</para></caption> +</mediaobject> +</screenshot> + +<sect2> +<title>Getting Started</title> + +<para> +To be able to run a stylesheet you need to specify the: +<itemizedlist mark="bullet"> +<listitem><para>&XSL; source</para></listitem> +<listitem><para>&XML; data</para></listitem> +<listitem><para>Output file</para></listitem> +</itemizedlist> +</para> + +<para> By using the <guibutton>...</guibutton> button to choose file +desired. The <guilabel>&XSL; source</guilabel> and <guilabel>>&XML; data</guilabel> may refer +to URI that contains a http://, ftp:// or file://. The <guilabel>Output file</guilabel> +must refer to a writable local file.</para> +<para> +To follow along with the examples, select the following files in the +example <filename role="directory"><KDE PREFIX>/share/apps/kxsldbg</filename> folder +<itemizedlist mark="bullet"> +<listitem><para>&XSL; source: testdoc.xsl</para></listitem> +<listitem><para>&XML; data: testdoc.xml</para></listitem> +<listitem><para>Output file: /tmp/xsldbg_output.txt</para></listitem> +</itemizedlist> +</para> +</sect2> + +<sect2> +<title>Working With Options</title> + +<para> +You can select zero or more options from the <guilabel>Options</guilabel> dialog. Each option has a tooltip with a hint on what effect it has. +</para> +</sect2> + +<sect2> +<title>Working With Parameters</title> + +<para> +You can add zero or more parameters via the <guilabel>LibXSLT Parameters</guilabel> +section of dialog. This allows you to provide parameter values to the +stylesheet. +</para> + +<para> +For example you could add a enter a <guilabel>Parameter name</guilabel> of <parameter>myparam</parameter> +with a <guilabel>Parameter value</guilabel> of <parameter>'Hello World!'</parameter> and click the <guibutton>Add</guibutton> button. +. To update the value of an existing +parameter just use the navigate to the value you wish to change with the <guibutton>Prev</guibutton> or <guibutton>Next</guibutton> button, provide a new <guilabel>Parameter value</guilabel> then click the <guibutton>Apply</guibutton>. +</para> +</sect2> + +<sect2> +<title>Apply Changes</title> + +<para> +For the changes you have made to take effect press the <guibutton>Apply</guibutton> +button. To ignore any changes press the <guibutton>Cancel</guibutton> button. +</para> + +<para> +You can close the dialog using the <guibutton>X</guibutton> provided at the top right of the window. If you need to change the configuration just re-open the +configuration dialog as shown before. +</para> +</sect2> +</sect1> diff --git a/doc/kxsldbg/kxsldbg_inspector.docbook b/doc/kxsldbg/kxsldbg_inspector.docbook new file mode 100644 index 00000000..ec9995bc --- /dev/null +++ b/doc/kxsldbg/kxsldbg_inspector.docbook @@ -0,0 +1,103 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<sect1 id="breakpoints"> +<sect1info> +<authorgroup> +<author> +<firstname>Keith</firstname> +<surname>Isdale</surname> +<affiliation> +<address><email>k_isdale@tpg.com.au</email></address> +</affiliation> +</author> +<!-- TRANS:ROLES_OF_TRANSLATORS --> +</authorgroup> +</sect1info> +<title>Setting and Modifying Breakpoints</title> + +<para> +The primary way to work with breakpoints is via the main window. See +<xref linkend="mainwindow-section"/> +</para> + +<para> +Once you have started the style sheet, you can use the +<menuchoice> +<guimenu>Tools</guimenu> +<guimenuitem>Show inspectors</guimenuitem> +</menuchoice> +menu item. Then click on the Breakpoints tab. See below for an example. +</para> + +<screenshot> +<screeninfo>Setting Breakpoints</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="breakpoints_window.png" format="PNG" /> +</imageobject> +<textobject><phrase>Setting Breakpoints</phrase></textobject> +</mediaobject> +</screenshot> + +<sect2> +<title>Adding a Breakpoint</title> + +<para> +You can add a breakpoint by supplying any of:</para> +<orderedlist> +<listitem><para>a file and line number</para> +</listitem> +<listitem><para>a template name</para> +</listitem> +<listitem><para>a template name and a mode name</para> +</listitem> +<listitem><para>a mode name</para> +</listitem> +</orderedlist> + + +<para> +And then pressing the <guibutton>Add</guibutton> button. +</para> +</sect2> + +<sect2> +<title>Argument Details</title> + +<para> +A file name may be absolute path to a local file. Or partial file (⪚ +<filename>xsldoc.xsl</filename>). +</para> + +<para> +A template or mode name may is fully Qualified Name where the non-local +part is optional ⪚ <emphasis>xsl:mytemplate</emphasis> is matched by +<emphasis>mytemplate</emphasis> +</para> +</sect2> + +<sect2> +<title>Deleting a Breakpoint</title> + +<para> +Firstly left mouse click the breakpoint you want to delete in the list of +current breakpoints. Then click the <guibutton>Delete</guibutton> button. +</para> +</sect2> + +<sect2> +<title>Deleting All Breakpoints</title> + +<para> +Click the <guibutton>Delete All</guibutton> button. +</para> +</sect2> + +<sect2> +<title>Enabling or Disabling a Breakpoint</title> + +<para> +Firstly &LMB; click the breakpoint you want to delete in the list of +current breakpoints. Then click the <guibutton>Enable</guibutton> button. +</para> +</sect2> +</sect1> diff --git a/doc/kxsldbg/kxsldbg_mainwindow.docbook b/doc/kxsldbg/kxsldbg_mainwindow.docbook new file mode 100644 index 00000000..3dcd3a55 --- /dev/null +++ b/doc/kxsldbg/kxsldbg_mainwindow.docbook @@ -0,0 +1,455 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<sect1 id="mainwindow-section"> +<sect1info> +<authorgroup> +<author> +<firstname>Keith</firstname> +<surname>Isdale</surname> +<affiliation> +<address><email>k_isdale@tpg.com.au</email></address> +</affiliation> +</author> +<!-- TRANS:ROLES_OF_TRANSLATORS --> +</authorgroup> +</sect1info> +<title>Using the Main Window</title> + +<screenshot> +<screeninfo>The Main Window</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="main_window.png" format="PNG"/> +</imageobject> +<textobject><phrase>A text view of the current file being debugged</phrase></textobject> +<caption><para>A text view of the current file being debugged.</para></caption> +</mediaobject> +</screenshot> + +<sect2> +<title>Working With the Main Window</title> + +<para> +The state of a given breakpoint is indicated via the relevant text with a different background color. +You can choose the color desired: see the +<menuchoice><guimenu>Settings</guimenu><guimenuitem>Configure +Editor</guimenuitem></menuchoice> dialog, on the +<guilabel>Colors</guilabel> page.</para> + + +<para>You can set, disable or delete a breakpoint using keys, the <guimenu>Debug</guimenu> menu or the buttons on the tool bar.</para> + +<para>You can move the cursor around the text using the following keys:</para> + +<simplelist> +<member>Arrow keys: <keysym>Left Arrow</keysym>, <keysym>Right Arrow</keysym>, <keysym>Up Arrow</keysym> or <keysym>Down Arrow</keysym>.</member> +<member>Page keys: <keycap>Page Up</keycap> or <keycap>Page Down</keycap></member> + +</simplelist> + +</sect2> + +<sect2> +<title>Working With &kxsldbg; Output</title> + +<para> +Most of the output from &kxsldbg; is captured and presented either in the +inspectors dialog or the &kxsldbg; output window. The exceptions to this rule +are:</para> +<itemizedlist> +<listitem> +<para>An error message that comes from &kxsldbg; is displayed inside a message dialog.</para> +</listitem> +<listitem> +<para>The result of evaluating an expression is displayed in a message dialog.</para> +</listitem> +<listitem> +<para>The output of search is sent to the file indicated in the &kxsldbg; output window.</para> +</listitem> +</itemizedlist> + +</sect2> + +<!-- FIXME: There's way too many things wrong with this, for people to +bother translating it just yet. We can fix post 3.2 + +Specifically: Wrong icon images, all keybindings are incorrect, all +keybindings in the app are unmodified and therefore will probably be +changed, and this isn't the ideal place to put a toolbar ref anyway. + +Plan: Add a menu ref chapter, include an updated toolbar ref in it + +<sect2> +<title>&kxsldbg; Toolbar</title> + +<variablelist> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo> +</shortcut> +<guiicon> +<inlinemediaobject> +<imageobject> +<imagedata fileref="configure.png" format="PNG" /> +</imageobject> +</inlinemediaobject> +</guiicon> +<guimenu>Debug</guimenu> +<guimenuitem>Configure</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Configuration for a session, <xref linkend="configure"/> +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo> +</shortcut> +<guiicon> +<inlinemediaobject> +<imageobject> +<imagedata fileref="configure.png" /> +</imageobject> +</inlinemediaobject> +</guiicon> +<guimenu>Debug</guimenu> +<guimenuitem>Inspect</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +To be written. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo> +</shortcut> +<guiicon> +<inlinemediaobject> +<imageobject> +<imagedata fileref="run.png" /> +</imageobject> +</inlinemediaobject> +</guiicon> +<guimenu>Debug</guimenu> +<guimenuitem>Run</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Restart execution applying current configuration. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo> +</shortcut> +<guiicon> +<inlinemediaobject> +<imageobject> +<imagedata fileref="1downarrow.png" /> +</imageobject> +</inlinemediaobject> +</guiicon> +<guimenu>Debug</guimenu> +<guimenuitem>Continue</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Continue execution stoping at next breakpoint. This will cause the +debugger to stop at the start of the stylesheet if no further breakpoints +are found. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo> +</shortcut> +<guiicon> +<inlinemediaobject> +<imageobject> +<imagedata fileref="step.png" /> +</imageobject> +</inlinemediaobject> +</guiicon> +<guimenu>Debug</guimenu> +<guimenuitem>Step</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Step to the next XSLT instruction found. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo> +</shortcut> +<guiicon> +<inlinemediaobject> +<imageobject> +<imagedata fileref="next.png" /> +</imageobject> +</inlinemediaobject> +</guiicon> +<guimenu>Debug</guimenu> +<guimenuitem>Next</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Proceed to the next instruction at the same call stack depth. This is +useful for stepping over a <emphasis>xsl:apply-templates</emphasis> or +<emphasis>xsl:call-template</emphasis>. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo> +</shortcut> +<guiicon> +<inlinemediaobject> +<imageobject> +<imagedata fileref="xsldbg_stepup.png" /> +</imageobject> +</inlinemediaobject> +</guiicon> +<guimenu>Debug</guimenu> +<guimenuitem>StepUp</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Proceed to the next instruction in a cooler stack frame. This is best +used within a template at a greater depth than the root match template. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo> +</shortcut> +<guiicon> +<inlinemediaobject> +<imageobject> +<imagedata fileref="xsldbg_stepdown.png" /> +</imageobject> +</inlinemediaobject> +</guiicon> +<guimenu>Debug</guimenu> +<guimenuitem>StepDown</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Proceed to the next instruction in a warmer stack frame. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo> +</shortcut> +<guiicon> +<inlinemediaobject> +<imageobject> +<imagedata fileref="xsldbg_break.png" /> +</imageobject> +</inlinemediaobject> +</guiicon> +<guimenu>Debug</guimenu> +<guimenuitem>Break</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Add a breakpoint at the current cursor location +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo> +</shortcut> +<guiicon> +<inlinemediaobject> +<imageobject> +<imagedata fileref="xsldbg_delete.png" /> +</imageobject> +</inlinemediaobject> +</guiicon> +<guimenu>Debug</guimenu> +<guimenuitem>Delete</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Delete a breakpoint at the current cursor location +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo> +</shortcut> +<guiicon> +<inlinemediaobject> +<imageobject> +<imagedata fileref="xsldbg_enable.png" /> +</imageobject> +</inlinemediaobject> +</guiicon> +<guimenu>Debug</guimenu> +<guimenuitem>Enable/Disable</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Enable or disable a breakpoint at the current cursor location +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo> +</shortcut> +<guiicon> +<inlinemediaobject> +<imageobject> +<imagedata fileref="xsldbg_source.png" /> +</imageobject> +</inlinemediaobject> +</guiicon> +<guimenu>Debug</guimenu> +<guimenuitem>Source</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Cause the current XSLT source file to be shown +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo> +</shortcut> +<guiicon> +<inlinemediaobject> +<imageobject> +<imagedata fileref="xsldbg_data.png" /> +</imageobject> +</inlinemediaobject> +</guiicon> +<guimenu>Debug</guimenu> +<guimenuitem>Data</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Cause the current &XML; data file to be shown +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo> +</shortcut> +<guiicon> +<inlinemediaobject> +<imageobject> +<imagedata fileref="xsldbg_output.png" /> +</imageobject> +</inlinemediaobject> +</guiicon> +<guimenu>Debug</guimenu> +<guimenuitem>Output</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Cause the current Output file to be shown +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo> +</shortcut> +<guiicon> +<inlinemediaobject> +<imageobject> +<imagedata fileref="xsldbg_refresh.png" /> +</imageobject> +</inlinemediaobject> +</guiicon> +<guimenu>Debug</guimenu> +<guimenuitem>Reload</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Cause the displayed file to be reloaded from disk +</para> +</listitem> +</varlistentry> + +</variablelist> +</sect2> +--> + +</sect1> diff --git a/doc/kxsldbg/kxsldbg_tools.docbook b/doc/kxsldbg/kxsldbg_tools.docbook new file mode 100644 index 00000000..0fa7ae8a --- /dev/null +++ b/doc/kxsldbg/kxsldbg_tools.docbook @@ -0,0 +1,93 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<sect1 id="tools-section"> +<sect1info> +<authorgroup> +<author> +<firstname>Keith</firstname> +<surname>Isdale</surname> +<affiliation> +<address><email>k_isdale@tpg.com.au</email></address> +</affiliation> +</author> +<!-- TRANS:ROLES_OF_TRANSLATORS --> +</authorgroup> +</sect1info> + +<title>Miscellenous Tools</title> + +<para> +Several tools are available via the tools menu the main tool is the +inspector tool. +</para> + +<sect2> +<title>Inspector Tool</title> + +<para> +The inspector tool is the contains all the individual dialogs for working +with:</para> +<itemizedlist> +<listitem><para>Breakpoints</para></listitem> +<listitem><para>Templates</para></listitem> +<listitem><para>Variables</para></listitem> +<listitem><para>Callstack entries</para></listitem> +<listitem><para>&XSL; source files</para></listitem> +<listitem><para>&XML; Enties</para></listitem> +</itemizedlist> + +</sect2> + +<sect2> +<title>Execute by Walking</title> + +<para>By clicking on <guimenuitem>Start execution with +walking</guimenuitem> menu a dialog is shown to allow the walk speed +to be chosen.</para> + +<screenshot> +<screeninfo>The Walk Window</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="walk_window.png" format="PNG"/> +</imageobject> +<textobject><phrase>The Walk Window</phrase></textobject> +</mediaobject> +</screenshot> + +<para>To stop walking either use the <keycap>W</keycap> key or select the +<guimenuitem>Start execution with walking</guimenuitem> menu item.</para> +</sect2> + +<sect2> +<title>Lookup &XML; Entities</title> + +<para>To lookup a System ID in the current &XML; catalog +use the <guimenuitem>Lookup System ID</guimenuitem> menu then enter the +value to find the the dialog that displays.</para> + +<screenshot> +<screeninfo>The System ID Window</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="systemid_window.png" format="PNG"/> +</imageobject> +<textobject><phrase>The System ID Window</phrase></textobject> +</mediaobject> +</screenshot> + +<para>To lookup a PUBLIC ID use the <guimenuitem>Lookup Public +ID</guimenuitem> menu entry then enter the value to find the the dialog that +displays.</para> + +<screenshot> +<screeninfo>The Public ID Window</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="publicid_window.png" format="PNG"/> +</imageobject> +<textobject><phrase>The Public ID Window</phrase></textobject> +</mediaobject> +</screenshot> + +</sect2> +</sect1> diff --git a/doc/kxsldbg/main_window.png b/doc/kxsldbg/main_window.png Binary files differnew file mode 100644 index 00000000..970459a5 --- /dev/null +++ b/doc/kxsldbg/main_window.png diff --git a/doc/kxsldbg/next.png b/doc/kxsldbg/next.png Binary files differnew file mode 100644 index 00000000..00d4fd9d --- /dev/null +++ b/doc/kxsldbg/next.png diff --git a/doc/kxsldbg/publicid_window.png b/doc/kxsldbg/publicid_window.png Binary files differnew file mode 100644 index 00000000..01af4d04 --- /dev/null +++ b/doc/kxsldbg/publicid_window.png diff --git a/doc/kxsldbg/run.png b/doc/kxsldbg/run.png Binary files differnew file mode 100644 index 00000000..e9b35a28 --- /dev/null +++ b/doc/kxsldbg/run.png diff --git a/doc/kxsldbg/sources.docbook b/doc/kxsldbg/sources.docbook new file mode 100644 index 00000000..ecfb658e --- /dev/null +++ b/doc/kxsldbg/sources.docbook @@ -0,0 +1,44 @@ +<sect1 id="sources-section"> +<sect1info> +<authorgroup> +<author> +<firstname>Keith</firstname> +<surname>Isdale</surname> +<affiliation> +<address><email>k_isdale@tpg.com.au</email></address> +</affiliation> +</author> +<!-- TRANS:ROLES_OF_TRANSLATORS --> +</authorgroup> +</sect1info> +<title>Working With &XSLT; Source Files (Sources)</title> + +<para> +If the inspector dialog is not showing use the +<menuchoice> +<guimenu>Tools</guimenu> + +<guimenuitem>Show inspectors</guimenuitem> +</menuchoice> +menu item. To work with sources click on the sources tab of dialog shown. +</para> + +<para> +All &XSLT; source files that are included by the &XSLT; file or one of its +siblings are listed here.</para> + +<screenshot> +<screeninfo>The Sources Window</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="sources_window.png" format="PNG" /> +</imageobject> +<textobject><phrase>The Sources Window</phrase></textobject> +</mediaobject> +</screenshot> + +<para> +Clicking on a source entry in the list shown will cause the cursor in the +main window to move to the start of file indicated. +</para> +</sect1> diff --git a/doc/kxsldbg/sources_window.png b/doc/kxsldbg/sources_window.png Binary files differnew file mode 100644 index 00000000..14e9d3da --- /dev/null +++ b/doc/kxsldbg/sources_window.png diff --git a/doc/kxsldbg/step.png b/doc/kxsldbg/step.png Binary files differnew file mode 100644 index 00000000..a0e64fc0 --- /dev/null +++ b/doc/kxsldbg/step.png diff --git a/doc/kxsldbg/systemid_window.png b/doc/kxsldbg/systemid_window.png Binary files differnew file mode 100644 index 00000000..04b7be70 --- /dev/null +++ b/doc/kxsldbg/systemid_window.png diff --git a/doc/kxsldbg/templates.docbook b/doc/kxsldbg/templates.docbook new file mode 100644 index 00000000..bdd0bdd2 --- /dev/null +++ b/doc/kxsldbg/templates.docbook @@ -0,0 +1,34 @@ +<sect1 id="templates"> +<title>Working With Templates</title> + +<para> +If the inspector dialog is not showing use the +<menuchoice> +<guimenu>Tools</guimenu> +<guimenuitem>Show inspectors</guimenuitem> +</menuchoice> +menu item. To work with templates click on the templates tab of dialog +shown. +</para> + +<para> +All templates found are listed here. Please note that the export rules of +&XSLT; apply. So only there may be more than one template with the same +match and mode details.</para> + +<screenshot> +<screeninfo>The Templates Window</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="templates_window.png" format="PNG"/> +</imageobject> +<textobject><phrase>The Templates Window</phrase></textobject> +</mediaobject> +</screenshot> + +<para> +Clicking on a template entry in the list shown will cause the cursor in +the main window to move to the file and line number indicated. +</para> +</sect1> + diff --git a/doc/kxsldbg/templates_window.png b/doc/kxsldbg/templates_window.png Binary files differnew file mode 100644 index 00000000..f20f798f --- /dev/null +++ b/doc/kxsldbg/templates_window.png diff --git a/doc/kxsldbg/variables.docbook b/doc/kxsldbg/variables.docbook new file mode 100644 index 00000000..7cdd1cdf --- /dev/null +++ b/doc/kxsldbg/variables.docbook @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<sect1 id="variables"> +<sect1info> +<authorgroup> +<author> +<firstname>Keith</firstname> +<surname>Isdale</surname> +<affiliation> +<address><email>k_isdale@tpg.com.au</email></address> +</affiliation> +</author> +<!-- TRANS:ROLES_OF_TRANSLATORS --> +</authorgroup> +</sect1info> + +<title>Working With Variables</title> + +<para> +If the inspector dialog is not showing use the +<menuchoice> +<guimenu>Tools</guimenu> +<guimenuitem>Show inspectors</guimenuitem> +</menuchoice> +menu item. +</para> + +<para> +Local and global variables are show in a tab on the inspector dialog. +The following example shows a XSLT code segment that declares a global and a local variable +</para> +<informalexample> +<programlisting> + <xsl:variable name="globalvariable" select="'foo'"/> + + <xsl:template match="/"/> + <xsl:param name="localvariable" select="'bar'"/> + </xsl:template match="/"/> +</programlisting> +</informalexample> +<para> +Clicking with with mouse on a variable in the list will cause summary +information to be displayed in the bottom of the dialog. If a variable has + a select expression, for example +</para> +<informalexample> +<programlisting> + <xsl:variable name="changeable" select="'oldValue'" /> +</programlisting> +</informalexample> +<para> +then a new XPath an be choosen by entering a new value + for <guilabel>Variable expression</guilabel> then clicking the <guibutton>Set expression</guibutton> button.</para> + +<screenshot> +<screeninfo>The Variables tab</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="variables_window.png" format="PNG" /> +</imageobject> +<textobject><phrase>The Variables Tab</phrase></textobject> +<caption><para>The Variables Tab</para></caption> +</mediaobject> +</screenshot> + +<para> +Clicking on a variable entry in the list shown will cause the cursor in +the main window to move to the file and line number indicated. +</para> +</sect1> diff --git a/doc/kxsldbg/variables_window.png b/doc/kxsldbg/variables_window.png Binary files differnew file mode 100644 index 00000000..d90cb92d --- /dev/null +++ b/doc/kxsldbg/variables_window.png diff --git a/doc/kxsldbg/walk_window.png b/doc/kxsldbg/walk_window.png Binary files differnew file mode 100644 index 00000000..b30ce81b --- /dev/null +++ b/doc/kxsldbg/walk_window.png diff --git a/doc/kxsldbg/xsldbg_break.png b/doc/kxsldbg/xsldbg_break.png Binary files differnew file mode 100644 index 00000000..68657082 --- /dev/null +++ b/doc/kxsldbg/xsldbg_break.png diff --git a/doc/kxsldbg/xsldbg_data.png b/doc/kxsldbg/xsldbg_data.png Binary files differnew file mode 100644 index 00000000..8feb8c2e --- /dev/null +++ b/doc/kxsldbg/xsldbg_data.png diff --git a/doc/kxsldbg/xsldbg_delete.png b/doc/kxsldbg/xsldbg_delete.png Binary files differnew file mode 100644 index 00000000..fbe766c2 --- /dev/null +++ b/doc/kxsldbg/xsldbg_delete.png diff --git a/doc/kxsldbg/xsldbg_enable.png b/doc/kxsldbg/xsldbg_enable.png Binary files differnew file mode 100644 index 00000000..56c5e5c8 --- /dev/null +++ b/doc/kxsldbg/xsldbg_enable.png diff --git a/doc/kxsldbg/xsldbg_output.png b/doc/kxsldbg/xsldbg_output.png Binary files differnew file mode 100644 index 00000000..5c8fdc53 --- /dev/null +++ b/doc/kxsldbg/xsldbg_output.png diff --git a/doc/kxsldbg/xsldbg_refresh.png b/doc/kxsldbg/xsldbg_refresh.png Binary files differnew file mode 100644 index 00000000..0297288e --- /dev/null +++ b/doc/kxsldbg/xsldbg_refresh.png diff --git a/doc/kxsldbg/xsldbg_source.png b/doc/kxsldbg/xsldbg_source.png Binary files differnew file mode 100644 index 00000000..17618fe8 --- /dev/null +++ b/doc/kxsldbg/xsldbg_source.png diff --git a/doc/kxsldbg/xsldbg_stepdown.png b/doc/kxsldbg/xsldbg_stepdown.png Binary files differnew file mode 100644 index 00000000..3430b61e --- /dev/null +++ b/doc/kxsldbg/xsldbg_stepdown.png diff --git a/doc/kxsldbg/xsldbg_stepup.png b/doc/kxsldbg/xsldbg_stepup.png Binary files differnew file mode 100644 index 00000000..3170b14c --- /dev/null +++ b/doc/kxsldbg/xsldbg_stepup.png diff --git a/doc/quanta/Makefile.am b/doc/quanta/Makefile.am new file mode 100644 index 00000000..febd406e --- /dev/null +++ b/doc/quanta/Makefile.am @@ -0,0 +1,3 @@ +KDE_LANG = en +KDE_DOCS = $(package) +KDE_MANS = AUTO diff --git a/doc/quanta/adv-quanta.docbook b/doc/quanta/adv-quanta.docbook new file mode 100644 index 00000000..d3a142ac --- /dev/null +++ b/doc/quanta/adv-quanta.docbook @@ -0,0 +1,623 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<chapter id="advanced-quanta-3-2"> +<chapterinfo> +<title>Advanced Features</title> +<authorgroup> +<author> +<firstname>Christopher</firstname> +<surname>Hornbaker</surname> +<affiliation> +<address><email>chrishornbaker@earthlink.net</email></address> +</affiliation> + +</author> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> +</chapterinfo> + +<title>Advanced Features</title> + +<para> +This chapter outlines the advanced features of &quantaplus; and how to use +them. +</para> + +<sect1 id="xml-tools-3-2"> +<title>&XML; Tools</title> + +<para> +The 3.2 release of &quantaplus; brings with it many new &XML; tools and +features. The tools are unique in their integration within &quantaplus;. +All of these tools use <application>Kommander</application> as a front-end and +<application>libxml2</application> and <application>libxslt</application> +as a back-end. The combination of these makes for fast, efficient, +productive, and complete tools. +</para> + +<sect2 id="kde-db-3-2"> +<title>&kde; Documentation Tools</title> + +<para> +&quantaplus; supports &kde;'s two main documentation tools: +<command>meinproc</command> and <command>checkXML</command>. +</para> + +<sect3 id="meinproc-3-2"> +<title><command>meinproc</command></title> + +<para> +Anyone who has worked with &kde; documentation knows +<command>meinproc</command> and how superb it is. Well, take it up a notch +with a great graphical interface! No longer resort to a shell; just click +the icon that resembles a processor and you are done! +</para> + +<variablelist> +<varlistentry> +<term><guilabel>Current Working Folder</guilabel></term> +<listitem> +<para> +This application expects an <filename>index.docbook</filename> +file to be present in a folder. If <filename>index.docbook</filename> +is in the current working folder, then simply leave <guilabel>Current Working +Folder</guilabel> checked. If it is not, then uncheck <guilabel>Current Working Folder</guilabel> +and enter the folder you wish to process in the <guilabel>Other Folder</guilabel> field. +</para> +</listitem> +</varlistentry> +</variablelist> + +<note> +<para> +Outputted files are placed in the same folder as the sources files. +All &HTML; files are removed each time +<command>meinproc</command> is ran. +</para> +</note> + +</sect3> + +<sect3 id="checkxml-3-2"> +<title><command>checkXML</command></title> + +<para> +Again, anyone who has worked with &kde; documentation knows this +helpful application. Again, &quantaplus; provides a great little graphical +front-end to this one. +</para> + +<variablelist> +<varlistentry> +<term><guilabel>Current Working Folder</guilabel></term> +<listitem> +<para> +If the currently opened file is the <filename>index.docbook</filename> +file, then simply leave <guilabel>Current Working Folder</guilabel> checked. +If it is not, then uncheck <guilabel>Current Working Folder</guilabel> and +enter the folder of where <filename>index.docbook</filename> can be found. +</para> +</listitem> +</varlistentry> +</variablelist> + +<note> +<title>Output</title> +<para> +If there is output, then your file is invalid. Please correct the reported +errors and try again. +</para> +</note> +</sect3> +</sect2> + +<sect2 id="xmlval-3-2"> +<title>&XML; Validation</title> + +<para> +&quantaplus; has a great &XML; validation tool, which uses a +<command>xmllint</command> back-end. +</para> + +<variablelist> +<varlistentry> +<term><guilabel>Current File</guilabel></term> +<listitem> +<para> +If the file to be validated is currently focused on in &quantaplus;, then +simply leave <guilabel>Current File</guilabel> checked. If it is not, then +uncheck <guilabel>Current File</guilabel> and select the file to be +validated from the Other File file selector. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guilabel>Well-formed Checking</guilabel></term> +<listitem> +<para> +If you only wish to know only if the file is well-formed, click the +<guilabel>Well-formed Checking Only</guilabel> check box. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guilabel>Definition &URI;</guilabel></term> +<listitem> +<para> +If you are using a &DTD; and it is specified within the &XML; file, then +select &DTD; (Internal) (default), else select &DTD; (External) and locate +the &DTD; with the Definition &URI; file selector. Both &W3C; &XML; +Schema and RelaxNG validation are required to be +externally defined via the <guilabel>Definition &URI;</guilabel> file selector. +</para> +</listitem> +</varlistentry> +</variablelist> +</sect2> + +<sect2 id="xsltproc-3-2"> +<title>&XSL; Processing</title> + +<para> +Yep, &quantaplus; has a &XSL; processing tool, too! This uses the +<command>xsltproc</command> tool provided with +<application>libxml2</application>. +</para> + +<variablelist> +<varlistentry> +<term><guilabel>Current File</guilabel></term> +<listitem> +<para> +If the file to be processed is currently focused on in &quantaplus;, then +simply leave <guilabel>Current File</guilabel> checked. If it is not, +then uncheck <guilabel>Current File</guilabel> and select the file to be +processed from the <guilabel>Other File</guilabel> selector. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term>Stylesheet</term> +<listitem> +<para> +Select the &XSL; file that you wish to be used. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guilabel>Output file name</guilabel></term> +<listitem> +<para> +Enter the name of the file that you want the resulting file to be called. +File is outputed to your home folder by default. +</para> +</listitem> +</varlistentry> +</variablelist> + +<note> +<para> +This application lacks flexibility. Sorry, we will do better next time. +</para> +</note> +</sect2> + +</sect1> + +<!-- <sect1 id="kfilereplace-3-2"> +<title>KFileReplace</title> + +<para> +KFileReplace is a terrific new addition to &quantaplus;. It allows one to +quickly replace strings over multiple files in only a few clicks of the +mouse. Imagine you have converted all your GIF images to PNG images +(hasn't everyone done this already?), only the extension has changed, and +you have the <img /> tag scattered throughout 50 XHTML files. Are you +going to do a Find & Replace on every file? Surely not when you can do +them all at the same time! This is only one of the many situations where +you will find KFileReplace a seriously helpful tool. This section will show +you how to use this wonderful feature. +</para> + +<sect2 id="using-kfr-3-2"> +<title>Using KFileReplace</title> + +<para> +With all these wonderful features KFileReplace has, surely you are +incredibly interested in how to use it! Well, make sure your swim suit +is on tight, because we are about to dive in! +</para> + +<sect3 id="start-kfr-3-2"> +<title>Starting KFileReplace</title> + +<para> +You will find KFileReplace in two places: &quantaplus;' main toolbar and the +menubar (Plugins -> KFileReplace). It is represented by this icon: +<inlinemediaobject> +<imageobject> +<imagedata fileref="kfr-icon.png" format="PNG" /> +</imageobject> +</inlinemediaobject>. +By executing it from either location, you will be presented with the New +Search & Replace Project dialog. +</para> + +<mediaobject> +<imageobject> +<imagedata fileref="kfr-new-dialog.png" format="PNG" /> +</imageobject> +<caption><para>KFileReplace's New Search & Replace Project dialog.</para></caption> +</mediaobject> + +</sect3> + +<sect3 id="replace-string-kfr-3-2"> +<title>Replacing Strings in Files Over Multiple Folders</title> + + +<para> +Your boss just gave word that: + +<orderedlist numeration="arabic"> +<listitem> +<para>all image formats will be PNG from now on;</para> +</listitem> +<listitem> +<para>all current images must be converted to PNG;</para> +</listitem> +<listitem> +<para>and it all needs to be done in one hour.</para> +</listitem> +</orderedlist> + +<quote>One hour!?!?</quote> you think to yourself. <quote>It'll take at +least 45 minutes to convert the images!</quote> Calm down. Convert +the images, load up your project, and fire up KFileReplace. Filter for +only the file types you want to change. Press the <inlinemediaobject> +<imageobject><imagedata format="PNG" fileref="" /></imageobject> +</inlinemediaobject> and for, say GIF images, .gif for the string to +replace and .png for the replacement string. +</para> + +</sect3> +</sect2> +</sect1> --> + +<sect1 id="kparts-3-2"> +<sect1info> +<title>Using Plugins</title> +<authorgroup> +<author> +<firstname>Mathieu</firstname> +<surname>Kooiman</surname> +<affiliation> +<address><email>quanta@map-is.nl</email></address> +</affiliation> +</author> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> +</sect1info> + +<title>Using Plugins</title> + +<sect2 id="what-is-a-plugin-3-2"> +<title>What is a Plugin?</title> + +<para> +&quantaplus; is able to load plugins, which are KParts. The +KPart framework is another very powerfull framework of &kde;. A KPart is a +relatively small, reusable container of functionality. It allows &kde; +developers to easily build on the work of other programmers. One +example of this is &quantaplus; itself. The editor &quantaplus; uses is +the &kate; KPart. The &kate; KPart already had a bunch of functionality that +&quantaplus; needed, like syntax highlighting. Integrating it into +&quantaplus; allowed the &quantaplus; developers to focus on what +&quantaplus; should be able to do, rather than facing the many problems +that developing a new editor KPart/component from scratch would bring. +</para> + +<para> +The plugins &quantaplus; loads might have nothing to do with &quantaplus; +itself. This makes it a very powerful plugin system. You can benefit from +extra functionality and need not to wait until someone integrates it into +&quantaplus;! The plugins can be loaded into a number of &GUI; elements. +More on this below. +</para> + +</sect2> + +<sect2 id="plugin-dialog-3-2"> +<title>Understanding the Edit Plugin Dialog</title> + +<para>To install a Plugin or KPart we will work from the +<menuchoice> +<guimenu>Plugins</guimenu> +<guimenuitem>Edit</guimenuitem> +</menuchoice> menu. This will bring up the following dialog: +</para> + +<mediaobject> +<imageobject> +<imagedata format="PNG" fileref="plugin-edit.png" /> +</imageobject> +<caption><para>The Edit Plugin dialog.</para></caption> +</mediaobject> + +<para> +This dialog lets you manage all defined plugins and lets you add new ones. +We will describe each &GUI; element in here: + +<variablelist> +<varlistentry> +<term><guilabel>Search paths</guilabel></term> +<listitem> +<para> +Here you can fill in a search path. When adding a plugin without a +<guilabel>Location</guilabel>, &quantaplus; will search these paths to +find the plugin. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guilabel>Add</guilabel></term> +<listitem> +<para> +This will bring up a dialog which allows you to add a new plugin. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guilabel>Configure</guilabel></term> +<listitem> +<para> +This will allow you to change the settings of a particular plugin. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guilabel>Remove</guilabel></term> +<listitem> +<para> +Removes the currently selected plugin. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guilabel>Refresh</guilabel></term> +<listitem> +<para> +Refreshes the dialog's contents. +</para> +</listitem> +</varlistentry> +</variablelist> +</para> +<para>Read <xref linkend="configure-plugins" /> to learn more about plugins.</para> +</sect2> +</sect1> +<sect1 id="team-members"> + <title>Team Development</title> + <para>Often a project has more than one people working on it and there is some kind of hierarchical relationsship between them. &quantaplus; supports the notion of team members and they are configurable in the +<menuchoice> +<shortcut> +<keycombo action="simul">&Shift;<keycap>F7</keycap></keycombo> +</shortcut> +<guimenu>Project</guimenu> +<guimenuitem>Project Properties</guimenuitem> +</menuchoice> dialog. + </para> + <mediaobject> + <imageobject> + <imagedata format="PNG" fileref="team-editing.png" /> + </imageobject> + <caption><para>The team member editor dialog</para></caption> + </mediaobject> + <para> + The <guilabel>Name</guilabel>, <guilabel>Email</guilabel> entries are self explaining. <guilabel>Nickname</guilabel> is the nick of the user and acts as an unique identifier. + </para> + <para><guilabel>Role</guilabel> specifies the role of the member in the project and can be one of the following: +<itemizedlist> +<listitem><para> +<guilabel>Team leader</guilabel> +</para></listitem> +<listitem><para> +<guilabel>Subproject Leader</guilabel> +</para></listitem> +<listitem><para> +<guilabel>Task Leader</guilabel> +</para></listitem> +<listitem><para> +<guilabel>Simple Member</guilabel> +</para></listitem> +</itemizedlist> +</para> +<para><guilabel>Task</guilabel> is a description of the task assigned to this member.</para> +<para><guilabel>Subproject</guilabel>: you can select a list of subproject. Subprojects can be configured and created by pressing the <guilabel>Edit subprojects</guilabel> button. Each subproject has a user visible name and a location entry, the later specifying a relative path to a directory under the project tree. This means that a subproject is a directory under the main project. For example the main project can be the website of your company, while a subproject can be the website for the intranet, located under the <filename path="intranet">intranet</filename> folder in the project.</para> +<para>One member can have more than one role in the project, like both team leader and subproject leader.</para> +<para>The user should select who is himself from the list of the team members. This is possible by selecting a team member from the list and pressing the <guilabel>Set to Yourself</guilabel> button. The currently selected member (your identity) appears in bold after the <guilabel>You are:</guilabel> text.</para> +<para>Nicknames and setting yourself is important regarding messaging and annotations. See <xref linkend="annotations"/> to learn more about annotations.</para> +<para>Aside of keeping track of your team, there is one more benefit of setting up the team members: you can configure an event to inform the team leaders when some action happens. See <xref linkend="event-actions"/> about how to do it.</para> +</sect1> +<sect1 id="event-actions"> + <title>Event Actions</title> + <para>Event actions are actions executed when some event happens in the project. An example would be logging when the project was opened and closed, so it can be later reviewed how much one worked on it, or sending a mail when a file is saved, or adding the file to the CVS with the help of a script when the file is added to the project and the list could continue.</para> + <para>On the <guilabel>Event Configuration</guilabel> page of the + <menuchoice> + <shortcut> + <keycombo action="simul">&Shift;<keycap>F7</keycap></keycombo> + </shortcut> + <guimenu>Project</guimenu> + <guimenuitem>Project Properties</guimenuitem> + </menuchoice> dialog you can create, edit and delete the event actions. +</para> +<mediaobject> + <imageobject> + <imagedata format="PNG" fileref="event-editing.png" /> + </imageobject> + <caption><para>The event editor dialog</para></caption> +</mediaobject> +<para>The entries in the dialog are:</para> +<variablelist> +<varlistentry> +<term><guilabel>Event</guilabel></term> +<listitem><para>the action is executed when the event selected from the list happens. The event names are self explanatory.</para></listitem> +</varlistentry> +<varlistentry> +<term><guilabel>Action</guilabel></term> +<listitem><para> +the type of the executed action. The possible choices are +</para> +<variablelist> +<varlistentry> +<term><guilabel>Non-script action</guilabel></term> +<listitem><para>an action that is not a user defined script action. See <xref linkend="user-actions" /> for user action. +</para> +<para><guilabel>Action name</guilabel> specifies the action to be executed when the event happens.</para> +</listitem> +</varlistentry> +<varlistentry> + <term><guilabel>Send email</guilabel></term> + <listitem><para>an email is sent when the action happens to the recipient selected in the <guilabel>Receiver</guilabel> list. The recipient can be a team or subproject leader. See <xref linkend="team-members" /> for defining such leaders. + </para> + </listitem> +</varlistentry> +<varlistentry> + <term><guilabel>Log event</guilabel></term> + <listitem><para>the event is logged in a file. The arguments for this action are: + </para> + <variablelist> + <varlistentry> + <term><guilabel>Log file</guilabel></term> + <listitem><para>the filename with full path</para></listitem> + </varlistentry> + <varlistentry> + <term>Detail</term> + <listitem><para>How much information will the log contain</para></listitem> + </varlistentry> + <varlistentry> + <term><guilabel>Behavior</guilabel></term> + <listitem><para>Whether to create/overwrite the existing log file or append the new logged event to it.</para></listitem> + </varlistentry> + </variablelist> + </listitem> +</varlistentry + > +<varlistentry> +<term><guilabel>Script action</guilabel></term> +<listitem><para>an user defined script action. See <xref linkend="user-actions" /> for user action. + </para> + <para><guilabel>Action name</guilabel> specifies the action to be executed when the event happens.</para> +</listitem> +</varlistentry> + +</variablelist> +</listitem> +</varlistentry> +</variablelist> +<para>The other entries depend on the <guilabel>Action</guilabel> type as they were described. +</para> +</sect1> + +<sect1 id="annotations"> +<title>Annotations</title> +<para>Annotations are special comments in the documents. They differ from regular comments by the following things: +<itemizedlist> +<listitem><para> +the information is collected by Quanta and shown in the <guilabel>Annotations</guilabel> toolview. +</para></listitem> +<listitem><para> +the information can be addressed to a team member +</para></listitem> +</itemizedlist> +</para> +<para>Entering annotations is simple. You can either use the <guilabel>Annotate</guilabel> entry from the editor context menu or enter the <emphasis>@annotation</emphasis> keyword in a comment area followed by the annotation text. +<example><title>Annotation example in XML</title><screen> +<!-- @annotation It is possible that this code is wrong. --></screen> +<screen> +<!-- @annotation + Multiline + annotation. +--></screen></example> +<example><title>Annotation example in PHP</title><screen> +/* @annotation +Use PHP comments when annotating a PHP area +*/</screen> + +</example> +</para> +<para>Annotations can be addressed for a specific member of your team. The syntax in this case is <emphasis>@annotation(nickname)</emphasis> or <emphasis>@annotation(role)</emphasis>, where <emphasis>nickname</emphasis> is the nickname of a team member, while <emphasis>role</emphasis> is a project role from the following items: +<itemizedlist> +<listitem><para> +team leader +</para></listitem> +<listitem><para> +task leader +</para></listitem> +<listitem><para> +subproject leader +</para></listitem> +</itemizedlist> +The task and subproject leaders should be followed by the corresponding task and subproject name, like it is shown in the below examples. +</para> +<para> +<example><title>Make a note to a team member with the nickname <emphasis>eric</emphasis></title> +<screen><-- @annotation(eric) Eric, please look at this. Andras --></screen> +</example> +<example><title>Inform the team leader</title> +<screen><-- @annotation(team leader) This is very important for the team --></screen> +</example> +<example><title>Inform the <emphasis>PHP</emphasis> subproject leader</title> +<screen>// @annotation(subproject leader:PHP) What do you think about it?</screen> +</example> +</para> +<para>Nicknames and role names are case insensitive, but spaces around brackets and the <emphasis>:</emphasis> make the annotation invalid.</para> +<para>More about team members, roles and nicknames can be found in <xref linkend="team-members"/>.</para> +<para> +The annotations found in the project can be inspected in the <guilabel>Annotations</guilabel> view. It consists of tree tabs: +<variablelist> +<varlistentry> +<term><guilabel>Current File</guilabel></term> +<listitem><para> +The annotation found in the current file.</para></listitem> +</varlistentry> + +<varlistentry> +<term><guilabel>For You</guilabel></term> +<listitem><para> +Annotations in the project addressed for you. The entries are groupped per file. +</para></listitem> +</varlistentry> + +<varlistentry> +<term><guilabel>All Files</guilabel></term> +<listitem><para> +The annotations found in all the project files, groupe dy files +</para></listitem> +</varlistentry> +</variablelist> +The annotations are scanned on project and file load for external modifications. This way even is somebody adds an annotation outside of &quantaplus;, it will be recognized. As scanning can take some time, the information dialog about new annotations addressed for you might appear after some seconds of the project loading. +</para> +</sect1> +<!--<sect1 id="cvs-3-2"> +<title>Using CVS</title> + +<para> +&quantaplus; uses Cervisia for CVS. Explain its usage within &quantaplus;. +</para> +</sect1> --> + +&debugging-quanta; +</chapter> diff --git a/doc/quanta/attribute_tree.png b/doc/quanta/attribute_tree.png Binary files differnew file mode 100644 index 00000000..a823dc6c --- /dev/null +++ b/doc/quanta/attribute_tree.png diff --git a/doc/quanta/config-quanta.docbook b/doc/quanta/config-quanta.docbook new file mode 100644 index 00000000..4f8c9a1f --- /dev/null +++ b/doc/quanta/config-quanta.docbook @@ -0,0 +1,125 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<chapter id="quanta-configuring"> + <chapterinfo> + <title>Configuring &quantaplus;</title> + <authorgroup> + <author> + <firstname>András</firstname> + <surname>Mantia</surname> + <affiliation> + <address><email>amantia@kde.org</email></address> + </affiliation> + </author> + + <!-- TRANS:ROLES_OF_TRANSLATORS --> + + </authorgroup> + </chapterinfo> + + <title>Configuring &quantaplus;</title> + + <para> + This chapter describes how you can control the behavior of &quantaplus;. + </para> + <para> + The configuration dialogs are accessible from the <guilabel>Settings</guilabel> menu. Here we will discuss only few of them, the rest are not &quantaplus; specific and a short description can be found at <xref linkend="settings-menu-3-2" />. + </para> + + <sect1 id="configure-quanta"> + <title>Configuring Quanta</title> + <para>The configuration dialog can be invoked by using <menuchoice><guimenu>Settings</guimenu><guimenu>Configure Quanta...</guimenu></menuchoice>. The dialog has several pages, we will discuss them one by one. + </para> +<variablelist> +<varlistentry> +<term><guilabel>Tag Style</guilabel></term> +<listitem><para>You can change the behavior of &quantaplus; related to tags, including autocompletion. The entries are: +<itemizedlist> +<listitem><para><guilabel>Tag case:</guilabel> the case of the automatically inserted tags. <guilabel>Default Case</guilabel> means the tags will be inserted as they are described in the <link linkend="tagxml-3-2">tagXML</link> files.</para></listitem> +<listitem><para><guilabel>Attribute case:</guilabel> the case of the automatically inserted attributes. <guilabel>Default Case</guilabel> means the attributes will be inserted as they are described in the <link linkend="tagxml-3-2">tagXML</link> files.</para></listitem> +<listitem><para><guilabel>Attribute quotation:</guilabel> how to quote attributes inserted by &quantaplus;.</para></listitem> +<listitem><para><guilabel>Auto-close optional tags:</guilabel> if checked, tags for which closing tag is option will be automatically closed once the tag closing > is entered.</para></listitem> +<listitem><para><guilabel>Auto-close non-single and non-optional tags:</guilabel> same as before for the rest of tags, exception being the single tags.</para></listitem> +<listitem><para><guilabel>Use auto-completion:</guilabel> turn on/off the autocompletion of tags, attributes, functions, etc. +</para></listitem> +<listitem><para><guilabel>Update opening/closing tag automatically:</guilabel> if enabled, whenever you change the opening tag, the corresponding closing tag will be changed as well and vice-versa.</para></listitem> +<listitem><para><guilabel>Automatic replacement of the accented characters:</guilabel> if enabled the accented characters will be replaced with their codes as you type.</para></listitem> +</itemizedlist> +</para> +</listitem> + +</varlistentry> + +<varlistentry> +<term><guilabel>Environment</guilabel></term> +<listitem><para>A page to control the environment and some default settings. +</para> +<itemizedlist> +<listitem><para><guilabel>Mimetypes:</guilabel> mimetypes used to recognize different kind of files. Use the <guilabel>Reset to Default</guilabel> button to fill in the entries with the default settings.</para></listitem> +<listitem><para><guilabel>Default character encoding:</guilabel> the encoding of the newly created files, or files loaded in other way than <menuchoice><guimenu>File</guimenu><guimenuitem>Open</guimenuitem></menuchoice> (where you can override the encoding). This setting is overridden by the same setting in the <guilabel>Project Properties</guilabel> if a project is loaded.</para></listitem> +<listitem><para><guilabel>Default DTD:</guilabel> the DTD used for newly created files, or files whose DTD was not recognized. This setting is overridden by the same setting in the <guilabel>Project Properties</guilabel> if a project is loaded.</para></listitem> +<listitem><para><guilabel>Create backups:</guilabel> &quantaplus; will create backup files periodically, so in case of power failure or crash, on the next startup the document can be restored from this backup. This is not the same as the backup created on file save. Even for not-yet saved documents there is a backup created.</para></listitem> +<listitem><para><guilabel>Startup Options:</guilabel> self explanatory setting which control what will happen on startup.</para></listitem> + +</itemizedlist> + +</listitem> +</varlistentry> + +<varlistentry> +<term><guilabel>User Interface</guilabel></term> +<listitem><para>Here you can control the look and feel of &quantaplus;. +</para> +<para>The preview and the documentation can appear in the editor area or in a separate toolview, in which case it's possible to look at the documentation/preview and the source as well.</para> +<para>It's also possible to configure the look of the toolview and document tabs.</para> +<para><guilabel>Reset window layout to the default on the next startup</guilabel> is useful when you have messed up the user interface by changing the MDI modes and docking/undocking the toolviews. It is the same as the <command>--resetlayout</command> command line switch.</para> +<para>This is the place also to control the behavior of the file trees.</para> +<para>The <guilabel>Warning Messages</guilabel> section is useful to enable or disable the warning messages that can be dismissed by checking the <guilabel>Do not show again</guilabel> box in them.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guilabel>VPL View</guilabel></term> +<listitem><para>The place to change the &VPL; behavior. You can enable the showing of an icon in place of scripts as well as configure the synchronization of the VPL and source view when the splitted mode is activated. See <xref linkend="view-menu-3-2"/> to learn how to activate the different modes. +</para></listitem> +</varlistentry> + +<varlistentry> +<term><guilabel>Parser</guilabel></term> +<listitem><para>Here you can fine-tune the parser and the structure tree, which is the visual representation of the parser nodes in the document.</para> +<para>In the <guilabel>Clicks on Structure Tree Items</guilabel> it is possible to change the actions assigned to mouse buttons when you click on the structure tree.</para> +<para>In the <guilabel>Structure Tree Look & Feel</guilabel> it is possible to configure what kind of nodes are visible in the tree, how often is the tree updated while editing and on an update how deeply should be the structure tree automatically opened. Empty nodes are the white-space text nodes, while empty groups are groups for whom there was no element found in the current document.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guilabel>Abbreviations</guilabel></term> +<listitem><para> +The place to define abbreviations (some kind of templates), that can be expanded to bigger text while editing. Abbreviations are organized in groups, each group can be valid for more than one &DTEP;. This means you can have a group valid for PHP where the "ifclause" abbreviation template means something else than in a group valid for JavaScript.</para></listitem> +</varlistentry> + +</variablelist> + + </sect1> + +<sect1 id="configure-actions"> +<title>Configuring Actions</title> +<para>User defineable action creation and editing is described in <xref linkend="user-actions"/>.</para> +</sect1> + +<sect1 id="configure-plugins"> + <title>Configuring Plugins</title> + <para>Here you can manage your plugins. Plugins are KPart applications written by third parties that can be reused in any KPart aware application, the most known being &konqueror;. When creating a plugin you must specify the: + <itemizedlist> + <listitem><para><guilabel>Name:</guilabel> the user visible name</para></listitem> + <listitem><para><guilabel>Output window:</guilabel> plugins can appear in a tab of the editor area or in a separate toolview at the bottom</para></listitem> + <listitem><para><guilabel>Location:</guilabel> the path to the plugin, if it is not located in the standard locations, like <filename class="directory">$<envar>KDEDIR</envar>/lib</filename> .</para></listitem> + <listitem><para><guilabel>File name:</guilabel> the relative path and the filename to the plugin's libtool file, like <filename class="libraryfile">kde3/libcervisiapart.la</filename></para></listitem> + <listitem><para><guilabel>Input:</guilabel> the plugin will get this information on startup, so it can open the <guilabel>Current File</guilabel>, the folder of the current file (<guilabel>Current File Path</guilabel>) or the <guilabel>Project Folder</guilabel>.</para></listitem> + <listitem><para><guilabel>Read only part:</guilabel> check if the plugin refuses to load. Read-only KParts usually refuse to load without this option checked.</para></listitem> + <listitem><para><guilabel>Validate plugin:</guilabel> if checked, &quantaplus; will test if the entered information is correct or not. Uncheck if the plugin is not yet available, but you will install later, so you can close the dialog.</para></listitem> +</itemizedlist> + </para> + <para>See <xref linkend="plugins-menu-3-2" /> and <xref linkend="kparts-3-2" /> for information about using the plugins.</para> +</sect1> +</chapter> diff --git a/doc/quanta/contents2.png b/doc/quanta/contents2.png Binary files differnew file mode 100644 index 00000000..e2a44eca --- /dev/null +++ b/doc/quanta/contents2.png diff --git a/doc/quanta/credits-license.docbook b/doc/quanta/credits-license.docbook new file mode 100644 index 00000000..65f44e5a --- /dev/null +++ b/doc/quanta/credits-license.docbook @@ -0,0 +1,150 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<chapter id="credits-license-3-2"> +<chapterinfo> +<title>Credits and License</title> +<authorgroup> +<author> +<firstname>Christopher</firstname> +<surname>Hornbaker</surname> +<affiliation> +<address><email>chrishornbaker@earthlink.net</email></address> +</affiliation> +</author> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> +</chapterinfo> + +<title>Credits and License</title> + +<note> +<para> +Sorry to anyone I missed or if I mis-spelt your name! +</para> +</note> + +<para> +Much thanks to everyone who has spent the time to contribute! +</para> + +<variablelist> +<title>The &quantaplus; Development Team:</title> + +<varlistentry> +<term>Bergia, Andrea</term> +<listitem><para>Original &CSS; editor.</para></listitem> +</varlistentry> +<varlistentry> +<term>Britton, Marc</term> +<listitem><para><application>Kommander</application>, various features, and bug fixes.</para></listitem> +</varlistentry> +<varlistentry> +<term>Colton, Matthew</term> +<listitem><para>Splash screen for many versions</para></listitem> +</varlistentry> +<varlistentry> +<term>Deschildre, Nicolas</term> +<listitem><para><application>Visual Page Layout</application> & undo/redo system</para></listitem> +</varlistentry> +<varlistentry> +<term>Dmitrienko, Dmitri</term> +<listitem><para>&PHP;4 debugger</para></listitem> +</varlistentry> +<varlistentry> +<term>Gulmini, Luciano</term> +<listitem><para><application>Frame Wizard</application></para></listitem> +</varlistentry> +<varlistentry> +<term>Hanley, Jason P.</term> +<listitem><para>Various fixes, foundational code for &DTD; parsing, and other &DTD; related work</para></listitem> +</varlistentry> +<varlistentry> +<term>Hindsgaul, Claus</term> +<listitem><para>Danish translation</para></listitem> +</varlistentry> +<varlistentry> +<term>Hornbaker, Christopher</term> +<listitem><para>The Anal &XML; Guy & Documentation</para></listitem> +</varlistentry> +<varlistentry> +<term>Isdale, Keith</term> +<listitem><para>&XSL; 1.0 &DTEP;, <application>&kxsl;</application></para></listitem> +</varlistentry> +<varlistentry> +<term>Kooiman, Mathieu</term> +<listitem><para>Documentation, bug fixes, and &PHP; debugger framework.</para></listitem> +</varlistentry> +<varlistentry> +<term>Laffoon, Eric</term> +<listitem><para>Project Manager and web site admin.</para></listitem> +</varlistentry> +<varlistentry> +<term>Mantia, András</term> +<listitem><para>Core Developer</para></listitem> +</varlistentry> +<varlistentry> +<term>Moore, Richard</term> +<listitem><para>Coding, original TagXML docs, and more</para></listitem> +</varlistentry> +<varlistentry> +<term>Mous, Fabrice</term> +<listitem><para>Documentation</para></listitem> +</varlistentry> +<varlistentry> +<term>Nickel, Robert C.</term> +<listitem><para>Documentation</para></listitem> +</varlistentry> +<varlistentry> +<term>Pibil, Ted</term> +<listitem><para>Addition and maintainence of &DTD;s</para></listitem> +</varlistentry> +<varlistentry> +<term>Poplavsky, Dmitry</term> +<listitem><para>ex-Core Developer — left for commercial version</para></listitem> +</varlistentry> +<varlistentry> +<term>Vilches, George</term> +<listitem><para>Tree-based upload dialog</para></listitem> +</varlistentry> +<varlistentry> +<term>Yakovlev, Alexander</term> +<listitem><para>ex-Core Developer — left for commercial version</para></listitem> +</varlistentry> +<!-- +<varlistentry> +<term>Firstname Surname</term> +<listitem><para>Function</para></listitem> +</varlistentry> +--> + +</variablelist> + +<variablelist> +<title>Special Thanks To:</title> + +<varlistentry> +<term>xmlsoft.org</term> +<listitem><para>The writers of <application>libxml2</application> and <application>libxslt</application>.</para></listitem> +</varlistentry> +<!-- +<varlistentry> +<term>Name</term> +<listitem><para>Function</para></listitem> +</varlistentry> +--> + +</variablelist> + +<para> +&quantaplus; <trademark class="copyright" /> 2000, 2001, 2002, 2003 &quantaplus; Development Team. +</para> + +<para> +&quantaplus; User Manual <trademark class="copyright" /> 2002, 2003 &quantaplus; Development Team. +</para> + +&underFDL; +&underGPL; +</chapter> diff --git a/doc/quanta/debugging-quanta.docbook b/doc/quanta/debugging-quanta.docbook new file mode 100644 index 00000000..88ad9bc1 --- /dev/null +++ b/doc/quanta/debugging-quanta.docbook @@ -0,0 +1,400 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<sect1 id="debugging-3-2"> +<sect1info> +<title>Debugging in &quantaplus;</title> +<authorgroup> +<author> +<firstname>Christopher</firstname> +<surname>Hornbaker</surname> +<affiliation> +<address><email>chrishornbaker@earthlink.net</email></address> +</affiliation> +</author> + +<author> +<firstname>Linus</firstname> +<surname>McCabe</surname> +<affiliation> +<address><email>Linus@McCabe.nu</email></address> +</affiliation> +</author> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> +</sect1info> + +<title>Debugging in &quantaplus;</title> + +<sect2 id="php-debugging-3-2"> +<title>Using the &PHP; Debugger</title> + +<para> +With &quantaplus; version 3.3, the debugger handling was reimplemented. +The support for the now obsolete &PHP; (3) builtin debugger and was dropped, +as was the support for the dbg debugger. Instead, a general debug plugin system +was developed, to allow different plugin implementations. +</para> +<para> +Currently only one plugin is available which adds support to use &gubed; with +&quantaplus;. +</para> +<para> +To use a debugger for your project, open the project settings and chose a suitable +debugger plugin. To alter debugger specific settings, press the 'Options' button +next to the debugger plugin drop down. +</para> + +<sect3 id="php-debuggin-3-2-general"> +<title>General usage</title> +<para> +Once a project has a debugger activated, a few additional items will appear in the +&quantaplus; user interface: +</para> + +<variablelist> +<varlistentry> +<term>Debugger menu</term> +<listitem> +<para> +A new menu will appear where you can reach most of the debugger functionality. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term>Debugger toolbar</term> +<listitem> +<para> +A toolbar with access to the most common debugging commands. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term>Variables toolview</term> +<listitem> +<para> +A toolview where the contents of watched variables is showed. Appears in the left dock by default. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term>Breakpoints toolview</term> +<listitem> +<para> +A toolview where all the breakpoints, line and conditional, are listed. Appears in the bottom dock by default. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term>Debug Output toolview</term> +<listitem> +<para> +A toolview where the output (as in HTML) of the debugger is shown. Appears in the bottom dock by default. +</para> +</listitem> +</varlistentry> + +</variablelist> + +<para> +Depending on what the debugger plugin supports, all or a subset of the following functionality will be available. +</para> + + + +<variablelist> +<varlistentry> +<term> +<menuchoice> +<guimenu>Debug</guimenu> +<guimenuitem>Session</guimenuitem> +<guimenuitem>Start Session</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +This action is used to connect to the debugger if that is required, or tell the plugin to start listening for debug requests. +This action is triggered by default when a project using a debugger is opened, so usually you don't need to care about it. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Debug</guimenu> +<guimenuitem>Session</guimenuitem> +<guimenuitem>End Session</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +The opposite of +<menuchoice> +<guimenu>Debug</guimenu> +<guimenuitem>Session</guimenuitem> +<guimenuitem>Start Session</guimenuitem> +</menuchoice>. Closes a connection to the debugger or stops listening for requests. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Debug</guimenu> +<guimenuitem>Execution</guimenuitem> +<guimenuitem>Send HTTP Request</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Sends a HTTP request to the server to initiate a debug request. Using this action is equivalent to +using a browser to look at the current document. The output of the request ends up in the Debug +Output dock. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Debug</guimenu> +<guimenuitem>Execution</guimenuitem> +<guimenuitem>Pause</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Pauses a running script +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Debug</guimenu> +<guimenuitem>Execution</guimenuitem> +<guimenuitem>Run</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Tells the debugger to start executing the script and send information about watched variables and current +line of execution as it goes along. If this is done while a script is paused, execution will proceed. If it's done +before a debug request is initiated, the script will start running as soon as the request is initiated. +</para> +</listitem> +</varlistentry> + + +<varlistentry> +<term> +<menuchoice> +<guimenu>Debug</guimenu> +<guimenuitem>Execution</guimenuitem> +<guimenuitem>Leap</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Tells the debugger to start executing the script without sending information about watched variables and current +line of execution. If this is done while a script is paused, execution will proceed. If it's done +before a debug request is initiated, the script will start leaping as soon as the request is initiated. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Debug</guimenu> +<guimenuitem>Execution</guimenuitem> +<guimenuitem>Step</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Tells the debugger to execute the next instruction in the script, without stepping into functions or inclusions. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Debug</guimenu> +<guimenuitem>Execution</guimenuitem> +<guimenuitem>Step Into</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Tells the debugger to execute the next instruction in the script, stepping into functions or inclusions if possible. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Debug</guimenu> +<guimenuitem>Execution</guimenuitem> +<guimenuitem>Step Out</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Tells the debugger to execute until it escapes the current function. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Debug</guimenu> +<guimenuitem>Execution</guimenuitem> +<guimenuitem>Skip</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Tells the debugger to skip the next instruction and proceed to the next one as if the current one didn't exist. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Debug</guimenu> +<guimenuitem>Execution</guimenuitem> +<guimenuitem>Kill</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Tells the debugger to kill the currently running script. +</para> +</listitem> +</varlistentry> + + +<varlistentry> +<term> +<menuchoice> +<guimenu>Debug</guimenu> +<guimenuitem>Breakpoints</guimenuitem> +<guimenuitem>Break when...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Opens a dialog where you can specify conditional breakpoints. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Debug</guimenu> +<guimenuitem>Breakpoints</guimenuitem> +<guimenuitem>Toggle breakpoint</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Toggles a line breakpoint at the line of the cursor in the current line +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Debug</guimenu> +<guimenuitem>Breakpoints</guimenuitem> +<guimenuitem>Clear breakpoints</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Clears all the breakpoints. +</para> +</listitem> +</varlistentry> + + +<varlistentry> +<term> +<menuchoice> +<guimenu>Debug</guimenu> +<guimenuitem>Variables</guimenuitem> +<guimenuitem>Watch variable</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Opens a dialog where you can enter a variable or expression you wish to watch. The value of the watch will appear +in the variables tool view. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Debug</guimenu> +<guimenuitem>Variables</guimenuitem> +<guimenuitem>Set value of variable</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Opens a dialog where you can enter a variable and a new value for it. +</para> +</listitem> +</varlistentry> + + + +</variablelist> + + + +</sect3> +</sect2> + +<sect2 id="kxsldbg-debugging-3-2"> +<title>Using &kxsl;, the &XSL; Debugger</title> + +<para> +&kxsl; is the creation of Keith Isdale, as is this section of the +documentation. &kxsl; is a &kde; front-end and a KPart to +<command>xsldbg</command>, which you can find at +http://xsldbg.sf.net along with many other works by +Keith. +</para> + +<para> +To start &kxsl;, select +<menuchoice> +<guimenu>Plugins</guimenu> +<guimenuitem>&kxsl;</guimenuitem> +</menuchoice>. +</para> + +<para> +Please refer to the &kxsl; documentation for further information +regarding its usage. +</para> +</sect2> +</sect1> diff --git a/doc/quanta/doc-view1.png b/doc/quanta/doc-view1.png Binary files differnew file mode 100644 index 00000000..e6a405ff --- /dev/null +++ b/doc/quanta/doc-view1.png diff --git a/doc/quanta/dtd-conversion.png b/doc/quanta/dtd-conversion.png Binary files differnew file mode 100644 index 00000000..c0213063 --- /dev/null +++ b/doc/quanta/dtd-conversion.png diff --git a/doc/quanta/dtep_doc_img15.png b/doc/quanta/dtep_doc_img15.png Binary files differnew file mode 100644 index 00000000..0f7e31a1 --- /dev/null +++ b/doc/quanta/dtep_doc_img15.png diff --git a/doc/quanta/dtep_doc_img18.png b/doc/quanta/dtep_doc_img18.png Binary files differnew file mode 100644 index 00000000..078801bd --- /dev/null +++ b/doc/quanta/dtep_doc_img18.png diff --git a/doc/quanta/dtep_doc_img21.png b/doc/quanta/dtep_doc_img21.png Binary files differnew file mode 100644 index 00000000..f5d922bb --- /dev/null +++ b/doc/quanta/dtep_doc_img21.png diff --git a/doc/quanta/dtep_doc_img22.png b/doc/quanta/dtep_doc_img22.png Binary files differnew file mode 100644 index 00000000..8871bdd8 --- /dev/null +++ b/doc/quanta/dtep_doc_img22.png diff --git a/doc/quanta/dtep_doc_img23.png b/doc/quanta/dtep_doc_img23.png Binary files differnew file mode 100644 index 00000000..62e965c1 --- /dev/null +++ b/doc/quanta/dtep_doc_img23.png diff --git a/doc/quanta/dtep_doc_img24.png b/doc/quanta/dtep_doc_img24.png Binary files differnew file mode 100644 index 00000000..1fc30841 --- /dev/null +++ b/doc/quanta/dtep_doc_img24.png diff --git a/doc/quanta/dtep_doc_img25.png b/doc/quanta/dtep_doc_img25.png Binary files differnew file mode 100644 index 00000000..bac85056 --- /dev/null +++ b/doc/quanta/dtep_doc_img25.png diff --git a/doc/quanta/dtep_doc_img7.png b/doc/quanta/dtep_doc_img7.png Binary files differnew file mode 100644 index 00000000..a47ea1dc --- /dev/null +++ b/doc/quanta/dtep_doc_img7.png diff --git a/doc/quanta/dtep_doc_img8.png b/doc/quanta/dtep_doc_img8.png Binary files differnew file mode 100644 index 00000000..6ade4fe2 --- /dev/null +++ b/doc/quanta/dtep_doc_img8.png diff --git a/doc/quanta/edit-upload-profile.png b/doc/quanta/edit-upload-profile.png Binary files differnew file mode 100644 index 00000000..c9ea5c23 --- /dev/null +++ b/doc/quanta/edit-upload-profile.png diff --git a/doc/quanta/event-editing.png b/doc/quanta/event-editing.png Binary files differnew file mode 100644 index 00000000..2f0205dc --- /dev/null +++ b/doc/quanta/event-editing.png diff --git a/doc/quanta/exec.png b/doc/quanta/exec.png Binary files differnew file mode 100644 index 00000000..c6c1c8c3 --- /dev/null +++ b/doc/quanta/exec.png diff --git a/doc/quanta/extending-quanta.docbook b/doc/quanta/extending-quanta.docbook new file mode 100644 index 00000000..6dd0629e --- /dev/null +++ b/doc/quanta/extending-quanta.docbook @@ -0,0 +1,1789 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<chapter id="extending-quanta-3-2"> +<chapterinfo> +<title>Extending &quantaplus;</title> +<authorgroup> +<author> +<firstname>Christopher</firstname> +<surname>Hornbaker</surname> +<affiliation> +<address><email>chrishornbaker@earthlink.net</email></address> +</affiliation> +</author> +<author> +<firstname>András</firstname> +<surname>Mantia</surname> +<affiliation> +<address><email>amantia@kde.org</email></address> +</affiliation> +</author> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> +</chapterinfo> + +<title>Extending &quantaplus;</title> + +<para> +This chapter describes how to customize &quantaplus; to your particular +needs and how you can help &quantaplus; become better. +</para> + +<!--<sect1 id="kommander-3-2"> +<title>Using Kommander With &quantaplus;</title> + +<para> +Kommander, by Marc Britton. +</para> +</sect1> --> + +<sect1 id="dtep-intro-3-2"> +<title>Document Type Editing Package (&DTEP;)</title> + +<para> +Document Type Editing Packages (&DTEP;s) are used in &quantaplus; to add +support for markup, scripting languages, and &CSS;. They allow +&quantaplus; to provide features like auto-completion and node trees. +Their simplicity and flexibility are what make &quantaplus; a fast, +developer friendly &IDE; for web developers. They are what make &quantaplus; +an easy-to-use, productive environment. +</para> + +<para> +&DTEP;s come in two flavors, Family 1, which are markups, and Family 2, +which are scripting and &CSS;. &DTEP;s are made up of two parts, the Tag +Folder and the Toolbars. Tag Folders are composed of two types of files, +the &descriptionrc; and TagXML files, which carry the extension .tag. +Toolbars are the handy, icon-oriented tabs of buttons (above the editing +window) which place text into a document faster than the user can type. +</para> + +<para> + &DTEP;s can be created manually (see below), <link linkend="download-resources">downloaded</link> or automatically created from an existing DTD. See <xref linkend="converting-dtd" /> for details about the conversion. +</para> + +<para> +This document describes how to make TagXML files, the &descriptionrc;, and +toolbars. In short, a &DTEP;. +</para> + +<para> +TagXML files (.tag) define both the attributes specific to a tag and the +layout and contents of the properties dialog &quantaplus; shows for the tag. +The &descriptionrc; file provides rules and information on the &DTEP; +itself. Toolbars provide a quick means for adding tags into a document +without worry of mis-spellings and such. +</para> + +<sect2 id="dtep-packaging-3-2"> +<title>Packaging</title> + +<para> +Tag Folders are just that, folders. They are composed only of the +&descriptionrc; and TagXML files. Tag Folders carry the name of the mark-up +language and version, if applicable. (For example, html-4.01-strict) +</para> +</sect2> + +<sect2 id="tagxml-3-2"> +<title>TagXML</title> + +<para> +The table below lists the elements defined in TagXML and declares whether +they are required or not. While not all are required, it is recommended +that you use as many as you can so that other users can have a better +experience and more information to work with. +</para> + +<informaltable> +<tgroup cols="3"> +<thead> +<row> +<entry>Element</entry> +<entry>Default Usage</entry> +<entry>Case Usage</entry> +</row> +</thead> +<tbody> +<row> +<entry>TAGS</entry> +<entry>required</entry> +<entry>always</entry> +</row> +<row> +<entry>tag</entry> +<entry>required</entry> +<entry>always</entry> +</row> +<row> +<entry>label</entry> +<entry>optional</entry> +<entry>required to create a properties dialog</entry> +</row> +<row> +<entry>attr</entry> +<entry>optional</entry> +<entry>required to define an attribute</entry> +</row> +<row> +<entry>tooltip</entry> +<entry>optional</entry> +<entry>required to have the properties dialog display a tooltip</entry> +</row> +<row> +<entry>whatsthis</entry> +<entry>optional</entry> +<entry>required to have the properties dialog display a <quote>What's This +</quote></entry> +</row> +<row> +<entry>list</entry> +<entry>optional</entry> +<entry>required when an attr is of the type <quote>list</quote></entry> +</row> +<row> +<entry>item</entry> +<entry>optional</entry> +<entry>required when <list> is used</entry> +</row> +<row> +<entry>textlocation</entry> +<entry>optional</entry> +<entry>always</entry> +</row> +<row> +<entry>location</entry> +<entry>optional</entry> +<entry>required when label is used</entry> +</row> +<row> +<entry>text</entry> +<entry>optional</entry> +<entry>required when label is used</entry> +</row> +<row> +<entry>children</entry> +<entry>optional</entry> +<entry>list of tags that can appear within the tag being defined</entry> +</row> +<row> +<entry>child</entry> +<entry>required</entry> +<entry>a children entry</entry> +</row> +<row> +<entry>stoppingtags</entry> +<entry>optional</entry> +<entry>list of tags that tell another tag to end</entry> +</row> +<row> +<entry>stoppingtag</entry> +<entry>required</entry> +<entry>a stoppingtags entry</entry> +</row> +</tbody> +</tgroup> +</informaltable> + + +<sect3 id="dtep-element-descriptions-3-2"> +<title>TagXML Element Descriptions</title> + +<para> +The following sections will describe, in detail, each element. Everything +from where they can go to what goes in them is layed out in an +easy-to-follow manner. +</para> + +<sect4 id="TAGS-3-2"> +<title>TAGS</title> + +<para> +This is the root element of a TagXML document. It may appear in a document +only once. It can contain the definition of multiple tags. This is an +element-only type element. +</para> + +<informaltable> +<tgroup cols="2"> +<thead> +<row> +<entry>Parent(s)</entry> +<entry>Children</entry> +</row> +</thead> +<tbody> +<row> +<entry><emphasis>NONE</emphasis></entry> +<entry>tag</entry> +</row> +</tbody> +</tgroup> +</informaltable> +</sect4> + +<sect4 id="tag-3-2"> +<title>tag</title> + +<para> +Wrapper for tag being defined. This is an element-only type element. +</para> + +<informaltable> +<tgroup cols="2"> +<thead> +<row> +<entry>Parent(s)</entry> +<entry>Children</entry> +</row> +</thead> +<tbody> +<row> +<entry>TAGS</entry> +<entry>label, attr, stoppingtags</entry> +</row> +</tbody> +</tgroup> +</informaltable> + +<informaltable> +<tgroup cols="6"> +<thead> +<row> +<entry>Attribute</entry><entry>Type</entry><entry>Values</entry> +<entry>Default</entry><entry>Use</entry><entry>Description</entry> +</row> +</thead> +<tbody> +<row> +<entry>name</entry><entry>string</entry><entry></entry><entry></entry> +<entry>required</entry><entry>Specifies the name of the tag being defined.</entry> +</row> +<row> +<entry>single</entry><entry>boolean</entry><entry></entry><entry></entry> +<entry>optional</entry><entry>Specifies whether or not the tag requires a +closing tag </(tagname)>.</entry> +</row> +<row> +<entry>type</entry><entry>string</entry><entry></entry><entry>xmltag</entry> +<entry>optional</entry><entry>Specifies the type of tag being defined.</entry> +</row> +<row> +<entry></entry><entry></entry><entry>xmltag</entry><entry></entry> +<entry></entry><entry>Type of tag is XML-based. (Family 1 only.)</entry> +</row> +<row> + <entry></entry><entry></entry><entry>entity</entry><entry></entry> + <entry></entry><entry>The tag describes an entity. (Family 1 only.)</entry> +</row> +<row> +<entry></entry><entry></entry><entry>property</entry><entry></entry> +<entry></entry><entry>Type of tag is &CSS; related. (Family 2 only.)</entry> +</row> +<row> +<entry></entry><entry></entry><entry>function</entry><entry></entry> +<entry></entry><entry>Type of tag is a script function. When used, +<attr> becomes arguments of the function. (Family 2 only.)</entry> +</row> +<row> +<entry></entry><entry></entry><entry>class</entry><entry></entry> +<entry></entry><entry>Type of tag is a script class. (Family 2 only.)</entry> +</row> +<row> +<entry></entry><entry></entry><entry>method</entry><entry></entry> +<entry></entry><entry>Type of tag is a class method. (Family 2 only.)</entry> +</row> +<row> +<entry>returnType</entry><entry>string</entry><entry></entry><entry>void +</entry> +<entry>optional</entry><entry>Specifies the return type of tag being +defined. (Family 2 only.)</entry> +</row> +<row> +<entry></entry><entry></entry><entry>void</entry><entry></entry> +<entry></entry><entry>Type of tag returns void.</entry> +</row> +<row> +<entry></entry><entry></entry><entry>int</entry><entry></entry> +<entry></entry><entry>Type of tag returns int.</entry> +</row> +<row> +<entry></entry><entry></entry><entry>float</entry><entry></entry> +<entry></entry><entry>Type of tag returns float.</entry> +</row> +<row> +<entry></entry><entry></entry><entry>long</entry><entry></entry> +<entry></entry><entry>Type of tag returns long.</entry> +</row> +<row> +<entry></entry><entry></entry><entry>string</entry><entry></entry> +<entry></entry><entry>Type of tag returns string.</entry> +</row> +<row> + <entry>version</entry><entry>string</entry><entry></entry><entry></entry> + <entry>optional</entry><entry>Specifies the version of the language for which this tag is valid</entry> +</row> +<row> + <entry>extends</entry><entry>string</entry><entry></entry><entry></entry> + <entry>optional</entry><entry>Valid only if the type of the tag is "class". The name of the base class for this class. (Family 2 only.)</entry> +</row> +<row> + <entry>class</entry><entry>string</entry><entry></entry><entry></entry> + <entry>optional</entry><entry>Valid only if the type is "method". Specifies the name of the class to where this method belongs. (Family 2 only.)</entry> +</row> +<row> + <entry>common</entry><entry>boolean</entry><entry></entry><entry></entry> + <entry>optional</entry><entry>if "yes", the tag specifies a common attribute group and the attributes inside this tag can be attached to any other tag. (Family 1 only.)</entry> +</row> +<row> + <entry>comment</entry><entry>string</entry><entry></entry><entry></entry> + <entry>optional</entry><entry>the comment string appears near the tag name in the completion box</entry> +</row></tbody> +</tgroup> +</informaltable> +</sect4> + +<sect4 id="label-3-2"> +<title>label</title> + +<para> +Place a label in the dialog. The text is specified by the <text> tag. +This is an element-only type element. +</para> + +<informaltable> +<tgroup cols="2"> +<thead> +<row> +<entry>Parent(s)</entry> +<entry>Children</entry> +</row> +</thead> +<tbody> +<row> +<entry>tag</entry> +<entry>text, location</entry> +</row> +</tbody> +</tgroup> +</informaltable> +</sect4> + +<sect4 id="attr-3-2"> +<title>attr</title> + +<para> +Defines an attribute of the tag. This element occurs once for each +attribute. It defines the name and type of attribute. It also contains +additional tags that specify how this attribute should be displayed, et cetera. +This is an element-only type element. +</para> + +<informaltable> +<tgroup cols="2"> +<thead> +<row> +<entry>Parent(s)</entry> +<entry>Children</entry> +</row> +</thead> +<tbody> +<row> +<entry>tag</entry> +<entry>location, list, tooltip, whatsthis, textlocation</entry> +</row> +</tbody> +</tgroup> +</informaltable> + +<informaltable> +<tgroup cols="6"> +<thead> +<row> +<entry>Attribute</entry><entry>Type</entry><entry>Values</entry> +<entry>Default</entry><entry>Use</entry><entry>Description</entry> +</row> +</thead> +<tbody> +<row> +<entry>name</entry><entry>string</entry><entry></entry><entry></entry> +<entry>required</entry><entry>Specifies the name of the attribute being +defined.</entry> +</row> +<row> +<entry>type</entry><entry>string</entry><entry></entry><entry>input</entry> +<entry>required</entry><entry>Specifies the type of the attribute being +defined.</entry> +</row> +<row> +<entry></entry><entry></entry><entry>input</entry><entry></entry> +<entry></entry><entry>Field supports free text entries (text field).</entry> +</row> +<row> +<entry></entry><entry></entry><entry>check</entry><entry></entry> +<entry></entry><entry>Field value is boolean (check box).</entry> +</row> +<row> +<entry></entry><entry></entry><entry>color</entry><entry></entry> +<entry></entry><entry>Field value is a color.</entry> +</row> +<row> +<entry></entry><entry></entry><entry>url</entry><entry></entry> +<entry></entry><entry>Field value is a &URL;. (Local file to refer to.)</entry> +</row> +<row> +<entry></entry><entry></entry><entry>list</entry><entry></entry> +<entry></entry><entry>Field value is an item from a specified list.</entry> +</row> +<row> +<entry>status</entry><entry>string</entry><entry></entry><entry>optional</entry> +<entry>required</entry><entry>Specifies whether or not the argument is +required. (Family 2 only.)</entry> +</row> +<row> +<entry></entry><entry></entry><entry>optional</entry><entry></entry> +<entry></entry><entry>Argument is optional.</entry> +</row> +<row> +<entry></entry><entry></entry><entry>required</entry><entry></entry> +<entry></entry><entry>Argument is required.</entry> +</row> +<row> +<entry></entry><entry></entry><entry>implied</entry><entry></entry> +<entry></entry><entry>Argument is implied.</entry> +</row> +<row> + <entry>source</entry><entry>string</entry><entry></entry><entry></entry> + <entry>optional</entry><entry>Specifies the sources used to fill the entry for the attribute in the tag editor dialog and the attribute tree</entry> +</row> +<row> + <entry></entry><entry></entry><entry>selection</entry><entry></entry> + <entry></entry><entry>The selected text is used as source</entry> +</row> +<row> + <entry></entry><entry></entry><entry>dcop</entry><entry></entry> + <entry></entry><entry>The result of a dcop method is used as source</entry> +</row> +<row> + <entry>interface</entry><entry>string</entry><entry></entry><entry></entry> + <entry>optional</entry><entry>Requires source="dcop". The dcop interface from inside &quantaplus; used to get the source data.</entry> +</row> +<row> + <entry>method</entry><entry>string</entry><entry></entry><entry></entry> + <entry>optional</entry><entry>Requires source="dcop" and an interface name. The dcop method name from inside &quantaplus; used to get the source data.</entry> +</row> +<row> + <entry>arguments</entry><entry>string</entry><entry></entry><entry></entry> + <entry>optional</entry><entry>Requires source="dcop", an interface and a method name. The arguments passed to the method. It can be empty or "%tagname%", meaning the current tags name.</entry> +</row> +</tbody> +</tgroup> +</informaltable> +</sect4> + +<sect4 id="tooltip-3-2"> +<title>tooltip</title> + +<para> +Defines the tooltip for a field in the dialog. This element is text-only. +</para> + +<note> +<para> +Currently only plain text is supported (you cannot use any markup). +</para> +</note> + +<informaltable> +<tgroup cols="2"> +<thead> +<row> +<entry>Parent(s)</entry> +<entry>Children</entry> +</row> +</thead> +<tbody> +<row> +<entry>attr</entry> +<entry><emphasis>NONE</emphasis></entry> +</row> +</tbody> +</tgroup> +</informaltable> +</sect4> + +<sect4 id="whatsthis-3-2"> +<title>whatsthis</title> + +<para> +Defines the 'What's This' help for a field in the dialog. This element is +text-only. +</para> + +<note> +<para> +Currently only plain text is supported (you cannot use any markup). +</para> +</note> + +<informaltable> +<tgroup cols="2"> +<thead> +<row> +<entry>Parent(s)</entry> +<entry>Children</entry> +</row> +</thead> +<tbody> +<row> +<entry>attr</entry> +<entry><emphasis>NONE</emphasis></entry> +</row> +</tbody> +</tgroup> +</informaltable> +</sect4> + +<sect4 id="list-3-2"> +<title>list</title> + +<para> +A container tag that groups together the items in a list. It may appear +only once for each attribute description. This is an element-only type +element. +</para> + +<informaltable> +<tgroup cols="2"> +<thead> +<row> +<entry>Parent(s)</entry> +<entry>Children</entry> +</row> +</thead> +<tbody> +<row> +<entry>attr</entry> +<entry>item</entry> +</row> +</tbody> +</tgroup> +</informaltable> +</sect4> + +<sect4 id="item-3-2"> +<title>item</title> + +<para> +Defines an item in a list. This element is text-only. +</para> + +<informaltable> +<tgroup cols="2"> +<thead> +<row> +<entry>Parent(s)</entry> +<entry>Children</entry> +</row> +</thead> +<tbody> +<row> +<entry>list</entry> +<entry><emphasis>NONE</emphasis></entry> +</row> +</tbody> +</tgroup> +</informaltable> +</sect4> + +<sect4 id="textlocation-3-2"> +<title>textlocation</title> + +<para> +Specifies the position of a tag's attribute text within a dialog. This tag +can only occur once for each attribute in the dialog (&ie; one for each +<attr> tag). This element is empty. +</para> + +<informaltable> +<tgroup cols="2"> +<thead> +<row> +<entry>Parent(s)</entry> +<entry>Children</entry> +</row> +</thead> +<tbody> +<row> +<entry>attr</entry> +<entry><emphasis>NONE</emphasis></entry> +</row> +</tbody> +</tgroup> +</informaltable> + +<informaltable> +<tgroup cols="4"> +<thead> +<row> +<entry>Attribute</entry><entry>Type</entry> +<entry>Use</entry><entry>Description</entry> +</row> +</thead> +<tbody> +<row> +<entry>row</entry><entry>nonNegativeInteger</entry> +<entry>required</entry><entry>Specifies the row in the dialog layout of a +field or label.</entry> +</row> +<row> +<entry>col</entry><entry>nonNegativeInteger</entry> +<entry>required</entry><entry>Specifies the column in the dialog layout of +a field or label.</entry> +</row> +<row> +<entry>rowspan</entry><entry>nonNegativeInteger</entry> +<entry>optional</entry><entry>Specifies the number of rows a field should +span.</entry> +</row> +<row> +<entry>colspan</entry><entry>nonNegativeInteger</entry> +<entry>optional</entry><entry>Specifies the number of columns a field +should span.</entry> +</row> +</tbody> +</tgroup> +</informaltable> +</sect4> + +<sect4 id="location-3-2"> +<title>location</title> + +<para> +Specifies the position and size of a field in the dialog. This tag should +occur once for each field in the dialog (&ie; one for each <attr> and +<label> tag). This element is empty. +</para> + +<informaltable> +<tgroup cols="2"> +<thead> +<row> +<entry>Parent(s)</entry><entry>Children</entry> +</row> +</thead> +<tbody> +<row> +<entry>label, attr</entry><entry><emphasis>NONE</emphasis></entry> +</row> +</tbody> +</tgroup> +</informaltable> + +<informaltable> +<tgroup cols="4"> +<thead> +<row> +<entry>Attribute</entry><entry>Type</entry> +<entry>Use</entry><entry>Description</entry> +</row> +</thead> +<tbody> +<row> +<entry>row</entry><entry>nonNegativeInteger</entry> +<entry>required</entry><entry>Specifies the row in the dialog layout of a +field or label.</entry> +</row> +<row> +<entry>col</entry><entry>nonNegativeInteger</entry> +<entry>required</entry><entry>Specifies the column in the dialog layout of +a field or label.</entry> +</row> +<row> +<entry>rowspan</entry><entry>nonNegativeInteger</entry> +<entry>optional</entry><entry>Specifies the number of rows a field should +span.</entry> +</row> +<row> +<entry>colspan</entry><entry>nonNegativeInteger</entry> +<entry>optional</entry><entry>Specifies the number of columns a field +should span.</entry> +</row> +</tbody> +</tgroup> +</informaltable> +</sect4> + +<sect4 id="text-3-2"> +<title>text</title> + +<para> +Define the text for a label or check box. This element is text-only. +</para> + +<informaltable> +<tgroup cols="2"> +<thead> +<row> +<entry>Parent(s)</entry><entry>Children</entry> +</row> +</thead> +<tbody> +<row> +<entry>label, attr</entry><entry><emphasis>NONE</emphasis></entry> +</row> +</tbody> +</tgroup> +</informaltable> +</sect4> + +<sect4 id="children-3-2"> +<title>children</title> + +<para> +Defines a list of elements that can appear within the tag being specified. +This element is an element-only type element. +</para> + +<informaltable> +<tgroup cols="2"> +<thead> +<row> +<entry>Parent(s)</entry><entry>Children</entry> +</row> +</thead> +<tbody> +<row> +<entry>tag</entry><entry>child</entry> +</row> +</tbody> +</tgroup> +</informaltable> +</sect4> + +<sect4 id="child-3-2"> +<title>child</title> + +<para> +Defines a child tag. This element is empty. +</para> + +<informaltable> +<tgroup cols="2"> +<thead> +<row> +<entry>Parent(s)</entry><entry>Children</entry> +</row> +</thead> +<tbody> +<row> +<entry>children</entry><entry><emphasis>NONE</emphasis></entry> +</row> +</tbody> +</tgroup> +</informaltable> + +<informaltable> +<tgroup cols="4"> +<thead> +<row> +<entry>Attribute</entry><entry>Type</entry><entry>Values</entry> +<entry>Use</entry><entry>Description</entry> +</row> +</thead> +<tbody> +<row> +<entry>name</entry><entry>string</entry><entry></entry> +<entry>required</entry><entry>Specifies a tag that can appear within the a +certain tag.</entry> +</row> +<row> +<entry>usage</entry><entry>string</entry><entry></entry> +<entry>optional</entry><entry>Specifies the relation with the parent.</entry> +</row> +<row> +<entry></entry><entry></entry><entry>required</entry> +<entry></entry><entry>The parent must have at least one child with this name.</entry> +</row> +</tbody> +</tgroup> +</informaltable> +</sect4> + +<sect4 id="stoppingtags-3-2"> +<title>stoppingtags</title> + +<para> +Defines a list of elements that force a tag to end. This element is an +element-only type element. +</para> + +<informaltable> +<tgroup cols="2"> +<thead> +<row> +<entry>Parent(s)</entry><entry>Children</entry> +</row> +</thead> +<tbody> +<row> +<entry>tag</entry><entry>stoppingtag</entry> +</row> +</tbody> +</tgroup> +</informaltable> +</sect4> + +<sect4 id="stoppingtag-3-2"> +<title>stoppingtag</title> + +<para> +Defines a stopping tag. This element is empty. +</para> + +<informaltable> +<tgroup cols="2"> +<thead> +<row> +<entry>Parent(s)</entry><entry>Children</entry> +</row> +</thead> +<tbody> +<row> +<entry>stoppingtags</entry><entry><emphasis>NONE</emphasis></entry> +</row> +</tbody> +</tgroup> +</informaltable> + +<informaltable> +<tgroup cols="4"> +<thead> +<row> +<entry>Attribute</entry><entry>Type</entry> +<entry>Use</entry><entry>Description</entry> +</row> +</thead> +<tbody> +<row> +<entry>name</entry><entry>string</entry> +<entry>required</entry><entry>Specifies which tags force the ending of +another tag.</entry> +</row> +</tbody> +</tgroup> +</informaltable> +</sect4> +</sect3> + +<sect3 id="tagxml-usage-3-2"> +<title>TagXML Usage</title> + +<para> +All TagXML files must begin with the &XML; declaration: <?xml +version="1.0" encoding="UTF-8"?> and must be properly nested and closed. +</para> + +<important> +<para> +White space does not adversely affect anything, but watch out for & and +< characters. These should likely be replaced with an &amp; and +&lt;, respectively, in elements such as <tooltip>, <whatsthis>, +and <text>. Not doing so will not cause a crash, but you will have +chunks of your work disappear if you do not. +</para> +</important> +</sect3> + +<sect3 id="tagxml-validation-3-2"> +<title>TagXML Validation</title> + +<para> +To validate your TagXML files, simply click the <quote>Tools</quote> +pop-up dialog at the top of &quantaplus; and select <quote>Validate +TagXML.</quote> A dialog will present itself and you need only to follow +the simple directions. +</para> + +<note> +<para> +This feature is currently not present. Currently validation occurs when +the TagXML files are loaded into &quantaplus;. +</para> +</note> +</sect3> + +<sect3 id="tagxml-examples-3-2"> +<title>TagXML Examples</title> + +<sect4 id="family-one-3-2"> +<title>Family 1</title> + +<para> +The following will show you a valid Family 1 TagXML file. This file +happens to describe &W3C; &XML; Schema's <schema> element. The file name +for this TagXML file would be schema.tag. Simple, eh? +</para> + +<informalexample> +<literallayout> +<markup> +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE TAGS> +<TAGS> + <tag name="schema"> + <label> + <text>id</text> + <location col="0" row="0"/> + </label> + <attr name="id" type="input"> + <tooltip>A unique ID for the element.</tooltip> + <whatsthis>A unique ID for the element.</whatsthis> + <location col="1" row="0"/> + </attr> + + <label> + <text>version</text> + <location col="0" row="1"/> + </label> + <attr name="version" type="input"> + <tooltip>Version of the schema.</tooltip> + <whatsthis>Version of the schema.</whatsthis> + <location col="1" row="1"/> + </attr> + + <label> + <text>targetNamespace</text> + <location col="0" row="2"/> + </label> + <attr name="targetNamespace" type="input"> + <tooltip>&URI; reference of the namespace of this schema.</tooltip> + <whatsthis>&URI; reference of the namespace of this schema.</whatsthis> + <location col="1" row="2"/> + </attr> + + <label> + <text>xmlns</text> + <location col="0" row="3"/> + </label> + <attr name="xmlns" type="input"> + <tooltip>&URI; reference for one or more namespaces for use in this schema. + If no prefix is used, then components of that namespace may be used unqualified.</tooltip> + <whatsthis>&URI; reference for one or more namespaces for use in this schema. + If no prefix is used, then components of that namespace may be used unqualified.</whatsthis> + <location col="1" row="3"/> + </attr> + + <label> + <text>attributeFormDefault</text> + <location col="0" row="4"/> + </label> + <attr name="attributeFormDefault" type="list"> + <items> + <item>qualified</item> + <item>unqualified</item> + </items> + <tooltip>Default form for all attributes within this schema.</tooltip> + <whatsthis>Default form for all attributes within this schema.</whatsthis> + <location col="1" row="4"/> + </attr> + + <label> + <text>elementFormDefault</text> + <location col="0" row="5"/> + </label> + <attr name="elementFormDefault" type="list"> + <items> + <item>qualified</item> + <item>unqualified</item> + </items> + <tooltip>Default form for all elements within this schema.</tooltip> + <whatsthis>Default form for all elements within this schema.</whatsthis> + <location col="1" row="5"/> + </attr> + + <label> + <text>blockDefault</text> + <location col="0" row="6"/> + </label> + <attr name="blockDefault" type="input"> + <location col="1" row="6"/> + </attr> + + <label> + <text>finalDefault</text> + <location col="0" row="7"/> + </label> + <attr name="finalDefault" type="input"> + <location col="1" row="7"/> + </attr> + </tag> +</TAGS> +</markup> +</literallayout> +</informalexample> +</sect4> + +<sect4 id="family-two-3-2"> +<title>Family 2</title> + +<para> +The following will show you a valid Family 2 TagXML file. This file +happens to describe &PHP;'s overload function. The file name for this +TagXML file would be overload.tag. +</para> + +<informalexample> +<literallayout> +<markup> +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE tags> +<tags> + <tag name="overload" type="function" returnType="void"> +<attr name="class_name" type="string" status="optional"/> + </tag> +</tags> +</markup> +</literallayout> +</informalexample> +</sect4> +</sect3> +</sect2> + +<sect2 id="descriptionrc-3-2"> +<title>&descriptionrc;</title> + +<para> +The &descriptionrc; file is, also, quite simple and there is an editor for it accessible from <menuchoice><guimenu>DTD</guimenu><guimenuitem>Edit DTD Settings</guimenuitem></menuchoice>. This will edit the &descriptionrc; for a &DTEP; you can select from a list. In order to +edit the &descriptionrc; for a newly created &DTEP; you should create a simple &descriptionrc; with the following entries: +</para> +<para> + <informalexample> + <literallayout> + <markup> + [General] + Version = Use 1 for &quantaplus; version <=3.1.2 and 2 for any version greater. + Name = DTD definition string. (-//&W3C;//DTD HTML 4.01 Transitional//EN) + NickName = The beautified name of the DTD. (HTML 4.01 Transitional). If not defined, Name is + used as NickName. + </markup> + </literallayout> + </informalexample> +</para> +<para>Once you have created it at put aside of the tag files, load the newly created &DTEP; with <menuchoice><guimenu>DTD</guimenu><guimenuitem>Load DTD Package (DTEP)</guimenuitem></menuchoice> and after it is loaded you can proceed with editing the settings of the &DTEP;. Check the tooltips and the whatsthis text of the entries in the editor dialog to understand the meaning of each entry. Alternatively you can read the <filename>quanta/data/dtep/dtd-description.txt</filename> from the source tarball containing a description about the format. +</para> +</sect2> +</sect1> + +<sect1 id="user-actions"> +<title>User Defined Actions</title> +<para> +Actions are very common in every application. You meed them often when you use any application. Clicking on a toolbar icon, selecting a menu item or using a shortcut usually executes an action. In &quantaplus; actions are taken to the next level. Instead of hardcoded actions (that are created by the application +programmer at the source code level) it is possible for the ordinary user to create and modify actions and by this way adding +new functionality to &quantaplus;. These are the user defined actions, and many of the standard &quantaplus; actions are user defined (and user modifiable) actions as well. +</para> +<para>There are three types of user definable actions: +<itemizedlist> +<listitem><para><link linkend="text-actions">Text actions</link></para></listitem> +<listitem><para><link linkend="tag-actions">Tag actions</link></para></listitem> +<listitem><para><link linkend="script-actions">Script actions</link></para></listitem> +</itemizedlist> +</para> +<sect2 id="creating-actions"> +<title>Creating actions</title> +<para> + You can create an action by going to +<menuchoice> +<guimenu>Settings</guimenu> +<guimenuitem>Configure Actions</guimenuitem> +</menuchoice> +. Click on <guibutton>New Action</guibutton> and you will face a similar dialog: +<mediaobject> +<imageobject> +<imagedata fileref="dtep_doc_img7.png" format="PNG" /> +</imageobject> +</mediaobject> +<variablelist> +<varlistentry> +<term><guilabel>Type</guilabel></term> +<listitem><para>Specifies the action's type (<link linkend="text-actions">Text</link>, <link linkend="tag-actions">Tag</link>, <link linkend="script-actions">Script</link>).</para> +</listitem> +</varlistentry> +<varlistentry> +<term><guilabel>Text</guilabel></term> +<listitem><para>The user visible name of the action.</para> +</listitem> +</varlistentry> +<varlistentry> +<term>The button near the <guilabel>Text</guilabel> label</term> +<listitem><para>The icon assigned to this action. Click on it in order to change the current icon.</para> +</listitem> +</varlistentry> +<varlistentry> +<term><guilabel>Tool tip</guilabel></term> +<listitem><para>Short description of what the action does.</para> +</listitem> +</varlistentry> +<varlistentry> +<term><guilabel>Shortcut</guilabel></term> +<listitem><para>The shortcut assigned to this action. Click on <guilabel>Custom</guilabel> or the button near <guilabel>Custom</guilabel> to assign a shortcut; click on <guilabel>None</guilabel> to remove the currently assigned shortcut.</para> +</listitem> +</varlistentry> +<varlistentry> +<term><guilabel>Container toolbars</guilabel></term> +<listitem><para>The user defined toolbars where this action appears. See <xref linkend="creating-toolbars-3-2"/>.</para> +</listitem> +</varlistentry> +<varlistentry> +<term><guilabel>Detailed Settings</guilabel></term> +<listitem><para>Specific settings for the different type of actions. See below. +</para></listitem> +</varlistentry> +</variablelist> +</para> +</sect2> +<sect2 id="text-actions"> +<title>Text actions</title> +<para> +<mediaobject><imageobject> +<imagedata fileref="text-action.png" format="PNG" /> +</imageobject></mediaobject> + The simplest actions. You can enter some text in the <guilabel>Detailed Settings</guilabel> area and whenever the action is executed this text will be inserted in your document + at the current cursor position. See the below example. +</para> +</sect2> +<sect2 id="tag-actions"> +<title>Tag actions</title> +<para> + Useful to insert XML tags, but of course you can use them for other purposes as well. +<mediaobject><imageobject> +<imagedata fileref="tag-actions.png" format="PNG" /> +</imageobject></mediaobject> +<variablelist> +<varlistentry> +<term><guilabel><tag></guilabel></term> +<listitem><para>The name of the tag.</para></listitem> +</varlistentry> +<varlistentry> +<term><guilabel></tag></guilabel></term> +<listitem><para>If checked when the action is executed this text will be inserted as a closing tag. If there is a selected area in the document before you execute the action, the <tag> will be inserted before the selected area and the </tag> after.</para></listitem> +</varlistentry> +<varlistentry> +<term><guilabel>Run "Edit tag" dialog if available</guilabel></term> +<listitem><para>If checked and there is a tagXML file for this tag, a tag editing dialog will be shown prior of inserting the tag inside the document, so you can fine-tune the tag attributes.</para></listitem> +</varlistentry> +</variablelist> +The <tag> and </tag> will be inserted as you've typed there. The <, > or the / sign won't be automatically appended. +</para> +</sect2> +<sect2 id="script-actions"> +<title>Script actions</title> +<para> +<mediaobject><imageobject> +<imagedata fileref="script-action.png" format="PNG" /> +</imageobject></mediaobject> + The most powerful action type. With the help of this action you +can run external applications (usually scripts, but it's +not limited to scripts), which can alter your document or use your document (or part of your document) as input. Examples from &quantaplus; itself are the <guibutton>Quick Start</guibutton> dialog, the various <guilabel>View In...</guilabel> actions for the (X)HTML DTEPs. +</para> +<para> +First you have to enter the name of your script with the interpreter as well. Example: +<command>sh /home/myHome/myScript.sh</command>. +</para> +<para> +Although you can use full paths, the recommended way is to use the <command>%scriptdir</command> variable in the command line, like <command>sh %scriptdir/myScript.sh</command>. This way &quantaplus; will try to locate your script in the following places: +<itemizedlist> +<listitem><para>global script folder: <filename><envar>$KDEDIR</envar>/share/apps/quanta/scripts</filename></para></listitem> +<listitem><para>local script folder: <filename><envar>$KDEHOME</envar>/share/apps/quanta/scripts</filename></para></listitem> +<listitem><para>your path: <envar>$PATH</envar></para></listitem> +</itemizedlist> +There are other special variables that you can use in the command line: +<itemizedlist> +<listitem><para><command>%f</command>: will be replaced with the URL of the current document. In case of local documents, file:/ will be stripped from the document.</para></listitem> +<listitem><para><command>%input</command>: will be replaced with the selected input. See below.</para></listitem> +<listitem><para><command>%projectbase</command>: will be replaced with the URL of the current project. It is empty if no project is loaded.</para></listitem> +<listitem><para><command>%pid</command>: will be replaced with the PID of the running &quantaplus; process. If &quantaplus; is running in unique mode, the "unique " text will be prepended to the PID number. Useful when you use DCOP to control &quantaplus; from the external script.</para></listitem> +<listitem><para><command>%userarguments</command>: useful in case of events. This entry will be replaced by the event properties in the following order: <variablelist> +<varlistentry> +<term>First argument</term> +<listitem><para>The unique id of the script</para></listitem> +</varlistentry> +<varlistentry> +<term>Second argument</term> +<listitem><para>the event name</para></listitem> +</varlistentry> +<varlistentry> +<term>Third argument</term> +<listitem><para>the parameters for the event, usually the file name of the current document or the path to the project file.</para></listitem> +</varlistentry> +</variablelist> + </para></listitem> +</itemizedlist> +</para> +<para> +Aside of the above methods the script can receive input from &quantaplus; on the standard input. In the <guilabel>Input</guilabel> combobox you can select what to send to the standard input. Choices are: +<itemizedlist> +<listitem><para><guilabel>None</guilabel>: nothing is sent to the script.</para></listitem> +<listitem><para><guilabel>Current document</guilabel>: the whole document is sent to the script.</para></listitem> +<listitem><para><guilabel>Selected text</guilabel>: the selected area of the document is sent to the script. Using the <command>%input</command> variable usually makes sense only when using this setting.</para></listitem> +</itemizedlist> +</para> +<para> +Similar to the <guilabel>Input</guilabel> you can catch the output of the executed application. There are two kind of outputs: +<itemizedlist> +<listitem><para>normal output, printed to the standard output;</para> +</listitem> +<listitem><para>error messages, printed to the standard error.</para> +</listitem> +</itemizedlist> +You can specify what should happen with the text printed to the standard output. This can be done by modifying the value of the <guilabel>Output</guilabel> combobox: +<itemizedlist> +<listitem><para><guilabel>None</guilabel>: the output of the application is ignored.</para></listitem> +<listitem><para><guilabel>Insert in cursor position</guilabel>: the output will be inserted in the current document and the cursor position.</para></listitem> +<listitem><para><guilabel>Replace selection</guilabel>: the selected area of the document will be replaced with the output.</para></listitem> +<listitem><para><guilabel>Replace selection</guilabel>: the selected area of the document will be replaced with the output.</para></listitem> +<listitem><para><guilabel>Create a new document</guilabel>: a new document will be created and will contain all the output of the script.</para></listitem> +<listitem><para><guilabel>Replace current document</guilabel>: the entire document will be replaced with the output.</para></listitem> +<listitem><para><guilabel>Message window</guilabel>: the output will appear in the <guilabel>Messages</guilabel> toolview.</para></listitem> +</itemizedlist> +</para> +<para>The choices for the standard error output (<guilabel>Error</guilabel>) are the same as for the normal output.</para> +</sect2> +</sect1> + +<sect1 id="creating-toolbars-3-2"> +<title>Creating Toolbars</title> + +<para> +The following will show you how to create toolbars for a &DTEP;. Toolbars +are graphical elements that are assigned to actions. Actions, in +&quantaplus;, are the basis for nearly all the extensions that +&quantaplus; has and will acquire in the future. The same mechanism that +defines an action in &quantaplus; also enables auto-completion and tag +dialogs. With actions, the limit of what you can do is virtually +limitless. For means of an example, we will use <ulink +url="http://tidy.sf.net">&HTML; tidy</ulink> on our web pages. +</para> + +<sect2 id="from-scratch-to-complete-3-2"> +<title>From Scratch to Complete</title> + +<para> +To begin, you will need to create a user toolbar. Select +<menuchoice> +<guimenu>Toolbars</guimenu> +<guimenuitem>Add User Toolbar</guimenuitem> +</menuchoice>. +</para> + +<para> +If there are many tags for the markup language, it is recommended that you +split up the tags into logical groups. You will need to create a new user +toolbar for each group. In this case, there are not many, so we will be +making one toolbar and naming it with the name of the markup. +</para> + +<para> +Once all your toolbars are created, you must add and configure the +actions. To do this, select +<menuchoice> +<guimenu>Settings</guimenu> +<guimenuitem>Configure Actions</guimenuitem> +</menuchoice> +<emphasis> +</emphasis>. +</para> + +<para> +The parts of this window are pretty straight forward. Press the +<guibutton>New action</guibutton> button at the bottom of the window to +enter the editing mode. +</para> + +<para> +Fill in all of the necessary fields and add the tag to the appropriate +toolbar(s). +</para> + +<para> +Complete the rest and, if the tag has attributes and you always plan to +use them, check the <guilabel>Run "Edit tag" dialog if available +</guilabel> box so that you will be prompted every time the action is used. +</para> + +<para> +You should now have something much like the following. +</para> + +<mediaobject> +<imageobject> +<imagedata fileref="dtep_doc_img7.png" format="PNG" /> +</imageobject> +</mediaobject> + +<para> +Press the <guibutton>Apply</guibutton> button and you will see the action +added to the toolbar(s) you have selected. +</para> + +<mediaobject> +<imageobject> +<imagedata fileref="dtep_doc_img8.png" format="PNG" /> +</imageobject> +</mediaobject> + +<para> +Egad! That's an awful icon. How will yourself and others remember that +icon goes with that action? Let's replace it before trouble arises. +</para> + +<para> +To create an icon that more accurately describes that action, we will be +using &kiconedit;. Select it from the &kmenu;, <menuchoice> +<guisubmenu>Graphics</guisubmenu> +<guisubmenu>More Programs</guisubmenu> +</menuchoice> (or where ever your distribution placed it). +</para> + +<para> +&kiconedit; defaults to the size 32x32 pixels, but we need 22x22. To +change this, select +<menuchoice> +<guimenu>Edit</guimenu> +<guimenuitem>Resize</guimenuitem> +</menuchoice>. +</para> + +<para> +Keep in mind that you are creating an icon that will assist in helping not +only yourself to remember which action does what, but also other users of +the &DTEP;. +</para> + +<para> +Since the tag I am creating the icon for is called <quote>start,</quote> +I have decided to create a <quote>Start sign.</quote> Using the color green +(green often interpreted as <quote>go,</quote> <quote>start,</quote> or +<quote>proceed</quote>) will, or, at least, should, convey a message +to the user that clicking this action will place the <start> tag in the +current document. +</para> + +<mediaobject> +<imageobject> +<imagedata fileref="dtep_doc_img15.png" format="PNG" /> +</imageobject> +</mediaobject> + +<para> +Now that I am finished with the creation of the icon, I will save it. +</para> + +<para> +Once you are done with creating the icon(s), you must associate the icon +with the action. To do this, open +<menuchoice> +<guimenu>Settings</guimenu> +<guimenuitem>Configure Actions</guimenuitem> +</menuchoice> again (in &quantaplus;) and select the action you made +the icon for. Beside the <guilabel>Text</guilabel> field, you will see a +button, click it. +</para> + +<para> +Select <guilabel>Other Icons</guilabel> and then click the <guibutton> +Browse</guibutton> button. +</para> + +<para> +Goto the folder in which you saved the icon, select the icon, and click +<guibutton>OK</guibutton>. +</para> + +<para> +Press the <guibutton>Apply</guibutton> button and either continue to do the +same with the other tags, if any, or click <guibutton>OK</guibutton> to +finish. +</para> + +<mediaobject> +<imageobject> +<imagedata fileref="dtep_doc_img18.png" format="PNG" /> +</imageobject> +</mediaobject> + +<para> +Let us say you would like to add some common &quantaplus; functions to your +toolbar or maybe you think the toolbar would be better off organized in a +different manner with some separators to group the actions. Open the +<guilabel>Configure Toolbars</guilabel> dialog by going +<menuchoice> +<guimenu>Settings</guimenu> +<guimenuitem>Configure Toolbars</guimenuitem> +</menuchoice>. Make sure your toolbar is selected. +</para> + +<para> +I will be choosing the separator (top of the left column) for my toolbar. +Once you have selected the item you wish to add to your toolbar, press the +right arrow button. This will add it to your toolbar. +</para> + +<mediaobject> +<imageobject> +<imagedata fileref="dtep_doc_img21.png" format="PNG" /> +</imageobject> +</mediaobject> + +<para> +I think I would like a quick way to access the <guilabel>Konqueror +Preview</guilabel>. I will select it and add it to the toolbar. +</para> + +<mediaobject> +<imageobject> +<imagedata fileref="dtep_doc_img22.png" format="PNG" /> +</imageobject> +</mediaobject> + +<para> +Note how the separator helps in grouping. Someone new to my toolbar might +have thought that the &konqueror; button was like or the opposite of the +start button. +</para> + +<mediaobject> +<imageobject> +<imagedata fileref="dtep_doc_img23.png" format="PNG" /> +</imageobject> +</mediaobject> + +<para> +Apply your changes and, when you are done, press <guibutton>OK</guibutton> +to finish. +</para> + +<para> +Ah, look at the fantastic new toolbar! Much more handy now. +</para> + +<mediaobject> +<imageobject> +<imagedata fileref="dtep_doc_img24.png" format="PNG" /> +</imageobject> +</mediaobject> + +<para> +Remember to test your toolbar, by clicking all the buttons, so that you +know the output is correct. +</para> + +<mediaobject> +<imageobject> +<imagedata fileref="dtep_doc_img25.png" format="PNG" /> +</imageobject> +</mediaobject> + +<para> +Now to save the toolbar, we will select +<menuchoice> +<guimenu>Toolbars</guimenu> +<guisubmenu>Save Toolbars</guisubmenu> +<guimenuitem>Save as Local Toolbar</guimenuitem> +</menuchoice>. +</para> + +<para> +Save it to the correct folder. Since NeXML does not exist, I will just +have it to the top-level folder, but your toolbar(s) should be saved to +the correct folder. Make sure to adjust your &descriptionrc; to have it +load your toolbar(s) when a new file of that type is created. +</para> +</sect2> +</sect1> + + +<sect1 id="creating-quanta-docs-3-2"> +<sect1info> +<title>Creating Your Own Documentation</title> +<authorgroup> +<author> +<firstname>Robert</firstname> +<surname>Nickel</surname> +<affiliation> +<address><email>robert@artnickel.com</email></address> +</affiliation> +</author> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> +</sect1info> + +<title>Creating Your Own Documentation</title> + +<para> +Probably the most notable additions to &quantaplus; for the general user +will be the addition of documentation for the markup or scripting language +that you like best. To that end, this chapter will explain how I create +the &PHP; documentation tree for my personal use. +</para> + +<para> +Before starting on creating your own documentation, you may wish to check +out the <ulink url="http://quanta.sf.net/main1.php?contfile=resource"> +&quantaplus; repository</ulink> to see if someone else has already done +this set. +</para> + +<para> +There are two parts to this process. First, you must obtain the existing +documentation for the markup/scripting/&etc; language that you are after. +Second, you have to create the <filename>docrc</filename> file. The first +is up to you, the second is what we will cover here. +</para> + +<para> +The general form of the docrc file is as follows: +</para> + +<informalexample> +<literallayout> +#KDE Config File +[Tree] +Doc dir=<replaceable>path, relative to this file, of the documentation html files</replaceable> ⪚ php42/ +#top level elements +Top Element=<replaceable>Your description for these documentation</replaceable> ⪚ &PHP; 4.2 documentation + +Section 1=Section1.html +Section 2=#Sec2.1,#Sec2.2,#Sec2.3 +Sec2.1=Sec2.1.html +Sec2.2=Sec2.2.html +Sec2.3=Sec2.3.html +... + +[Context] +ContextList=func1,func2,tag1,tag2,tag3 +func1=func1.html +func2=func2.html +tag1=tag1.html +tag2=tag2.html +tag3=tag3.html +</literallayout> +</informalexample> + +<para> +The <filename>docrc</filename> is broken down into two sections: Tree and +Context. +</para> + +<para> +The Tree section defines the presentation aspect of the documentation in +the documentation tab. For example, you will see that in the &PHP; +documentation you have something akin to this: +</para> + +<mediaobject> +<imageobject> +<imagedata fileref="doc-view1.png" format="PNG" /> +</imageobject> +</mediaobject> + +<para> +Relating this to the above, my &PHP; <filename>docrc</filename> looks like +this: +</para> + +<informalexample> +<literallayout> +#KDE Config File + +[Tree] + +Doc dir=php42/ + +#top level elements +Top Element=PHP 4.2 documentation + +PHP 4.2 documentation=Table of Contents,#Getting Started,#Language Reference + +Table of Contents=index.html + +Getting Started=Introduction, ... +Introduction=introduction.html +... + +Language Reference=Basic syntax, ... +Basic syntax=language.basic-syntax.html +... + +</literallayout> +</informalexample> + +<para> +Notice the <literal>#</literal> in front of <quote>Getting Started</quote> +and <quote>Language Reference</quote>. This indicates that these are sub +containers in the tree and have content of their own. I do not believe that +there is a set limit to the depth here (other than that driven by sanity) +— use your judgment. +</para> + +<para> +For the Table of Contents, you will notice that it is referenced directly to +a file (and consequently shows up at the bottom of the tree view — +folders first!). +</para> + +<important> +<para> +Spaces do not adversely affect anything, but watch out for & and < +characters. These should likely be replaced by &amp; and &lt; +respectively in all of the &XML; based &quantaplus; resource files. +</para> +</important> + +<para> +The Context section is the section of the docrc file that is used to +facilitate context sensitive help. For example, you are writing a &PHP; +script and you would like to see the documentation for the +<function>mysql_fetch_array</function> function. You simply highlight the +function and then press <keycombo action="simul">&Ctrl;<keycap>H</keycap> +</keycombo> for context help. The documentation on +<function>mysql_fetch_array</function> will immediately display. There are +only two entry types here: the ContextList and the file association lines. +</para> + +<variablelist> +<varlistentry> +<term>ContextList</term> +<listitem> +<para> +Really simple, this is just a comma separated list of the context items +you wish to have available (for &PHP;, these are the functions for &PHP;). +</para> +</listitem> +</varlistentry> +<varlistentry> +<term>File association lines</term> +<listitem> +<para> +These are of the form context item=html doc page. ⪚ +acos=function.acos.html +</para> +</listitem> +</varlistentry> +</variablelist> + +<para> +A pared down version of my <filename>docrc</filename> Context section is +as follows: +</para> + +<informalexample> +<literallayout> +#Keywords for context help +[Context] +ContextList=abs,acos,acosh,addcslashes,addslashes,... + +abs=function.abs.html +acos=function.acos.html +acosh=function.acosh.html +addcslashes=function.addcslashes.html +addslashes=function.addslashes.html +... +</literallayout> +</informalexample> + +<para> +Now you can just save your <filename>docrc</filename> file, save it in +<filename class="directory">$<envar>HOME</envar>/.kde/share/apps/quanta/doc</filename> +or <filename +class="directory">$<envar>KDEDIR</envar>/share/apps/quanta/doc</filename> +for local or global use respectively. Then create a folder (the one +specified in your <filename>docrc</filename> file) in the same folder +as your <filename>docrc</filename> file and copy your &HTML; pages in +there. +</para> + +<para> +You will need to restart &quantaplus; to see your documentation. +</para> + +<para> +Once you are sure that they are good and worth sharing, send the <filename> +docrc</filename> file along with a description of any pertinent +information on what documentation you used to the +<ulink url="http://quanta.sf.net/main1.php?contfile=resource">&quantaplus; +repository</ulink> for use by the &quantaplus; community. You will not get +rich, but you will feel great knowing that you contributed to the best web +development platform around. +</para> + +</sect1> + +<sect1 id="sharing-resources"> + <title>Sharing Resources</title> + <para>With &quantaplus; you are not alone. It is possible to share the various resources (DTEP packages, toolbars with actions, scripts, templates) with others. There are two ways to do it: + </para> + <variablelist> + <varlistentry> + <term>Sending in Email</term> + <listitem><para>The resources can be sent in email to your friends, partners or to whomever you want. You will see the <guilabel>Send in Email</guilabel> menu entries in various places, like <menuchoice><guimenu>DTD</guimenu><guimenuitem>Send DTD Package (DTEP) in Email</guimenuitem></menuchoice>, <menuchoice><guimenu>Toolbars</guimenu><guimenuitem>Send Toolbar in Email</guimenuitem></menuchoice>, in the context menu of the files and folders in the <guilabel>Templates</guilabel> and <guilabel>Scripts</guilabel> tree. + </para></listitem> + </varlistentry> + <varlistentry> + <term>Uploading to the main server</term> + <listitem><para>The resources can be uploaded to our main repository, from where all other &quantaplus; users can download them. The submissions are reviewed and made available only if our team considers correct and useful will be published. In order to make a valid submission it is suggested to sign the resources, thus you need a GPG/PGP key. This information is used to verify the origin of the resources both by our team and by the downloaders.</para> + <para>About getting the resources from the main server see <xref linkend="download-resources" />.</para> + <para>When uploading you will be asked to enter the passphrase for your secret GPG key (the passphrase will not be stored), or in the case of having more secret keys, you will be able to pick up the one you want to use. In the <guilabel>Share Hot New Stuff</guilabel> dialog fill the input fields (the <guilabel>Preview URL</guilabel> may remain empty) and start the upload by clicking <guilabel>OK</guilabel>.</para> + <para> + The upload can be initiated from + <menuchoice><guimenu>DTD</guimenu><guimenuitem>Upload DTD Package (DTEP)</guimenuitem></menuchoice>, <menuchoice><guimenu>Toolbars</guimenu><guimenuitem>Upload Toolbar</guimenuitem></menuchoice>, in the context menu of the files and folders in the <guilabel>Templates</guilabel> and <guilabel>Scripts</guilabel> tree. + </para> + </listitem> + </varlistentry> +</variablelist> +</sect1> +<sect1 id="download-resources"> +<title>Getting Resources</title> +<para>It is possible to upgrade your &quantaplus; without getting a new version, by getting new resources like DTEP packages, toolbars with actions, templates, scripts and documentation. One possibility is that you got the resources in email or have downloaded from a web server, in which cases you usually need to manually install them. In lucky case you also got an install script when you have downloaded the resources. But &quantaplus; has a dedicated server holding resources that were either not included in the main distribution because of their sizes or infrequent usage, or they were contributed later by users, and these resources are automatically installed. Do download such resources use the various <guilabel>Download</guilabel> menu entries. You can find them at <menuchoice><guimenu>DTD</guimenu><guimenuitem>Download DTD Package (DTEP)</guimenuitem></menuchoice>, <menuchoice><guimenu>Toolbars</guimenu><guimenuitem>Download Toolbar</guimenuitem></menuchoice>, in the context menu of an empty area or toplevel item in the <guilabel>Templates</guilabel>, <guilabel>Scripts</guilabel> and <guilabel>Documentation</guilabel> trees. +</para> +<para> +After a resource was downloaded, but before it is installed, &quantaplus; verifies if the resource is valid, by checking the integrity and the signature. In case of problems it warns you and you can decide if you want to continue or not. Please read the warning dialogs carefully. In the case when the integrity is correct and the resource is correctly signed, you will still get an information dialog, so you can see who created the resource. +</para> +<para> + <caution><para>Be sure that you install resources, especially toolbars and scripts, only from trusted sources!</para></caution> +</para> +</sect1> + +<sect1 id="converting-dtd"> + <title>Converting a DTD to a &DTEP;</title> + <para>It is possible to work on XML languages currently not supported by &quantaplus; by creating a DTEP package. But the creation can be time consuming, as you may need to write hundreds of tag files in <link linkend="tagxml-3-2">tagXML</link> format. Of course, there is a nicer way to go, by converting the DTD automatically into a DTEP package. + </para> + <para>The conversion can be started from the <menuchoice><guimenu>DTD</guimenu><guimenuitem>Load & Convert DTD</guimenuitem></menuchoice> menu. Select the <filename>.dtd</filename> file which defines the DTD you want to use, and after that you will see the following dialog: + <mediaobject> + <imageobject> + <imagedata fileref="dtd-conversion.png" format="PNG" /> + </imageobject> + </mediaobject> + </para> +<para>The entries are:</para> +<itemizedlist> + <listitem><para><guilabel>Target directory name:</guilabel>the newly created &DTEP; will go under this name to the <filename><envar>$KDEHOME</envar>/share/apps/quanta/dtep</filename> folder. + </para> + </listitem> + <listitem><para><guilabel>Name:</guilabel>the name (definition string) of the DTD</para></listitem> + <listitem><para><guilabel>Nickname:</guilabel> the user visible name of the &DTEP;</para></listitem> + <listitem><para><guilabel>!DOCTYPE definition line:</guilabel> + the string that should appear in the !DOCTYPE tag, like + HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"</para></listitem> + <listitem><para><guilabel>DTD URL:</guilabel> the URL pointing to the DTD file</para></listitem> + <listitem><para><guilabel>Default extension:</guilabel> the extension usually used for files that were written in this DTD</para></listitem> + <listitem><para><guilabel>Case-sensitive tags and attributes:</guilabel> self explaining, usually true for XML language variants</para></listitem> + <listitem><para><guilabel>Fine-tune the DTEP after conversion:</guilabel> if checked, after the conversion is done, &quantaplus; will bring up the &descriptionrc; editor, so you can fine tune the newly created &DTEP;. It is recommended to leave this options checked.</para></listitem> +</itemizedlist> + +</sect1> +</chapter> diff --git a/doc/quanta/ftab.png b/doc/quanta/ftab.png Binary files differnew file mode 100644 index 00000000..b179f808 --- /dev/null +++ b/doc/quanta/ftab.png diff --git a/doc/quanta/fundamentals.docbook b/doc/quanta/fundamentals.docbook new file mode 100644 index 00000000..ccd293d5 --- /dev/null +++ b/doc/quanta/fundamentals.docbook @@ -0,0 +1,429 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<chapter id="fundamentals-3-2"> +<chapterinfo> +<title>The Fundamentals of &quantaplus;</title> +<authorgroup> +<author> +<firstname>Robert</firstname> +<surname>Nickel</surname> +<affiliation> +<address><email>robert@artnickel.com</email></address> +</affiliation> +</author> + +<othercredit role="reviewer"> +<firstname>Christopher</firstname> +<surname>Hornbaker</surname> +<affiliation> +<address><email>chrishornbaker@earthlink.net</email></address> +</affiliation> +<contrib>Reviewer</contrib> +</othercredit> + +<othercredit role="reviewer"> +<firstname>Fabrice</firstname> +<surname>Mous</surname> +<affiliation> +<address><email>fabrice@kde.nl</email></address> +</affiliation> +<contrib>Reviewer</contrib> +</othercredit> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> +</chapterinfo> + +<title>The Fundamentals of &quantaplus;</title> + +<para> +Within &quantaplus; there are several key concepts. To understand and +take advantage of &quantaplus;, you must first learn these concepts, the +fundamentals. This chapter will explain and show you these concepts, without +which &quantaplus; would be primitive. +</para> + +<sect1 id="quanta-workspaces-3-2"> +<title>The Workspace</title> + +<para> +&quantaplus; divides the workspace into three scopes: Global, Local, and +Project. These distinctions affect various components in &quantaplus;. +</para> + +<variablelist> +<varlistentry> +<term>Global</term> +<listitem> +<para> +Global items are available to anyone that uses &quantaplus;. From toolbars +to actions, everything marked as global is stored in the common +&quantaplus; folder structure. This has the effect of allowing a group +of admins to save certain toolbars, actions, and templates in the global +tree, which can then be used to keep a multi-user installation of +&quantaplus; common to everyone on the system. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term>Local</term> +<listitem> +<para> +Local items make up a single user's personal collection of web development +resources. These items are made up of a user's templates and toolbars. +Local items are stored in a user's home folder. This makes all of the +user's Local items available for personal use at instance. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term>Project</term> +<listitem> +<para> +Project items are are only available to a particular project. These can +be anything from a &CSS; template to a toolbar with custom actions +which perform a special task on a project's files. Simply put, this is +the most limited scope. All of the items saved in the project workspace +will be saved in the project's folder tree, allowing you to share your +specialized tools and templates with whomever else you share your +project with. +</para> +</listitem> +</varlistentry> +</variablelist> + +</sect1> + +<sect1 id="mdi-interface-3-2"> +<title>The Multi-Document Interface</title> + +<para><mediaobject> +<imageobject> +<imagedata fileref="quantamdi.png" format="PNG" /> +</imageobject> +<caption><para>&quantaplus; editing the document you are now reading.</para></caption> +</mediaobject> +</para> + + +<para> +&quantaplus;' &MDI; is broken down into various parts: the editor window, +the quick info trees, informational tabs and the toolbars. Please see <xref linkend="editor-3-2" />, +<xref linkend="qit-3-2" />, <xref linkend="information-3-2" />, and <xref linkend="toolbars-3-2" /> for more +information on these parts. +</para> + +<sect2 id="editor-3-2"> +<title>The Editor Window</title> + +<para> +<mediaobject> +<imageobject> +<imagedata fileref="quantamdi-editor.png" format="PNG" /> +</imageobject> +<caption><para>&quantaplus;' editor window.</para></caption> +</mediaobject> +</para> + +<para> +&quantaplus;' editor window allows for multiple files to be opened at the +same time. When just one file is open, the document fills the entire +editor window. As soon as a second document is opened, a small amount of +space is taken from the bottom of the editor window to allow for tabs to +be displayed with the filenames and a status icon. The above picture shows +a <guiicon>floppy</guiicon> icon beside the filename, indicating that the +file has been modified and should be saved.</para> +<para>You can right click on the tabs with the mouse to get a context menu with entries related to the current document, like closing the current, other or all tabs; switching to other tabs; reloading, deleting or uploading the document; switching to a bookmarked line ; performing CVS operations on the current document.</para> +<para>Right clicking in the editor area will give you another context menu related to the edited document content, like basic editing actions (cut/copy/paste), editing the tag under the cursor, selecting the area covered by the tag under the cursor, getting context help about the word under the cursor or open a file if the string under the cursor points to a file.</para> + + +<para> +At the top of the editor window is the editor toolbar set. Currently, +&quantaplus; defaults to &HTML; 4.01 Transitional, which has a default set +of toolbars that are loaded. As &quantaplus; progresses, the toolbars will +be updated to meet the needs of users and to make use of newer features. +</para> + +<para> +Toolbar usage is pretty straight forward. If you want to insert a basic +tag, like <p>, into your document, then you can click on the icon that +represents the tag. Now you can insert your data for the tag you have just +inserted. If you wish to insert a tag that requires certain attributes +(like an anchor), then you will get a dialog box with the various fields for +you to fill in. + +<mediaobject> +<imageobject> +<imagedata fileref="taginputex.png" format="PNG" /> +</imageobject> +<caption><para>The anchor (<a>) dialog.</para></caption> +</mediaobject> +</para> +</sect2> + +<sect2 id="qit-3-2"> +<title>The Toolviews</title> + +<mediaobject> +<imageobject> +<imagedata fileref="quantamdi-treeview.png" format="PNG" /> +</imageobject> +<caption><para>The Toolviews.</para></caption> +</mediaobject> + +<para> +The Toolviews or Quick Info Trees (&QIT;) allow you to navigate, open, and gather +information in &quantaplus;. Its tabbed format presents you with the Files, Project, +Templates, Document Structure, Scripts, Attribute, and Documentation Trees. +</para> + +<variablelist id="qit-parts"> +<title>&QIT; Explained</title> + +<varlistentry> +<term> +Files Tree +<inlinemediaobject> +<imageobject> +<imagedata fileref="ftab.png" format="PNG" /> +</imageobject> +</inlinemediaobject> +</term> +<listitem> +<para> +This is where you can browse your entire file system. You are presented +with two top-level roots of the file system. The first is your home folder +and the second is the filesystem root folder - /. Use these to find existing +files on your machine that you would like to edit or add to an active +project. Right mouse button clicking on a file in this view gives you several +options for managing the selected file and, also, allows you to insert the +file into an active project, if any, or toggle the view between tree and list. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term>Project Tree +<inlinemediaobject> +<imageobject> +<imagedata fileref="ptab.png" format="PNG" /> +</imageobject> +</inlinemediaobject> +</term> +<listitem> +<para> +<link linkend="quanta-projects-3-2">Project management</link> is one of the +many powerful tools that &quantaplus; offers. This tab displays all files +within your project and allows you to manage the files within the project +through the use of &RMB; clicking. Actions, such as add, remove, upload, +or delete files entirely from the disk, can be performed through this menu. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term>Templates Tree +<inlinemediaobject> +<imageobject> +<imagedata fileref="ttab.png" format="PNG" /> +</imageobject> +</inlinemediaobject> +</term> +<listitem> +<para> +Another feature of &quantaplus; is templates. Templates can be anything +you would like. Images, code snippets, an entire web page, et cetera. It +is entirely up to you. +</para> + +<para> +Templates are sorted into three categories, which are based on their scope +and the context they are being used. These scopes are carried over from +&quantaplus;' workspace. Global templates are usable all times, local +templates are usable to the current user, and project templates +are usable only within their specified project. More on templates can be +found in <xref linkend="templates-3-2" />. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term>Scripts Tree +<inlinemediaobject> +<imageobject> +<imagedata fileref="exec.png" format="PNG" /> +</imageobject> +</inlinemediaobject> +</term> +<listitem> +<para> +Here you will find information about the various scripts available for use +by you. The Global, Local, and Project concept allows here as well. By +&LMB; clicking the entries, you gain access to all the available +information about the script. And &RMB; clicking allows you to perform a +few actions, such as running the script, editing the script, and mailing +the script, for example. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term>Document Structure Tree +<inlinemediaobject> +<imageobject> +<imagedata fileref="view_sidetree.png" format="PNG" /> +</imageobject> +</inlinemediaobject> +</term> +<listitem> +<para> +This tab displays the parser's internal representation of your document. +By &LMB; clicking on an element, your cursor will taken to the element's +position in the document. By &RMB; clicking on an element, you are +presented with a number of actions that deal with navigating and updating +the tree. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term>Attribute Tree +<inlinemediaobject> +<imageobject> +<imagedata fileref="tag_misc.png" format="PNG" /> +</imageobject> +</inlinemediaobject> +</term> +<listitem> +<para> +This tree appears below all the other &QIT;s. Within it you can quickly +edit attributes and namespaces. The content-focused entry system +allows you to modify all the available attributes with little more than a +few clicks of the mouse. +<mediaobject> +<imageobject> +<imagedata fileref="attribute_tree.png" format="PNG" /> +</imageobject> +<caption><para>Attribute Tree</para></caption> +</mediaobject> +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term>Documentation Tree +<inlinemediaobject> +<imageobject> +<imagedata fileref="contents2.png" format="PNG" /> +</imageobject> +</inlinemediaobject> +</term> +<listitem> +<para> +Here you can find complete documentation on web technologies to aid your +development. You can download pre-packaged documentation for &quantaplus; +at <ulink url="http://quanta.sourceforge.net/docs.html">&quantaplus;' +documentation site</ulink>, you can <link +linkend="creating-quanta-docs-3-2">create your own documentation</link>, +and, by adding a folder named "doc" to a project, you can add, edit, +and view project-specific documentation. +</para> +</listitem> +</varlistentry> +</variablelist> +</sect2> + +<sect2 id="information-3-2"> +<title>The Informational Tabs</title> + +<mediaobject> +<imageobject> +<imagedata fileref="info_tab.png" format="PNG" /> +</imageobject> +<caption><para>&quantaplus;' Informational Tabs.</para></caption> +</mediaobject> + +<para> +By default &quantaplus; has two tabs located at the bottom of the window +from which useful information can be obtained. These are the Messages +window and the Problems window. +</para> +<variablelist> +<varlistentry> +<term> +Messages Window Tab +<inlinemediaobject> +<imageobject> +<imagedata fileref="" format="PNG" /> +</imageobject> +</inlinemediaobject> +</term> +<listitem> +<para> +This tab displays information from any scripts run in quanta. +For example, the DTD being used for the current document +and any changes to the DTD are displayed. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +Problems Tab +<inlinemediaobject> +<imageobject> +<imagedata fileref="" format="PNG" /> +</imageobject> +</inlinemediaobject> +</term> +<listitem> +<para> +This tab shows any errors in the markup of the current document. +&quantaplus; scripts which are executed will also print error +messages (if present) in this tab. +</para> +</listitem> +</varlistentry> +</variablelist> +</sect2> + +<sect2 id="toolbars-3-2"> +<title>The Toolbars</title> + +<mediaobject> +<imageobject> +<imagedata fileref="toolbars.png" format="PNG" /> +</imageobject> +<caption><para>&quantaplus;' &HTML; toolbars.</para></caption> +</mediaobject> + +<para> +&quantaplus;' toolbars have been extended greatly and are easy to +understand. You click on the button and you get an associated action from +that button. The beautiful part about toolbars is that you can define your +own actions graphically within &quantaplus;. +</para> + +<para> +Managing toolbars in &quantaplus; is easy. By selecting the <guimenu> +Toolbars</guimenu> menu, you have the options to load, save, add, remove, and +email toolbars. When you choose to load a toolbar, you may choose from one +of the three <link linkend="quanta-workspaces-3-2">workspaces</link> in +&quantaplus;. When saving a newly created toolbar, you can save it in the +local scope or within a project's scope. If you would like to make a new +toolbar available in the global scope, ask your admin to place it in +&quantaplus;' global toolbar folder. +</para> + +<para> +Another feature of &quantaplus; is the ability to email your toolbars. +&quantaplus; sends the toolbar as a gzipped tar archive through &kmail;. +If you receive a toolbar in email, then you can save (and load) it into +&quantaplus; like any other toolbar! +</para> +</sect2> +</sect1> +</chapter> diff --git a/doc/quanta/glossary.docbook b/doc/quanta/glossary.docbook new file mode 100644 index 00000000..30e83c3d --- /dev/null +++ b/doc/quanta/glossary.docbook @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<glossary id="quanta-glossary-3-2"> + +<glossaryinfo> +<authorgroup> +<author> +<firstname>Keith</firstname> +<surname>Isdale</surname> +<affiliation> +<address><email>k_isdale@tpg.com.au</email></address> +</affiliation> +</author> + +<othercredit role="reviewer"> +<firstname>Christopher</firstname> +<surname>Hornbaker</surname> +<affiliation> +<address><email>chrishornbaker@earthlink.net</email></address> +</affiliation> +<contrib>Reviewer</contrib> +</othercredit> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> +</glossaryinfo> + +<glossdiv> +<title>Keywords</title> +<glossentry id="xsldbg-glosref"> +<glossterm>xsldbg</glossterm> +<glossdef> +<para>See <ulink url="http://xsldbg.sourceforge.net"></ulink></para> +</glossdef> +</glossentry> +<glossentry> +<glossterm>XPath</glossterm> +<glossdef> +<para>A valid expression that defines what data is required. See +<ulink url="http://www.w3.org">&W3C; web site</ulink> +</para> +</glossdef> +</glossentry> +<glossentry> +<glossterm>QName</glossterm> +<glossdef> +<para>A fully qualified name. For example <emphasis>xsl:myvariable</emphasis>. See <ulink url="http://www.w3.org">&W3C; web site</ulink> +</para> +</glossdef> +</glossentry> +</glossdiv> +</glossary> diff --git a/doc/quanta/index.docbook b/doc/quanta/index.docbook new file mode 100644 index 00000000..32d92c53 --- /dev/null +++ b/doc/quanta/index.docbook @@ -0,0 +1,183 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY package "kdewebdev"> + <!ENTITY advanced-quanta SYSTEM "adv-quanta.docbook"> + <!ENTITY config-quanta SYSTEM "config-quanta.docbook"> + <!ENTITY credits-license SYSTEM "credits-license.docbook"> + <!ENTITY debugging-quanta SYSTEM "debugging-quanta.docbook"> + <!ENTITY extending-quanta SYSTEM "extending-quanta.docbook"> + <!ENTITY fundamentals SYSTEM "fundamentals.docbook"> + <!ENTITY glossary SYSTEM "glossary.docbook"> + <!ENTITY installation SYSTEM "installation.docbook"> + <!ENTITY introduction SYSTEM "introduction.docbook"> + <!ENTITY q-and-a SYSTEM "q-and-a.docbook"> + <!ENTITY quanta-menus SYSTEM "quanta-menus.docbook"> + <!ENTITY quanta-projects SYSTEM "quanta-projects.docbook"> + <!ENTITY working-with-quanta SYSTEM "working-with-quanta.docbook"> + <!ENTITY CGI "<acronym>CGI</acronym>"> + <!ENTITY DTD "<acronym>DTD</acronym>"> + <!ENTITY DTEP "<acronym>DTEP</acronym>"> + <!ENTITY HTML "<acronym>HTML</acronym>"> + <!ENTITY IDE "<acronym>IDE</acronym>"> + <!ENTITY PHP "<acronym>PHP</acronym>"> + <!ENTITY PDF "<acronym>PDF</acronym>"> + <!ENTITY SGML "<acronym>SGML</acronym>"> + <!ENTITY XSD "<acronym>XSD</acronym>"> + <!ENTITY W3C '<trademark class="registered">W3C</trademark>'> + <!ENTITY QIT "<acronym>QIT</acronym>"> + <!ENTITY MDI "<acronym>MDI</acronym>"> + <!ENTITY gubed "<application>Gubed PHP Debugger</application>"> + <!ENTITY kxsl "<application>KXsldbg</application>"> + <!ENTITY VPL "<acronym>VPL</acronym>"> + <!ENTITY % addindex "IGNORE"> + <!ENTITY % English "INCLUDE"> + <!ENTITY descriptionrc '<link linkend="descriptionrc-3-2">description.rc</link>'> +]> + +<book lang="&language;"> +<title>&quantaplus; User Manual</title> + +<bookinfo> + +<authorgroup> + +<author> +<firstname>Christopher</firstname> +<surname>Hornbaker</surname> +<affiliation> +<address><email>chrishornbaker@earthlink.net</email></address> +</affiliation> +</author> + +<author> +<firstname>Fabrice</firstname> +<surname>Mous</surname> +<affiliation> +<address><email>fabrice@kde.nl</email></address> +</affiliation> +</author> + +<author> +<firstname>Robert</firstname> +<surname>Nickel</surname> +<affiliation> +<address><email>robert@artnickel.com</email></address> +</affiliation> +</author> + +<author> +<firstname>András</firstname> +<surname>Mantia</surname> +<affiliation> +<address><email>amantia@kde.org</email></address> +</affiliation> +</author> + +<othercredit role="developer"> +<firstname>Eric</firstname> +<surname>Laffoon</surname> +<affiliation> +<address><email>sequitur@kde.org</email></address> +</affiliation> +<contrib>Developer</contrib> +</othercredit> + +<othercredit role="developer"> +<firstname>András</firstname> +<surname>Mantia</surname> +<affiliation> +<address><email>amantia@kde.org</email></address> +</affiliation> +<contrib>Developer</contrib> +</othercredit> + +<othercredit role="developer"> +<firstname>Dmitry</firstname> +<surname>Poplavsky</surname> +<affiliation> +<address><email>dima@kde.org</email></address> +</affiliation> +<contrib>Developer up to 2.0</contrib> +</othercredit> + +<othercredit role="developer"> +<firstname>Alexander</firstname> +<surname>Yackovlev</surname> +<affiliation> +<address><email>yshurik@kde.org</email></address> +</affiliation> +<contrib>Developer up to 2.0</contrib> +</othercredit> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> + +<copyright> +<year>2002</year><year>2003</year><year>2004</year><year>2005</year> +<holder>&quantaplus; Development Team</holder> +</copyright> + +<legalnotice> +<para> +&FDLNotice; +</para> +</legalnotice> + +<date>2005-08-24</date> +<releaseinfo>3.4.90</releaseinfo> + +<abstract> +<para> +&quantaplus; is a Web &IDE; that strives to be neutral and +transparent to all markup languages, while supporting popular +web-based scripting languages, &CSS;, and other emerging &W3C; +recommendations. +</para> +</abstract> + +<keywordset> +<keyword>KDE</keyword> +<keyword>Quanta</keyword> +<keyword>text</keyword> +<keyword>editor</keyword> +<keyword>Web</keyword> +<keyword>programmer</keyword> +<keyword>programming</keyword> +<keyword>development</keyword> +<keyword>Kommander</keyword> +<keyword>xsldbg</keyword> +<keyword>libxslt</keyword> +<keyword>debugger</keyword> +<keyword>projects</keyword> +<keyword>SGML</keyword> +<keyword>JSS</keyword> +<keyword>DTD</keyword> +<keyword>XML</keyword> +<keyword>XSD</keyword> +<keyword>W3C</keyword> +<keyword>CSS</keyword> +<keyword>Schema</keyword> +<keyword>DocBook</keyword> +<keyword>HTML</keyword> +<keyword>XHTML</keyword> +<keyword>CGI</keyword> +<keyword>PHP</keyword> +<keyword>Java</keyword> +<keyword>JavaScript</keyword> +<keyword>ColdFusion</keyword> +</keywordset> +</bookinfo> +&introduction; +&fundamentals; +&working-with-quanta; +<!-- &config-quanta; --> +&quanta-menus; +&config-quanta; +&advanced-quanta; +&extending-quanta; +&q-and-a; +&credits-license; +&installation; +&glossary; +</book> diff --git a/doc/quanta/info_tab.png b/doc/quanta/info_tab.png Binary files differnew file mode 100644 index 00000000..b1cdc3f2 --- /dev/null +++ b/doc/quanta/info_tab.png diff --git a/doc/quanta/installation.docbook b/doc/quanta/installation.docbook new file mode 100644 index 00000000..a89a6b2c --- /dev/null +++ b/doc/quanta/installation.docbook @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<appendix id="installation-3-2"> +<title>Installation</title> + +<sect1 id="acquiring-qunata-3-2"> +<title>Acquiring &quantaplus;</title> + +&install.intro.documentation; +</sect1> + +<sect1 id="source-code-building-3-2"> +<title>Building the Source</title> + +&install.compile.documentation; + +<sect2 id="source-code-building-considerations-3-2"> +<title>Considerations When Building</title> + +<para> +It is reasonable that you would want to customize the location of +the &quantaplus; files on your system. To this end, +<command>autoconf</command> has a number of options +that can be passed to the <command>configure</command> +script to control this setup. To get a complete listing of these +options, type <command>./configure</command> +<option> --help</option>. These are straight forward and will +not be covered here. +</para> + +<para> +If you are having trouble with &quantaplus; running properly, you +should check your path to ensure that the &kde; 3 +<filename class="directory">bin</filename> folder is in there. +Also, be sure that you do not have any older versions of &kde; laying +about that appear in <envar>PATH</envar> before your &kde; 3 +<filename class="directory">bin</filename> folder. The same +holds true for &Qt;. +</para> + +</sect2> +</sect1> +</appendix> diff --git a/doc/quanta/introduction.docbook b/doc/quanta/introduction.docbook new file mode 100644 index 00000000..b4be671c --- /dev/null +++ b/doc/quanta/introduction.docbook @@ -0,0 +1,134 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<chapter id="introduction-3-2"> +<chapterinfo> +<title>What is &quantaplus;?</title> +<authorgroup> +<author> +<firstname>Eric</firstname> +<surname>Laffoon</surname> +<affiliation> +<address><email>sequitur@kde.org</email></address> +</affiliation> +</author> + +<othercredit role="reviewer"> +<firstname>Christopher</firstname> +<surname>Hornbaker</surname> +<affiliation> +<address><email>chrishornbaker@earthlink.net</email></address> +</affiliation> +<contrib>Reviewer</contrib> +</othercredit> + +<othercredit role="reviewer"> +<firstname>Fabrice</firstname> +<surname>Mous</surname> +<affiliation> +<address><email>fabrice@kde.nl</email></address> +</affiliation> +<contrib>Reviewer</contrib> +</othercredit> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> +</chapterinfo> + +<title>What is &quantaplus;?</title> + +<blockquote> +<attribution> +Eric Laffoon at http://quanta.sourceforge.net +</attribution> + +<para> +&quantaplus; is a web development tool for the K Desktop Environment. +&quantaplus; is designed for quick web development and is rapidly becoming +a mature editor with a number of great features. +</para> +<para> +Our objective remains to create the very best web development tool +anywhere. We realize that we will need many more people active to +accomplish this, so we are in the process of developing enhancements geared +toward making it easy for web developers to customize, extend, and enhance +&quantaplus;. Then we will be asking you, the web developers, to contribute +your feature enhancements. We will organize these so that &quantaplus; web +developers can find just the resources, extensions and custom plug-ins +they need to be the most kick butt developers ever. +</para> +</blockquote> + +<sect1 id="quanta-intro-3-2"> +<sect1info> +<title>&quantaplus;: Where It Was And Where It Is Going</title> +<authorgroup> +<author> +<firstname>Robert</firstname> +<surname>Nickel</surname> +<affiliation> +<address><email>robert@artnickel.com</email></address> +</affiliation> +</author> + +<othercredit role="reviewer"> +<firstname>Christopher</firstname> +<surname>Hornbaker</surname> +<affiliation> +<address><email>chrishornbaker@earthlink.net</email></address> +</affiliation> +<contrib>Reviewer</contrib> +</othercredit> + +<othercredit role="reviewer"> +<firstname>Fabrice</firstname> +<surname>Mous</surname> +<affiliation> +<address><email>fabrice@kde.nl</email></address> +</affiliation> +<contrib>Reviewer</contrib> +</othercredit> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> +</sect1info> + +<title>&quantaplus;: Where It Was And Where It Is Going</title> + +<para> +While striving to become the best &HTML; editor, the developers of +&quantaplus; began to think about a rather intriguing idea: <quote>What if +&quantaplus; was a generic, extensible, markup language editor?</quote> +Well, that would only make it the greatest Web Development Environment +for &kde;! So it was done. +</para> + +<para> +No longer bound to &HTML;, &quantaplus; is now well on its way to becoming +an all-purpose Web Development Environment. Essentially, if you can define +it in &XML;, then &quantaplus; should be able to serve as an &IDE; for it. +</para> + +<para> +Now, with the above said, it must be noted that &quantaplus; is an +outgrowth of the outstanding efforts that have been put forth by the +entire &kde; development community. &quantaplus;, in celebration of open +source, uses the idea of <quote>Why write something somebody already +wrote?</quote> Thanks to &kde;'s framework, not only is this possible, but +it also allows users and developers to extend &quantaplus; to match their +unique needs. +</para> + +<para> +&quantaplus; provides web developers with an intuitive and powerful +multiple document interface (&MDI;). It can dramatically increase your +productivity. Through the use of custom actions, scripting, and toolbars, +you can automate almost any task. With the use of <application> +Kommander</application>, you can extend &quantaplus; in a manner in which +you never have to remember scripting command syntax again. (More about this +can be found in <xref linkend="extending-quanta-3-2" />.) +</para> +</sect1> + +</chapter> diff --git a/doc/quanta/kfr-icon.png b/doc/quanta/kfr-icon.png Binary files differnew file mode 100644 index 00000000..4ba2dcdf --- /dev/null +++ b/doc/quanta/kfr-icon.png diff --git a/doc/quanta/kfr-new-dialog.png b/doc/quanta/kfr-new-dialog.png Binary files differnew file mode 100644 index 00000000..8b483dcb --- /dev/null +++ b/doc/quanta/kfr-new-dialog.png diff --git a/doc/quanta/man-quanta.1.docbook b/doc/quanta/man-quanta.1.docbook new file mode 100644 index 00000000..bb493fac --- /dev/null +++ b/doc/quanta/man-quanta.1.docbook @@ -0,0 +1,95 @@ +<?xml version="1.0" ?> +<!DOCTYPE refentry PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ +<!ENTITY % English "INCLUDE"> +]> + +<refentry lang="&language;"> +<refentryinfo> +<author><personname><firstname>Ben</firstname><surname>Burton</surname></personname><email>bab@debian.org</email></author> +<date>April 8, 2003</date> +</refentryinfo> + +<refmeta> +<refentrytitle><command>quanta</command></refentrytitle> +<manvolnum>1</manvolnum> +</refmeta> + +<refnamediv> +<refname><command>quanta</command></refname> +<refpurpose>A &kde; based web development environment</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<cmdsynopsis> +<command>quanta</command> + +<group><option>--unique</option></group> +<group><option>--nologo</option></group> +<group><option>--resetlayout</option></group> +<group><option><replaceable>filename</replaceable></option></group> +<group><option>KDE Generic Options</option></group> +<group><option>Qt Generic Options</option></group> + +</cmdsynopsis> +</refsynopsisdiv> + +<refsect1> +<title>Description</title> + +<para>&quanta; Plus is a web development environment for HTML and +associate languages. It is designed for quick web development and is +rapidly becoming a mature editor with a number of great +features. &quanta; already has a good deal of PHP support in it +including the ability to run a debugger.</para> + +<para>&quanta; Plus is not in any way affiliated with any commercial +versions of &quanta;. The primary coders from the original team left +the GPL'd version to produce a commercial product.</para> + +</refsect1> + +<refsect1> +<title>Options</title> + +<variablelist> +<title>Application Options</title> +<varlistentry> +<term><option>--unique</option></term> +<listitem><para>Run as a one-instance application</para></listitem> +</varlistentry> + +<varlistentry> +<term><option>--nologo</option></term> +<listitem><para>Do not show the logo during startup</para></listitem> +</varlistentry> + +<varlistentry> + <term><option>--resetlayout</option></term> + <listitem><para>Reset the layout of the user interface to the default</para></listitem> +</varlistentry> +</variablelist> + +</refsect1> + +<refsect1> +<title>See Also</title> + +<para>More detailed user documentation is available from <ulink +url="help:/quanta">help:/quanta</ulink> (either enter this +<acronym>URL</acronym> into &konqueror;, or run +<userinput><command>khelpcenter</command> +<parameter>help:/quanta</parameter></userinput>).</para> + +<para>There is also further information available at <ulink url="http://sourceforge.net/projects/quanta/">http://sourceforge.net/projects/quanta/</ulink></para> +</refsect1> + +<refsect1> +<title>Authors</title> + +<para>&quanta; is currently written and maintained by Eric Laffoon <email>sequitur@kde.org</email> and Andras Mantia <email>amantia@kde.org</email>.</para> + +<para>This manual page was prepared by <personname><firstname>Ben</firstname><surname>Burton</surname></personname><email>bab@debian.org</email> </para> + +</refsect1> + +</refentry> diff --git a/doc/quanta/plugin-edit.png b/doc/quanta/plugin-edit.png Binary files differnew file mode 100644 index 00000000..1dc8824e --- /dev/null +++ b/doc/quanta/plugin-edit.png diff --git a/doc/quanta/project-1.png b/doc/quanta/project-1.png Binary files differnew file mode 100644 index 00000000..8c86b8fb --- /dev/null +++ b/doc/quanta/project-1.png diff --git a/doc/quanta/project-properties.png b/doc/quanta/project-properties.png Binary files differnew file mode 100644 index 00000000..241af897 --- /dev/null +++ b/doc/quanta/project-properties.png diff --git a/doc/quanta/project-tree-view-dir-rmb-menu.png b/doc/quanta/project-tree-view-dir-rmb-menu.png Binary files differnew file mode 100644 index 00000000..a89b43fc --- /dev/null +++ b/doc/quanta/project-tree-view-dir-rmb-menu.png diff --git a/doc/quanta/project-tree-view-file-rmb-menu.png b/doc/quanta/project-tree-view-file-rmb-menu.png Binary files differnew file mode 100644 index 00000000..c587e02a --- /dev/null +++ b/doc/quanta/project-tree-view-file-rmb-menu.png diff --git a/doc/quanta/project-upload-dialog.png b/doc/quanta/project-upload-dialog.png Binary files differnew file mode 100644 index 00000000..2c641d5a --- /dev/null +++ b/doc/quanta/project-upload-dialog.png diff --git a/doc/quanta/ptab.png b/doc/quanta/ptab.png Binary files differnew file mode 100644 index 00000000..977f1dd9 --- /dev/null +++ b/doc/quanta/ptab.png diff --git a/doc/quanta/q-and-a.docbook b/doc/quanta/q-and-a.docbook new file mode 100644 index 00000000..020d4580 --- /dev/null +++ b/doc/quanta/q-and-a.docbook @@ -0,0 +1,70 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<chapter id="faq-3-2"> +<chapterinfo> +<title>Questions and Answers</title> +<authorgroup> +<author> +<firstname>Eric</firstname> +<surname>Laffoon</surname> +<affiliation> +<address><email>sequitur@kde.org</email></address> +</affiliation> +</author> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> +</chapterinfo> + +<title>Questions and Answers</title> + +<qandaset> +<qandaentry> +<question> +<para> +How can I help &quantaplus; development? +</para> +</question> +<answer> +<para> +We would be remiss not to point out that &quantaplus; is being built by +volunteers. Many people feel they cannot contribute to the open +source cause for one reason or another. Probably the greatest being a +feeling they do not have the skills. &quantaplus; has been developed in a +manner that allows both non-programmers and programmers help extend +&quantaplus;. There is also the issue of documentation. Software, be it +proprietary or Free/open source, is only as good as its documentation. +We are sure there is a place in &quantaplus; where your time will be most +beneficial. +</para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para> +Where is &quantaplus; going from here? +</para> +</question> +<answer> +<para> +We have released &quantaplus; 3.4 and are now in preparation for the next major +release. The targeted 4.0 release is a partial rewrite of Quanta to use the +features ofered by the KDevelop framework. +Our objective remains to create the very best web development +environment. We realize that we will need many more people actively developing +&quantaplus; to accomplish this, so we are in the process of developing +enhancements geared toward making it easy for web developers to +customize, extend, and enhance &quantaplus;. Much of this has been +accomplished with the 3.4 release. Soon will be asking you, the web +developers, to contribute your feature enhancements. We will organize +these so that &quantaplus; web developers can find just the resources, +extensions, and custom plug-ins they need to be the most reliable, +professional developers ever! +</para> +</answer> +</qandaentry> + +</qandaset> +</chapter> diff --git a/doc/quanta/quanta-menus.docbook b/doc/quanta/quanta-menus.docbook new file mode 100644 index 00000000..751f4591 --- /dev/null +++ b/doc/quanta/quanta-menus.docbook @@ -0,0 +1,2265 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<chapter id="quantas-menus-3-2"> +<chapterinfo> +<title>The Menubar</title> +<authorgroup> +<author> +<firstname>Robert</firstname> +<surname>Nickel</surname> +<affiliation> +<address><email>robert@artnickel.com</email></address> +</affiliation> +</author> +<author> + <firstname>András</firstname> + <surname>Mantia</surname> + <affiliation> + <address><email>amantia@kde.org</email></address> + </affiliation> +</author> + +<othercredit role="reviewer"> +<firstname>Christopher</firstname> +<surname>Hornbaker</surname> +<affiliation> +<address><email>chrishornbaker@earthlink.net</email></address> +</affiliation> +<contrib>Reviewer</contrib> +</othercredit> + +<othercredit role="reviewer"> +<firstname>Fabrice</firstname> +<surname>Mous</surname> +<affiliation> +<address><email>fabrice@kde.nl</email></address> +</affiliation> +<contrib>Reviewer</contrib> +</othercredit> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> +</chapterinfo> + +<title>The Menubar</title> + +<para> +This chapter explains all the various functions that can be found in the +menubar. +</para> + +<sect1 id="file-menu-3-2"> +<title>The <guimenu>File</guimenu> Menu</title> + +<variablelist> +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo> +</shortcut> +<guimenu>File</guimenu> +<guimenuitem>New</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Create a new, blank file. +</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> +Search the file system to open an existing file. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>File</guimenu> +<guimenuitem>Open Recent</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Quick list of the last several files you've opened. This list will change +each time you open a file that is not on it, with the oldest being bumped +off first. +</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> +Save the active file's changes. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>File</guimenu> +<guimenuitem>Save As...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Save the active file with another name. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>File</guimenu> +<guisubmenu>Save as Template</guisubmenu> +</menuchoice> +</term> +<listitem> +<para> +This allows you to save code snippets and entire files as a template for +later use. See the section on <link linkend="templates-3-2">templates</link>. +If you try to save the selected text/file outside of the local/project +template dir, then you will receive an error. +</para> +<variablelist> + +<varlistentry> +<term> +<menuchoice> +<guimenu>File</guimenu> +<guisubmenu>Save as Template</guisubmenu> +<guisubmenu>Save as Local Template...</guisubmenu> +</menuchoice> +</term> +<listitem> +<para> +Allows you to save a file as a template within the local scope. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>File</guimenu> +<guisubmenu>Save as Template</guisubmenu> +<guisubmenu>Save as Project Template...</guisubmenu> +</menuchoice> +</term> +<listitem> +<para> +Allows you to save a file as a template within the project scope. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>File</guimenu> +<guisubmenu>Save as Template</guisubmenu> +<guisubmenu>Save Selection to Local Template File...</guisubmenu> +</menuchoice> +</term> +<listitem> +<para> +Allows you to save the selected text (⪚ a code snippet) in a local +template file. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>File</guimenu> +<guisubmenu>Save as Template</guisubmenu> +<guisubmenu>Save Selection to Project Template File...</guisubmenu> +</menuchoice> +</term> +<listitem> +<para> +Allows you to save the selected text (⪚ a code snippet) in a project +template file. +</para> +</listitem> +</varlistentry> + +</variablelist> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;&Shift;<keycap>S</keycap></keycombo> +</shortcut> +<guimenu>File</guimenu> +<guimenuitem>Save All...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Save all modified files in the editor. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>F5</keycap></keycombo> +</shortcut> +<guimenu>File</guimenu> +<guimenuitem>Reload</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Reloads the current focused document. +</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> +You can actually print out your documents. Uses the <application>kprinter +</application> interface. +</para> +</listitem> +</varlistentry> +<!-- Not shown any more +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>W</keycap></keycombo> +</shortcut> +<guimenu>File</guimenu> +<guimenuitem>Close</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Close the currently displayed file. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>File</guimenu> +<guimenuitem>Close All</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Close all open files. Prompts you to save if any files have been modified. +</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> +Exit &quantaplus; +</para> +</listitem> +</varlistentry> +</variablelist> + +</sect1> + +<sect1 id="edit-menu-3-2"> +<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> +Undo the last action performed. +</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> +Redo the last action undone. +</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> +Cut the current block of text and place its contents 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> +Copy the current block of text to 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> +Paste the contents of the clipboard at the current cursor position. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Edit</guimenu> +<guisubmenu>Paste Special</guisubmenu> +</menuchoice> +</term> +<listitem> +<para> +<variablelist> +<varlistentry> +<term> +<menuchoice> +<guimenu>Edit</guimenu> +<guisubmenu>Paste Special</guisubmenu> +<guimenuitem>Paste HTML Quoted</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Converts the clipboard text &HTML; special characters to &HTML; entities +before pasting into the text body, so they show up properly when viewed +and aren't picked up as tags by the client browser. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term> +<menuchoice> +<guimenu>Edit</guimenu> +<guisubmenu>Paste Special</guisubmenu> +<guimenuitem>Paste &URL; Encoded</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Converts the clipboard text into &URL; encoding, which is the correct way +to include special characters and spaces into &URL;s. Used primarily when +pasting a &URL; into an anchor tag. +</para> +</listitem> +</varlistentry> +</variablelist> +</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> +Select all of the text in the current document. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;&Shift;<keycap>A</keycap></keycombo> +</shortcut> +<guimenu>Edit</guimenu> +<guimenuitem>Deselect</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Unselect all text in the current document. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;&Shift;<keycap>B</keycap></keycombo> +</shortcut> +<guimenu>Edit</guimenu> +<guimenuitem>Block Selection Mode</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Turn on/off block highlighting. Allows you to select text blocks with your +keyboard without holding down the shift key. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycap>Insert</keycap> +</shortcut> +<guimenu>Edit</guimenu> +<guimenuitem>Overwrite Mode</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Overrides the Insert key. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>F</keycap></keycombo> +</shortcut> +<guimenu>Edit</guimenu> +<guimenuitem>Find...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +String or regular expression pattern to find in the current document. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycap>F3</keycap> +</shortcut> +<guimenu>Edit</guimenu> +<guimenuitem>Find Next</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Repeat the find downward in the document from the current location. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Shift;<keycap>F3</keycap></keycombo> +</shortcut> +<guimenu>Edit</guimenu> +<guimenuitem>Find Previous</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Repeat the find upward in the document from the current location. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>R</keycap></keycombo> +</shortcut> +<guimenu>Edit</guimenu> +<guimenuitem>Replace...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +String or regular expression replacement of text in the current file. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>G</keycap></keycombo> +</shortcut> +<guimenu>Edit</guimenu> +<guimenuitem>Go to Line...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Go directly to a specific line number. This is really helpful when your +&PHP; script is breaking unexpectedly! +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Alt;&Ctrl;<keycap>F</keycap></keycombo> +</shortcut> +<guimenu>Edit</guimenu> +<guimenuitem>Find in Files...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Find a string or expression in files in the selected folder. Sort of a +&GUI; <command>grep</command> or <command>sed</command> with some +predefined pattern spaces to help you out. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>J</keycap></keycombo> +</shortcut> +<guimenu>Edit</guimenu> +<guimenuitem>Expand Abbreviation</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> + Expands the abbreviations. Abbreviations can be defined in the <menuchoice> + <guimenu>Settings</guimenu> + <guimenuitem>Configure Quanta...</guimenuitem> + </menuchoice> dialog. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Edit</guimenu> +<guimenuitem>Apply Source Indentation</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> + Reformats the source code accroding to the same rules as the &VPL; part inserts the tags. +</para> +</listitem> +</varlistentry> + +</variablelist> + +</sect1> + +<sect1 id="view-menu-3-2"> +<title>The <guimenu>View</guimenu> Menu</title> + +<variablelist> +<varlistentry> +<term> +<menuchoice> +<guimenu>View</guimenu> +<guisubmenu>Tool Views</guisubmenu> +</menuchoice> +</term> +<listitem> +<variablelist> +<varlistentry> +<term> +<menuchoice> +<guimenu>View</guimenu> +<guisubmenu>Tool Views</guisubmenu> +<guimenuitem>Show Files</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Toggle display of the files tree. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>View</guimenu> +<guisubmenu>Tool Views</guisubmenu> +<guimenuitem>Show Project</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Toggle display of the project tree. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>View</guimenu><guisubmenu>Tool Views</guisubmenu> +<guimenuitem>Show Templates</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Toggle display of the template tree. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>View</guimenu><guisubmenu>Tool Views</guisubmenu> +<guimenuitem>Show Scripts</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Toggle display of the scripts tree. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>View</guimenu><guisubmenu>Tool Views</guisubmenu> +<guimenuitem>Show Document Structure</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Toggle display of the document structure tree. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>View</guimenu><guisubmenu>Tool Views</guisubmenu> +<guimenuitem>Show Attribute Editor</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Toggle display of the attribute tree. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>View</guimenu><guisubmenu>Tool Views</guisubmenu> +<guimenuitem>Show Documentation</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Toggle display of the documentation tree. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>M</keycap></keycombo> +</shortcut> +<guimenu>View</guimenu><guisubmenu>Tool Views</guisubmenu> +<guimenuitem>Show Messages</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Toggle display of the message window. This is the window where you see the +output of any scripting actions and the debugger. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>View</guimenu><guisubmenu>Tool Views</guisubmenu> +<guimenuitem>Show Problems</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Toggle display of the <guilabel>Problem Reporter</guilabel> at the bottom +of the main &quantaplus; window. The <guilabel>Problem Reporter</guilabel> +activates when you switch to the <guilabel>Structure Tree</guilabel>. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>View</guimenu><guisubmenu>Tool Views</guisubmenu> +<guimenuitem>Show Annotations</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Shows the annotation view. Read the <xref linkend="annotations" /> for details. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>View</guimenu><guisubmenu>Tool Views</guisubmenu> +<guimenuitem>Show Upload Profile:...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Shows the files on the server for an <link linkend="upload-profiles">upload profile</link>. +</para> +</listitem> +</varlistentry> + + +</variablelist> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Shift;<keycap>F9</keycap></keycombo> +</shortcut> +<guimenu>View</guimenu> +<guimenuitem>Show Icon Border</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Toggle display of the icon border to the left of the main editor window. +This bar allows for click toggling of bookmarks. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycap>F11</keycap> +</shortcut> +<guimenu>View</guimenu> +<guimenuitem>Show Line Numbers</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Toggles the display of line numbers along the side of +the main editor window. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycap>F10</keycap> +</shortcut> +<guimenu>View</guimenu> +<guimenuitem>Dynamic Word Wrap</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Toggle on and off reformatting of text to a specific +width as you type. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Alt;<keycap>F9</keycap></keycombo> +</shortcut> +<guimenu>View</guimenu> +<guimenuitem>Source Editor</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Switch to the source of a document to edit. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;&Shift;<keycap>F9</keycap></keycombo> +</shortcut> +<guimenu>View</guimenu> +<guimenuitem>&VPL; Editor</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Switch to the <guilabel>&VPL; Editor</guilabel> to edit a document. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycap>F9</keycap> +</shortcut> +<guimenu>View</guimenu> +<guimenuitem>&VPL; & Source Editors</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Switch to split screen mode to edit a document. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycap>F6</keycap> +</shortcut> +<guimenu>View</guimenu> +<guimenuitem>Preview</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Preview the current document. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Alt;<keycap>Left Arrow</keycap></keycombo> +</shortcut> +<guimenu>View</guimenu> +<guimenuitem>Back</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Navigate back one step in the preview. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Alt;<keycap>Right Arrow</keycap></keycombo> +</shortcut> +<guimenu>View</guimenu> +<guimenuitem>Forward</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Navigate forward one step in the preview after having gone back in the +preview. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycap>F5</keycap> +</shortcut> +<guimenu>View</guimenu> +<guimenuitem>Reload Preview</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Reload the preview from disk. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul"><keycap>F12</keycap></keycombo> +</shortcut> +<guimenu>View</guimenu><guisubmenu>External Preview</guisubmenu> +<guimenuitem>View with &konqueror;</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +View the current file with &konqueror;. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;&Shift;<keycap>F12</keycap></keycombo> +</shortcut> +<guimenu>View</guimenu><guisubmenu>External Preview</guisubmenu> +<guimenuitem>View with Firefox;</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +View the current file with the Mozilla Firefox browser. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Shift;<keycap>F12</keycap></keycombo> +</shortcut> +<guimenu>View</guimenu><guisubmenu>External Preview</guisubmenu> +<guimenuitem>View with Mozilla</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +View the current file with <trademark class="registered">Mozilla</trademark>. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Shift;<keycap>F6</keycap></keycombo> +</shortcut> +<guimenu>View</guimenu><guisubmenu>External Preview</guisubmenu> +<guimenuitem>View with &Netscape;</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +View the current file with &Netscape;. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Alt;<keycap>F6</keycap></keycombo> +</shortcut> +<guimenu>View</guimenu><guisubmenu>External Preview</guisubmenu> +<guimenuitem>View with Opera</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +View the current file with <application>Opera</application>. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>View</guimenu><guisubmenu>External Preview</guisubmenu> +<guimenuitem>View with Lynx</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +View the current file with <application>Lynx</application> (a text based +browser). +</para> +</listitem> +</varlistentry> +</variablelist> +</sect1> + +<sect1 id="bookmarks-menu-3-2"> + <title>The <guimenu>Bookmarks</guimenu> Menu</title> + + <variablelist> + <varlistentry> + <term> + <menuchoice> + <shortcut> + <keycombo action="simul">&Ctrl;<keycap>B</keycap></keycombo> + </shortcut> + <guimenu>Bookmarks</guimenu> + <guimenuitem>Set Bookmark</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + Sets a bookmark at the current line location in the current file. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + <menuchoice> + <guimenu>Bookmarks</guimenu> + <guimenuitem>Clear All Bookmarks</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + Clears all set bookmarks in the current document. + </para> + </listitem> + </varlistentry> + </variablelist> + <para>If you have bookmarks in the current file, they will appear in the menu together with a <guilabel>Previous</guilabel> or <guilabel>Next</guilabel> item, depending on the position of the cursor in the document.</para> + <para>If you have bookmarks in other opened documents, they will appear in the menu grouped by the file name of the other documents.</para> +</sect1> + + +<sect1 id="project-menu-3-2"> +<title>The <guimenu>Project</guimenu> Menu</title> + +<para> +How to use projects in &quantaplus; is described in <xref +linkend="quanta-projects-3-2"/>. +</para> + +<variablelist> +<varlistentry> +<term> +<menuchoice> +<guimenu>Project</guimenu> +<guimenuitem>New Project...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Launch the project creation wizard. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Project</guimenu> +<guimenuitem>Open Project...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Open an existing project file from disk. &quantaplus; projects are saved +with the .webprj extension. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Project</guimenu> +<guisubmenu>Open Recent Project</guisubmenu> +</menuchoice> +</term> +<listitem> +<para> +Gives you a list of your most recently used projects for quick access. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Project</guimenu> +<guimenuitem>Close Project</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Close the current project. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Project</guimenu> +<guimenuitem>Open Project View...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Open a <quote>View</quote>, a specific combination of open files that you +have previously saved. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Project</guimenu> +<guimenuitem>Save Project View</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Save the current set of open files as a <quote>View</quote>. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Project</guimenu> +<guimenuitem>Save Project View As...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Save the current set of open files as a <quote>View</quote> under another +name. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Project</guimenu> +<guimenuitem>Delete Project View</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Delete a <quote>View</quote>. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Project</guimenu> +<guimenuitem>Insert Files...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Presents a dialog that allows you to select files to add to your current +project. These files will then be copied into the project folder for +editing. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Project</guimenu> +<guimenuitem>Insert Folder...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Insert a folder and all of its contents into the current project. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Project</guimenu> +<guimenuitem>Rescan Project Folder...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Scan the project folder for any new files you may have there. This +allows you to copy graphics into your project folder or a subfolder +thereof and then add them to the project. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycap>F8</keycap> +</shortcut> +<guimenu>Project</guimenu> +<guimenuitem>Upload Project...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Upload the files in your project to the hosting server. The list of +available transports depends on the version of &kde; you are running and +whether or not you've downloaded extra KIO slaves. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Shift;<keycap>F7</keycap></keycombo> +</shortcut> +<guimenu>Project</guimenu> +<guimenuitem>Project Properties</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Settings affecting the way &quantaplus; manages your project. See the +<link linkend="quanta-projects-3-2">&quantaplus; projects</link> section for +details. +</para> +</listitem> +</varlistentry> +</variablelist> +</sect1> + +<sect1 id="toolbars-menu-3-2"> +<title>The <guimenu>Toolbars</guimenu> Menu</title> + +<variablelist> +<varlistentry> +<term> +<menuchoice> +<guimenu>Toolbars</guimenu> +<guisubmenu>Load Toolbars</guisubmenu> +</menuchoice> +</term> +<listitem> + +<variablelist> +<varlistentry> +<term> +<menuchoice> +<guimenu>Toolbars</guimenu> +<guisubmenu>Load Toolbars</guisubmenu> +<guimenuitem>Load Global Toolbar...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Loads a globally defined toolbar. These are kept in <filename +class="directory">$<envar>KDEDIR</envar>/share/apps/quanta/toolbars</filename> +by default. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Toolbars</guimenu> +<guisubmenu>Load Toolbars</guisubmenu> +<guimenuitem>Load Local Toolbar...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para>Loads a locally defined toolbar. These are kept in <filename +class="directory">$<envar>HOME</envar>/.kde/share/apps/quanta/toolbars</filename> +by default. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Toolbars</guimenu> +<guisubmenu>Load Toolbars</guisubmenu> +<guimenuitem>Load Project Toolbar</guimenuitem> +</menuchoice> +</term> +<listitem> +<para>Loads a project toolbar. These are kept in <filename +class="directory"><replaceable>ProjectDir</replaceable>/toolbars</filename> +and are only available in this menu if they have been assigned to this +project. +</para> +</listitem> +</varlistentry> +</variablelist> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Toolbars</guimenu> +<guisubmenu>Save Toolbars</guisubmenu> +</menuchoice> +</term> +<listitem> +<para> +Dialog for saving your toolbars. Allows you to pick the type of toolbar; +Local or Project. +</para> + +<variablelist> +<varlistentry> +<term> +<menuchoice> +<guimenu>Toolbars</guimenu> +<guisubmenu>Save Toolbars</guisubmenu> +<guimenuitem>Save as Local Toolbar...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Save as a local toolbar to +<filename class="directory">$<envar>HOME</envar>/.kde/share/apps/quanta/toolbars</filename> +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Toolbars</guimenu> +<guisubmenu>Save Toolbars</guisubmenu> +<guimenuitem>Save as Project Toolbar...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Save as a project toolbar in +<filename class="directory"><replaceable>ProjectDir</replaceable>/toolbars</filename> +</para> +</listitem> +</varlistentry> +</variablelist> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Toolbars</guimenu> +<guimenuitem>Add User Toolbar...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Brings up a dialog to create a new toolbar. This only creates the name. +Actions must be added from the +<menuchoice> +<guimenu>Settings</guimenu> +<guimenuitem>Configure Actions</guimenuitem> +</menuchoice> +menu item. Toolbars are saved via the +<menuchoice> +<guimenu>Toolbars</guimenu> +<guimenuitem>Save Toolbars</guimenuitem> +</menuchoice> +menu or on close unsaved toolbars will prompt for you to save. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Toolbars</guimenu> +<guimenuitem>Remove User Toolbar...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Remove a toolbar from usage. This does not remove it from the disk. If +you've not saved the toolbar you are removing, you will be prompted to +save it. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Toolbars</guimenu> +<guimenuitem>Rename User Toolbar..</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Allows you to rename a toolbar. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Toolbars</guimenu> +<guimenuitem>Send Toolbar in E-Mail...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +This is a hook to email your custom toolbar to someone (maybe the +&quantaplus; team for inclusion in the next release!) for their use. It +spawns an email window and attaches your toolbar file to it automatically. +</para> +</listitem> +</varlistentry> + +<varlistentry> + <term> + <menuchoice> + <guimenu>Toolbars</guimenu> + <guimenuitem>Send Toolbar in Email...</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + This is allows you to upload a toolbar to the main resource server. See <xref linkend="sharing-resources" />. + </para> + </listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Toolbars</guimenu> +<guimenuitem>Upload Toolbar...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> + This is allows you to upload toolbars to the main server, from where others can download it.See <xref linkend="sharing-resources" />. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term> +<menuchoice> +<guimenu>Toolbars</guimenu> +<guimenuitem>Download Toolbar...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> + This is allows you to download toolbars from the Internet.See <xref linkend="download-resources" />. +</para> +</listitem> +</varlistentry> + +</variablelist> +</sect1> + +<sect1 id="DTD-menu-3-2"> +<sect1info> +<title>The <guimenu>&DTD;</guimenu> Menu</title> +<authorgroup> +<author> +<firstname>Christopher</firstname> +<surname>Hornbaker</surname> +<affiliation> +<address><email>chrishornbaker@earthlink.net</email></address> +</affiliation> +</author> +</authorgroup> +</sect1info> + +<title>The <guimenu>&DTD;</guimenu> Menu</title> + +<variablelist> +<varlistentry> +<term> +<menuchoice> +<guimenu>&DTD;</guimenu> +<guimenuitem>Change the &DTD;...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Pops up a dialog box that allows you to change the current documents &DTD; +</para> +</listitem> +</varlistentry> +<varlistentry> + <term> + <menuchoice> + <guimenu>&DTD;</guimenu> + <guimenuitem>Edit &DTD; Settings...</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + Makes possible to change the &descriptionrc; configuration file for a &DTEP;. + </para> + </listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>&DTD;</guimenu> +<guimenuitem>Load & Convert &DTD;...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Load a &DTD; that you or someone else made and convert it to &quantaplus;' +native description format. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>&DTD;</guimenu> +<guimenuitem>Load &DTD; Entities...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Load/update the entities from a &DTD;. It is useful if you want to update the entities in a &DTEP; without regenerating the whole &DTEP;. +In case the &DTEP; is a global one and you do not have write permission to the global KDE directory, the entity loading will fail. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>&DTD;</guimenu> +<guimenuitem>Load &DTD; Package (&DTEP;)...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Load a your own &DTEP;. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>&DTD;</guimenu> +<guimenuitem>Send &DTD; Package (&DTEP;) in E-Mail...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Send your &DTEP; to a friend via &kmail;. +</para> +</listitem> +</varlistentry> + +<varlistentry> + <term> + <menuchoice> + <guimenu>&DTD;</guimenu> + <guimenuitem>Upload &DTD; Package (&DTEP;)...</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + This is allows you to upload a &DTEP;s. See <xref linkend="sharing-resources" />. + </para> + </listitem> +</varlistentry> +<varlistentry> +<term> +<menuchoice> +<guimenu>&DTD;</guimenu> +<guimenuitem>Download &DTD; Package (&DTEP;)...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> + This is allows you to download &DTEP;s from the Internet. See <xref linkend="download-resources" />. +</para> +</listitem> +</varlistentry> +</variablelist> +</sect1> + +<sect1 id="tags-menu-3-2"> +<title>The <guimenu>Tags</guimenu> Menu</title> + +<para> +This menu contains a list of the elements that are in the currently loaded +toolbars. If you have the Standard (&HTML;) toolbar loaded, the <guimenu> +Tags</guimenu> menu will contain a submenu <guisubmenu>Standard +</guisubmenu> which will contain the list of tags/actions on that toolbar. +</para> + +<variablelist> +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>E</keycap></keycombo> +</shortcut> +<guimenu>Tags</guimenu> +<guimenuitem>Edit Current Tag...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Allows you to access the current markup tag settings dialog if one exists. +This entry is always present, followed by the &DTD; specific submenus. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Tags</guimenu> +<guimenuitem>Select Current Tag Area</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +This highlights the current tag area. The tag area begins where the mouse +cursor is placed. +</para> +</listitem> +</varlistentry> +<varlistentry> + <term> + <menuchoice> + <guimenu>Tags</guimenu> + <guimenuitem>Smart Tag Insertion</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + Activates/deactivates the smart insertion of tags. Currently it works only in (X)HTML DTDs. Smart insertion means that &quantaplus; will refuse to insert a tag using the toolbar if the tag cannot be present in the current location. + </para> + </listitem> +</varlistentry> +</variablelist> +</sect1> + +<sect1 id="plugins-menu-3-2"> +<title>The <guimenu>Plugins</guimenu> Menu</title> + +<variablelist> +<varlistentry> +<term> +<menuchoice> +<guimenu>Plugins</guimenu> +<guimenuitem><replaceable>Plugin</replaceable></guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +The <menuchoice><guimenu>Plugins</guimenu></menuchoice> menu lists the +available plugins under the above menu items. Clicking them will activate +them. Clicking an activated plugin will deactivate it. +</para> +</listitem> +</varlistentry> +</variablelist> +</sect1> + + +<sect1 id="tools-menu-3-2"> +<title>The <guimenu>Tools</guimenu> Menu</title> + +<variablelist> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Tools</guimenu> +<guisubmenu>Highlight Mode</guisubmenu> +</menuchoice> +</term> +<listitem> +<para> +Choose the syntax highlighting mode for the current file. The list of +available highlighting schemes varies depending on your version of &kate;. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Tools</guimenu> +<guisubmenu>End of Line</guisubmenu> +</menuchoice> +</term> +<listitem> +<para> +Select the end of line encoding type. Useful if you have folks using other +&OS; platforms to develop on. Choose from +<guimenuitem>Unix</guimenuitem>, +<guimenuitem>Windows/DOS</guimenuitem> or +<guimenuitem>Macintosh</guimenuitem>. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>I</keycap></keycombo> +</shortcut> +<guimenu>Tools</guimenu> +<guimenuitem>Indent</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Move the selected block of text one tab width to the right. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;&Shift;<keycap>I</keycap></keycombo> +</shortcut> +<guimenu>Tools</guimenu> +<guimenuitem>Unindent</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Move the selected block of text one tab width to the left. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Tools</guimenu> +<guimenuitem>Clean Indentation</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Removes all indentation. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>D</keycap></keycombo> +</shortcut> +<guimenu>Tools</guimenu> +<guimenuitem>Comment</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Comments selected text. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;&Shift;<keycap>D</keycap></keycombo> +</shortcut> +<guimenu>Tools</guimenu> +<guimenuitem>Uncomment</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Uncomments selected text. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Tools</guimenu> +<guimenuitem>Word Wrap Document</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Wrap the text in the current window to a predefined width. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Tools</guimenu> +<guimenuitem>Spelling...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Check the spelling in the current document. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Tools</guimenu> +<guimenuitem>Document Properties</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Edit specific properties of a currently loaded document when using the +<guilabel>&VPL; Editor</guilabel>. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Tools</guimenu> +<guimenuitem>Convert Tag & Attribute Case...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Convert all tags and/or attributes character cases to another. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Alt;&Ctrl;<keycap>T</keycap></keycombo> +</shortcut> +<guimenu>Tools</guimenu> +<guimenuitem>HTML Tidy Syntax Checking</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Checks the syntax of the current document against the selected &DTD; using the external <filename>tidy</filename> application. +</para> +</listitem> +</varlistentry> +</variablelist> +</sect1> + +<sect1 id="window-menu-3-2"> + <title>The <guimenu>Window</guimenu> Menu</title> + <variablelist> + <varlistentry> + <term> + <menuchoice> + <guimenu>Window</guimenu> + <guimenuitem>Close</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + Closes the current tab (document, plugin, preview or documentation). + </para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <menuchoice> + <guimenu>Window</guimenu> + <guimenuitem>Close All</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + Closes all opened tabs. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <menuchoice> + <guimenu>Window</guimenu> + <guimenuitem>MDI Mode</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + On-the-fly switching between different UI modes. Due to some limitations in the KDE libraries, the switching might take time and cause ugly artifacts. The recommended modes to use + are <guilabel>IDEAl Mode</guilabel>, which is the default or + <guilabel>Tab Page Mode</guilabel>, which is the same mode that was present in &quantaplus; 3.2 and earlier versions. + </para> + </listitem> + </varlistentry> + </variablelist> + <para>Furthermore this menu contains an entry for every opened tab. By selecting such an entry, that selected tab will become the active one.</para> +</sect1> + +<sect1 id="settings-menu-3-2"> +<title>The <guimenu>Settings</guimenu> Menu</title> + +<variablelist> + <varlistentry> + <term> + <menuchoice> + <guimenu>Settings</guimenu> + <guimenuitem>Toolbars</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + Show or hide the non-user toolbars. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <menuchoice> + <guimenu>Settings</guimenu> + <guimenuitem>Show/Hide DTD Toolbar</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + Toggle on and off the display of the &DTD; specific toolbar. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + <menuchoice> + <guimenu>Settings</guimenu> + <guimenuitem>Show/Hide Statusbar</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + Toggle on and off the display of the status bar at the bottom of the main + &quantaplus; window. + </para> + </listitem> + </varlistentry> +<varlistentry> +<term> +<menuchoice> +<guimenu>Settings</guimenu> +<guimenuitem>Configure Quanta...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Setup the <link linkend="configure-quanta">behavior</link> of &quantaplus;. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> + <menuchoice> + <guimenu>Settings</guimenu> + <guimenuitem>Configure Preview...</guimenuitem> + </menuchoice> +</term> +<listitem> + <para> + Setup the behavior of the integrated preview. <important><para>The changes made in the dialog have effects on every application using the KHTML part, including the &konqueror; web browser.</para></important> + </para> +</listitem> +</varlistentry> + + +<varlistentry> +<term> +<menuchoice> +<guimenu>Settings</guimenu> +<guimenuitem>Configure Actions...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> + This is where you define the actions for use on toolbars. See <xref linkend="user-actions" />. +</para> +</listitem> +</varlistentry> + +<varlistentry> + <term> + <menuchoice> + <guimenu>Settings</guimenu> + <guimenuitem>Configure Plugins...</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + This is where you can define and modify the plugins. + </para> + </listitem> +</varlistentry> + +<varlistentry> + <term> + <menuchoice> + <guimenu>Settings</guimenu> + <guimenuitem>Configure Editor...</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + Setup the behavior of the editor window. See the documentation on &kate; + for details. + </para> + </listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Settings</guimenu> +<guimenuitem>Configure Toolbars...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Dialog that allows you to add/delete items to/from toolbars and change the +order the icons appear in. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Settings</guimenu> +<guimenuitem>Configure Shortcuts...</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +Allows you to configure the many editor shortcuts available to +&quantaplus;. +</para> +</listitem> +</varlistentry> + +</variablelist> +</sect1> + +<sect1 id="help-menu-3-2"> +<title>The <guimenu>Help</guimenu> Menu</title> + +<para> +&quantaplus; contains a standard &kde; <guimenu>Help</guimenu> menu with +the addition of these items: +</para> + +<variablelist> +<varlistentry> +<term> +<menuchoice> +<shortcut> +<keycombo action="simul">&Ctrl;<keycap>H</keycap></keycombo> +</shortcut> +<guimenu>Help</guimenu> +<guimenuitem>Context Help</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +This should produce help based on the current pointer context. At the time +of this writing this feature is not implemented. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<menuchoice> +<guimenu>Help</guimenu> +<guimenuitem>Make A Donation</guimenuitem> +</menuchoice> +</term> +<listitem> +<para> +&quantaplus; is a high quality product that is freely available, and +freely licensed, but like any open source project, its developers can +always use help. If you would like to support &quantaplus; development in a +financial manner, you can find out how to here. +</para> +</listitem> +</varlistentry> + +</variablelist> + +<para> +The standard &kde; help menu items are as follows: +</para> + +&help.menu.documentation; + +</sect1> +</chapter> diff --git a/doc/quanta/quanta-projects.docbook b/doc/quanta/quanta-projects.docbook new file mode 100644 index 00000000..06814ebb --- /dev/null +++ b/doc/quanta/quanta-projects.docbook @@ -0,0 +1,792 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<sect1 id="quanta-projects-3-2"> +<sect1info> +<title>Projects</title> +<authorgroup> +<author> +<firstname>Robert</firstname> +<surname>Nickel</surname> +<affiliation> +<address><email>robert@artnickel.com</email></address> +</affiliation> +</author> +<author> + <firstname>András</firstname> + <surname>Mantia</surname> + <affiliation> + <address><email>amantia@kde.org</email></address> + </affiliation> +</author> + +<othercredit role="reviewer"> +<firstname>Christopher</firstname> +<surname>Hornbaker</surname> +<affiliation> +<address><email>chrishornbaker@earthlink.net</email></address> +</affiliation> +<contrib>Reviewer</contrib> +</othercredit> + +<othercredit role="reviewer"> +<firstname>Fabrice</firstname> +<surname>Mous</surname> +<affiliation> +<address><email>fabrice@kde.nl</email></address> +</affiliation> +<contrib>Reviewer</contrib> +</othercredit> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> +</sect1info> + +<title>Projects</title> + +<sect2 id="create-new-project-3-2"> +<title>New Projects</title> + +<para> +The &quantaplus; project wizard +(<menuchoice> +<guimenu>Project</guimenu> +<guimenuitem>New Project...</guimenuitem> +</menuchoice>) makes project creation an easy task. +</para> + +<mediaobject> +<imageobject> +<imagedata format="PNG" fileref="project-1.png" /> +</imageobject> +<caption><para>The Project Wizard.</para></caption> +</mediaobject> + +<para> +The fields are pretty straight forward. It is best to fill them in from +top to bottom. Filling in a project name will autocomplete all the +folder structure for the rest of the project. All of the paths and +author information fields can be configured later on clicking +<menuchoice> +<shortcut> +<keycombo action="simul">&Shift;<keycap>F7</keycap></keycombo> +</shortcut> +<guimenu>Project</guimenu> +<guimenuitem>Project Properties</guimenuitem> +</menuchoice>. +</para> + +<variablelist> +<title>General Project Settings</title> +<varlistentry> +<term><guilabel>Name</guilabel></term> +<listitem> +<para> +Here you fill in the name for your project. For example, we will call ours +<quote><literal>foo</literal>.</quote> When you fill in +<guilabel>Name</guilabel>, <guilabel>File</guilabel> is filled out for +you automatically. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guilabel>File</guilabel></term> +<listitem> +<para> +This is the name of the &quantaplus; project file. By default, it is the +name of your project, but in lowercase letters and without spaces. It +uses the extension <literal role="extension">webprj</literal> (⪚ +<filename>foo.webprj</filename>). This file is stored in the root of the +project's Main Folder. +</para> +</listitem> +</varlistentry> +</variablelist> + +<variablelist> +<varlistentry> +<term>Server Settings</term> +<listitem> +<variablelist> +<varlistentry> +<term><guilabel>Protocol</guilabel></term> +<listitem> +<para> +Here you select the protocol you will be using to access you project. If +your project is on the same machine that you are using Quanta Plus on, +then leave the value at Local. The list of protocols shown here is +dependant of your system setup. Available protocols include SSH, FTP, NFS, +SMB, WebDAV, and others. The protocol list is powered by &kde;'s +powerful KIOSlave architecture. This framework allows every &kde; +application to easily access remote information as if it is local to the +machine. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term><guilabel>Host</guilabel></term> +<listitem> +<para> +Here you fill in the server address of the machine you want to access, +unless you are working through the Local protocol. Either a hostname +(hostname.example.com) or an IP address (127.0.0.1) can go here. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term><guilabel>User</guilabel></term> +<listitem> +<para> +User name for logging onto the remote machine. This is case-sensitive. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term><guilabel>Password</guilabel></term> +<listitem> +<para> +Password for logging onto the remote machine. This is case-sensitive. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term><guilabel>Port</guilabel></term> +<listitem> +<para> +Leave this field blank to use the default port for the protocol you are +using. You may need to change this depending on your server's +configuration. +</para> +</listitem> +</varlistentry> +</variablelist> +</listitem> +</varlistentry> +</variablelist> + + +<variablelist> +<varlistentry> +<term>Directory Settings</term> +<listitem> +<variablelist> +<varlistentry> +<term><guilabel>Main directory</guilabel></term> +<listitem> +<para> +This is the root folder where all of the project files and folders +will be stored. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term><guilabel>Templates directory</guilabel></term> +<listitem> +<para> +This is where the templates for this project will be stored. It is a relative path to the project and by default, +it points to +<filename class="directory">templates</filename>. +If you have a common set of files that you use for several +projects, then it may be useful to point this field to it, instead of to +the default. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term><guilabel>Toolbars directory</guilabel></term> +<listitem> +<para> + This is where the toolbars for this project will be stored. It is a relative path to the project and by default, +it points to <filename>toolbars</filename>. +If you have a common set of toolbars +that you use for several projects, it may be useful to point this there +instead of the default. +</para> +</listitem> +</varlistentry> +</variablelist> +</listitem> +</varlistentry> +</variablelist> + + +<variablelist> +<varlistentry> +<term>Project Sources</term> +<listitem> +<variablelist> +<varlistentry> +<term><guilabel>Add local or remote files</guilabel></term> +<listitem> +<para> +This allows you to get files from the local file system. You can choose +multiple files or entire folders. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term><guilabel>Use wget to download files from site</guilabel></term> +<listitem> +<para> +This option is great if you have static web content that you wish to +download and modify. For server side scripting (⪚ &PHP;, Python, +&etc;.) you will have to get the files another way. +</para> +</listitem> +</varlistentry> +</variablelist> +</listitem> +</varlistentry> +</variablelist> + +<variablelist> +<title>Insert Files in Project</title> +<varlistentry> +<term><guilabel>Insert file from</guilabel></term> +<listitem> +<para> +Check this if you wish to include files found in the path of the Main +Folder. Leave unchecked when starting a project from scratch. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term>Filters</term> +<listitem> +<variablelist> +<varlistentry> +<term><guilabel>Insert only markup, script and image files</guilabel></term> +<listitem> +<para> +Choosing this option will only insert markup, script, and image files into +your project. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term><guilabel>Insert files with the following mask</guilabel></term> +<listitem> +<para> +Choosing this option will display all files and folders within the +Main Folder and allow you to be more specific with your choices. +</para> +</listitem> +</varlistentry> +</variablelist> +</listitem> +</varlistentry> +<varlistentry> +<term><guilabel>Included files</guilabel></term> +<listitem> +<para> +This displays a list of the files in the Main Folder. You can choose +the desired files for inclusion, by checking, or exclusion, by unchecking, +in your project. +</para> +</listitem> +</varlistentry> +</variablelist> + +<variablelist> +<title>More Project Settings</title> +<varlistentry> +<term><guilabel>Author</guilabel></term> +<listitem> +<para> +Insert your name (or alias) here. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term><guilabel>Email</guilabel></term> +<listitem> +<para> +The address where you would like email regarding this project to go. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term>Project Defaults</term> +<listitem> +<variablelist> +<varlistentry> +<term><guilabel>Default DTD</guilabel></term> +<listitem> +<para> +Choose the markup language you will be working with the most within this +project. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term><guilabel>Default encoding</guilabel></term> +<listitem> +<para> +Choose the character encoding you wish the files in your project to be +opened and saved with. +</para> +</listitem> +</varlistentry> +</variablelist> +</listitem> +</varlistentry> +<varlistentry> +<term><guilabel>Use preview prefix</guilabel></term> +<listitem> +<para> +Check this to use a prefix for your previews. This allows you to set the +path prefix to something other than your local file system. This is most +useful for pages that contain dynamic content and are dependent on server +processing (like &PHP;, <acronym>JSS</acronym>, Python, &etc;). Simply +type in the first portion of the address as it exists on that server and +the filepath at the end will be complete by &quantaplus;. For example, if +you have the domain <literal>bar.com</literal> and you are editing the +<filename>index.html</filename> page, you could edit it on your remote +machine (<systemitem>foo.bar.com</systemitem>), upload it to the server +and press <keycap>F6</keycap> to see the results from +<systemitem>www.bar.com</systemitem> instead of your local file system. +</para> +<variablelist> +<varlistentry> +<term><guilabel>Prefix</guilabel></term> +<listitem> +<para> +Enter the prefix you wish to use here. +</para> +</listitem> +</varlistentry> +</variablelist> +</listitem> +</varlistentry> +<varlistentry> +<term><guilabel>Insert global templates</guilabel></term> +<listitem> +<para> +This makes a copy of the global templates in your projects folder tree. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term><guilabel>Insert local templates</guilabel></term> +<listitem> +<para> +This makes a copy of the local templates in your projects folder tree. +</para> +</listitem> +</varlistentry> +</variablelist> + +<para> +The last screen of the new project wizard has 3 settings that can make +your life easier. These settings are available for change from the +<menuchoice> +<guimenu>Project</guimenu> +<guimenuitem>Project Properties</guimenuitem> +</menuchoice> +menu tree on the Upload Profiles Tab or with the keyboard shortcut +<keycombo action="simul">&Shift;<keycap>F7</keycap></keycombo>. +</para> + +</sect2> + +<sect2 id="configuring-projects-3-2"> +<title>Configuring Projects</title> +<para> + The project properties dialog looks like: + <mediaobject> + <imageobject> + <imagedata fileref="project-properties.png" format="PNG" /> + </imageobject> + <caption><para>The general options page</para></caption> + </mediaobject> +</para> + +<para> + Some of the items are the same as in the project wizard and are described in <xref linkend="create-new-project-3-2" />. The extra items are described below. +<variablelist> +<title>General Project Settings</title> +<varlistentry> +<term><guilabel>Exclude from project</guilabel></term> +<listitem> +<para> + A list of file names (wildcards can be used) that will be ignored when you do project related operations like <guimenuitem>Rescan Project Folder</guimenuitem>. +</para> +</listitem> +</varlistentry> +<varlistentry> + <term><guilabel>Exclude files listed in .cvsignore</guilabel></term> + <listitem> + <para> + A complementary option to the above one, also files listed in the .cvsignore file will be excluded from the project. + </para> + </listitem> +</varlistentry> +<varlistentry> + <term><guilabel>Default view</guilabel></term> + <listitem> + <para> + The project view that will be loaded when the project is opened. + You can read more about project views in <xref linkend="project-views-3-2" />. + </para> + </listitem> +</varlistentry> +<varlistentry> + <term><guilabel>Debugger</guilabel></term> + <listitem> + <para> + Select the debugger you want to use. Currently only Gubed is support. You can find more information about Gubed at <ulink url="http://gubed.sourceforge.net"></ulink>.The debugger plugin can be configured with the <guilabel>Options</guilabel> button. + read <xref linkend="debugging-3-2" /> to learn more about debugging. + </para> + </listitem> +</varlistentry> +<varlistentry> + <term><guilabel>Default view</guilabel></term> + <listitem> + <para> + The project view that will be loaded when the project is opened. + You can read more about project views in <xref linkend="project-views-3-2" />. + </para> + </listitem> +</varlistentry> +</variablelist> +</para> +<para>On the <guilabel>Upload Profiles</guilabel> page you can configure the upload profiles (see <xref linkend="upload-profiles" />), as well as enable the showing of a treeview with the content of the server for each profile by checking the <guilabel>Show a treeview for each profile</guilabel> checkbox. +</para> +<para> + On the <guilabel>Team Configuration</guilabel> page you can add, edit and remove members of the project as well as define a mailing list. Read <xref linkend="team-members" /> for details. +</para> +<para> + On the <guilabel>Event Configuration</guilabel> page you can <guilabel>Enable the event actions</guilabel>, add, modify and remove these actions. Event actions are executed when some predefined event occurs, like saving a file. See <xref linkend="event-actions" /> for details. +</para> +</sect2> + +<sect2 id="using-projects-3-2"> +<title>Using Projects</title> + +<sect3 id="project-files-3-2"> +<title>Project Files</title> + +<para> +By default &quantaplus; will open the last project accessed when launched. +This behavior is not currently configurable. +</para> + +<para> +To open another project, select <guimenuitem>Open Project...</guimenuitem> from the +<guimenu>Project</guimenu> menu or the <guiicon>Open Project</guiicon> +icon on the toolbar. The open project dialog will pop up and allow you to +choose the project you wish. Projects have a <literal +role="extension">webprj</literal> extension. +</para> + +<para> +When closing &quantaplus;, your project file will be saved automatically. +You will be asked to save any changes before exiting if &quantaplus; +detects any changed files. This same behavior occurs if you load a new +project. +</para> + +</sect3> + +<sect3 id="project-tree-view-3-2"> +<title>The Project Tree View</title> + +<para> +The project tree view gives you uncluttered access to the files in your +project. This is where you manage the files in the current project. +</para> + +<para>For files, a &RMB; click brings up the following menu:</para> + +<mediaobject> +<imageobject> +<imagedata fileref="project-tree-view-file-rmb-menu.png" format="PNG" /> +</imageobject> +</mediaobject> + +<para> +These items are fairly self-explanatory and will be left to the reader +for exploration. +</para> + +<para> +Folders are similar but do not contain the <guimenuitem>Open</guimenuitem> +and <guimenuitem>Open With...</guimenuitem> &RMB; menu items: +</para> + +<mediaobject> +<imageobject> +<imagedata fileref="project-tree-view-dir-rmb-menu.png" format="PNG" /> +</imageobject> +</mediaobject> + +<para> +These items are left to the reader for exploration as well. +</para> + +</sect3> + +<sect3 id="upload-project-3-2"> +<title>Uploading Projects</title> + +<para> +The Upload Project dialog: +</para> + +<mediaobject> +<imageobject> +<imagedata fileref="project-upload-dialog.png" format="PNG" /> +</imageobject> +<caption><para>The Upload Project dialog.</para></caption> +</mediaobject> + +<variablelist> +<varlistentry> +<term><guilabel>Profile name</guilabel></term> +<listitem> +<para> +This is where different <link linkend="upload-profiles">profiles</link> can be chosen. The profile contains +information on where the uploaded files are to be placed. Read <xref linkend="upload-profiles" />. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term><guibutton>New</guibutton></term> +<listitem> +<para> +This button allows you to create new upload profiles. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guibutton>Edit</guibutton></term> +<listitem> +<para> +This allows you to edit the currently selected upload profile. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guibutton>Remove</guibutton></term> +<listitem> +<para> +This allows you to remove the current profile. If only +one profile is available the button is grayed out to prevent its +removal. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guilabel>Keep passwords in memory</guilabel></term> +<listitem> +<para> +The password is stored in memory and is lost as soon as the program is closed. +This option is useful if frequent uploading of files is necessary and you do +not want to use the more insecure <quote>Store password on disc</quote> option. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guibutton>All</guibutton></term> +<listitem> +<para> +Select all files in your project for upload. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guibutton>Modified</guibutton></term> +<listitem> +<para> +Select all modified files for upload. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guibutton>None</guibutton></term> +<listitem> +<para> +Unselects all files in the list. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guibutton>Invert</guibutton></term> +<listitem> +<para> +Selects/Unselects all files in the list. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guibutton>Expand All</guibutton></term> +<listitem> +<para> +Expands all folders. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guibutton>Collapse All</guibutton></term> +<listitem> +<para> +Collaspes all folders. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guibutton>Update All</guibutton></term> +<listitem> +<para> +Refreshes list. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guibutton>Proceed</guibutton></term> +<listitem> +<para> +Start the upload +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guibutton>Cancel</guibutton></term> +<listitem> +<para> +This will abort your transfer in progress or just exit out of the dialog +if you change your mind before starting the upload. +</para> +</listitem> +</varlistentry> + +</variablelist> +</sect3> + +<sect3 id="upload-profiles"> +<title>Upload profiles</title> +<para> +With &quantaplus; you can define multiple upload profiles and, in this +way, upload your project (or parts of your project) to different servers. +When you edit or create a profile you will face the following dialog: +<mediaobject> +<imageobject> +<imagedata fileref="edit-upload-profile.png" format="PNG" /> +</imageobject> +</mediaobject> +</para> +<variablelist> +<varlistentry> +<term><guilabel>Profile name</guilabel></term> +<listitem> +<para>Enter the name you wish to give your profile here.</para> +</listitem> +</varlistentry> +<varlistentry> +<term><guilabel>Host</guilabel></term> +<listitem> +<para> +This is the hostname of the server you are copying the files to. Either a +fully qualified domain name, or an IP address is needed. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guilabel>Protocol</guilabel></term> +<listitem> +<para> +Transfer protocol to use for this upload. Depending on your version of +&kde; this list will vary. At the very least you should be able to choose +from &FTP;, file (&ie; local) and <acronym>NFS</acronym>. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guilabel>Port</guilabel></term> +<listitem> +<para> +Port for the transfer. Usually this will not need to be changed unless your +network administrator is hosting a service on a port other than its well +known port. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guilabel>User</guilabel></term> +<listitem> +<para> +Username to use for authentication. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guilabel>Password</guilabel></term> +<listitem> +<para> +Password to use for authentication. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guilabel>Store password on disc</guilabel></term> +<listitem> +<para> +Depending on your level of paranoia, this is a time saving feature, or a +danger. Use it at your discretion. The password is kept on disk as text in an obscured form, so it's not simple to read it, but anyone with programming knowledge can easily un-obscure it. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guilabel>Path</guilabel></term> +<listitem> +<para> +This is the base path on the remote host that you will be copying files +to. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guilabel>Use as default profile</guilabel></term> +<listitem> +<para> +Allows you to mark the profile currently being viewed as the default. +</para> +</listitem> +</varlistentry> +</variablelist> +</sect3> +</sect2> + +<sect2 id="project-views-3-2"> + <title>Project Views</title> + <para> + A project view is just a set of files and toolbars. You can have multiple views in a project, meaning that by simply changing the view you can load several files and toolbars which will replace the currently opened files and toolbars. + </para> + <para> + Views can be saved, opened, deleted using the <guimenu>Project</guimenu> menu or the <guilabel>Project Toolbar</guilabel>, accessible via <menuchoice><guimenu>Settings</guimenu><guisubmenu>Toolbars</guisubmenu><guimenuitem>Project Toolbar</guimenuitem></menuchoice>. + </para> + <para> + You can have a default view (loaded when the project is opened). See <xref linkend="configuring-projects-3-2" />. + </para> +</sect2> +</sect1> diff --git a/doc/quanta/quantamdi-editor.png b/doc/quanta/quantamdi-editor.png Binary files differnew file mode 100644 index 00000000..c20e92b0 --- /dev/null +++ b/doc/quanta/quantamdi-editor.png diff --git a/doc/quanta/quantamdi-treeview.png b/doc/quanta/quantamdi-treeview.png Binary files differnew file mode 100644 index 00000000..69f0a5c6 --- /dev/null +++ b/doc/quanta/quantamdi-treeview.png diff --git a/doc/quanta/quantamdi.png b/doc/quanta/quantamdi.png Binary files differnew file mode 100644 index 00000000..8c85833f --- /dev/null +++ b/doc/quanta/quantamdi.png diff --git a/doc/quanta/script-action.png b/doc/quanta/script-action.png Binary files differnew file mode 100644 index 00000000..6eaf85a6 --- /dev/null +++ b/doc/quanta/script-action.png diff --git a/doc/quanta/tag-actions.png b/doc/quanta/tag-actions.png Binary files differnew file mode 100644 index 00000000..3f5acd2a --- /dev/null +++ b/doc/quanta/tag-actions.png diff --git a/doc/quanta/tag_misc.png b/doc/quanta/tag_misc.png Binary files differnew file mode 100644 index 00000000..7ae77650 --- /dev/null +++ b/doc/quanta/tag_misc.png diff --git a/doc/quanta/taginputex.png b/doc/quanta/taginputex.png Binary files differnew file mode 100644 index 00000000..f2f8f87e --- /dev/null +++ b/doc/quanta/taginputex.png diff --git a/doc/quanta/team-editing.png b/doc/quanta/team-editing.png Binary files differnew file mode 100644 index 00000000..a81d2041 --- /dev/null +++ b/doc/quanta/team-editing.png diff --git a/doc/quanta/template-rmb.png b/doc/quanta/template-rmb.png Binary files differnew file mode 100644 index 00000000..ffa3b05f --- /dev/null +++ b/doc/quanta/template-rmb.png diff --git a/doc/quanta/text-action.png b/doc/quanta/text-action.png Binary files differnew file mode 100644 index 00000000..9372b95a --- /dev/null +++ b/doc/quanta/text-action.png diff --git a/doc/quanta/toolbars.png b/doc/quanta/toolbars.png Binary files differnew file mode 100644 index 00000000..0027e0fa --- /dev/null +++ b/doc/quanta/toolbars.png diff --git a/doc/quanta/ttab.png b/doc/quanta/ttab.png Binary files differnew file mode 100644 index 00000000..f6d5c08b --- /dev/null +++ b/doc/quanta/ttab.png diff --git a/doc/quanta/view_sidetree.png b/doc/quanta/view_sidetree.png Binary files differnew file mode 100644 index 00000000..ddf73f5f --- /dev/null +++ b/doc/quanta/view_sidetree.png diff --git a/doc/quanta/vplsourceview.png b/doc/quanta/vplsourceview.png Binary files differnew file mode 100644 index 00000000..ba6e3472 --- /dev/null +++ b/doc/quanta/vplsourceview.png diff --git a/doc/quanta/working-with-quanta.docbook b/doc/quanta/working-with-quanta.docbook new file mode 100644 index 00000000..4a0ca0b1 --- /dev/null +++ b/doc/quanta/working-with-quanta.docbook @@ -0,0 +1,650 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<chapter id="using-quanta-3-2"> +<chapterinfo> +<title>Working With...</title> +<authorgroup> +<author> +<firstname>Robert</firstname> +<surname>Nickel</surname> +<affiliation> +<address><email>robert@artnickel.com</email></address> +</affiliation> +</author> +<author> + <firstname>András</firstname> + <surname>Mantia</surname> + <affiliation> + <address><email>amantia@kde.org</email></address> + </affiliation> +</author> + +<othercredit role="reviewer"> +<firstname>Christopher</firstname> +<surname>Hornbaker</surname> +<affiliation> +<address><email>chrishornbaker@earthlink.net</email></address> +</affiliation> +<contrib>Reviewer</contrib> +</othercredit> + +<othercredit role="reviewer"> +<firstname>Fabrice</firstname> +<surname>Mous</surname> +<affiliation> +<address><email>fabrice@kde.nl</email></address> +</affiliation> +<contrib>Reviewer</contrib> +</othercredit> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> +</chapterinfo> + +<title>Working With...</title> + +<para> +This chapter describes the parts of &quantaplus; that you will be +interacting with mostly. These not only make your more productive, but +they also allow you to customize &quantaplus; to your work-flow. +</para> + +<sect1 id="toolbars-howto-3-2"> +<title>Toolbars</title> + +<para> +As previously mentioned, toolbars in &quantaplus; are primarily managed +through the <guimenu>Toolbars</guimenu> menu. Usage and creation are +somewhat different. The creation of toolbars is discussed in a later +section entitled <quote><link linkend="creating-toolbars-3-2">Creating +Toolbars</link>.</quote> +</para> + +<para> +Using toolbars is quite simple. When you click on an icon for a desired +element or action, one of three possibilities occur: the element is +inserted (optionally with a closing element); an element dialog is +activated, allowing you to fill in the attributes in a dialog box; or, +lastly, an action is activated and does something nifty for your current +file or project. If you find yourself doing tedious and redundant typing +for a particular element, that is not in &quantaplus;, then you can add it. +See <xref linkend="dtep-intro-3-2" /> for more information. +</para> + +<para> +Configuring the toolbars and the elements on it can be done either by +using the context menu (right click on a toolbar), where you can +create a <guilabel>New Action</guilabel>, a <guilabel>New Toolbar</guilabel>, you can perform other actions like <guilabel>Remove Toolbar</guilabel>, <guilabel>Rename Toolbar</guilabel> or <guilabel>Configure Toolbars</guilabel>, which will get you the dialog where you can specify which actions should be visible on this or other toolbars. +</para> +<para> + By invoking the context menu on an action (icon) placed to a toolbar, aside of the above actions you will see the <guilabel>Remove Action</guilabel> and <guilabel>Edit Action</guilabel> entries, which speak for themselves. +</para> +<para> + The toolbars and the actions on them can be configured by using the <menuchoice><guimenu>Settings</guimenu><guimenuitem>Configure Toolbars...</guimenuitem></menuchoice> and <menuchoice><guimenu>Settings</guimenu><guimenuitem>Configure Actions..</guimenuitem></menuchoice> menu entries. +</para> +<para> + About the user definable actions you can read in <xref linkend="user-actions" />. +</para> + +<para> +A tag dialog looks just like the following: + +<mediaobject> +<imageobject> +<imagedata fileref="taginputex.png" format="PNG" /> +</imageobject> +<caption><para>An example of a tag dialog.</para></caption> +</mediaobject> +</para> + +<para> +The above image is the dialog for the anchor tag. If you know &HTML;/&XHTML;, +then you should have noticed that all the attributes that you can use, in +an anchor element, are available. Notice the tabs above for +<guilabel>Main</guilabel>, <guilabel>Core and i18n</guilabel>, +<guilabel>Events</guilabel>, and <guilabel>Focus</guilabel>, they hold +all of the other attributes, according to their purpose, available to the +anchor element. All you need do is: fill in the blanks for the attributes +you want in your anchor, omit the attributes you do not want, and click OK. +You now have a well formed anchor set down at the current cursor position. +</para> +</sect1> + +&quanta-projects; + +<sect1 id="templates-3-2"> +<title>Templates</title> + +<para> +Templates are basically skeleton documents, code snippets and files to +link to. &quantaplus; uses templates fundamentally as a standard file +system with enhanced organization and interfacing. You can copy, move or +link any repository currently on your system into the templates tree. +Think of &quantaplus; templates as having roughly the limitations to your +imagination that your file system has. +</para> + +<para> +Templates exist in nested folders. There is no limit to how deep you +can nest them, however, within any given folder &quantaplus; expects a +consistent action for the base template type described below. Additionally +templates allow for pre and post text to be concatenated to non document +type templates. This facilitates tag creation. The next update after the +introduction is scheduled to add the ability to pass variables to the text +such as image size information to assist in tag creation. +</para> + +<para> +Our goal with templates is to extend them to include multi file +<quote>concept</quote> templates useful for things like placing an order or +creating an about section. Ideally this will be a tool for making your +work more productive and dynamic. An eventual goal is to have a structural +template design mode to deal with site layout and structure which you +could use to design and interactively update your sites. If you would like +to be involved, check out our +<ulink url="http://quanta.sourceforge.net/main1.php?contfile=needs">help +wanted</ulink> page. +</para> + +<important> +<para> +Some of the templates that ship with &quantaplus; have conditions for +their usage. Please read carefully the usage statement of conditions at +the top of each template before you use it. +</para> +</important> + +<sect2 id="template-types-3-2"> +<title>Template Types</title> + +<para> +There are various template types supported by &quantaplus;. +These are: +</para> +<para> +<simplelist> +<member>Binary templates</member> +<member>Document templates</member> +<member>Text snippets</member> +<member>Site templates</member> +</simplelist> + +Examples for these types are provided with &quantaplus;. +</para> +<variablelist> +<varlistentry> +<term>Binary templates</term> +<listitem> +<para> +Binaries are anything not identified purely in text. They can be any file, +except text, including images, &PDF;s, flash files, etc. Binary templates +are usually included in your document via links (&ie; images as +an <sgmltag class="starttag">img src=/src/url</sgmltag>). +Some examples can be found in the Templates tree under Global Templates. +Please see <xref linkend="qit-3-2" /> for more information on the +<guilabel>Templates</guilabel> tree. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term>Document templates</term> +<listitem> +<para> +Documents can be any type of text document. You can create new documents +based on these templates. Generally you would want to nest +more specific or diverse documents in subfolders. Here you can make a +basic framework for what you do and deliver it to your work in an +organized fashion and realize much better efficiency. Some examples +can be found in the Templates tree under Global Templates. +Please see <xref linkend="qit-3-2" /> for more information on the +<guilabel>Templates</guilabel> tree. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term>Text snippets</term> +<listitem> +<para> +This type of template is useful when you don't want to create a new +document based on a template, but want to insert the same text area +over and over in your documents. They can contain anything, starting +with a comment and ending with a complete menu handling JavaScript +method or perl script. Some examples can be found in the Templates +tree under Global Templates. +Please see <xref linkend="qit-3-2" /> for more information on the +<guilabel>Templates</guilabel> tree. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term>Site templates</term> +<listitem> +<para> +As the name says these templates are useful to build a whole site +from a template. They are a collection of various documents which +can be organized in a directory structure, everything gathered in +a compressed tar archive. As of writing there are no example site +templates in &quantaplus;. +</para> +</listitem> +</varlistentry> +</variablelist> + +</sect2> + +<sect2 id="template-scope-3-2"> +<title>Template Scopes</title> + +<para> +Templates are accessible based upon their established +<link linkend="quanta-workspaces-3-2">workspace</link> in &quantaplus; +</para> + +</sect2> + +<sect2 id="creating-templates-3-2"> +<title>Creating Templates</title> + +<sect3 id="creating-document-templates"> +<title>Creating document templates</title> +<para> +Create a document structure that you love (&XML;, &HTML;, DocBook, &etc;.) +and click on +<menuchoice> +<guimenu>File</guimenu> +<guimenuitem>Save as Template</guimenuitem> +<guimenuitem>Save as Local/Project Template</guimenuitem> +</menuchoice>. +</para> + +<para> +Once this is done, you will notice that (even if it is saved as a Project +template) the template does <emphasis>not</emphasis> show in the project +tab view. Look into the templates view to find your template under the +Project templates tab. +</para> +</sect3> +<sect3 id="creating-text-templayes"> +<title>Creating text snippets</title> +<para>Select some text in your document and click on +<menuchoice> +<guimenu>File</guimenu> +<guimenuitem>Save as Template</guimenuitem> +<guimenuitem>Save Selection to Local/Project Template file</guimenuitem> +</menuchoice>. +Alternatively you can just use drag and drop to drag the selection to the <guilabel>Templates</guilabel> treeview. +</para> +</sect3> +<sect3 id="creating-binary-templates"> +<title>Creating binary templates</title> +<para>Creation of a binary template is simple: just copy the file +into a template folder. You can use standard file management +functions to do it, like drag and drop or copy and paste from +Konqueror or the <guilabel>Files Tree</guilabel>. +</para> +</sect3> +<sect3 id="creating-site-templates"> +<title>Creating site templates</title> +<para> +In the <guilabel>Files Tree</guilabel> or the <guilabel>Project Files</guilabel> +treeviews right click on a folder and select <guilabel>Create Site Template</guilabel>, +pick up a name for the template and save it. By default it will try +to save to the project template folder, but of course you can choose +to save it as a local or global template as well. +</para> +</sect3> +</sect2> + +<sect2 id="using-templates-with-projects-3-2"> +<title>Using Templates With Projects</title> + +<para> +Project templates allow you to be more tightly focused. You can create +headers, footers or go dynamic with &PHP; include files and link them. +Additionally there are some very cool things we took into consideration +when using templates in projects. +</para> + +<para> +When creating a project you can opt to copy to your local project, all the +existing global and user templates. Legacy project get default templating +abilities so nothing is lost You can choose where to locate your template +files so they can be in your server root and easy to upload or you can +make them secure to link to below server root which is a very cool trick. +When linking to a file not in the project templates you will be prompted +to copy the file to the project templates prior to linking. This will prevent +broken links on upload. You always have control where you place your +templates so you can choose to move them. However &quantaplus; does not +track this so you will need to change links. +</para> + +</sect2> + +<sect2 id="managing-templates-3-2"> +<title>Managing Templates</title> + +<para> +Template structure on the template tab is based on the files found in +<filename class="directory"> +$<envar>KDEDIR</envar>/share/apps/quanta/templates</filename> and +<filename class="directory"> +$<envar>HOME</envar>/.kde/share/apps/quanta/templates</filename>. Each of +these folders is specified as one of four types of container as explained <link linkend="template-types-3-2">above</link>. +</para> + +<para> +To set the behavior of each folder, &RMB; click in the template view on +the folder and choose <guimenuitem>Properties</guimenuitem>. The +following dialog will come up: + +<mediaobject> +<imageobject> +<imagedata fileref="template-rmb.png" format="PNG" /> +</imageobject> +<caption><para>Properties dialog.</para></caption> +</mediaobject> +</para> + +<variablelist> +<varlistentry> +<term><guilabel>Type</guilabel></term> + +<listitem> +<para> +Drop down box with the three types discussed previously; files, text, +template. This box will be grayed out if you have the <guilabel>Inherit +parent attribute box</guilabel> checked. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term><guilabel>Inherit parent attribute</guilabel> (<sgmltag +class="starttag">foo</sgmltag>)</term> +<listitem> +<para> +This is checked by default and is fine for all but the top level +folders in your templates tree. If the top level folder has this +checked, it will basically deactivate templates for that folder and all +that aren't explicitly set below it. If this is not a top level folder, +then the <sgmltag class="starttag">blah</sgmltag> will say something like +<literal>Text snippet</literal>. If it says nothing, then chances are that +you are on a top level folder. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term><guilabel>Use pre/post text</guilabel></term> +<listitem> +<para> +Enables pre and post text for templates in this folder. This could be a +common header/footer for all of your templates for a given project and +then you copy content templates into that folder and have a complete +page with the custom header/footer as a starting point. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term><guilabel>Pre-text</guilabel></term> +<listitem> +<para> +The actual text to insert before your templates content. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term><guilabel>Post-text</guilabel></term> +<listitem> +<para> +The actual text to insert after your templates content. +</para> +</listitem> +</varlistentry> +</variablelist> +<!--<para> +The properties for a template file looks a bit different: +<mediaobject> +<imageobject> +<imagedata fileref="template-file-rmb.png" format="PNG" /> +</imageobject> +<caption><para>Properties dialog.</para></caption> +</mediaobject> + +</para>--> +<para> +Additionally if you look at your options with the &RMB; you will see +complete file management tools for creating folders or copying and +pasting templates from one location to another. +</para> +</sect2> +</sect1> + +<sect1 id="vpl-3-2"> +<sect1info> +<title><application>Visual Page Layout</application></title> +<authorgroup> +<author> +<firstname>Nicolas</firstname> +<surname>Deschildre</surname> +<affiliation> +<address><email>nicolasdchd@ifrance.com</email></address> +</affiliation> +</author> + +<othercredit role="reviewer"> +<firstname>Christopher</firstname> +<surname>Hornbaker</surname> +<affiliation> +<address><email>chrishornbaker@earthlink.net</email></address> +</affiliation> +<contrib>Reviewer</contrib> +</othercredit> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> +</sect1info> + +<title><application>Visual Page Layout</application></title> + +<sect2 id="vpl-views-3-2"> +<title>&VPL; Modes</title> + +<para> +The <application>Visual Page Layout</application> (&VPL;) editor (also known +as <acronym>WYSIWYG</acronym> (What You See Is What You Get)) allows you +to edit a &HTML; or &XHTML; document while seeing the changes on-the-fly. +Just like your favorite wordprocessor, you can click on your document and +a cursor will appear, thus enabling you to enter text, insert images, +apply text decorations, &etc;. &VPL;'s aim is to allow you to create great, +valid web pages without any knowledge of Internet markup languages. +</para> + +<para> +&quantaplus; offers two modes: <guilabel>&VPL; Editor</guilabel> and +<guilabel>&VPL; & Source Editors</guilabel>, which are accessible from +the <guimenu>View</guimenu> menu. The first replaces the <guilabel>Source +Editor</guilabel> with the <guilabel>&VPL; Editor</guilabel>, and the +second splits the editor window into two parts: the <guilabel>Source +Editor</guilabel> and the <guilabel>&VPL; Editor</guilabel>. +</para> + +<para> +The <guilabel>&VPL; Editor</guilabel> works like so: It loads a document +like a normal &HTML; or &XHTML; page and a cursor appears. Then you can +edit it, and switching back to <guilabel>Source Editor</guilabel>, you see +that the changes you made on the <guilabel>&VPL; Editor</guilabel> have +been merged in the <guilabel>Source Editor</guilabel>. +</para> + +<note> +<para> +When working in the <guilabel>&VPL; Editor</guilabel> with a document that +contains &PHP;, you will see a small green icon representing the &PHP; +code. You cannot directly edit it with the <guilabel>&VPL; +Editor</guilabel>. To edit &PHP;, you will still need to use the +<guilabel>Source Editor</guilabel>. There are no plans to change this +functionality. +</para> +</note> + +<para> +The second mode behaves exactly like the first, except that you instantly +see the impact that your changes have made, either in the <guilabel>Source +Editor</guilabel> or in the <guilabel>&VPL; Editor</guilabel>, and the +cursors of the source editor and of the <guilabel>&VPL; Editor</guilabel> +are synchronized. Pressing <keycap>F9</keycap> loads this mode, but, if +it is already loaded, it will move the focus from one view to the other, +while keeping you at the same location of the document. +</para> + +<para> +The refresh intervals between the <guilabel>&VPL; Editor</guilabel> and +the <guilabel>Source Editor</guilabel> are configurable. Go to +<menuchoice> +<guimenu>Settings</guimenu> +<guimenuitem>Configure Quanta...</guimenuitem> +</menuchoice>. Select the <guimenu>&VPL; View</guimenu> tab. You can +choose whether you want to refresh a view only when you click on it or +automatically. If you choose automatically, then you can choose a refresh +interval. The general recommendation is: A smaller number for fast +computers and a bigger number for slower ones. +</para> + +<mediaobject> +<imageobject> +<imagedata fileref="vplsourceview.png" format="PNG" /> +</imageobject> +<caption><para>The <guilabel>&VPL; & Source Editors</guilabel> mode.</para></caption> +</mediaobject> +</sect2> + +<sect2 id="vpl-editing-3-2"> +<title>&VPL; Editing</title> + +<sect3 id="doc-prop-dia-3-2"> +<title>The <guilabel>Document Properties</guilabel> Dialog</title> + +<para> +Now, let's say you want to edit the title of your web page. How do you do +it? Simply launch +<menuchoice> +<guimenu>Tools</guimenu> +<guimenuitem>Document Properties</guimenuitem> +</menuchoice>. This tool allows editing of <quote>invisible</quote> +tags when using the <guilabel>&VPL; Editor</guilabel>. The +<guilabel>Document Properties</guilabel> dialog is also launched when you +create a new document while in the <guilabel>&VPL; Editor</guilabel>. This +is in order to lessen the amount of hand coding you need to perform. With +it, you can edit: +</para> + +<variablelist> +<varlistentry> +<term><guilabel>Title</guilabel></term> +<listitem> +<para> +The title of the document. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term><guilabel>Meta items</guilabel></term> +<listitem> +<para> +Meta tags allow you to store information about the document itself +⪚ keywords for the Internet search engines. You can add or remove +<guilabel>Meta items</guilabel> by pressing the two buttons below, +and edit them by clicking on the list ⪚ put <quote>keywords</quote> on +the <quote>name</quote> column and <quote>keyword1 keyword2</quote> on the +<quote>content</quote> column. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term><guilabel>CSS Rules</guilabel></term> +<listitem> +<para> +<guilabel>CSS Rules</guilabel> are the new way to tell your web browser +how to present the page. You can add or delete the <guilabel>CSS +Rules</guilabel> by pressing the buttons below. You can also fill the +fields like the <guilabel>Meta items</guilabel>. The editing of +<guilabel>CSS Rules</guilabel> is not yet supported. +</para> +</listitem> +</varlistentry> +<varlistentry> +<term><guilabel>Link CSS Stylesheet</guilabel></term> +<listitem> +<para> +You can also link an external CSS stylesheet. Simply click on the +<guilabel>Browse</guilabel> button and select your file. +</para> +</listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3 id="vpl-editor-3-2"> +<title>The <guilabel>&VPL; Editor</guilabel></title> + +<para> +You can use your cursor like you do in a wordprocessor, moving with the +arrows. There may come a time when the cursor does not want to go where you +want it to go (a pesky bug). Selection also works as usual. You can insert +text by typing and remove text by pressing the &Backspace; or Delete key. +</para> + +<para> +Now we come to tag insertion. You can insert images, applets, text +decorations such as bold and so on by using the same toolbars you use in +the source editor. Note that the insertion of tags does not remove previous +identical tags ⪚ if you insert an anchor tag around some text, then you +must remove any other anchor tag around it. +</para> + +<note> +<para> +Some toolbar items will be disabled, such as the <guilabel>Table +Wizard</guilabel> or <guilabel>Quick List Wizard</guilabel>. They will +work later in &VPL;, but, for this release, you should use the +<guilabel>Tables</guilabel> or <guilabel>Lists</guilabel> toolbars. +</para> +</note> + +<para> +To edit a tag (be it an image, an applet, or whatever), switch to the +<guilabel>Attribute Tree</guilabel>, accessible via +<menuchoice> +<guimenu>View</guimenu> +<guisubmenu>Tool views</guisubmenu> +</menuchoice>. Click on the tag you wish to edit, or, if you cannot access +it, click on an object contained by it. The <guilabel>Attribute +Tree</guilabel> will show the current tag name as well as a list of all its +parents and attributes. Currently &VPL; does not support, say, +&XHTML;+<acronym>MathML</acronym>, but you will see that you can edit +namespaces via this view. You can simply click on the +<guilabel>Value</guilabel> field and modify whatever you want. If you want +to access a parent of the current tag, then select it and the +<guilabel>Attribute Tree</guilabel> will load it. +</para> + +<para> +To delete a tag, we will use the <guilabel>Attribute Tree</guilabel>. Have +you noticed the two little red crosses at the top-right corner? The first one +deletes only the currently selected tag and, if the &HTML;/&XHTML; +specification does not allow some children of the deleted tag to be children of +the parent tag of the tag set to be deleted, then they are also deleted, +and so on. The second cross will delete the selected tag as well as all of +its children, so be careful! +</para> + +</sect3> +</sect2> +</sect1> +</chapter> diff --git a/doc/xsldbg/Makefile.am b/doc/xsldbg/Makefile.am new file mode 100644 index 00000000..41691557 --- /dev/null +++ b/doc/xsldbg/Makefile.am @@ -0,0 +1,3 @@ +KDE_LANG = en +KDE_DOCS = AUTO + diff --git a/doc/xsldbg/commands.docbook b/doc/xsldbg/commands.docbook new file mode 100644 index 00000000..0c1e6735 --- /dev/null +++ b/doc/xsldbg/commands.docbook @@ -0,0 +1,801 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<chapter id="commands"> +<title>Command Reference</title> + +<sect1 id="addparam_cmd"><title id="addparam_cmd.title">Addparam</title> +<para>Add a libxslt parameter ; equivalent to providing --param <QNAME>:<XPATH> via command line. +</para> +<para></para> +<table><title>Addparam usage</title> +<tgroup cols="1"><tbody> +<row><entry>addparam <QNAME> <XPATH> <emphasis>(The <XPATH> must not contain any spaces nor double quotation marks.) </emphasis></entry></row> +<row><entry>addparam <QNAME> "<XPATH>" <emphasis>(Must not contain double quotation marks in <XPATH>)</emphasis></entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="addwatch_cmd"><title id="addwatch_cmd.title">Addwatch</title> +<para>Add an expression to be watched. See showwatch for display watch values</para> +<para>Shortcut name: watch</para> +<table><title>Addwatch usage</title> +<tgroup cols="1"><tbody> +<row><entry>addwatch <XPATH></entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="base_cmd"><title id="base_cmd.title">Base</title> +<para>Print the base for this node</para> +<table><title>Base usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>base</entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="break_cmd"><title id="break_cmd.title">Break</title> +<para>Break at a template, at a location in a stylesheet or xml file loaded by xsldbg, or at the current node. +New for xsldbg 3.1.4: When in gdb compatabilty mode orpaned breakpoints can be +set at a specific file and line number and be resolved to an active later on. </para> +<para>Shortcut name: b</para><para>xsldbg will try to guess the complete URL given a +<informaltable> +<tgroup cols="1"><tbody> +<row><entry>file name without a path specified.</entry></row> +<row><entry>a file name in the same directory as the "top" stylesheet loaded</entry></row> +<row><entry>a file name relative to the current working directory of xsldbg</entry></row> +</tbody></tgroup> +</informaltable> +Ie if you have loaded a stylesheet file of ../en/xsldoc.xsl you can do this +</para><para> break -l xsldoc.xsl 26 +</para><para>This command will match a partial or complete QNAME template and or mode name provided. Eg "template" will ma/tch any QNAME with a local part of "template" +</para><para>Any name spaces in the provided QNAME will be expanded as specified +by the names spaces defined in the XSL SOURCE file. eg "xsl:test1" will be expanded to "http://www.w3.org/199/XSL/Transform:test1" +</para><para>A requested breakpoint may need to be resolved to its associated URL and line number. This is done automaticly after +the first template has been seen by xsldbg. Breakpoints are re-validated shortly after the start of each run. +</para><para>Automatic breakpoint validation is used when gdb mode is enabled - the default behaviour of xsldbg</para> +<table><title>Break usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>break -l <FILENAME> <LINENO> <emphasis>(To set breakpoint at specified file, line number)</emphasis></entry></row> +<row><entry>break -l <URI> <LINENO> <emphasis>(To set breakpoint at specified URI, line number)</emphasis></entry></row> +<row><entry>break <TEMPLATE_NAME> <emphasis>(To break at named or matched template.)</emphasis></entry></row> +<row><entry>break <TEMPLATE_NAME> <MODE_NAME> <emphasis>(To break at named template with given mode.)></emphasis></entry></row> +<row><entry>break "" <MODE_NAME> <emphasis>(To break at any template that has a given mode name)</emphasis></entry></row> +<row><entry>break * <emphasis>(To break at any template found.)</emphasis></entry></row> +<row><entry>break \* <emphasis>(To break at the "*" template. Other name that include '*' will not be treated specialy.)</emphasis></entry></row> +<row><entry>break <emphasis>(To break point at current node. Yes that includes xml data nodes!)</emphasis></entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="bye_cmd"><title id="bye_cmd.title">Bye</title> +<para>Exit processing stylesheet as soon as possible.</para> +<table><title>Bye usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>bye</entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="cat_cmd"><title id="cat_cmd.title">Cat</title> +<para>Print the result of a xpath expression on relative current node.</para> +<table><title>Cat usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>Usage : cat <XPATH> <emphasis>(To view a variable or parameter)</emphasis></entry></row> +<row><entry>Usage : cat $<QNAME></entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="cd_cmd"><title id="cd_cmd.title">Cd</title> +<para>Change to the path specified by a xpath.</para> +<table><title>Cd usage</title> +<tgroup cols="1"> +<tbody> +<row><entry><< = preceding-sibling::node()</entry></row> +<row><entry>>> = following-sibling::node()</entry></row> +<row><entry><- = ancestor::node()</entry></row> +<row><entry>-> = decendant::node()</entry></row> +</tbody></tgroup> +</table> +</sect1> + +<sect1 id="chdir_cmd"><title id="chdir_cmd.title">Chdir</title> +<para>Change the working directory</para> +<table><title>Chdir usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>chdir <PATH> <emphasis>(A relative or absolute path for operating system)</emphasis></entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="continue_cmd"><title id="continue_cmd.title">Continue</title> +<para>Continue running stylesheet, stopping at any break points found.</para> +<para>Shortcut name: c</para> +<table><title>Contine usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>continue</entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="data_cmd"><title id="data_cmd.title">Data</title> +<para>Switch to displaying the current node in xml data. Or change xml data used</para> +<table><title>Data usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>data <emphasis>(Switch to the current document node.)</emphasis></entry></row> +<row><entry>data <DATA> <emphasis>(To change to a new xml data file. A leading "~" is replaced by the $HOME environment variable value. Will need to use "run" command to process it)</emphasis></entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="delete_cmd"><title id="delete_cmd.title">Delete</title> +<para>Delete a template breakpoint</para> +<para>Shortcut name: d</para> +<table><title>Delete usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>delete <emphasis>(To delete breakpoint at current node)</emphasis></entry></row> +<row><entry>delete <BREAKPOINT_ID> <emphasis>(To delete breakpoint at specified break point number)</emphasis></entry></row> +<row><entry>delete -l <FILENAME> <LINENO> <emphasis>(Delete at specifed file, line number)</emphasis></entry></row> +<row><entry>delete -l <URI> <LINENO> <emphasis>(Delete at specifed URI, line number)</emphasis></entry></row> +<row><entry>delete <TEMMPLATENAME> <emphasis>(To delete break point at named template.)</emphasis></entry></row> +<row><entry>delete * <emphasis>(To delete all break points.)</emphasis></entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="delparam_cmd"><title id="delparam_cmd.title">Delparam</title> +<para>Delete a libxslt parameter</para> +<table><title>Delparam usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>delparam <emphasis>(Delete all parameters present)</emphasis></entry></row> +<row><entry>delparam <PARAM_ID></entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="delwatch_cmd"><title id="delwatch_cmd.title">Delwatch</title> +<para>Delete a watch expression or remove all watch expressions as displayed by "showwatch." command</para> +<table><title>Delwatch usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>delwatch <WATCHID> <emphasis>(Delete a watch expression with given ID)</emphasis></entry></row> +<row><entry>delwatch * <emphasis>(Delete all watch expressions)</emphasis></entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="dir_cmd"><title id="dir_cmd.title">Dir</title> +<para>Print list of nodes in a similary way to the dir shell command.</para> +<para/> +<table><title>Dir usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>dir</entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="disable_cmd"><title id="disable_cmd.title">Disable</title> +<para>Disable a breakpoint</para> +<table><title>Disable usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>disable <emphasis>(To disable breakpoint at current node)</emphasis></entry></row> +<row><entry>disable <BREAKPOINT_ID> <emphasis>(To disable breakpoint at specified break point number</emphasis></entry></row> +<row><entry>disable -l <FILENAME> <LINENO> <emphasis>(Disable breakpoint at specifed file, line number)</emphasis></entry></row> +<row><entry>disable -l <URI> <LINENO> <emphasis>(Disable breakpoint at specifed URI, line number)</emphasis></entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="du_cmd"><title id="du_cmd.title">Du</title> +<para>Print a summary of child nodes in a tree format.</para> +<table><title>Du usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>du</entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="dump_cmd"><title id="dump_cmd.title">Dump</title> +<para>Dump the gory details of this node</para> +<table><title>Dump usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>dump</entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="enable_cmd"><title id="enable_cmd.title">Enable</title> +<para>Enable or disable a breakpoint (Toggle enable/disable/)</para> +<para>Shortcut name: e</para> +<table><title>Enable usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>enable <emphasis>(To enable/disable breakpoint at current node)</emphasis></entry></row> +<row><entry>enable <BREAKPOINT_ID> <emphasis>(To enable/disable breakpoint at specified break point number</emphasis></entry></row> +<row><entry>enable -l <FILENAME> <LINENO> <emphasis>(Enable/disable breakpoint at specifed file, line number)</emphasis></entry></row> +<row><entry>enable -l <URI> <LINENO> <emphasis>(Enable/disable breakpoint at specifed URI, line number)</emphasis></entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="entities_cmd"><title id="entities_cmd.title">Entities</title> +<para>Print list of external General Parsed entities used data file (document)</para> +<para>Shortcut name : ent</para> +<table><title>Entities usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>entities</entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="exit_cmd"><title id="exit_cmd.title">Exit</title> +<para>Exit processing stylesheet as soon as possible.</para> +<table><title>Exit usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>exit</entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="frame_cmd"><title id="frame_cmd.title">Frame</title> +<para>Print the stack frame at a given depth</para> +<para>Shortcut name: f</para> +<table><title>Frame usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>frame <FRAME_DEPTH> <emphasis>(Depth is a number from 0 to the current depth of call stack)</emphasis></entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="free_cmd"><title id="free_cmd.title">Free</title> +<para>Free stylesheet and data (Disabled see run)</para> +<table><title>Free usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>free</entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="globals_cmd"><title id="globals_cmd.title">Globals</title> +<para>Print a list of global stylesheet variables or parameters. Print the value of a global variable</para> +<table><title>Globals usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>globals <emphasis>(Print list of all globaly available variables)</emphasis></entry></row> +<row><entry>globals -f <emphasis>(Print list of all globaly available variables and thier values)</emphasis></entry></row> +<row><entry>globals <QNAME> <emphasis>(Print the value of variable specified)</emphasis></entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="help_cmd"><title id="help_cmd.title">Help</title> +<para>Display help on command or overiew</para> +<para>Shortcut name: h</para> +<table><title>Help usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>help <emphasis>(Show overview of product)</emphasis></entry></row> +<row><entry>help <COMMAND> <emphasis>(Show help about a command)</emphasis></entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="load_cmd"><title id="load_cmd.title">Load</title> +<para>Load the xsldbg's options and user preferences from disk</para> +<table><title>Load usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>load</entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="locals_cmd"><title id="locals_cmd.title">Locals</title> +<para>Print a list of local stylesheet variables or parameters. Print the value of a local variable</para> +<table><title>Locals usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>locals <emphasis>(Print list of all locally available variables)</emphasis></entry></row> +<row><entry>locals -f <emphasis>(Print list of all locally available variables and thier values)</emphasis></entry></row> +<row><entry>locals <QNAME> <emphasis>(Print the value of variable specified)</emphasis></entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="ls_cmd"><title id="ls_cmd.title">Ls</title> +<para>List nodes in a brief format</para> +<table><title>Ls usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>ls</entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="next_cmd"><title id="next_cmd.title">Next</title> +<para>Skip over an xsl:call-template or xsl:apply-templates. +This command has the same effect of entering the commands "step" and then "up"</para> +<para>Shortcut name: n</para> +<table><title>Next usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>next <emphasis>(proceed to next sibling instruction)</emphasis></entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="options_cmd"><title id="options_cmd.title">Options</title> +<para>Print the values for xsldbg's option</para> +<table><title>Options usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>options</entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="output_cmd"><title id="output_cmd.title">Output</title> +<para>Specify a local, writable file to be used for output of results</para> +<para>Shortcut name : o</para> +<table><title>Output usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>output <FILENAME> <emphasis>(A local writable file name. Which can have a "~" prefix on *nix and CYGWIN platforms. Or environment variables under RISC OS)</emphasis></entry></row> +<row><entry>output <URI> <emphasis>(The <URI> must only use the "file://" protocol. This is then converted to a file name suitable for the operating system)</emphasis></entry></row> +<row><entry>output - <emphasis>( Send to standard output. Must only be used when using xsldbg's command line prompt )</emphasis></entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="public_cmd"><title id="public_cmd.title">Public</title> +<para>Print the value that a public ID maps via the current catalog</para> +<para>Shortcut name : pub</para> +<table><title>Public usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>public "<PublicID>"</entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="pwd_cmd"><title id="pwd_cmd.title">Pwd</title> +<para>Print the current working directory.</para> +<table><title>Pwd usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>pwd</entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="quit_cmd"><title id="quit_cmd.title">Quit</title> +<para>Exit processing stylesheet as soon as possible.</para> +<para>Shortcut name: q</para> +<table><title>Quit usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>quit</entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="run_cmd"><title id="run_cmd.title">Run</title> +<para>Restart the stylesheet.</para> +<para>Shortcut name: r</para> +<table><title>Run usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>run</entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="save_cmd"><title id="save_cmd.title">Save</title> +<para>Save the xsldbg's options and user preferences to disk</para> +<table><title>Save usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>save</entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="search_cmd"><title id="search_cmd.title">Search</title> +<para>Search a dataBase of all information gathered from stylesheets loaded</para> +<para>All output files are stored in, value of the "searchresultspath" option if set, or the same directory as the provided stylesheet. searchresults.xml is normally transformed by search.xsl, but will be transformed using searchhtml.xsl if the "prefrehtml" option is set. +</para><para>When the search command is issued a xml file (searchresults.xml) will be created. You can then process this file with your own stylesheet to present data in a other ways. If "preferhtml" option is not set +then searchresult.txt is printed to display. +</para><para>Depending on the amount of data collected it might take a while to complete this command. +</para> +<table><title>Search usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>search <XPATH> <emphasis>(See what xpath can be used see search.dtd. The deafault <XPATH> is '//search/*' )</emphasis></entry></row> +<row><entry>search -sort <XPATH> <emphasis>(Tell search.xsl to sort the result before outputing it)</emphasis></entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="set_cmd"><title id="set_cmd.title">Set</title> +<para>Set the value of a variable</para> +<table><title>Set usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>set <VARIABLE_NAME> <XPATH></entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="setoption_cmd"><title id="setoption_cmd.title">Setoption</title> +<para>Set an option for execution of stylesheet</para> +<para>You will need to use run command to active changes</para> +<table><title>Setoption usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>setoption <OPTION_NAME> <INTEGER_VALUE></entry></row> +<row><entry>Where <OPTION_NAME> can be either</entry></row> +<row><entry> + <para> + <informaltable> + <tgroup cols="1"><tbody> + <row><entry>debug <emphasis>(If <INTEGER_VALUE> is true dump the tree of the result instead)</emphasis></entry></row> + <row><entry>catalogs <emphasis>(If <INTEGER_VALUE> is true use the catalogs from $SGML_CATALOG_FILES or SGML$CatalogFiles for risc operating system)</emphasis></entry></row> + <row><entry>html <emphasis>(If <INTEGER_VALUE> is true the input document is an HTML file)</emphasis></entry></row> + <row><entry>docbook <emphasis>(If <INTEGER_VALUE> is true and docbook is still supported by libxml the input document is SGML docbook)</emphasis></entry></row> + <row><entry>xinclude <emphasis>(If <INTEGER_VALUE> is true do XInclude processing on document intput)</emphasis></entry></row> + <row><entry>preferhtml <emphasis>(If <INTEGER_VALUE> is true the prefer html output for search results. : See search command)</emphasis></entry></row> + <row><entry>autoencode <emphasis>(If <INTEGER_VALUE> is true try to use the encoding from the stylesheet)</emphasis></entry></row> + <row><entry>utf8input <emphasis>(If <INTEGER_VALUE> is true All input from user is in UTF-8.This is normaly used when xsldbg is running as a thread)</emphasis></entry></row> + <row><entry> <emphasis></emphasis></entry></row> + <row><entry>gdb <emphasis>(Run in gdb compatability mode)</emphasis> + <para> + <informaltable> + <tgroup cols="1"><tbody> + <row><entry>For a value of 1 this means + <para> + <informaltable> + <tgroup cols="1"><tbody> + <row><entry>Print lots more messages. Increase the frequency of printing "Breapoint at ..."</entry></row> + <row><entry>At most GDB_LINES_TO_PRINT lines will be printed when evalating expressions, followed by a "...". See options.h to change this value, the default is three lines of text</entry></row> + <row><entry>Both local and globals will be printed when the "locals" command is issued </entry></row> + <row><entry>When printing expresssions with cat/print. The evaluated value will be prefixed by "= " < EXPRESSION ></entry></row> + </tbody></tgroup> + </informaltable> + </para> + </entry></row> + <row><entry/></row> + <row><entry>For a value of 2 this means + <para> + <informaltable> + <tgroup cols="1"><tbody> + <row><entry>Print messages needed by KDbg as well as the output state above (when value is 1) </entry></row> + </tbody></tgroup> + </informaltable> + </para> + </entry></row> + </tbody></tgroup> + </informaltable> + </para> + </entry></row> + <row><entry>nonet <emphasis>(If <INTEGER_VALUE> is true refuse to fetch DTDs or entities over network)</emphasis></entry></row> + <row><entry>novalid <emphasis>(If <INTEGER_VALUE> is true skip the DTD loading phase)</emphasis></entry></row> + <row><entry>repeat <emphasis>(If <INTEGER_VALUE> is true run the transformation 20 times)</emphasis></entry></row> + <row><entry>profile <emphasis>(If <INTEGER_VALUE> is true dump profiling informations)</emphasis></entry></row> + <row><entry>timing <emphasis>(If <INTEGER_VALUE> is true display the time used)</emphasis></entry></row> + <row><entry>noout <emphasis>(If <INTEGER_VALUE> is true do not dump the result)</emphasis></entry></row> + </tbody></tgroup> + </informaltable> + </para> +</entry></row> +<row><entry>Where value is true if it is NOT equal to zero</entry></row> +<row><entry>Where value is false if it IS equal to zero</entry></row> +<row><entry>stdout <emphasis>Print all error messages to stdout. Normally error messages go to stderr.</emphasis></entry></row> +<row><entry>setoption <OPTION_NAME> "<STRING_VALUE>" <emphasis>(Must not contain double quotation marks in <STRING_VALUE>)</emphasis></entry></row> +<row><entry>setoption <OPTION_NAME> <STRING_VALUE> <emphasis>(Must not contain any spaces, nor double quotation marks in <STRING_VALUE>)</emphasis></entry></row> +<row><entry>Where <OPTION_NAME> can be either</entry></row> +<row><entry> + <para> + <informaltable> + <tgroup cols="1"><tbody> + <row><entry>data <emphasis>(Data file's URI)</emphasis></entry></row> + <row><entry>source <emphasis>(Source file's URI)</emphasis></entry></row> + <row><entry>output <emphasis>(Output file's SystemID )</emphasis></entry></row> + <row><entry>docspath <emphasis>(Path to use when looking for documentation)</emphasis></entry></row> + <row><entry>catalognames <emphasis>(The names of the catalogs to use when the catalogs option is set. Value will be lost if set before setting catalogs option)</emphasis></entry></row> + <row><entry>encoding <emphasis>(What encoding to use for standard output)</emphasis></entry></row> + <row><entry>searchresultspath <emphasis>What path is to be used when storing the results of searching. If this is not set then xsldbg will use the path of the stylesheet</emphasis></entry></row> + </tbody></tgroup> + </informaltable> + </para> +</entry></row></tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="shell_cmd"><title id="shell_cmd.title">Shell</title> +<para>Execute shell command</para> +<table><title>Shell usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>shell <TEXT> <emphasis>(<TEXT> is the text to be passed to operating system for execution)</emphasis></entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="showbreak_cmd"><title id="showbreak_cmd.title">Showbreak</title> +<para>To display list of template break points.</para> +<para>Shortcut name: show</para><para>If a mode exists on a template breakpoint then it will + be appended to the end of template name for breakpoint. An example of the output is : +<informaltable> +<tgroup cols="1"><tbody> +<row><entry> Breakpoint 3 enabled for template :"*" in file test1.xsl : line 105</entry></row> +<row><entry> Breakpoint 2 enabled for template :"* testMode" in file test1.xsl : line 109</entry></row> +<row><entry> Breakpoint 1 enabled for template :"* http://www.w3.org/1999/XSL/Transform:testMode" in file test1.xsl : line 113</entry></row> +<row><entry/></row> +<row><entry> Total of 3 breakpoints present</entry></row> +</tbody></tgroup></informaltable></para> +<table><title>Showbreak usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>showbreak</entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="showparam_cmd"><title id="showparam_cmd.title">Showparam</title> +<para>Print the libxslt parameters present</para> +<table><title>Showparam usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>showparam</entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="showwatch_cmd"><title id="showwatch_cmd.title">Showwatch</title> +<para>Show the current expression being watched</para> +<para>Shortcut name: watches</para> +<table><title>Showwatch usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>showwatch <emphasis>(Show the currently selected watches and thier values)</emphasis></entry></row> +<row><entry>showwatch 1 <emphasis>(Enable the automatic printing of watch expressions. This is used by default.)</emphasis></entry></row> +<row><entry>showwatch 0 <emphasis>(Disable the automatic printing of watch expressions.)</emphasis></entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="source_cmd"><title id="source_cmd.title">Source</title> +<para>Switch to displaying the current node in stylesheet. Or change stylesheet used</para> +<table><title>Source usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>source <emphasis>(Switch to the current node in stylesheet.)</emphasis></entry></row> +<row><entry>source <SOURCE> <emphasis>(To change to a new source file. A leading "~" is replaced by the $HOME environment variable value. Will need to use "run" command to execute it)</emphasis></entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="step_cmd"><title id="step_cmd.title">Step</title> +<para>Step until next stylesheet instruction.</para> +<para>Shortcut name: s</para> +<table><title>Step usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>step</entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="stepdown_cmd"><title id="stepdown_cmd.title">Stepdown</title> +<para>Step down to a newer "call frame". </para> +<para>Shortcut name: down</para> +<table><title>Stepdown usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>stepdown <emphasis>(step down one frame)</emphasis></entry></row> +<row><entry>stepdown <NUMBER_OF_FRAMES> <emphasis>(step down specified number of frames)</emphasis></entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="stepup_cmd"><title id="stepup_cmd.title">Stepup</title> +<para>Step up to a older "call frame". </para> +<para>Shortcut name: up</para><para>This is not an accurate command, xsldbg will stop as close as it can. </para> +<table><title>Stepup usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>stepup <emphasis>(step up one frame)</emphasis></entry></row> +<row><entry>stepup <NUMBER_OF_FRAMES> <emphasis>(step up specified number of frames)</emphasis></entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="stylesheets_cmd"><title id="stylesheets_cmd.title">Stylesheets</title> +<para>Print out a list of stylesheets loaded</para> +<para>Shortcut name: style</para> +<table><title>Stylesheets usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>stylesheets</entry></row> +</tbody> +</tgroup> +</table> +</sect1> + + +<sect1 id="system_cmd"><title id="system_cmd.title">System</title> +<para>Print the value that a system file maps via the current catalog</para> +<para>Shortcut name : sys</para> +<table><title>System usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>system "<SystemID>"</entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="templates_cmd"><title id="templates_cmd.title">Templates</title> +<para>Print a list of available templates. Search for a template</para> +<para>Shortcut name: t</para> +<table><title>Templates usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>templates</entry></row> +<row><entry>templates <TEMPLATE> <emphasis>(Print details of template named <TEMPLATE> if it can be found)</emphasis></entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="trace_cmd"><title id="trace_cmd.title">Trace</title> +<para>Trace one execution of the stylesheet printing the file and lines of +intermediate steps</para> +<table><title>Trace usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>trace</entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="tty_cmd"><title id="tty_cmd.title">Tty</title> +<para>Open a terminal. Set the level of tty redirection.</para> +<table><title>Tty usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>tty <DEVICE_PATH> <emphasis>(Where <DEVICE_PATH> is a valid terminal on the operating system. Just tries to open the terminal</emphasis></entry></row> +<row><entry>tty <TTY_LEVEL> <emphasis>(Set the level of tty redirection, where <TTY_LEVEL> is a valid level of input/output to use)</emphasis> +<para> + <informaltable> + <tgroup cols="1"><tbody> + <row><entry>Where level is </entry></row> + <row><entry>0 = Default input/output </entry></row> + <row><entry>1 = Terminal output of results of transformation, tracing and walking <emphasis>(Default state when tty device has been opened. Not fully implemented yet.)</emphasis></entry></row> + <row><entry>2 = Full redirection to terminal <emphasis>(Not implemented yet.)</emphasis></entry></row> + <row><entry>All other integer values are assumed to mean level 0 + </entry></row> + </tbody> + </tgroup> + </informaltable> +</para> +</entry></row></tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="validate_cmd"><title id="validate_cmd.title">Validate</title> +<para>Validate the output file generated by stylesheet (Disabled)</para> +<table><title>Validate usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>validate</entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="walk_cmd"><title id="walk_cmd.title">Walk</title> +<para>Walk through code using a range of speeds</para> +<table><title>Walk usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>walk <SPEED> <emphasis>(Use Ctrl-c to stop +execution, <SPEED> is a value between 0 and 9. Where 0 means stop, 1 is +very fast, 9 is very slow)</emphasis></entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="where_cmd"><title id="where_cmd.title">Where</title> +<para>Print a trace of templates calls (frame stack) and print the working directory.</para> +<para>Shortcut name: w</para> +<table><title>Where usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>where</entry></row> +</tbody> +</tgroup> +</table> +</sect1> + +<sect1 id="write_cmd"><title id="write_cmd.title">Write</title> +<para>To be completed</para> +<table><title>Write usage</title> +<tgroup cols="1"> +<tbody> +<row><entry>write</entry></row> +</tbody> +</tgroup> +</table> +</sect1> + + + + + +</chapter> diff --git a/doc/xsldbg/credits.docbook b/doc/xsldbg/credits.docbook new file mode 100644 index 00000000..89bdadc4 --- /dev/null +++ b/doc/xsldbg/credits.docbook @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<chapter id="credits"> +<title>Credits and License</title> + +<para> +&xsldbg; +</para> +<para> +Program copyright 2004 Keith Isdale <email>k_isdale tpg com au</email> +</para> + +<!-- TRANS:CREDIT_FOR_TRANSLATORS --> +&underFDL; +&underGPL; + +<sect1 id="thanks"> +<title>Thanks to </title> +<para> The writers the libxml and libxsl.</para> +<para><ulink url="http://members.nextra.at/johsixt/">Johannes Sixt</ulink> for helping with adding xsldbg support to KDbg</para></sect1> + +</chapter> diff --git a/doc/xsldbg/index.docbook b/doc/xsldbg/index.docbook new file mode 100644 index 00000000..4c211c10 --- /dev/null +++ b/doc/xsldbg/index.docbook @@ -0,0 +1,124 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY xsldbg "<application>xsldbg</application>"> + <!ENTITY kappname "&xsldbg;"> + <!ENTITY package "kdewebdev"> + <!ENTITY % addindex "IGNORE"> + <!ENTITY % English "INCLUDE"> + <!ENTITY introduction-chapter SYSTEM "introduction.docbook"> + <!ENTITY usage-chapter SYSTEM "usage.docbook"> + <!ENTITY commands-chapter SYSTEM "commands.docbook"> + <!ENTITY credits-chapter SYSTEM "credits.docbook"> +]> + +<!-- More content formatting is in need of being done asking for help on kde-i18n-doc@kde.org : remove these two lines when done --> +<!-- NO TRANSLATION --> + +<!-- ................................................................ --> +<!-- The language must NOT be changed here. --> +<!-- If you are writing original documentation in a language other --> +<!-- than English, change the language above ONLY, not here --> +<book lang="&language;"> + +<bookinfo> +<title>The &xsldbg; Handbook</title> + +<authorgroup> +<author> +<firstname>Keith</firstname> +<surname>Isdale</surname> +<affiliation> +<address><email>k_isdale@tpg.com.au</email></address> +</affiliation> +</author> + +<!-- TRANS:ROLES_OF_TRANSLATORS --> + +</authorgroup> + +<copyright> +<year>2002</year> +<year>2003</year> +<holder>Keith Isdale</holder> +</copyright> + +<legalnotice>&FDLNotice;</legalnotice> +<date>2004-09-26</date> +<releaseinfo>1.01.00</releaseinfo> + + +<abstract> +<para> +&xsldbg; is a tool intended to help understand stylesheets. +What makes it different to other stylesheet debuggers is the ability +to search for items of interest and trace stylesheet execution. +</para> +</abstract> + +<keywordset> +<keyword>KDE</keyword> +<keyword>kdeutils</keyword> +<keyword>xsldbg</keyword> +<keyword>xsl</keyword> +<keyword>XML</keyword> +</keywordset> + +</bookinfo> + +&introduction-chapter; +&usage-chapter; +&commands-chapter; +&credits-chapter; + + +<appendix id="installation"> +<title>Installation</title> + +<sect1 id="getting-xsldbg"> +<title>How to obtain &xsldbg;</title> + +<para> +See the kxsldbg component of the kdewebdev module in &kde; SVN. +</para> + +&install.intro.documentation; + +</sect1> + +<sect1 id="requirements"> +<title>Requirements</title> + +<para> +In order to successfully use &xsldbg;, you need &kde; libxslt, libexslt and +libxml installed which are available on a typical &kde; installation. +</para> +</sect1> + +<sect1 id="compilation"> +<title>Compilation and Installation</title> +<para>&xsldbg; is usually compiled as part of the kxsldbg component in the kdewebdev module</para> +</sect1> + +<sect1 id="configuration"> +<title>Configuration</title> + +<para>&xsldbg; is configured using arguments passed via the command line and its <link linkend="setoption_cmd" endterm="setoption_cmd.title">setoption</link> command</para> + +</sect1> + +</appendix> + +&documentation.index; +</book> + +<!-- +Local Variables: +mode: xml +sgml-minimize-attributes:nil +sgml-general-insert-case:lower +sgml-indent-step:0 +sgml-indent-data:nil +End: + +vim:tabstop=2:shiftwidth=2:expandtab +--> diff --git a/doc/xsldbg/introduction.docbook b/doc/xsldbg/introduction.docbook new file mode 100644 index 00000000..65879ce0 --- /dev/null +++ b/doc/xsldbg/introduction.docbook @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<chapter id="introduction"> +<title>Introduction</title> + +<para> +&xsldbg; is a text based tool to debug stylesheets (the eXtensible +Stylesheet Language) and has commands similar to the Unix/Linux debugger +gdb. It has three major modes of execution of stylesheets. +</para> +<para> +<informaltable> + <tgroup cols="1"><tbody> + <row><entry>Run the whole stylesheet</entry></row> + <row><entry>Step to next xsl instruction</entry></row> + <row><entry>Continue until next break point is found, or stylesheet has restarted</entry></row> + </tbody></tgroup> +</informaltable> +</para> + +</chapter> diff --git a/doc/xsldbg/usage.docbook b/doc/xsldbg/usage.docbook new file mode 100644 index 00000000..5fe2fdc2 --- /dev/null +++ b/doc/xsldbg/usage.docbook @@ -0,0 +1,147 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<chapter id="using-xsldbg"> +<title>Using &xsldbg;</title> +<para></para> +<sect1><title>xsldbg command arguments</title> +<para> +On systems with readline library available you can use the back/forward +keys to navigate the history of entered commands. +On all systems the last entered command can be repeated by just pressing +the <ENTER> key. +</para> +<para>If your operating system supports it file names will be expanded.</para> +<para> +Several commands take more that one argument. Quotes may be used to lead to +complex expressions being treated as one arument. eg break "* | @" would allow you to se a breakpoint on the + template with the name "* | @" +</para> +</sect1> + +<sect1 id="legend"><title>Legend of terms</title> +<para>The following table describes the terms used in the subsiquent command guide</para> +<informaltable> +<tgroup cols="1"><tbody> + <row><entry> + TEMPLATE_NAME : A valid template name contains only ASCI + character codes 0x00 to 0x7F. And can be a fully qualified name ie + "xsl:templateName". </entry></row> + <row><entry> + FILENAME : A valid file name local to the system of the + user. It can have a "~" prefix on *nix and CYGWIN platforms. Or + environment variables under RISC OS + </entry></row> + <row><entry>URI : A Uniform Resource Identifiers as defined by RFC 2396</entry></row> + <row><entry>MODE_NAME The mode of template which can be fully qualified name ie "xsl:modeName".</entry></row> + <row><entry>QNAME : A fully qualified name ie "xsl:localPart"</entry></row> + <row><entry>LINENO : A valid line number in associated <FILENAME></entry></row> + <row><entry>NUMBER_OF_FRAMES : A valid line number frames to change position by</entry></row> + <row><entry>BREAKPOINT_ID : A valid break point number</entry></row> + <row><entry>WATCH_ID : A valid watch expression number as indicated by showwatch command</entry></row> + <row><entry>SPEED: speed to walk through code at, between 0 to 9</entry></row> + <row><entry> + <emphasis>(Comment)</emphasis>: a + comment about command meaning or usage + </entry></row> + <row><entry>{ opt1 | opt2 | opt2 .. etc} : Choose one of the opt's</entry></row> + <row><entry>XPATH : a xpath selection of node(s)</entry></row> + <row><entry>PARAM_ID : a valid parameter number as indicated by showparam command</entry></row> + <row><entry> + PATH : A path to change working directory to On some operating systems a + "~" prefix will be replaced by your home directory path + </entry></row> + <row><entry> + TEXT : Free form text <emphasis>(no + restrictions)</emphasis> + </entry></row> + <row><entry>COMMAND : A valid command for the xsdbg</entry></row> + <row><entry>QNAME : A valid variable/parameter name</entry></row> + <row><entry>SOURCE : The stylesheet being/to be executed. See <FILENAME> and <URI></entry></row> + <row><entry> + DATA : The xml data(document) being/to be processed by the + stylesheet. See <FILENAME> + and <URI> + </entry></row> + <row><entry>DEVICE_PATH : Is a valid terminal on the operating system</entry></row> + <row><entry>TTY_LEVEL : Is a valid level of input/output to use</entry></row> +</tbody></tgroup></informaltable> +<para></para> +</sect1> + +<sect1 id="command_summary"><title>Overview of available commands</title> +<informaltable> +<tgroup cols="1"><tbody> +<row><entry>Help related :<link linkend="help_cmd" endterm="help_cmd.title">help</link></entry></row> +<row><entry> + Running related : {<link linkend="bye_cmd" endterm="bye_cmd.title">bye</link>|<link linkend="exit_cmd" endterm="exit_cmd.title">exit</link>| + <link linkend="quit_cmd" endterm="quit_cmd.title">quit</link>}, <link linkend="step_cmd" endterm="step_cmd.title">step</link>, + <link linkend="stepup_cmd" endterm="stepup_cmd.title">stepup</link>, <link linkend="stepdown_cmd" endterm="stepdown_cmd.title">stepdown</link>, + <link linkend="next_cmd" endterm="next_cmd.title">next</link>, + <link linkend="continue_cmd" endterm="continue_cmd.title">continue</link>, + <link linkend="run_cmd" endterm="run_cmd.title">run</link>, +<link linkend="trace_cmd" endterm="trace_cmd.title">trace</link>, <link linkend="setoption_cmd" endterm="setoption_cmd.title">setoption</link>, + <link linkend="options_cmd" endterm="options_cmd.title">options</link> +</entry></row> +<row><entry> + Libxslt parameter related : <link linkend="addparam_cmd" endterm="addparam_cmd.title">addparam</link>, + <link linkend="delparam_cmd" endterm="delparam_cmd.title">delparam</link>, <link linkend="showparam_cmd" endterm="showparam_cmd.title">showparam</link>, + <link linkend="output_cmd" endterm="output_cmd.title">output</link>, <link linkend="setoption_cmd" endterm="setoption_cmd.title">setoption</link>, + <link linkend="options_cmd" endterm="options_cmd.title">options</link> +</entry></row> +<row><entry> + Template related : <link linkend="templates_cmd" endterm="templates_cmd.title">templates</link>, + <link linkend="where_cmd" endterm="where_cmd.title">where</link>, <link + linkend="frame_cmd" endterm="frame_cmd.title">frame</link> +</entry></row> +<row><entry> + Break point related : <link linkend="break_cmd" endterm="break_cmd.title">break</link>, + <link linkend="showbreak_cmd" + endterm="showbreak_cmd.title">showbreak</link>, <link linkend="delete_cmd" endterm="delete_cmd.title">delete</link>, + <link linkend="enable_cmd" endterm="enable_cmd.title">enable</link> +</entry></row> +<row><entry> + Expression viewing(xpath) : <link linkend="cat_cmd" + endterm="cat_cmd.title">cat</link> +</entry></row> +<row><entry> + Node viewing : <link linkend="ls_cmd" endterm="ls_cmd.title">ls</link>, <link linkend="dir_cmd" endterm="dir_cmd.title">dir</link>, + <link linkend="du_cmd" endterm="du_cmd.title">du</link>, <link + linkend="cat_cmd" endterm="cat_cmd.title">cat</link>, <link + linkend="pwd_cmd" endterm="pwd_cmd.title">pwd</link> +</entry></row> +<row><entry> + Variable viewing : <link linkend="globals_cmd" endterm="globals_cmd.title">globals</link>, + <link linkend="locals_cmd" endterm="locals_cmd.title">locals</link>, + <link linkend="cat_cmd" endterm="cat_cmd.title">cat</link>, + <link linkend="addwatch_cmd" endterm="addwatch_cmd.title">addwatch</link> +</entry></row> +<row><entry> + Variable setting: <link linkend="set_cmd" + endterm="set_cmd.title">set</link> +</entry></row> +<row><entry> + Node selection : <link linkend="source_cmd" endterm="source_cmd.title">source</link>, + <link linkend="data_cmd" endterm="data_cmd.title">data</link>, <link + linkend="cd_cmd" endterm="cd_cmd.title">cd</link> +</entry></row> +<row><entry> + Searching :<link linkend="search_cmd" + endterm="search_cmd.title">search</link> +</entry></row> +<row><entry> + Operating system related :<link linkend="chdir_cmd" endterm="chdir_cmd.title">chdir</link>, + <link linkend="shell_cmd" endterm="shell_cmd.title">shell</link>, <link linkend="tty_cmd" endterm="tty_cmd.title">tty</link></entry></row> +<row><entry>File related : <link linkend="output_cmd" endterm="output_cmd.title">output</link>, + <link linkend="entities_cmd" endterm="entities_cmd.title">entities</link>, <link linkend="system_cmd" endterm="system_cmd.title">system</link>, + <link linkend="public_cmd" endterm="public_cmd.title">public</link> +</entry></row> +<row><entry> + Disabled file commands: <link linkend="validate_cmd" endterm="validate_cmd.title">validate</link>, + <link linkend="load_cmd" endterm="load_cmd.title">load</link>, <link linkend="save_cmd" endterm="save_cmd.title">save</link>, + <link linkend="write_cmd" endterm="write_cmd.title">write</link>, <link + linkend="free_cmd" endterm="free_cmd.title">free</link> +</entry></row> +</tbody></tgroup></informaltable> +</sect1> + +</chapter> + diff --git a/doc/xsldbg/xsldbghelp.xml b/doc/xsldbg/xsldbghelp.xml new file mode 100644 index 00000000..64d9b81b --- /dev/null +++ b/doc/xsldbg/xsldbghelp.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE helpbook [ + <!ENTITY nbsp " "> + <!ENTITY introduction-chapter SYSTEM "introduction.docbook"> + <!ENTITY usage-chapter SYSTEM "usage.docbook"> + <!ENTITY commands-chapter SYSTEM "commands.docbook"> + <!ENTITY xsldbg "xsldbg"> +]> + + +<!-- + Note: xsldbg's index.docbook file is not used because it is much slower to process. + Translations required are passed as command line arguments to xsldbg + --> + + + +<helpbook> +&introduction-chapter; +&usage-chapter; +&commands-chapter; +</helpbook> diff --git a/doc/xsldbg/xsldbghelp.xsl b/doc/xsldbg/xsldbghelp.xsl new file mode 100644 index 00000000..50e45ebd --- /dev/null +++ b/doc/xsldbg/xsldbghelp.xsl @@ -0,0 +1,127 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!-- + File : xsldoc.xsl + Author: Keith Isdale <k_isdale@tpg.com.au> + Description: Stylesheet to process xsldoc.xml and generate help text + Copyright Reserved Under GPL +--> +<!-- This file does not require translation --> +<!-- NO TRANSLATION --> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version="1.0"> + <xsl:output method="text"/> + <xsl:strip-space elements="text"/> + <!-- The selected nodes to be printed for overview --> + <xsl:variable name="overview_node" select="//chapter[@id='introduction']"/> + <!-- The selected nodes to be printed for usage overview --> + <xsl:variable name="usage_node" select="//chapter[@id='using-xsldbg']"/> + <!-- The list of valid xsldbg commands --> + <xsl:variable name="command_nodes" select="//chapter[@id='commands']"/> + <!-- The list of i18n paras --> + <xsl:variable name="i18n_para" select="//i18n"/> + <!-- What version is this document--> + <xsl:variable name="doc_version" select="'3.3.0-1'"/> + <!-- The default version of xsldbg --> + <xsl:param name="xsldbg_version" select="'3.3.0'"/> + <!-- We want 'help' to point to a invalid command if stylesheet + user has not provided a value for 'help' param--> + <xsl:param name="help" select="'_#_'"/> + <xsl:variable name="help_id" select="concat($help,'_cmd')"/> + <!-- Do we printout all documentation '1' if so '0' otherwise --> + <xsl:param name="alldocs" select="0"/> + <!-- The documentation we can find for 'help' user requires --> + <xsl:variable name="help_cmd" select="$command_nodes/sect1[@id=$help_id or @shortcut=$help_id]"/> + + <!-- Our translatables --> + <xsl:param name="xsldbgVerTxt" select="'xsldbg version'"/> + <xsl:param name="helpDocVerTxt" select="'Help document version'"/> + <xsl:param name="helpErrorTxt" select="'Help not found for command'"/> + + + + <!-- Main template--> + <xsl:template match="/"> +<xsl:text> </xsl:text><xsl:value-of select="$xsldbgVerTxt"/><xsl:text> </xsl:text><xsl:value-of select="$xsldbg_version"/> +<xsl:text> +</xsl:text> +<xsl:text> ====================</xsl:text><xsl:text> +</xsl:text> + <xsl:choose> + <xsl:when test="count($help_cmd) > 0" > + <xsl:apply-templates select="$help_cmd" /> + <xsl:value-of select="$helpDocVerTxt"/><xsl:text> </xsl:text><xsl:value-of select="$doc_version"/><xsl:text> +</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:if test="$help !='_#_'"> + <xsl:value-of select="$helpErrorTxt"/><xsl:text> </xsl:text> + <xsl:value-of select="$help"/> + </xsl:if> + <xsl:if test="$help ='_#_'"> + <xsl:apply-templates select="$overview_node"/> + <xsl:text> +</xsl:text> + <xsl:apply-templates select="$usage_node"/> + <xsl:value-of select="$helpDocVerTxt"/><xsl:text> </xsl:text><xsl:value-of select="$doc_version"/><xsl:text> +</xsl:text> + </xsl:if> +<xsl:text> +</xsl:text> + </xsl:otherwise> + </xsl:choose> +<xsl:text> +</xsl:text> + </xsl:template> + + + <!-- Convert title into something useful --> + <xsl:template match="title"> +<xsl:for-each select="ancestor::node()"><xsl:text> </xsl:text></xsl:for-each><xsl:value-of select="."/> +<xsl:text> +</xsl:text><xsl:for-each select="ancestor::node()"><xsl:text> </xsl:text></xsl:for-each> +<xsl:value-of + select="substring('____________________________________________________________', + 1, string-length())" /> +<xsl:text> +</xsl:text> + </xsl:template> + + <xsl:template match="text()"> + <xsl:value-of select="normalize-space()"/> + </xsl:template> + + <xsl:template match="row"> + <xsl:value-of select="$indentgroup/indent[@level=$indentcount]" /> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="para"> + <xsl:text> +</xsl:text> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="informaltable|table"> + <xsl:text> +</xsl:text> + <xsl:apply-templates select="title"/> + <xsl:for-each select="tgroup/tbody/row/entry|tbody/row/entry"> + <xsl:for-each select="ancestor::node()"><xsl:text> </xsl:text></xsl:for-each><xsl:apply-templates/> + <xsl:text> +</xsl:text> + </xsl:for-each> + </xsl:template> + +</xsl:stylesheet> + + +<!-- initialization code for xemacs --> +<!-- +Local Variables: +mode: xsl +sgml-minimize-attributes:nil +sgml-general-insert-case:lower +sgml-indent-step:2 +sgml-indent-data:nil +End: +--> |