Ophavsret © 2004 Kommander-udviklingsholdet
Tilladelse er hermed givet til at kopiere, videregive og/eller ændre dette dokument under betingelserne i GNU's Fri Dokumentation License, Version 1.1 eller en vilkårlig senere version publiceret af Free Software Foundation; uden invariante afsnit, uden tekster før omslaget, og uden tekster efter omslaget. En kopi af licensen er inkluderet i afsnittet ved navn " Medvirkende og licens".
Kommander er en samling værktøjer der gør det muligt at lve dynamiske GUI-dialoger, som baseret på deres tilstand, genererer et stykke tekst. Dette stykke tekst kan være en kommando til et program, et stykke kildekode, forretningsdokumenter som indeholder en masse gentaget tekst eller tekstskabeloner osv. Den resulterende tekst kan dernæst udføres som et kommandolinjeprogram (deraf navnet “Kommander”), skrives til en fil, videregives til et script til yderligere behandling og stort set alt hvad man kan tænke sig. Det bedste af det hele? Du skal ikke skrive en eneste linje kode!
Indholdsfortegnelse
Kommander er et visuelt dialogbygningsværktøj som kan udvides til at bygge fuldstændige programmer. Dets primære mål er at oprette så meget funktionalitet som muligt, uden at bruge scriptsprog. Dette medfører følgende funktioner:
Specielle foranstilles med et “@” sådan her @widgetText. De tilbyder specielle funktioner som værdien af en kontrol, funktioner, aliasser, globale variable osv.
DCOP-integration tillader Kommander-dialoger at kontrollere og blive kontrolleret af interaktioner med andre KDE-programmer. Det er en meget kraftfuld egenskab.
Signaler og slot er lidt mindre intuitivt for en ny bruger. Det er under bearbejdelse hvordan vi skal gå videre med dette i den første større udgivelse. Signaler og slot tilbyder en begrænset begivenhedsmodel til når der trykkes på en knap eller en kontrol ændres. I kombination med “BefolkningsTekst” er det dog ret kraftfuldt.
Nøglefacilitet i Kommander-dialoger er at du kan binde tekst (Kommander Text) til en kontrol. Så hvis du har en @kontrol1 og @kontrol2 og de er linjeeditorer, kan du sætte Kommander til at vise deres indhold ved at skrive @kontrol1Tekst i deres Kommander Text område. Så skriver du Hej i @kontrol1 og verden i @kontrol2. En knap kan have strengen Mit første @kontrol1 @kontrol2 program, i Kommander. Kører du så denne dialog fra en konsol udskrives Mit første Hej verden program, i Kommander
Forhåbentlig begynder du at kunne se en del af potentialet. Kommander tilbyder en meget hurtigere designmodel for simple programmer fordi det lader dig koncentrere dig om mere grundlæggende og naturlige koncepter istedet for programmeringssproget. I computere er sprog en måde at definere koncepter og som sådan er det et lag mellem koncept og implementering og som kan hæmme fremskridt. Kommander forsøger at minimere dette lag.
Kommander forsøger også at bygge videre på standarder. Det er lavet med et Qt™-grundlag og opretter *.ui-filer som omdøbes til *.kmdr. Det kan let importere en hvilken som helst KDE-kontrol og dette kan gøres med plugin uden at skulle rekompilere Kommander.
Kommanders anden markante faktor er måden hvorpå behovet for sprog håndteres. Computersprog kan være vidunderlige, men de har tendens til at have deres egne dogmer og fanatikere, der ofte forsøger at give det en fordel for GUI i et integreret udviklingsmiljø. Ironisk nok er modtagelsen af den slags IDE'er begrænset af antallet af mennesker der er villige til at begynde at arbejde med et nyt sprog.for at få adgang til ny og eftertragtet funktionalitet. Det er ikke rimeligt at forvente at man er nødt til at skifte mellem dusinvis af sprog for at få adgang til forskellige funktionaliteter. Ved at være sprogneutral og ved at tillade en Kommander-dialog at blive udvidet vha. scriptsprog, sætter Kommander sig i en unik situation for en bredspektret modtagelse. Der kan benyttes flere scriptsprog i en enkelt dialog og applikationer kan overtages af mennesker der benytter et andet rpogrammeringssprog end den oprindelige forfatter, så det gradvis kan konverteres og udvides. Nye kontroller og funktioner kan på ingen tid laves i alle tilgængelige sprog.
Vi håber Kommander får den udviklerstøtte og anerkendelse der skal til for at nå det potentiuale den rummer. Vores slutmål er at gøre Kommander brugbar for nybegyndere så de kan udvide og flette deres appliktioner sammen. På samme tid skulle det gerne blive til et godt værktøj til fremstilling af prototyper. Det åbner også døren for open source på en ny måde. Vi ved at mennesker kan udvide vores GPL-licenserede programmer, men det er stadig et faktum at meget få har evnerne. Med Kommander skulle det antal gerne multipliceres. Nogle applikationer er måske mest logiske som en Kommander-applikation. Vi bruger den allerede på nogle områder for at give mulighed for udvidbarhed i Quanta Plus
Vi håber du får glæde af Kommander. Hjælp os gerne med fejlrapporteringer og eksempeldialoger ,såvel som hvilke som helst ønsker du hr. Du kan melde dig til vore brugerliste for at hjælpe med at udvikle Kommander-applikationer på http://mail.kdewebdev.org/mailman/listinfo/kommander
Bedste hilsner fra Kommander udviklingsholdet.
Kommander blev oprindeligt designet omkring et simpelt koncept der har vist sig næsten revolutionerende blandt visuelle designværktøjer. Typisk tillader disse værktøjer at man kan oprette dialoger og måske endda hovedvindue-grænseflader. Hovedvindue-grænseflader er naturligvis et programs hovedgrænseflade der typisk indeholder menuer, værktøjslinjer, statuslinje og programarealet. Dialoger er børnevinduerne som typisk ikke har menuer og således navngivet fordi deres formål er at “have en dialog” eller udveksle information mellem dig og hovedprogrammet. Elementerne i en dialog kaldes “kontroller” og du kobler dit program til disse kontroller. Kommander er anderledes pga. sin non-programmatiske natur i denne henseende. Det bruger konceptet om at associere tekst med kontrollerne på dialogen. Til at begynde med kaldtes dette “Associeret tekst” men kaldes nu “Kommander tekst”. Kontroller i Kommander-dialoger kan indeholde indholdet af andre kontroller gennem en reference og en kontrol kan referere sit eget indhold vha. en “Speciel” som ser således ud: @kontrolTekst. Specielle er kommandoer med specielle betydning i Kommander. Så hvis du har oprettet en dialog med to linjeEditorkontroller og navngivet den første “Fornavn” og den anden “Efternavn”, kan du oprette en knap og sætte dens Kommandertekst til “Mit navn er @Fornavn @Efternavn”. Du vil være nødt til at sætte @kontrolTekst i for- og efternavnskontrollerne, husker du? Vi må fortælle Kommander at referere til teksten i dem. Du kan køre dette fra en Konsol og den vil så udskrive strengen for dig. Så den vil referere fornavnet sådan her: @Fornavn -> hent kontrollen med navnet Fornavn(@Fornavn) -> @kontrolTekst -> hent indholdet af linjeEditorkontrollen. Så i dette tilfælde returnerer @Fornavn “Eric”: @fornavn -> @kontrolTekst -> “Eric”.
Dette er kernen af Kommander. Det er hvad du kan gøre med disse funktionaliteter der gør det interessant. For det første er det værd at bide mærke i, at sammenlignet med den almindelige fremgangsmåde i et sprogbaseret værktøj, er der ikke behov for programmeringsudtryk i Kommander, for at definere disse operationer. Dette gør Kommander hurtig for udviklere. For slutbrugere er det meget simplere end at lære sprogkontruktioner. For alle betyder det at man kan fokusere på opgaven og ikke hele tiden sidde med referencedokumentationen i hånden. I starten, når folk introduceres for et værktøj som Kommander, er det første spørgsmål altid “Hvad kan jeg bruge sådan et lækkert værktøj til?” Det viser sig at strengmanipulation bruges sådan ca. overalt.
Så hvad kan Kommander? Her er en liste kogt ned til de mest grundlæggende funktioner. Kommander kan:
Videregive strenge til et kaldende program gennem stdout.
Kald eksekverbare programmer.
Brug DCOP for at kommunikere med KDE-programmer.
Hvis du ikke er programmør, vil du måske gerne have en forklaring for lægmand. I den første, hvis du starter Kommander fra en konsol, så er konsol det kaldende program. Det er et forældre barn forhold der. At sende en besked til en konsol gøre med barnets standardudskrift (sdtout), det hedder sådan fordi der også er fejludskrift. Dette er interessant fordi nogle programmer som Quanta Plus beruger stdout for at modtage information fra programmer de starter. Så Kommander dialoger kan udskrive deres tekststrenge direkte i Quanta Plus' editor hvis de kaldes fra Quanta Plus Det betyder at Kommander-dialoger kan være brugbare udvidelser til programmer.
Det andet tilfælde er når man kalder en eksekverbar. Et hvilket som helst program der kører på dit system er eksekverbart. Selv et scriptprogram køres af scriptets fortolker, så teknisk set eksekveres det også. Kommander kan køre kommandoer ligesom konsollen, selv hvis du kører det fra menuen. Hvis du f.eks. ville åbne The GIMP ville du have en knap der afleder strengen “gimp” og putte den i en speciel på denne måde: @exec(gimp). På ingen tid vil du se The GIMP åbnes når du bruger dette. Du kan også exec “ls -l”, men du ville kun kunne se uddata når du kører det i en konsol.
Det tredje tilfælde er meget interessant. DCOP er kort for KDE's DesktopCommunicationProtocol og det er meget kraftigt.Prøv at køre kdcop-programmet og kig lidt på det. Du finder hurtigt ud af at i alle KDEprogrammer der er opbygget efter standarderne, har ting der sker med DCOP og i de veldesignede sker der rigtig meget. Med DCOP kan du sspørge efter al mulig information såvel som at sætte værdier for kontroller og meget andet. Der er et afsnit om at bruge DCOP i denne manual. Kommander kan sende DCOP til et hvilket som helst KDE-program, såvel som at blive kontrolleret af DCOP. Faktisk kan du sende DCOP fra kommandolinjen til et hvilket som helst KDE-program. Så hvad er al den snak til for? Sagen er at hvis du vil udføre mange kommandoer, finder du hurtigt ud af at kommandolinjen og DCOP er fine til korte kommandoer, men kan give forsinkelser når det f.eks. kaldes fra en løkke et par hundrede gange. Det er derfor Kommander har en @dcop speciel, fordi den er ca. 1000 gange hurtigere. Fordi Kommander kan sende og modtage DCOP, kan DCOP bruges til at scripte Kommander. Det er også derfor vi har en lokal DCOP-speciel @ldcop, som tillader dig at skrive meget mindre for at bruge en kommando.
Er dette er alle kernekoncepterne i Kommander? Nej men det burde være en hjælp til dig for at finde ud af hvordan det virker, så det som vi har beskrevet ikke lyder som rent volapyk. Der er et par koncepter mere. Kommander bruger signaler og slot til at håndtere begivenheder. En begivenhed i et program betyder sådan set bare “der skete noget” som oprettelsen af en kontrol eller en ændring af noget tekst. Disse ændringer “udsender signaler” og du kan forbinde disse signaler til en modtagende slot som så gør et eller andet når begivenheden sker.En måde at bruge Kommander er søsteren til Kommanders Tekst, “BefolkningsTekst” BefolkningsTekst, befolker en kontrol når den kaldes. Ligesom KommanderTekst, kan BefolkningsTekst indeholde tekststrenge eller scripter.
Nu har du fået lært de simple ting i Kommander så du kn komme i gang. Vi forsøger at holdet antallet af specielle på et lavt niveau og vi bruger DCOP rigtig meget. Idéen er at vi vil holde Kommanders fordele så konsistente og strømlinede som muligt. Du vil opdage at du kan indarbejde et hvilket som helst scriptsprog i Kommander når behovet opstår og endda flere scriptsprog i en dialog. Resten af informtionen i dette dokument antager at du er bekendt med de her præsenterede koncepter og udtryk. Eksemplerne og gennemgangene er også meget brugbare når man skal forstå hvad Kommander kan.
Editoren er baseret på Qt™ Designer et værktøj til design og implementering af brugergrænseflader, lavet af Trolltech. Vi har modificeret Qt™ Designer på disse punkter:
Grænsefladen er meget simplere
Bygget med vore egne kontroller
Tilføjet muligheden for at indstille Kommander Text
Forskellige andre overfladiske ændringer
Dem der allerede er dus med Qt™ Designer har nemt ved at bruge Kommander Editor.
Værktøjslinjer indeholder et antal knapper for hurtigadgang til forskellige funktioner.
Filoversigten viser alle filerne. Brug søgefeltet for hurtigt at skifte mellem filerne.
Objektsøgeren giver overblik over sammenhængene mellem kontrollerne i en formular. Det er brugbart til at markere kontroller i en formular med et komplekst layout.
Egenskabseditoren er stedet hvor man ændrer kontrollers opførsel og fremtoning.
Dialogeditoren er stedet hvor dialoger oprettes og redigeres.
Opretter en ny dialog
Søg i filsystemet for at åbne en eksisterende dialog
Lukker den aktive dialog
Gemmer den aktive dialog
Gemmer den aktive dialog med et andet navn
Gemmer alle åbne dialoger
Hurtigliste over de sidste filer du har åbnet. Denne liste vil ændre sig hver gang du åbner en fil som ikke er på listen endnu. Den ældste fjernes fra listen først.
Afslutter Kommander
Fortryd den seneste handling som udførtes.
Gør den sidste fortrudte handling om.
Klip det aktuelle element og placér det på klippebord.
Kopiér det aktuelle element til klippebordet.
Indsæt klippebordets indhold ved nuværende markørposition.
Slet det aktuelle element.
Markér alle elementer i den aktuelle dialog.
Kontrollerer at alle acceleratorer kun benyttes én gang.
Viser vinduet der skal redigeres og opretter funktioner og slot.
Viser vis- og redigér forbindelser-dialogen.
Viser formularindstillingsdialogen.
Viser indstillingsdialogen.
Lukker den aktuelle dialog.
Lukker alle dialoger.
Starter KDE's Hjælpesystem startende med hjælpesiderne for Kommander (dette dokument).
Ændrer musemarkøren til en kombination af en pil og et spørgsmålstegn. Klik på punkter indenfor Kommander vil åbne et hjælpevindue (hvis der findes et for dette punkt) der forklarer punktets funktion.
Åbner problemrapport dialogen hvor du kan rapportere en fejl eller bede om en “ønskeseddel” egenskab.
Dette vil vise version og forfatterinformation.
Dette viser KDE versionen og anden basal information.
Eksekutoren der hedder kmdr-executor, kører Kommander scripter. Den indlæser kmdr
-filer og producerer dynamisk en fuldt funktionel dialog.
C++-udviklere kan nemt bruge KmdrDialogInstance-klassen i deres C++-programmer, så eksekveringsfunktionaliteten er indlejret i deres program. Dette gør det overflødigt at køre et eksternt eksekveringsprogram. For almindelige dialoger, er omkostningerne ved dialogoprettelsen minimal, men oprettelsen af KDE-applikationen kan medføre at dialogen forsinkes en smule.
Byggestenene til Kommander-dialoger er kontrollerne. De er præcis som alle andre kontroller i Qt™ og KDE-bibliotekerne, bortset fra at de har noget ekstra funktionalitet, som tillader dem at have en “tekstassociation”. Tekst er associeret med kontrollens tilstand eller dens befolkningsslot. Antallet af tilstande afhænger af kontrollen. Har en kontrol kun én tilstand, kaldes denne tilstand for standardtilstanden.
Kontroltekst bla bla
Dialogen har to specielle ltilstande til Kommandertekst. Disse er Initiate og Destroy. De eksekveres når dialogen initieres og når den nedlægges. De beskytter mod det der kaldes “race” problemer ved åbning og betyder at du ikke behøver at udføre nogen specielle procedurer ved nedlægning af dialoger.
En container der organiserer knapper i en gruppe. Der kan tilknyttes en valgfri titel ved at bruge titelegenskaben. Rammen kan justeres med lineWidth-egenskaben. Knapgruppen kan indstilles til eksklusiv ved at sætte exclusive-egenskaben til true. Det betyder at når der trykkes på én slå til-/fra-knap, sættes alle de andre slå til/fra-knapper til fra, med undtagelse af radioknapper som altid er gensidigt udelukkende, selv når gruppen er non-eksklusive. Radioknapper kan sættes til non-eksklusiv ved at bruge egenskaben radioButtonExclusive. (Jeg er ikke så sikker på at denne egenskab rent faktisk fungerer).
Knapgrupper har en tilstand, standard.
Kontrolteksten til en knapgruppe er tekstassociationerne til hver knap i den rækkefølge de forekommer i knapgruppen.
Et felt der kan afkrydses til og fra. Det kan også være delvist afkrydset hvis tristate-egenskaben er sat til true. Etiketten associeret med afkrysningsfeltet sættes i text-egenskaben. Ved at sætte checked-egenskaben er afkrydsningsfeltet afkrydset til at starte med.
Et afkrydsningsfelt har tre tilstande, afkrydset, delvist afkrydset og ikke-afkrydset.
Kontrolteksten til et afkrydsningsfelt er text-egenskabens værdi.
En knap der når der klikkes på den, udfører sin tekstassociation og dernæst lukker dialogen. Etiketten på knappen sættes med text-egenskaben. Uddata fra tekstassociationen, vises gennem ekoes til stdout hvis writeStdout-egenskaben er sat til true. Knappen kan være standardhandlingen for dialogen hvis default-egenskaben er sat til true.
Lukknapper har en tilstand, standard.
Der er ingen kontroltekst associeret med en lukkeknap.
Kombinationsboks er en markeringskontrol der kombinerer en knap og en pop op-menu. Den viser brugeren aktuelle valg fra en liste af valgmuligheder på minimalt plads. Punkter tilføjes til listen ved at bruge edit-vinduet. Hvis editable-egenskaben er sat til true, kan brugeren tilføje vilkårlige strenge.
Kombinationsbokse har en tilstand, standard.
Kontrolteksten til en kombinationsboks, er teksten i det valgte punkt.
En knap der, når der klikkes på den eksekverer sin tekstassociation. Etiketten på knappen sættes med text-egenskaben. Uddata fra tekstassociationen ekoes til stdout hvis writeStdout-egenskaben er sat til true. Knappen kan være standardhandlingen for dialogen hvis default-egenskaben er sat til true.
Eksekvérknapper har en tilstand, standard.
Der er ingen kontroltekst associeret med Eksekvérknapper.
Filvælgerkontrollen kombinerer en linjeeditor med en knap, der når der klikkes på den viser brugeren en dialog hvori der kan vælges filer/mapper. Filen/mappen der vælges gemmes i linjeeditoren. Filvælgertypen kan sættes med selectionType-egenskaben. Der følgende typer til rådighed, Open, Save, Directory. Flere filer/mapper kan vælges hvis selectionOpenMultiple-egenskaben er sat til true. Der kan sættes en overskrift for filvælgeren med selectionCaption-egenskaben. Den vises som dialogens vinduestitel. Hvis ikke der angives nogen overskrift, vises selection-typen som titel istedet. Man kan begrænse filerne der vises i dialogen ved at bruge selectionFilter-egenskaben.
Filvælger har en tilstand, standard.
Kontrolteksten til en filvælger er teksten der findes i linjeeditoren (filen valgt af brugeren).
En containerkontrol der indeholder andre kontroller. Rammen justeres med lineWidth-egenskaben. En titel kan tilføjes ved at sætte title-egenskaben.
Gruppefelter har en tilstand, standard.
Kontrolteksten for et gruppefelt er tekstassociationerne af hvert af kontrollerne i containeren. De ordnes efter rækkefølgen hvormed de forekommer inde i gruppefeltet.
En linjeeditorkontrol er en enkeltlinjet teksteditor. Den tillader brugeren at indtaste og ændre en enkelt tekstlinje. Tekst der skal stå i linjeeditoren fra begyndelsen kan sættes i text-egenskaben. Kontrollen kan sættes til kun læsetilladelse med readOnly-egenskaben. Der er tre tilstande til kontrollen, Normal, NoEcho og Password. Tilstanden sættes med echoMode-egenskaben.
Linjeeditorer har en tilstand, standard.
Kontrolteksten for linjeeditortekst er teksten indeholdt i editoren.
En listefeltkontrol giver en liste af markérbare punkter. Normalt er et eller slet ingen punkter markeret. Denne opførsel kan ændres vha. selectionMode-egenskaben. Punkter tilføjes til listefeltet vha. edit-vinduet.
Et listefelt har kun én tilstand, standard.
Kontrolteksten for et listefelt er punkterne i listefeltet. @selectedWidgetText returnerer kun aktuelt markerede punkter.
Denne kontrol kan nu udnytte Kommander. Funktionelt er den ligesom trævisningskontrollen så se venligst denne.
En simpel kontrol der indeholder en billed- eller en tekstetiket. Billedet der skal vises sættes i pixmap-egenskaben. Teksten sættes i text-egenskaben. Kun en af de to egenskaber kan sættes ad gangen. (Jeg tror i hvertfald at jeg kun kan få editoren til at sætte dem en ad gangen). Hvis scaledContents-egenskaben er sat til true, bliver billedet skaleret så det passer i kontrollens størrelse. Tekstformatet kan indstilles med textFormat-egenskaben.
Denne kontrol kan ikke udnytte Kommander og har derfor ingen tilstande eller kontroltekst.
En knap der kan tjekkes eller aftjekkes, normalt brugt i knapgrupper til at foretage et eksklusivt valg. En etiket associeret med knappen kan sættes i text-egenskaben. En knap kan initieres så den er tjekket fra begyndelsen, ved at sætte checked-egenskaben til true. Hvis alle radioknapper i en knapgruppe har checked-egenskaben sat til true, så bliver det den sidste knap der sættes til tjekket.
Radioknapper har to tilstande, tjekket og aftjekket.
Der er ingen kontroltekst associeret med radioknapper.
Denne kontrol giver en teksteditor der tillader simpel tekstformatering.
RichText-editor har en tilstand, standard.
Kontrolteksten til en RichText-editor er teksten indeholdt i editoren i rich text-format. Markeret tekst kan returneres med @selectedWidgetText.
En kontrol der tillader brugeren at ændre en heltalsværdi ved enten at trykke på op- og ned-pilene eller ved at indtaste værdien i feltet. Minimum og maksimumværdier til kontrollen kan indstilles med minValue og maxValue-egenskaberne. specialValueText-egenskaben bruges til at sætte den tekstværdi der skal vises i stedet for minimumværdien.
Denne kontrol har kun en tilstand, standard.
Kontrolteksten til et heltalsrullefelt, er det aktuelle viste heltal.
En knap der når der trykkes på den, kører en anden Kommander-dialog. Dialogen der skal køres sættes i kmdrFile-egenskaben. Er standardegenskaben sat til true, køres dialogen hvis der trykkes enter når dialogen har fokus. Jeg tror man også kan benytte den som container. Jeg er nødt til at lege lidt mere med det her.
Underdialog har en tilstand, standard.
Kontrolteksten for en underdialog er teksten associeret med dialogen den eksekverer.
Det skulle have indeholdt dialogen, men er nu kasseret til fordel for det nye projektkoncept. Skal vi lade det blive ved @dialog()
i dens Kommander-tekst eller fjerne den helt? Det er ikke rigtigt som det er nu.
En kontrol der giver flere faneblade, der hver især kan indeholde flere kontroller.
En simpel multilinje teksteditor.
En simpel kontrol der indeholder et stykke tekst. Denne kontrol lader dig også angive et billede. Ok, editoren siger de begge er QLabels. Hvorfor har vi to kontroller som ser ens ud men har forskellige navne. Skulle gerne ordnes i A7.
Ved alfa 6 er denne kontrol delvist til rådighed og kan sættes ved at bruge eksterne DCOP-kald.
En kontrol der giver en liste i form af en træstruktur. Denne kontrol er nu fuldstændiggjort så der kan tilføjes eller fjernes punkter, siden alfa 6. Du kan tilføje indre (børn) punkter og multisøjledata. Den aktulle begrænsning er at du ikke kan ændre søjler. For at tilføje en barneknude bruges “/” som adskiller. For at tilføje søjledata bruges escape-tabulator “\t” -tegnet, mellem søjler.
Specielle er funktioner der behandles af Kommander. Du skal være opmærksom på at indtil Kommander har en fuldstændig fortolker, vil alle specielle eksekveres først og derefter eksekveres scriptet. I de fleste tilfælde er dette ikke et problem, men somme tider opstår der problemer.
@dcop(appId
, objekt
, funktion
, argumenter
)
Lav et DCOP-kald. @DCOP(“kmail”, “KMailIface”, “checkMail()”, “”)
@dcopid
Processens DCOP-ID (kmdr-executor-@pid)
@dialog(dialog
[,parametre
])
Starter den givne kommander-dialog. Dialogen søges i dialogkataloget og i det aktuelle katalog, i den rækkefølge. Dette kommer før kaldet til executoren og sætter standardkataloget til den Kommander-programmet findes i. Parametre kan overføres i sædvanlig UNIX-stil eller overføres som “variabel=værdi”. Du kan derefter finde overførte parametre i den globale samling. @global(variable) ville returnere “værdi”.
@env(miljøVariabel
)
Udvides til den givne miljøvariabel. @env(PWD) udvides til $PWD. Husk at “$” er en del af skallen og ikke må bruges.
@exec(kommando
)
returnerer uddata ved eksekveringen af den givne kommando @exec(ls -l).
@execBegin ... @execEnd
ligesom @exec
, men understøtter shebang og multilinje scripter. Dette servicerer forskellige scriptsprog, enten ved at erklære dem eller ved at bruge en shebang.
@execBegin(php)
@execBegin
#!/usr/bin/php
Den første bruger navnet på PHP-kørbare. Kommander søger i PATH efter php og ser efter et sted uden din sti, om den er registreret i Kommander hvis ikke den findes. Hvis ikke før den brugeren opmærksom på at den ikke blev fundet. Det andet eksempel bruger den klassiske “shebang” som kan have nogle fordele og problemer. Hvis du har en betaudgave af PHP5 i f.eks. /usr/local/bin
som ikke ville blive fundet fordi der søges i /usr/bin
er dette brugbart. Hvis du derimod distribuerer dialogen til en som kun har PHP i /usr/local/bin
ville den ikke blive fundet når der bruges en shebang. Så at bruge shebang skal tages med forbehold og det anbefales at bruge den eksekverbare hvis du deler filer.
@global(variabel
)
udvides til værdien af den givne globale variabel.
@null
Returnerer null. Nu da Kommander undersøger for tom widgetText på kørselstidspunktet, forebygger dette, fejlagtige fejl hvis en kontrol har en tilstand der ikke er sat.
@parentPid
Forældreprocessens PID.
@pid
Processens PID.
@readSetting(nøgle
, standardVærdi
)
læser en værdi fra kommanderrc
@selectedWidgetText
det markerede indhold i en kontrol som kan vise mere end en værdi, som listekontroller
@setGlobal(variabel
, værdi
)
Sætter den globale variabel til den givne værdi.
@widgetText
en kontrols indhold
@writeSetting(nøgle
, værdi
)
skriv værdi til kommanderrc
@Array.values(array
)
Returnerer EOL-adskilt liste af alle værdier i arrayet. Kan bruges til at gennemgå et array.
@Array.keys(array
)
Returnerer en EOL-adskilt liste af alle nøgler i arrayet.
@Array.setValue(array
, nøgle
, værdi
)
Sætter en nøgle og en værdi til et element i et array. Eksisterer der ikke et array i forvejen, oprettes der et.
@Array.clear(array
)
Fjerner alle elementer i et array.
@Array.count(array
)
Returnerer antallet af elementer i arrayet.
@Array.value(array
,nøgle
)
Returnerer værdie associeret med den givne nøgle.
@Array.remove(array
,nøgle
)
Fjern element med given nøgle fra arrayet.
@Array.fromString(array
,streng
)
Tilføjer alle elementer i strengen til arrayet. Strengen skal have formatet:nøgle\tværdi\n."
@Array.toString(array
,streng
)
"Returnerer alle elementer i array i nøgle\tværdi\n format."
@File.read(fil
)
Returnerer indhold af den givne fil.
@File.write(fil
streng
)
Skriv given streng til en fil.
@File.append(fil
streng
)
Tilføj given streng til slutningen af en fil.
@String.length(streng
)
Returnerer antal tegn i strengen.
@String.contains(streng
,understreng
)
Undersøger om strengen indeholder den givne understreng.
@String.find(streng
)
Returnerer en understrengs position i strengen eller -1 hvis den ikke findes."
Dette får en valgfri startposition angivet med et heltal til søgning efter næste, i alfa 6.
@String.left(streng
, heltalt
)
Returnerer første n tegn i strengen.
@String.right(streng
, heltal
)
Returnerer sidste n tegn i strengen.
@String.mid(streng
, heltal startposition
, heltal slutposition
)
Returnerer strengens understreng, begynder fra given position.
@String.remove(streng
, understreng
)
Fjerner alle forekomster af den givne understreng.
@String.replace(streng
, understreng find
, understreng erstat
)
Erstatter alle forekomster af en given understreng med den givne erstatningsstreng.
@String.upper(streng
)
Konverterer strengen til store bogstaver.
@String.lower(streng
)
Konverterer strengen til små bogstaver.
@String.compare(streng
, streng
)
Sammenligner to strenge. Returnerer 0, hvis de er ens, -1 hvis den første er mindst, 1 hvis den første er størst.
@String.isEmpty(streng
)
Undersøger om strengen er tom.
@String.isNumber(streng
)
Undersøger om strengen er et gyldigt tal.
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.
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
.
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.
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.
Aktiverer eller deaktiverer en kontrol.
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.
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.
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.
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 tilføjer et element til slutningen af listen, men kun hvis det er unikt.
Fjerner alle indgange.
Fjerner elementet ved det angivne indeks.
Returnerer elementets tekst ved det angivne indeks.
Sætter det aktuelle (eller markerede) element til det angivne indeks. Gælder for listefelt- og kombinationsbokskontroller.
Afkrydser eller fjerner afkrysdning i afkrydsningsfelt- og radioknapkontroller.
Med Kommander kan du let oprette nye kontroller baseret på non-Kommanderkontroller. Fremgangsmåden er at aflede din nye Kommanderkontrol fra Qt™/KDE-kontrollen du gerne vil integrere med Kommander og så også fra KommanderWidget-klassen. Tilsidesættelse af metoder i denne klasse giver Kommanderkontrollen sin funktionalitet.
Det meste af koden i en Kommanderkontrol, er blot skabelonkode. Derfor kan du benytte widgetgenerator.kmdr Kommander dialogen til at generere det meste af Kommanderkontrollens kode for dig. Det eneste du skal gøre er at udfylde de vigtige dele af din kontrol, som f.eks tilstandsinformation, kontroltekst ovs.
Lad os forestille os at vi vil oprette en ny linjeredigeringskontrol til Kommander, baseret på KDEkontrollen KLineEdit. Ved at bruge Kommanderkontrolgeneratordialogen får vi noget der ligner det her udskrevet til inkluderingsfilen:
Viser hvordan man bruger forbindelser/slot til at håndtere begivenheder. Både befolknings- og standardslot bliver brugt.
Viser hvordan man bruger @readSetting @writeSetting funktionerne til at skrive/genskabe kontrolindhold. Der vises også hvordan man bruger populate() slot til at initialisere kontrolindhold.
Viser hvordan du kan tilføje tekst til TextEdit og hvordan man kan bruge det til at vise formateret tekst.
Viser hvordan du kan videregive parametre til Kommander-dialog vi kommandolinjen. Viser også hvordan man ændrer listers indhold og knaptekst.
Viser hvordan du bruger 'initialisering' for at 'nedlægge' scripter fra en hoveddialog, til at initialisere og genskabe indstillinger.
Dette dokument er muligvis blevet opdateret siden din installation. Du kan finde den nyeste udgave på http://www.klid.dk/kde/da/kdewebdev/.
Kommander Udviklingsholdet
(consume AT optusnet.com.au)
Udvikler og dokumentation
(tik AT acm.org)
Dokumentation
(sequitur AT kde.org)
Projekthåndtering og dokumentation
(amantia AT kde.org)
Udvikler
(mrudolf AT kdewebdev.org)
Udvikler
Kommander©2004 Kommander Udviklingsholdet.
Kommander Brugerhåndbog © 2004 Kommander Udviklingsholdet.
Dansk oversættelse Rune Rønde Laursen (runerl AT skjoeldhoej.dk)
Dokumentation er udgivet under betingelserne i GNU Free Documentation License.
Dette program er udgivet under betingelserne i GNU General Public License.
Indholdsfortegnelse
Kommander er en del af KDE-projektet http://www.kde.org/.
Kommander findes i kdewebdev-pakken på ftp://ftp.kde.org/pub/kde/, hoved FTP-stedet for KDE-projektet.
For at kompilere og installere Kommander på dit system, skal du skrive følgende i basismappen for distributionen for Kommander :
%
./configure
%
make
%
make install
Idet Kommander bruger autoconf og automake skulle du ikke få problemer med at kompilere den. Hvis du skulle løbe ind i problemer så rapportér dem til KDE's e-post-lister.
Would you like to make a comment or contribute an update to this page?
Send feedback to the KDE Docs Team