DCOP Funktioner

Oversætter: Rune Rønde Laursen

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