From e9ae80694875f869892f13f4fcaf1170a00dea41 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: 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 --- doc/Makefile.am | 4 + doc/kfilereplace/Makefile.am | 2 + doc/kfilereplace/addstringsdialog_window.png | Bin 0 -> 24518 bytes doc/kfilereplace/backup_option.png | Bin 0 -> 979 bytes doc/kfilereplace/casesensitive_option.png | Bin 0 -> 1177 bytes doc/kfilereplace/command_option.png | Bin 0 -> 1132 bytes doc/kfilereplace/edit.png | Bin 0 -> 1076 bytes doc/kfilereplace/edit_add.png | Bin 0 -> 820 bytes doc/kfilereplace/edit_remove.png | Bin 0 -> 713 bytes doc/kfilereplace/eraser.png | Bin 0 -> 339 bytes doc/kfilereplace/filereplace.png | Bin 0 -> 1115 bytes doc/kfilereplace/filesearch.png | Bin 0 -> 1163 bytes doc/kfilereplace/filesimulate.png | Bin 0 -> 1113 bytes doc/kfilereplace/index.docbook | 613 ++++++ doc/kfilereplace/invert.png | Bin 0 -> 1218 bytes doc/kfilereplace/kfr_standalone_main_window_1.png | Bin 0 -> 84930 bytes doc/kfilereplace/optionsdialog_main_window_1.png | Bin 0 -> 44754 bytes doc/kfilereplace/optionsdialog_main_window_2.png | Bin 0 -> 36903 bytes doc/kfilereplace/project.png | Bin 0 -> 808 bytes doc/kfilereplace/projectdialog_main_window_1.png | Bin 0 -> 54660 bytes doc/kfilereplace/projectdialog_main_window_2.png | Bin 0 -> 61588 bytes doc/kfilereplace/recursive_option.png | Bin 0 -> 615 bytes doc/kfilereplace/regularexpression_option.png | Bin 0 -> 959 bytes doc/kfilereplace/report_example.png | Bin 0 -> 61894 bytes doc/kfilereplace/results_view.png | Bin 0 -> 54796 bytes doc/kfilereplace/stop.png | Bin 0 -> 1330 bytes doc/kfilereplace/strings_view.png | Bin 0 -> 9518 bytes doc/kfilereplace/toolbar.png | Bin 0 -> 8217 bytes doc/kfilereplace/unsortedList.png | Bin 0 -> 279 bytes doc/klinkstatus/Makefile.am | 2 + doc/klinkstatus/index.docbook | 498 +++++ doc/klinkstatus/screenshot.png | Bin 0 -> 80998 bytes doc/kommander/Makefile.am | 3 + doc/kommander/basics.docbook | 135 ++ doc/kommander/buttongroup.png | Bin 0 -> 648 bytes doc/kommander/checkbox.png | Bin 0 -> 817 bytes doc/kommander/closebutton.png | Bin 0 -> 585 bytes doc/kommander/combobox.png | Bin 0 -> 549 bytes doc/kommander/commands.docbook | 14 + doc/kommander/contents.png | Bin 0 -> 1300 bytes doc/kommander/credits.docbook | 59 + doc/kommander/datepicker.png | Bin 0 -> 965 bytes doc/kommander/dcop.docbook | 203 ++ doc/kommander/editor.docbook | 642 ++++++ doc/kommander/editor.png | Bin 0 -> 29040 bytes doc/kommander/extending.docbook | 440 ++++ doc/kommander/frame.png | Bin 0 -> 521 bytes doc/kommander/glossary.docbook | 39 + doc/kommander/groupbox.png | Bin 0 -> 439 bytes doc/kommander/index.docbook | 121 ++ doc/kommander/installation.docbook | 50 + doc/kommander/interface.png | Bin 0 -> 175153 bytes doc/kommander/introduction.docbook | 134 ++ doc/kommander/kfontcombo.png | Bin 0 -> 1194 bytes doc/kommander/kommander.png | Bin 0 -> 1480 bytes doc/kommander/konsole.png | Bin 0 -> 1155 bytes doc/kommander/label.png | Bin 0 -> 953 bytes doc/kommander/lineedit.png | Bin 0 -> 461 bytes doc/kommander/listbox.png | Bin 0 -> 386 bytes doc/kommander/listview.png | Bin 0 -> 759 bytes doc/kommander/multilineedit.png | Bin 0 -> 1031 bytes doc/kommander/parser.docbook | 751 +++++++ doc/kommander/pixlabel.png | Bin 0 -> 1229 bytes doc/kommander/progress.png | Bin 0 -> 609 bytes doc/kommander/pushbutton.png | Bin 0 -> 408 bytes doc/kommander/q-and-a.docbook | 11 + doc/kommander/radiobutton.png | Bin 0 -> 586 bytes doc/kommander/richtextedit.png | Bin 0 -> 834 bytes doc/kommander/shadow.png | Bin 0 -> 213 bytes doc/kommander/shellscript.png | Bin 0 -> 1053 bytes doc/kommander/slider.png | Bin 0 -> 729 bytes doc/kommander/specials.docbook | 371 ++++ doc/kommander/spinbox.png | Bin 0 -> 455 bytes doc/kommander/statusbar.png | Bin 0 -> 294 bytes doc/kommander/table.png | Bin 0 -> 483 bytes doc/kommander/tabwidget.png | Bin 0 -> 572 bytes doc/kommander/textbrowser.png | Bin 0 -> 514 bytes doc/kommander/textedit.png | Bin 0 -> 497 bytes doc/kommander/timer.png | Bin 0 -> 1462 bytes doc/kommander/toolbox.png | Bin 0 -> 783 bytes doc/kommander/translating.docbook | 72 + doc/kommander/tutorials.docbook | 380 ++++ doc/kommander/widgets.docbook | 599 ++++++ doc/kxsldbg/1downarrow.png | Bin 0 -> 637 bytes doc/kxsldbg/Makefile.am | 3 + doc/kxsldbg/breakpoints_window.png | Bin 0 -> 33227 bytes doc/kxsldbg/callstack.docbook | 37 + doc/kxsldbg/callstack_window.png | Bin 0 -> 29040 bytes doc/kxsldbg/configure.png | Bin 0 -> 615 bytes doc/kxsldbg/configure_window.png | Bin 0 -> 23978 bytes doc/kxsldbg/credits.docbook | 44 + doc/kxsldbg/entities.docbook | 42 + doc/kxsldbg/entities_window.png | Bin 0 -> 23751 bytes doc/kxsldbg/exit.png | Bin 0 -> 855 bytes doc/kxsldbg/glossary.docbook | 47 + doc/kxsldbg/index.docbook | 150 ++ doc/kxsldbg/kxsldbg_configure.docbook | 102 + doc/kxsldbg/kxsldbg_inspector.docbook | 103 + doc/kxsldbg/kxsldbg_mainwindow.docbook | 455 +++++ doc/kxsldbg/kxsldbg_tools.docbook | 93 + doc/kxsldbg/main_window.png | Bin 0 -> 42654 bytes doc/kxsldbg/next.png | Bin 0 -> 235 bytes doc/kxsldbg/publicid_window.png | Bin 0 -> 10418 bytes doc/kxsldbg/run.png | Bin 0 -> 740 bytes doc/kxsldbg/sources.docbook | 44 + doc/kxsldbg/sources_window.png | Bin 0 -> 23928 bytes doc/kxsldbg/step.png | Bin 0 -> 473 bytes doc/kxsldbg/systemid_window.png | Bin 0 -> 10601 bytes doc/kxsldbg/templates.docbook | 34 + doc/kxsldbg/templates_window.png | Bin 0 -> 28975 bytes doc/kxsldbg/variables.docbook | 69 + doc/kxsldbg/variables_window.png | Bin 0 -> 27799 bytes doc/kxsldbg/walk_window.png | Bin 0 -> 13018 bytes doc/kxsldbg/xsldbg_break.png | Bin 0 -> 221 bytes doc/kxsldbg/xsldbg_data.png | Bin 0 -> 243 bytes doc/kxsldbg/xsldbg_delete.png | Bin 0 -> 228 bytes doc/kxsldbg/xsldbg_enable.png | Bin 0 -> 336 bytes doc/kxsldbg/xsldbg_output.png | Bin 0 -> 120 bytes doc/kxsldbg/xsldbg_refresh.png | Bin 0 -> 232 bytes doc/kxsldbg/xsldbg_source.png | Bin 0 -> 231 bytes doc/kxsldbg/xsldbg_stepdown.png | Bin 0 -> 137 bytes doc/kxsldbg/xsldbg_stepup.png | Bin 0 -> 195 bytes doc/quanta/Makefile.am | 3 + doc/quanta/adv-quanta.docbook | 623 ++++++ doc/quanta/attribute_tree.png | Bin 0 -> 14685 bytes doc/quanta/config-quanta.docbook | 125 ++ doc/quanta/contents2.png | Bin 0 -> 1111 bytes doc/quanta/credits-license.docbook | 150 ++ doc/quanta/debugging-quanta.docbook | 400 ++++ doc/quanta/doc-view1.png | Bin 0 -> 8801 bytes doc/quanta/dtd-conversion.png | Bin 0 -> 22812 bytes doc/quanta/dtep_doc_img15.png | Bin 0 -> 57012 bytes doc/quanta/dtep_doc_img18.png | Bin 0 -> 22351 bytes doc/quanta/dtep_doc_img21.png | Bin 0 -> 19433 bytes doc/quanta/dtep_doc_img22.png | Bin 0 -> 19806 bytes doc/quanta/dtep_doc_img23.png | Bin 0 -> 19785 bytes doc/quanta/dtep_doc_img24.png | Bin 0 -> 3342 bytes doc/quanta/dtep_doc_img25.png | Bin 0 -> 3803 bytes doc/quanta/dtep_doc_img7.png | Bin 0 -> 22311 bytes doc/quanta/dtep_doc_img8.png | Bin 0 -> 22396 bytes doc/quanta/edit-upload-profile.png | Bin 0 -> 28223 bytes doc/quanta/event-editing.png | Bin 0 -> 19719 bytes doc/quanta/exec.png | Bin 0 -> 1113 bytes doc/quanta/extending-quanta.docbook | 1789 ++++++++++++++++ doc/quanta/ftab.png | Bin 0 -> 816 bytes doc/quanta/fundamentals.docbook | 429 ++++ doc/quanta/glossary.docbook | 53 + doc/quanta/index.docbook | 183 ++ doc/quanta/info_tab.png | Bin 0 -> 20403 bytes doc/quanta/installation.docbook | 43 + doc/quanta/introduction.docbook | 134 ++ doc/quanta/kfr-icon.png | Bin 0 -> 1302 bytes doc/quanta/kfr-new-dialog.png | Bin 0 -> 31281 bytes doc/quanta/man-quanta.1.docbook | 95 + doc/quanta/plugin-edit.png | Bin 0 -> 25571 bytes doc/quanta/project-1.png | Bin 0 -> 91254 bytes doc/quanta/project-properties.png | Bin 0 -> 47714 bytes doc/quanta/project-tree-view-dir-rmb-menu.png | Bin 0 -> 13163 bytes doc/quanta/project-tree-view-file-rmb-menu.png | Bin 0 -> 13876 bytes doc/quanta/project-upload-dialog.png | Bin 0 -> 75208 bytes doc/quanta/ptab.png | Bin 0 -> 1356 bytes doc/quanta/q-and-a.docbook | 70 + doc/quanta/quanta-menus.docbook | 2265 +++++++++++++++++++++ doc/quanta/quanta-projects.docbook | 792 +++++++ doc/quanta/quantamdi-editor.png | Bin 0 -> 39143 bytes doc/quanta/quantamdi-treeview.png | Bin 0 -> 9113 bytes doc/quanta/quantamdi.png | Bin 0 -> 118267 bytes doc/quanta/script-action.png | Bin 0 -> 18803 bytes doc/quanta/tag-actions.png | Bin 0 -> 12920 bytes doc/quanta/tag_misc.png | Bin 0 -> 224 bytes doc/quanta/taginputex.png | Bin 0 -> 27811 bytes doc/quanta/team-editing.png | Bin 0 -> 26760 bytes doc/quanta/template-rmb.png | Bin 0 -> 31135 bytes doc/quanta/text-action.png | Bin 0 -> 5043 bytes doc/quanta/toolbars.png | Bin 0 -> 8055 bytes doc/quanta/ttab.png | Bin 0 -> 1104 bytes doc/quanta/view_sidetree.png | Bin 0 -> 667 bytes doc/quanta/vplsourceview.png | Bin 0 -> 9903 bytes doc/quanta/working-with-quanta.docbook | 650 ++++++ doc/xsldbg/Makefile.am | 3 + doc/xsldbg/commands.docbook | 801 ++++++++ doc/xsldbg/credits.docbook | 21 + doc/xsldbg/index.docbook | 124 ++ doc/xsldbg/introduction.docbook | 20 + doc/xsldbg/usage.docbook | 147 ++ doc/xsldbg/xsldbghelp.xml | 22 + doc/xsldbg/xsldbghelp.xsl | 127 ++ 187 files changed, 15435 insertions(+) create mode 100644 doc/Makefile.am create mode 100644 doc/kfilereplace/Makefile.am create mode 100644 doc/kfilereplace/addstringsdialog_window.png create mode 100644 doc/kfilereplace/backup_option.png create mode 100644 doc/kfilereplace/casesensitive_option.png create mode 100644 doc/kfilereplace/command_option.png create mode 100644 doc/kfilereplace/edit.png create mode 100644 doc/kfilereplace/edit_add.png create mode 100644 doc/kfilereplace/edit_remove.png create mode 100644 doc/kfilereplace/eraser.png create mode 100644 doc/kfilereplace/filereplace.png create mode 100644 doc/kfilereplace/filesearch.png create mode 100644 doc/kfilereplace/filesimulate.png create mode 100644 doc/kfilereplace/index.docbook create mode 100644 doc/kfilereplace/invert.png create mode 100644 doc/kfilereplace/kfr_standalone_main_window_1.png create mode 100644 doc/kfilereplace/optionsdialog_main_window_1.png create mode 100644 doc/kfilereplace/optionsdialog_main_window_2.png create mode 100644 doc/kfilereplace/project.png create mode 100644 doc/kfilereplace/projectdialog_main_window_1.png create mode 100644 doc/kfilereplace/projectdialog_main_window_2.png create mode 100644 doc/kfilereplace/recursive_option.png create mode 100644 doc/kfilereplace/regularexpression_option.png create mode 100644 doc/kfilereplace/report_example.png create mode 100644 doc/kfilereplace/results_view.png create mode 100644 doc/kfilereplace/stop.png create mode 100644 doc/kfilereplace/strings_view.png create mode 100644 doc/kfilereplace/toolbar.png create mode 100644 doc/kfilereplace/unsortedList.png create mode 100644 doc/klinkstatus/Makefile.am create mode 100644 doc/klinkstatus/index.docbook create mode 100644 doc/klinkstatus/screenshot.png create mode 100644 doc/kommander/Makefile.am create mode 100644 doc/kommander/basics.docbook create mode 100644 doc/kommander/buttongroup.png create mode 100644 doc/kommander/checkbox.png create mode 100644 doc/kommander/closebutton.png create mode 100644 doc/kommander/combobox.png create mode 100644 doc/kommander/commands.docbook create mode 100644 doc/kommander/contents.png create mode 100644 doc/kommander/credits.docbook create mode 100644 doc/kommander/datepicker.png create mode 100644 doc/kommander/dcop.docbook create mode 100644 doc/kommander/editor.docbook create mode 100644 doc/kommander/editor.png create mode 100644 doc/kommander/extending.docbook create mode 100644 doc/kommander/frame.png create mode 100644 doc/kommander/glossary.docbook create mode 100644 doc/kommander/groupbox.png create mode 100644 doc/kommander/index.docbook create mode 100644 doc/kommander/installation.docbook create mode 100644 doc/kommander/interface.png create mode 100644 doc/kommander/introduction.docbook create mode 100644 doc/kommander/kfontcombo.png create mode 100644 doc/kommander/kommander.png create mode 100644 doc/kommander/konsole.png create mode 100644 doc/kommander/label.png create mode 100644 doc/kommander/lineedit.png create mode 100644 doc/kommander/listbox.png create mode 100644 doc/kommander/listview.png create mode 100644 doc/kommander/multilineedit.png create mode 100644 doc/kommander/parser.docbook create mode 100644 doc/kommander/pixlabel.png create mode 100644 doc/kommander/progress.png create mode 100644 doc/kommander/pushbutton.png create mode 100644 doc/kommander/q-and-a.docbook create mode 100644 doc/kommander/radiobutton.png create mode 100644 doc/kommander/richtextedit.png create mode 100644 doc/kommander/shadow.png create mode 100644 doc/kommander/shellscript.png create mode 100644 doc/kommander/slider.png create mode 100644 doc/kommander/specials.docbook create mode 100644 doc/kommander/spinbox.png create mode 100644 doc/kommander/statusbar.png create mode 100644 doc/kommander/table.png create mode 100644 doc/kommander/tabwidget.png create mode 100644 doc/kommander/textbrowser.png create mode 100644 doc/kommander/textedit.png create mode 100644 doc/kommander/timer.png create mode 100644 doc/kommander/toolbox.png create mode 100644 doc/kommander/translating.docbook create mode 100644 doc/kommander/tutorials.docbook create mode 100644 doc/kommander/widgets.docbook create mode 100644 doc/kxsldbg/1downarrow.png create mode 100644 doc/kxsldbg/Makefile.am create mode 100644 doc/kxsldbg/breakpoints_window.png create mode 100644 doc/kxsldbg/callstack.docbook create mode 100644 doc/kxsldbg/callstack_window.png create mode 100644 doc/kxsldbg/configure.png create mode 100644 doc/kxsldbg/configure_window.png create mode 100644 doc/kxsldbg/credits.docbook create mode 100644 doc/kxsldbg/entities.docbook create mode 100644 doc/kxsldbg/entities_window.png create mode 100644 doc/kxsldbg/exit.png create mode 100644 doc/kxsldbg/glossary.docbook create mode 100644 doc/kxsldbg/index.docbook create mode 100644 doc/kxsldbg/kxsldbg_configure.docbook create mode 100644 doc/kxsldbg/kxsldbg_inspector.docbook create mode 100644 doc/kxsldbg/kxsldbg_mainwindow.docbook create mode 100644 doc/kxsldbg/kxsldbg_tools.docbook create mode 100644 doc/kxsldbg/main_window.png create mode 100644 doc/kxsldbg/next.png create mode 100644 doc/kxsldbg/publicid_window.png create mode 100644 doc/kxsldbg/run.png create mode 100644 doc/kxsldbg/sources.docbook create mode 100644 doc/kxsldbg/sources_window.png create mode 100644 doc/kxsldbg/step.png create mode 100644 doc/kxsldbg/systemid_window.png create mode 100644 doc/kxsldbg/templates.docbook create mode 100644 doc/kxsldbg/templates_window.png create mode 100644 doc/kxsldbg/variables.docbook create mode 100644 doc/kxsldbg/variables_window.png create mode 100644 doc/kxsldbg/walk_window.png create mode 100644 doc/kxsldbg/xsldbg_break.png create mode 100644 doc/kxsldbg/xsldbg_data.png create mode 100644 doc/kxsldbg/xsldbg_delete.png create mode 100644 doc/kxsldbg/xsldbg_enable.png create mode 100644 doc/kxsldbg/xsldbg_output.png create mode 100644 doc/kxsldbg/xsldbg_refresh.png create mode 100644 doc/kxsldbg/xsldbg_source.png create mode 100644 doc/kxsldbg/xsldbg_stepdown.png create mode 100644 doc/kxsldbg/xsldbg_stepup.png create mode 100644 doc/quanta/Makefile.am create mode 100644 doc/quanta/adv-quanta.docbook create mode 100644 doc/quanta/attribute_tree.png create mode 100644 doc/quanta/config-quanta.docbook create mode 100644 doc/quanta/contents2.png create mode 100644 doc/quanta/credits-license.docbook create mode 100644 doc/quanta/debugging-quanta.docbook create mode 100644 doc/quanta/doc-view1.png create mode 100644 doc/quanta/dtd-conversion.png create mode 100644 doc/quanta/dtep_doc_img15.png create mode 100644 doc/quanta/dtep_doc_img18.png create mode 100644 doc/quanta/dtep_doc_img21.png create mode 100644 doc/quanta/dtep_doc_img22.png create mode 100644 doc/quanta/dtep_doc_img23.png create mode 100644 doc/quanta/dtep_doc_img24.png create mode 100644 doc/quanta/dtep_doc_img25.png create mode 100644 doc/quanta/dtep_doc_img7.png create mode 100644 doc/quanta/dtep_doc_img8.png create mode 100644 doc/quanta/edit-upload-profile.png create mode 100644 doc/quanta/event-editing.png create mode 100644 doc/quanta/exec.png create mode 100644 doc/quanta/extending-quanta.docbook create mode 100644 doc/quanta/ftab.png create mode 100644 doc/quanta/fundamentals.docbook create mode 100644 doc/quanta/glossary.docbook create mode 100644 doc/quanta/index.docbook create mode 100644 doc/quanta/info_tab.png create mode 100644 doc/quanta/installation.docbook create mode 100644 doc/quanta/introduction.docbook create mode 100644 doc/quanta/kfr-icon.png create mode 100644 doc/quanta/kfr-new-dialog.png create mode 100644 doc/quanta/man-quanta.1.docbook create mode 100644 doc/quanta/plugin-edit.png create mode 100644 doc/quanta/project-1.png create mode 100644 doc/quanta/project-properties.png create mode 100644 doc/quanta/project-tree-view-dir-rmb-menu.png create mode 100644 doc/quanta/project-tree-view-file-rmb-menu.png create mode 100644 doc/quanta/project-upload-dialog.png create mode 100644 doc/quanta/ptab.png create mode 100644 doc/quanta/q-and-a.docbook create mode 100644 doc/quanta/quanta-menus.docbook create mode 100644 doc/quanta/quanta-projects.docbook create mode 100644 doc/quanta/quantamdi-editor.png create mode 100644 doc/quanta/quantamdi-treeview.png create mode 100644 doc/quanta/quantamdi.png create mode 100644 doc/quanta/script-action.png create mode 100644 doc/quanta/tag-actions.png create mode 100644 doc/quanta/tag_misc.png create mode 100644 doc/quanta/taginputex.png create mode 100644 doc/quanta/team-editing.png create mode 100644 doc/quanta/template-rmb.png create mode 100644 doc/quanta/text-action.png create mode 100644 doc/quanta/toolbars.png create mode 100644 doc/quanta/ttab.png create mode 100644 doc/quanta/view_sidetree.png create mode 100644 doc/quanta/vplsourceview.png create mode 100644 doc/quanta/working-with-quanta.docbook create mode 100644 doc/xsldbg/Makefile.am create mode 100644 doc/xsldbg/commands.docbook create mode 100644 doc/xsldbg/credits.docbook create mode 100644 doc/xsldbg/index.docbook create mode 100644 doc/xsldbg/introduction.docbook create mode 100644 doc/xsldbg/usage.docbook create mode 100644 doc/xsldbg/xsldbghelp.xml create mode 100644 doc/xsldbg/xsldbghelp.xsl (limited to 'doc') 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 new file mode 100644 index 00000000..7d6aeee7 Binary files /dev/null and b/doc/kfilereplace/addstringsdialog_window.png differ diff --git a/doc/kfilereplace/backup_option.png b/doc/kfilereplace/backup_option.png new file mode 100644 index 00000000..a0e1e02f Binary files /dev/null and b/doc/kfilereplace/backup_option.png differ diff --git a/doc/kfilereplace/casesensitive_option.png b/doc/kfilereplace/casesensitive_option.png new file mode 100644 index 00000000..6302c0f2 Binary files /dev/null and b/doc/kfilereplace/casesensitive_option.png differ diff --git a/doc/kfilereplace/command_option.png b/doc/kfilereplace/command_option.png new file mode 100644 index 00000000..1da3688b Binary files /dev/null and b/doc/kfilereplace/command_option.png differ diff --git a/doc/kfilereplace/edit.png b/doc/kfilereplace/edit.png new file mode 100644 index 00000000..ce8b2267 Binary files /dev/null and b/doc/kfilereplace/edit.png differ diff --git a/doc/kfilereplace/edit_add.png b/doc/kfilereplace/edit_add.png new file mode 100644 index 00000000..c46aed2b Binary files /dev/null and b/doc/kfilereplace/edit_add.png differ diff --git a/doc/kfilereplace/edit_remove.png b/doc/kfilereplace/edit_remove.png new file mode 100644 index 00000000..1a2f87c5 Binary files /dev/null and b/doc/kfilereplace/edit_remove.png differ diff --git a/doc/kfilereplace/eraser.png b/doc/kfilereplace/eraser.png new file mode 100644 index 00000000..33775463 Binary files /dev/null and b/doc/kfilereplace/eraser.png differ diff --git a/doc/kfilereplace/filereplace.png b/doc/kfilereplace/filereplace.png new file mode 100644 index 00000000..c3692e11 Binary files /dev/null and b/doc/kfilereplace/filereplace.png differ diff --git a/doc/kfilereplace/filesearch.png b/doc/kfilereplace/filesearch.png new file mode 100644 index 00000000..1be59c49 Binary files /dev/null and b/doc/kfilereplace/filesearch.png differ diff --git a/doc/kfilereplace/filesimulate.png b/doc/kfilereplace/filesimulate.png new file mode 100644 index 00000000..7cc5b284 Binary files /dev/null and b/doc/kfilereplace/filesimulate.png differ 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 @@ + +KFileReplace"> + + + + + kdewebdev"> + bc"> +]> + + + + +The &kfilereplace; Handbook + + + +Emiliano +Gulmini + +
emi_barbarossa@yahoo.it
+
+
+ + + +
+ + +2004 +Emiliano Gulmini + + +&FDLNotice; + +2004-08-09 +1.0.0 + + + + + +&kfilereplace; is an utility to search and replace strings. + + + + +KDE +KFileReplace +replace +search +string + + +
+ + + Introduction + &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. + + + + +Using &kfilereplace; + + + + &kfilereplace; in its standalone incarnation + + + + + + &kfilereplace; in its standalone incarnation + + + + + + + +The Toolbar + +The &kfilereplace; toolbar should looks like this: + + &kfilereplace;'s toolbar + + + + + + + + + &kfilereplace;'s toolbar + + + + + +The toolbar shows you the buttons of the main functionalities. + + Toolbar Icons + + + + + + + + New session + + This button shows a session dialog in which you can set several basic options; if &kfilereplace; run as standalone application you should click this button as first step. + + + + + + + + + + Search only + + This button starts a search loop. + + + + + + + + + + Replace + + This button starts a search&replace loop. When a string has been found, &kfilereplace; replaces it with another string. + + + + + + + + + + Simulated Replace + + This button starts a simulated search&replace loop. Nothing really happens when you click this button. + + + + + + + + + + Stop + + This button stops an operation. + + + + + + + + + + Add Strings + + This button opens the Add Strings dialog in which you can edit your string list. + + + + + + + + + + Delete Strings + + This button deletes the selected (or the current if there is no selection) string from the list. + + + + + + + + + + Edit Strings + + This button edits a selected string. + + + + + + + + + + Delete List + + This button deletes all the strings in the list. + + + + + + + + + + Invert Strings + + This button swaps the search string with the replace string, so you can revert a search/replace operation. + + + + + + + + + + Load String List + + This button loads a string list saved in a xml file with a kfr extension. + + + + + + + + + + Search in Subfolders + + This button allows you to search/replace recursively in the subfolders of your base directory. + + + + + + + + + + Make Backup Files + + This button enables generation of backup files. + + + + + + + + + + Case-sensitive Search + + This button enables case-sensitive searching. + + + + + + + + + + Commands + + This button enables commands capability. Commands are special strings. See . + + + + + + + + + + Regular expressions + + This button enables Qt-like regular expressions. + + + + + + + + + + The Results List + + &kfilereplace;'s Results view + + + + + + + + + &kfilereplace;'s Results view + + + + The Results 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. + + + + + The String List + + This is the Strings view: + + &kfilereplace;'s Strings view + + + + + + &kfilereplace;'s Strings view + + + + + + The Strings view visualizes the list of strings you want search/replace. Please note that in search mode the Results view and the Strings view have a different layout. + + + + + The <guilabel>New Session</guilabel> Dialog + The New Session dialog is used to setup the basic parameters needed by &kfilereplace; to work. It consists of two tabs, General and Advanced. + + + + The <guilabel>General</guilabel> Tab + + &kfilereplace; General tab + + + + + + &kfilereplace; General tab + + + + When you want to begin a new session the first step is to click on the New Session button. Then you must enter the base path and a sequence of shell-like wildcards to use as filter. + Then you could set some useful options, like searching in all the subfolders, doing a case-sensitive search, enabling commands and/or regular expressionsPlease note that regular expressions and commands could slow down the speed performances., doing a backup copy of each file before replacing. + If you want to start searching, you can put a string in the search box and press Search Now, otherwise leave the search box empty and press Search Later. + + + + The <guilabel>Advanced</guilabel> Tab + + &kfilereplace; Advanced tab + + + + + + &kfilereplace; Advanced tab + + + + The Advanced 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). + + + + + The <guilabel>Options</guilabel> Dialog + 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 SettingsConfigure KFileReplace... in the main menu. + + + General options + These options have been presented in the Toolbar section. + + The General tab of the Options window + + + + + + The General tab of the Options window + + + + + + + Advanced options + + + The Advanced tab of the Options window + + + + + + The Advanced tab of the Options window + + + + + Do not show files if no strings are found or replaced + When searching, stop on first string found + Follow symbolic links + Ignore hidden files and directories + + shows only the files that match some of your strings. This will speed up the search. + &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. + if a file is a link to another one, then search in the real file. + if hidden files or folders are encountered, ignore them. + + + + + + + The <guilabel>Add Strings</guilabel> Dialog + + &kfilereplace;'s Add Strings dialog + + + + + + &kfilereplace;'s Add Strings dialog + + + + 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 OK. + + + + + &kfilereplace; features + This chapter provides informations about some useful capabilities of &kfilereplace;. + + How to save your string list + When you want to reuse a list of strings you can save it in a xml file. To do this select from the menubar Search/ReplaceStringsSave Strings List to File. When you save a list, a simple xml file with extension kfr is created. To load a kfr file select from menubar Search/ReplaceStringsLoad Strings List from File. The actual file looks like this: + +<?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> + + 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. + + + + How to Create a Simple Report + You can create a report by choosing Search/ReplaceResultsCreate Report File from the main menu. A report is a folder containing an xml and a css file. Reports may be useful to maintain a simple log of your operations. + + &kfilereplace;'s Report feature + + + + + + + + + &kfilereplace;'s Report feature + + + + + + + + How to use Regular Expressions + + If you want search for every string that starts with x, ht or u and ends with ml, you can write a regular expression like this: (x|ht|u)ml. Insert this expression in the search editor, click OK, and enable regular expressions by toggling the Regular Expression button. 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 if you want to solve a problem with a regular expression, you have two problems. + + + + How to Protect Original Files + 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 Backup button. If you want to customize the extension of the backup files open the Options dialog. + + + + + How to Open a File + 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. + + + + Commands + Suppose you want replace the phrase Alice's adventures in Wonderland with the entire file that contains Carroll's novel. Probably you don't want to do this by hand, what you need is a command that will do it for you. Click the Add button, select Search and Replace Mode and insert the following strings: Alice's adventure in Wonderland in the search mini-editor and the string [$loadfile:/the-path-to-my-folder/my-folder/my-file$] in the replacement mini-editor. Click OK. When you come back to the &kfilereplace; main window, toggle the Command action button that enables the commands, and start the replacement process. There are also other commands, see for a list of all of them. + + + + +Credits and License + +&kfilereplace;. Program copyright 1999 by François Dupoux dupoux@dupoux.com, 2003 Andras Mantia amantia@kde.org, 2004 Emiliano Gulmini emi_barbarossa@yahoo.it + + + + The &kfilereplace; authors and maintainers: + + François Dupoux dupoux@dupoux.com + Original author + + + Andras Mantia amantia@kde.org + Shell autor, KPart creator, co-maintainer + + + Emiliano Gulmini emi_barbarossa@yahoo.it + Current maintainer, code cleaner & rewriter + + + + +Documentation Copyright © 2004 Emiliano Gulmini emi_barbarossa@yahoo.it + + + + +&underFDL; +&underGPL; + + + + +Installation + + +How to install &kfilereplace; + +&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 &kdewebdev; home site for more information. + + + + + + + Requirements + In order to use the command [$mathexp:some_math_expression$] you should install the &bc; mathematical utility (version 1.06 or newer) written by Philip A. Nelson (philnelson@acm.org). + + + + + + &kfilereplace; commands + + + [$datetime:iso$] + [$datetime:local$] + [$user:uid$] + [$user:gid$] + [$user:loginname$] + [$user:fullname$] + [$user:homedir$] + [$user:shell$] + [$loadfile:/my-path/my-directory/my-file$] + [$empty:$] + [$random:AN_INTEGER_NUMBER$] + [$random:$] + [$mathexp:bc-expression$] + + this command return the current date and time in Qt ISO format. + like above but in local format. + return the UID of the current user. + return the GID of the current user. + return the login name of the current user. + return the full name of the current user. + return the home directory of the current user. + return the shell of the current user. + return the content of the my-file file. + return the empty string. + return a random number string using AN_INTEGER_NUMBER as the initial seed. + like above, but without initial seed. + return the result of a &bc; v1.06 mathematical expression. + + + + + +&documentation.index; +
+ diff --git a/doc/kfilereplace/invert.png b/doc/kfilereplace/invert.png new file mode 100644 index 00000000..f3ab8be6 Binary files /dev/null and b/doc/kfilereplace/invert.png differ diff --git a/doc/kfilereplace/kfr_standalone_main_window_1.png b/doc/kfilereplace/kfr_standalone_main_window_1.png new file mode 100644 index 00000000..3e4f85db Binary files /dev/null and b/doc/kfilereplace/kfr_standalone_main_window_1.png differ diff --git a/doc/kfilereplace/optionsdialog_main_window_1.png b/doc/kfilereplace/optionsdialog_main_window_1.png new file mode 100644 index 00000000..959c3977 Binary files /dev/null and b/doc/kfilereplace/optionsdialog_main_window_1.png differ diff --git a/doc/kfilereplace/optionsdialog_main_window_2.png b/doc/kfilereplace/optionsdialog_main_window_2.png new file mode 100644 index 00000000..3213b6ff Binary files /dev/null and b/doc/kfilereplace/optionsdialog_main_window_2.png differ diff --git a/doc/kfilereplace/project.png b/doc/kfilereplace/project.png new file mode 100644 index 00000000..607e6aa8 Binary files /dev/null and b/doc/kfilereplace/project.png differ diff --git a/doc/kfilereplace/projectdialog_main_window_1.png b/doc/kfilereplace/projectdialog_main_window_1.png new file mode 100644 index 00000000..58c622f0 Binary files /dev/null and b/doc/kfilereplace/projectdialog_main_window_1.png differ diff --git a/doc/kfilereplace/projectdialog_main_window_2.png b/doc/kfilereplace/projectdialog_main_window_2.png new file mode 100644 index 00000000..6fe2cb98 Binary files /dev/null and b/doc/kfilereplace/projectdialog_main_window_2.png differ diff --git a/doc/kfilereplace/recursive_option.png b/doc/kfilereplace/recursive_option.png new file mode 100644 index 00000000..bc98df90 Binary files /dev/null and b/doc/kfilereplace/recursive_option.png differ diff --git a/doc/kfilereplace/regularexpression_option.png b/doc/kfilereplace/regularexpression_option.png new file mode 100644 index 00000000..f74c7b56 Binary files /dev/null and b/doc/kfilereplace/regularexpression_option.png differ diff --git a/doc/kfilereplace/report_example.png b/doc/kfilereplace/report_example.png new file mode 100644 index 00000000..359de5ab Binary files /dev/null and b/doc/kfilereplace/report_example.png differ diff --git a/doc/kfilereplace/results_view.png b/doc/kfilereplace/results_view.png new file mode 100644 index 00000000..8f91469d Binary files /dev/null and b/doc/kfilereplace/results_view.png differ diff --git a/doc/kfilereplace/stop.png b/doc/kfilereplace/stop.png new file mode 100644 index 00000000..73b27d9f Binary files /dev/null and b/doc/kfilereplace/stop.png differ diff --git a/doc/kfilereplace/strings_view.png b/doc/kfilereplace/strings_view.png new file mode 100644 index 00000000..7396e53c Binary files /dev/null and b/doc/kfilereplace/strings_view.png differ diff --git a/doc/kfilereplace/toolbar.png b/doc/kfilereplace/toolbar.png new file mode 100644 index 00000000..84e699eb Binary files /dev/null and b/doc/kfilereplace/toolbar.png differ diff --git a/doc/kfilereplace/unsortedList.png b/doc/kfilereplace/unsortedList.png new file mode 100644 index 00000000..bed281f1 Binary files /dev/null and b/doc/kfilereplace/unsortedList.png differ 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 @@ + +KLinkStatus"> + + + + +]> + + + + + + + + + + + + + + +The &klinkstatus; Handbook + + + +Paulo +Moura Guedes + +
moura@kdewebdev.org
+
+
+ + + +
+ + +2004 +Paulo Moura Guedes + + + +&FDLNotice; + + + +2004-04-29 +0.1.3 + + + + + +&klinkstatus; is a link checker for &kde;. + + + + + + +KDE +KLinkStatus +link checker +validation + + +
+ + + +Introduction + +&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/. + + + + +Using &klinkstatus; + + + + + + +Here's a screenshot of &klinkstatus; + + + + + + + + + Screenshot + + + + + + + + +Command Reference + + +The main &klinkstatus; window + + +The File Menu + + + + + +&Ctrl;N + +File +New Link Check + +Creates a new session, if none is empty + + + + +&Ctrl;O + +File +Open URL + +Opens a &URL; + + + + +&Ctrl;W + +File +Close Tab + +Close the current tab. + + + + + + + +The <guimenu>Help</guimenu> Menu + + + + + + +&help.menu.documentation; + + + + + + + + + + + + + + + + + + + +Credits and License + + +&klinkstatus; + + +Program Copyright © 2004 Paulo Moura Guedes pmg@netcabo.pt + + +Documentation Copyright © 2004 Paulo Moura Guedes pmg@netcabo.pt + + + + +&underFDL; +&underGPL; + + + + +Installation + + +How to obtain &klinkstatus; + + + + +http://kde-apps.org + + + + + + + + + + +Compilation and Installation + + + + + +&install.compile.documentation; + + + + + +&documentation.index; +
+ + + diff --git a/doc/klinkstatus/screenshot.png b/doc/klinkstatus/screenshot.png new file mode 100644 index 00000000..9c3c7bf0 Binary files /dev/null and b/doc/klinkstatus/screenshot.png differ 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 @@ + + + + +&kommander; Basics + + +Tamara +King +
+tik@acm.org +
+
+ +Eric +Laffoon +
+sequitur@kde.org +
+
+ + + +
+
+ +&kommander; Basics + + + + +Concepts + + + +&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 have a dialog or exchange information between you and the main application. The elements on a dialog are called widgets 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 Associated Text but now it is called &kommander; Text. 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 Special 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 FirstName and the second LastName you could create a button and set its &kommander; Text to My name is @FirstName @LastName. 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 Konsole 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 Eric: @FirstName -> @widgetText -> Eric. + + + +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 Where could I find a use for this cool tool? As it turns out, manipulating strings is used just about anywhere you look. + + + +So what can &kommander; do? Here is the list distilled to the base operations. +&kommander; can: + + + +Pass strings to the calling program via stdout. +Call executable programs. +Use &DCOP; to interact with &kde; programs + + + +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. + + + +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 gimp 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 ls -l too but you would only see the output if you were running from a console. + + + +The third case is very interesting indeed. &DCOP; is short for &kde;'s Desktop COmmunication Protocol and it is very powerful. Go ahead and run the kdcop 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. + + + +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 something happened like a widget was created or had its text changed. These changes emit signals 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, Population Text. Population Text will populate a widget when called. Just like &kommander; Text, Population Text can contain text strings or scripts. + + + +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;. + + + +&editor; + + +The Executor + + +The executor, called kmdr-executor, runs &kommander; scripts. It loads .kmdr files and dynamically produces a fully functional dialog. +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. +Version 1.3 supports the #!/path/kmdr-executor 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. + +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;. +The recommended usage is + +#!/usr/bin/kommander + +and create a symlink from kmdr-executor to /usr/bin/kommander. +The shebang can be added to a dialog directly from the editor, by modifying the useShebang and shebang properties for the main dialog. + + + + + +Executor for Programmers + + +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. + +Another approach is to use the kommander_part KReadOnlyPart. This KPart can load and execute any &kommander; dialog inside another KDE application. + + + + + +Creating a Dialog + +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 designer from the command line or from your desktop menu. + + +The extra functionality that &kommander; offers is the Kommander Text 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. + +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. + + + +Executable bit - new in 1.3 + +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. + + +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 is executable 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. + + +chmod u+x *.kmdr + +Do not set dialogs as executable if you are not confident of their origin. + + +
diff --git a/doc/kommander/buttongroup.png b/doc/kommander/buttongroup.png new file mode 100644 index 00000000..d89e28fd Binary files /dev/null and b/doc/kommander/buttongroup.png differ diff --git a/doc/kommander/checkbox.png b/doc/kommander/checkbox.png new file mode 100644 index 00000000..ab6f53e0 Binary files /dev/null and b/doc/kommander/checkbox.png differ diff --git a/doc/kommander/closebutton.png b/doc/kommander/closebutton.png new file mode 100644 index 00000000..63903b30 Binary files /dev/null and b/doc/kommander/closebutton.png differ diff --git a/doc/kommander/combobox.png b/doc/kommander/combobox.png new file mode 100644 index 00000000..7d4890a7 Binary files /dev/null and b/doc/kommander/combobox.png differ 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 @@ + + + + +Command Reference + + +Reference + +&widgets; +&specials; +&dcop-functions; + + diff --git a/doc/kommander/contents.png b/doc/kommander/contents.png new file mode 100644 index 00000000..7596e67a Binary files /dev/null and b/doc/kommander/contents.png differ 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 @@ + + + + +Credits and License + + +Tamara +King +
+tik@acm.org +
+
+ + + +
+
+ +Credits and License + + +The &kommander; Development Team + +Britton, Marc consume@optusnet.com.au +Developer and documentation + + +King, Tamara tik@acm.org +Documentation + + +Laffoon, Eric sequitur@kde.org +Project manager and documentation + + +Mantia, András amantia@kde.org +Developer + + +Rudolf, Michal mrudolf@kdewebdev.org +Developer + + + + +&kommander; 2004 - 2008 &kommander; Development Team. + + + +&kommander; User Manual 2004 - 2008 &kommander; Development Team. + + + + +&underFDL; +&underGPL; + +
diff --git a/doc/kommander/datepicker.png b/doc/kommander/datepicker.png new file mode 100644 index 00000000..4bcc6450 Binary files /dev/null and b/doc/kommander/datepicker.png differ 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 @@ + + + + +&DCOP; Functions + + +&DCOP; Functions + + +&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. + +This is largely focused on the old parser. If you are looking for internal widget functions please see the new parser. This information is particularly relevent to communicating between dialogs and applications, or running other scripting languages inside Kommander as scripts. + +dcop | grep kmdr +dcop `dcop | grep kmdr` +dcop `dcop | grep kmdr` KommanderIf + + +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 kdcop by pressing Alt-F2 and typing it in a run dialog. Here you can explore everything running. Now back to &DCOP; in &kommander;. + + +dcop kmdr-executor-@pid KommanderIf setText myWidget new text + + +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 kmdr-executor-@pid 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. + + +&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) + + +@dcop(@dcopid, KommanderIf, enableWidget(QString, bool), Widget, true) + + +In the early &kommander; nesting &DCOP; calls inside script language structures (like bash) used console method calls. If you use internal &DCOP; all &kommander; specials will be executed first and then the script will be executed. Please read that again as it will cause you no end of grief with a bash loop using &kommander; specials. + + +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. + + +@LineEdit1.setText(New text) + + +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. 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. + + + +&DCOP; for Global Variables + + +global(QString variableName) + + +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 scope 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 @setGlobal. + + + + +setGlobal(QString variableName, QString value) + + +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. + + + + + + + +&DCOP; for all Widgets + + +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 Function Browser 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 KommanderIf &DCOP; interface as described above. Dialogs for listing and constructing calls for this functionality are available at our web site. + + + +setText(QString text) + + +This removes the text displayed in the widget and replaces it with the text supplied. + + + + +enableWidget(bool enable) + + +Enables or disables a widget. + + + + +associatedText + + +Returns the text associated with the specified widget. This is not the same as the displayed text. It would be @widgetText or the text and/or scripting used to arrive at the displayed value. + + + + +setAssociatedText(QString text) + + +This sets the &kommander; Text default string. This is typically set to @widgetText 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. + + + + + + + +&DCOP; for ListBox and ComboBox Widgets + + +addListItem(QString item, int index) + + +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. + + + + +addListItems(QStringList items, int index) + + +This adds a list of strings all at once. The list should be delimited by EOL (\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. + + + + +addUniqueItem(QString item) + + +addUniqueItem will add an item to the end of the list only if it is unique. + + + + +clearList + + +Removes all items. + + + + +removeListItem(int index) + + +Removes the item at the specified index. + + + + +item(int index) + + +Returns the text of the item at the specified index. + + + + +setCurrentListItem(int index) + + +Set the current (or selected) item to the index specified. Applies to ListBox and ComboBox widgets. + + + + + + + +&DCOP; for CheckBox and RadioButton Widgets + + +setChecked(QString widgetName, bool checked) + + +Checks/unchecks CheckBox or RadioButton widgets. + + + + + + + +&DCOP; for TabWidget Widgets + + +setCurrentTab(QString widgetName, int index) + + +Selected the tab by index for TabWidgets. Index starts at 0. + + + + + + + + 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 @@ + + + + +The Editor + + +Tamara +King +
+tik@acm.org +
+
+ + + +
+
+ +The Editor + + +The editor is based on &designer;, a tool for designing and implementing user interfaces created by Trolltech. We have modified &designer; in the following ways: + + +Its interface is much simpler +Built in our own widgets +Added the ability to setup &kommander; Text +Various other superficial changes + + +For those of you already familiar with using &designer;, using the &kmdr-editor; will be trivial. + + + +Main Window + + + + + + + + +Toolbars contain a number of buttons to provide quick access to number of functions. +The File Overview displays all of the files. Use the search field to rapidly switch between files. +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. +The Property Editor is where the behavior and appearance of a widget is changed. +The Dialog Editor is where dialogs are created and edited. + + + + +The File Menu + + + + + +&Ctrl;N + +File +New + +Creates a new dialog + + + + +&Ctrl;O + +File +Open + +Search the file system to open an existing dialog + + + +File +Open Recent + +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. + + + +File +Close + +Closes the active dialog + + + + +&Ctrl;S + +File +Save + +Saves the active dialog + + + +File +Save As + +Saves the active dialog with another name + + + +File +Save All + +Saves all open dialogs + + + +File +Exit + +Quits &kommander; + + + + + + + +The Edit Menu + + + + + +&Ctrl;Z + +Edit +Undo + +Undo the last action performed. + + + + +&Ctrl;Y + +Edit +Redo + +Redo the last action undone. + + + + +&Ctrl;X + +Edit +Cut + +Cut the current item and place it content on the clipboard. + + + + +&Ctrl;C + +Edit +Copy + +Copy the current item to the clipbard. + + + + +&Ctrl;V + +Edit +Paste + +Paste the contents of the clipboard at the current cursor position. + + + + +&Ctrl;Z + +Edit +Delete + +Delete the current item. + + + + +Del + +Edit +Select All + +Select all of the items in the current dialog. + + + + +&Alt;R + +Edit +Check Accelerators + +Verifies that all the accelerators are used only once. + + + +Edit +Connectors + +Displays the view and edit connections dialog. + + + +Edit +Form Setting + +Displays the form setting dialog. + + + +Edit +Preferences + +Displays the preferences dialog. + + + + + + +The Tools Menu + + + + + +F2 + +Tools +Pointer + + + + + + +F3 + +Tools +Connect Signal/Slots + + + + + + +F3 + +Tools +Tab Order + + + + + + +Tools +&kommander; + + +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;. + + + + + +Tools +Custom + + +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. + + + + + + + + + + +The Layout Menu + + + + + +&Ctrl;J + +Layout +Adjust Size + + + + + + +&Ctrl;H + +Layout +Lay Out Horizontally + + + + + + +&Ctrl;L + +Layout +Lay Out Vertically + + + + + + +&Ctrl;G + +Layout +Lay Out in a Grid + + + + + +Layout +Lay Out Horizontally (in Splitter) + + + + + +Layout +Lay Out Vertically (in Splitter) + + + + + + +&Ctrl;B + +Layout +Break Layout + + + + + +Layout +Add Spacer + + + + + + + + +The Run Menu + + + + + +&Ctrl;R + +Run +Run Dialog + +Runs the current dialog. + + + + + + +The Window Menu + + + + + +&Ctrl;F4 + +Window +Close + +Closes current dialog. + + + +Window +Close All + +Closes all dialogs. + + + + +&Ctrl;F6 + +Window +Next + + + + + + +&Ctrl;&Shift;F6 + +Window +Previous + + + + + +Window +Tile + + + + + +Window +Cascade + + + + + +Window +Views + + + + + + +Window +Views +File Overview + + + + + + + +Window +Views +Object Explorer + + + + + + + +Window +Views +Property Editor/Signal Handlers + + + + + + + +Window +Views +Line Up + + + + + + + + + +Window +Toolbars + + + + + + +Window +Toolbars +File + + + + + + + +Window +Toolbars +Edit + + + + + + + +Window +Layout +File + + + + + + + +Window +Toolbars +Tools + + + + + + + +Window +Toolbars +&kommander; + + + + + + + +Window +Toolbars +Custom + + + + + + + +Window +Toolbars +Help + + + + + + + +Window +Toolbars +Line Up + + + + + + + + + + + + +The Settings Menu + + + + +Settings +Configure Shortcuts + +See and modify the editor keyboard shortcuts. + + + +Settings +Configure Plugins + +Add or remove &kommander; plugins. The editor needs to be restarted after a new plugin is added. + + + +Settings +Configure Editor + +Configure the text editor used for modifying the Kommander text associated with widgets. + + + +Settings +Configure &kommander; + +Configure how the editor looks and works. + + + + + + +The <guimenu>Help</guimenu> Menu + + + + + + +&help.menu.documentation; + + + + +
diff --git a/doc/kommander/editor.png b/doc/kommander/editor.png new file mode 100644 index 00000000..6c0db299 Binary files /dev/null and b/doc/kommander/editor.png differ 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 @@ + + + + + + +Andras +Mantia +
amantia@kde.org
+
+ +Michal +Rudolf +
mrudolf@kdewebdev.org
+
+ + + +
+
+Extending &kommander; + + +Creating &kommander; Widgets + +With &kommander; you can create new widgets based on non-&kommander; widgets +fairly easily. + +There are two ways of adding new widgets to &kommander;: by creating +plugins or by adding it directly to the &kommander; source. + + +Create the widget class + + 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. + + +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 Project->New Project, tick the Show all project templates checkbox, +select the C++/&kommander;/KommanderPlugin template. Give a name for your plugin and +follow the instructions in the wizard. + + +All you have to do is fill in the +important parts relating to your widget like any state information, widget text +etc. + + +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: + + +#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 &); +}; + +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. + + +There are a few parts in the cpp file that are important to each particular widget. + + +KomLineEdit::KomLineEdit(QWidget *a_parent, const char *a_name) + : KLineEdit(a_parent, a_name), KommanderWidget(this) +{ + QStringList states; + states << "default"; + setStates(states); + setDisplayStates(states); +} + +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 default. If you were creating a widget +that had different kinds of states, such as a check box, you might +set three states unchecked, semichecked and checked here. + + +QString KomLineEdit::currentState() const +{ + return QString("default"); +} +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 default, but you should put code here +that checks what state your widget is currently in and +return the appropriate string here. + + +QString KomLineEdit::widgetText() const +{ + return KLineEdit::text(); +} + +void KomLineEdit::setWidgetText(const QString &a_text) +{ + KLineEdit::setText(a_text); + emit widgetTextChanged(a_text); +} + +These are the two most important methods, where the bulk of the +functional code goes. +QString KomLineEdit::widgetText() const method returns the widget text of the +widget (the text that the @widgetText 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 widgetTextChanged() +signal after setting the widget text so other widgets can recognize the fact +that this widget was updated. + + +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: + + +#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); +} + +This registers two functions: function1 and function2. The number assigned to the functions (here 1160 and 1161) must be unique, not used in any other plugin or +inside &kommander;. function1 takes two arguments, one is optional, function2 takes no argument and returns a string. The QString widget argument in the signatures notes that this functions work on a widget, like: KomLineEdit.function1("foo", 1). + +To teach &kommander; that the widget supports these functions, add a method like this: + + +bool KomLineEdit::isFunctionSupported(int f) +{ + return (f > FirstFunction && f < LastFunction) || f == DCOP::text; +} + +This means that KomLineEdit supports the above functions and the standard text +function. +The function code should be handled inside the handleDCOP method: + + +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; +} + +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: + + + 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); + +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 execute function. Here is an example from the AboutDialog widget: + + +QString AboutDialog::handleDCOP(int function, const QStringList& args) +{ + switch (function) { + ... + case DCOP::execute: + { + if (m_aboutData) + { + KAboutApplication dialog(m_aboutData, this); + dialog.exec(); + } + break; + } + ... +} + +You now have a complete &kommander; widget. All that's left +to do is make it available to the &kommander; system via plugins. + + + + + +Create the &kommander; plugin + +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. + + +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. + + +&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. + +The following code continues on our example of creating a Kommander line edit +widget. + + +#include <kommanderplugin.h> + +/* WIDGET INCLUDES */ +#include "komlineedit.h" + + + +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. + + +class MyKomPlugin : public KommanderPlugin +{ +public: + MyKomPlugin(); + virtual QWidget *create( const QString &className, QWidget *parent = 0, const char *name = 0 ); +}; + + +We then create a KommanderPlugin sub-class called MyKomPlugin. +This class simply has a constructor and an overridden create method. + + +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 +} + +In the constructor of the plugin, we call addWidget() for each widget we wish +to provide in this plugin. addWidget() 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. + + +Regarding the icon, the above example loads a medium sized icon called iconname from the standard &kde; icon location. + + +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; +} + + +create() 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 create() with the name of the class it wants, +and the parent and name that should be used. +If the className matches any widget we know about, we return a new instance +of that class but otherwise we return 0. + + +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. + + +KOMMANDER_EXPORT_PLUGIN(MyKomPlugin) + + +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: + + +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 + + +If you want to install new plugin system-wide, root, use: + + +su -c "cp libmykomplugin.so $KDEDIR/lib" + +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 make to build, and su -c make install to install. + + +Configure the installed plugins + +Now that the plugin is installed, run the kmdr-plugins program or choose Settings->Configure Plugins 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 Add button in the toolbar and choosing your plugin. +Closing the program saves changes. + + +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. + + + +Add the widget directly to &kommander; +This section is for &kommander; developers and describes how to add a new widget directly to &kommander;. + +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 editor/widgetdatabase.cpp: + + +... +#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); + ... +} + + +You need to add to the editor/widgetfactory.cpp as well: + + +... +#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); + ... +} + + +To register to the executor (actually to the plugin system), add this to +widgets/plugin.cpp: + + +KomStdPlugin::KomStdPlugin() +{ + ... + addWidget("MyWidgetName", group, "", new QIconSet(KGlobal::iconLoader()->loadIcon("iconname", KIcon::NoGroup, KIcon::SizeMedium))); + ... +} + +This is similar to how the widget is registered via the plugin system in the +first case. + + + + +
diff --git a/doc/kommander/frame.png b/doc/kommander/frame.png new file mode 100644 index 00000000..e9fd684d Binary files /dev/null and b/doc/kommander/frame.png differ 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 @@ + + + + + + + +Tamara +King +
+tik@acm.org +
+
+ + + +
+
+ + +Keywords + +Text Association + + +A piece of text that is associated or bound to a widget's particular state. + + + + +Widget Text + + +Text associated to a widget. This is represented in &kommander; with the special @widgetText. The widget text varies depending on the widget. + + + + +
diff --git a/doc/kommander/groupbox.png b/doc/kommander/groupbox.png new file mode 100644 index 00000000..4025b4dc Binary files /dev/null and b/doc/kommander/groupbox.png differ 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 @@ + +Kommander"> + + + + + + + + + + + + + + + + + + &Qt; Designer"> + + + The GIMP"> + IDE"> + PHP"> + PID"> + + +]> + + + + +The &kommander; Handbook + + + +Marc +Britton + +
consume@optushome.com.au
+
+
+ +Tamara +King + +
tik@acm.org
+
+
+ +Eric +Laffoon + +
eric@kdewebdev.org
+
+
+ +András +Manţia + +
amantia@kde.org
+
+
+ + + +
+ + +2008 +&kommander; Development Team + + +&FDLNotice; + + + +2008-02-12 +3.2.95 + + + + +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 http://kommander.kdewebdev.org for up to date information, news on KDE4 development, new tools, plugins, tips and tutorials. + +&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. + + + + + + +KDE +Kommander +Quanta + + +
+ +&introduction; +&basics; +&commands; +&parser; +&extending; +&translating; +&tutorials; +&q-and-a; +&credits; +&installation; +&glossary; + +
\ 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 @@ + + + +Installation + + +How to obtain &kommander; + + + +&install.intro.documentation; + +There is a dedicated homepage for &kommander; at http://kommander.kdewebdev.org. + + + + +Requirements + + + +&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. + + + + + +Compilation and Installation + + + + + +&install.compile.documentation; + + + + diff --git a/doc/kommander/interface.png b/doc/kommander/interface.png new file mode 100644 index 00000000..3cae0ef4 Binary files /dev/null and b/doc/kommander/interface.png differ 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 @@ + + + + +Introduction + + +Eric +Laffoon + +
sequitur@kde.org
+
+
+ + + +
+
+ +Introduction + + +&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: + +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. + + + +Capable internal scripting - &kommander; now offers nested logic structures, simple arrays and useful functions + + +Function Browsers - 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. + + +Extensive widgets - &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. + + +Plugins - &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. + + +Scripting language support - The ability to run multiple scripting language in &kommander; scripts, inside your dialog + + +KPart creation - 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! + + +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. + + + +Specials are prefaced with an @ like @widgetText. The offer +special features like the value of a widget, functions, aliases, global +variables and such. + + +&DCOP; integration allows &kommander; dialogs to control and be +controlled in interactions with other &kde; applications. It is a very powerful +feature! + +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 Population Text it is rather powerful. + + + +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; + + + +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. + + + +&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. + + + +&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. + + + +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;. + + + +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 user list +for help developing &kommander; applications. + + +Best Regards from the &kommander; development team! + +
diff --git a/doc/kommander/kfontcombo.png b/doc/kommander/kfontcombo.png new file mode 100644 index 00000000..87835d6c Binary files /dev/null and b/doc/kommander/kfontcombo.png differ diff --git a/doc/kommander/kommander.png b/doc/kommander/kommander.png new file mode 100644 index 00000000..f14697d6 Binary files /dev/null and b/doc/kommander/kommander.png differ diff --git a/doc/kommander/konsole.png b/doc/kommander/konsole.png new file mode 100644 index 00000000..3e60f289 Binary files /dev/null and b/doc/kommander/konsole.png differ diff --git a/doc/kommander/label.png b/doc/kommander/label.png new file mode 100644 index 00000000..5d7d7b4c Binary files /dev/null and b/doc/kommander/label.png differ diff --git a/doc/kommander/lineedit.png b/doc/kommander/lineedit.png new file mode 100644 index 00000000..dafdfdf3 Binary files /dev/null and b/doc/kommander/lineedit.png differ diff --git a/doc/kommander/listbox.png b/doc/kommander/listbox.png new file mode 100644 index 00000000..d467fc9f Binary files /dev/null and b/doc/kommander/listbox.png differ diff --git a/doc/kommander/listview.png b/doc/kommander/listview.png new file mode 100644 index 00000000..d71cc1c9 Binary files /dev/null and b/doc/kommander/listview.png differ diff --git a/doc/kommander/multilineedit.png b/doc/kommander/multilineedit.png new file mode 100644 index 00000000..e7f6db94 Binary files /dev/null and b/doc/kommander/multilineedit.png differ 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 @@ + + + + +&kommander; New Parser + + +Michal + +Rudolf + +
mrudolf@kdewebdev.org
+
+
+ +Eric + +Laffoon + +
eric@kdewebdev.org
+
+
+ +
+ +2005-2008 +Michal Rudolf +Eric Laffoon + +&FDLNotice; +
+ +New Parser Documentation + +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. + + +&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. + + + +Old parser + +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. + + + +Old parser + +The old parser was in fact macro parser. Only strings beginning with @ were +recognized, locally parsed and expanded. + +@LineEdit1.setText(@ListBox.selection) + + + + +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 before the code is passed to the scripting language, making them impossible to use in loops and conditions. + +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. + + + + +New parser + +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 Function Browser, 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. +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. + +#!/usr/bin/php + + +The following feature list is from version 1.2 + +local and global variables and associative arrays +numerical expressions +string manipulation +various structure commands: if, while, for, foreach +most functions from old parser +direct widget manipulation +many additional functions +decent execution speed +receive parameters from signals in script slots + +This list is from version 1.3 + +pass parameters and receive them with script execute calls +return a value from a script +create widgets on the fly +connect signals and slots on the fly +use a variable alias for a widget name +simple indexed array functions +directly access a widgets slots + + + + +Invoking new parser + +To enable new parser, set useInternalParser property of the dialog to +true. You can also enable new parser in a single script by putting + +#!kommander + +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. + +#!/bin/bash +echo @Self.item(0) +# returns first parameter passed to script +# echo $returnvalue passes back to calling script + + + + + + +New Parser Features + + +Types + +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. + +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 + +to concatonate two strings of text it can treat LineEdit1.text + 2 as +22 instead of 2. See the conversion functions in +String functions to avoid problems. + + + + +Expressions + +The following mathematical operators are supported: +, -, *, mod, . Standard brackets +are of course supported as well. + + + +All kinds of comparisons are supported: <, >, <=, +>=, ==, !=. Instead of +!= you can also use <>. +Also, logical operators and, or, not +are supported, as well as their C equivalents (&&, ||, !). + + + +For strings you can use + operator for string concatenation. + + + +Some examples of valid expressions: + +2+3 +-5 * (2 - 13 mod 3) +"This list has " + 12 + "items." + + + + + +Variables + +Variables don't need to be declared. Once you use variable, it is considered declared. +Type of a variable is recognized automatically and can be changed later. + + + +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: A["Quanta"] = "Web editor". +Arrays are also handled by foreach command and +array functions. + + + +Local and global variables are supported. Global variables are marked by leading underscore. +So, myVar is a local variable, but _myVar is global. The same applies +to arrays. + + + +a = 5 +b = 2 * 5 - (a + 1) +c = "[Item " + b + "]" +d["MyKey"] = "MyValue" +d["MyKey2"] = 5 + + + +Using variables for widgets works much as you would expect. This is useful when looping widgets into a table. + + + +for i=0 to 10 do + mycombo = "ComboTable"+i + createWidget(mycombo, "ComboBox", "Form1") +end + + + + +Comments + +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 what traditional form? see below. You can copy and paste the text below into a button or dialog initialization and see how comments behave in action. + + +// 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") + + +Using the following multi-line comment will not work and will cause the rest of the widget execution to fail. + + +/* +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! +*/ + + + + +Built in Globals + +&kommander; has some built in globals you may find handy. + + + +_ARGS - the argument string passed to the dialog on opening + + +_ARGCOUNT - the count of arguments passed. These can be retrieved as ARG1 to ARGn where n is the total number of args passed + + +_KDDIR - 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. + + +_NAME - there is no reason to use this so don't + + +_PID - the process id the current dialog is being run from - also available as just pid Avoid using this name for your variables! + + +_VERSION - this is handy if you want to display the version of &kommander; that is running + + + + +Passing arguments in &kommander; +You can pass arguments via script parameters, signals and slots, command line parameters and DCOP. Let's look at scripts. Call your script like: +result = ScriptObject1.execute("Hello World") +debug(result) +Inside your script you might have the following +var = str_upper(Self.Item(0)) +return(var) +Now you will get a return in your Stderr message log of HELLO WORLD + +Receiving a signal connected to a script slot works the same way. Self.Item(0) is parameter one and so on. You can retrieve the count of arguments passed with ScriptObject.count. + +Command line parameters allow for named or unnamed arguments. Unnamed look like +kmdr-executor myprog.kmdr 100 red +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. +dialog("mydialog.kmdr", 100+" \"Hello World\"") +This returns _ARG1 = 100 and _ARG2 = Hello World. Without the escaped quotes you would have _ARG2 = Hello and _ARG3 = World. Using Named Parameters is rather nice and potentially less confusing. +dialog("mydialog.kmdr", "xcount=100 xquote=Hello world") +And now you access those with _xcount and _xquote global variables. + + +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. +dcop("kmdr-executor-"+parentPid, "KommanderIf", "setText(QString,QString)", "StatusBar8", "Hello") +Let's look at this piece by piece. First of all we add parentPid 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 KommanderIf, which is a nice 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, "setText(QString,QString)" is important because it prototypes 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 kdcop to see how this works and practice dcop calls from the shell to get your syntax right. + + + + + + +Commands + +Various structure commands are supported. They can be freely nested. + + + +There are also three special commands: exit, break and continue. +The first one ends script execution and returns. The second exits current block (while, +for or foreach and the third exits just a current step, restarting +from the beginning of the loop. + + + + +if + +Command if has following syntax: + + + +if condition then +code elseif condition +then code else +code endif + + + +Both elseif and else parts are optional. Condition +is any expression. Code is executed if condition is true. That means: + +non-zero for integers and double +non-empty for strings + + + + +if a * 2 > 7 then + b = 1 +elseif a < 0 then + b = 2 +elseif + b = 0 +endif + + + + +while + +while condition do +code end + + + +Condition is recalculated each time loop is executed. + +while i < 15 do + i = i + a +end + + + + + + + +for + +Command for has following syntax: + + + +for variable = +start value to end value +step expression do +code end + + + +Loop is executed starting from start value and it is ended when variable's value is +bigger then end value. If step part is specified, on each step +variable's value is increased by given value instead of 1. + +foreach i = 1 to 20 step 5 do + a = a + 2 * i +end + + + + + +foreach + +Command foreach has following syntax: + + + +for variable in +array do +code end + + + +Loop is executed for each key in given array. In each step variable is assigned the next key from the array. + + +sum = 0 +foreach i in myArray do + sum = sum + myArray[i] +end + + + + + + + +Functions + +Most old parser functions are supported by new parser. Also, some new functions were added. + + + + +String functions +String functions are the same as in old parser, the only difference is that their names +are preceeded by str_ instead of @String. + + + +str_length(string) - returns length of string + + +str_contains(string, text) - returns 1 if string contains text + + +str_find(string, text, start) - returns position of the first occurrence of text in string; optional start + specifies start of the search + + +str_find(string, text, start) - returns position of the last occurrence of text in string; optional start + specifies start of the search + + +str_left(string, count) - returns first count characters of string + + +str_right(string, count) - returns last count characters of string + + +str_right(string, start, count) - returns substring of string starting from start and containing count +characters (or everything to the end of the string if last parameter is not specified) + + +str_remove(string, text) - returns string with all substrings equal to text removed + + +str_replace(string, text, text2) - returns string with all substrings equal to text replaced with text2 + + +str_lower(string) - returns string converted to lowercase + + +str_upper(string) - returns string converted to uppercase + + +str_section(string, separator, start, +end) - returns substring containing appropriate sections of string determined +by separator; if no end is given, single start section is returned + + +str_args(string, ...) - returns string with %1, %2, %3 replaced with following parameters. + + +str_isnumber(string) - returns 1 if string is a valid number + + +str_isempty(string) - returns 1 if string is empty + + +str_toint(string, default) - returns string converted to integer; if conversion is not possible, optional default value is returned + + +str_todouble(string, default) - returns string converted to double; if conversion is not possible, optional default value is returned + + + + + +&kommander; functions + +Most &kommander; functions are supported; some (such as expr) +were obsoleted by new parser and are not available. + + + + +debug(string, ...) - writes all parameters on stderr + + +echo(string, ...) - writes all parameters on stdout + + +dcop(string, ...) - calls DCOP function + + +exec(string, shell) - executes external program +(using optional shell); block the execution of the current dialog until the program passed as the parameter exits; returns output of that program + + +i18n(string) - marks string for future translation + + +env(string) - returns a value of environmental variable + + +readSetting(key, default) - returns a value stored in config +file with given key; if there is no such value default is returned + + +writeSetting(key, value) - writes pair +key and value in config file + + +New in &kommander; 1.3 + + +execBackground(string, shell) - executes external program +(using optional shell) in the background, without blocking the current dialog; contrary to the above exec function, it will not return the output of the program. + + +return(value) - returns a value to the calling object (script, button...) + + +createWidget(widgetname, widgettype, parent) - creates a new widget. You can then place it in a table or toolbox, for example and use mywidget.show(true) 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. + + +connect(sender, signal, receiver, slot) - 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 execute(const QString&) that is exactly what must be in quotes there. + + +disconnect(sender, signal, receiver, slot) - undo the connection as listed above. Again, exact syntax is essential. + + +widgetExists(widgetname) - 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. + + + + + +Array functions + +Most array functions are supported; some (such as value) +were obsoleted by new parser and are not available. The only difference is that their names +are preceeded by array_ instead of @Array. + + +Due to parser limitation, name of array has to be specified as string now; for example +array_count("MyArray"). + + + +array_clear(array) - removes all elements from array + + +array_count(array) - returns number of elements in array + + +array_keys(array) - returns string containing EOL-separated keys of array - 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 array_values("myarray") as you might think (since it seems to only have values) but would instead need to use array_keys("myarray"). You might find a better choice for this is to use the new indexed arrays described below. + + +array_values(array) - returns string containing EOL-separated values of array + + +array_tostring(array) - returns string containing whole array +as EOL-separated pairs containing key and value separated with TAB character + + +array_fromstring(array, string) - reads array from string (usually provided by array_tostring function) + + +array_remove(array, key) - removes item with key +key from array + + +Here is an example for array manipulation: + +array_fromstring("myArray", "1\tA\nsecond\tB\n3\tC") +foreach key in myArray do + debug("myArray[" + key + "]= " + myArray[key]) +end + +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. + +myArray[1]= A +myArray[3]= C +myArray[second]= B + +Another example for keyless arrays: + +array_fromstring("myArray", "A\nB\nC") +foreach key in myArray do + debug(key) +end +debug("Array elements:\n" + array_keys("myArray")) + +This results in: + +A +B +C +Array elements: +A +B +C + + +New in &kommander; 1.3 + + +array_indexedFromString(array, string, separator) - 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. 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. + + +array_indexedInsertElements(array, key, string, separator) - 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. + + +array_indexedRemoveElements(array, key start, number) - 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. + + +array_indexedToString(array, separator) - 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 TreeWidget1.selection to get the selected row. it will be separated by tabs and you could look at a the fifth element by using str_section(TreeWidget1.selection, "\t", 4) (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 val1+"\t"+val2... Using indexed arrays you could edit that fifth element like so... + +idx = TreeWidget1.currentItem +array_indexedFromString("z", TreeWidget1.selection) +z[4] = "new value" +TreeWidget1.removeItem(idx) +TreeWidget1.insertItem(array_indexedToString("z"), idx) + +Note that only two short lines were added to accomplish this! This was very welcome for database use. + + + + + + +File functions + +All file functions are supported, the only difference is that their names +are preceeded by file_ instead of @File. + + + + +file_read(name) - returns content of file name + + +file_write(name, ...) - writes all arguments +to file name + + +file_append(name, ...) - appends all arguments +to file name + + + + + + +Input functions + +These functions show some dialog allowing user to enter some value. They are accessible in the old parser using @Input.. For most functions all parameters are optional, exception is +input_text which requires 2 parameters and input_value which requires 5 parameters. + + + + +input_color(caption, default) - returns color in #RRGGBB format + + +input_text(caption, label, default) - returns text entered by user + + +input_value(caption, label, default, +min, max, step) - returns value entered by user + + +input_directory(startdir, filter, caption) - returns directory selected by user + + +input_openfile(caption, label, default) - returns existing file entered by user + + +input_savefile(caption, label, default) - returns file entered by user (if file exists, confirmation will be required) + + +input_openfiles(caption, label, default) - returns string of EOL-separated existing files entered by user + + + + + + +Message functions + +These functions show some message for user or ask user to confirm some action. In the old parser use @Message. instead. + + + + +message_info(text, caption) - shows information text + + +message_error(text, caption) - shows error text + + +message_warning(text, caption, button1, +button2, button3) - shows question with warning and up to three buttons; number +of chosen button is returned; if no button names are specified, Yes and No will be displayed + + +message_question(text, caption, button1, +button2, button3) - shows question and up to three buttons; number +of chosen button is returned; if no button names are specified, Yes and No will be displayed + + + + +
+ + + diff --git a/doc/kommander/pixlabel.png b/doc/kommander/pixlabel.png new file mode 100644 index 00000000..32b90d82 Binary files /dev/null and b/doc/kommander/pixlabel.png differ diff --git a/doc/kommander/progress.png b/doc/kommander/progress.png new file mode 100644 index 00000000..29416702 Binary files /dev/null and b/doc/kommander/progress.png differ diff --git a/doc/kommander/pushbutton.png b/doc/kommander/pushbutton.png new file mode 100644 index 00000000..61f779ce Binary files /dev/null and b/doc/kommander/pushbutton.png differ 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 @@ + + + + +Questions and Answers + + +Questions and Answers +The list of Frequently Asked Questions can be found on our home page. + + diff --git a/doc/kommander/radiobutton.png b/doc/kommander/radiobutton.png new file mode 100644 index 00000000..10c1d8c3 Binary files /dev/null and b/doc/kommander/radiobutton.png differ diff --git a/doc/kommander/richtextedit.png b/doc/kommander/richtextedit.png new file mode 100644 index 00000000..73573a8a Binary files /dev/null and b/doc/kommander/richtextedit.png differ diff --git a/doc/kommander/shadow.png b/doc/kommander/shadow.png new file mode 100644 index 00000000..37c44694 Binary files /dev/null and b/doc/kommander/shadow.png differ diff --git a/doc/kommander/shellscript.png b/doc/kommander/shellscript.png new file mode 100644 index 00000000..59de8cfe Binary files /dev/null and b/doc/kommander/shellscript.png differ diff --git a/doc/kommander/slider.png b/doc/kommander/slider.png new file mode 100644 index 00000000..525bd1ca Binary files /dev/null and b/doc/kommander/slider.png differ 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 @@ + + + + +Specials and Built-in Global Variables + + +Specials and Built-in Global Variables + + +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. + +The below list might be slightly outdated. It is recommended to use the Function Browser to get help about the available functions. +The Function Browser can be reached from inside the Kommander Text editor, by clicking the Function... button. + + + + + +@dcop(appId, object, function, arguments) + + +Make a &DCOP; call. @dcop(kmail, KMailIface, checkMail(), ) + + + + + +@dcopid + + +The &DCOP; id of the process. (kmdr-executor-@pid) + + + + + +@dialog(dialog[,parameters]) + + +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 variable=value. You can then find passed parameters in the global pool. @global(variable) would return value. + + + + + +@env(environmentVariable) + + +Expands to the specified environment variable. @env(PWD) expands to $PWD. Remember that $ is part of the shell and shouldn't be used. + + + + + +@exec(command) + + +returns the output of executing the specified command. @exec(ls -l). + + + + + +@execBegin ... @execEnd + + +same as @exec, but supports shebang and multiline scripts. This serves for various scripting languages either by decalring them or using a shebang. + + +@execBegin(php) +@execBegin(#!/usr/bin/php) + +The first one uses the name of the PHP executable. &kommander; searches PATH for php 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 shebang which can have some benefits and also problems. If you have a beta copy of PHP5, for instance, in /usr/local/bin which would not be found because it would find on in /usr/bin this is useful. If, however, you distribute the dialog to someone who has PHP in /usr/local/bin 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. + + + + +@global(variable) + +expands to the value of the specified global variable. + + + + + +@null + +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. + + + + +@parentPid + + +The &PID; of the parent process. + + + + + +@pid + + +The &PID; of the process. + + + + + +@readSetting(key, defaultValue) + + +reads a value from kommanderrc. See also @writeSetting. + + + + + +@selectedWidgetText + + +the selected content in a widget that can show more than one value, like list widgets + + + + + +@setGlobal(variable, value) + + +Sets the global variable to the specified value. + + + + + +@widgetText + + +the content of a widget + + + + + +@writeSetting(key, value) + + +write value to kommanderrc. All &kommander; dialogs share the same kommanderc file, each one will have its own section inside it. + + + + + + +Array Function Group + + + +@Array.values(array) + +Returns an EOL-separated list of all values in the array. Can be used to walk through an array. + + + + +@Array.keys(array) + +Returns an EOL-separated list of all keys in the array. + + + + +@Array.setValue(array, key, value) + +Sets a key and value for an element of an array. If no array exists it is created. + + + + +@Array.clear(array) + +Remove all elements from the array. + + + + +@Array.count(array) + +Return number of elements in the array. + + + + +@Array.value(array,key) + +Return the value associated with the given key. + + + + +@Array.remove(array,key) + +Remove element with the given key from the array. + + + + +@Array.fromString(array,string) + +Add all elements in the string to the array. String should have key\tvalue\n format." + + + + +@Array.toString(array,string) + +"Return all elements in the array in key\tvalue\n format." + + + + + + + +File Function Group + + + +@File.read(file) + +Return content of the given file. + + + + +@File.write(filestring) + +Write given string to a file. + + + + +@File.append(filestring) + +Append given string to the end of a file. + + + + + + + +String Function Group + + + +@String.length(string) + +Return number of chars in the string. + + + + +@String.contains(string,substring) + +Check if the string contains given substring. + + + + +@String.find(string) + +Return position of a substring in the string, or -1 if it isn't found." +This will have an optional integer start postion for find next uses in Alpha 6. + + + + +@String.left(string, int) + +Return first n chars of the string. + + + + +@String.right(string, int) + +Return last n chars of the string. + + + + +@String.mid(string, int start, int end) + +Return substring of the string, starting from given position. + + + + +@String.remove(string, substring) + +Remove all occurences of a given substring. + + + + +@String.replace(string, substring find, substring replace) + +Replace all occurences of a given substring with a given replacement. + + + + +@String.upper(string) + +Convert the string to uppercase. + + + + +@String.lower(string) + +Convert the string to lowercase. + + + + +@String.compare(string, string) + +Compare two strings. Return 0 if they are equal, -1 if the first one is lower, 1 if the first one is higher + + + + +@String.isEmpty(string) + +Check if string is empty. + + + + +@String.isNumber(string) + +Check if string is a valid number. + + + + + + + +Built-in Globals +Built-in globals are accessed just like regular global variables with @global. + + +@global(_KDDIR) + +The directory the current dialog is in. + + + +@global(_NAME) +The name of the dialog + + + + + diff --git a/doc/kommander/spinbox.png b/doc/kommander/spinbox.png new file mode 100644 index 00000000..7ae20630 Binary files /dev/null and b/doc/kommander/spinbox.png differ diff --git a/doc/kommander/statusbar.png b/doc/kommander/statusbar.png new file mode 100644 index 00000000..ac08552d Binary files /dev/null and b/doc/kommander/statusbar.png differ diff --git a/doc/kommander/table.png b/doc/kommander/table.png new file mode 100644 index 00000000..4bbd9c2d Binary files /dev/null and b/doc/kommander/table.png differ diff --git a/doc/kommander/tabwidget.png b/doc/kommander/tabwidget.png new file mode 100644 index 00000000..1254bb63 Binary files /dev/null and b/doc/kommander/tabwidget.png differ diff --git a/doc/kommander/textbrowser.png b/doc/kommander/textbrowser.png new file mode 100644 index 00000000..090e2f84 Binary files /dev/null and b/doc/kommander/textbrowser.png differ diff --git a/doc/kommander/textedit.png b/doc/kommander/textedit.png new file mode 100644 index 00000000..823d0818 Binary files /dev/null and b/doc/kommander/textedit.png differ diff --git a/doc/kommander/timer.png b/doc/kommander/timer.png new file mode 100644 index 00000000..e2e17452 Binary files /dev/null and b/doc/kommander/timer.png differ diff --git a/doc/kommander/toolbox.png b/doc/kommander/toolbox.png new file mode 100644 index 00000000..2ab71dc7 Binary files /dev/null and b/doc/kommander/toolbox.png differ 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 @@ + + + + + + +András +Mantia +
amantia@kde.org
+
+ +Michal +Rudolf +
mrudolf@kdewebdev.org
+
+ + + +
+
+Translating &kommander; dialogs + + +Translating &kommander; dialogs + +&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. + + +Here is a short description about the needed steps to make a dialog translatable and translated it: + +How to prepare dialog to be translated? +Always use @i18n("This is my text") when you use some English text. This marks "This is my text" as a text to be translated. + + +How to extract the messages and create the .po file? + + Use the kmdr2po script to extract the strings. The script is inside the working directory of the source release tarball and should be installed to $KDEDIR/share/apps/kommander/translating as well. + + +Just run: + +kmdr2po <your-kommander-dialog.kmdr> + +An appropriate <your-kommander-dialog.po> file will be created. + + + + +How to translate it? +Use KBabel to translate it. Use msgfmt to compile the translation. Look at http://i18n.kde.org for help on this subject. + + +How to install the translation? +Put the compiled *.mo file either to +$KDEDIR/share/locale/<your language>/LC_MESSAGES/ (will be available globally for all users) +or to +$HOME/.kde/share/locale/<your language>/LC_MESSAGES/ (will be available only for the current user) +directory. + + + + + +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: + +kmdr-executor mydialog.kmdr -c quanta + + + + + +
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 @@ + + + + +Tips and Tutorials + + +Eric +Laffoon +
+eric@kdewebdev.org +
+
+ + + +
+
+ +Tips on use &kommander; +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. + + +Using the Editor + +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. + + + + +Editor Tools + +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. + + +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. + + + + +Adding Custom Tools + +&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. + + + + +Included custom tools + +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. + + + + +Using Layout + +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! + + +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. + + +Use the Grid. This will place everything in a best guess location +Remember containers are separate. A TabWidget, GroupBox or layout group has it's own layout. So don't forget the window. +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. +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, + +And now for a few tricks and tips. + +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. +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. +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. +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. + +For more on this look up the Qt Designer docs for Qt 3.x. + + + +Signals and Slots + +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. + + +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. + +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. These must be typed verbatim or they will fail. 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 execute(const QString&) that is exactly what you must type. + + + +Slot Functions + +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. + + + + + +Basic Tutorials + +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 tutorial 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 New Parser docs for more information on the two parsers. + + +When examining example dialogs remember to look in the following places to see how things are done. + + +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. +Buttons - middle click the button, or right click. Scripts are typically here. +Widgets - some widgets like Timers and Konsoles will hold instructions inside them. +Signals and Slots - this is how Qt/KDE programs internally communicate. + + +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. + + + +Globals +Shows using global and setGlobal &DCOP; calls to provide global variables for script +
+Functions/concepts: +- global +- setGlobal +- changeWidgetText +
+
+ + +&DCOP; +Shows how to use both local and external &DCOP; calls to communicate with external application (here: KMail). +
+Functions/concepts: +- external DCOP +- addListItem +- enableWidget +- @selectedWidgetText +- @widgetText +
+
+ + +Slots +Shows how to us connections/slot to handle events. Both population and standard slots are used. +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. Don't use it! +
+standard slots are used. +- slots/connections +- populate() +
+
+ + +Settings +Shows how to use @readSetting and @writeSetting functions to write/restore widget content. Also, show how to use populate() slot to initialize widget content. +
+Functions/concepts: +- @readSetting +- @writeSetting +- populate() +- slots/connections +- destroy +
+
+ + +Append +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. +
+Functions/concepts: +- changeWidetText +- RichTextEdit +
+
+ + +Command Line +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 passing arguments in the new parser for more on this. +
+Functions/concepts: +- command-line arguments +- global +- changeWidgetText +- addListItem +- clearList +
+
+ + +Initialize + +Shows how you use 'initialization' to 'destroy' scripts of main dialog to initialize and store some settings. + +
+Functions/concepts: +- initialization +- destroy +- readSetting +- writeSetting +
+
+ + +Array + +Shows how to use associative arrays to store and restore information +associated with container items. +
+Functions/concepts: +- @Array functions +
+
+ + +Strings + +Shows how to use string-handling functions +Functions/concepts: + +
+- @String functions +- rich text editor +
+
+ + +Tree + +Shows how to use tree widget + +
+- tree widget +- FileSelector +- initialization +- env +
+
+ + +Widgets + +Shows how to get widget information + +
+- type method +- children method +
+
+ + +StatusBar + +Shows how to use statusbar widget + +
+- statusbar widget +- populate +
+
+ + +Loop + +Shows how to use internal loops + +
+- for +- forEach +
+
+ + +Calc + +Shows how to use @expr function to do some calculations + +
+- expr +- String.replace +
+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. +
+ + +Picview + +Shows how to use PixmapLabel widget using populate() function + +
+- PixmapLabel +- populate +- FileSelector +- slots/connections +
+
+ + +Table + +Shows how to use Table widget + +
+- insertRow +- insertColumn +- currentRow +- currentColumn +- setColumnCaption +- setRowCaption +- removeRow +- removeColumn +
+
+ +
+ + +Current Examples + +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. + + +The examples are installed to $KDEDIR/share/apps/kmdr-editor/editor. In case you do not have them there, get from our home page, by downloading the latest release. + + + + +editor-poc.kmdr + +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. + +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. + +There is a quick help dialog this editor launches that discusses in depth what is happening inside. + + + + +kevaluecombo.kmdr + +&kommander; can be used with databases and has an optional database plugin. 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. + + +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 ScriptObject36. We will extract the key code here. + + +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 + + +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. + + + + +Kpart demo + +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. + + +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. + + + +passvariables.kmdr + +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 here. + + + + +tableselect.kmdr + +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. + + + + +
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 @@ + + + + +Widgets + + +Widgets + + +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 text association. 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. + + + +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 race problems on open and mean that you do not require any special procedures on close to manage housekeeping. +In case of using a MainWindow based application (created with &Qt; Designer), there are no Initialization and Destroy states, instead the initialize and destroy signals can be used to get information when is the application constructed or closed + + + +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 Function Browser. 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. + + + + + + + + + +Label + + + +A simple widget that contains a piece of text. This widget lets you set a pixmap too. + + +See the QLabel documentation to learn more about text labels in &Qt;. + + + + + + + + + +PixmapLabel + + + +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. + + +See the QLabel documentation to learn more about text labels in &Qt;. + + + + + + + + + + +LineEdit + + + +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. + + +LineEdit has one state, default. + + +The widget text for LineEdit is the text contained in the editor. + + +See the KLineEdit documentation to learn more about text labels in &kde;. + + + + + + + + + +TextEdit + + + +A simple multi-line text editor. + + +See the KTextEdit documentation to learn more about multiline text edit in &kde;. + + + + + + + + + +TextBrowser + + + +A simple reach text browser with hyperlink navigation. + + +See the KTextBrowser documentation to learn more about it. + + + + + + + + + +ListBox + + + +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. + + +A ListBox has only one state, default. + + +The widget text for a ListBox is the items contained in the ListBox. @selectedWidgetText will return only the items that are currently selected. + + +See the KListBox documentation to learn more about it. + + + + + + + + + +ComboBox + + + +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. + + +ComboBox has one state, default. + + +The widget text for a ComboBox is the text of the selected item. + + +See the KComboBox documentation to learn more about it. + + + + + + + + + +TreeWidget + + + +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 / as a separator. To add column data use the escaped tab \t character between columns. + + +See the KListView documentation to learn more about it. + + + + + + + + + + +Table + + + +A table widget that support different widgets in its cells. + + +See the QTable documentation to learn more about it. + + + + + + + + + +ExecButton + + + +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. + + +ExecButton has one state, default. + + +There isn't widget text associated with ExecButton. + + +See the KPushButton documentation to learn more about it. + + + + + + + + + +CloseButton + + + +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. + + +CloseButton has one state, default. + + +There isn't any widget text associated with a CloseButton. + + +See the KPushButton documentation to learn more about it. + + + + + + + + + +Konsole + + + +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. + + + + + + + + + +FileSelector + + + +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. + + +FileSelector has one state, default. + + +The widget text for a FileSelector is the text contained in the LineEdit (the file chosen by the user). + + + + + + + + + +CheckBox + + + +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. + + +A CheckBox has 3 states, checked, semichecked, and unchecked. + + +The widget text for a CheckBox is the value from the text property. + + +See the KCheckBox documentation to learn more about it. + + + + + + + + + +RadioButton + + + +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. + + +RadioButton has 2 states checked and unchecked. + + +There is no widget text associated with a RadioButton. + + +See the KRadioButton documentation to learn more about it. + + + + + + + + + +ButtonGroup + + + +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.) + +ButtonGroup has one state, default. + +The widget text for a ButtonGroup is the text associations for each of the buttons in the order they appear in the ButtonGroup. + + + + + + + + + +GroupBox + + + +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. + + +GroupBox has one state, default. + + +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. + + + + + + + + + +TabWidget + + + +A widget that provides multiple tabs each may contain other widgets. + + +See the KTabWidget documentation to learn more about it. + + + + + + + + + +SpinBoxInt + + + +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. + + +This widget has only one state, default. + + +The widget text for a SpinBoxInt is the currently displayed integer. + + +See the QSpinBox documentation to learn more about it. + + + + + + + + + +Slider + + + +A widget that provides horizontal or vertical slider. + + +See the QSlider documentation to learn more about it. + + + + + + + + + +RichTextEditor + + + +This widgets provides a text editor that allows for simple text formatting. + + +RichTextEditor has one state, default. + + +The widget text for RichTextEditor is the text contained in the editor in rich text format. Selected text can be returned with @selectedWidgetText. + + + + + + + + + +StatusBar + + + +A widget to display status information, usually used at the bottom of the dialogs. + + +See the KStatusBar documentation to learn more about it. + + + + + + + + + +ProgressBar + + + +A widget to display progress information. + + +See the KProgress documentation to learn more about it. + + + + + + + + + +ScriptObject + + + +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 execute function. Arguments can be passed to the ScripObject with the above method and accessed inside the ScriptObject as @Self.item(0), @Self.item(1), etc. if using the old style parsing or Self.item(0, Self.item(1), etc. with the new parser. + + +Signals can be connected to the execute function as well, as it acts also as a slot. + + + + + + + + + +Timer + + + +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 interval in milliseconds, choose if it should run once (singleShot) or not. Connect its timeout signal to a slot, which will be executed once the specified time passes. + + +The timer is not started by default, run the execute function to start it. + + +See the QTimer documentation to learn more. + + + + + + + + + +DatePicker + + + +A widget used to select a date. The default date can be set in the date property or with the setText function in ISO format: YYYY-MM-DD. + + +The widget text is the currently displayed date. + + +See the KDatePicker documentation to learn more. + +New in Kommander 1.3. + + + + + + + + +AboutDialog + + + +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 execute function is called. +The initialize function must be called before anything else, including the execute function. + +New in Kommander 1.3. + + + + + + + + +FontDialog + + + +A pseudo-widget, that can be used to get a font selection dialog. The default font can be set with the setFont function, and the selected font's properties retrieved with the family, pointSize, bold, italic functions. The dialog is shown when the execute function is called. + +New in Kommander 1.3. + + + + + + + + +PopupMenu + + + +A pseudo-widget, that can be used to display a menu. Use the insert... functions to add menu entries. Whenever the user clicks on a menu entry, the specified executeWidget's execute function will be run. It is possible to connect the menu entries to the popupmenu's own execute function, in which case the text assigned to the default 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 keyvaluecombo.kmdr included with this release. To find it look on the tools menu of the editor for the examples dialog. + +To show the menu, use popup slot. Usually this is connected to another widget's contextMenuRequested signal. +A menu can contain other PopupMenu submenus. +New in Kommander 1.3. + + + + + + + + +ToolBox + + + +A container widget, like TabWidget. It has several pages, each page can hold other widgets. + +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 addWidget command. If there is time an example will be added to the 1.3 release, or check the web site. +See the QToolBox documentation to learn more about it. +New in Kommander 1.3. + + + + + + diff --git a/doc/kxsldbg/1downarrow.png b/doc/kxsldbg/1downarrow.png new file mode 100644 index 00000000..b8a8b0ff Binary files /dev/null and b/doc/kxsldbg/1downarrow.png differ 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 new file mode 100644 index 00000000..b4033935 Binary files /dev/null and b/doc/kxsldbg/breakpoints_window.png differ 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 @@ + + + + + +Keith +Isdale + +
k_isdale@tpg.com.au
+
+
+ +
+
+ +Working With the Callstack + + +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. + + +The Callstack Window + + + + +The Callstack Window + + + + +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. + +
+ diff --git a/doc/kxsldbg/callstack_window.png b/doc/kxsldbg/callstack_window.png new file mode 100644 index 00000000..0bccd8e5 Binary files /dev/null and b/doc/kxsldbg/callstack_window.png differ diff --git a/doc/kxsldbg/configure.png b/doc/kxsldbg/configure.png new file mode 100644 index 00000000..37fd0bc6 Binary files /dev/null and b/doc/kxsldbg/configure.png differ diff --git a/doc/kxsldbg/configure_window.png b/doc/kxsldbg/configure_window.png new file mode 100644 index 00000000..3910c99f Binary files /dev/null and b/doc/kxsldbg/configure_window.png differ 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 @@ + + + + + +Keith +Isdale + +
k_isdale@tpg.com.au
+
+
+ +
+
+Credits and Licenses + +&kxsldbg; © 2004 Keith Isdale +Documentation © 2004 Keith Isdale + + + +Thanks to: + + +The writers the libxml and +libxslt. + + + + +Robert Jacolin for feedback on earlier version of &kxsldbg;. + + + + +Igor Zlatkovic for creating WIN32 binaries of +libxml/xslt and &xsldbg;. + + + +&underFDL; +&underGPL; + +
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 @@ + + + + + +Keith +Isdale + +
k_isdale@tpg.com.au
+
+
+ +
+
+Working With &XML; Data Files (Entities) + + If the inspector dialog is not showing use the +Tools Show inspectors + menu item. To work with entities click on the +Entities tab of dialog shown. + + 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 testdoc.xsl with +testdoc.xml (found in the +<KDE PREFIX>/share/apps/kxsldbg folder so that you can see some entities. + + +The Entities Window + + + + +The Entities Window + + + + +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. + +
diff --git a/doc/kxsldbg/entities_window.png b/doc/kxsldbg/entities_window.png new file mode 100644 index 00000000..29d57f6b Binary files /dev/null and b/doc/kxsldbg/entities_window.png differ diff --git a/doc/kxsldbg/exit.png b/doc/kxsldbg/exit.png new file mode 100644 index 00000000..6ea935d1 Binary files /dev/null and b/doc/kxsldbg/exit.png differ 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 @@ + + + + + +Keith +Isdale + +
k_isdale@tpg.com.au
+
+
+ +
+
+ + +Keywords + +&xsldbg; + + +See . + + + + + +XPath + + +A valid expression that defines what data is required. See +W3C web site. + + + + + +QName + + +A fully qualified name. For example, xsl:myvariable. +See W3C web site + + + + +
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 @@ + +KXSLDbg"> + + + + + + + + + + + + + + + xsldbg"> + DTD"> + XSD"> + XSLT"> +]> + + + + +The &kxsldbg; Handbook + + + +Keith +Isdale + +
k_isdale@tpg.com.au
+
+
+ + + +
+ + +2002 +2003 +2004 +Keith Isdale + + +&FDLNotice; +2004-11-18 +0.5 + + + +&kxsldbg; is a provides a graphic user interface front-end to +&xsldbg;, which supports +debugging of &XSLT; scripts. + + + + +KDE +xsldbg +libxslt +debugger + +
+ + +Introduction + + +Features + + +&kxsldbg; provides access to most of &xsldbg;'s commands to + + + + +Set and modify breakpoints + + + + +Display value of XPaths + + + + +Display information about the templates, variables, +callstack entries, stylesheets and entities present + + + + +Set and modify breakpoints and variables + + + + +Move around &XSL; source and &XML; document via XPaths + + + + +Lookup PUBLIC and SYSTEM ID's in the current &XML; catalog + + + + + + + +Recently added features +&kxsldbg; can now + + + + +Set and modify variables + + + + +Renders the text in the main window using the &kate; libraries + + + + + + + + + +Using &kxsldbg; +&configure-section; +&mainwindow-section; +&inspector-section; +&variables; +&callstack; +&templates; +&sources; +&entities; +&tools-section; + + +&credits-chapter; + +
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 @@ + + + + + +Keith +Isdale + +
k_isdale@tpg.com.au
+
+
+ +
+
+ +Configuring a &kxsldbg; Session + + +You start configuration by clicking + +Debug +Configure + in the Menubar. + + + +The Configuration Dialog + + + + +The Configuration Dialog +The Configuration Dialog. + + + + +Getting Started + + +To be able to run a stylesheet you need to specify the: + +&XSL; source +&XML; data +Output file + + + + By using the ... button to choose file +desired. The &XSL; source and >&XML; data may refer +to URI that contains a http://, ftp:// or file://. The Output file +must refer to a writable local file. + +To follow along with the examples, select the following files in the +example <KDE PREFIX>/share/apps/kxsldbg folder + +&XSL; source: testdoc.xsl +&XML; data: testdoc.xml +Output file: /tmp/xsldbg_output.txt + + + + + +Working With Options + + +You can select zero or more options from the Options dialog. Each option has a tooltip with a hint on what effect it has. + + + + +Working With Parameters + + +You can add zero or more parameters via the LibXSLT Parameters +section of dialog. This allows you to provide parameter values to the +stylesheet. + + + +For example you could add a enter a Parameter name of myparam +with a Parameter value of 'Hello World!' and click the Add button. +. To update the value of an existing +parameter just use the navigate to the value you wish to change with the Prev or Next button, provide a new Parameter value then click the Apply. + + + + +Apply Changes + + +For the changes you have made to take effect press the Apply +button. To ignore any changes press the Cancel button. + + + +You can close the dialog using the X provided at the top right of the window. If you need to change the configuration just re-open the +configuration dialog as shown before. + + +
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 @@ + + + + + +Keith +Isdale + +
k_isdale@tpg.com.au
+
+
+ +
+
+Setting and Modifying Breakpoints + + +The primary way to work with breakpoints is via the main window. See + + + + +Once you have started the style sheet, you can use the + +Tools +Show inspectors + +menu item. Then click on the Breakpoints tab. See below for an example. + + + +Setting Breakpoints + + + + +Setting Breakpoints + + + + +Adding a Breakpoint + + +You can add a breakpoint by supplying any of: + +a file and line number + +a template name + +a template name and a mode name + +a mode name + + + + + +And then pressing the Add button. + + + + +Argument Details + + +A file name may be absolute path to a local file. Or partial file (⪚ +xsldoc.xsl). + + + +A template or mode name may is fully Qualified Name where the non-local +part is optional ⪚ xsl:mytemplate is matched by +mytemplate + + + + +Deleting a Breakpoint + + +Firstly left mouse click the breakpoint you want to delete in the list of +current breakpoints. Then click the Delete button. + + + + +Deleting All Breakpoints + + +Click the Delete All button. + + + + +Enabling or Disabling a Breakpoint + + +Firstly &LMB; click the breakpoint you want to delete in the list of +current breakpoints. Then click the Enable button. + + +
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 @@ + + + + + +Keith +Isdale + +
k_isdale@tpg.com.au
+
+
+ +
+
+Using the Main Window + + +The Main Window + + + + +A text view of the current file being debugged +A text view of the current file being debugged. + + + + +Working With the Main Window + + +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 +SettingsConfigure +Editor dialog, on the +Colors page. + + +You can set, disable or delete a breakpoint using keys, the Debug menu or the buttons on the tool bar. + +You can move the cursor around the text using the following keys: + + +Arrow keys: Left Arrow, Right Arrow, Up Arrow or Down Arrow. +Page keys: Page Up or Page Down + + + + + + +Working With &kxsldbg; Output + + +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: + + +An error message that comes from &kxsldbg; is displayed inside a message dialog. + + +The result of evaluating an expression is displayed in a message dialog. + + +The output of search is sent to the file indicated in the &kxsldbg; output window. + + + + + + + +
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 @@ + + + + + +Keith +Isdale + +
k_isdale@tpg.com.au
+
+
+ +
+
+ +Miscellenous Tools + + +Several tools are available via the tools menu the main tool is the +inspector tool. + + + +Inspector Tool + + +The inspector tool is the contains all the individual dialogs for working +with: + +Breakpoints +Templates +Variables +Callstack entries +&XSL; source files +&XML; Enties + + + + + +Execute by Walking + +By clicking on Start execution with +walking menu a dialog is shown to allow the walk speed +to be chosen. + + +The Walk Window + + + + +The Walk Window + + + +To stop walking either use the W key or select the +Start execution with walking menu item. + + + +Lookup &XML; Entities + +To lookup a System ID in the current &XML; catalog +use the Lookup System ID menu then enter the +value to find the the dialog that displays. + + +The System ID Window + + + + +The System ID Window + + + +To lookup a PUBLIC ID use the Lookup Public +ID menu entry then enter the value to find the the dialog that +displays. + + +The Public ID Window + + + + +The Public ID Window + + + + +
diff --git a/doc/kxsldbg/main_window.png b/doc/kxsldbg/main_window.png new file mode 100644 index 00000000..970459a5 Binary files /dev/null and b/doc/kxsldbg/main_window.png differ diff --git a/doc/kxsldbg/next.png b/doc/kxsldbg/next.png new file mode 100644 index 00000000..00d4fd9d Binary files /dev/null and b/doc/kxsldbg/next.png differ diff --git a/doc/kxsldbg/publicid_window.png b/doc/kxsldbg/publicid_window.png new file mode 100644 index 00000000..01af4d04 Binary files /dev/null and b/doc/kxsldbg/publicid_window.png differ diff --git a/doc/kxsldbg/run.png b/doc/kxsldbg/run.png new file mode 100644 index 00000000..e9b35a28 Binary files /dev/null and b/doc/kxsldbg/run.png differ 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 @@ + + + + +Keith +Isdale + +
k_isdale@tpg.com.au
+
+
+ +
+
+Working With &XSLT; Source Files (Sources) + + +If the inspector dialog is not showing use the + +Tools + +Show inspectors + +menu item. To work with sources click on the sources tab of dialog shown. + + + +All &XSLT; source files that are included by the &XSLT; file or one of its +siblings are listed here. + + +The Sources Window + + + + +The Sources Window + + + + +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. + +
diff --git a/doc/kxsldbg/sources_window.png b/doc/kxsldbg/sources_window.png new file mode 100644 index 00000000..14e9d3da Binary files /dev/null and b/doc/kxsldbg/sources_window.png differ diff --git a/doc/kxsldbg/step.png b/doc/kxsldbg/step.png new file mode 100644 index 00000000..a0e64fc0 Binary files /dev/null and b/doc/kxsldbg/step.png differ diff --git a/doc/kxsldbg/systemid_window.png b/doc/kxsldbg/systemid_window.png new file mode 100644 index 00000000..04b7be70 Binary files /dev/null and b/doc/kxsldbg/systemid_window.png differ 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 @@ + +Working With Templates + + +If the inspector dialog is not showing use the + +Tools +Show inspectors + +menu item. To work with templates click on the templates tab of dialog +shown. + + + +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. + + +The Templates Window + + + + +The Templates Window + + + + +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. + + + diff --git a/doc/kxsldbg/templates_window.png b/doc/kxsldbg/templates_window.png new file mode 100644 index 00000000..f20f798f Binary files /dev/null and b/doc/kxsldbg/templates_window.png differ 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 @@ + + + + + +Keith +Isdale + +
k_isdale@tpg.com.au
+
+
+ +
+
+ +Working With Variables + + +If the inspector dialog is not showing use the + +Tools +Show inspectors + +menu item. + + + +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 + + + + <xsl:variable name="globalvariable" select="'foo'"/> + + <xsl:template match="/"/> + <xsl:param name="localvariable" select="'bar'"/> + </xsl:template match="/"/> + + + +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 + + + + <xsl:variable name="changeable" select="'oldValue'" /> + + + +then a new XPath an be choosen by entering a new value + for Variable expression then clicking the Set expression button. + + +The Variables tab + + + + +The Variables Tab +The Variables Tab + + + + +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. + +
diff --git a/doc/kxsldbg/variables_window.png b/doc/kxsldbg/variables_window.png new file mode 100644 index 00000000..d90cb92d Binary files /dev/null and b/doc/kxsldbg/variables_window.png differ diff --git a/doc/kxsldbg/walk_window.png b/doc/kxsldbg/walk_window.png new file mode 100644 index 00000000..b30ce81b Binary files /dev/null and b/doc/kxsldbg/walk_window.png differ diff --git a/doc/kxsldbg/xsldbg_break.png b/doc/kxsldbg/xsldbg_break.png new file mode 100644 index 00000000..68657082 Binary files /dev/null and b/doc/kxsldbg/xsldbg_break.png differ diff --git a/doc/kxsldbg/xsldbg_data.png b/doc/kxsldbg/xsldbg_data.png new file mode 100644 index 00000000..8feb8c2e Binary files /dev/null and b/doc/kxsldbg/xsldbg_data.png differ diff --git a/doc/kxsldbg/xsldbg_delete.png b/doc/kxsldbg/xsldbg_delete.png new file mode 100644 index 00000000..fbe766c2 Binary files /dev/null and b/doc/kxsldbg/xsldbg_delete.png differ diff --git a/doc/kxsldbg/xsldbg_enable.png b/doc/kxsldbg/xsldbg_enable.png new file mode 100644 index 00000000..56c5e5c8 Binary files /dev/null and b/doc/kxsldbg/xsldbg_enable.png differ diff --git a/doc/kxsldbg/xsldbg_output.png b/doc/kxsldbg/xsldbg_output.png new file mode 100644 index 00000000..5c8fdc53 Binary files /dev/null and b/doc/kxsldbg/xsldbg_output.png differ diff --git a/doc/kxsldbg/xsldbg_refresh.png b/doc/kxsldbg/xsldbg_refresh.png new file mode 100644 index 00000000..0297288e Binary files /dev/null and b/doc/kxsldbg/xsldbg_refresh.png differ diff --git a/doc/kxsldbg/xsldbg_source.png b/doc/kxsldbg/xsldbg_source.png new file mode 100644 index 00000000..17618fe8 Binary files /dev/null and b/doc/kxsldbg/xsldbg_source.png differ diff --git a/doc/kxsldbg/xsldbg_stepdown.png b/doc/kxsldbg/xsldbg_stepdown.png new file mode 100644 index 00000000..3430b61e Binary files /dev/null and b/doc/kxsldbg/xsldbg_stepdown.png differ diff --git a/doc/kxsldbg/xsldbg_stepup.png b/doc/kxsldbg/xsldbg_stepup.png new file mode 100644 index 00000000..3170b14c Binary files /dev/null and b/doc/kxsldbg/xsldbg_stepup.png differ 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 @@ + + + + +Advanced Features + + +Christopher +Hornbaker + +
chrishornbaker@earthlink.net
+
+ +
+ + + +
+
+ +Advanced Features + + +This chapter outlines the advanced features of &quantaplus; and how to use +them. + + + +&XML; Tools + + +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 Kommander as a front-end and +libxml2 and libxslt +as a back-end. The combination of these makes for fast, efficient, +productive, and complete tools. + + + +&kde; Documentation Tools + + +&quantaplus; supports &kde;'s two main documentation tools: +meinproc and checkXML. + + + +<command>meinproc</command> + + +Anyone who has worked with &kde; documentation knows +meinproc 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! + + + + +Current Working Folder + + +This application expects an index.docbook +file to be present in a folder. If index.docbook +is in the current working folder, then simply leave Current Working +Folder checked. If it is not, then uncheck Current Working Folder +and enter the folder you wish to process in the Other Folder field. + + + + + + + +Outputted files are placed in the same folder as the sources files. +All &HTML; files are removed each time +meinproc is ran. + + + + + + +<command>checkXML</command> + + +Again, anyone who has worked with &kde; documentation knows this +helpful application. Again, &quantaplus; provides a great little graphical +front-end to this one. + + + + +Current Working Folder + + +If the currently opened file is the index.docbook +file, then simply leave Current Working Folder checked. +If it is not, then uncheck Current Working Folder and +enter the folder of where index.docbook can be found. + + + + + + +Output + +If there is output, then your file is invalid. Please correct the reported +errors and try again. + + + + + + +&XML; Validation + + +&quantaplus; has a great &XML; validation tool, which uses a +xmllint back-end. + + + + +Current File + + +If the file to be validated is currently focused on in &quantaplus;, then +simply leave Current File checked. If it is not, then +uncheck Current File and select the file to be +validated from the Other File file selector. + + + + + +Well-formed Checking + + +If you only wish to know only if the file is well-formed, click the +Well-formed Checking Only check box. + + + + + +Definition &URI; + + +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 Definition &URI; file selector. + + + + + + + +&XSL; Processing + + +Yep, &quantaplus; has a &XSL; processing tool, too! This uses the +xsltproc tool provided with +libxml2. + + + + +Current File + + +If the file to be processed is currently focused on in &quantaplus;, then +simply leave Current File checked. If it is not, +then uncheck Current File and select the file to be +processed from the Other File selector. + + + + + +Stylesheet + + +Select the &XSL; file that you wish to be used. + + + + + +Output file name + + +Enter the name of the file that you want the resulting file to be called. +File is outputed to your home folder by default. + + + + + + + +This application lacks flexibility. Sorry, we will do better next time. + + + + + + + + + + +Using Plugins + + +Mathieu +Kooiman + +
quanta@map-is.nl
+
+
+ + + +
+
+ +Using Plugins + + +What is a Plugin? + + +&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. + + + +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. + + + + + +Understanding the Edit Plugin Dialog + +To install a Plugin or KPart we will work from the + +Plugins +Edit + menu. This will bring up the following dialog: + + + + + + +The Edit Plugin dialog. + + + +This dialog lets you manage all defined plugins and lets you add new ones. +We will describe each &GUI; element in here: + + + +Search paths + + +Here you can fill in a search path. When adding a plugin without a +Location, &quantaplus; will search these paths to +find the plugin. + + + + + +Add + + +This will bring up a dialog which allows you to add a new plugin. + + + + + +Configure + + +This will allow you to change the settings of a particular plugin. + + + + + +Remove + + +Removes the currently selected plugin. + + + + + +Refresh + + +Refreshes the dialog's contents. + + + + + +Read to learn more about plugins. + +
+ + Team Development + 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 + + +&Shift;F7 + +Project +Project Properties + dialog. + + + + + + The team member editor dialog + + + The Name, Email entries are self explaining. Nickname is the nick of the user and acts as an unique identifier. + + Role specifies the role of the member in the project and can be one of the following: + + +Team leader + + +Subproject Leader + + +Task Leader + + +Simple Member + + + +Task is a description of the task assigned to this member. +Subproject: you can select a list of subproject. Subprojects can be configured and created by pressing the Edit subprojects 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 intranet folder in the project. +One member can have more than one role in the project, like both team leader and subproject leader. +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 Set to Yourself button. The currently selected member (your identity) appears in bold after the You are: text. +Nicknames and setting yourself is important regarding messaging and annotations. See to learn more about annotations. +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 about how to do it. + + + Event Actions + 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. + On the Event Configuration page of the + + + &Shift;F7 + + Project + Project Properties + dialog you can create, edit and delete the event actions. + + + + + + The event editor dialog + +The entries in the dialog are: + + +Event +the action is executed when the event selected from the list happens. The event names are self explanatory. + + +Action + +the type of the executed action. The possible choices are + + + +Non-script action +an action that is not a user defined script action. See for user action. + +Action name specifies the action to be executed when the event happens. + + + + Send email + an email is sent when the action happens to the recipient selected in the Receiver list. The recipient can be a team or subproject leader. See for defining such leaders. + + + + + Log event + the event is logged in a file. The arguments for this action are: + + + + Log file + the filename with full path + + + Detail + How much information will the log contain + + + Behavior + Whether to create/overwrite the existing log file or append the new logged event to it. + + + + + +Script action +an user defined script action. See for user action. + + Action name specifies the action to be executed when the event happens. + + + + + + + +The other entries depend on the Action type as they were described. + + + + +Annotations +Annotations are special comments in the documents. They differ from regular comments by the following things: + + +the information is collected by Quanta and shown in the Annotations toolview. + + +the information can be addressed to a team member + + + +Entering annotations is simple. You can either use the Annotate entry from the editor context menu or enter the @annotation keyword in a comment area followed by the annotation text. +Annotation example in XML +<!-- @annotation It is possible that this code is wrong. --> + +<!-- @annotation + Multiline + annotation. +--> +Annotation example in PHP +/* @annotation +Use PHP comments when annotating a PHP area +*/ + + + +Annotations can be addressed for a specific member of your team. The syntax in this case is @annotation(nickname) or @annotation(role), where nickname is the nickname of a team member, while role is a project role from the following items: + + +team leader + + +task leader + + +subproject leader + + +The task and subproject leaders should be followed by the corresponding task and subproject name, like it is shown in the below examples. + + +Make a note to a team member with the nickname <emphasis>eric</emphasis> +<-- @annotation(eric) Eric, please look at this. Andras --> + +Inform the team leader +<-- @annotation(team leader) This is very important for the team --> + +Inform the <emphasis>PHP</emphasis> subproject leader +// @annotation(subproject leader:PHP) What do you think about it? + + +Nicknames and role names are case insensitive, but spaces around brackets and the : make the annotation invalid. +More about team members, roles and nicknames can be found in . + +The annotations found in the project can be inspected in the Annotations view. It consists of tree tabs: + + +Current File + +The annotation found in the current file. + + + +For You + +Annotations in the project addressed for you. The entries are groupped per file. + + + + +All Files + +The annotations found in all the project files, groupe dy files + + + +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. + + + + +&debugging-quanta; +
diff --git a/doc/quanta/attribute_tree.png b/doc/quanta/attribute_tree.png new file mode 100644 index 00000000..a823dc6c Binary files /dev/null and b/doc/quanta/attribute_tree.png differ 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 @@ + + + + + Configuring &quantaplus; + + + András + Mantia + +
amantia@kde.org
+
+
+ + + +
+
+ + Configuring &quantaplus; + + + This chapter describes how you can control the behavior of &quantaplus;. + + + The configuration dialogs are accessible from the Settings menu. Here we will discuss only few of them, the rest are not &quantaplus; specific and a short description can be found at . + + + + Configuring Quanta + The configuration dialog can be invoked by using SettingsConfigure Quanta.... The dialog has several pages, we will discuss them one by one. + + + +Tag Style +You can change the behavior of &quantaplus; related to tags, including autocompletion. The entries are: + +Tag case: the case of the automatically inserted tags. Default Case means the tags will be inserted as they are described in the tagXML files. +Attribute case: the case of the automatically inserted attributes. Default Case means the attributes will be inserted as they are described in the tagXML files. +Attribute quotation: how to quote attributes inserted by &quantaplus;. +Auto-close optional tags: if checked, tags for which closing tag is option will be automatically closed once the tag closing > is entered. +Auto-close non-single and non-optional tags: same as before for the rest of tags, exception being the single tags. +Use auto-completion: turn on/off the autocompletion of tags, attributes, functions, etc. + +Update opening/closing tag automatically: if enabled, whenever you change the opening tag, the corresponding closing tag will be changed as well and vice-versa. +Automatic replacement of the accented characters: if enabled the accented characters will be replaced with their codes as you type. + + + + + + + +Environment +A page to control the environment and some default settings. + + +Mimetypes: mimetypes used to recognize different kind of files. Use the Reset to Default button to fill in the entries with the default settings. +Default character encoding: the encoding of the newly created files, or files loaded in other way than FileOpen (where you can override the encoding). This setting is overridden by the same setting in the Project Properties if a project is loaded. +Default DTD: the DTD used for newly created files, or files whose DTD was not recognized. This setting is overridden by the same setting in the Project Properties if a project is loaded. +Create backups: &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. +Startup Options: self explanatory setting which control what will happen on startup. + + + + + + + +User Interface +Here you can control the look and feel of &quantaplus;. + +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. +It's also possible to configure the look of the toolview and document tabs. +Reset window layout to the default on the next startup 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 --resetlayout command line switch. +This is the place also to control the behavior of the file trees. +The Warning Messages section is useful to enable or disable the warning messages that can be dismissed by checking the Do not show again box in them. + + + + +VPL View +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 to learn how to activate the different modes. + + + + +Parser +Here you can fine-tune the parser and the structure tree, which is the visual representation of the parser nodes in the document. +In the Clicks on Structure Tree Items it is possible to change the actions assigned to mouse buttons when you click on the structure tree. +In the Structure Tree Look & Feel 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. + + + + +Abbreviations + +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. + + + + + + + +Configuring Actions +User defineable action creation and editing is described in . + + + + Configuring Plugins + 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: + + Name: the user visible name + Output window: plugins can appear in a tab of the editor area or in a separate toolview at the bottom + Location: the path to the plugin, if it is not located in the standard locations, like $KDEDIR/lib . + File name: the relative path and the filename to the plugin's libtool file, like kde3/libcervisiapart.la + Input: the plugin will get this information on startup, so it can open the Current File, the folder of the current file (Current File Path) or the Project Folder. + Read only part: check if the plugin refuses to load. Read-only KParts usually refuse to load without this option checked. + Validate plugin: 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. + + + See and for information about using the plugins. + +
diff --git a/doc/quanta/contents2.png b/doc/quanta/contents2.png new file mode 100644 index 00000000..e2a44eca Binary files /dev/null and b/doc/quanta/contents2.png differ 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 @@ + + + + +Credits and License + + +Christopher +Hornbaker + +
chrishornbaker@earthlink.net
+
+
+ + + +
+
+ +Credits and License + + + +Sorry to anyone I missed or if I mis-spelt your name! + + + + +Much thanks to everyone who has spent the time to contribute! + + + +The &quantaplus; Development Team: + + +Bergia, Andrea +Original &CSS; editor. + + +Britton, Marc +Kommander, various features, and bug fixes. + + +Colton, Matthew +Splash screen for many versions + + +Deschildre, Nicolas +Visual Page Layout & undo/redo system + + +Dmitrienko, Dmitri +&PHP;4 debugger + + +Gulmini, Luciano +Frame Wizard + + +Hanley, Jason P. +Various fixes, foundational code for &DTD; parsing, and other &DTD; related work + + +Hindsgaul, Claus +Danish translation + + +Hornbaker, Christopher +The Anal &XML; Guy & Documentation + + +Isdale, Keith +&XSL; 1.0 &DTEP;, &kxsl; + + +Kooiman, Mathieu +Documentation, bug fixes, and &PHP; debugger framework. + + +Laffoon, Eric +Project Manager and web site admin. + + +Mantia, András +Core Developer + + +Moore, Richard +Coding, original TagXML docs, and more + + +Mous, Fabrice +Documentation + + +Nickel, Robert C. +Documentation + + +Pibil, Ted +Addition and maintainence of &DTD;s + + +Poplavsky, Dmitry +ex-Core Developer — left for commercial version + + +Vilches, George +Tree-based upload dialog + + +Yakovlev, Alexander +ex-Core Developer — left for commercial version + + + + + + +Special Thanks To: + + +xmlsoft.org +The writers of libxml2 and libxslt. + + + + + + +&quantaplus; 2000, 2001, 2002, 2003 &quantaplus; Development Team. + + + +&quantaplus; User Manual 2002, 2003 &quantaplus; Development Team. + + +&underFDL; +&underGPL; +
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 @@ + + + + +Debugging in &quantaplus; + + +Christopher +Hornbaker + +
chrishornbaker@earthlink.net
+
+
+ + +Linus +McCabe + +
Linus@McCabe.nu
+
+
+ + + +
+
+ +Debugging in &quantaplus; + + +Using the &PHP; Debugger + + +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. + + +Currently only one plugin is available which adds support to use &gubed; with +&quantaplus;. + + +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. + + + +General usage + +Once a project has a debugger activated, a few additional items will appear in the +&quantaplus; user interface: + + + + +Debugger menu + + +A new menu will appear where you can reach most of the debugger functionality. + + + + + +Debugger toolbar + + +A toolbar with access to the most common debugging commands. + + + + + +Variables toolview + + +A toolview where the contents of watched variables is showed. Appears in the left dock by default. + + + + + +Breakpoints toolview + + +A toolview where all the breakpoints, line and conditional, are listed. Appears in the bottom dock by default. + + + + + +Debug Output toolview + + +A toolview where the output (as in HTML) of the debugger is shown. Appears in the bottom dock by default. + + + + + + + +Depending on what the debugger plugin supports, all or a subset of the following functionality will be available. + + + + + + + + +Debug +Session +Start Session + + + + +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. + + + + + + + +Debug +Session +End Session + + + + +The opposite of + +Debug +Session +Start Session +. Closes a connection to the debugger or stops listening for requests. + + + + + + + +Debug +Execution +Send HTTP Request + + + + +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. + + + + + + + +Debug +Execution +Pause + + + + +Pauses a running script + + + + + + + +Debug +Execution +Run + + + + +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. + + + + + + + + +Debug +Execution +Leap + + + + +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. + + + + + + + +Debug +Execution +Step + + + + +Tells the debugger to execute the next instruction in the script, without stepping into functions or inclusions. + + + + + + + +Debug +Execution +Step Into + + + + +Tells the debugger to execute the next instruction in the script, stepping into functions or inclusions if possible. + + + + + + + +Debug +Execution +Step Out + + + + +Tells the debugger to execute until it escapes the current function. + + + + + + + +Debug +Execution +Skip + + + + +Tells the debugger to skip the next instruction and proceed to the next one as if the current one didn't exist. + + + + + + + +Debug +Execution +Kill + + + + +Tells the debugger to kill the currently running script. + + + + + + + + +Debug +Breakpoints +Break when... + + + + +Opens a dialog where you can specify conditional breakpoints. + + + + + + + +Debug +Breakpoints +Toggle breakpoint + + + + +Toggles a line breakpoint at the line of the cursor in the current line + + + + + + + +Debug +Breakpoints +Clear breakpoints + + + + +Clears all the breakpoints. + + + + + + + + +Debug +Variables +Watch variable + + + + +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. + + + + + + + +Debug +Variables +Set value of variable + + + + +Opens a dialog where you can enter a variable and a new value for it. + + + + + + + + + + + + + + +Using &kxsl;, the &XSL; Debugger + + +&kxsl; is the creation of Keith Isdale, as is this section of the +documentation. &kxsl; is a &kde; front-end and a KPart to +xsldbg, which you can find at +http://xsldbg.sf.net along with many other works by +Keith. + + + +To start &kxsl;, select + +Plugins +&kxsl; +. + + + +Please refer to the &kxsl; documentation for further information +regarding its usage. + + +
diff --git a/doc/quanta/doc-view1.png b/doc/quanta/doc-view1.png new file mode 100644 index 00000000..e6a405ff Binary files /dev/null and b/doc/quanta/doc-view1.png differ diff --git a/doc/quanta/dtd-conversion.png b/doc/quanta/dtd-conversion.png new file mode 100644 index 00000000..c0213063 Binary files /dev/null and b/doc/quanta/dtd-conversion.png differ diff --git a/doc/quanta/dtep_doc_img15.png b/doc/quanta/dtep_doc_img15.png new file mode 100644 index 00000000..0f7e31a1 Binary files /dev/null and b/doc/quanta/dtep_doc_img15.png differ diff --git a/doc/quanta/dtep_doc_img18.png b/doc/quanta/dtep_doc_img18.png new file mode 100644 index 00000000..078801bd Binary files /dev/null and b/doc/quanta/dtep_doc_img18.png differ diff --git a/doc/quanta/dtep_doc_img21.png b/doc/quanta/dtep_doc_img21.png new file mode 100644 index 00000000..f5d922bb Binary files /dev/null and b/doc/quanta/dtep_doc_img21.png differ diff --git a/doc/quanta/dtep_doc_img22.png b/doc/quanta/dtep_doc_img22.png new file mode 100644 index 00000000..8871bdd8 Binary files /dev/null and b/doc/quanta/dtep_doc_img22.png differ diff --git a/doc/quanta/dtep_doc_img23.png b/doc/quanta/dtep_doc_img23.png new file mode 100644 index 00000000..62e965c1 Binary files /dev/null and b/doc/quanta/dtep_doc_img23.png differ diff --git a/doc/quanta/dtep_doc_img24.png b/doc/quanta/dtep_doc_img24.png new file mode 100644 index 00000000..1fc30841 Binary files /dev/null and b/doc/quanta/dtep_doc_img24.png differ diff --git a/doc/quanta/dtep_doc_img25.png b/doc/quanta/dtep_doc_img25.png new file mode 100644 index 00000000..bac85056 Binary files /dev/null and b/doc/quanta/dtep_doc_img25.png differ diff --git a/doc/quanta/dtep_doc_img7.png b/doc/quanta/dtep_doc_img7.png new file mode 100644 index 00000000..a47ea1dc Binary files /dev/null and b/doc/quanta/dtep_doc_img7.png differ diff --git a/doc/quanta/dtep_doc_img8.png b/doc/quanta/dtep_doc_img8.png new file mode 100644 index 00000000..6ade4fe2 Binary files /dev/null and b/doc/quanta/dtep_doc_img8.png differ diff --git a/doc/quanta/edit-upload-profile.png b/doc/quanta/edit-upload-profile.png new file mode 100644 index 00000000..c9ea5c23 Binary files /dev/null and b/doc/quanta/edit-upload-profile.png differ diff --git a/doc/quanta/event-editing.png b/doc/quanta/event-editing.png new file mode 100644 index 00000000..2f0205dc Binary files /dev/null and b/doc/quanta/event-editing.png differ diff --git a/doc/quanta/exec.png b/doc/quanta/exec.png new file mode 100644 index 00000000..c6c1c8c3 Binary files /dev/null and b/doc/quanta/exec.png differ 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 @@ + + + + +Extending &quantaplus; + + +Christopher +Hornbaker + +
chrishornbaker@earthlink.net
+
+
+ +András +Mantia + +
amantia@kde.org
+
+
+ + + +
+
+ +Extending &quantaplus; + + +This chapter describes how to customize &quantaplus; to your particular +needs and how you can help &quantaplus; become better. + + + + + +Document Type Editing Package (&DTEP;) + + +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. + + + +&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. + + + + &DTEP;s can be created manually (see below), downloaded or automatically created from an existing DTD. See for details about the conversion. + + + +This document describes how to make TagXML files, the &descriptionrc;, and +toolbars. In short, a &DTEP;. + + + +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. + + + +Packaging + + +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) + + + + +TagXML + + +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. + + + + + + +Element +Default Usage +Case Usage + + + + +TAGS +required +always + + +tag +required +always + + +label +optional +required to create a properties dialog + + +attr +optional +required to define an attribute + + +tooltip +optional +required to have the properties dialog display a tooltip + + +whatsthis +optional +required to have the properties dialog display a What's This + + + +list +optional +required when an attr is of the type list + + +item +optional +required when <list> is used + + +textlocation +optional +always + + +location +optional +required when label is used + + +text +optional +required when label is used + + +children +optional +list of tags that can appear within the tag being defined + + +child +required +a children entry + + +stoppingtags +optional +list of tags that tell another tag to end + + +stoppingtag +required +a stoppingtags entry + + + + + + + +TagXML Element Descriptions + + +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. + + + +TAGS + + +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. + + + + + + +Parent(s) +Children + + + + +NONE +tag + + + + + + + +tag + + +Wrapper for tag being defined. This is an element-only type element. + + + + + + +Parent(s) +Children + + + + +TAGS +label, attr, stoppingtags + + + + + + + + + +AttributeTypeValues +DefaultUseDescription + + + + +namestring +requiredSpecifies the name of the tag being defined. + + +singleboolean +optionalSpecifies whether or not the tag requires a +closing tag </(tagname)>. + + +typestringxmltag +optionalSpecifies the type of tag being defined. + + +xmltag +Type of tag is XML-based. (Family 1 only.) + + + entity + The tag describes an entity. (Family 1 only.) + + +property +Type of tag is &CSS; related. (Family 2 only.) + + +function +Type of tag is a script function. When used, +<attr> becomes arguments of the function. (Family 2 only.) + + +class +Type of tag is a script class. (Family 2 only.) + + +method +Type of tag is a class method. (Family 2 only.) + + +returnTypestringvoid + +optionalSpecifies the return type of tag being +defined. (Family 2 only.) + + +void +Type of tag returns void. + + +int +Type of tag returns int. + + +float +Type of tag returns float. + + +long +Type of tag returns long. + + +string +Type of tag returns string. + + + versionstring + optionalSpecifies the version of the language for which this tag is valid + + + extendsstring + optionalValid only if the type of the tag is "class". The name of the base class for this class. (Family 2 only.) + + + classstring + optionalValid only if the type is "method". Specifies the name of the class to where this method belongs. (Family 2 only.) + + + commonboolean + optionalif "yes", the tag specifies a common attribute group and the attributes inside this tag can be attached to any other tag. (Family 1 only.) + + + commentstring + optionalthe comment string appears near the tag name in the completion box + + + + + + +label + + +Place a label in the dialog. The text is specified by the <text> tag. +This is an element-only type element. + + + + + + +Parent(s) +Children + + + + +tag +text, location + + + + + + + +attr + + +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. + + + + + + +Parent(s) +Children + + + + +tag +location, list, tooltip, whatsthis, textlocation + + + + + + + + + +AttributeTypeValues +DefaultUseDescription + + + + +namestring +requiredSpecifies the name of the attribute being +defined. + + +typestringinput +requiredSpecifies the type of the attribute being +defined. + + +input +Field supports free text entries (text field). + + +check +Field value is boolean (check box). + + +color +Field value is a color. + + +url +Field value is a &URL;. (Local file to refer to.) + + +list +Field value is an item from a specified list. + + +statusstringoptional +requiredSpecifies whether or not the argument is +required. (Family 2 only.) + + +optional +Argument is optional. + + +required +Argument is required. + + +implied +Argument is implied. + + + sourcestring + optionalSpecifies the sources used to fill the entry for the attribute in the tag editor dialog and the attribute tree + + + selection + The selected text is used as source + + + dcop + The result of a dcop method is used as source + + + interfacestring + optionalRequires source="dcop". The dcop interface from inside &quantaplus; used to get the source data. + + + methodstring + optionalRequires source="dcop" and an interface name. The dcop method name from inside &quantaplus; used to get the source data. + + + argumentsstring + optionalRequires 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. + + + + + + + +tooltip + + +Defines the tooltip for a field in the dialog. This element is text-only. + + + + +Currently only plain text is supported (you cannot use any markup). + + + + + + + +Parent(s) +Children + + + + +attr +NONE + + + + + + + +whatsthis + + +Defines the 'What's This' help for a field in the dialog. This element is +text-only. + + + + +Currently only plain text is supported (you cannot use any markup). + + + + + + + +Parent(s) +Children + + + + +attr +NONE + + + + + + + +list + + +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. + + + + + + +Parent(s) +Children + + + + +attr +item + + + + + + + +item + + +Defines an item in a list. This element is text-only. + + + + + + +Parent(s) +Children + + + + +list +NONE + + + + + + + +textlocation + + +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. + + + + + + +Parent(s) +Children + + + + +attr +NONE + + + + + + + + + +AttributeType +UseDescription + + + + +rownonNegativeInteger +requiredSpecifies the row in the dialog layout of a +field or label. + + +colnonNegativeInteger +requiredSpecifies the column in the dialog layout of +a field or label. + + +rowspannonNegativeInteger +optionalSpecifies the number of rows a field should +span. + + +colspannonNegativeInteger +optionalSpecifies the number of columns a field +should span. + + + + + + + +location + + +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. + + + + + + +Parent(s)Children + + + + +label, attrNONE + + + + + + + + + +AttributeType +UseDescription + + + + +rownonNegativeInteger +requiredSpecifies the row in the dialog layout of a +field or label. + + +colnonNegativeInteger +requiredSpecifies the column in the dialog layout of +a field or label. + + +rowspannonNegativeInteger +optionalSpecifies the number of rows a field should +span. + + +colspannonNegativeInteger +optionalSpecifies the number of columns a field +should span. + + + + + + + +text + + +Define the text for a label or check box. This element is text-only. + + + + + + +Parent(s)Children + + + + +label, attrNONE + + + + + + + +children + + +Defines a list of elements that can appear within the tag being specified. +This element is an element-only type element. + + + + + + +Parent(s)Children + + + + +tagchild + + + + + + + +child + + +Defines a child tag. This element is empty. + + + + + + +Parent(s)Children + + + + +childrenNONE + + + + + + + + + +AttributeTypeValues +UseDescription + + + + +namestring +requiredSpecifies a tag that can appear within the a +certain tag. + + +usagestring +optionalSpecifies the relation with the parent. + + +required +The parent must have at least one child with this name. + + + + + + + +stoppingtags + + +Defines a list of elements that force a tag to end. This element is an +element-only type element. + + + + + + +Parent(s)Children + + + + +tagstoppingtag + + + + + + + +stoppingtag + + +Defines a stopping tag. This element is empty. + + + + + + +Parent(s)Children + + + + +stoppingtagsNONE + + + + + + + + + +AttributeType +UseDescription + + + + +namestring +requiredSpecifies which tags force the ending of +another tag. + + + + + + + + +TagXML Usage + + +All TagXML files must begin with the &XML; declaration: <?xml +version="1.0" encoding="UTF-8"?> and must be properly nested and closed. + + + + +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. + + + + + +TagXML Validation + + +To validate your TagXML files, simply click the Tools +pop-up dialog at the top of &quantaplus; and select Validate +TagXML. A dialog will present itself and you need only to follow +the simple directions. + + + + +This feature is currently not present. Currently validation occurs when +the TagXML files are loaded into &quantaplus;. + + + + + +TagXML Examples + + +Family 1 + + +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? + + + + + +<?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> + + + + + + +Family 2 + + +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. + + + + + +<?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> + + + + + + + + +&descriptionrc; + + +The &descriptionrc; file is, also, quite simple and there is an editor for it accessible from DTDEdit DTD Settings. 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: + + + + + + [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. + + + + +Once you have created it at put aside of the tag files, load the newly created &DTEP; with DTDLoad DTD Package (DTEP) 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 quanta/data/dtep/dtd-description.txt from the source tarball containing a description about the format. + + + + + +User Defined Actions + +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. + +There are three types of user definable actions: + +Text actions +Tag actions +Script actions + + + +Creating actions + + You can create an action by going to + +Settings +Configure Actions + +. Click on New Action and you will face a similar dialog: + + + + + + + +Type +Specifies the action's type (Text, Tag, Script). + + + +Text +The user visible name of the action. + + + +The button near the Text label +The icon assigned to this action. Click on it in order to change the current icon. + + + +Tool tip +Short description of what the action does. + + + +Shortcut +The shortcut assigned to this action. Click on Custom or the button near Custom to assign a shortcut; click on None to remove the currently assigned shortcut. + + + +Container toolbars +The user defined toolbars where this action appears. See . + + + +Detailed Settings +Specific settings for the different type of actions. See below. + + + + + + +Text actions + + + + + The simplest actions. You can enter some text in the Detailed Settings area and whenever the action is executed this text will be inserted in your document + at the current cursor position. See the below example. + + + +Tag actions + + Useful to insert XML tags, but of course you can use them for other purposes as well. + + + + + +<tag> +The name of the tag. + + +</tag> +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. + + +Run "Edit tag" dialog if available +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. + + +The <tag> and </tag> will be inserted as you've typed there. The <, > or the / sign won't be automatically appended. + + + +Script actions + + + + + 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 Quick Start dialog, the various View In... actions for the (X)HTML DTEPs. + + +First you have to enter the name of your script with the interpreter as well. Example: +sh /home/myHome/myScript.sh. + + +Although you can use full paths, the recommended way is to use the %scriptdir variable in the command line, like sh %scriptdir/myScript.sh. This way &quantaplus; will try to locate your script in the following places: + +global script folder: $KDEDIR/share/apps/quanta/scripts +local script folder: $KDEHOME/share/apps/quanta/scripts +your path: $PATH + +There are other special variables that you can use in the command line: + +%f: will be replaced with the URL of the current document. In case of local documents, file:/ will be stripped from the document. +%input: will be replaced with the selected input. See below. +%projectbase: will be replaced with the URL of the current project. It is empty if no project is loaded. +%pid: 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. +%userarguments: useful in case of events. This entry will be replaced by the event properties in the following order: + +First argument +The unique id of the script + + +Second argument +the event name + + +Third argument +the parameters for the event, usually the file name of the current document or the path to the project file. + + + + + + +Aside of the above methods the script can receive input from &quantaplus; on the standard input. In the Input combobox you can select what to send to the standard input. Choices are: + +None: nothing is sent to the script. +Current document: the whole document is sent to the script. +Selected text: the selected area of the document is sent to the script. Using the %input variable usually makes sense only when using this setting. + + + +Similar to the Input you can catch the output of the executed application. There are two kind of outputs: + +normal output, printed to the standard output; + +error messages, printed to the standard error. + + +You can specify what should happen with the text printed to the standard output. This can be done by modifying the value of the Output combobox: + +None: the output of the application is ignored. +Insert in cursor position: the output will be inserted in the current document and the cursor position. +Replace selection: the selected area of the document will be replaced with the output. +Replace selection: the selected area of the document will be replaced with the output. +Create a new document: a new document will be created and will contain all the output of the script. +Replace current document: the entire document will be replaced with the output. +Message window: the output will appear in the Messages toolview. + + +The choices for the standard error output (Error) are the same as for the normal output. + + + + +Creating Toolbars + + +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 &HTML; tidy on our web pages. + + + +From Scratch to Complete + + +To begin, you will need to create a user toolbar. Select + +Toolbars +Add User Toolbar +. + + + +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. + + + +Once all your toolbars are created, you must add and configure the +actions. To do this, select + +Settings +Configure Actions + + +. + + + +The parts of this window are pretty straight forward. Press the +New action button at the bottom of the window to +enter the editing mode. + + + +Fill in all of the necessary fields and add the tag to the appropriate +toolbar(s). + + + +Complete the rest and, if the tag has attributes and you always plan to +use them, check the Run "Edit tag" dialog if available + box so that you will be prompted every time the action is used. + + + +You should now have something much like the following. + + + + + + + + + +Press the Apply button and you will see the action +added to the toolbar(s) you have selected. + + + + + + + + + +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. + + + +To create an icon that more accurately describes that action, we will be +using &kiconedit;. Select it from the &kmenu;, +Graphics +More Programs + (or where ever your distribution placed it). + + + +&kiconedit; defaults to the size 32x32 pixels, but we need 22x22. To +change this, select + +Edit +Resize +. + + + +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;. + + + +Since the tag I am creating the icon for is called start, +I have decided to create a Start sign. Using the color green +(green often interpreted as go, start, or +proceed) will, or, at least, should, convey a message +to the user that clicking this action will place the <start> tag in the +current document. + + + + + + + + + +Now that I am finished with the creation of the icon, I will save it. + + + +Once you are done with creating the icon(s), you must associate the icon +with the action. To do this, open + +Settings +Configure Actions + again (in &quantaplus;) and select the action you made +the icon for. Beside the Text field, you will see a +button, click it. + + + +Select Other Icons and then click the +Browse button. + + + +Goto the folder in which you saved the icon, select the icon, and click +OK. + + + +Press the Apply button and either continue to do the +same with the other tags, if any, or click OK to +finish. + + + + + + + + + +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 +Configure Toolbars dialog by going + +Settings +Configure Toolbars +. Make sure your toolbar is selected. + + + +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. + + + + + + + + + +I think I would like a quick way to access the Konqueror +Preview. I will select it and add it to the toolbar. + + + + + + + + + +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. + + + + + + + + + +Apply your changes and, when you are done, press OK +to finish. + + + +Ah, look at the fantastic new toolbar! Much more handy now. + + + + + + + + + +Remember to test your toolbar, by clicking all the buttons, so that you +know the output is correct. + + + + + + + + + +Now to save the toolbar, we will select + +Toolbars +Save Toolbars +Save as Local Toolbar +. + + + +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. + + + + + + + +Creating Your Own Documentation + + +Robert +Nickel + +
robert@artnickel.com
+
+
+ + + +
+
+ +Creating Your Own Documentation + + +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. + + + +Before starting on creating your own documentation, you may wish to check +out the +&quantaplus; repository to see if someone else has already done +this set. + + + +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 docrc file. The first +is up to you, the second is what we will cover here. + + + +The general form of the docrc file is as follows: + + + + +#KDE Config File +[Tree] +Doc dir=path, relative to this file, of the documentation html files ⪚ php42/ +#top level elements +Top Element=Your description for these documentation ⪚ &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 + + + + +The docrc is broken down into two sections: Tree and +Context. + + + +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: + + + + + + + + + +Relating this to the above, my &PHP; docrc looks like +this: + + + + +#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 +... + + + + + +Notice the # in front of Getting Started +and Language Reference. 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. + + + +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!). + + + + +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. + + + + +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 +mysql_fetch_array function. You simply highlight the +function and then press &Ctrl;H + for context help. The documentation on +mysql_fetch_array will immediately display. There are +only two entry types here: the ContextList and the file association lines. + + + + +ContextList + + +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;). + + + + +File association lines + + +These are of the form context item=html doc page. ⪚ +acos=function.acos.html + + + + + + +A pared down version of my docrc Context section is +as follows: + + + + +#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 +... + + + + +Now you can just save your docrc file, save it in +$HOME/.kde/share/apps/quanta/doc +or $KDEDIR/share/apps/quanta/doc +for local or global use respectively. Then create a folder (the one +specified in your docrc file) in the same folder +as your docrc file and copy your &HTML; pages in +there. + + + +You will need to restart &quantaplus; to see your documentation. + + + +Once you are sure that they are good and worth sharing, send the +docrc file along with a description of any pertinent +information on what documentation you used to the +&quantaplus; +repository 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. + + +
+ + + Sharing Resources + 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: + + + + Sending in Email + The resources can be sent in email to your friends, partners or to whomever you want. You will see the Send in Email menu entries in various places, like DTDSend DTD Package (DTEP) in Email, ToolbarsSend Toolbar in Email, in the context menu of the files and folders in the Templates and Scripts tree. + + + + Uploading to the main server + 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. + About getting the resources from the main server see . + 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 Share Hot New Stuff dialog fill the input fields (the Preview URL may remain empty) and start the upload by clicking OK. + + The upload can be initiated from + DTDUpload DTD Package (DTEP), ToolbarsUpload Toolbar, in the context menu of the files and folders in the Templates and Scripts tree. + + + + + + +Getting Resources +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 Download menu entries. You can find them at DTDDownload DTD Package (DTEP), ToolbarsDownload Toolbar, in the context menu of an empty area or toplevel item in the Templates, Scripts and Documentation trees. + + +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. + + + Be sure that you install resources, especially toolbars and scripts, only from trusted sources! + + + + + Converting a DTD to a &DTEP; + 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 tagXML format. Of course, there is a nicer way to go, by converting the DTD automatically into a DTEP package. + + The conversion can be started from the DTDLoad & Convert DTD menu. Select the .dtd file which defines the DTD you want to use, and after that you will see the following dialog: + + + + + + +The entries are: + + Target directory name:the newly created &DTEP; will go under this name to the $KDEHOME/share/apps/quanta/dtep folder. + + + Name:the name (definition string) of the DTD + Nickname: the user visible name of the &DTEP; + !DOCTYPE definition line: + 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" + DTD URL: the URL pointing to the DTD file + Default extension: the extension usually used for files that were written in this DTD + Case-sensitive tags and attributes: self explaining, usually true for XML language variants + Fine-tune the DTEP after conversion: 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. + + + +
diff --git a/doc/quanta/ftab.png b/doc/quanta/ftab.png new file mode 100644 index 00000000..b179f808 Binary files /dev/null and b/doc/quanta/ftab.png differ 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 @@ + + + + +The Fundamentals of &quantaplus; + + +Robert +Nickel + +
robert@artnickel.com
+
+
+ + +Christopher +Hornbaker + +
chrishornbaker@earthlink.net
+
+Reviewer +
+ + +Fabrice +Mous + +
fabrice@kde.nl
+
+Reviewer +
+ + + +
+
+ +The Fundamentals of &quantaplus; + + +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. + + + +The Workspace + + +&quantaplus; divides the workspace into three scopes: Global, Local, and +Project. These distinctions affect various components in &quantaplus;. + + + + +Global + + +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. + + + + + +Local + + +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. + + + + + +Project + + +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. + + + + + + + + +The Multi-Document Interface + + + + + +&quantaplus; editing the document you are now reading. + + + + + +&quantaplus;' &MDI; is broken down into various parts: the editor window, +the quick info trees, informational tabs and the toolbars. Please see , +, , and for more +information on these parts. + + + +The Editor Window + + + + + + +&quantaplus;' editor window. + + + + +&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 floppy icon beside the filename, indicating that the +file has been modified and should be saved. +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. +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. + + + +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. + + + +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. + + + + + +The anchor (<a>) dialog. + + + + + +The Toolviews + + + + + +The Toolviews. + + + +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. + + + +&QIT; Explained + + + +Files Tree + + + + + + + + +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. + + + + + +Project Tree + + + + + + + + +Project management 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. + + + + + +Templates Tree + + + + + + + + +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. + + + +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 . + + + + + +Scripts Tree + + + + + + + + +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. + + + + + +Document Structure Tree + + + + + + + + +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. + + + + + +Attribute Tree + + + + + + + + +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. + + + + +Attribute Tree + + + + + + +Documentation Tree + + + + + + + + +Here you can find complete documentation on web technologies to aid your +development. You can download pre-packaged documentation for &quantaplus; +at &quantaplus;' +documentation site, you can create your own documentation, +and, by adding a folder named "doc" to a project, you can add, edit, +and view project-specific documentation. + + + + + + + +The Informational Tabs + + + + + +&quantaplus;' Informational Tabs. + + + +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. + + + + +Messages Window Tab + + + + + + + + +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. + + + + + + +Problems Tab + + + + + + + + +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. + + + + + + + +The Toolbars + + + + + +&quantaplus;' &HTML; toolbars. + + + +&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;. + + + +Managing toolbars in &quantaplus; is easy. By selecting the +Toolbars 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 workspaces 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. + + + +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! + + + +
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 @@ + + + + + + + +Keith +Isdale + +
k_isdale@tpg.com.au
+
+
+ + +Christopher +Hornbaker + +
chrishornbaker@earthlink.net
+
+Reviewer +
+ + + +
+
+ + +Keywords + +xsldbg + +See + + + +XPath + +A valid expression that defines what data is required. See +&W3C; web site + + + + +QName + +A fully qualified name. For example xsl:myvariable. See &W3C; web site + + + + +
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 @@ + + + + + + + + + + + + + + + + CGI"> + DTD"> + DTEP"> + HTML"> + IDE"> + PHP"> + PDF"> + SGML"> + XSD"> + W3C'> + QIT"> + MDI"> + Gubed PHP Debugger"> + KXsldbg"> + VPL"> + + + description.rc'> +]> + + +&quantaplus; User Manual + + + + + + +Christopher +Hornbaker + +
chrishornbaker@earthlink.net
+
+
+ + +Fabrice +Mous + +
fabrice@kde.nl
+
+
+ + +Robert +Nickel + +
robert@artnickel.com
+
+
+ + +András +Mantia + +
amantia@kde.org
+
+
+ + +Eric +Laffoon + +
sequitur@kde.org
+
+Developer +
+ + +András +Mantia + +
amantia@kde.org
+
+Developer +
+ + +Dmitry +Poplavsky + +
dima@kde.org
+
+Developer up to 2.0 +
+ + +Alexander +Yackovlev + +
yshurik@kde.org
+
+Developer up to 2.0 +
+ + + +
+ + +2002200320042005 +&quantaplus; Development Team + + + + +&FDLNotice; + + + +2005-08-24 +3.4.90 + + + +&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. + + + + +KDE +Quanta +text +editor +Web +programmer +programming +development +Kommander +xsldbg +libxslt +debugger +projects +SGML +JSS +DTD +XML +XSD +W3C +CSS +Schema +DocBook +HTML +XHTML +CGI +PHP +Java +JavaScript +ColdFusion + +
+&introduction; +&fundamentals; +&working-with-quanta; + +&quanta-menus; +&config-quanta; +&advanced-quanta; +&extending-quanta; +&q-and-a; +&credits-license; +&installation; +&glossary; +
diff --git a/doc/quanta/info_tab.png b/doc/quanta/info_tab.png new file mode 100644 index 00000000..b1cdc3f2 Binary files /dev/null and b/doc/quanta/info_tab.png differ 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 @@ + + + +Installation + + +Acquiring &quantaplus; + +&install.intro.documentation; + + + +Building the Source + +&install.compile.documentation; + + +Considerations When Building + + +It is reasonable that you would want to customize the location of +the &quantaplus; files on your system. To this end, +autoconf has a number of options +that can be passed to the configure +script to control this setup. To get a complete listing of these +options, type ./configure +. These are straight forward and will +not be covered here. + + + +If you are having trouble with &quantaplus; running properly, you +should check your path to ensure that the &kde; 3 +bin folder is in there. +Also, be sure that you do not have any older versions of &kde; laying +about that appear in PATH before your &kde; 3 +bin folder. The same +holds true for &Qt;. + + + + + 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 @@ + + + + +What is &quantaplus;? + + +Eric +Laffoon + +
sequitur@kde.org
+
+
+ + +Christopher +Hornbaker + +
chrishornbaker@earthlink.net
+
+Reviewer +
+ + +Fabrice +Mous + +
fabrice@kde.nl
+
+Reviewer +
+ + + +
+
+ +What is &quantaplus;? + +
+ +Eric Laffoon at http://quanta.sourceforge.net + + + +&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. + + +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. + +
+ + + +&quantaplus;: Where It Was And Where It Is Going + + +Robert +Nickel + +
robert@artnickel.com
+
+
+ + +Christopher +Hornbaker + +
chrishornbaker@earthlink.net
+
+Reviewer +
+ + +Fabrice +Mous + +
fabrice@kde.nl
+
+Reviewer +
+ + + +
+
+ +&quantaplus;: Where It Was And Where It Is Going + + +While striving to become the best &HTML; editor, the developers of +&quantaplus; began to think about a rather intriguing idea: What if +&quantaplus; was a generic, extensible, markup language editor? +Well, that would only make it the greatest Web Development Environment +for &kde;! So it was done. + + + +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. + + + +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 Why write something somebody already +wrote? 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. + + + +&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 +Kommander, 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 .) + +
+ +
diff --git a/doc/quanta/kfr-icon.png b/doc/quanta/kfr-icon.png new file mode 100644 index 00000000..4ba2dcdf Binary files /dev/null and b/doc/quanta/kfr-icon.png differ diff --git a/doc/quanta/kfr-new-dialog.png b/doc/quanta/kfr-new-dialog.png new file mode 100644 index 00000000..8b483dcb Binary files /dev/null and b/doc/quanta/kfr-new-dialog.png differ 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 @@ + + +]> + + + +BenBurtonbab@debian.org +April 8, 2003 + + + +quanta +1 + + + +quanta +A &kde; based web development environment + + + + +quanta + + + + + + + + + + + + +Description + +&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. + +&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. + + + + +Options + + +Application Options + + +Run as a one-instance application + + + + +Do not show the logo during startup + + + + + Reset the layout of the user interface to the default + + + + + + +See Also + +More detailed user documentation is available from help:/quanta (either enter this +URL into &konqueror;, or run +khelpcenter +help:/quanta). + +There is also further information available at http://sourceforge.net/projects/quanta/ + + + +Authors + +&quanta; is currently written and maintained by Eric Laffoon sequitur@kde.org and Andras Mantia amantia@kde.org. + +This manual page was prepared by BenBurtonbab@debian.org + + + + diff --git a/doc/quanta/plugin-edit.png b/doc/quanta/plugin-edit.png new file mode 100644 index 00000000..1dc8824e Binary files /dev/null and b/doc/quanta/plugin-edit.png differ diff --git a/doc/quanta/project-1.png b/doc/quanta/project-1.png new file mode 100644 index 00000000..8c86b8fb Binary files /dev/null and b/doc/quanta/project-1.png differ diff --git a/doc/quanta/project-properties.png b/doc/quanta/project-properties.png new file mode 100644 index 00000000..241af897 Binary files /dev/null and b/doc/quanta/project-properties.png differ diff --git a/doc/quanta/project-tree-view-dir-rmb-menu.png b/doc/quanta/project-tree-view-dir-rmb-menu.png new file mode 100644 index 00000000..a89b43fc Binary files /dev/null and b/doc/quanta/project-tree-view-dir-rmb-menu.png differ diff --git a/doc/quanta/project-tree-view-file-rmb-menu.png b/doc/quanta/project-tree-view-file-rmb-menu.png new file mode 100644 index 00000000..c587e02a Binary files /dev/null and b/doc/quanta/project-tree-view-file-rmb-menu.png differ diff --git a/doc/quanta/project-upload-dialog.png b/doc/quanta/project-upload-dialog.png new file mode 100644 index 00000000..2c641d5a Binary files /dev/null and b/doc/quanta/project-upload-dialog.png differ diff --git a/doc/quanta/ptab.png b/doc/quanta/ptab.png new file mode 100644 index 00000000..977f1dd9 Binary files /dev/null and b/doc/quanta/ptab.png differ 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 @@ + + + + +Questions and Answers + + +Eric +Laffoon + +
sequitur@kde.org
+
+
+ + + +
+
+ +Questions and Answers + + + + + +How can I help &quantaplus; development? + + + + +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. + + + + + + + +Where is &quantaplus; going from here? + + + + +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! + + + + + +
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 @@ + + + + +The Menubar + + +Robert +Nickel + +
robert@artnickel.com
+
+
+ + András + Mantia + +
amantia@kde.org
+
+
+ + +Christopher +Hornbaker + +
chrishornbaker@earthlink.net
+
+Reviewer +
+ + +Fabrice +Mous + +
fabrice@kde.nl
+
+Reviewer +
+ + + +
+
+ +The Menubar + + +This chapter explains all the various functions that can be found in the +menubar. + + + +The <guimenu>File</guimenu> Menu + + + + + + +&Ctrl;N + +File +New + + + + +Create a new, blank file. + + + + + + + + +&Ctrl;O + +File +Open... + + + + +Search the file system to open an existing file. + + + + + + + +File +Open Recent + + + + +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. + + + + + + + + + +&Ctrl;S + +File +Save + + + + +Save the active file's changes. + + + + + + + +File +Save As... + + + + +Save the active file with another name. + + + + + + + +File +Save as Template + + + + +This allows you to save code snippets and entire files as a template for +later use. See the section on templates. +If you try to save the selected text/file outside of the local/project +template dir, then you will receive an error. + + + + + + +File +Save as Template +Save as Local Template... + + + + +Allows you to save a file as a template within the local scope. + + + + + + + +File +Save as Template +Save as Project Template... + + + + +Allows you to save a file as a template within the project scope. + + + + + + + +File +Save as Template +Save Selection to Local Template File... + + + + +Allows you to save the selected text (⪚ a code snippet) in a local +template file. + + + + + + + +File +Save as Template +Save Selection to Project Template File... + + + + +Allows you to save the selected text (⪚ a code snippet) in a project +template file. + + + + + + + + + + + + +&Ctrl;&Shift;S + +File +Save All... + + + + +Save all modified files in the editor. + + + + + + + + +&Ctrl;F5 + +File +Reload + + + + +Reloads the current focused document. + + + + + + + + +&Ctrl;P + +File +Print... + + + + +You can actually print out your documents. Uses the kprinter + interface. + + + + + + + + +&Ctrl;Q + +File +Quit + + + + +Exit &quantaplus; + + + + + + + + +The <guimenu>Edit</guimenu> Menu + + + + + + +&Ctrl;Z + +Edit +Undo + + + + +Undo the last action performed. + + + + + + + + +&Ctrl;&Shift;Z + +Edit +Redo + + + + +Redo the last action undone. + + + + + + + + +&Ctrl;X + +Edit +Cut + + + + +Cut the current block of text and place its contents on the clipboard. + + + + + + + + +&Ctrl;C + +Edit +Copy + + + + +Copy the current block of text to the clipboard. + + + + + + + + +&Ctrl;V + +Edit +Paste + + + + +Paste the contents of the clipboard at the current cursor position. + + + + + + + +Edit +Paste Special + + + + + + + + +Edit +Paste Special +Paste HTML Quoted + + + + +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. + + + + + + +Edit +Paste Special +Paste &URL; Encoded + + + + +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. + + + + + + + + + + + +&Ctrl;A + +Edit +Select All + + + + +Select all of the text in the current document. + + + + + + + + +&Ctrl;&Shift;A + +Edit +Deselect + + + + +Unselect all text in the current document. + + + + + + + + +&Ctrl;&Shift;B + +Edit +Block Selection Mode + + + + +Turn on/off block highlighting. Allows you to select text blocks with your +keyboard without holding down the shift key. + + + + + + + + +Insert + +Edit +Overwrite Mode + + + + +Overrides the Insert key. + + + + + + + + +&Ctrl;F + +Edit +Find... + + + + +String or regular expression pattern to find in the current document. + + + + + + + + +F3 + +Edit +Find Next + + + + +Repeat the find downward in the document from the current location. + + + + + + + + +&Shift;F3 + +Edit +Find Previous + + + + +Repeat the find upward in the document from the current location. + + + + + + + + +&Ctrl;R + +Edit +Replace... + + + + +String or regular expression replacement of text in the current file. + + + + + + + + +&Ctrl;G + +Edit +Go to Line... + + + + +Go directly to a specific line number. This is really helpful when your +&PHP; script is breaking unexpectedly! + + + + + + + + +&Alt;&Ctrl;F + +Edit +Find in Files... + + + + +Find a string or expression in files in the selected folder. Sort of a +&GUI; grep or sed with some +predefined pattern spaces to help you out. + + + + + + + + +&Ctrl;J + +Edit +Expand Abbreviation + + + + + Expands the abbreviations. Abbreviations can be defined in the + Settings + Configure Quanta... + dialog. + + + + + + + +Edit +Apply Source Indentation + + + + + Reformats the source code accroding to the same rules as the &VPL; part inserts the tags. + + + + + + + + + +The <guimenu>View</guimenu> Menu + + + + + +View +Tool Views + + + + + + + +View +Tool Views +Show Files + + + + +Toggle display of the files tree. + + + + + + + +View +Tool Views +Show Project + + + + +Toggle display of the project tree. + + + + + + + +ViewTool Views +Show Templates + + + + +Toggle display of the template tree. + + + + + + + +ViewTool Views +Show Scripts + + + + +Toggle display of the scripts tree. + + + + + + + +ViewTool Views +Show Document Structure + + + + +Toggle display of the document structure tree. + + + + + + + +ViewTool Views +Show Attribute Editor + + + + +Toggle display of the attribute tree. + + + + + + + +ViewTool Views +Show Documentation + + + + +Toggle display of the documentation tree. + + + + + + + +&Ctrl;M + +ViewTool Views +Show Messages + + + + +Toggle display of the message window. This is the window where you see the +output of any scripting actions and the debugger. + + + + + + + +ViewTool Views +Show Problems + + + + +Toggle display of the Problem Reporter at the bottom +of the main &quantaplus; window. The Problem Reporter +activates when you switch to the Structure Tree. + + + + + + + +ViewTool Views +Show Annotations + + + + +Shows the annotation view. Read the for details. + + + + + + + +ViewTool Views +Show Upload Profile:... + + + + +Shows the files on the server for an upload profile. + + + + + + + + + + + + + +&Shift;F9 + +View +Show Icon Border + + + + +Toggle display of the icon border to the left of the main editor window. +This bar allows for click toggling of bookmarks. + + + + + + + + +F11 + +View +Show Line Numbers + + + + +Toggles the display of line numbers along the side of +the main editor window. + + + + + + + + +F10 + +View +Dynamic Word Wrap + + + + +Toggle on and off reformatting of text to a specific +width as you type. + + + + + + + + +&Alt;F9 + +View +Source Editor + + + + +Switch to the source of a document to edit. + + + + + + + + +&Ctrl;&Shift;F9 + +View +&VPL; Editor + + + + +Switch to the &VPL; Editor to edit a document. + + + + + + + + +F9 + +View +&VPL; & Source Editors + + + + +Switch to split screen mode to edit a document. + + + + + + + + +F6 + +View +Preview + + + + +Preview the current document. + + + + + + + + +&Alt;Left Arrow + +View +Back + + + + +Navigate back one step in the preview. + + + + + + + + +&Alt;Right Arrow + +View +Forward + + + + +Navigate forward one step in the preview after having gone back in the +preview. + + + + + + + + +F5 + +View +Reload Preview + + + + +Reload the preview from disk. + + + + + + + + +F12 + +ViewExternal Preview +View with &konqueror; + + + + +View the current file with &konqueror;. + + + + + + + + +&Ctrl;&Shift;F12 + +ViewExternal Preview +View with Firefox; + + + + +View the current file with the Mozilla Firefox browser. + + + + + + + + +&Shift;F12 + +ViewExternal Preview +View with Mozilla + + + + +View the current file with Mozilla. + + + + + + + + +&Shift;F6 + +ViewExternal Preview +View with &Netscape; + + + + +View the current file with &Netscape;. + + + + + + + + +&Alt;F6 + +ViewExternal Preview +View with Opera + + + + +View the current file with Opera. + + + + + + + +ViewExternal Preview +View with Lynx + + + + +View the current file with Lynx (a text based +browser). + + + + + + + + The <guimenu>Bookmarks</guimenu> Menu + + + + + + + &Ctrl;B + + Bookmarks + Set Bookmark + + + + + Sets a bookmark at the current line location in the current file. + + + + + + + + Bookmarks + Clear All Bookmarks + + + + + Clears all set bookmarks in the current document. + + + + + If you have bookmarks in the current file, they will appear in the menu together with a Previous or Next item, depending on the position of the cursor in the document. + If you have bookmarks in other opened documents, they will appear in the menu grouped by the file name of the other documents. + + + + +The <guimenu>Project</guimenu> Menu + + +How to use projects in &quantaplus; is described in . + + + + + + +Project +New Project... + + + + +Launch the project creation wizard. + + + + + + + +Project +Open Project... + + + + +Open an existing project file from disk. &quantaplus; projects are saved +with the .webprj extension. + + + + + + + +Project +Open Recent Project + + + + +Gives you a list of your most recently used projects for quick access. + + + + + + + +Project +Close Project + + + + +Close the current project. + + + + + + + +Project +Open Project View... + + + + +Open a View, a specific combination of open files that you +have previously saved. + + + + + + + +Project +Save Project View + + + + +Save the current set of open files as a View. + + + + + + + +Project +Save Project View As... + + + + +Save the current set of open files as a View under another +name. + + + + + + + +Project +Delete Project View + + + + +Delete a View. + + + + + + + +Project +Insert Files... + + + + +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. + + + + + + + +Project +Insert Folder... + + + + +Insert a folder and all of its contents into the current project. + + + + + + + +Project +Rescan Project Folder... + + + + +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. + + + + + + + + +F8 + +Project +Upload Project... + + + + +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. + + + + + + + + +&Shift;F7 + +Project +Project Properties + + + + +Settings affecting the way &quantaplus; manages your project. See the +&quantaplus; projects section for +details. + + + + + + + +The <guimenu>Toolbars</guimenu> Menu + + + + + +Toolbars +Load Toolbars + + + + + + + + +Toolbars +Load Toolbars +Load Global Toolbar... + + + + +Loads a globally defined toolbar. These are kept in $KDEDIR/share/apps/quanta/toolbars +by default. + + + + + + + +Toolbars +Load Toolbars +Load Local Toolbar... + + + +Loads a locally defined toolbar. These are kept in $HOME/.kde/share/apps/quanta/toolbars +by default. + + + + + + + +Toolbars +Load Toolbars +Load Project Toolbar + + + +Loads a project toolbar. These are kept in ProjectDir/toolbars +and are only available in this menu if they have been assigned to this +project. + + + + + + + + + + +Toolbars +Save Toolbars + + + + +Dialog for saving your toolbars. Allows you to pick the type of toolbar; +Local or Project. + + + + + + +Toolbars +Save Toolbars +Save as Local Toolbar... + + + + +Save as a local toolbar to +$HOME/.kde/share/apps/quanta/toolbars + + + + + + + +Toolbars +Save Toolbars +Save as Project Toolbar... + + + + +Save as a project toolbar in +ProjectDir/toolbars + + + + + + + + + + +Toolbars +Add User Toolbar... + + + + +Brings up a dialog to create a new toolbar. This only creates the name. +Actions must be added from the + +Settings +Configure Actions + +menu item. Toolbars are saved via the + +Toolbars +Save Toolbars + +menu or on close unsaved toolbars will prompt for you to save. + + + + + + + +Toolbars +Remove User Toolbar... + + + + +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. + + + + + + + +Toolbars +Rename User Toolbar.. + + + + +Allows you to rename a toolbar. + + + + + + + +Toolbars +Send Toolbar in E-Mail... + + + + +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. + + + + + + + + Toolbars + Send Toolbar in Email... + + + + + This is allows you to upload a toolbar to the main resource server. See . + + + + + + + +Toolbars +Upload Toolbar... + + + + + This is allows you to upload toolbars to the main server, from where others can download it.See . + + + + + + +Toolbars +Download Toolbar... + + + + + This is allows you to download toolbars from the Internet.See . + + + + + + + + + +The <guimenu>&DTD;</guimenu> Menu + + +Christopher +Hornbaker + +
chrishornbaker@earthlink.net
+
+
+
+
+ +The <guimenu>&DTD;</guimenu> Menu + + + + + +&DTD; +Change the &DTD;... + + + + +Pops up a dialog box that allows you to change the current documents &DTD; + + + + + + + &DTD; + Edit &DTD; Settings... + + + + + Makes possible to change the &descriptionrc; configuration file for a &DTEP;. + + + + + + + +&DTD; +Load & Convert &DTD;... + + + + +Load a &DTD; that you or someone else made and convert it to &quantaplus;' +native description format. + + + + + + + +&DTD; +Load &DTD; Entities... + + + + +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. + + + + + + + +&DTD; +Load &DTD; Package (&DTEP;)... + + + + +Load a your own &DTEP;. + + + + + + + +&DTD; +Send &DTD; Package (&DTEP;) in E-Mail... + + + + +Send your &DTEP; to a friend via &kmail;. + + + + + + + + &DTD; + Upload &DTD; Package (&DTEP;)... + + + + + This is allows you to upload a &DTEP;s. See . + + + + + + +&DTD; +Download &DTD; Package (&DTEP;)... + + + + + This is allows you to download &DTEP;s from the Internet. See . + + + + +
+ + +The <guimenu>Tags</guimenu> Menu + + +This menu contains a list of the elements that are in the currently loaded +toolbars. If you have the Standard (&HTML;) toolbar loaded, the +Tags menu will contain a submenu Standard + which will contain the list of tags/actions on that toolbar. + + + + + + + +&Ctrl;E + +Tags +Edit Current Tag... + + + + +Allows you to access the current markup tag settings dialog if one exists. +This entry is always present, followed by the &DTD; specific submenus. + + + + + + + +Tags +Select Current Tag Area + + + + +This highlights the current tag area. The tag area begins where the mouse +cursor is placed. + + + + + + + Tags + Smart Tag Insertion + + + + + 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. + + + + + + + +The <guimenu>Plugins</guimenu> Menu + + + + + +Plugins +Plugin + + + + +The Plugins menu lists the +available plugins under the above menu items. Clicking them will activate +them. Clicking an activated plugin will deactivate it. + + + + + + + + +The <guimenu>Tools</guimenu> Menu + + + + + + +Tools +Highlight Mode + + + + +Choose the syntax highlighting mode for the current file. The list of +available highlighting schemes varies depending on your version of &kate;. + + + + + + + +Tools +End of Line + + + + +Select the end of line encoding type. Useful if you have folks using other +&OS; platforms to develop on. Choose from +Unix, +Windows/DOS or +Macintosh. + + + + + + + + +&Ctrl;I + +Tools +Indent + + + + +Move the selected block of text one tab width to the right. + + + + + + + + +&Ctrl;&Shift;I + +Tools +Unindent + + + + +Move the selected block of text one tab width to the left. + + + + + + + +Tools +Clean Indentation + + + + +Removes all indentation. + + + + + + + +&Ctrl;D + +Tools +Comment + + + + +Comments selected text. + + + + + + + + +&Ctrl;&Shift;D + +Tools +Uncomment + + + + +Uncomments selected text. + + + + + + + +Tools +Word Wrap Document + + + + +Wrap the text in the current window to a predefined width. + + + + + + + +Tools +Spelling... + + + + +Check the spelling in the current document. + + + + + + + +Tools +Document Properties + + + + +Edit specific properties of a currently loaded document when using the +&VPL; Editor. + + + + + + + +Tools +Convert Tag & Attribute Case... + + + + +Convert all tags and/or attributes character cases to another. + + + + + + + + +&Alt;&Ctrl;T + +Tools +HTML Tidy Syntax Checking + + + + +Checks the syntax of the current document against the selected &DTD; using the external tidy application. + + + + + + + + The <guimenu>Window</guimenu> Menu + + + + + Window + Close + + + + + Closes the current tab (document, plugin, preview or documentation). + + + + + + + Window + Close All + + + + + Closes all opened tabs. + + + + + + + Window + MDI Mode + + + + + 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 IDEAl Mode, which is the default or + Tab Page Mode, which is the same mode that was present in &quantaplus; 3.2 and earlier versions. + + + + + Furthermore this menu contains an entry for every opened tab. By selecting such an entry, that selected tab will become the active one. + + + +The <guimenu>Settings</guimenu> Menu + + + + + + Settings + Toolbars + + + + + Show or hide the non-user toolbars. + + + + + + + Settings + Show/Hide DTD Toolbar + + + + + Toggle on and off the display of the &DTD; specific toolbar. + + + + + + + + Settings + Show/Hide Statusbar + + + + + Toggle on and off the display of the status bar at the bottom of the main + &quantaplus; window. + + + + + + +Settings +Configure Quanta... + + + + +Setup the behavior of &quantaplus;. + + + + + + + + Settings + Configure Preview... + + + + + Setup the behavior of the integrated preview. The changes made in the dialog have effects on every application using the KHTML part, including the &konqueror; web browser. + + + + + + + + +Settings +Configure Actions... + + + + + This is where you define the actions for use on toolbars. See . + + + + + + + + Settings + Configure Plugins... + + + + + This is where you can define and modify the plugins. + + + + + + + + Settings + Configure Editor... + + + + + Setup the behavior of the editor window. See the documentation on &kate; + for details. + + + + + + + +Settings +Configure Toolbars... + + + + +Dialog that allows you to add/delete items to/from toolbars and change the +order the icons appear in. + + + + + + + +Settings +Configure Shortcuts... + + + + +Allows you to configure the many editor shortcuts available to +&quantaplus;. + + + + + + + + +The <guimenu>Help</guimenu> Menu + + +&quantaplus; contains a standard &kde; Help menu with +the addition of these items: + + + + + + + +&Ctrl;H + +Help +Context Help + + + + +This should produce help based on the current pointer context. At the time +of this writing this feature is not implemented. + + + + + + + +Help +Make A Donation + + + + +&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. + + + + + + + +The standard &kde; help menu items are as follows: + + +&help.menu.documentation; + + +
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 @@ + + + + +Projects + + +Robert +Nickel + +
robert@artnickel.com
+
+
+ + András + Mantia + +
amantia@kde.org
+
+
+ + +Christopher +Hornbaker + +
chrishornbaker@earthlink.net
+
+Reviewer +
+ + +Fabrice +Mous + +
fabrice@kde.nl
+
+Reviewer +
+ + + +
+
+ +Projects + + +New Projects + + +The &quantaplus; project wizard +( +Project +New Project... +) makes project creation an easy task. + + + + + + +The Project Wizard. + + + +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 + + +&Shift;F7 + +Project +Project Properties +. + + + +General Project Settings + +Name + + +Here you fill in the name for your project. For example, we will call ours +foo. When you fill in +Name, File is filled out for +you automatically. + + + + + +File + + +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 webprj (⪚ +foo.webprj). This file is stored in the root of the +project's Main Folder. + + + + + + + +Server Settings + + + +Protocol + + +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. + + + + +Host + + +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. + + + + +User + + +User name for logging onto the remote machine. This is case-sensitive. + + + + +Password + + +Password for logging onto the remote machine. This is case-sensitive. + + + + +Port + + +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. + + + + + + + + + + + +Directory Settings + + + +Main directory + + +This is the root folder where all of the project files and folders +will be stored. + + + + +Templates directory + + +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 +templates. +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. + + + + +Toolbars directory + + + 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 toolbars. +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. + + + + + + + + + + + +Project Sources + + + +Add local or remote files + + +This allows you to get files from the local file system. You can choose +multiple files or entire folders. + + + + +Use wget to download files from site + + +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. + + + + + + + + + +Insert Files in Project + +Insert file from + + +Check this if you wish to include files found in the path of the Main +Folder. Leave unchecked when starting a project from scratch. + + + + +Filters + + + +Insert only markup, script and image files + + +Choosing this option will only insert markup, script, and image files into +your project. + + + + +Insert files with the following mask + + +Choosing this option will display all files and folders within the +Main Folder and allow you to be more specific with your choices. + + + + + + + +Included files + + +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. + + + + + + +More Project Settings + +Author + + +Insert your name (or alias) here. + + + + +Email + + +The address where you would like email regarding this project to go. + + + + +Project Defaults + + + +Default DTD + + +Choose the markup language you will be working with the most within this +project. + + + + +Default encoding + + +Choose the character encoding you wish the files in your project to be +opened and saved with. + + + + + + + +Use preview prefix + + +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;, JSS, 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 bar.com and you are editing the +index.html page, you could edit it on your remote +machine (foo.bar.com), upload it to the server +and press F6 to see the results from +www.bar.com instead of your local file system. + + + +Prefix + + +Enter the prefix you wish to use here. + + + + + + + +Insert global templates + + +This makes a copy of the global templates in your projects folder tree. + + + + +Insert local templates + + +This makes a copy of the local templates in your projects folder tree. + + + + + + +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 + +Project +Project Properties + +menu tree on the Upload Profiles Tab or with the keyboard shortcut +&Shift;F7. + + + + + +Configuring Projects + + The project properties dialog looks like: + + + + + The general options page + + + + + Some of the items are the same as in the project wizard and are described in . The extra items are described below. + +General Project Settings + +Exclude from project + + + A list of file names (wildcards can be used) that will be ignored when you do project related operations like Rescan Project Folder. + + + + + Exclude files listed in .cvsignore + + + A complementary option to the above one, also files listed in the .cvsignore file will be excluded from the project. + + + + + Default view + + + The project view that will be loaded when the project is opened. + You can read more about project views in . + + + + + Debugger + + + Select the debugger you want to use. Currently only Gubed is support. You can find more information about Gubed at .The debugger plugin can be configured with the Options button. + read to learn more about debugging. + + + + + Default view + + + The project view that will be loaded when the project is opened. + You can read more about project views in . + + + + + +On the Upload Profiles page you can configure the upload profiles (see ), as well as enable the showing of a treeview with the content of the server for each profile by checking the Show a treeview for each profile checkbox. + + + On the Team Configuration page you can add, edit and remove members of the project as well as define a mailing list. Read for details. + + + On the Event Configuration page you can Enable the event actions, add, modify and remove these actions. Event actions are executed when some predefined event occurs, like saving a file. See for details. + + + + +Using Projects + + +Project Files + + +By default &quantaplus; will open the last project accessed when launched. +This behavior is not currently configurable. + + + +To open another project, select Open Project... from the +Project menu or the Open Project +icon on the toolbar. The open project dialog will pop up and allow you to +choose the project you wish. Projects have a webprj extension. + + + +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. + + + + + +The Project Tree View + + +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. + + +For files, a &RMB; click brings up the following menu: + + + + + + + + +These items are fairly self-explanatory and will be left to the reader +for exploration. + + + +Folders are similar but do not contain the Open +and Open With... &RMB; menu items: + + + + + + + + + +These items are left to the reader for exploration as well. + + + + + +Uploading Projects + + +The Upload Project dialog: + + + + + + +The Upload Project dialog. + + + + +Profile name + + +This is where different profiles can be chosen. The profile contains +information on where the uploaded files are to be placed. Read . + + + + +New + + +This button allows you to create new upload profiles. + + + + + +Edit + + +This allows you to edit the currently selected upload profile. + + + + + +Remove + + +This allows you to remove the current profile. If only +one profile is available the button is grayed out to prevent its +removal. + + + + + +Keep passwords in memory + + +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 Store password on disc option. + + + + + +All + + +Select all files in your project for upload. + + + + + +Modified + + +Select all modified files for upload. + + + + + +None + + +Unselects all files in the list. + + + + + +Invert + + +Selects/Unselects all files in the list. + + + + + +Expand All + + +Expands all folders. + + + + + +Collapse All + + +Collaspes all folders. + + + + + +Update All + + +Refreshes list. + + + + + +Proceed + + +Start the upload + + + + + +Cancel + + +This will abort your transfer in progress or just exit out of the dialog +if you change your mind before starting the upload. + + + + + + + + +Upload profiles + +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: + + + + + + + + +Profile name + +Enter the name you wish to give your profile here. + + + +Host + + +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. + + + + + +Protocol + + +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 NFS. + + + + + +Port + + +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. + + + + + +User + + +Username to use for authentication. + + + + + +Password + + +Password to use for authentication. + + + + + +Store password on disc + + +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. + + + + + +Path + + +This is the base path on the remote host that you will be copying files +to. + + + + + +Use as default profile + + +Allows you to mark the profile currently being viewed as the default. + + + + + + + + + Project Views + + 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. + + + Views can be saved, opened, deleted using the Project menu or the Project Toolbar, accessible via SettingsToolbarsProject Toolbar. + + + You can have a default view (loaded when the project is opened). See . + + +
diff --git a/doc/quanta/quantamdi-editor.png b/doc/quanta/quantamdi-editor.png new file mode 100644 index 00000000..c20e92b0 Binary files /dev/null and b/doc/quanta/quantamdi-editor.png differ diff --git a/doc/quanta/quantamdi-treeview.png b/doc/quanta/quantamdi-treeview.png new file mode 100644 index 00000000..69f0a5c6 Binary files /dev/null and b/doc/quanta/quantamdi-treeview.png differ diff --git a/doc/quanta/quantamdi.png b/doc/quanta/quantamdi.png new file mode 100644 index 00000000..8c85833f Binary files /dev/null and b/doc/quanta/quantamdi.png differ diff --git a/doc/quanta/script-action.png b/doc/quanta/script-action.png new file mode 100644 index 00000000..6eaf85a6 Binary files /dev/null and b/doc/quanta/script-action.png differ diff --git a/doc/quanta/tag-actions.png b/doc/quanta/tag-actions.png new file mode 100644 index 00000000..3f5acd2a Binary files /dev/null and b/doc/quanta/tag-actions.png differ diff --git a/doc/quanta/tag_misc.png b/doc/quanta/tag_misc.png new file mode 100644 index 00000000..7ae77650 Binary files /dev/null and b/doc/quanta/tag_misc.png differ diff --git a/doc/quanta/taginputex.png b/doc/quanta/taginputex.png new file mode 100644 index 00000000..f2f8f87e Binary files /dev/null and b/doc/quanta/taginputex.png differ diff --git a/doc/quanta/team-editing.png b/doc/quanta/team-editing.png new file mode 100644 index 00000000..a81d2041 Binary files /dev/null and b/doc/quanta/team-editing.png differ diff --git a/doc/quanta/template-rmb.png b/doc/quanta/template-rmb.png new file mode 100644 index 00000000..ffa3b05f Binary files /dev/null and b/doc/quanta/template-rmb.png differ diff --git a/doc/quanta/text-action.png b/doc/quanta/text-action.png new file mode 100644 index 00000000..9372b95a Binary files /dev/null and b/doc/quanta/text-action.png differ diff --git a/doc/quanta/toolbars.png b/doc/quanta/toolbars.png new file mode 100644 index 00000000..0027e0fa Binary files /dev/null and b/doc/quanta/toolbars.png differ diff --git a/doc/quanta/ttab.png b/doc/quanta/ttab.png new file mode 100644 index 00000000..f6d5c08b Binary files /dev/null and b/doc/quanta/ttab.png differ diff --git a/doc/quanta/view_sidetree.png b/doc/quanta/view_sidetree.png new file mode 100644 index 00000000..ddf73f5f Binary files /dev/null and b/doc/quanta/view_sidetree.png differ diff --git a/doc/quanta/vplsourceview.png b/doc/quanta/vplsourceview.png new file mode 100644 index 00000000..ba6e3472 Binary files /dev/null and b/doc/quanta/vplsourceview.png differ 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 @@ + + + + +Working With... + + +Robert +Nickel + +
robert@artnickel.com
+
+
+ + András + Mantia + +
amantia@kde.org
+
+
+ + +Christopher +Hornbaker + +
chrishornbaker@earthlink.net
+
+Reviewer +
+ + +Fabrice +Mous + +
fabrice@kde.nl
+
+Reviewer +
+ + + +
+
+ +Working With... + + +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. + + + +Toolbars + + +As previously mentioned, toolbars in &quantaplus; are primarily managed +through the Toolbars menu. Usage and creation are +somewhat different. The creation of toolbars is discussed in a later +section entitled Creating +Toolbars. + + + +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 for more information. + + + +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 New Action, a New Toolbar, you can perform other actions like Remove Toolbar, Rename Toolbar or Configure Toolbars, which will get you the dialog where you can specify which actions should be visible on this or other toolbars. + + + By invoking the context menu on an action (icon) placed to a toolbar, aside of the above actions you will see the Remove Action and Edit Action entries, which speak for themselves. + + + The toolbars and the actions on them can be configured by using the SettingsConfigure Toolbars... and SettingsConfigure Actions.. menu entries. + + + About the user definable actions you can read in . + + + +A tag dialog looks just like the following: + + + + + +An example of a tag dialog. + + + + +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 +Main, Core and i18n, +Events, and Focus, 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. + + + +&quanta-projects; + + +Templates + + +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. + + + +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. + + + +Our goal with templates is to extend them to include multi file +concept 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 +help +wanted page. + + + + +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. + + + + +Template Types + + +There are various template types supported by &quantaplus;. +These are: + + + +Binary templates +Document templates +Text snippets +Site templates + + +Examples for these types are provided with &quantaplus;. + + + +Binary templates + + +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 img src=/src/url). +Some examples can be found in the Templates tree under Global Templates. +Please see for more information on the +Templates tree. + + + + + +Document templates + + +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 for more information on the +Templates tree. + + + + + +Text snippets + + +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 for more information on the +Templates tree. + + + + + +Site templates + + +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;. + + + + + + + + +Template Scopes + + +Templates are accessible based upon their established +workspace in &quantaplus; + + + + + +Creating Templates + + +Creating document templates + +Create a document structure that you love (&XML;, &HTML;, DocBook, &etc;.) +and click on + +File +Save as Template +Save as Local/Project Template +. + + + +Once this is done, you will notice that (even if it is saved as a Project +template) the template does not show in the project +tab view. Look into the templates view to find your template under the +Project templates tab. + + + +Creating text snippets +Select some text in your document and click on + +File +Save as Template +Save Selection to Local/Project Template file +. +Alternatively you can just use drag and drop to drag the selection to the Templates treeview. + + + +Creating binary templates +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 Files Tree. + + + +Creating site templates + +In the Files Tree or the Project Files +treeviews right click on a folder and select Create Site Template, +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. + + + + + +Using Templates With Projects + + +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. + + + +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. + + + + + +Managing Templates + + +Template structure on the template tab is based on the files found in + +$KDEDIR/share/apps/quanta/templates and + +$HOME/.kde/share/apps/quanta/templates. Each of +these folders is specified as one of four types of container as explained above. + + + +To set the behavior of each folder, &RMB; click in the template view on +the folder and choose Properties. The +following dialog will come up: + + + + + +Properties dialog. + + + + + +Type + + + +Drop down box with the three types discussed previously; files, text, +template. This box will be grayed out if you have the Inherit +parent attribute box checked. + + + + + +Inherit parent attribute (foo) + + +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 blah will say something like +Text snippet. If it says nothing, then chances are that +you are on a top level folder. + + + + +Use pre/post text + + +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. + + + + +Pre-text + + +The actual text to insert before your templates content. + + + + +Post-text + + +The actual text to insert after your templates content. + + + + + + +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. + + + + + + +<application>Visual Page Layout</application> + + +Nicolas +Deschildre + +
nicolasdchd@ifrance.com
+
+
+ + +Christopher +Hornbaker + +
chrishornbaker@earthlink.net
+
+Reviewer +
+ + + +
+
+ +<application>Visual Page Layout</application> + + +&VPL; Modes + + +The Visual Page Layout (&VPL;) editor (also known +as WYSIWYG (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. + + + +&quantaplus; offers two modes: &VPL; Editor and +&VPL; & Source Editors, which are accessible from +the View menu. The first replaces the Source +Editor with the &VPL; Editor, and the +second splits the editor window into two parts: the Source +Editor and the &VPL; Editor. + + + +The &VPL; Editor 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 Source Editor, you see +that the changes you made on the &VPL; Editor have +been merged in the Source Editor. + + + + +When working in the &VPL; Editor with a document that +contains &PHP;, you will see a small green icon representing the &PHP; +code. You cannot directly edit it with the &VPL; +Editor. To edit &PHP;, you will still need to use the +Source Editor. There are no plans to change this +functionality. + + + + +The second mode behaves exactly like the first, except that you instantly +see the impact that your changes have made, either in the Source +Editor or in the &VPL; Editor, and the +cursors of the source editor and of the &VPL; Editor +are synchronized. Pressing F9 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. + + + +The refresh intervals between the &VPL; Editor and +the Source Editor are configurable. Go to + +Settings +Configure Quanta... +. Select the &VPL; View 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. + + + + + + +The &VPL; & Source Editors mode. + + + + +&VPL; Editing + + +The <guilabel>Document Properties</guilabel> Dialog + + +Now, let's say you want to edit the title of your web page. How do you do +it? Simply launch + +Tools +Document Properties +. This tool allows editing of invisible +tags when using the &VPL; Editor. The +Document Properties dialog is also launched when you +create a new document while in the &VPL; Editor. This +is in order to lessen the amount of hand coding you need to perform. With +it, you can edit: + + + + +Title + + +The title of the document. + + + + +Meta items + + +Meta tags allow you to store information about the document itself +⪚ keywords for the Internet search engines. You can add or remove +Meta items by pressing the two buttons below, +and edit them by clicking on the list ⪚ put keywords on +the name column and keyword1 keyword2 on the +content column. + + + + +CSS Rules + + +CSS Rules are the new way to tell your web browser +how to present the page. You can add or delete the CSS +Rules by pressing the buttons below. You can also fill the +fields like the Meta items. The editing of +CSS Rules is not yet supported. + + + + +Link CSS Stylesheet + + +You can also link an external CSS stylesheet. Simply click on the +Browse button and select your file. + + + + + + + + +The <guilabel>&VPL; Editor</guilabel> + + +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. + + + +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. + + + + +Some toolbar items will be disabled, such as the Table +Wizard or Quick List Wizard. They will +work later in &VPL;, but, for this release, you should use the +Tables or Lists toolbars. + + + + +To edit a tag (be it an image, an applet, or whatever), switch to the +Attribute Tree, accessible via + +View +Tool views +. Click on the tag you wish to edit, or, if you cannot access +it, click on an object contained by it. The Attribute +Tree will show the current tag name as well as a list of all its +parents and attributes. Currently &VPL; does not support, say, +&XHTML;+MathML, but you will see that you can edit +namespaces via this view. You can simply click on the +Value field and modify whatever you want. If you want +to access a parent of the current tag, then select it and the +Attribute Tree will load it. + + + +To delete a tag, we will use the Attribute Tree. 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! + + + + +
+
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 @@ + + +Command Reference + +Addparam +Add a libxslt parameter ; equivalent to providing --param <QNAME>:<XPATH> via command line. + + +Addparam usage + +addparam <QNAME> <XPATH>    (The <XPATH> must not contain any spaces nor double quotation marks.) +addparam <QNAME> "<XPATH>"    (Must not contain double quotation marks in <XPATH>) + + +
+
+ +Addwatch +Add an expression to be watched. See showwatch for display watch values +Shortcut name: watch +Addwatch usage + +addwatch <XPATH> + + +
+
+ +Base +Print the base for this node +Base usage + + +base + + +
+
+ +Break +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. +Shortcut name: bxsldbg will try to guess the complete URL given a + + +file name without a path specified. +a file name in the same directory as the "top" stylesheet loaded +a file name relative to the current working directory of xsldbg + + +Ie if you have loaded a stylesheet file of ../en/xsldoc.xsl you can do this + break -l xsldoc.xsl 26 +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" +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" +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. +Automatic breakpoint validation is used when gdb mode is enabled - the default behaviour of xsldbg +Break usage + + +break -l <FILENAME> <LINENO>    (To set breakpoint at specified file, line number) +break -l <URI> <LINENO>    (To set breakpoint at specified URI, line number) +break <TEMPLATE_NAME>    (To break at named or matched template.) +break <TEMPLATE_NAME> <MODE_NAME>    (To break at named template with given mode.)> +break "" <MODE_NAME>    (To break at any template that has a given mode name) +break *    (To break at any template found.) +break \*    (To break at the "*" template. Other name that include '*' will not be treated specialy.) +break     (To break point at current node. Yes that includes xml data nodes!) + + +
+
+ +Bye +Exit processing stylesheet as soon as possible. +Bye usage + + +bye + + +
+
+ +Cat +Print the result of a xpath expression on relative current node. +Cat usage + + +Usage : cat <XPATH>    (To view a variable or parameter) +Usage : cat $<QNAME> + + +
+
+ +Cd +Change to the path specified by a xpath. +Cd usage + + +<< = preceding-sibling::node() +>> = following-sibling::node() +<- = ancestor::node() +-> = decendant::node() + +
+
+ +Chdir +Change the working directory +Chdir usage + + +chdir <PATH>    (A relative or absolute path for operating system) + + +
+
+ +Continue +Continue running stylesheet, stopping at any break points found. +Shortcut name: c +Contine usage + + +continue + + +
+
+ +Data +Switch to displaying the current node in xml data. Or change xml data used +Data usage + + +data    (Switch to the current document node.) +data <DATA>    (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) + + +
+
+ +Delete +Delete a template breakpoint +Shortcut name: d +Delete usage + + +delete    (To delete breakpoint at current node) +delete <BREAKPOINT_ID>    (To delete breakpoint at specified break point number) +delete -l <FILENAME> <LINENO>    (Delete at specifed file, line number) +delete -l <URI> <LINENO>    (Delete at specifed URI, line number) +delete <TEMMPLATENAME>    (To delete break point at named template.) +delete *    (To delete all break points.) + + +
+
+ +Delparam +Delete a libxslt parameter +Delparam usage + + +delparam    (Delete all parameters present) +delparam <PARAM_ID> + + +
+
+ +Delwatch +Delete a watch expression or remove all watch expressions as displayed by "showwatch." command +Delwatch usage + + +delwatch <WATCHID>    (Delete a watch expression with given ID) +delwatch *    (Delete all watch expressions) + + +
+
+ +Dir +Print list of nodes in a similary way to the dir shell command. + +Dir usage + + +dir + + +
+
+ +Disable +Disable a breakpoint +Disable usage + + +disable    (To disable breakpoint at current node) +disable <BREAKPOINT_ID>    (To disable breakpoint at specified break point number +disable -l <FILENAME> <LINENO>    (Disable breakpoint at specifed file, line number) +disable -l <URI> <LINENO>    (Disable breakpoint at specifed URI, line number) + + +
+
+ +Du +Print a summary of child nodes in a tree format. +Du usage + + +du + + +
+
+ +Dump +Dump the gory details of this node +Dump usage + + +dump + + +
+
+ +Enable +Enable or disable a breakpoint (Toggle enable/disable/) +Shortcut name: e +Enable usage + + +enable    (To enable/disable breakpoint at current node) +enable <BREAKPOINT_ID>    (To enable/disable breakpoint at specified break point number +enable -l <FILENAME> <LINENO>    (Enable/disable breakpoint at specifed file, line number) +enable -l <URI> <LINENO>    (Enable/disable breakpoint at specifed URI, line number) + + +
+
+ +Entities +Print list of external General Parsed entities used data file (document) +Shortcut name : ent +Entities usage + + +entities + + +
+
+ +Exit +Exit processing stylesheet as soon as possible. +Exit usage + + +exit + + +
+
+ +Frame +Print the stack frame at a given depth +Shortcut name: f +Frame usage + + +frame <FRAME_DEPTH>    (Depth is a number from 0 to the current depth of call stack) + + +
+
+ +Free +Free stylesheet and data (Disabled see run) +Free usage + + +free + + +
+
+ +Globals +Print a list of global stylesheet variables or parameters. Print the value of a global variable +Globals usage + + +globals    (Print list of all globaly available variables) +globals -f    (Print list of all globaly available variables and thier values) +globals <QNAME>    (Print the value of variable specified) + + +
+
+ +Help +Display help on command or overiew +Shortcut name: h +Help usage + + +help     (Show overview of product) +help <COMMAND>     (Show help about a command) + + +
+
+ +Load +Load the xsldbg's options and user preferences from disk +Load usage + + +load + + +
+
+ +Locals +Print a list of local stylesheet variables or parameters. Print the value of a local variable +Locals usage + + +locals    (Print list of all locally available variables) +locals -f    (Print list of all locally available variables and thier values) +locals <QNAME>    (Print the value of variable specified) + + +
+
+ +Ls +List nodes in a brief format +Ls usage + + +ls + + +
+
+ +Next +Skip over an xsl:call-template or xsl:apply-templates. +This command has the same effect of entering the commands "step" and then "up" +Shortcut name: n +Next usage + + +next    (proceed to next sibling instruction) + + +
+
+ +Options +Print the values for xsldbg's option +Options usage + + +options + + +
+
+ +Output +Specify a local, writable file to be used for output of results +Shortcut name : o +Output usage + + +output <FILENAME>    (A local writable file name. Which can have a "~" prefix on *nix and CYGWIN platforms. Or environment variables under RISC OS) +output <URI>    (The <URI> must only use the "file://" protocol. This is then converted to a file name suitable for the operating system) +output -    ( Send to standard output. Must only be used when using xsldbg's command line prompt ) + + +
+
+ +Public +Print the value that a public ID maps via the current catalog +Shortcut name : pub +Public usage + + +public "<PublicID>" + + +
+
+ +Pwd +Print the current working directory. +Pwd usage + + +pwd + + +
+
+ +Quit +Exit processing stylesheet as soon as possible. +Shortcut name: q +Quit usage + + +quit + + +
+
+ +Run +Restart the stylesheet. +Shortcut name: r +Run usage + + +run + + +
+
+ +Save +Save the xsldbg's options and user preferences to disk +Save usage + + +save + + +
+
+ +Search +Search a dataBase of all information gathered from stylesheets loaded +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. +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. +Depending on the amount of data collected it might take a while to complete this command. + +Search usage + + +search <XPATH>    (See what xpath can be used see search.dtd. The deafault <XPATH> is '//search/*' ) +search -sort <XPATH>    (Tell search.xsl to sort the result before outputing it) + + +
+
+ +Set +Set the value of a variable +Set usage + + +set <VARIABLE_NAME> <XPATH> + + +
+
+ +Setoption +Set an option for execution of stylesheet +You will need to use run command to active changes +Setoption usage + + +setoption <OPTION_NAME> <INTEGER_VALUE> +Where <OPTION_NAME> can be either + + + + + debug    (If <INTEGER_VALUE> is true dump the tree of the result instead) + catalogs    (If <INTEGER_VALUE> is true use the catalogs from $SGML_CATALOG_FILES or SGML$CatalogFiles for risc operating system) + html    (If <INTEGER_VALUE> is true the input document is an HTML file) + docbook    (If <INTEGER_VALUE> is true and docbook is still supported by libxml the input document is SGML docbook) + xinclude    (If <INTEGER_VALUE> is true do XInclude processing on document intput) + preferhtml    (If <INTEGER_VALUE> is true the prefer html output for search results. : See search command) + autoencode    (If <INTEGER_VALUE> is true try to use the encoding from the stylesheet) + utf8input    (If <INTEGER_VALUE> is true All input from user is in UTF-8.This is normaly used when xsldbg is running as a thread) +      + gdb    (Run in gdb compatability mode) + + + + For a value of 1 this means + + + + Print lots more messages. Increase the frequency of printing "Breapoint at ..." + 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 + Both local and globals will be printed when the "locals" command is issued + When printing expresssions with cat/print. The evaluated value will be prefixed by "= " < EXPRESSION > + + + + + + For a value of 2 this means + + + + Print messages needed by KDbg as well as the output state above (when value is 1) + + + + + + + + + nonet    (If <INTEGER_VALUE> is true refuse to fetch DTDs or entities over network) + novalid    (If <INTEGER_VALUE> is true skip the DTD loading phase) + repeat    (If <INTEGER_VALUE> is true run the transformation 20 times) + profile    (If <INTEGER_VALUE> is true dump profiling informations) + timing    (If <INTEGER_VALUE> is true display the time used) + noout    (If <INTEGER_VALUE> is true do not dump the result) + + + + +Where value is true if it is NOT equal to zero +Where value is false if it IS equal to zero +stdout    Print all error messages to stdout. Normally error messages go to stderr. +setoption <OPTION_NAME> "<STRING_VALUE>"    (Must not contain double quotation marks in <STRING_VALUE>) +setoption <OPTION_NAME> <STRING_VALUE>    (Must not contain any spaces, nor double quotation marks in <STRING_VALUE>) +Where <OPTION_NAME> can be either + + + + + data    (Data file's URI) + source    (Source file's URI) + output    (Output file's SystemID ) + docspath    (Path to use when looking for documentation) + catalognames    (The names of the catalogs to use when the catalogs option is set. Value will be lost if set before setting catalogs option) + encoding    (What encoding to use for standard output) + searchresultspath    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 + + + + + +
+
+ +Shell +Execute shell command +Shell usage + + +shell <TEXT>    (<TEXT> is the text to be passed to operating system for execution) + + +
+
+ +Showbreak +To display list of template break points. +Shortcut name: showIf 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 : + + + Breakpoint 3 enabled for template :"*" in file test1.xsl : line 105 + Breakpoint 2 enabled for template :"* testMode" in file test1.xsl : line 109 + Breakpoint 1 enabled for template :"* http://www.w3.org/1999/XSL/Transform:testMode" in file test1.xsl : line 113 + + Total of 3 breakpoints present + +Showbreak usage + + +showbreak + + +
+
+ +Showparam +Print the libxslt parameters present +Showparam usage + + +showparam + + +
+
+ +Showwatch +Show the current expression being watched +Shortcut name: watches +Showwatch usage + + +showwatch    (Show the currently selected watches and thier values) +showwatch 1    (Enable the automatic printing of watch expressions. This is used by default.) +showwatch 0    (Disable the automatic printing of watch expressions.) + + +
+
+ +Source +Switch to displaying the current node in stylesheet. Or change stylesheet used +Source usage + + +source    (Switch to the current node in stylesheet.) +source <SOURCE>    (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) + + +
+
+ +Step +Step until next stylesheet instruction. +Shortcut name: s +Step usage + + +step + + +
+
+ +Stepdown +Step down to a newer "call frame". +Shortcut name: down +Stepdown usage + + +stepdown     (step down one frame) +stepdown <NUMBER_OF_FRAMES>    (step down specified number of frames) + + +
+
+ +Stepup +Step up to a older "call frame". +Shortcut name: upThis is not an accurate command, xsldbg will stop as close as it can. +Stepup usage + + +stepup     (step up one frame) +stepup <NUMBER_OF_FRAMES>     (step up specified number of frames) + + +
+
+ +Stylesheets +Print out a list of stylesheets loaded +Shortcut name: style +Stylesheets usage + + +stylesheets + + +
+
+ + +System +Print the value that a system file maps via the current catalog +Shortcut name : sys +System usage + + +system "<SystemID>" + + +
+
+ +Templates +Print a list of available templates. Search for a template +Shortcut name: t +Templates usage + + +templates +templates <TEMPLATE>    (Print details of template named <TEMPLATE> if it can be found) + + +
+
+ +Trace +Trace one execution of the stylesheet printing the file and lines of +intermediate steps +Trace usage + + +trace + + +
+
+ +Tty +Open a terminal. Set the level of tty redirection. +Tty usage + + +tty <DEVICE_PATH>    (Where <DEVICE_PATH> is a valid terminal on the operating system. Just tries to open the terminal +tty <TTY_LEVEL>    (Set the level of tty redirection, where <TTY_LEVEL> is a valid level of input/output to use) + + + + Where level is + 0 = Default input/output + 1 = Terminal output of results of transformation, tracing and walking     (Default state when tty device has been opened. Not fully implemented yet.) + 2 = Full redirection to terminal    (Not implemented yet.) + All other integer values are assumed to mean level 0 + + + + + + + +
+
+ +Validate +Validate the output file generated by stylesheet (Disabled) +Validate usage + + +validate + + +
+
+ +Walk +Walk through code using a range of speeds +Walk usage + + +walk <SPEED>    (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) + + +
+
+ +Where +Print a trace of templates calls (frame stack) and print the working directory. +Shortcut name: w +Where usage + + +where + + +
+
+ +Write +To be completed +Write usage + + +write + + +
+
+ + + + + +
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 @@ + + +Credits and License + + +&xsldbg; + + +Program copyright 2004 Keith Isdale k_isdale tpg com au + + + +&underFDL; +&underGPL; + + +Thanks to + The writers the libxml and libxsl. +Johannes Sixt for helping with adding xsldbg support to KDbg + + 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 @@ + +xsldbg"> + + + + + + + + +]> + + + + + + + + + + + +The &xsldbg; Handbook + + + +Keith +Isdale + +
k_isdale@tpg.com.au
+
+
+ + + +
+ + +2002 +2003 +Keith Isdale + + +&FDLNotice; +2004-09-26 +1.01.00 + + + + +&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. + + + + +KDE +kdeutils +xsldbg +xsl +XML + + +
+ +&introduction-chapter; +&usage-chapter; +&commands-chapter; +&credits-chapter; + + + +Installation + + +How to obtain &xsldbg; + + +See the kxsldbg component of the kdewebdev module in &kde; SVN. + + +&install.intro.documentation; + + + + +Requirements + + +In order to successfully use &xsldbg;, you need &kde; libxslt, libexslt and +libxml installed which are available on a typical &kde; installation. + + + + +Compilation and Installation +&xsldbg; is usually compiled as part of the kxsldbg component in the kdewebdev module + + + +Configuration + +&xsldbg; is configured using arguments passed via the command line and its setoption command + + + + + +&documentation.index; +
+ + 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 @@ + + +Introduction + + +&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. + + + + + Run the whole stylesheet + Step to next xsl instruction + Continue until next break point is found, or stylesheet has restarted + + + + + 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 @@ + + +Using &xsldbg; + +xsldbg command arguments + +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. + +If your operating system supports it file names will be expanded. + +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 "* | @" + + + +Legend of terms +The following table describes the terms used in the subsiquent command guide + + + + TEMPLATE_NAME : A valid template name contains only ASCI + character codes 0x00 to 0x7F. And can be a fully qualified name ie + "xsl:templateName". + + 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 + + URI : A Uniform Resource Identifiers as defined by RFC 2396 + MODE_NAME The mode of template which can be fully qualified name ie "xsl:modeName". + QNAME : A fully qualified name ie "xsl:localPart" + LINENO : A valid line number in associated <FILENAME> + NUMBER_OF_FRAMES : A valid line number frames to change position by + BREAKPOINT_ID : A valid break point number + WATCH_ID : A valid watch expression number as indicated by showwatch command + SPEED: speed to walk through code at, between 0 to 9 + +     (Comment): a + comment about command meaning or usage + + { opt1 | opt2 | opt2 .. etc} : Choose one of the opt's + XPATH : a xpath selection of node(s) + PARAM_ID : a valid parameter number as indicated by showparam command + + PATH : A path to change working directory to On some operating systems a + "~" prefix will be replaced by your home directory path + + + TEXT : Free form text     (no + restrictions) + + COMMAND : A valid command for the xsdbg + QNAME : A valid variable/parameter name + SOURCE : The stylesheet being/to be executed. See <FILENAME> and <URI> + + DATA : The xml data(document) being/to be processed by the + stylesheet. See <FILENAME> + and <URI> + + DEVICE_PATH : Is a valid terminal on the operating system + TTY_LEVEL : Is a valid level of input/output to use + + + + +Overview of available commands + + +Help related :help + + Running related : {bye|exit| + quit}, step, + stepup, stepdown, + next, + continue, + run, +trace, setoption, + options + + + Libxslt parameter related : addparam, + delparam, showparam, + output, setoption, + options + + + Template related : templates, + where, frame + + + Break point related : break, + showbreak, delete, + enable + + + Expression viewing(xpath) : cat + + + Node viewing : ls, dir, + du, cat, pwd + + + Variable viewing : globals, + locals, + cat, + addwatch + + + Variable setting: set + + + Node selection : source, + data, cd + + + Searching :search + + + Operating system related :chdir, + shell, tty +File related : output, + entities, system, + public + + + Disabled file commands: validate, + load, save, + write, free + + + + + + 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 @@ + + + + + + +]> + + + + + + + +&introduction-chapter; +&usage-chapter; +&commands-chapter; + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ==================== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.2.1