Blame platform-demos/es/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="es">
Packit 1470ea
  <info>
Packit 1470ea
  <title type="text">Aplicación del clima (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>Cómo plantear una aplicación que usa llamadas asíncronas. Las llamadas asíncronas se presentarán mediante una aplicación de información meteorológica.</desc>
Packit 1470ea
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Daniel Mustieles</mal:name>
Packit 1470ea
      <mal:email>daniel.mustieles@gmail.com</mal:email>
Packit 1470ea
      <mal:years>2011 - 2017</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Nicolás Satragno</mal:name>
Packit 1470ea
      <mal:email>nsatragno@gmail.com</mal:email>
Packit 1470ea
      <mal:years>2012 - 2013</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Jorge González</mal:name>
Packit 1470ea
      <mal:email>jorgegonz@svn.gnome.org</mal:email>
Packit 1470ea
      <mal:years>2011</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  </info>
Packit 1470ea
Packit 1470ea
  <title>Aplicación del clima</title>
Packit 1470ea
  <synopsis>
Packit 1470ea
    

En esta parte de la guía se construirá una aplicación del clima usando llamadas asíncronas. En este ejemplo, la información del clima se obtiene de geonames.org y la aplicación usa los <link href="http://en.wikipedia.org/wiki/List_of_airports_by_ICAO_code:_E">códigos ICAO</link> para responder a las peticiones. Para escribir y ejecutar todos los ejemplos de código necesita un editor de texto en el que escribir el código, una terminal y GNOME 3 o superior instalado en su equipo. En esta guía se verán las siguientes partes:

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

<link xref="#planningUi">Planificar la interfaz gráfica de usuario</link>

</item>
Packit 1470ea
      <item>

<link xref="#asynchronous">Llamadas asíncronas</link>

</item>
Packit 1470ea
      <item>

<link xref="#main">El archivo del programa principal</link>

</item>
Packit 1470ea
      <item>

<link xref="#main">Biblioteca local GeoNames</link>

</item>
Packit 1470ea
      <item>

<link xref="#main">«Autotools» e iconos</link>

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

Después de leer este tutorial, debería ver esto en su pantalla:

Packit 1470ea
  <media type="image" mime="image/png" src="media/weatherAppJs.png"/>
Packit 1470ea
Packit 1470ea
  <section id="planningUi">
Packit 1470ea
    <title>Planificar la interfaz gráfica de usuario</title>
Packit 1470ea
    

Estructurar una aplicación GNOME 3 significa que usará <link href="http://developer.gnome.org/platform-overview/stable/gtk">GTK+</link>. Lo más importante es recordar que la ventana principal sólo aceptará un widget. Debe planificar su estructura de acuerdo a esto (este ejemplo usa una Gtk.Grid). Un método útil es dibujar la ventana principal y colocar dentro cada widget que necesite. Mirando la imagen de su futura aplicación es fácil definir las relaciones entre los widgets. Por ejemplo, Gtk.Grid coloca sus widgets en relación a otros widgets, por lo que después de colocar el primero, los demás se pueden colocar en relación al primero en la rejilla.

Packit 1470ea
  </section>
Packit 1470ea
  <section id="asynchronous">
Packit 1470ea
    <title>Llamadas asíncronas</title>
Packit 1470ea
    

En muchos lenguajes de programación, todas las operaciones se ejecutan síncronamente: le ordena al programa que haga algo, y esperará hasta que esa acción se complete antes de seguir. Esto, sin embargo, es malo para interfaces gráficas de usuario, ya que la aplicación entera se detendrá mientras el programa espera a la operación. Ser asíncrono (async) ayuda en este caso. Con llamadas async, su IU no se bloqueará con ninguna petición. Las llamadas async hacen su aplicación más flexible y mejor equipada para manejar situaciones en las que las llamadas toman más tiempo de lo esperado o por alguna razón se bloquean. Las llamadas async pueden usarse, por ejemplo, para E/S del sistema de archivos y para cálculos lentos en segundo plano.

Packit 1470ea
    

En este ejemplo, se deben obtener datos de geonames.org. Mientras se hace esto, se quiere que el resto del programa continúe. Si no obtuviéramos ninguna información de geonames.org por la falta de conexión a internet y esta fuera una aplicación síncrona, nunca se llegaría al punto en el que el main_quit() se procesa correctamente y habría que matar la aplicación desde una terminal.

Packit 1470ea
  </section>
Packit 1470ea
  <section id="main">
Packit 1470ea
    <title>Las diferentes partes del programa</title>
Packit 1470ea
  </section>
Packit 1470ea
</page>