Kommander/Funktionen: Unterschied zwischen den Versionen

Aus Linupedia.org
Wechseln zu: Navigation, Suche
(Widgets: TextEdit, LineEdit, TextBrowser)
(Überarbeitung bin hierher, Entfernen des Bearbeiten-Bausteins)
Zeile 1: Zeile 1:
{{UnderConstruction}}
+
{{Kommander_Navibox}}{{blau|In diesem Artikel werden stichwortartig Widgets von Kommander beschrieben. Es ist gedacht als eine Art Nachschlagwerk.}}
 
 
{{Kommander_Navibox}}{{blau|In diesem Artikel werden stichwortartig Widgets und Funktionen von Kommander beschrieben. Es ist gedacht als eine Art Nachschlagwerk.}}
 
  
 
== <font color="maroon"> Vorbemerkung</font> ==
 
== <font color="maroon"> Vorbemerkung</font> ==
Dieser Artikel stellt keinen Anspruch auf Vollständigkeit. Ich werde hier die Bedienelemente von Kommander-Dialogen eintragen, wie sie ich kennengelernt habe und vielleicht noch kennenlernen werde. Ich lade ausdrücklich einen jeden ein, hier sein Wissen mit einfliesen zu lassen und selber neue Widget, versehen mit einem kurzen Beispiel, in dieses Wiki zu schreiben. Wenn es euch also interessiert, dann dürft ihr euch austoben, wenn ich den Bearbeiten-Baustein entfernt habe. Und wenn nicht, dann bin ich auch nicht böse. Dann dauert es halt ein paar Jahre länger, bis hier alles Wissenswerte steht.
+
Dieser Artikel stellt keinen Anspruch auf Vollständigkeit. Ich werde hier die Bedienelemente von Kommander-Dialogen eintragen, wie sie ich kennengelernt habe und vielleicht noch kennenlernen werde. Ich lade ausdrücklich einen jeden ein, hier sein Wissen mit einfliesen zu lassen und selber neue Widget, versehen mit einem kurzen Beispiel, in dieses Wiki zu schreiben. Wenn es euch also interessiert, dann dürft ihr euch austoben. Und wenn nicht, dann bin ich auch nicht böse. Dann dauert es halt ein paar Jahre länger, bis hier alles Wissenswerte steht.
  
== <font color="maroon"> Funktionen</font> ==
+
== <font color="maroon">Definitionen</font> ==
Funktionen sind nicht anderes als Anweisungen, irgendetwas in, mit oder mit Hilfe von Kommander zu tun.Sie lassen sich durch den im Editor eingebauten Funktions-Browser hervorragend handeln. In diesem Browser steht auch eine kurze Erklärung zu der jeweils aufgerufenen Funktion.
+
=== Funktionen ===
 +
Funktionen sind nicht anderes als Anweisungen, irgend etwas in, mit oder mit Hilfe von Kommander zu tun.Sie lassen sich durch den im Editor eingebauten Funktions-Browser hervorragend handeln. In diesem Browser steht auch eine kurze Erklärung zu der jeweils aufgerufenen Funktion.
  
== <font color="maroon">Verbindungen (Signals and Slots)</font> ==
+
=== Verbindungen (Signals and Slots) ===
 
Bedienelemente (Widgets) lassen sich mit Hilfe von Funktionen gegenseitig beeinflussen. Eine andere Möglichkeit sind Verbindungen. Das funktioniert, grob gesagt, so:
 
Bedienelemente (Widgets) lassen sich mit Hilfe von Funktionen gegenseitig beeinflussen. Eine andere Möglichkeit sind Verbindungen. Das funktioniert, grob gesagt, so:
  
Irgend ein Ereignis (Signal) eines Widgets provoziert einen Vorgang Slot) bei einem anderen Widget. Als Beispiel mag folgendes dienen:
+
Irgend ein Ereignis (Signal) eines Widgets provoziert einen Vorgang (Slot) bei einem anderen Widget. Als Beispiel mag folgendes dienen:
  
 
  Signal: timer finished() ==> Slot: ScriptObject execute()
 
  Signal: timer finished() ==> Slot: ScriptObject execute()
Zeile 18: Zeile 17:
 
Jedesmal, wenn Timer1 abgelaufen ist, dann wird das ScriptObject aufgrufen und damit der dort enthaltene Script-Code ausgeführt.
 
Jedesmal, wenn Timer1 abgelaufen ist, dann wird das ScriptObject aufgrufen und damit der dort enthaltene Script-Code ausgeführt.
  
== <font color="maroon"> Widgets: Buttons</font> ==
+
=== Widgets ===
=== ExecButton ===
+
Bedienelemente eines Kommander-Scriptes. Aus ihnen besteht der Dialog (die GUI).
 +
 
 +
== <font color="maroon"> Widgets</font> ==
 +
=== Buttons ===
 +
==== <font color="gray"> ExecButton</font> ====
 
* ''Aufgabe:'' Ausführen von Anweisungen
 
* ''Aufgabe:'' Ausführen von Anweisungen
* ''Zustand:'' population
 
 
* ''Anwendung:'' Die auszuführenden Anweisungen stehen im Kommander-Text.
 
* ''Anwendung:'' Die auszuführenden Anweisungen stehen im Kommander-Text.
 
* ''Beispiel:''
 
* ''Beispiel:''
Zeile 29: Zeile 31:
 
Das aufgerufene Bash-Script wird ausgeführt, sobald der ExecButton gedrückt wurde.
 
Das aufgerufene Bash-Script wird ausgeführt, sobald der ExecButton gedrückt wurde.
  
=== CloseButton ===
+
==== <font color="gray"> CloseButton</font> ====
 
* ''Aufgabe:'' Ausführen von Anweisungen. Danach wird der Dialog geschlossen.
 
* ''Aufgabe:'' Ausführen von Anweisungen. Danach wird der Dialog geschlossen.
* ''Zustand:'' population
 
 
* ''Anwendung:'' Die auszuführenden Anweisungen stehen im Kommander-Text.
 
* ''Anwendung:'' Die auszuführenden Anweisungen stehen im Kommander-Text.
 
* ''Beispiel:''
 
* ''Beispiel:''
Zeile 39: Zeile 40:
 
Das aufgerufene Bash-Script wird ausgeführt, sobald der CloseButton gedrückt wurde. Nachdem das Bash-Script abgearbeitet wurde, schließt sich der Kommander-Dialog.
 
Das aufgerufene Bash-Script wird ausgeführt, sobald der CloseButton gedrückt wurde. Nachdem das Bash-Script abgearbeitet wurde, schließt sich der Kommander-Dialog.
  
=== RadioButton ===
+
==== <font color="gray"> RadioButton</font> ====
 
* ''Aufgabe:'' Bereitstellen von Anweisungen, abhängig vom Zustand des Buttons
 
* ''Aufgabe:'' Bereitstellen von Anweisungen, abhängig vom Zustand des Buttons
* ''Zustand checked:'' Kommander-Text, wenn der Button gedrückt ist
+
* Zustände
* ''Zustand unchecked:'' Kommander-Text, wenn der Button nicht gedrückt ist
+
** ''checked:'' Kommander-Text, wenn der Button gedrückt ist
* ''Zustand population:'' keine Ahnung, was das soll!
+
** ''unchecked:'' Kommander-Text, wenn der Button nicht gedrückt ist
 +
** ''population:'' keine Ahnung, was das soll!
 
* ''Anwendung'': ''RadioButtons'' werden in einer ''ButtonGroup'' organisiert, die per default einstellt, daß immer nur ein Button gedrückt sein kann. Der Kommander-Text des aktivierten Buttons steht dann als Inhalt der ''ButtonGroup'' zur Verfügung. Mit der Funktion ''text'' kann darauf zugegriffen werden.
 
* ''Anwendung'': ''RadioButtons'' werden in einer ''ButtonGroup'' organisiert, die per default einstellt, daß immer nur ein Button gedrückt sein kann. Der Kommander-Text des aktivierten Buttons steht dann als Inhalt der ''ButtonGroup'' zur Verfügung. Mit der Funktion ''text'' kann darauf zugegriffen werden.
 
* ''Beispiel:'' Es sei eine ''ButtonGroup'' verhanden, die zwei ''RadioButtons'' enthält. Einer der Buttons enthält als Kommander-Text für den Zustand ''checked'' den Aufruf für ein ''ScriptObjekt'':
 
* ''Beispiel:'' Es sei eine ''ButtonGroup'' verhanden, die zwei ''RadioButtons'' enthält. Einer der Buttons enthält als Kommander-Text für den Zustand ''checked'' den Aufruf für ein ''ScriptObjekt'':
Zeile 60: Zeile 62:
 
* Nun passiert folgendes: Die ''RadioButtons'' befinden sich in der ''ButtonGroup''. Immer nur einer von ihnen kann gedrückt sein (Eigenschaft ''exclusive''). Der Inhalt des gedrückten Buttons steht in der ''ButtonGroup'' und wird durch Drücken des ''ExecButtons'' abgefragt und ausgeführt. Damit startet das Bash-Script.
 
* Nun passiert folgendes: Die ''RadioButtons'' befinden sich in der ''ButtonGroup''. Immer nur einer von ihnen kann gedrückt sein (Eigenschaft ''exclusive''). Der Inhalt des gedrückten Buttons steht in der ''ButtonGroup'' und wird durch Drücken des ''ExecButtons'' abgefragt und ausgeführt. Damit startet das Bash-Script.
  
== <font color="maroon"> Widgets: Versteckt</font> ==
+
=== Versteckte Widgets ===
 
Versteckt sind die folgenden Widget nur in dem Sinn, daß man sie im Kommander-executor, also beim Ausführen des Dialogs, nicht sehen kann. Im Editor sind sie sehr wohl sichtbar und können dort eingestellt und programmiert werden.
 
Versteckt sind die folgenden Widget nur in dem Sinn, daß man sie im Kommander-executor, also beim Ausführen des Dialogs, nicht sehen kann. Im Editor sind sie sehr wohl sichtbar und können dort eingestellt und programmiert werden.
  
=== ScriptObject ===
+
==== <font color="gray"> ScriptObject</font> ====
 
* ''Aufgabe:'' Enhält Programmcode
 
* ''Aufgabe:'' Enhält Programmcode
* ''Zustand:'' population
 
 
* ''Anwendung:'' Das ScriptObject dient als Container für Programmcode. Der Code , den es enthält, kann prinzipiell jeder beliebigen Programmiersprache entstammen. Er muß nur durch den ''shebang ''entsprechend gekennzeichnet sein. Auch die kommandereigene Scriptsprache kann verwendet werden.
 
* ''Anwendung:'' Das ScriptObject dient als Container für Programmcode. Der Code , den es enthält, kann prinzipiell jeder beliebigen Programmiersprache entstammen. Er muß nur durch den ''shebang ''entsprechend gekennzeichnet sein. Auch die kommandereigene Scriptsprache kann verwendet werden.
 
* ''Start des enthaltenen Scripts:'' Das Script kann durch Aufrufen des ''ScriptObjects'', zum Beispiel mit Hilfe eines ''ExecButtons, ge''startet werden:
 
* ''Start des enthaltenen Scripts:'' Das Script kann durch Aufrufen des ''ScriptObjects'', zum Beispiel mit Hilfe eines ''ExecButtons, ge''startet werden:
Zeile 81: Zeile 82:
 
* Durch die Verwendung dieses Widgets lassen sich unterschiedliche Script-Sprachen in einer gemeinsamen GUI verwenden. Der komplette Programmcode aller Scripte und die GUI selber ist dann im ''kmdr-file'' (Kommander-File) gespeichert. Das bedeutet, es existiert nur eine einzige Datei für ein unter Umständen sehr komplexes Programm. Ein interessantes Feature, wenn angestrebt ist, das Programm zu veröffentlichen.
 
* Durch die Verwendung dieses Widgets lassen sich unterschiedliche Script-Sprachen in einer gemeinsamen GUI verwenden. Der komplette Programmcode aller Scripte und die GUI selber ist dann im ''kmdr-file'' (Kommander-File) gespeichert. Das bedeutet, es existiert nur eine einzige Datei für ein unter Umständen sehr komplexes Programm. Ein interessantes Feature, wenn angestrebt ist, das Programm zu veröffentlichen.
  
=== Timer ===
+
==== <font color="gray"> Timer</font> ====
 
* ''Aufgabe:'' Timer
 
* ''Aufgabe:'' Timer
* ''Zustand:'' population
 
 
* ''Eigenschaften:''  
 
* ''Eigenschaften:''  
 
** ''Interval:'' in ms
 
** ''Interval:'' in ms
Zeile 91: Zeile 91:
 
** ''Signal:'' timer finished() ==> ''Slot:'' ScriptObject execute()
 
** ''Signal:'' timer finished() ==> ''Slot:'' ScriptObject execute()
  
== <font color="maroon"> Widgets: Eingabe</font> ==
+
=== Eingabe ===
=== TextEdit ===
+
==== <font color="gray"> TextEdit</font> ====
 
* ''Aufgabe:'' Eingabe eines beliebigen Textes
 
* ''Aufgabe:'' Eingabe eines beliebigen Textes
* ''Zustand: ''population
 
 
* ''Beispiel: ''mit Hilfe eines ''ExecButtons'' wird der ins Textfeld eingegebene Text angezeigt. Hier der Kommandertext des ''ExecButtons'':
 
* ''Beispiel: ''mit Hilfe eines ''ExecButtons'' wird der ins Textfeld eingegebene Text angezeigt. Hier der Kommandertext des ''ExecButtons'':
  
 
  message_info(TextEdit.text)
 
  message_info(TextEdit.text)
  
=== LineEdit ===
+
==== <font color="gray"> LineEdit</font> ====
 
* ''Aufgabe:'' Eingabe einer beliebigen Textzeile
 
* ''Aufgabe:'' Eingabe einer beliebigen Textzeile
* ''Zustand: ''population
 
 
* ''Beispiel: ''mit Hilfe eines ''ExecButtons'' wird der ins Textfeld eingegebene Text angezeigt. Hier der Kommandertext des ''ExecButtons'':
 
* ''Beispiel: ''mit Hilfe eines ''ExecButtons'' wird der ins Textfeld eingegebene Text angezeigt. Hier der Kommandertext des ''ExecButtons'':
  
 
  message_info(LineEdit.text)
 
  message_info(LineEdit.text)
  
== <font color="maroon"> Widgets: Ausgabe</font> ==
+
=== Ausgabe ===
=== TextEdit ===
+
==== <font color="gray"> TextEdit</font> ====
* ''Aufgabe:'' Anzeige eines beliebigen Textes
+
* ''Aufgabe:'' Anzeige eines Textes
* ''Zustand: ''population
 
 
* ''Eigenschaften:''
 
* ''Eigenschaften:''
 
** ''readOnly: ''Wahr
 
** ''readOnly: ''Wahr
Zeile 116: Zeile 113:
 
  TextEdit.setText(LineEdit.text)
 
  TextEdit.setText(LineEdit.text)
  
=== TextBrowser ===
+
==== <font color="gray"> TextBrowser</font> ====
* ''Aufgabe:'' Anzeige eines beliebigen Textes
+
* ''Aufgabe:'' Anzeige eines Textes
* ''Zustand: ''population
 
* ''Eigenschaften:''
 
 
* ''Beispiel:'' Eine mit ''LineEdit'' übernommene Textzeile wird nach Druck auf einen ''ExecButton'' angezeigt. Kommandertext des ''ExecButtons'':
 
* ''Beispiel:'' Eine mit ''LineEdit'' übernommene Textzeile wird nach Druck auf einen ''ExecButton'' angezeigt. Kommandertext des ''ExecButtons'':
  
 
  TextBrowser.setText(LineEdit.text)
 
  TextBrowser.setText(LineEdit.text)
 +
 +
 +
{{Kommander_Navibox}}
 +
 +
[[Programmierung | Zurück zur Programmierung]]
 +
 +
[[Category:Programmierung]]

Version vom 24. November 2008, 18:27 Uhr

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


In diesem Artikel werden stichwortartig Widgets von Kommander beschrieben. Es ist gedacht als eine Art Nachschlagwerk.

Vorbemerkung

Dieser Artikel stellt keinen Anspruch auf Vollständigkeit. Ich werde hier die Bedienelemente von Kommander-Dialogen eintragen, wie sie ich kennengelernt habe und vielleicht noch kennenlernen werde. Ich lade ausdrücklich einen jeden ein, hier sein Wissen mit einfliesen zu lassen und selber neue Widget, versehen mit einem kurzen Beispiel, in dieses Wiki zu schreiben. Wenn es euch also interessiert, dann dürft ihr euch austoben. Und wenn nicht, dann bin ich auch nicht böse. Dann dauert es halt ein paar Jahre länger, bis hier alles Wissenswerte steht.

Definitionen

Funktionen

Funktionen sind nicht anderes als Anweisungen, irgend etwas in, mit oder mit Hilfe von Kommander zu tun.Sie lassen sich durch den im Editor eingebauten Funktions-Browser hervorragend handeln. In diesem Browser steht auch eine kurze Erklärung zu der jeweils aufgerufenen Funktion.

Verbindungen (Signals and Slots)

Bedienelemente (Widgets) lassen sich mit Hilfe von Funktionen gegenseitig beeinflussen. Eine andere Möglichkeit sind Verbindungen. Das funktioniert, grob gesagt, so:

Irgend ein Ereignis (Signal) eines Widgets provoziert einen Vorgang (Slot) bei einem anderen Widget. Als Beispiel mag folgendes dienen:

Signal: timer finished() ==> Slot: ScriptObject execute()

Jedesmal, wenn Timer1 abgelaufen ist, dann wird das ScriptObject aufgrufen und damit der dort enthaltene Script-Code ausgeführt.

Widgets

Bedienelemente eines Kommander-Scriptes. Aus ihnen besteht der Dialog (die GUI).

Widgets

Buttons

ExecButton

  • Aufgabe: Ausführen von Anweisungen
  • Anwendung: Die auszuführenden Anweisungen stehen im Kommander-Text.
  • Beispiel:
exec ("~/beispiele/beispielscript.sh")

Das aufgerufene Bash-Script wird ausgeführt, sobald der ExecButton gedrückt wurde.

CloseButton

  • Aufgabe: Ausführen von Anweisungen. Danach wird der Dialog geschlossen.
  • Anwendung: Die auszuführenden Anweisungen stehen im Kommander-Text.
  • Beispiel:
exec ("~/beispiele/beispielscript.sh")

Das aufgerufene Bash-Script wird ausgeführt, sobald der CloseButton gedrückt wurde. Nachdem das Bash-Script abgearbeitet wurde, schließt sich der Kommander-Dialog.

RadioButton

  • Aufgabe: Bereitstellen von Anweisungen, abhängig vom Zustand des Buttons
  • Zustände
    • checked: Kommander-Text, wenn der Button gedrückt ist
    • unchecked: Kommander-Text, wenn der Button nicht gedrückt ist
    • population: keine Ahnung, was das soll!
  • Anwendung: RadioButtons werden in einer ButtonGroup organisiert, die per default einstellt, daß immer nur ein Button gedrückt sein kann. Der Kommander-Text des aktivierten Buttons steht dann als Inhalt der ButtonGroup zur Verfügung. Mit der Funktion text kann darauf zugegriffen werden.
  • Beispiel: Es sei eine ButtonGroup verhanden, die zwei RadioButtons enthält. Einer der Buttons enthält als Kommander-Text für den Zustand checked den Aufruf für ein ScriptObjekt:
ScriptObject.execute
  • Im ScriptObjekt steht der Aufruf für das eigentliche Bash-Script, das ausgeführt werden soll:
#!/bin/bash
~/beispiele/beispielscript.sh
  • Des weiteren sei ein ExecButton vorhanden, der die ganze Aktion startet. Sein Inhalt lautet:
ButtonGroup.text
  • Nun passiert folgendes: Die RadioButtons befinden sich in der ButtonGroup. Immer nur einer von ihnen kann gedrückt sein (Eigenschaft exclusive). Der Inhalt des gedrückten Buttons steht in der ButtonGroup und wird durch Drücken des ExecButtons abgefragt und ausgeführt. Damit startet das Bash-Script.

Versteckte Widgets

Versteckt sind die folgenden Widget nur in dem Sinn, daß man sie im Kommander-executor, also beim Ausführen des Dialogs, nicht sehen kann. Im Editor sind sie sehr wohl sichtbar und können dort eingestellt und programmiert werden.

ScriptObject

  • Aufgabe: Enhält Programmcode
  • Anwendung: Das ScriptObject dient als Container für Programmcode. Der Code , den es enthält, kann prinzipiell jeder beliebigen Programmiersprache entstammen. Er muß nur durch den shebang entsprechend gekennzeichnet sein. Auch die kommandereigene Scriptsprache kann verwendet werden.
  • Start des enthaltenen Scripts: Das Script kann durch Aufrufen des ScriptObjects, zum Beispiel mit Hilfe eines ExecButtons, gestartet werden:
ScriptObject.execute
  • Beispiel Bash: siehe RadioButton
  • Beispiel Kommander:
message_info("Hallo!")
Timer.execute
message_warning("Timer läuft")
  • Auf dem Bildschirm wird die Meldung Hallo! angezeigt, anschließend ein Timer gestartet und zum Schluß darauf hingewiesen, daß der Timer läuft.
  • Durch die Verwendung dieses Widgets lassen sich unterschiedliche Script-Sprachen in einer gemeinsamen GUI verwenden. Der komplette Programmcode aller Scripte und die GUI selber ist dann im kmdr-file (Kommander-File) gespeichert. Das bedeutet, es existiert nur eine einzige Datei für ein unter Umständen sehr komplexes Programm. Ein interessantes Feature, wenn angestrebt ist, das Programm zu veröffentlichen.

Timer

  • Aufgabe: Timer
  • Eigenschaften:
    • Interval: in ms
    • singleShot: wahr / falsch
  • Start: Durch Aufruf des Objectes (timer.execute)
  • Abfrage: Über Signals and Slots (Verbindungen)
    • Signal: timer finished() ==> Slot: ScriptObject execute()

Eingabe

TextEdit

  • Aufgabe: Eingabe eines beliebigen Textes
  • Beispiel: mit Hilfe eines ExecButtons wird der ins Textfeld eingegebene Text angezeigt. Hier der Kommandertext des ExecButtons:
message_info(TextEdit.text)

LineEdit

  • Aufgabe: Eingabe einer beliebigen Textzeile
  • Beispiel: mit Hilfe eines ExecButtons wird der ins Textfeld eingegebene Text angezeigt. Hier der Kommandertext des ExecButtons:
message_info(LineEdit.text)

Ausgabe

TextEdit

  • Aufgabe: Anzeige eines Textes
  • Eigenschaften:
    • readOnly: Wahr
  • Beispiel: Eine mit LineEdit übernommene Textzeile wird nach Druck auf einen ExecButton angezeigt. Kommandertext des ExecButtons:
TextEdit.setText(LineEdit.text)

TextBrowser

  • Aufgabe: Anzeige eines Textes
  • Beispiel: Eine mit LineEdit übernommene Textzeile wird nach Druck auf einen ExecButton angezeigt. Kommandertext des ExecButtons:
TextBrowser.setText(LineEdit.text)


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



Zurück zur Programmierung