Kapitel 13. Scripting og skrivning af udvidelsesmoduler

Indholdsfortegnelse

1. Udvidelsesmoduler
1.1. Indledning
1.2. Brug af udvidelsesmoduler
1.3. Installation af nye udvidelsesmoduler
1.4. At skrive udvidelsesmoduler
2. Brug af Script-Fu-programmer
2.1. Script-Fu?
2.2. Installation af Script-Fu-programmer
2.3. Et godt råd
2.4. Forskellige slags Script-Fu-programmer
3. En vejledning til Script-Fu
3.1. Getting Acquainted With Scheme
3.2. Variables And Functions
3.3. Lists, Lists And More Lists
3.4. Your First Script-Fu Script
3.5. Adding Additional Functionality
3.6. Extending The Text Box Script
3.7. Your script and its working
4. A Python plug-in writing Tutorial
4.1. The basic elements of a plug-in for GIMP

1. Udvidelsesmoduler

1.1. Indledning

En af de bedste ting ved GIMP er, hvor let programmets funktionalitet kan udvides ved hjælp af udvidelsesmoduler. Udvidelsesmoduler til GIMP er eksterne programmer, der kører under kontrol af GIMP-programmet og interagerer meget tæt med det. Udvidelsesmoduler kan manipulere billeder på næsten enhver måde, som brugerne kan. Deres fordel er, at det er meget lettere at tilføje en kapacitet til GIMP ved at skrive et lille udvidelsesmodul end ved at ændre den store, komplekse kode, der udgør GIMP-kernen. Mange værdifulde udvidelsesmoduler har C-kildekode, der kun indeholder 100–200 linjer eller deromkring.

Flere dusin udvidelsesmoduler er inkluderet i GIMP-hoveddistributionen og installeres automatisk sammen med GIMP. De fleste af dem kan tilgås via menuen Filtre (faktisk er alt i denne menu et udvidelsesmodul), men et antal er placeret i andre menuer. I mange tilfælde kan du bruge en uden nogensinde at indse, at det er et udvidelsesmodul. For eksempel er funktionen “Normalisér” til automatisk farvekorrektion faktisk et udvidelsesmodul, selvom der ikke er noget i dets virkemåde, som røber det. Selv import og eksport af billeder sker med udvidelsesmoduler.

Alle kan skrive et GIMP-udvidelsesmodul og gøre det tilgængeligt online. Der er mange nyttige udvidelsesmoduler, der kan fås på denne måde. Nogle af dem er beskrevet andetsteds i brugervejledningen.

Med denne frie tilgængelighed kommer en vis grad af risiko. Det faktum, at alle kan frigive udvidelsesmoduler, betyder, at der ikke er nogen effektiv kvalitetskontrol. De udvidelsesmoduler, der distribueres med GIMP, er alle blevet testet og justeret af udviklerne. Yderligere udvidelsesmoduler, der er tilgængelige online, kan være blevet hacket sammen på et par timer og derefter forladt. Nogle skabere af udvidelsesmoduler er ligeglade med robusthed, og selv for dem, der gør det, er deres evne til at teste på en række forskellige systemer i forskellige situationer ofte ret begrænset. Når du henter et udvidelsesmodul, får du dybest set noget gratis, og nogle gange får du præcis, hvad du betaler for. Dette er ikke for at afskrække dig, bare for at sikre, at du forstår, at ikke alle udvidelsesmoduler, der er tilgængelige online, leverer, hvad du forventer af dem.

[Advarsel] Advarsel

Udvidelsesmoduler, der er fuldgyldige eksekverbare programmer, kan gøre alle de ting, som ethvert andet program kan gøre. Dette inkluderer installation af bagdøre på dit system eller på anden måde kompromittering af dets sikkerhed. Installér ikke et udvidelsesmodul, medmindre det kommer fra en kilde, du har tillid til.

[Bemærk] Bemærk

Udvidelsesmoduler skrevet til en bestemt version af GIMP fungerer muligvis ikke altid godt i andre versioner. Også selvom holdet bag GIMP generelt forsøger at minimere ændringer, der påvirker udvidelsesmoduler. Normalt er den eneste gang, du kan forvente alvorlige problemer med udvidelsesmoduler, når en ny stor version af GIMP lanceres. Når et udvidelsemodul, der er lavet til en ældre version, ikke længere fungerer korrekt, skal det porteres. Nogle gange er det let, nogle gange ikke. Før du prøver at installere et udvidelsesmodul, skal du sørge for, at det er kompatibelt med din version af GIMP.

1.2. Brug af udvidelsesmoduler

For det meste kan du bruge et udvidelsesmodul som ethvert andet GIMP-værktøj uden at skulle være opmærksom på, at det er et udvidelsesmodul. Men der er et par ting ved udvidelsesmoduler, der er værd at vide.

Den ene er, at udvidelsesmoduler generelt ikke er så robuste som GIMP-kernen. Når GIMP går ned, betragtes det som en meget alvorlig ting: Det kan koste brugeren en masse problemer og hovedpine. Når et udvidelsesmodul går ned, er konsekvenserne normalt ikke så alvorlige. I de fleste tilfælde kan du fortsætte med at arbejde uden at bekymre dig for meget om det.

[Bemærk] Bemærk

Fordi udvidelsesmoduler er separate programmer, kommunikerer de med GIMP på en særlig måde: Udviklerne af GIMP kalder det at tale over en ledning. Når et udvidelsesmodul går ned, bryder kommunikationen sammen, og du kan muligvis se en fejlmeddelelse om en ledningslæsefejl.

[Vink] Vink

Når et udvidelsesmodul går ned, giver GIMP dig en meget ildevarslende besked, der fortæller dig, at udvidelsesmodulet muligvis har efterladt GIMP i en beskadiget tilstand, og du bør overveje at gemme dine billeder og afslutte. Strengt taget er dette helt korrekt, fordi udvidelsesmoduler har beføjelse til at ændre næsten alt i GIMP, men erfaringen har vist, at det faktisk ret sjældent sker, og mange brugere fortsætter bare med at arbejde og bekymrer sig ikke om det. Vores råd er, at du simpelthen tænker over, hvor meget besvær det ville give dig, hvis noget gik galt, og vejer det mod oddsene.

På grund af den måde udvidelsesmoduler kommunikerer med GIMP på, har de ingen mekanisme til at blive informeret om ændringer, du foretager i et billede, efter at udvidelsesmodulet er startet. Hvis du starter et udvidelsesmodul og derefter ændrer billedet ved hjælp af et andet værktøj, kan udvidelsesmodulet gå ned. Selvom det ikke gør det, kan det medføre forkerte resultater. Du bør undgå at køre mere end ét udvidelsesmodul ad gangen på et billede og undgå at gøre noget ved billedet, indtil udvidelsesmodulet er færdig med at arbejde på det. Hvis du ignorerer dette råd, kan du ikke kun ødelægge billedet, du kan også forstyrre fortrydelsessystemet, så du ikke kan genoprette tilstanden fra før fejlen.

1.3. Installation af nye udvidelsesmoduler

De udvidelsesmoduler, der distribueres med GIMP, kræver ikke installation. Udvidelsesmoduler, som du selv henter, gør. Normalt er standardplaceringen i GIMPs brugermappe i en mappe under /plug-ins, hvor mappenavnet skal være det samme som udvidelsesmodulets filnavn. Du kan finde standardplaceringerne, hvor GIMP søger efter udvidelsesmoduler, i indstillingerne for Datamapper. Der kan du også tilføje nye placeringer, hvor GIMP skal lede efter udvidelsesmoduler. Der er flere scenarier, afhængigt af hvilket styresystem du bruger, og hvordan udvidelsesmodulet er struktureret.

1.3.1. Linux-/Unix-lignende systemer

De fleste udvidelsesmoduler tilhører en af to kategorier: små, hvis kildekode distribueres som en enkelt .c-fil, og større, hvis kildekode distribueres som en mappe, der indeholder flere filer, herunder en Makefile.

For et simpelt udvidelsesmodul med en fil, lad os kalde det borker.c, er installation af det bare et spørgsmål om at køre kommandoen gimptool-3.0 --install borker.c. Denne kommando kompilerer udvidelsesmodulet og installerer det i din personlige udvidelsesmodulmappe, ~/gimp-3.0/plug-ins, medmindre du har ændret det. Dette medfører, at den indlæses automatisk næste gang, du starter GIMP. Du behøver ikke at være administrator for at gøre disse ting. Faktisk bør du ikke være det. Hvis udvidelsesmodulet ikke kompileres, må du være kreativ.

1.3.2. Windows

De fleste GIMP-udvidelsesmoduler, der er tilgængelige på Windows, kommer enten med et installationsprogram eller kan hentes i et forudkompileret binært format, der er klar til at kopiere til en mappe efter eget valg, der genkendes af GIMP.

Hvis et installationsprogram er tilgængeligt, bør det gøre alt arbejdet med at vælge en passende mappe og kopiere alle relevante filer. Hvis ikke, skal du muligvis tjekke GIMPs mappeindstillinger, hvor udvidelsesmoduler skal kopieres til. Husk, at hvert udvidelsesmodul skal være i sin egen mappe med samme navn som udvidelsesmodulet.

1.3.3. Apple Mac OS X

Hvordan du installerer udvidelsesmoduler i OS X afhænger for det meste af, hvordan du installerede GIMP selv. Hvis du var en af de modige og installerede GIMP gennem et af pakkehåndteringsprogrammerne som fink [FINK] eller darwinports [DARWINPORTS], fungerer installationen af udvidelsesmoduler præcis, som den allerede er beskrevet for Linux-platformen. Den eneste forskel er, at et par udvidelsesmoduler muligvis endda er tilgængelige i pakkearkivet i din pakkehåndtering, så prøv det.

Hvis du på den anden side foretrækker at få fat i en forudbygget GIMP-pakke som f.eks. GIMP.app, vil du sandsynligvis også gerne have et forudbygget udvidelsesmodul. Du kan prøve at få en forudbygget version af drømmeudvidelsesmodulet fra forfatteren af udvidelsesmodulet. Kompilering af dine egne binærfiler involverer desværre installation af GIMP.

1.3.4. Kørsel af det installerede udvidelsesmodul

Når du har installeret udvidelsesmodulet, hvordan aktiverer du det så? Menustien bestemmes af selve udvidelsesmodulet, så for at besvare dette skal du enten se på dokumentationen til udvidelsesmodulet (hvis der er nogen), udforske menuerne eller bruge GIMPs kommandosøgefunktion ved at trykke på / og derefter indtaste navnet på udvidelsesmodulet. Hvis du ved, hvordan du læser kildekode, kan du også kontrollere det for at se, i hvilken menu det registrerer sig selv.

For mere komplekse udvidelsesmoduler, organiseret som en mappe med flere filer, er der normalt en fil indeni kaldet enten INSTALL eller README med instruktioner. Hvis ikke, er det bedste råd at smide udvidelsesmodulet i papirkurven og bruge din tid på noget andet: Enhver kode skrevet med så lidt omsorg for brugeren vil sandsynligvis være frustrerende på utallige måder.

Hvis du installerer et udvidelsesmodul i din personlige udvidelsesmodulmappe, der har samme navn som et i systemets udvidelsesmappe, kan kun et indlæses, og det vil være det i din hjemmemappe. Du vil modtage meddelelser, der fortæller dig dette, hver gang du starter GIMP. Dette er sandsynligvis en situation, der helst skal undgås.

1.4. At skrive udvidelsesmoduler

Hvis du vil lære at skrive et udvidelsesmodul, kan du finde masser af hjælp på GIMP-udviklernes websted [GIMP-DEV-PLUGIN]. GIMP er et komplekst program, men udviklingsholdet har gjort en ihærdig indsats for at gøre indlæringskurven for skrivning af udvidelsesmoduler mindre stejl: der er gode instruktioner og eksempler, og hovedbiblioteket, som udvidelsesmoduler bruger til at kommunikere med GIMP (kaldet libgimp), har en veldokumenteret API. Gode programmører, der lærer ved at ændre eksisterende udvidelsesmoduler, er ofte i stand til at udføre interessante ting efter blot et par dages arbejde.