Kapitola 10. Scripting

Obsah

1. Zásuvné moduly
1.1. Úvod
1.2. Používání zásuvných modulů
1.3. Instalace nových zásuvných modulů
1.4. Psaní vlastních zásuvných modulů
2. Používání Script-Fu skriptů
2.1. Script-Fu?
3. Zasvěcení do Script-Fu
3.1. První krůčky s jazykem Scheme
3.2. Proměnné a funkce
3.3. Seznamy, seznamy a zase seznamy
3.4. Váš první Script-Fu skript
3.5. Vytvoření střev skriptu
3.6. Rozšíření skriptu Text Box

1. Zásuvné moduly

1.1. Úvod

Jednou z nejlepších vlastností Gimpu je jeho snadná rozšiřitelnost o nové funkce pomocí zásuvných modulů (pluginů). Zásuvné moduly jsou externí programy spouštěné pod kontrolou Gimpu a úzce s ním spolupracující. Zásuvné moduly mohou s obrázky manipulovat v podstatě libovolným způsobem. Je mnohem snazší napsat malý zásuvný modul, než novou funkci složitě implementovat do jádra Gimpu. Mnoho cenných modulů má jen několik málo set řádků C kódu.

Spolu s Gimpem se standardně dodává několik desítek zásuvných modulů. Většina z nich je dostupná přes nabídku Filtry (veškerý obsah této nabídky je tvořen zásuvnými moduly), ale mnohé další jsou dostupné i v jiných nabídkách. V mnoha případech ani uživatel netuší, že používá zásuvný modul. Například funkce „Normalizovat“ pro automatickou korekci barev je ve skutečnosti zásuvným modul, ačkoli z uživatelského hlediska tomu nic nenapovídá.

Kromě zásuvných modulů dodávaných přímo s Gimpem existuje mnoho dalších modulů na Internetu. Mnoho jich lze nalézt na stránkách GIMP Plugin Registry [GIMP-REGISTRY] (anglicky), které slouží jako centrální skladiště zásuvných modulů pro GIMP. Uživatelé tam mohou zásuvné moduly různými způsoby vyhledávat, autoři zásuvných modulů naopak své výtvory na server nahrávat.

Kdokoliv na světě může napsat zásuvný modul pro GIMP a zpřístupnit ho po síti, ať už přes stránku Registrů nebo na své osobní stránce. Tímto způsobem lze získat mnoho nesmírně zajímavých a cenných zásuvných modulů. S takovou svobodou ovšem přichází i jistá rizika, skutečnost, že modul může vytvořit kdokoliv, znamená, že neexistuje možnost hlídat jejich kvalitu. Zásuvné moduly distribuované přímo s Gimpem jsou pečlivě testovány a laděny vývojáři Gimpu, ale mnoho z těch, které naleznete na síti, bylo zbastleno během několika hodin a pak ponecháno na pospas osudu. Někteří tvůrci zásuvných modulů si se stabilitou nedělají těžkou hlavu a i ti, kteří jsou pečliví, nemají často možnost provádět rozsáhlé testy na řadě různých systémů a v různých situacích. Když si z webu stáhnete zásuvný modul, dostáváte něco zdarma, a mnohdy dostanete přesně to, za co jste zaplatili. Tím vás nechceme odradit, jen si chceme být jistí, že chápete tvrdou realitu světa Internetu.

[Varování] Varování

Zásuvné moduly jsou plnohodnotné spustitelné programy a mohou dělat cokoliv, co ostatní programy. To zahrnuje i možnost instalace zadních vrátek do systému, poškození dat či jiné ohrožení bezpečnosti. Nikdy neinstalujte zásuvný modul ze zdroje, kterému plně nedůvěřujete.

Toto varování se vztahuje jak ke stránkám Plugin Registry, tak k jakémukoliv jinému zdroji zásuvných modulů. Stránky Plugin Registry jsou přístupné každému autorovi, který je chce použít; nikdo nad nimi bedlivě nedohlíží. Samozřejmě, pokud správci zjistí, že je na stránkách něco špatného, odstraní to. Nicméně je nutno si uvědomit, že pro GIMP i jeho zásuvné moduly je stejná záruka, jako pro každý jiný volně distribuovatelný software: tedy žádná.

[Výstraha] Výstraha

Zásuvné moduly jsou součástí Gimpu již po dlouhou dobu. Nicméně zásuvné moduly napsané pro jednu verzi Gimpu nelze úspěšně používat s jinou verzí. Předtím je nutno moduly upravit, což může být snadné nebo ne. Mnoho zásuvných modulů je dostupých v různých verzích pro různé verze Gimpu. Před instalací zásuvného modulu si ověřte, že je určen pro vámi používanou verzi.

1.2. Používání zásuvných modulů

Zásuvné moduly se používají stejně, jako jakékoliv jiné funkce Gimpu, není nutno vědět, že používáte zásuvný modul. Existuje ale pár věcí, kterým je užitečné rozumět.

Zásuvné moduly nejsou obvykle tak stabilní jako jádro Gimpu. Pokud se zhroutí GIMP, je to považováno za velmi závažný problém, který může přinést uživateli hodně trápení. Pokud spadne zásuvný modul, nejsou obvykle důsledky tak vážné. Většinou lze plynule pokračovat v práci.

[Poznámka] Poznámka

Zásuvné moduly jsou samostatnými programy a proto musí s jádrem Gimpu komunikovat zvláštním způsobem. Hackeři pracující na Gimpu mluví o „hovoru po drátě“ Když zásuvný modul spadne, komunikace se přeruší a objeví se chybová hláška „wire read error

[Tip] Tip

Po pádu zásuvného modulu na vás GIMP vyhrkne velmi znepokojující chybovou zprávu s varováním, že pád modulu mohl zanechat GIMP v narušeném stavu a že by bylo lepší uložit obrázky a GIMP restartovat. Přísně řečeno, je to správný postup, neboť zásuvné moduly mají skutečně možnost běh Gimpu narušit. Praxe ale říká, že takové narušení je poměrně vzácné, a většina uživatelů prostě bez přerušení pokračuje v práci. Musíte se rozhodnout sami, zvážit, jaké problémy by případná nestabilita Gimpu pro vás znamenala.

Vzhledem ke způsobu komunikace mezi zásuvnými moduly a Gimpem, není možno informovat je o změnách v obrázku provedených po startu modulu. Pokud spustíte zásuvný modul a během jeho činnosti provedete zásah do obrázku jiným nástrojem, zásuvný modul může spadnout nebo vrátit nesmyslný výsledek. Měli byste se vyhýbat spouštění více zásuvných modulů současně a s obrázkem před ukončením modulu nijak nemanipulovat. Pokud tomuto varování nebudete věnovat pozornost, pravděpodobně si zkazíte obrázek a navíc možná poškodíte historii změn, takže ani svou chybu nebudete moci napravit.

1.3. Instalace nových zásuvných modulů

Zásuvné moduly dodávané přímo s Gimpem nevyžadují žádnou zvláštní instalaci. Moduly, které si stáhnete sami, ale musíte nainstalovat. Způsobů je několik, v závislosti na vašem operačním systému a vlastnostech zásuvného modulu. V Linuxu je instalace nového zásuvného modulu obvykle velice jednoduchá, ve Windows to může být jednoduché ale i pekelně složité (ne, Windows už dávno nejsou snáze ovladatelným systémem). V každém případě je lépe obě možnosti probrat zvlášť.

1.3.1. Linux

Většina zásuvných modulů spadá do jedné ze dvou kategorií. První jsou malé moduly distribuované jako jeden zdrojový C soubor (.c). Druhou skupinu tvoří moduly, jejichž zdrojový kód je šířen jako adresář s více soubory včetně Makefile.

V případě jednoduchého zásuvného modulu tvořeného jedním souborem, řekněme borker.c, stačí spustit příkaz gimptool-2.0 --install borker.c. Tento příkaz zásuvný modul přeloží a nainstaluje do vašeho osobního adresáře pro GIMP (~/gimp-2.2/plugins, pokud jste ho nezměnili). To způsobí automatické nahrání zásuvného modulu při dalším spuštění Gimpu. Pro tento typ instalace není nutné být superuživatelem root, ve skutečnosti byste jím být ani neměli. Pokud překlad zásuvného modulu selže, buďte tvořiví.

Jak použijete úspěšně nainstalovaný zásuvný modul? Místo v nabídkách, kde se objeví, závisí na modulu samotném. Proto si buď musíte nastudovat dokumentaci k modulu (pokud existuje), nebo otevřít Prohlížeč zásuvných modulů (z nabídky Rozš. panelu nástrojů) a vyhledat v něm zásuvný modul podle jména. Můžete si také prostě jen pečlivě prohlédnout všechny nabídky Gimpu nebo, což je nejspolehlivější, přečíst zdrojový kód zásuvného modulu.

V případě složitějších zásuvných modulů šířených v podobě adresáře s více soubory, by měl být součástí i soubor pojmenovaný INSTALL nebo README. Ten obsahuje instrukce (ovšem většinou v angličtině). Pokud žádné instrukce k modulu přibaleny nejsou, bude ho nejlépe zahodit a věnovat se něčemu jinému, protože kód bez dokumentace bude stejně pravděpodobně obsahovat příliš nepříjemných chyb a přinášet řadu problémů.

Některé zásuvné moduly (zejména ty založené na oficiální předloze – GIMP Plugin Template) jsou navrženy pro instalaci do hlavního adresáře Gimpu, nikoliv do uživatelského adresáře. V jejich případě potřebujete pro konečnou fázi (make install) instalace rootovská práva.

Pokud do svého osobního adresáře pro zásuvné moduly nainstalujete modul, který se jmenuje stejně, jako některý z modulů v systémovém adresáři, nahraje se pouze jeden z nich, a to ten, který je ve vašem osobním adresáři. Při každém spouštění Gimpu na to budete upozorňování. Je lépe se takové situaci vyhýbat.

1.3.2. Windows

Windows jsou pro tvorbu programů ve srovnání s Linuxem velmi nešikovný systém. Každá slušná linuxová distribuce je perfektně vybavena všemi nástroji potřebnými pro překládání programů, ale Windows tak vybaveny nejsou. I ve Windows je možné vytvořit vhodné prostředí pro tvorbu software, ale vyžaduje to buď mnoho peněz nebo mnoho vědomostí a pevné nervy.

V případě zásuvných modulů do Gimpu to znamená následující: buď vhodné prostředí pro tvorbu software máte, nebo nikoliv. Pokud ne, nejlépe je sehnat již přeloženou verzi modulu či přemluvit někoho zkušeného, aby vám ji vytvořil. Takový hotový modul prostě jen vhodťte do adresáře pro zásuvné moduly. Pokud máte ve Windows vhodné prostředí pro tvorbu software, pravděpodobně s ním umíte zacházet. Postupujte pak podle linuxových instrukcí.

Pokud si chcete prostředí pro překlad Gimpu a jeho zásuvných modulů ve Windows vytvořit, a máte skutečně odvahu k tak hrdinskému činu, najdete víceméně aktuální popis v gimpí wiki na stránce HowToCompileGimp/MicrosoftWindows [GIMP-WIKI01]. Je to wiki, kterou může kdokoliv upravovat, proto prosím připište své zkušenosti, pokud myslíte, že mohou být ostatním užitečné.

1.3.3. Apple Mac OS X

Tato část vyžaduje doplnění.

1.4. Psaní vlastních zásuvných modulů

Pokud se chcete naučit psát své vlastní zásuvné moduly, najdete užitečnou pomoc na vývojářském webu Gimpu [GIMP-DEV-PLUGIN]. GIMP je velmi složitý program, vývojáři však učinili všechno proto, aby bylo psaní zásuvných modulů co nejjednodušší. Na webu najdete dobře napsané instrukce a příklady a hlavní knihovna, kterou zásuvné moduly používají pro komunikaci s Gimpem (libgimp) má dobře dokumentované programovací aplikační rozhraní (API). Dobří programátoři jsou schopni vytvořit zajímavé moduly již po několika dnech učení a práce.