Capítol 13. Programació de scripts

Sumari

1. Connectors
1.1. Introducció
1.2. Com s'usen els connectors
1.3. Instal·lació de nous connectors
1.4. Escriure connectors
2. Ús de scripts Script-Fu
2.1. Script-Fu?
2.2. Instal·lació de Script-Fus
2.3. Què fer i què no fer
2.4. Diferents tipus de Script-Fus
2.5. Scripts independents
2.6. Scripts dependents de la imatge
3. Programa d'aprenentatge de l’Script-Fu
3.1. Coneixent l'Scheme
3.2. Variables i funcions
3.3. Llistes, llistes i més llistes
3.4. El vostre primer codi de Script-Fu
3.5. Dóna una mica de substància al nostre script
3.6. Estendre l'script «Text Box»
3.7. El vostre script i la vostra feina

1. Connectors

1.1. Introducció

Una de les principals bondats del GIMP és la facilitat amb què se'n pot estendre la funcionalitat per mitjà de connectors. Els connectors del GIMP són programes externs que s'executen sota el control de l'aplicació del GIMP, i hi interactuen. Els connectors poden modificar les imatges gairebé de la mateixa manera en què poden fer-ho els usuaris. El seu avantatge és que és molt més fàcil afegir una capacitat al GIMP escrivint un petit connector que modificar la gran massa de codi complex que forma el nucli del GIMP. Molts dels connectors més valorats estan fets en només 100 o 200 línies de codi font en C.

La distribució principal del GIMP inclou diverses desenes de connectors, i s'instal·len automàticament juntament amb el GIMP. A la majoria es pot accedir mitjançant el menú Filtres (de fet, cada entrada d'aquest menú es correspon amb un connector), però n'hi ha uns quants situats en altres menús. En molts casos podeu usar-ne algun sense ni tan sols saber-ho: per exemple, la funció «Normalitza» per a la correcció automàtica del color és en realitat un connector, encara que no hi hagi res en el seu funcionament que ho indiqui.

A més dels connectors que vénen inclosos en el GIMP, n'hi ha molts altres disponibles a la xarxa. Una gran quantitat són en el registre de connectors del GIMP [GIMP-REGISTRY], un lloc web el propòsit del qual és proporcionar un repositori central de connectors. Els creadors de connectors els hi poden pujar; els usuaris interessats a cercar connectors per a un propòsit específic els poden cercar en el lloc de diverses maneres.

Qualsevol persona del món pot escriure un connector pel GIMP i fer que estigui disponible a la web, tant en el registre anteriorment esmentat, com en un lloc personal, i molts connectors valuosos s'obtenen d'aquesta manera. Alguns es descriuen en aquest manual. Aquesta llibertat comporta un cert risc, ja que el fet que qualsevol pugui fer-ho significa que no hi ha cap control de qualitat. Els connectors que es distribueixen amb el GIMP han estat provats i refinats pels desenvolupadors, però molts dels que es troben a la web s'han petat en uns minuts, i després s'han deixat a la deriva. Alguns creadors de connectors simplement no es preocupen per la seva robustesa, i fins i tot els que sí que ho fan, la seva capacitat de provar-los en diversos sistemes i en diverses situacions està limitada. Bàsicament, quan baixeu un connector l'obteniu gratuïtament, però a vegades n'obteniu un exactament igual al que heu pagat. Això no es diu amb la intenció de desencoratjar-vos, sinó perquè conegueu la realitat.

[Avís] Avís

Els connectors, com que són programes executables complets, poden fer totes les coses que els altres programes poden fer, incloent-hi la instal·lació de portes del darrere (back-doors) en el vostre sistema, entre altres maneres de posar en risc la vostra seguretat. Per tant, no instal·leu connectors llevat que provinguin de fonts fiables.

Aquestes qüestions són rellevants tant per als connectors del registre de connectors com per a qualsevol altra font de connectors. El registre de connectors està disponible per a qualsevol creador de connectors que vulgui usar-lo: no hi ha cap supervisió sistemàtica. Òbviament, si els mantenidors adverteixen que s'ha registrat un connector maliciós, el poden eliminar (això encara no ha succeït mai). Tot i així, el GIMP i els seus connectors es proporcionen amb la mateixa garantia que la resta del programari lliure, és a dir, cap.

[Atenció] Atenció

Els connectors són una característica del GIMP des de fa moltes versions. Tanmateix, els connectors escrits per a una versió determinada del GIMP difícilment funcionen en altres versions. Han de ser portats: a vegades és fàcil i altres vegades no. Molts connectors estan disponibles en diverses versions. En poques paraules: abans d'instal·lar un connector, assegureu-vos que estigui escrit per a la vostra versió del GIMP.

1.2. Com s'usen els connectors

En general es fa ús d'un connector sense ni tan sols notar-ho, com amb altres eines del GIMP. Però hi ha alguns detalls sobre els connectors que és útil conèixer.

Primer, els connectors no són tan robusts com el nucli de l'aplicació GIMP. Quan el GIMP falla, es considera que ha passat alguna cosa molt seriosa, ja que pot suposar a l'usuari molts problemes i algun maldecap. Quan un connector té una fallada, les conseqüències generalment no són tan serioses. En la majoria dels casos podeu continuar treballant sense preocupar-vos pel que ha passat.

[Nota] Nota

Els connectors són programes aïllats, i es comuniquen amb el nucli del GIMP d'una manera especial: els desenvolupadors del GIMP en diuen parlar per mitjà d'un cable. Quan un connector falla, la comunicació es talla, i veureu un missatge d'error de lectura del cable.

[Suggeriment] Suggeriment

Quan un connector falla, el GIMP us proporciona un missatge dient que un connector pot haver deixat el GIMP en un estat corrupte, i que hauríeu de considerar desar les vostres imatges i sortir. Estrictament parlant, això és correcte, perquè els connectors tenen la capacitat de modificar-ho gairebé tot en el GIMP, però en la pràctica, l'experiència ha demostrat que aquesta corrupció és de fet molt rara, i molts usuaris continuen treballant sense preocupar-se'n. El consell és que considereu els problemes que es produirien si res anés malament i que ho compareu amb la incomoditat de sortir i tornar a iniciar.

A causa de la manera en què els connectors es comuniquen amb el GIMP, aquests no tenen cap mecanisme per a conèixer els canvis que heu fet en una imatge abans que siguin iniciats. Si inicieu un connector, i després modifiqueu la imatge emprant una altra eina, el connector probablement fallarà, i si no ho fa, donarà un resultat incorrecte. Hauríeu d'evitar executar més d'un connector al mateix temps sobre una imatge, i evitar també fer modificacions a la imatge fins que el connector acabi de treballar. Si no feu cas d'aquest consell, no només es farà malbé la imatge, sinó que a més es farà malbé el sistema de desfer, i ni tan sols podreu recuperar-vos de l'accident.

1.3. Instal·lació de nous connectors

Els connectors distribuïts amb el GIMPno requereixen una instal·lació especial. Són els que baixeu vosaltres mateixos els que requereixen instal·lar-se. Hi ha diversos escenaris, depenent del vostre sistema operatiu, i de com està estructurat el connector mateix. En Linux, normalment és molt fàcil instal·lar un connector nou. En Windows, pot ser o bé fàcil o bé molt difícil. Per això val més considerar tots dos sistemes separadament.

1.3.1. Sistemes similars a Linux / Unix

La majoria dels connectors encaixen en dues categories: els petits, amb un codi font que es distribueix en un únic fitxer «.c», i els grans, amb un codi font que es distribueix com un directori que conté diversos fitxers, incloent-hi un fitxer Makefile.

Per a un connector petit d'un fitxer, anomenat borker.c, instal·lar-lo és només qüestió d'executar l'ordre gimptool-2.0 --install borker.c. Aquesta ordre compila el connector i l'instal·la en la vostra carpeta personal de connectors, per exemple ~/gimp-2.4/plugins tret que l'hàgiu canviat. Estarà disponible la pròxima vegada que inicieu el GIMP. No cal ser administrador per a dur a terme aquesta tasca; de fet, no hauríeu de ser-ho. Si el connector falla en compilar, bé, sigueu creatius.

Una vegada instal·lat el connector, com l'activeu? El connector mateix determina l'entrada del menú per a accedir-hi, així que per a conèixer-ne la ubicació podeu revisar-ne la documentació (si en té) o bé executar el diàleg de descripció del connector (Ajuda/Gestor de connectors). Cerqueu el connector pel seu nom i mireu la pestanya Visualització en arbre. Si encara no el trobeu, exploreu els menús o doneu un cop d'ull al codi font en la secció «Register», el que sigui més fàcil.

Per a connectors més complexos, organitzats en un directori amb múltiples fitxers, podeu veure que inclouen un fitxer anomenat INSTALL o un fitxer README, amb instruccions. Si no és així, val més que no l'utilitzeu: qualsevol codi que s'ha escrit amb tan poca preocupació per l'usuari és probable que sigui decebedor de mil maneres diferents.

Alguns connectors (especialment els basats en la plantilla de connectors del GIMP) estan dissenyats per a ser instal·lats en el directori principal del GIMP, en comptes de la vostra carpeta personal. Per a aquests, cal que tingueu privilegis d'administrador per a dur a terme l'última etapa d'instal·lació (en executar l'ordre make install).

Si instal·leu un connector a la vostra carpeta personal que té el mateix nom que un dels connectors instal·lats en el sistema, només se'n pot carregar-se un, i serà el que es troba a la vostra carpeta. Rebreu un missatge comunicant-vos que ha passat això cada vegada que arrenqueu el GIMP. El millor és evitar aquesta situació.

1.3.2. Finestres

L'entorn Windows és molt més problemàtic que el Linux per a compilar programari. Totes les distribucions acceptables de Linux porten les eines necessàries per a la compilació, i totes treballen de manera molt similar. Però Windows no ve amb aquestes eines. És possible establir un bon entorn de compilació de programari en Windows, però requereix una quantitat substancial de diners, o una quantitat substancial d'esforç i coneixement.

El que això vol dir respecte als connectors del GIMP és el següent: teniu un entorn en què podeu compilar programari, o no el teniu. Si no el teniu, tingueu l'esperança de trobar una versió precompilada en algun lloc (o persuadiu algú que faci la compilació en lloc vostre). En aquest cas tan sols caldrà col·locar-la en la vostra carpeta personal de connectors. En cas que sí que tingueu aquest entorn (i això vol dir un entorn en què podeu compilar el GIMP), llavors segurament teniu prou coneixements i podeu seguir les instruccions per a Linux.

1.3.3. Apple Mac OS X

La majoria de les vegades, la instal·lació de connectors sobre OS X depèn de com s'hagi instal·lat el GIMP. Si heu instal·lat el GIMP amb un dels gestors de paquets com «fink»[DARWINORTS] o «darwinports»,[FINK] la instal·lació del connector funciona de la mateixa manera que la descrita per a la plataforma Linux. L'única diferència és que els connectors poden estar disponibles en el repositori del gestor de paquets; proveu-ho.

Si us estimeu més fer servir paquets precompilats del GIMP com ara el «GIMP.app», segurament voldreu usar material precompilat. Podeu intentar aconseguir la versió directament de l'autor del connector, encara que això és poc probable. Compilar uns binaris propis també és complicat, ja que depèn de la instal·lació del GIMP mitjançant un dels gestors de paquets esmentats abans.

1.4. Escriure connectors

Si voleu aprendre a escriure connectors, podeu trobar molta ajuda en el lloc web dels desenvolupadors del GIMP [GIMP-DEV-PLUGIN]. El GIMP és un programa complex, però els desenvolupadors han fet un gran esforç perquè la corba d'aprenentatge sigui suau, especialment per a la codificació de connectors. Hi ha molt bones instruccions i exemples, i la biblioteca principal que empren els connectors com a interfície amb el GIMP (anomenada libgimp) disposa d'una API molt ben documentada. Els bons programadors, que aprenen modificant els connectors existents, arriben a aconseguir coses interessants en pocs dies de feina.