# &DCOP; Funktioner

&rune.laursen.role;

# &DCOP; Funktioner

&DCOP; kan kaldes på flere måder i &kommander;. Den første er konsolmetoden

dcop kmdr-executor-@pid KommanderIf changeWidgetText minKontrol ny tekst

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 kmdr-executor-@pid 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.

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:

@dcop(@dcopid, KommanderIf, enableWidget(QString, bool), Widget, true)

Da dette blev skrevet skulle man være klar over at indlejre &DCOP;-kald inde i scriptsprogstrukturer (som bash betyder at man skal bruge konsolmetodekald. Hvis du bruger interne &DCOP;-kld , vil alle &kommander;-specialer blive udført først og dernæst scriptet.

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:

@LineEdit1.changeWidgetText(New text)

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. 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.

## &DCOP; til globale variable

global(QString variableName)

  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 virkefelt 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 `@setGlobal`.

setGlobal(QString variableName, QString value)

  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.

## &DCOP; til alle kontroller

changeWidgetText(QString text)

  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.

enableWidget(bool enable)

  Aktiverer eller deaktiverer en kontrol.

associatedText

  Returnerer teksten associeret med den angivne kontrol. Dette er ikke det samme den viste tekst. Det skulle laves sådan her: @kontrolTekst eller tekst og eller scripting brugt til at ankomme ved den viste værdi.

setAssociatedText(QString text)

  Den sætter &kommander;s standard Text-streng. Den sættes typisk til @widgeText 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.

## &DCOP; til listeboks- og kombinationsfelt-kontroller

addListItem(QString item, int index)

  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.

addListItems(QStringList items, int index)

  Dette tilføjer en liste af strenge på én gang. Listen skal afsluttes af EOL(\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.

addUniqueItem(QString item)

  addUniqueItem tilføjer et element til slutningen af listen, men kun hvis det er unikt.

clearList

  Fjerner alle indgange.

removeListItem(int index)

  Fjerner elementet ved det angivne indeks.

item(int index)

  Returnerer elementets tekst ved det angivne indeks.

setCurrentListItem(int index)

  Sætter det aktuelle (eller markerede) element til det angivne indeks. Gælder for listefelt- og kombinationsbokskontroller.

## &DCOP; for afkrydsningsfelt- og radioknapkontroller

setChecked(QString widgetName, bool checked)

  Afkrydser eller fjerner afkrysdning i afkrydsningsfelt- og radioknapkontroller.

## &DCOP; for fanebladskontroller

setCurrentTab(QString widgetName, int index)

  Markér fanebladet ved indeks for fanebladskontroller. Indeks starter ved nul.