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; Funktioner</title>
<authorgroup>
<author><firstname></firstname> <surname></surname> <affiliation><address> <email></email>
</address></affiliation>
</author>
&rune.laursen.role;
</authorgroup>
</sect1info>
<title>&DCOP; Funktioner</title>
<para>&DCOP; kan kaldes på flere måder i &kommander;. Den første er konsolmetoden </para>
<para>dcop kmdr-executor-@pid KommanderIf changeWidgetText minKontrol <quote>ny tekst</quote> </para>
<para>Dette antager at du er inde i en &kommander;-fil og har adgang til specialen @pid, som indeholder procesID'et. Faktisk er de lettere at erstatte <quote>kmdr-executor-@pid</quote> med @dcopid. Du kan dog bruge denne syntaks (naturligvis uden specialerne), fra kommandolinjen eller et hvilket som helst eksternt script, for at ændre &kommander;-vinduet. </para>
<para>Fordi &kommander; ikke har en fuldstændig fortolker i sit alfastadium, hvis du vil bruge den meget hurtigere interne &DCOP; fra et andet applikationsvindue (konsol &DCOP; er meget langsomt) er det meget mere kompliceret fordi du skal give meget information, inklusive en prototype af kaldet. Det ovenstående kald ville blive til: </para>
<para>@dcop(@dcopid, KommanderIf, <quote>enableWidget(QString, bool)</quote>, Widget, true) </para>
<para>Da dette blev skrevet skulle man være klar over at indlejre &DCOP;-kald inde i scriptsprogstrukturer (som <application>bash</application> betyder at man skal bruge konsolmetodekald. <emphasis>Hvis du bruger interne &DCOP;-kld , vil alle &kommander;-specialer blive udført først og dernæst scriptet.</emphasis> </para>
<para>Der er en ny og simpel måde at bruge &DCOP; på, i &kommander; ved at bruge en objektsyntaks. Lad os sige at du vil ændre teksten i en kontrols navn @linjeEditor1. Det ville se således ud: </para>
<para>@LineEdit1.changeWidgetText(New text) </para>
<para>Som du kan se er den nye syntaks meget let, såvel som visuel konsistent med funktionsgrupper. Alle &DCOP;-referencer her vil bruge den nye objektsyntaks som vist ovenfor. <emphasis> Læg mærke til at hvis du refererer til en kontrol vh. &DCOP; fra et andet vindue eller en anden applikation, er den første parameter altid kontrollens navn. Alle funktioner der er vist her starter med den anden parameter.</emphasis> </para>
<sect2 id="dcop-globals">
<title>&DCOP; til globale variable</title>
<variablelist>
<varlistentry>
<term>global(QString variableName)</term>
<listitem>
<para>Returnerer værdien af den specficerede globale variabel. Når et script køres inde fra &kommander;-vinduet, vil alle (non-globale) variabler sat i dette script, holde op med at eksistere efter scriptet er kørt færdigt og vil derfor ikke være til rådighed for andre scriptprocesser eller i en ny instans af den kaldende proces. Det globale <quote>virkefelt</quote> betyder at variablen eksisterer for alle processer i vinduet indtil dette vindue lukkes. Du kan ændre disse variabler på et hvilket som helst tidspunk, med et nyt kald til <function>@setGlobal</function>. </para>
</listitem>
</varlistentry>
<varlistentry>
<term>setGlobal(QString variableName, QString value)</term>
<listitem>
<para>Opretter en variabel som er global for vinduesprocessen og tildeler værdien til den. Denne værdi kan hentes med global(QString variabelNavn) eller tildeles en ny værdi. </para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="dcop-all">
<title>&DCOP; til alle kontroller</title>
<variablelist>
<varlistentry>
<term>changeWidgetText(QString text)</term>
<listitem>
<para>Dette skal omdøbes til setWidgetText og dette navn bliver sikker overflødiggjort. Det fjerner teksten der vises i kontrollen og erstatter det med den givne tekst. </para>
</listitem>
</varlistentry>
<varlistentry>
<term>enableWidget(bool enable)</term>
<listitem>
<para>Aktiverer eller deaktiverer en kontrol. </para>
</listitem>
</varlistentry>
<varlistentry>
<term>associatedText</term>
<listitem>
<para>Returnerer teksten associeret med den angivne kontrol. Dette er ikke det samme den viste tekst. Det skulle laves sådan her: <quote>@kontrolTekst</quote> eller tekst og eller scripting brugt til at ankomme ved den viste værdi. </para>
</listitem>
</varlistentry>
<varlistentry>
<term>setAssociatedText(QString text)</term>
<listitem>
<para>Den sætter &kommander;s standard Text-streng. Den sættes typisk til <quote>@widgeText</quote> for at vise hvad der indtastes i kontrollen. Det er usandsynligt at du får behov for det, men hvis du gør er det her det foregår. Dette gælder for alle kontroller der kan indeholde data. </para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="dcop-box">
<title>&DCOP; til listeboks- og kombinationsfelt-kontroller</title>
<variablelist>
<varlistentry>
<term>addListItem(QString item, int index)</term>
<listitem>
<para>Tilføjer et element til en listebokskontrol ved det specificerede indeks. Listeindekset starter ved nul For at tilføje til slutinngen af en liste, bruges -1. </para>
</listitem>
</varlistentry>
<varlistentry>
<term>addListItems(QStringList items, int index)</term>
<listitem>
<para>Dette tilføjer en liste af strenge på én gang. Listen skal afsluttes af <acronym>EOL</acronym>(\n - nye linjer). Dette er nyttigt eftersom du kan bruge bash til at hente listen ret smertefrit. F.eks. ved at bruge @exec(ls -l ~/projekter | grep kmdr) for elementer, giver dig en katalogudskrift af &kommander;-filer i din projektmappe. Listeindeks starter ved nul. Brug -1 for at tilføje til slutningen af en liste. </para>
</listitem>
</varlistentry>
<varlistentry>
<term>addUniqueItem(QString item)</term>
<listitem>
<para>addUniqueItem tilføjer et element til slutningen af listen, men kun hvis det er unikt. </para>
</listitem>
</varlistentry>
<varlistentry>
<term>clearList</term>
<listitem>
<para>Fjerner alle indgange. </para>
</listitem>
</varlistentry>
<varlistentry>
<term>removeListItem(int index)</term>
<listitem>
<para>Fjerner elementet ved det angivne indeks. </para>
</listitem>
</varlistentry>
<varlistentry>
<term>item(int index)</term>
<listitem>
<para>Returnerer elementets tekst ved det angivne indeks. </para>
</listitem>
</varlistentry>
<varlistentry>
<term>setCurrentListItem(int index)</term>
<listitem>
<para>Sætter det aktuelle (eller markerede) element til det angivne indeks. Gælder for listefelt- og kombinationsbokskontroller. </para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="dcop-button">
<title>&DCOP; for afkrydsningsfelt- og radioknapkontroller</title>
<variablelist>
<varlistentry>
<term>setChecked(QString widgetName, bool checked)</term>
<listitem>
<para>Afkrydser eller fjerner afkrysdning i afkrydsningsfelt- og radioknapkontroller. </para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="dcop-tab">
<title>&DCOP; for fanebladskontroller</title>
<variablelist>
<varlistentry>
<term>setCurrentTab(QString widgetName, int index)</term>
<listitem>
<para>Markér fanebladet ved indeks for fanebladskontroller. Indeks starter ved nul. </para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>
|