Detta blir en serie inlägg hela veckan lång. Om du vill kan du hänga med själv och skapa ett eget plugin. Du kan göra precis som jag eller variera lite själv, och alldeles oavsett vilket så kommer du att stöta på problem lite då och då. Python är lite känsligt och det kan vara så enkla saker som att du använt en stor bokstav när det skulle vara en liten, eller tre mellanslag som indrag, när det skulle varit ”tab”.
Jag har valt ett ”eget” plugin som exempel, så att det inte bara blir ”lägg till ett lager från en sökväg”, eller motsvarande. Inte det enklaste man kan tänka sig, men inte för svårt heller. Det som gjorde det lite svårare var att vi i Sverige har lite speciella bokstäver så de som utvecklar QGIS och Python inte direkt behöver bry sig om. Det finns metoder för att hantera detta, men jag tycker att det så gott som alltid strular lite.
Jag kommer som vanligt att använda Linux för mitt arbete. För Mac så är väldigt mycket likadant, medan det säker skiljer en del mot Windows. Om du därför skall hänga med och sitter på Windows så får du vara beredd på att Googla lite när mina beskrivningar inte riktigt stämmer, men förhoppningsvis skall det inte vara för mycket som är annorlunda.
Du kan också behöva installera en del programkomponenter som jag sedan länge har installerade, och därför inte märker att andra kanske saknar.
Förberedelser
Om du kommer att publicera ditt plugin officiellt i QGIS biblioteket så behöver du utföra detta steg. I andra fall är det ganska smart att göra ändå, men inte nödvändigt.
Jag talar om att skapa ett ”repository” någonstans för din kod. Jag kommer att använda GitHub, men det finns flera andra att välja på, även sådana som bygger på ”Git”, vilket gör att dessa kommandon fungerar där också.
Allt går att göra från terminalen, men jag tycker att det enklaste är att börja med att skapa ett repository från webbgränssnittet.
Jag kommer att skapa ett repository kallat ”myplugin”, så det är så jag kommer att referera till det. Om du vill döpa din pluginkatalog till något annat är det ok. Det du väljer här är inte namnet på ditt plugin, utan bara katalogens namn.
Jag väljer även att kryssa i ”Initialize this repository with a README”, så att katalogen inte är helt tom från början.
När du skapat katalogen så finns där en ny grön knapp som heter ”Clone or Download”. Om du klickar på denna så kan du kopiera sökvägen till repositoryt. Denna behövs i nästa steg för att göra repositoryt tillgängligt lokalt på din dator.
Skapa en katalog lokalt
Om du har skapat ett repository på GitHub så kan du nu gå till en sökväg där du vill lagra en lokal kopia och skriva in ett terminalkommando.
git clone https://github.com/klakar/myplugin.git
Du skall byta ut sökvägen till din egen, annars så skapar du en kopia av mitt repository, vilket kommer att fungera, men du kan inte ”skjuta tillbaka” någon kod utan inloggning.
Git-kommandot skapar en katalog på sökvägen med samma namn som repositoryt. Om du inte har använt GitHub så kan du helt enkelt skapa en arbetskatalog för ditt plugin själv. Om du väljer en katalog med namnet ”myplugin” så kommer resten av sökvägarna i denna artikel att stämma även för dig.
Generera ett startläge
För att snabbt skapa ett ”ramverk” för ditt plugin, och för att underlätta fortsättningen, så skall du börja med att installera två stycken plugin.
Det är ”Plugin Builder” och ”Plugin Reloader”. Det första skapar alla nödvändiga filer att börja med, och det andra startar om valfritt plugin utan att hela QGIS behöver startas om, vilket är väldigt användbart när man gör småjusteringar eller felsöker.
När detta är klart så är det bara att köra Plugin Builder (från menyn eller med en knapp).
I det första formuläret så finns det exempeltext i alla fälten och förutom det så är väl mitt enda tips att undvika Svenska bokstäver och blanktecken i class- och modulnamnen. Du skall heller inte använda ”underscore” i pluginnamnet. Andra olämpligheter brukar vara att inleda med något annat än en bokstav, men om du får ett felmeddelande så läs vad där står och försök med något annat.
I nästa ruta kan du fylla i ”About” om ditt plugin. Du kan skriva något nu eller senare, det spelar inte så stor roll. En sak med officiella plugin är att dessa förväntas vara på engelska! All text går sedan att översätta till svenska i speciella översättningsfiler, men det kommer i en senare artikel.
Nästa dialog handlar om att välja gränssnitt för ditt plugin. Standard är ”knapp” med dialogfönster, men man kan välja att skapa ett dockningsfönster i stället om man vill skapa ett plugin där man jobbar parallellt med kartan och ett formulär. Dialogen är bättre att göra några val med och sedan ”köra”. För den här artikelserien så kommer jag att använda ”Tool button with dialog”.
Jag anger menytexten till ”My Plugin” och väljer att placera den i ”Plugins” menyn. Det går att placera knappen i andra undermenyer också, vilket kan vara logiskt om ditt plugin handlar om exempelvis ”rasterdata”.
I nästa dialog kan man välja att inte generera vissa resurser. Planerar man inte att använda några av dessa, eller om man vill skapa dessa själv så är detta praktiskt. Jag kommer att välja att generera alla defaultfiler.
Skall man publicera sitt plugin så måste man ange sökvägen till koden. Även om du inte skall publicera så är det smart att använda ett kodbibliotek som GitHub. Sökvägen till repositoryt kan man sedan använda sig av på flera ställen i den avslutande dialogen.
Här kan man även välja ett antal passande ”taggar” för att göra verktyget sökbart på ett bra sätt. Dessutom så kan man ange att det är ett plugin som man experimenterar med, vilket kommer att dölja det för alla som inte aktivt valt att även visa experimentella plugin.
Peka sedan ut den katalog som du tidigare skapade, antingen manuellt eller via Git.
Om allt fungerat så kommer du att få upp en dialogruta där det står lite sökvägar och råd för vad som skall göras härnäst.
Ännu har dock inget plugin skapats i QGIS. Däremot så finns alla filer som behövs i den katalog som du tidigare skapade, i en underkatalog döpt efter namnet på ditt plugin.
Om du går till katalogen i terminalen så kan du nu kompilera ditt plugin och installera det i QGIS. Det kommer inte att göra något, för vi har inte skrivit någon kod ännu, men det går att testa att man har allt annat man behöver för att exempelvis kompilera koden.
make deploy
Kommandot skapar en katalog i .qgis2/python/plugins/ och för över de filer som behövs. Sedan är det bara att starta om QGIS för att läsa in pluginkatalogen. Om du har Plugin Reloader så är detta den enda gången du behöver starta om QGIS.
Nu är det bara att aktivera ditt plugin och köra det med den knapp som skapas i verktygsfältet, eller via menyn.
I nästa del så skall vi jobba lite med detta gränssnitt, så att det kan göra mer än bara vara där…