# 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!