I förra inlägget skapades en ”bas” för att utveckla ett eget plugin i QGIS. I denna del är det dags att göra vår dialogruta lite mer användbar.
För detta använder jag Qt Designer (Qt4 för QGIS 2.x). Det finns andra sätt att skapa gränssnittet på också. Allt från att använda andra miljöer för att redigera ”ui-filer” (om det finns några andra) eller generera pythonkod baserat på Qt ramverket på annat sätt, till att skriva pythonkoden manuellt. Att göra detta manuellt är dock ganska svårt och Qt Designer gör allt så fruktansvärt mycket enklare!
I den katalog som skapades med Plugin Builder så finns det en ”my_plugin_dialog_base.ui” -fil. Denna öppnar jag med Qt Designer. Har du använt ett annat namn så leta bara efter den enda filen med ändelsen *.ui.
Jag kommer att skapa ett plugin där man väljer ett vektorlager från de som är inlästa i QGIS. Från detta väljer man sedan ett attribut, som man sedan får en lista genererad från som innehåller alla unika värden i en lista. Listan skall presenteras antingen i en kolumn, eller som en textsträng separerad med kommatecken.
Qt Designer är ett ganska enkelt verktyg att göra detta med. Till vänster finns tillgängliga komponenter och dessa är bara att dra in och släppa i dialogfönstret.
Jag drar in två stycken ”Combo Box”, en ”Check Box” och en ”Plain Text Edit”. Om man vill snabbgranska dialogen så kan man köra ”ctrl – R”. När man ändrar storleken på dialogen i förhandsgranskningen så ser man snabbt att man har ett problem. Med Qt Designer är detta dock lätt att åtgärda. För en enkel dialog som det här så vill jag helt enkelt att alla element staplas ovanpå varandra, så jag kan applicera en ”Vertikal layout”. Detta kan man göra med en knapp (tre liggande linjer), via menyn eller med ”ctrl – 2”. Se bara till att dialogfönstret är valt och inte bara en enskild kontroll först.
När du nu förhandsgranskar dialogen och ändrar storleken så kommer kontrollerna att följa med och ändra storlek för att anpassas till storleken.
Om dina kontroller har hamnat i en annan ordning så är det enkelt att flytta dessa genom att ta tag i dem och dra dem till rätt plats.
Innan jag avslutar designen så vill jag göra några justeringar. Exempelvis vill jag ge kontrollerna namn som jag kan använda i min kod senare. För varje kontroll så markerar jag den och går till egenskapspanelen där det står en ”egenskap” med namnet objectName. I värdefältet för denna egenskap skapar jag nya namn för mina kontroller:
- combo_layer
- combo_attribute
- check_list
- text_out
Dessutom så ändrar jag standardtexten för ”CheckBox” till ”Create comma separeted list”. Om jag skulle vilja att detta skulle vara förvalt så kan jag kika vidare bland egenskaperna för kontrollen och leta reda på checked och markera det fältet.
Det finns betydligt mycket mera man kan göra i Designer, men det hinner jag inte med den här gången. Spara dialogen och gå tillbaka till terminalen.
Från pluginkatalogen så ger man på nytt kommandot:
make deploy
Det är nu det är bra att använda verktyget ”Plugin Reloader”. Verktygets knapp har en undermeny där man först skall välja vilket plugin som skall läsas om. Om man inte väljer först så får man ett felmeddelande, men det är inte hela världen. Välj bara ”MyPlugin” och starta om detta igen.
Nu kommer din nya dialog att visas i stället för den gamla när du klickar på din knapp…
I nästa del så blir det dags att skriva lite Pythonkod!
Tills dess kan du ju fundera på hur du kan göra för att byta ut ikonen på knappen till något roligare.