Kommander: Unterschied zwischen den Versionen

Aus Linupedia.org
Wechseln zu: Navigation, Suche
K (Navibox)
(Neue Beispiele)
Zeile 55: Zeile 55:
 
* Den vorhin (fiktiv) programmierten Dialog können wir dann starten, indem wir im Editor-Fenster auf "Exec" klicken.
 
* Den vorhin (fiktiv) programmierten Dialog können wir dann starten, indem wir im Editor-Fenster auf "Exec" klicken.
 
* Oder wir machen es wieder mit der Bash und geben in ein Terminal folgenden Befehl ein: ''kmdr-executor pfad_zur_beispieldatei/beispieldatei.kmdr''
 
* Oder wir machen es wieder mit der Bash und geben in ein Terminal folgenden Befehl ein: ''kmdr-executor pfad_zur_beispieldatei/beispieldatei.kmdr''
 +
* Eine Desktop-Datei ist auch gut geeignet, den Dialog zu starten. Das Erstellen einer Desktop-Datei kann sinngemäß [http://wiki.linux-club.de/opensuse/Dvb_wiki_script/Installation#Startdatei_f.C3.BCr_das_Script hier] nachgelesen werden.
  
== <font color="green">Der erste Dialog</font> ==
+
== <font color="green">Vorbereitungen</font> ==
=== <font color="purple">Vorbereitung</font> ===
+
Wir brauchen ein Verzeichnis, in das wir die kmdr-Dateien abspeichern, mit denen wir experimentieren wollen. Nennen wir es ''Spielwiese'' und legen es in unseren persönlichen Ordner.<tt> </tt>Diesen Namen habe ich gewählt in Anlehnung an die [http://wiki.linux-club.de/opensuse/LinuxClubWiki:Spielwiese Spielwiese] des [http://wiki.linux-club.de/opensuse/Hauptseite LC-Wikis] . Ein Platz zum Experimentieren eben!
Wir brauchen ein Verzeichnis, in dem die kmdr-Dateien stehen, mit denen wir experimentieren wollen. Nennen wir es ''Spielwiese'' und legen es in unseren persönlichen Ordner.<tt> </tt>Diesen Namen habe ich gewählt in Anlehnung an die [http://wiki.linux-club.de/opensuse/LinuxClubWiki:Spielwiese Spielwiese] des [http://wiki.linux-club.de/opensuse/Hauptseite LC-Wikis] . Ein Platz zum Experimentieren eben!
 
  
Unser erster Kommander-Dialog wird den Namen ~/Spielwiese/beispiel_1.kmdr tragen. Erstellen wir diese Datei also so, wie es vorhin beschrieben wurde.
+
Unser erster Kommander-Dialog wird den Namen ''~/Spielwiese/beispiel_1.kmdr'' tragen. Also:
  
Dieser Dialog wird dazu verwendet werden, weitere Beispiel-Dialoge zum Editieren aufzurufen bzw. diese Dialoge auszuführen. Es ist daher sinnvoll, ihn möglichst einfach starten zu können, am besten in einer Desktop-Datei. Das geht so:
+
* Kommander zum Editieren öffnen
 +
* Neuen Dialog erstellen
 +
* Dialog speichen unter ''~/Spielwiese/beispiel_1.kmdr.''
  
* Rechtsklick auf den Desktop: ''Neu erstellen - Verknüpfung zu Programm ''(bei Plasma (KDE4) im Ordner ~/Desktop)
+
== <font color="green">Beispieldialoge</font> ==
* Name für die Verknüpfung eingeben: ''Spielwiese''
+
So wie [http://wiki.linux-club.de/opensuse/Bild:Kommander_editor.png hier] sollte das Editorfenster nun aussehen. Das Formular ''Form1'' soll leer sein (Also den Button, der schon drin ist, einfach vergessen, den bauen wir später noch ein!)
* Evt. über das Zahnrad ein Icon für die Verknüpfung auswählen
 
* Reiter Programm wählen
 
* Befehl: ''kmdr-executor ~/Spielwiese/beispiel_1.kmdr''
 
* OK
 
* Bei KDE4 die Desktop-Datei auf die Plasmaoberfläche ziehen
 
  
Ein Klick auf das Icon der Desktop-Datei öffnet dann den Auswahldialog, natürlich erst, wenn er programmiert ist. Und das machen wir jetzt: Wir programmieren unseren ersten Dialog...
+
Das erste Beispiel werde ich etwas genauer schildern, damit wir ein Gefühl für den Umgang mit Kommander bekommen.
  
=== <font color="purple">beispiel_1.kmdr</font> ===
+
=== <font color="purple">beispiel_1.kmdr: Begrüssungstext</font> ===
==== <font color="brown">Zweck</font> ====
+
Dieser Dialog soll uns einen Gruß auf den Bildschirm zaubern. Dazu verwenden wir ein Kommander-Widget mit dem Namen ExecButton. Ein ExecButton führt die Anweisung aus, die in ihm als Kommander-Text gespeichert ist. Programmieren wir ihn also:
Editieren bzw. Starten von kmdr-Beispieldateien, die im Verzeichnis ''~/Spielwiese'' stehen.
 
  
==== <font color="brown">Objekte</font> ====
+
* ''ExecButton'' oben in der Symbolleiste anklicken (Quadrat mit dem OK drin)
Exec-Button
+
* Im Formular durch Linksklick einfügen
  
==== <font color="brown">Funktionen</font> ====
+
Im Eigenschaftsfenster links werden einige Eigenschaften geändert:
exec
 
  
==== <font color="brown">Programmierung</font> ====
+
* '''name:''' Begrüssung1
* Kommander-Editor öffnen
+
* '''text:''' Hallo Welt
* Symbolleiste: Exec-Button markieren
 
* Formular-Fenster: Linksklick, damit wird der Exec-Button eingefügt
 
* Exec-Button im Formularfenster: Doppelklick
 
* Namen für den Knopf eingeben (z.B.: ''Edit Hauptfenster'')
 
* Rechtsklick auf den Knopf: ''Grösse anpassen''
 
* Rechtsklick auf den Knopf: ''Kommender-Text bearbeiten''
 
* Eingeben: ''exec("kmdr-editor ~/Spielwiese/beispiel_1.kmdr")''
 
* Speichern (geöffnete Unterfenster vorher schließen)
 
  
Damit ist der erste Dialog fertig und das Editorfenster kann geschlossen werden. Gestartet wird der Dialog durch Klicken auf die Desktopdatei, die wir vorhin erstellt haben.
+
Nun noch die Grösse des Buttons an den Text anpassen (Kontextmenue vom ExecButton (Rechtsklick) - Grösse anpassen)
  
=== <font color="purple">Die Details</font> ===
+
Fehlt noch die Begrüssung selbst. Dazu wählen wir aus dem Kontextmenue des ExecButtons den Punkt ''Kommander-Text bearbeiten ''und geben folgende Anweisung ein:
==== <font color="brown">Das Editorfenster</font> ====
 
Um Kommander etwas näher kennen zu lernen. werden wir uns bei diesem ersten Beispiel etwas genauer damit befassen, was wir da nun programmiert haben.
 
  
So, wie in diesem [http://wiki.linux-club.de/opensuse/Bild:Kommander_editor.png Screenshot] zu sehen, sollte das Editorfenster jetzt aussehen.
+
''message_info("Hallo Welt, hier bin ich")''
  
Oben erkennen wir die Symbolleiste. Zeigen wir mit dem Cursor auf eines dieser Symbole, so wird dessen Bedeutung angezeigt. Der Exec-Button ist zum Beispiel ein kleines Quadrat mit der Beschriftung ''OK''. In der Mitte das Formular, in das wir vorhin den Exec-Button kopiert haben. Links ist das Eigenschaftsfenster desjenigen Teils zu sehen, das gerade markiert ist. Ist nichts markiert, so sieht man die Eigenschaften des Formulars.
+
Anschließen drücken wir das Bearbeiten-Fenster weg und speichern den Dialog ab. Um den Dialog auszuführen, drücken wir oben auf den Exec-Knopf (Zahnrad). Es erscheint ein [http://wiki.linux-club.de/opensuse/Bild:Kommanderdialog_beispiel_1.png Dialogfenster] mit einem Button drin. Klicken wir auf den Button, dann wird uns der Begrüssungstext angezeigt.
  
==== <font color="brown">Das Eigenschaftsfenster</font> ====
+
=== <font color="purple">beispiel_2.kmdr: Der Funktionsbrowser</font> ===
Auf dem Screenshot sehen wir die Eigenschaften unseres Exec-Knopfes:
+
Es gibt noch eine Möglichkeit, den Kommander-Text, also die Anweisung, einzugeben. Das ist der Funktionsbrowser. Das Arbeiten mit ihm erscheint auf den ersten Blick zwar ziemlich kompliziert, zeigt aber die vielen Möglichgkeiten, die in Kommander stecken.
  
* '''name:''' Unter diesem Namen wird der Knopf verwaltet. Es empfielt sich, einen sinnvollen Namen zu wählen, um schnell erkennen zu können, welches Symbol was tun soll. Also geben wir einen neuen Namen ein: ''ExecButton_Edit_Hauptfenster''.
+
* Neuen Dialog öffnen und speichern unter ''~/Spielwiese/beispiel_2.kmdr''
* '''text:''' Hier steht die Beschriftung des Knopfes drin. Das & vor dem t legt diesen Buchstaben als Hot-Key fest. Das geschieht automatisch.
+
* ExecButton einfügen mit folgenden Eigenschaften:
 +
* '''name:''' Begruessung2
 +
* '''text:''' Hallo Universum
 +
* Grösse anpassen und das Kommander-Text-Fenster öffnen
  
Jetzt ändern wir noch den Namen des Formulars selber. Das Eigenschaftsfenster für das Formular erreichen wir durch Anklicken einer leeren Stelle im Formular. Den Namen oben ändern in ''Formular_kmdr_Beispiele'' sollte nun nur noch eine Kleinigkeit für uns sein.
+
Unten im Fenster befindet sich im Feld ''Einfügen'' ein Button mit dem Namen ''Funktionen''. Damit wird der [http://wiki.linux-club.de/opensuse/Bild:Funktionsbrowser_Kommander.png Funktionsbrowser] gestartet (Die Inhalte in den Fenstern vergessen wir wieder. Sie waren für ein anderes Beispiel gedacht).
  
Was nun noch etwas stört, das ist der phantasielose Titel des Formulars. Den wollen wir flugs auch noch ändern:
+
Das Fenster der Funktionsauswahl ist in vier Abschnitte gegliedert:
  
* '''caption:''' In diese Eigenschaft ''kmdr-Beispiele'' reinschreiben
+
# Links lassen sich Anweisungen (Funktionen) auswählen. Diese Anweisungen sind in sinnvolle Gruppen eingeordnet
 +
# In der Mitte ist das Feld Parameter. Hier wählen wir das Bedienelement aus, auf das die Anweisung wirken soll. In unserem Fall also: ''Begruessung2. ''Zusätzlich lassen sich, abhängig von der Anweisung, weitere Parameter eingeben. In unserem Fall der Begrüssungstext
 +
# Rechts wird kurz beschrieben, was die gewählte Anweisung bewirkt
 +
# Und unten erscheint der fertige Befehl, wenn wir ihn mit dem blauen Down-Pfeil eingefügt haben.
  
Das Ändern der Namen mag im Moment wie eine sinnlose Spielerei aussehen. Wenn aber erst einmal 15 Exec-Buttons im Formular verteilt sind, dann wird man froh darüber sein, sich diese Mühe gemacht zu haben. Denn über diese Namen werden die Symbole nicht nur verwaltet, sondern auch angesprochen. Deshalb sollte man sich auch bei kleineren Formularen konsequent eine sinnvolle Namensgebung angewöhnen.
+
Tun wir das also und bauen damit unseren Dialog:
  
==== <font color="brown">Der Funktionsbrowser</font> ====
+
* '''Bedienelement: '''Begruessung2
Wir haben vorhin den ''exec-Befehl'' in das Fenster ''Text bearbeiten'' eingetippt. Das geht aber auch anders, nämlich so ( [http://wiki.linux-club.de/opensuse/Bild:Funktionsbrowser_Kommander.png Screenshot] dazu):
+
* '''Gruppe:''' Message
 +
* '''Funktion:''' Info
 +
* '''text: '''Hallo Universum, schon wieder ich!
 +
* Mit dem blauen Pfeil die Anweisung einfügen und OK drücken.
 +
* Das Fenster ''Text bearbeiten'' wegdrücken und den Dialog speichern.
 +
* Ausführen mit Exec oder einer anderen der oben geschilderten Möglichkeiten
  
 +
Noch ein Beispiel gefällig? OK, einen hab ich noch...
  
* Rechtsklick auf den Exec-Knopf im Formular: ''Kommender-Text bearbeiten. ''Damit erscheint wieder das Fenster ''Text bearbeiten''.
+
=== <font color="purple">beispiel_3.kmdr: Verbindungen</font> ===
* Funktionsauswahl öffnen mit ''Einfügen Funktion...''
+
Kommander kann mit ''Signals'' und ''Slots'' umgehen. Was soll das denn heißen?. Na ja, ganz einfach:
* Im folgenden Fenster die Gruppe auswählen, nämlich ''Kommander''
 
* Bei Funktion ''exec'' auswählen
 
* Bei den Parametern unter ''command'' eingeben: ''kmdr-editor ~/Spielwiese/beispiel_1.kmdr''
 
* Quote angekreuzt lassen, da die Anweisung in Hochkommas erwartet wird
 
* Zum Einfügen den Pfeil nach unten drücken
 
* ''OK'' drücken
 
* Alle Fenster schließen bis auf das Hauptfenster
 
* Speichern
 
  
Was ist der Vorteil dieser Methode, die doch etwas umständlicher aussieht als der erste Weg? Nun ja, ganz einfach:
+
Wenn wir auf dem Formular mehrere Widgets plaziert haben, dann kann es sein, daß wir mit dem einen Widget ein anderes beeinflussen wollen. Stellen wir uns also vor, wir haben den schon bekannten ExecButton eingebaut und wollen mit ihm ein Script starten, welches in einem Kommander-Widget mit dem Namen ScriptObject gespeichert ist.
  
Die für das Element, in unserem Fall also den Exec-Knopf möglichen Befehle werden im Funktionsbrowser zusammen mit einer kurzen Beschreibung angezeigt. Und um die Syntax des Befehls brauchen wir uns auch nicht mehr zu kümmern, das macht der Browser für uns.
+
Der Sender wäre in unserem Fall der ExecButton, der das Signal ausgeben würde: Ich wurde angeklickt, tut irgend etwas! Als Empfänger würde das ScriptObject dienen. Wenn es das Signal ''angeklickt ''erhält, dann würde es den enthaltenen Code ausführen (Slot).
  
Habt ihr aufgepasst, welche Beschreibung zu ''exec'' angezeigt wurde? Hier ist sie nochmal:
+
Konkretisieren wir das etwas mit dem dritten Beispieldialog. Vorraussetzung zum Gelingen ist hier, daß kdialog installiert ist (In OpenSuse standardmäßig enthalten unter dem Paketnamen kde4-kdialog).
  
* Führt einen externen Shellbefehl aus
+
* Neuen Dialog öffnen und speichern unter ''~/Spielwiese/beispiel_3.kmdr''
 +
* ExecButton einfügen
 +
* '''name:''' Begruessung3
 +
* '''text:''' Gruss
 +
* Grösse anpassen
  
Und somit ist klar, was wir mit der exec-Funktion erreichen: Wir führen den in Hochkommas und Klammern stehenden Shellbefehl aus, nämlich mit dem Programm ''kmdr-editor'' die Datei ''~/Spielwiese/beispiel_1.kmdr'' aufzurufen. Diese Datei wird damit also zum Editieren geöffnet.
+
Als Zweites fügen wir ein ScriptObject ein (zu finden in der Symbolleiste links neben dem Wecker):
  
==== <font color="brown">Zusammenfassung</font> ====
+
* '''name: '''Script_kdialog
Wir haben einen KDE-Kommander-Dialog programmiert, ihn als ''~/Spielwiese/beispiel_1.kmdr ''gespeichert und das File ausführbar gemacht. Den Dialog rufen wir über die Desktop-Datei ''Spielwiese'' auf.
+
* '''text:''' kdia
  
Der Dialog besitzt nur einen einzigen Knopf. Wenn wir diesen drücken, dann wird die Datei ''~/Spielwiese/beispiel_1.kmdr ''zum editieren geöffnet.
+
Als Kommandertext für das ScriptObject tragen wir ein (Das ist ein kleines einzeiliges Bash-Script):
  
Und so schaut der fertige Dialog aus: [http://wiki.linux-club.de/opensuse/Bild:Kommanderdialog_beispiel_1.png Screenshot]
+
''<nowiki>#!/bin/bash</nowiki>kdialog --msgbox "Hallo zum Dritten"''
  
Damit haben wir den Einstieg in Komander geschafft und können unserem Beispieldialog nach Belieben weitere Exec-Knöpfe hinzufügen, um damit die folgenden Beispieldateien ausführen oder editieren zu können. Übrigens als kleinen Tipp: ''kmdr-executor'' an Stelle von ''kmdr-editor'' und die Beispieldatei wird ausgeführt. Aber das wisst ihr inzwischen ja schon selbst, oder?
 
  
 +
Fenster schließen, speichern, alles wie gewohnt. Nun stellen wir die Verbindung zwischen den beiden Objekten her:
  
Und noch etwas, bei den folgenden Dialogen werde ich mir die Screenshots sparen, denn das Prinzip sollte jetzt klar sein. Ein einziges Bildschirmphoto wird noch folgen und das wird das Editorfenster der GUI vom DVB_Script sein. Aber zuerst lehnen wir uns mal zurück, schließen die Augen und durchdenken das, was wir bis jetzt gelernt haben über den Kommander. Und wenn wir dann wieder aufgewacht sind, dann geht es weiter mit der Entstehungsgeschichte der eben erwähnten GUI.
+
* '''Rechtsklick: '''Verbindungen
 +
* '''Signale:''' Begruessung3 clicked()
 +
* '''Slots: '''Script_kdialog execute()
 +
* '''Linksklick: '''Verbinde
 +
* '''Linksklick: '''OK
 +
 
 +
Speichern, ausführen, das kennen wir ja schon.
 +
 
 +
Beim Ausführen des Dialogs werden wir feststellen, daß unser ScriptObject verschwunden ist. Es handelt sich dabei um ein verstecktes Widget, welches für die Bedienung des Formulars nicht wichtig ist und damit auch nicht angezeigt wird, Ein weiteres verstecktes Widget ist übrigens der Wecker, in Kommander Timer genannt.
 +
 
 +
 
 +
=== <font color="purple">beispiel_4.kmdr: Externes Script ausführen</font> ===
 +
'''Bash-Script erstellen'''
 +
 
 +
* Neue Textdatei erzeugen ( ~/Spielwiese/begruessungsscript.sh], ausführbar machen (Eigenschaften - Berechtigungen) und mit einem Editor (kate) öffnen
 +
* Scriptcode eingeben und abspeichern:
 +
 
 +
''<nowiki>#!/bin/bash</nowiki>''
 +
 
 +
''kdialog --msgbox "Schon wieder ich..."''
 +
 
 +
 
 +
'''Kommander-Dialog erstellen'''
 +
 
 +
* Neuen Dialog öffnen und speichern unter ''~/Spielwiese/beispiel_3.kmdr''
 +
* ExecButton einfügen
 +
* '''name:''' Begruessung4
 +
* '''text:''' Externer Gruss
 +
* Grösse anpassen
 +
 
 +
'''Kommander-Text für den ExecButton eintragen '''(entweder über den Funktionesbrowser oder per Hand)
 +
 
 +
''exec("~/Spielwiese/begruessungsscript.sh")''
 +
 
 +
 
 +
Fenster schließen, speichern, ausführen, staunen...
 +
 
 +
 
 +
== <font color="green">Wie geht's nun weiter</font> ==
 +
Ich denke, das waren erst einmal genug Beispiele, um die grundlegende Bedienung von Kommander zu verstehen. Gehen wir also ins Eingemachte und wenden wir uns einem etwas komplexeren Kommander-Dialog zu, nämlich der GUI für das DVB_Script.
 +
 
 +
[http://wiki.linux-club.de/opensuse/Kommander/GUI Hier geht's weiter]
 +
 
 +
 
 +
{{Kommander_Navibox}}
  
  
 
will be continued
 
will be continued

Version vom 2. November 2008, 16:58 Uhr

Höhe=24px
Achtung dieser Artikel ist noch in Arbeit und dient vorläufig nur als Vorlage. Dieser Beitrag zu Linux oder der Abschnitt ist in Bearbeitung. Weitere Informationen findest du hier. Der Ersteller arbeitet an dem Beitrag oder Abschnitt und entsorgt den Wartungsbaustein spätestens 3 Tage nach der letzten Bearbeitung. Änderungen außer Rechtschreibkorrekturen ohne Absprache mit dem Urspungsautor sind möglichst zu vermeiden, solange dieser Baustein noch innerhalb der genannten Frist aktiviert ist.


Einführung: Der Weg zur GUI - Die Funktionen - Screenshots



Einleitung

Kommander ist ein Tool, mit dem man KDE-Dialoge erstellen kann, die über die Möglichkeiten von kdialog hinausgehen. Dieses Programm lässt sich aber auch dazu verwenden, verschiedene Aufgabenstellungen unter einer einheitlichen Bedienoberfläche zusammenzufassen.

Das Bauen von eigenen, also benutzerdefinierten Dialogen, erfordert Programmierkennnisse (C++). Möchte man aber nur eine kleine, einfache GUI mit Kommander-Bordmitteln basteln, so sind Programmierkenntnisse zwar hilfreich, aber nicht unbedingt erforderlich. Dafür stellt sich dem motivierten Anfänger ein anderes Hindernis in den Weg. Und dieses Hindernis heißt Dokumentation.

Die Bedienungsanleitung zu Kommander ist für den Nicht-Programmierer zum großen Teil unverständlich!

Hier will nun dieser Wiki-Artikel etwas Hilfestellung leisten. Es wird versucht, dem interessierten Laien den Umgang mit Kommander etwas näher zu bringen. Schaut euch zum Beispiel einmal die Bedienoberfläche für das DVB-Script an: Screenshot der GUI.

Ihr werdet vielleicht denken: Sowas schaff ich nicht. Das ist mir zu kompliziert. Dazu sage ich nur: Habt etwas Geduld! Ihr bekommt hier Schritt für Schritt erzählt, wie diese GUI entstanden ist.

Eine Bemerkung sei noch erlaubt, bevor wir in medias res gehen.

So ganz ohne Programmierkenntnisse werden wir doch nicht auskommen. Denn, wenn wir eine Bedienoberfläche für ein Bash-Script erstellen wollen, dann müssen wir auch wissen, wie das geht, das Programmieren eines Bash-Scriptes.

Fangen wir also an! Und keine Angst, wir beginnen erst einmal einfach, ganz einfach...

Installieren von Kommander

Ihr wolltet es einfach haben, ihr bekommt es einfach:Kommander ist bei KDE dabei und kann problemlos mit Yast installiert werden:

  • Yast starten und das Root-Passwort eingeben
  • Auswählen: Software installieren oder löschen
  • Bei Suche eingeben: kommander und auf suchen drücken
  • Folgende Pakete auswählen: kommander und kommander-Runtime
  • Akzeptieren

Falls von Yast gefragt werden sollte: Nein, wir wollen keine weiteren Pakete installieren!

Arbeiten mit Kommander

Dialog erstellen (kommander-editor)

Kommander sollte nun irgendwo im KDE-Startmenue bei den Anwendungen unter dem Menuepunkt Entwicklung - Bedienoberfläche zu finden sein. Man suche einfach nach einem Programm mit dem Namen Kommander-Editor!

Auch über die Kommandozeile können wir Kommander starten, indem wir in eine Konsole eintippen: kmdr-editor

Es erscheint das Editor-Fenster von Kommander, in dem wir Datei - neu erstellen auswählen. Im nun erscheinenden Fenster wählen wir dialog aus. Und schon befinden wir uns mitten drin im Editor-Modus und könne einen Dialog (eine GUI) ganz nach unseren Wünschen programmieren.

Dialog speichern

Das funktioniert wie bei jeder anderen KDE-Anwendung auch:

  • Datei - speichern unter
  • Namen eingeben, unter dem die Datei gespeichert werden soll: pfad_zur_beispieldatei/beispieldatei.kmdr
  • OK

Dabei ist noch folgendes zu beachten:

Bevor ein Dialog gespeichert wird, sollten alle Unterfenster von Kommander geschlossen werden. Nur das Editor-Fenster darf noch zu sehen sein. Tut man das nicht, so kann es passieren, daß Kommander beim Schließen abstürzt und die vermeintlich gespeicherten Änderungen mit sich ins Nirwana nimmt!

Dialog ausführen (kommander-executor)

Bevor nun der fertige Kommander-Dialog gestartet werden kann, müssen wir das kmdr-file ausführbar machen : Eigenschaften – Berechtigungen

  • Den vorhin (fiktiv) programmierten Dialog können wir dann starten, indem wir im Editor-Fenster auf "Exec" klicken.
  • Oder wir machen es wieder mit der Bash und geben in ein Terminal folgenden Befehl ein: kmdr-executor pfad_zur_beispieldatei/beispieldatei.kmdr
  • Eine Desktop-Datei ist auch gut geeignet, den Dialog zu starten. Das Erstellen einer Desktop-Datei kann sinngemäß hier nachgelesen werden.

Vorbereitungen

Wir brauchen ein Verzeichnis, in das wir die kmdr-Dateien abspeichern, mit denen wir experimentieren wollen. Nennen wir es Spielwiese und legen es in unseren persönlichen Ordner. Diesen Namen habe ich gewählt in Anlehnung an die Spielwiese des LC-Wikis . Ein Platz zum Experimentieren eben!

Unser erster Kommander-Dialog wird den Namen ~/Spielwiese/beispiel_1.kmdr tragen. Also:

  • Kommander zum Editieren öffnen
  • Neuen Dialog erstellen
  • Dialog speichen unter ~/Spielwiese/beispiel_1.kmdr.

Beispieldialoge

So wie hier sollte das Editorfenster nun aussehen. Das Formular Form1 soll leer sein (Also den Button, der schon drin ist, einfach vergessen, den bauen wir später noch ein!)

Das erste Beispiel werde ich etwas genauer schildern, damit wir ein Gefühl für den Umgang mit Kommander bekommen.

beispiel_1.kmdr: Begrüssungstext

Dieser Dialog soll uns einen Gruß auf den Bildschirm zaubern. Dazu verwenden wir ein Kommander-Widget mit dem Namen ExecButton. Ein ExecButton führt die Anweisung aus, die in ihm als Kommander-Text gespeichert ist. Programmieren wir ihn also:

  • ExecButton oben in der Symbolleiste anklicken (Quadrat mit dem OK drin)
  • Im Formular durch Linksklick einfügen

Im Eigenschaftsfenster links werden einige Eigenschaften geändert:

  • name: Begrüssung1
  • text: Hallo Welt

Nun noch die Grösse des Buttons an den Text anpassen (Kontextmenue vom ExecButton (Rechtsklick) - Grösse anpassen)

Fehlt noch die Begrüssung selbst. Dazu wählen wir aus dem Kontextmenue des ExecButtons den Punkt Kommander-Text bearbeiten und geben folgende Anweisung ein:

message_info("Hallo Welt, hier bin ich")

Anschließen drücken wir das Bearbeiten-Fenster weg und speichern den Dialog ab. Um den Dialog auszuführen, drücken wir oben auf den Exec-Knopf (Zahnrad). Es erscheint ein Dialogfenster mit einem Button drin. Klicken wir auf den Button, dann wird uns der Begrüssungstext angezeigt.

beispiel_2.kmdr: Der Funktionsbrowser

Es gibt noch eine Möglichkeit, den Kommander-Text, also die Anweisung, einzugeben. Das ist der Funktionsbrowser. Das Arbeiten mit ihm erscheint auf den ersten Blick zwar ziemlich kompliziert, zeigt aber die vielen Möglichgkeiten, die in Kommander stecken.

  • Neuen Dialog öffnen und speichern unter ~/Spielwiese/beispiel_2.kmdr
  • ExecButton einfügen mit folgenden Eigenschaften:
  • name: Begruessung2
  • text: Hallo Universum
  • Grösse anpassen und das Kommander-Text-Fenster öffnen

Unten im Fenster befindet sich im Feld Einfügen ein Button mit dem Namen Funktionen. Damit wird der Funktionsbrowser gestartet (Die Inhalte in den Fenstern vergessen wir wieder. Sie waren für ein anderes Beispiel gedacht).

Das Fenster der Funktionsauswahl ist in vier Abschnitte gegliedert:

  1. Links lassen sich Anweisungen (Funktionen) auswählen. Diese Anweisungen sind in sinnvolle Gruppen eingeordnet
  2. In der Mitte ist das Feld Parameter. Hier wählen wir das Bedienelement aus, auf das die Anweisung wirken soll. In unserem Fall also: Begruessung2. Zusätzlich lassen sich, abhängig von der Anweisung, weitere Parameter eingeben. In unserem Fall der Begrüssungstext
  3. Rechts wird kurz beschrieben, was die gewählte Anweisung bewirkt
  4. Und unten erscheint der fertige Befehl, wenn wir ihn mit dem blauen Down-Pfeil eingefügt haben.

Tun wir das also und bauen damit unseren Dialog:

  • Bedienelement: Begruessung2
  • Gruppe: Message
  • Funktion: Info
  • text: Hallo Universum, schon wieder ich!
  • Mit dem blauen Pfeil die Anweisung einfügen und OK drücken.
  • Das Fenster Text bearbeiten wegdrücken und den Dialog speichern.
  • Ausführen mit Exec oder einer anderen der oben geschilderten Möglichkeiten

Noch ein Beispiel gefällig? OK, einen hab ich noch...

beispiel_3.kmdr: Verbindungen

Kommander kann mit Signals und Slots umgehen. Was soll das denn heißen?. Na ja, ganz einfach:

Wenn wir auf dem Formular mehrere Widgets plaziert haben, dann kann es sein, daß wir mit dem einen Widget ein anderes beeinflussen wollen. Stellen wir uns also vor, wir haben den schon bekannten ExecButton eingebaut und wollen mit ihm ein Script starten, welches in einem Kommander-Widget mit dem Namen ScriptObject gespeichert ist.

Der Sender wäre in unserem Fall der ExecButton, der das Signal ausgeben würde: Ich wurde angeklickt, tut irgend etwas! Als Empfänger würde das ScriptObject dienen. Wenn es das Signal angeklickt erhält, dann würde es den enthaltenen Code ausführen (Slot).

Konkretisieren wir das etwas mit dem dritten Beispieldialog. Vorraussetzung zum Gelingen ist hier, daß kdialog installiert ist (In OpenSuse standardmäßig enthalten unter dem Paketnamen kde4-kdialog).

  • Neuen Dialog öffnen und speichern unter ~/Spielwiese/beispiel_3.kmdr
  • ExecButton einfügen
  • name: Begruessung3
  • text: Gruss
  • Grösse anpassen

Als Zweites fügen wir ein ScriptObject ein (zu finden in der Symbolleiste links neben dem Wecker):

  • name: Script_kdialog
  • text: kdia

Als Kommandertext für das ScriptObject tragen wir ein (Das ist ein kleines einzeiliges Bash-Script):

#!/bin/bashkdialog --msgbox "Hallo zum Dritten"


Fenster schließen, speichern, alles wie gewohnt. Nun stellen wir die Verbindung zwischen den beiden Objekten her:

  • Rechtsklick: Verbindungen
  • Signale: Begruessung3 clicked()
  • Slots: Script_kdialog execute()
  • Linksklick: Verbinde
  • Linksklick: OK

Speichern, ausführen, das kennen wir ja schon.

Beim Ausführen des Dialogs werden wir feststellen, daß unser ScriptObject verschwunden ist. Es handelt sich dabei um ein verstecktes Widget, welches für die Bedienung des Formulars nicht wichtig ist und damit auch nicht angezeigt wird, Ein weiteres verstecktes Widget ist übrigens der Wecker, in Kommander Timer genannt.


beispiel_4.kmdr: Externes Script ausführen

Bash-Script erstellen

  • Neue Textdatei erzeugen ( ~/Spielwiese/begruessungsscript.sh], ausführbar machen (Eigenschaften - Berechtigungen) und mit einem Editor (kate) öffnen
  • Scriptcode eingeben und abspeichern:

#!/bin/bash

kdialog --msgbox "Schon wieder ich..."


Kommander-Dialog erstellen

  • Neuen Dialog öffnen und speichern unter ~/Spielwiese/beispiel_3.kmdr
  • ExecButton einfügen
  • name: Begruessung4
  • text: Externer Gruss
  • Grösse anpassen

Kommander-Text für den ExecButton eintragen (entweder über den Funktionesbrowser oder per Hand)

exec("~/Spielwiese/begruessungsscript.sh")


Fenster schließen, speichern, ausführen, staunen...


Wie geht's nun weiter

Ich denke, das waren erst einmal genug Beispiele, um die grundlegende Bedienung von Kommander zu verstehen. Gehen wir also ins Eingemachte und wenden wir uns einem etwas komplexeren Kommander-Dialog zu, nämlich der GUI für das DVB_Script.

Hier geht's weiter


Einführung: Der Weg zur GUI - Die Funktionen - Screenshots



will be continued