Z cyklu wstawmy-komponent-i-zobaczmy-co-wyjdzie*: Kolejna wtyczka do Makagigi, która właśnie powstaje... Jest to prosty klient VNC, za pomocą którego można sterować innym komputerem poprzez sieć.
Screenshot
Windows Vista w kartach...
Z cyklu wstawmy-komponent-i-zobaczmy-co-wyjdzie*: Kolejna wtyczka do Makagigi, która właśnie powstaje... Jest to prosty klient VNC, za pomocą którego można sterować innym komputerem poprzez sieć.
Windows Vista w kartach...
Wtyczka umożliwia wysłanie dowolnego tekstu prosto do serwisu wklej.org. Następnie za pomocą unikalnego klikalnego linku, który dostaniemy z powrotem, możemy podzielić się naszym tekstem z innymi użytkownikami. Zobaczymy co z tego wyjdzie ;) Jak na razie pierwsza wersja beta 0.9 działa nadzwyczaj dobrze, a przynajmniej sprawia takie wrażenie..
Wymagana Makagiga 2.9.3 lub nowsza. Aby zainstalować, wejdź w menu Narzędzia -> Wtyczki -> Pobierz więcej wtyczek...
Makagiga jest ładniewyglądającym programem, który pomaga w tworzeniu notatek oraz list-rzeczy-do-zrobienia. Działa na różnych systemach operacyjnych i jest w pełni przenośny. Istnieje możliwość łatwego doinstalowania nowych wtyczek lub wyłączenie nieużywanych, dzięki czemu aplikację można idealnie dostosować do własnych potrzeb :)
Tradycyjnie finalna wersja 3.0.0 ukaże się pod koniec roku.
Pobierz (paczki deb, rpm, zip, exe; "certyfikowane" dla KDE/GNOME, Windows XP/Vista, OpenSolaris)
Jak zrobić poniższy formularz?
Bardzo prosto..
<EXCEPRT>
import org.makagiga.form.*;
public class Test implements Runnable {
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Test());
}
public void run() {
LoginForm form = new LoginForm();
Factory.Content content = Factory.newDialog(null, form);
if (content.getDialog().exec())
System.err.printf("user=%s, password=%s, remember=%s\n",
form.user, form.password, form.remember);
}
@Form(label="Login")
static class LoginForm {
@Field(label="Username:", required=true)
String user;
@Field(label="Password:")
char[] password;
@Field(label="Remember password", style="color:green; font-size:smaller")
boolean remember;
}
}
Analizę działania programu, pozostawiam czytelnikowi jako zadanie domowe ;)
Zgodnie z obietnicą publikuję "df reloaded". Jest to prosty program, który wyświetla wolne/zajęte miejsce na dysku... Może komuś się przyda ;)
Jeśli otworzy się strona http://java.com, to znaczy że nie masz Javy 6, albo z jakiegoś tajemniczego powodu nie została wykryta :P Wtedy możesz spróbować uruchomić poprzez alternatywny launcher.
Właśnie została wydana kolejna stabilna wersja 2.0. Zmian jest dużo. Tak dużo, że aż trudno wymienić ;)
*) Trochę marketingowego bełkotu nie zaszkodzi :)
Makagiga 1.9.3 jak zawsze przynosi wiele poprawek, więc warto się uaktualnić :)
Pojawiły się również dwie nowe wtyczki: Logo Generator oraz "skórka" Substance 4.1. Pluginy można zainstalować poprzez menu Narzędzia -> Wtyczki -> Pobierz więcej wtyczek.
Generator logo, w porównaniu do starej wersji, zawiera trochę nowości:
BTW, Makagiga to aplikacja typu PIM + czytnik RSS + widgety.
Niedawno zmieniłem też stronę domową projektu. Nie dość, że wygląda trochę dziwnie, to na dodatek ma zielonego klona ;)
Dzisiaj zrobiłem kolejny widget dla Makagigi 2 (może nawet zadziała pod Glossitope ;) Sposób użycia jest prosty: wybieramy obrazek/zdjęcie z dysku, oraz opcjonalnie ustawiamy kolor tła.
*
*) Obrazki autorstwa yipyop; kot znajomych :)
Jeśli wszystko pójdzie dobrze, to Makagiga 2.0 Beta 1 (aka 1.9 Beta) pojawi się już w tym tygodniu.
Na podstawie End of Lech Kaczynski presidency Counter, zrobiłem nowy widget do Makagigi 2:
Skoro jesteśmy już przy prezydencie, to jeszcze ciekawostki z angielskiej Wikipedii. W "See also" jedynym linkiem jest... zgadujcie! ;) Natomiast w historii zmian ktoś napisał "I've changed photo, because it was photo of Jarosław Kaczyński" :)
Jak na razie cały kod odpowiedzialny za generowanie wykresu, został włączony do projektu Makagiga 2.0 (jako niezależna biblioteka), i obecnie służy do wyświetlania różnorakich statystyk w programie.
Wiem, wiem, wersja cywilna generatora miała być już jakieś pół roku temu, ale jak zwykle występują opóźnienia (podobnie jak z DNF). Na szczęście projekt żyje i nadal się rozwija, więc nie ma się czym martwić :)
Po przeczytaniu notki na temat XUL-a stwierdziłem, że mój namespace dla rozszerzeń GHNS nie jest zbyt ciekawy. Tak więc powstała nowa przestrzeń nazw...
http://makagiga.org/damn.good.coffee/hot/ (to nie link)
Kto rozszyfruje wszystkie ukryte znaczenia? ;-)

Oxygen (wersja z SVN)**:

* Ikona RSS jest z Oxygena
** Niektóre ikony mogą wyglądać koślawo z powodu niedopracowanego skalowania w-dół
*** Tags i Tools ma ten sam mnemonic (co za idiota to robił? ;)
[javac] Compiling 512 source files...
Przy okazji pokażę jak wyglądają nowe widgety z projektu Glossitope (dawniej AB5k), uruchomione pod Makagigą 2.0:
Krótka, zabawna prezentacja Glossitope (video i PDF) na blogu autora :)
Prawie miesiąc temu napisałem, że "Makagiga 1.2 pojawi się najpewniej w tym tygodniu", no i zgodnie z obietnicą, jest w tym tygodniu ;) W stosunku do poprzedniego wydania lista zmian nie jest imponująca, jednak warto zrobić upgrade, ponieważ diabeł tkwi w szczegółach :)
Obecnie gałąź 1.x nie jest już rozwijana (będą tylko poprawki do 1.2.x). Ale nie ma się czym martwić, ponieważ od kilku tygodni trwają intensywne prace nad wersją 2.0 (codename Skyfish)...
Dzisiaj zrobiłem wtyczkę do obsługi widgetów AB5k. Na razie w wersji alpha, ale jakoś działa :) (Color Chooser - z prawej strony)
Wygląd zapewniony dzięki Substance Java look & feel, z różnymi ustawieniami i schematami kolorów.
Tym razem nowa wersja wyszła niespodziewanie szybko (sam jestem zaskoczony). Oto skrócona lista zmian:
Wersja 1.0 jest już faktem autentycznym ;-)
Powstała specjalna strona z wtyczkami. Jak widać wymaga jeszcze dopracowania (brakuje wyszukiwarki, jakiegoś sortowania, itp.), ale na początek wystarczy...
SDK to zestaw narzędzi pomocnych w tworzeniu nowych wtyczek do Makagigi. Po uruchomieniu "./start.sh", wyświetli się okno, z którego można utworzyć nowy projekt. Wystarczy podać typ wtyczki (widget, szukanie w internecie, itp.), preferowany język programowania (Java lub JavaScript) oraz nazwę. Następnie, po przejściu do katalogu z nowym projektem, należy uruchomić "ant test". Reszta opisu w pliku README.txt :-)
Pojawiła się Java 6, czyli teraz w końcu mogę wydać wersję 1.0 Makagigi :) Muszę tylko zaczekać na niemieckie tłumaczenie programu, oraz dokończyć SDK, co potrwa z tydzień lub dwa ;)
Przed chwilą napisałem sobie fajną wtyczkę do Makagigi. Wtyczka umieszcza przycisk "Wyślij" w edytorze tekstu. Wciśnięcie przycisku, powoduje dodanie nowego wpisu (przy użyciu Bota, DCOP i Kopete). Jako tytuł używana jest nazwa pliku...

PS. Dzięki nowemu SDK, całość programu pisałem około 3 minut... :-)
Kolejna wersja jak zwykle przynosi trochę nowości i poprawek:
Na screenshocie wtyczka czytnika kanałów z jakimś fajnym blogiem...
PS. To już ostatnia Beta. Wersja z SVN ma już magiczny numer wersji "1.0" :-)
W końcu dodałem brakującą funkcję skalowania obrazu, która pojawi się w następnej wersji 0.9.6 :) Kiedyś zrobię jeszcze możliwość podawania wartości w procentach oraz "batch processing", czyli zmianę rozmiaru wielu plików za jednym razem.
Ostatnio zapomniałem (czyt. nie-chciało-mi-się) napisać o tym, co nowego w wersji 0.9.4 i najnowszej 0.9.5, ale zrobię to wkrótce..
No to teraz chyba przestanę używać Digikam ;)
To po prostu zabytkowy komponent Acrobat Viewer for JavaBean, osadzony jako wtyczka do odczytu plików PDF. Taka ciekawostka... Niestety ten komponent jest dość niestabilny i brzydki :)
Jedna ze standardowych wtyczek do Makagigi, która to chyba miała pierwotnie służyć do rysowania, teraz szybko zmienia się w przeglądarkę zdjęć...
Teraz można zaznaczyć fragment obrazu. Po zaznaczeniu od razu pojawia się menu z poleceniami, które na pewno chciałeś użyć ;-)
Trochę filtrów do zmiany gammy, jasności, wyostrzania lub rozmywania obrazu, itp.
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...
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
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; }
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 :)
W wersji 0.9.4 (SVN) dodałem nową wtyczkę - Kosz. Dowolne pliki można przenieść do kosza za pomocą drag&drop, lub poprzez wybranie przycisku "Move To Trash" w oknie potwierdzenia. Pliki znajdujące się w koszu można edytować i przeglądać (bug czy feature? ;-). Wyciąganie z kosza aktualnie możliwe jest tylko via drag&drop (potem dodam jakieś menu).
Może usunąć przycisk "Delete" i zostawić tylko "Move To Trash"?
Od wczoraj Makagiga (wersja z SVN) ma w niektórych miejscach wbudowaną eksperymentalną obsługę skryptów. W praktyce oznacza to, że można zmienić daną funkcję programu dosłownie dwoma kliknięciami. Bez rekompilacji, bez szukania plików źródłowych, bez grzebania w systemie, bez ryzyka, że nasz błąd spowoduje konieczność ponownej instalacji oprogramowania... Wystarczy znajomość JavaScript (i API :P)
Kliknij prawym klawiszem na przycisku "Szukaj w internecie" (główny pasek narzędzi). Pojawi się mini IDE, gdzie można edytować i testować (F9) skrypt danej funkcji.
W ramach przykładu zmienimy istniejące okno na bardziej spartańskie (w stylu GNOME :P) W tym celu należy wkleić poniższy kod:
importPackage(org.makagiga.commons);
var text = window.prompt("Szukaj z Google", "Wpisz coś");
if (text)
OS.launchBrowser("http://google.pl/search?ie=utf-8&oe=utf-8&q=" + TK.escapeURL(text));
I gotowe! Zmiany zapisywane są w plikach ~/.makagiga/scripts/actions/*.js.
Podczas uruchamiania programu, wykonywany jest plik "user.js" (jeśli istnieje). Plik musi znajdować się w katalogu konfiguracyjnym Makagigi (np. ~/.makagiga/scripts/user.js).
importClass(org.makagiga.commons.MCalendar);
sidebar.tabPlacement = sidebar.TOP; // karty na górze
sidebar.addTab("Calendar", new MCalendar()); // kalendarz w pasku bocznym
Później napiszę, jak w 10 minut zrobić samemu "prawie jak JPA" ;)