Makagiga 0.9.4 (SVN) potrafi teraz obsługiwać wtyczki całkowicie napisane w JavaScripcie. Każda taka wtyczka musi składać się z przynajmniej dwóch plików...
Plik 1. - Informacje o wtyczce
Pierwszy plik to "plugin.properties", który zawiera informacje o wtyczce. Minimalny plik musi zawierać jedynie 4 pola: String.id, String.name, String.type i String.scriptName. Przykład:
# "id" musi być unikalne. Można użyć polecenia "uuidgen" w Konsoli Makagigi.
String.id={831dacaf-badf-4d6f-8a4f-676b7da9402f}
# Nazwa wtyczki
String.name=Weather
String.name[pl]=Pogoda
# Typ wtyczki (widget, internetsearch, etc)
String.type=widget
# Nazwa pliku z głównym skryptem
String.scriptName=pogoda.js
Plik 2. - Skrypt
Gdy już mamy "plugin.properties", czas na napisanie skryptu. Tworzymy plik "pogoda.js" i zapisujemy go w tym samym miejscu co "plugin.properties". Przykładowy skrypt wyświetlający mapę pogody... (każdy kto nigdy nie programował w Javie, a pisał coś w JavaScripcie, powinien mniej więcej wiedzieć o co chodzi ;)
importPackage(org.makagiga.commons); // MLabel, MPanel, etc
importClass(org.makagiga.desktop.Widget);
var pogoda;
function wczytaj(dzien) {
var adres = "http://www.se.com.pl/Iso/dzisiaj/Mapki/" + dzien + ".gif";
pogoda.setImage(adres);
}
// ta funkcja wykonywana jest, gdy użytkownik dodaje nowy widget
function onCreate() {
var widget = new Widget("Pogoda"); // utwórz nowy widget
pogoda = new MLabel();
// umieść obrazek "na środku" widgeta
// "MScrollPane" doda paski przewijania
widget.addCenter(new MScrollPane(pogoda));
var przyciski = MPanel.createHBoxPanel(); // panel z przyciskami
// pogoda na dziś
var dziś = new MButton("Dziś");
dziś.onClick = function() { wczytaj("dzis"); }
// pogoda na jutro
var jutro = new MButton("Jutro");
jutro.onClick = function() { wczytaj("jutro"); }
// link do strony SE
var stronaDomowa = new MURLButton("Strona Domowa", "http://www.se.com.pl");
// dodaj panel z przyciskami
przyciski.add(dziś);
przyciski.add(jutro);
przyciski.addStretch();
przyciski.add(stronaDomowa);
przyciski.addGap();
widget.addSouth(przyciski);
wczytaj("dzis"); // wczytaj dzisiejszą pogodę
return widget;
}
Instalacja
Uwaga: Podany poniżej sposób instalacji, będzie niedługo znacznie prostszy i bardziej zautomatyzowany :)
Teraz wrzucamy powyższe dwa pliki do katalogu "~/.makagiga/plugins/{831dacaf-badf-4d6f-8a4f-676b7da9402f}" ({831dacaf-badf-4d6f-8a4f-676b7da9402f} musi być takie same jak w pliku plugin.properties) i po restarcie aplikacji mamy nowy, własnoręcznie wydziergany widżet :)