# &DCOP;-i funktsioonid

&kommander; hakkas esialgu kasutama vidinaid sisemiselt &DCOP;-i vahendusel, mis arenes edasi vidinate funktsioonideks. &DCOP; on endiselt kasutusel ning seda saab tarvitada teabe jagamiseks dialoogide vahel. Samuti saab selle abil laiendada peaaegu kõiki KDE rakendusi. &DCOP; on võimalik &kommander;is välja kutsuda mitmel viisil. Esimene võimalus on konsool. Ava &kommander;i dialoog ja seejärek konsool ning proovi ise.

Allolev jutt käsitleb peamiselt vana parserit, Kui tunned huvi sisemiste vidinate funktsioonide vastu, tasub tutvust teha uue parseriga. See teave käib eriti dialoogide ja rakenduste suhtlemise või teiste skriptikeelte käivitamise kohta Kommanderis skriptidena.

    dcop | grep kmdr
    dcop `dcop | grep kmdr`
    dcop `dcop | grep kmdr` KommanderIf

See näitab, millised dialoogid töötavad ja millised liidesed on saadaval, samuti seda, mida saab kasutada väljakutsumiseks &kommander;i spetsiaalses sisemises liideses. &DCOP;-i selgituste juures tasub meeles pidada, et &DCOP;-i kasutavad seesmiselt KDE rakendused (KDE4 ajal asendab selle D-Bus) ja et see on väga kasulik asi. Uuri programmi `kdcop`; vajuta Alt+F2 ja kirjuta programmi nimi käivitusreale. Seal saab näha kõike, mis töötab. Nüüd aga tagasi &DCOP;-i ja &kommander;i juurde.

    dcop kmdr-executor-@pid KommanderIf setText minuVidin uus tekst

See eeldab, et oled &kommander;i failis ja sul on ligipääs spetsiaalsele @pid-ile, mis sisaldab protsessi ID-d. Tegelikult on lihtsam asendada kmdr-executor-@pid @dcopid-ga. Aga igal juhul on võimalik seda süntaksit kasutada (küll ilma erideta) käsurealt või mis tahes välisest skriptist, et muuta &kommander;i akent.

&kommander; on võtnud kasutusele palju kiirema sisemise &DCOP;-funktsiooni. Selle kasutamine mõne muu rakenduse aknast (konsooli &DCOP; on ikka päris aeglane) tekitab mõningaid raskusi, sest sa pead andma hulganisti infot, sealhulgas väljakutse prototüübi. Eeltoodud käsk võtab siis kuju (pane tähele, et @dcopid on dialoogis tegelikult sisene, aga sa võid selle asendada mis tahes korrektse protsessi ID-ga):

    @dcop(@dcopid, KommanderIf, enableWidget(QString, tõeväärtus), Vidin, true)

Varasemas &kommander;is tähendas &DCOP;-väljakutsete pesastamine skriptikeele struktuuridesse (näiteks bash) seda, et väljakutsed tuli esitada konsoolilt. Kui kasutad sisest &DCOP;-i, käivitatakse esmalt kõik &kommander;i erid ja seejärel skript. Palun loe eelmist lauset veel kord, sest muidu ei ole nutul ja halal piiri, kui bash satub &kommander;i eridega lõpmatusse silmusesse.

On ka uus ja lihtsam viis kasutada &DCOP;-i &kommander;is endas, mida võimaldab objektsüntaks. Oletame, et soovid muuta teksti vidinas nimega @LineEdit1. See käib järgmiselt.

    @LineEdit1.setText(Uus tekst)

Nagu näed, on uus süntaks väga lihtne ja visuaalselt funktsioonigruppidega kooskõlas. Kõik siintoodud &DCOP;-i viited kasutavad sellist objektisüntaksit. Palun arvesta, et kui viitad &DCOP;-i muust aknast või rakendusest kasutades vidinale, peab esimene parameeter olema alati vidina nimi. Kõik siin toodud funktsioonid algavad teise parameetriga.

## &DCOP; globaalsete muutujatele

global(QString muutujaNimi)

- Tagastab määratud globaalse muutuja väärtuse. Kui skript käivitatakse &kommander;i aknast, lakkavad kõik skriptiga määratud (mitteglobaalsed) muutujad eksisteerimast pärast skripti töö lõpetamist ega ole seepärast enam kasutatavad muudes skriptides või ka sama väljakutse kordamisel. Globaalne skoop tähendab seda, et muutuja eksisteerib akna iga protsessi jaoks seni, kuni aken suletakse. Neid muutujaid võib igal ajal muuta funktsiooni `@setGlobal` uue väljakutsega.

setGlobal(QString muugujaNimi, QString väärtus)

- Loob muutuja, mis on akna protsessile globaalne ja omistab sellele väärtuse, Väärtuse saab hankida global(QString muutujaNimi) abil või ka uuesti määrata.

## &DCOP; kõigile vidinatele

Järgnev nimekiri on vananenud ja siin ära toodud rohkem ajaloo huvides. Kõigi vidinafunktsioonide ajakohastatud täielikku nimekirja pakub funktsioonibrauser, mille saab avada suvalisest &kommander;i tekstiredaktori aknast alumisele vasakpoolsele nupule vajutades. Need on nüüd vidinafunktsioonid, mitte enam &DCOP;-funktsioonid, aga &DCOP;-funktsioonid avaldatakse KommanderIf &DCOP;-liideses, mida kirjeldati eespool. Selle funktsionaalsuse väljakutsete loomise dialoogid on saadaval meie veebileheküljel.

setText(QString tekst)

- See eemaldab see vidinas näidatava teksti ja asendab selle antava tekstiga.

enableWidget(tõeväärtus enable)

- Lubab või keelab elemendi.

associatedText

- Tagastab määratud vidinaga seostatud teksti. See ei ole sama, mis näidatav tekst. See võib olla @widgetText või tekst ja/või skript, mida kasutatakse näidatava väärtuseni jõudmiseks.

setAssociatedText(QString tekst)

- See määrab &kommander;i vaiketekstistringi. Tavaliselt määratakse selleks @widgetText, et näidata vidinasse sisestatut. Vaevalt sul seda eriti vaja läheb, aga igatahes on see olemas. Saab kasutada kõigi andmeid sisaldavate vidinate korral.

## &DCOP; loendikasti ja liitkasti vidinale

addListItem(QString element, int index)

- Lisab elemendi loendikasti vidinasse määratud indeksiga. Loendi indeks algab nullist. Loendi lõppu lisamiseks anna -1.

addListItems(QStringList elemendid, int index)

- Lisab korraga terve stringide loendi. Loendis tuleb kasutada eraldajana EOL-i (\n - reavahetused). See on hea juhul, kui soovid Bashi muretult loendi tuletamiseks kasutada. Näiteks elementide korral @exec(ls -l ~/projects | grep kmdr) kasutades saad oma projektikataloogi &kommander;i failide nimekirja. Loendi indeks algab nulliga. Loendi lõppu lisamiseks anna -1.

addUniqueItem(QString element)

- addUniqueItem lisab elemendi loendi lõppu ainult siis, kui see on unikaalne.

clearList

- Eemaldab kõik elemendid.

removeListItem(int index)

- Eemaldab antud indeksiga elemendi.

item(int index)

- Tagastab antud indeksiga elemendi teksti.

setCurrentListItem(int index)

- Määrab aktiivse (või valitud) elemendi määratud indeksile. Saab kasutada loendikasti ja liitkasti vidina korral.

## &DCOP; märkekasti ja raadionupu vidinale

setChecked(QString elemendiNimi, tõeväärtus checked)

- Märgib või eemaldab märke märkekasti või raadionupu elemendilt.

## &DCOP; kaardividinale

setCurrentTab(QString elemendiNimi, int index)

- Valib kaardi indeksi järgi kaardividinalde. Indeks algab nulliga.