Blame platform-demos/cs/weatherApp.js.page

Packit 1470ea
Packit 1470ea
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" type="guide" style="task" id="weatherApp.js" xml:lang="cs">
Packit 1470ea
  <info>
Packit 1470ea
  <title type="text">Aplikace s počasím (JavaScript)</title>
Packit 1470ea
    <link type="guide" xref="js#examples"/>
Packit 1470ea
    <revision version="0.1" date="2012-03-09" status="stub"/>
Packit 1470ea
Packit 1470ea
    <credit type="author copyright">
Packit 1470ea
      <name>Susanna Huhtanen</name>
Packit 1470ea
      <email its:translate="no">ihmis.suski@gmail.com</email>
Packit 1470ea
      <years>2012</years>
Packit 1470ea
    </credit>
Packit 1470ea
    <credit type="editor">
Packit 1470ea
      <name>Marta Maria Casetti</name>
Packit 1470ea
      <email its:translate="no">mmcasetti@gmail.com</email>
Packit 1470ea
      <years>2013</years>
Packit 1470ea
    </credit>
Packit 1470ea
Packit 1470ea
    <desc>Jak naplánovat aplikaci, která používá asynchronní volání. Asynchronní volání budou předvedena na aplikaci s počasím.</desc>
Packit 1470ea
Packit 1470ea
  </info>
Packit 1470ea
Packit 1470ea
  <title>Aplikace s počasím</title>
Packit 1470ea
  <synopsis>
Packit 1470ea
    

V této lekci sestrojíme aplikaci s počasím používající asynchronní volání. Informace o počasí budeme v tomto příkladu získávat z geonames.org a aplikace používá <link href="http://cs.wikipedia.org/wiki/ICAO_k%C3%B3d_leti%C5%A1t%C4%9B">kódy ICAO</link> pro určení místa v požadavku o počasí. Abyste si mohli napsat a spustit kód příkladu sami, budete potřebovat v počítači nainstalovaný editor pro psaní kódu, terminál a GNOME 3.0 nebo novější. V této lekci budeme postupovat následujícími částmi:

Packit 1470ea
Packit 1470ea
    <list>
Packit 1470ea
      <item>

<link xref="#planningUi">Plánování grafického uživatelského rozhraní</link>

</item>
Packit 1470ea
      <item>

<link xref="#asynchronous">Asynchronní volání</link>

</item>
Packit 1470ea
      <item>

<link xref="#main">Soubor s hlavním programem</link>

</item>
Packit 1470ea
      <item>

<link xref="#main">Místní knihovna GeoNames</link>

</item>
Packit 1470ea
      <item>

<link xref="#main">Autotools a ikony</link>

</item>
Packit 1470ea
    </list>
Packit 1470ea
  </synopsis>
Packit 1470ea
Packit 1470ea
  

Po přečtení této lekce byste měli na obrazovce dostat toto:

Packit 1470ea
  <media type="image" mime="image/png" src="media/weatherAppJs.png"/>
Packit 1470ea
Packit 1470ea
  <section id="planningUi">
Packit 1470ea
    <title>Plánování grafického uživatelského rozhraní</title>
Packit 1470ea
    

Strukturování aplikace v GNOME 3 znamená používat <link href="http://developer.gnome.org/platform-overview/stable/gtk">GTK+</link>. Nejpodstatnější věc, kterou si musíte zapamatovat, je, že hlavní okno může obsahovat jen jeden widget. S tím musíte počítat při návrhu struktury (v tomto příkladu použijeme Gtk.Grid). Vhodným způsobem je vložit do hlavního okna tento box a všechny widgety umístit do něj. Když se podíváte na obrázek budoucí aplikace, je snadnější říci, jaké jsou mezi widgety vztahy. Například Gtk.Grid umisťuje vaše widgety vůči ostatním widgetům, takže od chvíle, kdy je na místě první widget, může být umístění dalších provedeno vůči ostatním widgetům v mřížce.

Packit 1470ea
  </section>
Packit 1470ea
  <section id="asynchronous">
Packit 1470ea
    <title>Asynchronní volání</title>
Packit 1470ea
    

V mnoha programovacích jazycích běží všechny operace synchronně – řeknete programu, aby něco udělal a než se může pokračovat, bude se čekat, než to bude úplně hotové. To se ale nehodí pro grafické uživatelské rozhraní, protože celá aplikaci by zamrzla během toho, co by se čekalo na nějakou operaci. Zde pomůže asynchronní provádění. S asynchronními voláními nebude vaše GUI blokováno žádným požadavkem. Asynchronní volání učiní vaši aplikaci pružnější a lépe vybavenou na zpracování situací, kdy volání zabralo více času, než se počítalo, nebo se z nějakého důvodu zaseklo. Asynchronní volání lze použít například u V/V operací souborového systému a pro pomalejší výpočty na pozadí.

Packit 1470ea
    

V tomto příkladu musíme získat data z geoname.org. Zatímco se tak bude dít, chceme aby zbytek programu pokračoval. Pokud bychom z geonames.org nedostali žádné informace kvůli problémům s připojením k Internetu a jednalo by se o synchronní aplikaci, nedostali bychom se nikdy do bodu, kdy je správně provedena naše funkce main_quit() a aplikaci by bylo nutné zabít z terminálu.

Packit 1470ea
  </section>
Packit 1470ea
  <section id="main">
Packit 1470ea
    <title>Různé části programu</title>
Packit 1470ea
  </section>
Packit 1470ea
</page>