There is no data. There is only XUL (II)
« There is no data. There is only XUL | Bloglines Toolkit 1.2 »
Para que veais por encima la estructura de un programa en XUL vamos a escribir un programa de tipo 'Hola Mundo', aunque como todos los programadores que se creen originales y rebeldes en lugar de un 'Hola Mundo' nuestro programa mostrará alguna frase geek; por ejemplo 'I know kung foo'.
Usando un editor de texto cualquiera (¿que tal vim?) escribimos lo siguiente, teniendo cuidado con las mayúsculas y las minúsculas, ya que XML es case sensitive, y lo guardamos como foobar.xul por ejemplo:
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<!--Esto es una ventana-->
<window id="ventana-principal" title="The Kung Foo Style" xmlns="http://www.mozilla.org/keymaster/gatekeeper/ there.is.only.xul">
<box>
<button label="Matrix has you" onclick="alert('I Know Kung Foo');" />
</box>
</window>
Si abrimos Mozilla o Firefox, nos vamos a Archivo->Abrir y seleccionamos nuestro fichero foobar.xul veremos algo similar a esto
Ahora que ya habeis visto la sencillez de XUL vamos a ir línea por línea para ver que es cada cosa. Con la primera línea, <?xml version="1.0"?> lo que hacemos es declarar este archivo como un archivo xml. Un documento XUL siempre tiene que empezar con esta línea, no tiene mas importancia.
La segunda línea <?xml-stylesheet href="chrome://global/skin/" type="text/css"?> nos permite indicar que hoja de estilo queremos utilizar para definir el aspecto de la aplicación. Estamos hablando de documentos css como los que se utilizan para definir el estilo de una página web, si; mientras XUL define que widgets vamos a utilizar en nuestra aplicación se usa css para definir el aspecto que tendrán estos. En este ejemplo en concreto estamos importando global.css referenciado por chrome://global/skin/ (chrome:// es un tipo especial de URL, podríamos haber utilizado una hoja de estilos creada por nosotros si quisieramos tal como si fuera un documento HTML).
En la tercera línea tenemos un comentario. Los comentarios siempre tienen que estar entre <!-- y --> como define XML y es ignorado al interpretar el documento XUL.
Debajo, en la cuarta línea, estamos creando una ventana nueva con <window>, cuyos atributos son id para darle un nombre y poder referenciarla mas tarde, title que indica el texto a mostrar en la barra de título y xmlns que indica el espacio de nombres a utilizar. Un espacio de nombres indica los elementos que se reconocen como válidos a la hora de interpretar el fichero; en este caso en concreto solo se reconocerán los elementos definidos en XUL, eso es lo que hace la URL http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul (notar el there is only xul).
En la sexta línea tenemos una etiqueta box, por box model, el modelo de gestión del layout (como se colocan los objetos dentro de la ventana) que utiliza XUL. Probad a eliminar el <box> y </box>, vereis que la interfaz se descoloca.
Dentro del box utilizamos la etiqueta button para crear un botón que tendrá como texto a mostrar 'Matrix has you', definido por el atributo label. Ese onclick le sonará a la gente que utilice javascript; lo que hace es que al pulsar sobre nuestro botón (onclick) muestre un alert con el texto que le pasamos como argumento. Como habreis imaginado esto completa el cuadro de las aplicaciones XUL (por ahora): XUL define los widgets de la aplicación, con css definimos el aspecto de estos y con javascript su funcionamiento.
Por último cerramos la etiqueta window con </window>, tal como se hace con las etiquetas de HTML (XHTML es un subconjunto de XML, como lo es XUL, de ahí las semejanzas).
Relacionadas
Primero: Copiar y pegar directamente en, por ejemplo, un editor tan sencillo como el Notepad no me ha acarreado más que problemas. La doble coma no era aceptada por el validador de XML del Mozilla, no he encontrado si debía guardar el documento como UTF-8, UNICODE, ANSII, etc., la línia en la que hay el comentario de "Esto es una ventana" tampoco era aceptada por el XML.
Segundo: Me ha sido imposible descargar el ejecutable del VIM de la web oficial del programa.
Tercero: El copiar y pegar directamente del código que has puesto aquí al UltraEdit-32 me ha dado problemas en los guiones, los apóstrofes, la doble coma …
En fin, que no he pasado del código y ya llevo más de 10 pruebas con el foobar.xul. Podrías actualizar el post para hablar o especificar estas nimiedades que no me han traído más que dolor de cabeza, porfavor ?
Lo siento, es culpa de Wordpress, que sustituye las comillas simples y dobles (y otras cosas) por lo que le da la gana. Así que sustituyelos por sus versiones correctas a mano.
En su día esto estaba escrito usando un plugin de código que lo mostraba resaltado, con barra de desplazamiento y con los caractéres como dios manda, pero lo borre para aligerar la carga del sitio. Algún día tengo que volver a instalarlo.