Virtuální glóbus Marble: jak funguje, co umí, jaké jsou plány do budoucna. Puck je překladač XML definic uživatelského rozhraní do C++. Nová funkce KGet: ovládání přes webové rozhraní.
Další práce na spouštěčích, bindingy pro WebKit a počátek lepší podpory kompozitních správců oken v Plasmě, spolu s podporou více zdrojů v RSS plasmoidu. Přidány plasmoidy "BBall", "Show Desktop", "KMLDonkey", a "IM Presence" (za použití Decibel). Alternativní alt+tab přepínač oken (podobný s "Cover Switch" efektem z Compiz Fusion). SuperKaramba podporuje technologii "widgets-on-canvas" z Qt 4.4. Začalo dlouho očekávané přepsání KCron. Podpora operace Undo v dialogu KShortcutsEditor. Nové pluginy pro Digikam a Kritu. Různé vylepšení v KTorrent a Amarok 2.0. Práce na rozhraní a integrace MusicBrainz v KsCD (studentský projekt). Mnoho práce na přechodových efektech mezi stránkami v KPresenter. Začátek práce na integraci podpory pro online čtečky pro Akregator. Kubrick, rubikova kostka, byla importována do playground/games. KDiamond se přesunul z playground/games do kdereview, Kollision z kdereview do kdegames pro KDE 4.1. kdebase (trunk, KDE 4.1) nyní vyžaduje Qt 4.4. Akonalendar (malá aplikace pro demonstraci Akonadi modelů KCal) a grafická knihovna Quasar byly importovány do KDE SVN.
Marble je rychlý, univerzální a nenáročný virtuální glóbus. Je součástí balíku aplikací KDE-Edu a je velmi používán k demonstraci závratně krásného vzhledu KDE4. Ukážeme zde některé zajímavé momenty z vývoje, které se udály právě teď při vývoji pro vydání KDE 4.1.
Marble dnes
Marble je v KDE 4.0 virtuální glóbus. Je to normální aplikace, která ukazuje zeměkouli, umí přibližovat a vzdalovat pohled a dokáže zemi zobrazovat buď jako kouli nebo jako plochu. Marble je založen na dlaždicích, což znamená, že datové položky jsou obyčejné velké pixmapy, které můžeme získat ze zdrojů jako třeba NASA.
Uživatel si může vybrat z několika témat mapy, tj. použít třeba zdroj v podobně standardního zobrazení pro atlasy nebo noční mapu se světly měst, případně satelitní snímky. Stejně tak může určit, zda se mají zobrazovat další prvky typu hranice států, města nebo významná místa jako hory nebo vraky lodí (pomocí Marble se můžete podívat, kde je vrak Titaniku).
Kromě toho, že jde o samostatnou aplikaci, je Marble rovněž množina widgetů, které mohou programátoři použít ve svých projektech. Jde o mapový widget a dva ovládací prvky. Widgety rovněž nabízejí plnou integraci s Qt Designerem, takže vývojář může jednoduše umísťovat a upravovat komponenty za pomoci myši, stejně jako u běžných tlačítek.
Marble, vize
Přestože je v současnosti Marble virtuálním glóbem, v plánu je toho mnohem více. Očekáváme, že se takzvané "geografické služby" (Geo Services) stanou v blízké době běžnou součástí desktopu. Už teď dokáže Digikam geotagovat fotky, pokud fotoaparát obsahuje GPS. Geotagging prostě bude jednoduchá a běžná věc.
Manifest ve zdrojových kódech Marble říká: "Marble je zamýšlen tak, aby pro "geo prohlížeče" znamenal to stejné, co znamená je KHTML/WebKit pro webové prohlížeče". Jinými slovy, Marble bude centrální komponenta pro geografické služby.
Marble existuje ve dvou odlišných inkarnacích: v KDE verzi, která používá veškeré vymoženosti kdelibs, a Qt verzi, která je více portovatelná. Qt verze byla portována na Windows, Macintosh, Windows CE a OLPC. Doufáme, že se za nějaký čas stane Marble standardním geo prohlížečem na všech desktopech, Gnome nevyjímaje.
Marble a vývoj
K dosažení vize potřebujeme integraci. Marble potřebuje být plně integrovatelný do čehokoliv a také připraven k integraci ostatních komponent do sebe. Ve skutečnosti na toto klademe tak velký důraz, že jsme pro Marble 4.1 zvolili kódové jméno "Integration".
Widget Marble je v současnosti plně integrovatelný do jakékoliv KDE či Qt aplikace. Nicméně ne všechny frameworky widgety používají; například Flake Shapes z Plasmy a KOffice jsou dvě významné výjimky, ačkoliv Plasma v KDE 4.1 už dokáže používat i je.
Refaktoring pro umožnění integrace Marble bez widgetů
Právě jsme dokončili refaktoring, v němž jsme rozdělili MarbleWidget do dvou tříd:
- MarbleMap, což je abstraktní mapová třída, která dokáže kreslit na libovolné zařízení.
- MarbleWidget, což je obdoba staršího widgetu, ale pro vykreslování používá MarbleMap.
Vývojář, který nechce použít widget, prostě může použít MarbleMap a říct mu, aby se překreslil, kdykoli je to potřeba.
Refaktoring pro podporu externích pluginů
Vývoj probíhá i uvnitř Marble. Vnitřní mašinerie je dosti složitá kvůli extrémním výkonnostním nárokům, které jsou na hardware kladeny pro zajištění plynulých změn pohledu. Pamatujte, že Marble dobře funguje i bez hardwarové akcelerace.
Rozdělení jednotlivých vrstev je v současnosti daleko lépe definováno a refaktoring se zaměřuje na to, aby mohly externí pluginy vytvářet samostatné dlaždicové vrstvy, kombinovat je, vytvářet vektorové vrstvy či významné body nebo všechny předešlé libovolně kombinovat. Tyto pluginy budou také schopné se zapojit do systému pro nastavení legendy, což uživatelům umožní libovolně zapínat a vypínat různé funkce.
Podpora pro formáty KML a GPX
KML je XML formát, který se používá pro data, jež mohou být vložena do Google Maps a Google Earth. Marble 4.1 bude obsahovat podporu pro nejčastěji používané části KML a možná i pro KML celé. Takže jakákoli data, která mohou být zobrazena v Google Earth, bude také možné zobrazit v Marble.
Marble 4.1 bude podporovat i standardní trackovací soubory GPS (takzvané "GPX") a dost možná také další formáty souborů.
Podpora pro vlastní scény
Marble podporuje formát DGML, nový XML formát navržený přímo pro něj. DGML popisuje téma pro mapy nebo obecné nastavení kombinující jednu či více množin dlaždic s daty ostatních typů, jako jsou vektory či významné body. Pro Marble 4.1 jsme rozšířili DGML formát na DGML2, který je velmi šikovný. Příklady použití: vědci mohou vytvořit specializované mapy pro sledování zemětřesení, mapy počasí s kompletním popisem veškerých použitých symbolů, integrace s OpenStreetMap a tak dále.
Podpora další geografické infrastruktury
Pokud to vyjde, bude Marble 4.1 rovněž integrován do dnes existujících geo frameworků jako GeoClue, který se snaží ze souřadnic GPS, IP adresy a dalších zdrojů najít vaši současnou pozici. Rovněž podporuje GPS démona gpsd.
Doufáme, že lidé budou využívat všechny tyto nabízené možnosti integrace Marble a budou vytvářet nové a zajímavé způsoby, jak používat geografické služby na desktopu. Myslím, že si dnes ani nedokážeme představit všechny možnosti použití, které lidé vyvinou, až se potenciál KDE4 naplno projeví v KDE 4.2 a dále. Momentálně můžete použít Marble widget a Marble map ve vašich projektech a brzy bude možné napsat vlastní plugin do Marble. Kontaktuje mě (ingwa) nebo Torstena Rahna (tackat) na irc://irc.freenode.com/#kde-edu. Odpovíme skoro na všechno. Rovněž se můžete přihlásit do marble-devel@kde.org a získat informace přímo z první ruky.
Tentokrát nehodlám mluvit přímo o Lancelotu, přestože z něj uvidíte screenshoty, ale hlavně o nástroji, který vytvářím, abychom si vývoj Lancelotu a dalších plasmových aplikací usnadnili.
Jméno toho nástroje je "Puck" (Dannyho nápad), což by mohlo znamenat Plasma UI Compiler K. Puck je nástrojem pro konverzi XML definice uživatelského rozhraní do C++ kódu Plasmy.
Není příliš složité vytvořit velice komplexní GUI přímo v C++, ale změny nebo přeuspořádání takového rozhraní jsou otrava. S UI definovaným v XML je to otázka cut-and-paste, což je přesně způsob, jak byla vytvořena kompaktnější verze Lancelotu nebo k uzpůsobení jeho vzhledu ala Kickoff. (Jediným účelem takových rozložení bylo udělat screenshoty pro tento Commit-Digest, finální verze Lancelotu tak vypadat nebude.)

V současnosti Puck podporuje výhradně widgety a rozložení použitá v Lancelotu a je rovněž schopen generovat výhradně kód v C++. To znamená, že zatím není možné nahrát soubor s definicí UI za běhu.
Hlavní cíle do budoucna jsou:
- podpora pro veškeré Plasma widgety a rozložení
- podpora pro ECMAScript či Python a s tím také nahrávání nebo změna rozložení za běhu
- vymyslet, co provést s podporou QWidget na QGV představenou v Qt 4.4
V tuto chvíli je Puck součástí sestavovacího systému Lancelotu a je k dispozici v extragear/plasma/applets/lancelot/tools/puck. Není určen k použití pro jiné účely, tedy zatím ještě ne. Pokud byste jej chtěli použít pro váš vlastní projekt, můžete mě kontaktovat - adresa je ivan(dot)cukic(plus-sign)kde(at)gmail(dot)com.
KGet v KDE 4.1 má novou funkci: webové rozhraní k ovládání stahování přes Internet.
Je to užitečné především pro velké objemy dat, které zaberou spoustu času. Například stahování torrentů, což bude s KGetem v KDE 4.1 možné. Na jednom počítači ve vaší lokální síti můžete spustit KGet (server), který pravděpodobně tak jako tak běží stále! Potom stačí jenom povolit na daném stroji webové rozhraní a můžete ovládat stahování na tom stroji odkudkoliv, kde máte přístup k síti/Internetu.

Webové rozhraní by mělo pracovat s libovolným prohlížečem dodržujícím standardy. Technologie použité pro to všechno jsou XHTML, CSS, Javascript, JSON a Ajax. Bude to pracovat velmi rychle i na pomalých linkách, protože se pokaždé nenahrává celá stránka. Přenáší se pouze seznam stahování, což je velice malý JSON soubor. "Webserver" je postaven na QTcpServer z Qt. Může to být zajímavé pro jakoukoli Qt aplikaci, která chce nabízet webové ovládání.

Webové rozhraní je plně přeložitelné, stejně jako jakákoli jiná KDE aplikace. Vzhled navrhl Mensur Zahirovic. Patří mu velké díky za tak pěkný layout.