\NewEntry 0 GUI
\NewEntry 1 Widgets
Widgets available in Kommander
\NewEntry 1 Editor
- Switch from using Qt widget to their KDE equivalents? - mostly done
Layout of Edit Kommander Text dialog
\NewEntry 1 Usability
\Link knowit://Source code
- better layout
- replace list of widgets with tree of widgets
- replace widget class with widget pixmap in combos
- redesign layout
- cleanup Connections, not it is unusable, may be obsolete
- find in scripts
- list of non-empty scripts for current dialog
- allow using custom Kommander dialog to generate code
- add DCOP per widget display
- DCOP editor (similar to Tag editor in Quanta)
Various GUI-related features (outdated, KDE3 version will not be changed)
\NewEntry 1 Run/debug
- clean up popup menus, remove disabled items
- use KDE dialogs, not Qt ones if possible
- some widget information on mouseover
- review of event model
- add more layout-handling commands (center selected widgets horizontally/vertically, fit to window width/height)
- handle middle click
- carefully check defaults, choose most useful ones
- add wizards? (replace current New dialogs with Kommander-based ones?)
- better undo
- add WhatsThis for most items
- detect function name/widget name clash
- improve order of widget icons
- switch to KMDI (arghhhh!)
Running/testing inside Editor
\NewEntry 1 DCOP browser
DCOP browser (preliminary ideas)
\NewEntry 1 Other
- DCOP browser for both local and external DCOP calls
- easy-to-use application DCOP browser
- use XML describing given application DCOP's
- two flags for a call: hiden and important
- three mode: important (only important calls), default (all except hidden), advanced (all calls)
- use some pattern matching to allow marking whole subtrees or function sets
- add purpose (for example all editor-related functions, all file-management-related functions)
- merge trees for given window (f. e. Editor#2, File#2, Structure#2 etc.)
- standalone application mode
Other GUI-related issues
- cleanup Q_SLOTS/Q_SIGNALS/connections interface
- find out why Q_SLOTS are shown only for current tab
\NewEntry 0 Bugs
- create a KDevelop plugin for the editor
- use KFormDesigner or the new Qt Designer
Various bugs to be fixed
\NewEntry 0 Help
\NewEntry 1 Documentation
- Charset is sometimes incorrectly converted from/to local charset
- SubDialog crashes now
- Labels do not show up unless you edit their text
- toolbox editing is ugly after group layout is applied. Goes back to normal if the dialog is reloaded.
Kommander tutorials, documentation etc.
\NewEntry 1 Examples
- Update new parser docs
- Update docs, at least on website ?
Examples to be used with tutorial
\NewEntry 1 Scripts
- add a way to comment *.kmdr file
- create examples for tutorial
- clean up examples: reomve obsolete or unclear ones, add some more instructive ones
Kommander scripts that can be useful
\NewEntry 0 Language
\NewEntry 1 Syntax
- improve script for Quick Start (Quanta): handle indentation with, quotation character and tag case
- create script for Quick List (Quanta)
- create scripts for common command-line programs to demonstrate power of Kommander (it would be nice if those could be documented somehow)
- create scripts for HTML templates
\NewEntry 1 New functions
- better handling of lists
- better handling of other structures (trees, arrays etc.)
- add some way to define and use macros/aliases
New functions that could be useful
\NewEntry 1 Script languages
- capitalize, substring string handling functions?
- @if (a, b, c)? - or is BASH enough?
This will be solved by new parser.
- add @include and @includelocal commands - to include external script or local (project script); that should make code more readable
- add @call to call local script (no need for external @call, as it is equivalent to @exec
Naming: use @execlocal for consistency?
- add @requireVersion(command, version) that would detect version of program (presumably script language, like perl), compare it to given minimum and fail if it is not matched
- add function for string conversion (@String.cvs2tab, @Stringcvs2eol ...)
- add @ldcop for calling local DCOP functions
Using script languages other than Bash
- detect incorrect path at shebang, allow user to choose correct one and remeber that pair
If we keep the old parser.
\NewEntry 1 Aliases
Make it possible to use any language with Kommander. The idea is to replace Kommander specials with language specific code in a way that it will not break conditions and loops, like now. example:
array="1 2 3 4 5"
for i in $array do
This does not work now. The idea is to replace @Widget.method() with a language specific DCOP call.
If the language has DCOP bindings, use those bindings to execute the dcop call. If not, use the command line
DCOP application. This is slower, but always works. In the above case, Kommander would replace
dcop kmdr-executor-PID KommanderIf setText Label $i
Kommander will have description files for each supported language about how to execute DCOP calls.
If the language has DCOP bindings, this description tells the syntax of the bindings. If it doesn't have, the description gives a way how to execute external applications. This should always exists, as all languages can execute external applications.
In KDE4, of course use DBUS instead of DCOP.
Aliases - easier access to Kommander features
\NewEntry 1 Signals
- add @String.<function>(<args>) as alias to string-handling function
- add @<widgetName>.<function>(<args>) as alias to dcop @dcopid KommanderIf <widgetName> <args>
- add aliases to various widgets properties, f. e. text, selectedText, state, items etc.; syntax: @<widgetName>.<attribute>
New Q_SIGNALS for existing widgets
\NewEntry 1 Parser
- add Q_SIGNALS for D&D
Requires dragContent and dragType, perhaps dragSource to be set.
Features of new parser
\NewEntry 0 1.3 release prep 2008
\NewEntry 1 To Do
- add syntax checking
- add debugger
- add step-by-step running
- add code-completion
- add syntax hints
- share code betwen the two parsers (new methods are needed to be added only once)
Kommander Release Do list
\NewEntry 1 Eric's To Do
- Add missing functions in FB
- KPart create to go with KPart load
- executor version required field/command - enable someone sharing dialogs to have an executing window check if the executor is capable of fully supporting it - Not the self checking Michal suggested, but better than nothing by far
- ability to identify calling table widget from signal in a script slot - ideally by row and column in table grid
\NewEntry 1 Supplemental
- Look into project tools, currently ready for 0.7 update
\NewEntry 1 investigate
- We need to look at how to emulate KStfuff using HTTP and a Kommander dialog... will require KStuff back end and some PHP scripts
- Samples go into the install for use
- Web site needs docs and tutorials updated
Things to look into
\NewEntry 1 Bugs to squish
- Qt database connection?
- Code completion? If easy to do, otherwise we recommend users try the Kate completion plugin
- D&D of text/selection data
- simple DCOP functions in editor to enable Kommander based tools to call the editor and open a dialog to edit - otherwise any interfaces can at least make use of D&D from file manager (KPart) views
- Additional XML fields in dialog for author name, version of Kommander required, etc... - not required as TDEAbout would be better
Version 1.3 FIXME list
\NewEntry 1 Done
- link handling in TextBrowser opens file manager in execute directory even if calling another Kommander dialog. First it opens the file, then konqeror.
New widgets include the DatePicker, Popup Menu and Toolbox. New functions inlcude widget creation, hooking and unhooking Q_SIGNALS and Q_SLOTS and full slot access as well as passing and returning parameters in scripts. WooHoo! Take that do list!
- fixed dcop functions
- added indexed array functions
- made color slot work in TextEdit
- Enhnaced function browser for easier widget creation
- quote handling in function browser - made user selectable
See changlog for more complete list
\NewEntry 1 Won't Do
The Kommander editor is effectively dead for KDE3. Porting is senseless as it is an old Qt Designer hack. Since Designer for Qt 4x is actually designed this time to be easy to extend and modify the first generation of the editor will be scrapped.
\CurrentEntry 0 KDE4 prep
\NewEntry 0 Executor
Other parts of Kommander like the parser should be much more portable.
- creating table widgets means if you need to know the calling widget you need create scripts on the fly for this.
Executing Kommander scripts
\NewEntry 0 Refactoring, other ideas
- detect and handle missing plugin widgets
- cache @pid, @dcopid, @parentPid, perhaps calculate and cache @parentdcopid
- handle multiple dialogs: they could be packaged in single *.tgz file, unpacked and executed internally
Kommander source code
\NewEntry 0 Last changes
- move all widgets into a library (mostly done)
- widgets should contain the code how they are displayed in the editor
- widgets should contain the functions they support. Share only very common functions, like show, execute, etc, otherwise soon it becomes confusing if insertItem expect and int, a string, or and int and a string.
- widgets and plugin should query the plugin manager for available method IDs (and register how many they need) OR on registering do not pass the ID, but get back. This makes sure you don't have plugins/widgets using the same function IDs.
- check if we can live without making specials.h public
- the icons used in the editor should be returned by the widgets itself (partly done)
- check if it is enough to have a public KommanderWidget instead of making KWidgetPlugin as well public
- get back a version number from plugins and from Kommander. This way both the plugins and the executor can decide if they are compatible or not.
Last changes in TODO file
- GUI/Widgets: Tree, History Combo, Picture Viewer, Table
- GUI/Other added
- Executor: handle multiple dialogs package
- Language/New functions: string conversion
- Language/Signals added
- Bugs: added
- Language/New functions, Executor: added i18n
\NewEntry 0 Done
ChangeLog of Kommander
See ChangeLog file for details and dates
- Widgets: Menu and popup menu
- added Language:Aliases
- Syntax: remove @dcop, moved aliases to new note, macros
- Editor: Connections
- New functions: @requireVersion
- Executor: detect loop, handle startup parameters, cache
\NewEntry 0 About this file
- added @parentPid evaluated to parent process pid
- added @pid evaluated to current process pid
- added @dcopid evaluated to current process DCOP id
- significantly improved Kommander Text editor usability
- added initialization and destroy scripts for main dialog
- global variables added (setGlobal and global DCOP calls)
- added support for shebang (#!/bin/sh) for both ExecButton script and @execBegin scripts
- added command-line parameters (kmdr-executor dialog.kmdr VAR=VALUE ARG1 ARG2...)
- dialog setting are now stored with full path
- completely rebuilt @dcop() parser: check number of arguments, handle various types etc.
- support for @execBegin(<program-name>)
- avoid infinite loop when trying to run @<widget> inside <widget>:<state>
- handle other values for DCOP (not only string and int)
- add option to pass shebang as argument of @execBegin, f. e. @execBegin(/usr/bin/perl)
- add Run command to editor
- added global and setGlobal specials
- added warnings for missing specials
This file should document both what should be done in Kommander and what was done.
All entries marked with a date without an author were made by Michal Rudolf
When adding something important, please enter it in ChangeLog or Done and mark it with current date (in yyyy-MM-dd, hh:mm format) and your name.