<?xml version="1.0" encoding="UTF-8" ?> <sect1 id="dcop-interface"> <sect1info> <title >&DCOP; Funktionen</title> <authorgroup> <author ><firstname ></firstname > <surname ></surname > <affiliation ><address > <email ></email> </address ></affiliation> </author> <othercredit role="translator" ><firstname >Georg</firstname ><surname >Schuster</surname ><affiliation ><address ><email >gschuster@utanet.at</email ></address ></affiliation ><contrib >Deutsche Übersetzung</contrib ></othercredit > </authorgroup> </sect1info> <title >&DCOP; Funktionen</title> <para >Das &DCOP; kann in &kommander; auf verschiedene Weise aufgerufen werden. Die Erste ist die Konsolenmethode </para> <para >dcop kmdr-executor-@pid KommanderIf changeWidgetText myWidget <quote >neuer Text</quote > </para> <para >Dies setzt voraus, dass Sie sich innerhalb einer &kommander;-Datei befinden und Zugriff auf die Anweisung @pid haben, die die Prozess-ID enhält. Da ist es einfacher, <quote >kmdr-executor-@pid</quote > mit @dcopid zu ersetzen. Diese Syntax (möglicherweise ohne Anweisungen) kann von der Befehlszeile oder jedem externen Skript genutzt werden, um das &kommander;-Fenster zu ändern. </para> <para >Weil &kommander; in seiner Alfa-Entwicklungsstufe noch keinen vollständigen Parser hat, ist die Verwendung des viel schnelleren internen &DCOP; aus einem anderen Anwendungsfenster (Konsolen-&DCOP; ist langsam) viel schwieriger, weil viele Informationen mitgegeben werden müssen, einschließlich eines Prototyps des Aufrufes. Der Aufruf oben würde so aussehen: </para> <para >@dcop(@dcopid, KommanderIf, <quote >enableWidget(QString, bool)</quote >, Bedienelement, true) </para> <para >Zur Zeit der Erstellung sollte aufgepasst werden, dass die Schachtelung von &DCOP;-Aufrufen innerhalb von Skriptsprachkonstrukten (wie <application >bash</application >) die Verwendung von Konsolenaufrufen verlangt.<emphasis >Bei der Verwendung von internem &DCOP; werden alle &kommander;-Anweisungen zuerst ausgeführt und dann erst das Skript.</emphasis > </para> <para >Es gibt einen neuen vereinfachten Weg, &DCOP; innerhalb von &kommander; zu nutzen, mittels Objektsyntax. Angenommen, der Text in einem Bedienelement namens @Zeileneingabefeld1 soll geändert werden. Dies würde so aussehen. </para> <para >@Zeileneingabefeld1.changeWidgetText(Neuer Text) </para> <para >Wie Sie sehen, ist die neue Syntax einfach und passt schlüssig zu den Funktionsgruppen. Die gesamte &DCOP;-Referenz benutzt die neue Objektsyntax, wie oben. <emphasis >Bitte beachten Sie, dass beim Referenzieren eines Bedienelementes mit &DCOP; aus einem anderen Fenster oder einer anderen Anwendung der erste Parameter immer der Name des Bedienelementes sein muss. Alle hier aufgelisteten Funktionen beginnen mit dem zweiten Parameter.</emphasis > </para> <sect2 id="dcop-globals"> <title >&DCOP; für globale Variablen</title> <variablelist> <varlistentry> <term >global(QString VariablenName)</term> <listitem> <para >Liefert den Wert der angegebenen globalen Variable zurück. Wenn ein Skript aus dem &kommander;-Fenster gestartet wird, verschwinden alle (nicht-globalen) Variablen, die im Skript belegt wurden, nach Ablauf des Skripts und sind so nicht für andere Skripte oder neue Instanzen des aufrufenden Prozesses verfügbar. Der <quote >Gültigkeitsbereich</quote > global bedeutet, dass die Variable für jeden Prozess dieses Fensters existiert, bis es geschlossen wird. Diese Variablen können jederzeit mit einem weiteren <function >@setGlobal</function >-Aufruf geändert werden. </para> </listitem> </varlistentry> <varlistentry> <term >setGlobal(QString VariablenName, QString value)</term> <listitem> <para >Erstellt eine Variable, die global im Hinblick auf den Fensterprozeß ist und weist ihr den Wert zu. Dieser Wert kann mit global(QString VariablenName) gelesen oder geändert werden. </para> </listitem> </varlistentry> </variablelist> </sect2> <sect2 id="dcop-all"> <title >&DCOP; für alle Bedienelemente</title> <variablelist> <varlistentry> <term >changeWidgetText(QString Text)</term> <listitem> <para >Dies sollte in setWidgetText umbenannt werden und der Name ist daher veraltet. Es entfernt den angezeigten Text im Bedienelement und ersetzt ihn mit dem Parametertext. </para> </listitem> </varlistentry> <varlistentry> <term >enableWidget(bool schalter)</term> <listitem> <para >Schaltet ein Bedienelement ein oder aus. </para> </listitem> </varlistentry> <varlistentry> <term >associatedText</term> <listitem> <para >Liefert den mit dem angegebenen Bedienelement verbundenen Text zurück. Das ist nicht das gleiche, wie der angezeigte Text. Diesen würde man mit <quote >@widgetText </quote > oder Skriptbefehlen erreichen, um den angezeigten Wert zu erhalten. </para> </listitem> </varlistentry> <varlistentry> <term >setAssociatedText(QString Text)</term> <listitem> <para >Dies setzt den Standardtext von &kommander;. Das ist typischerweise gleich wie <quote >@widgetText</quote > um anzuzeigen, was im Bedienelement enthalten ist. Normalerweise hat man keinen Bedarf dafür, aber auf jeden Fall vorhanden. Trifft für alle Bedienelemente zu, die Text enthalten können. </para> </listitem> </varlistentry> </variablelist> </sect2> <sect2 id="dcop-box"> <title >&DCOP; für Listenfeld- und Kombinationsfeld-Bedienelemente</title> <variablelist> <varlistentry> <term >addListItem(QString Element, int Index)</term> <listitem> <para >Fügt ein Element zu einem ListBox-Bedienelement am angegebenen Index hinzu. Der Index beginnt mit Null. Zum Hinzufügen am Ende der Liste dient -1. </para> </listitem> </varlistentry> <varlistentry> <term >addListItems(QStringList Elemente, int Index)</term> <listitem> <para >Dies fügt eine Liste von Zeichenketten auf einmal hinzu. Die Liste sollte mit <acronym >EOL</acronym > (\n - Zeilenschaltungen) getrennt sein. Das ist praktisch, weil man über bash leicht zu so einer Liste kommt. So liefert z. B. @exec(ls -l ~/projects | grep kmdr) ein Inhaltsverzeichnis von &kommander;-Dateien im Projektordner als passende Liste. Der Listenindex beginnt bei Null. Mit -1 kann am Ende der bestehenden Liste angehängt werden. </para> </listitem> </varlistentry> <varlistentry> <term >addUniqueItem(QString Element)</term> <listitem> <para >addUniqueItem fügt ein Element am Ende der Liste nur dann hinzu, wenn es einmalig ist. </para> </listitem> </varlistentry> <varlistentry> <term >clearList</term> <listitem> <para >Entfernt alle Elemente. </para> </listitem> </varlistentry> <varlistentry> <term >removeListItem(int Index)</term> <listitem> <para >Entfernt das Element mit angegebenem Index. </para> </listitem> </varlistentry> <varlistentry> <term >item(int Index)</term> <listitem> <para >Liefert den Text des Elementes mit angegebenem Index zurück. </para> </listitem> </varlistentry> <varlistentry> <term >setCurrentListItem(int Index)</term> <listitem> <para >Setze das aktuelle (oder ausgewählte) Element auf den angegebenen Index. Verwendbar in Listbox und ComboBox-Bedienelementen. </para> </listitem> </varlistentry> </variablelist> </sect2> <sect2 id="dcop-button"> <title >&DCOP; für Ankreuzfeld- und Auswahlknopf-Bedienelemente</title> <variablelist> <varlistentry> <term >setChecked(QString BedienelementName, bool aktiviert)</term> <listitem> <para >Aktiviert/deaktiviert Ankreuzfeld- oder Auswahlknopf-Bedienelemente. </para> </listitem> </varlistentry> </variablelist> </sect2> <sect2 id="dcop-tab"> <title >&DCOP; für Karteireiter-Bedienelemente</title> <variablelist> <varlistentry> <term >setCurrentTab(QString BedienelementName, int Index)</term> <listitem> <para >Wählt das Unterfenster mittels Index für Karteireiter-Bedienelemente. Der Index beginnt bei Null. </para> </listitem> </varlistentry> </variablelist> </sect2> </sect1>