1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
<?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>[email protected]</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>
|