Dashboard

Image doesn't exist
Foto: Gandalf

Dashboard přišel v Mac OS X 10.4 (Tygr) jako nové prostředí pro spouštění malých aplikací, které Apple nazývá widgety (věcičky). Svým smyslem odpovídají pomůckám v klasickém Mac OS. Samozřejmě, že Mac OS X kompletně změnil ovládání, používání a vývoj těchto nástrojů. Na rozdíl od běžných aplikací je vývoj pro Dashboard jednodušší. S příchodem Tygra vypadala tato technologie velmi slibně, nicméně po letech to vypadá, že tato technologie stagnuje.

Vytváření Widgetů

Dashboard widgety jsou ve své podstatě hodně podobné webové stránce. HTML/CSS vytváří uživatelské rozhraní, JavaScript mu pak dává život. Dashboard pak plní funkci webového prohlížeče, který navíc umí:

  • Spustit unixový příkaz
  • Vykreslovat na obrazovku příkazy Quartz
  • Nahrávat a spouštět Internetové pluginy jako Preview
  • Spolupracovat s programy, které podporuje skriptovací moduly např. iTunes.

Prostředí Dashboardu odstraňuje z HTML prohlížeče nástrojovou lištu, základní velikost a barvu pozadí a umisťuje jej do vlastního sandboxu, takže se navzájem neovlivňují. To dovoluje běh jednotlivých widgetů tak, že uživateli připadají jako samostatná aplikace.

Jádro Widgetu

Pokud si rozeberete widget, zpravidla bude obsahovat minimálně tři soubory:

  • info.plist, což je klasický formát vlastností aplikace, který je v tomto případě použit pro nastavení widgetu
  • Obrázek na pozadí v PNG formátu
  • HTML stránka, která je zobrazena při spuštění widgetu (pochopitelně, součástí může být také zvláštní CSS soubor, JavaScriptový soubor či ikona)

Stejně jako u aplikací, pokud tyto komponenty dáte do složky, složka se může začít ihned chovat jako widget. V tomto případě je však nutné složku pojmenovat s příponou .wdgt. Náročnější pluginy se pak vytváří přes Cocoa widgety pluginy, jeden či více JavaScript souborů (kvůli posunu textu, předvolbám atd) nebo více obrázků (pro personalizované nabídky nebo tlačítka).

Od Mac OS X 10.5 (Leoparda) se můžete setkat s aplikací Dashcode, která umožňuje vytvářet widgety jednodušeji. Leopard také mimo jiná přináší "Web Clips", což dovole uživateli vytvořit widgety z části stránky. Během WWDC v roce 2007 Steve Jobs vytvářel widgety z titulků na Yahoo.com, nejhledanějších termínů Apple, Foto dne National Geographic či Dilberta. Uživatel zde mohl upravovat okraje widgetů a dále si je personalizovat.

Architektura Dashboardu

Architektura Dashbaordu se skládá z následujících komponent:

Dashboard Serveru - odlehčeného procesoru, která spravuje uživatelské rozhraní Dashbordu, včetně lišty Widgetů (Widget bar), tlačítko pro uzavření a spouštěcí efekty Widgetu.

Klientské procesy dashboardu - poskytuje vrstvu mezi Dashboard serverem a vlastními widgetem. Poskytuje například Web Kit pro zobrazení uživatelského rozhraní. Dashboard server spouští samostatný proces pro každý spuštěný widget.

Widget instance - do které se zobrazují data a integrují s uživatelem.

Každý widget běží uvnitř samostatného klientského procesu, který poskytuje sandbox, takže neovlivňuje jiný widget nebo aplikaci. Kvůli spolehlivosti Dashboard také opatrně spravuje widgety. Pokud widget spadne, je automaticky restartován, takže se znovu objeví v Dashboardu. Pokud se widget chová špatně a spadne třikrát za sebou, Dashboard jej automaticky odstraní.

Obsah souboru Info.plist

Soubor Info.plist obsahuje základní informace o widgetu. Tuto informaci pak využívá Dashboard pro identifikaci Widgetu a kde může nalézt jeho zdroje. Nejrychlejší cesta pro jeho vytvoření je využitím aplikace Property List Editor, která je součástí vývojářských nástrojů.

Soubor Info.plist musí/může obsahovat následující položky

Název klíče Popis Vyžadován
CFBundleName Název celého balíku ANO
CFBundleDisplayName Zobrazované jméno balíku v případě, že je widget lokalizován ANO
CFBundleIdentifier Identifikátor balíku ve stylu reverzní internetové domény ANO
CFBundleVersion Číslo verze Widgetu ANO
MainHTML Název hlavní HTML souboru s rozhraním Widgetu ANO
Width Šířka Widgetu v bodech Ne
Height Výška Widgetu v bodech Ne
CloseBoxInsetX Horizontální souřadnice tlačítka pro zavření Widgetu Ne
CloseBoxInsetY Vertikální souřadnice tlačítka pro zavření Widgetu Ne
Plugin Jméno Widget pluginu, používaného Widgetem Ne

Vlastní widget v pěti krocích

Nadpis kapitoly je trochu nadnesen, ale ne příliš, podívejme se tedy co potřebujete:

  • Založte si novou složku, která bude obsahovat váš Widget
  • Založte si soubor Info.plist (viz kapitola výše)
  • Vytvořte si hlavní HTML soubor svým text editorem
  • Otevřete si HTML soubor v Safari, aby jste jej mohli vidět
  • Klepněte na reload v Safari, pokud potřebujete načíst změny

Pokud se vám tento krásný, iterativní způsob nelíbí, můžete si stánout vlastní verzi Widgetu z ukázek u Dashboard SDK či jejich aktualizovanou verzi na stránce věnované ukázkám Dashboard kódu.

Mac OS X technologie ve vašem widgetu

Je samozřejmé, že pouze s HTML, CSS a JavaScriptem by jste příliš užitku nepřinesli. Proto Apple umožňuje ve widgetu používat i některé technologie z Mac OS X

UNIXové příkazy

Skript napsaný v sh, tcsh, bash, tcl, Perl, Ruby či AppleScriptu může být přístupný z Widget objektu. Možnost přistupovat k těmto prostředkům neuvěřitelným způsobem posiluje možnosti každého Widgetu. Podrobněji to ukazují vyučovací stránky Dashboardu.

Kreslíme s Quartzem

V Dashboaru není nutné vše vykreslovat jen pomocí HTML, ale můžete využívat také tagy canvasu. Tyto kreslící metody poskytují možnosti vytvářet obrazy, kreslit antialiasované čáry nebo vytvářet komplexní kvadratické cesty. Příkladem těchto možností je Widget Word Clock, který rotuje a komponuje několik obrázků do rozhraní, které vidíte.

Aby  jste využili těchto možností Dashboardu, je nutné vymezit oblast v HTMl kam se má kreslit a kreslit pomocí JavaScriptu. Následující ukázka nakreslí modrý čtverec nad kterým nakreslí červený s průhledností. Výsledkem je fialový čtverec s modrým okrajem.

<html>
<head>
</head>
<body>
<canvas id="canvas" width="200" height="200"></canvas>
<script>
    var canvas = document.getElementById("canvas");
    var context = canvas.getContext("2d");
    context.clearRect(0, 0, 200, 200);
    context.setFillColor(0.0, 0.0, 1.0, 1.0);
    context.fillRect(0, 0, 200, 200);
    context.setFillColor(1.0, 0.0, 0.0, 0.5);
    context.fillRect(20, 20, 160, 160);
</script>
</body>
</html>

Pokud se podíváte funkce volání Quartz 2D v C nebo Objektovém-C, zjistíte jak máte volat funkce ve Widgetu.

Protože Widgety se zobrazují pomocí Web Kitu, jakýkoliv používaný Internetových plug-in se může využívat ve Widgetu. Tímto způsobem může Widget zobrazovat QuickTime film, stejně jako flashovou aplikaci.

Pokud chcete jít hlouběji do systému, můžete si vytvořit Cocoa doplněk do Widgetu. Tyto plug-iny pak pracují tak, že vytvářejí JavaScript objekt, který je pak přístupný ve Widgetu.

Widget plug-iny jsou vytvářeny pomocí Xcode, v předloze "Cocoa Bundle". Když byl projekt nastaven, hlavní třída doplňku musí být implementována následující metodou:

- (id) initWithWebView:(WebView *) webView;
- (void) windowScriptObjectAvailable:(WebScriptObject *) windowScriptObject;

První metoda je volána, když Widget nahrává plug-in. Druhá metoda je volán a dovoluje poskytovat JavaScriptový objekt, který může Widget použít. To pak propojí JavaScript a Objektové-C. Následující implementace pak vytváří objekt se jménem MyScriptObject a dovoluje, aby tato metoda byla volána z JavaScriptu:

- (void) windowScriptObjectAvailable:(WebScriptObject *) windowScriptObject
{
    MyScriptObject *myObj = [[MyScriptObject alloc] init];
    [windowScriptObject setValue:myObj forKey:@"MyScriptObject"];
}

Objekt pak může být použit v JavaScriptu tímto způsobem:

<script>
if (window.MyScriptObject) {
MyScriptObject.someMethod(someArg);
}
</script>

Instalace Widgetu

Ať již widget získáte jakýmkoliv způsobem, instalace do Dashboardu je snadná. Stačí je umístit do jedné ze složek:

  • /Library/Widgets
  • ~/Library/Widgets

Instalace proběhne i prostým poklepáním na soubor (nebo přesněji to, co se tváří jako soubor).

 

Změna barev | Autorská práva | Kontakt | Podpora | RSS kanály
© 2006 Gandalf, Design by Mirek
Creative Commons License