Otras fuentes de información sobre MetaCard

En el propio MetaCard existen otros dos tutoriales, lo cual permite aprender al tiempo que construir y practicar. Pero quiero destacar que hay otras opciones interesantes para aprender cosas sobre él (también son aplicables para Revolution): desde mirar el propio código de MetaCard y reaprovechar objetos que nos interesen a direcciones de la Web donde encontrar ejemplos listos para utilizar y pequeñas piezas para casos concretos.

Tutorial sobre interfaces (Front-end Tutorial)

Esta es una de las opciones que hacen de esta herramienta diferente a otras en el mundo de Multimedia (y en este sentido, el lector puede reconocer la similitud existente entre opciones como el Tcl/Tk de John Ousterhout y la que nos ocupa en este documento).

Nota: Si el lector no es el afortunado usuario de una plataforma UNIX puede que tenga que recurrir a la imaginación para encontrar una aplicación que no quiera ser protagonista en la pantalla ... Aquí se utiliza la orden find del sistema operativo para buscar archivos. ¿Que su sistema operativo no tiene una orden así? ¡Venga ya! Pues no se ..., ah sí, puede adaptarlo a la orden de listar ficheros de su "sistema".

Lo encontrará junto a los otros dos tutoriales que ya hemos visto. Le recomiendo que la pruebe, puesto que le mostrará cómo crear un interfaz más complejo (con menús, aceleradores de teclado, etc.), redimensionar objetos en una ventana para adaptarse a un tamaño diferente de la misma, lanzar otras pilas o crear un ejecutable. En la Figura 1-12 puede ver un ejemplo de la pila en ejecución. No es muy sorprendente a primera vista, pero cada una de las nueve tarjetas le enseñarán detalles sobre cómo construir en MetaCard aprovechando el propio MetaCard.

Figura 1-12. Creación de Interfaces con el Front-End Tutorial.

Sugerencia: El planteamiento de este uso de MetaCard ha sido utilizado en un artículo de la revista "Linux Journal" que puede encontrar en la Red. Haga de investigador y, si tiene acceso en estos momentos a la Web, recórrala buscando el mencionado artículo de ... Ud. es el investigador.

Tutorial para aplicaciones externas

En ocasiones, es necesario realizar una programación a más bajo nivel que la que permite MetaTalk y mantener la coherencia de interfaz gráfico que permite el desarrollo del interfaz con objetos de MetaCard. Si es usted conocedor de la programación en C y necesita una aplicación que se comunique directamente con el motor de ejecución de MetaCard, este es su tutorial. Un ejemplo de las posibles realizaciones de este tutorial se muestra en la Figura 1-13, la Figura 1-15 y la Figura 1-14.

El primer ejemplo muestra cómo realizar llamadas a funciones implementadas en lenguaje C desde MetaCard. El código de ejemplo se puede obtener del fichero external.tar.Z que deberá compilarse y situarse en el mismo directorio donde se encuentra el ejecutable de MetaCard. El ejemplo realiza las llamadas pertinentes y deja los resultados su ejecución en los campos de texto correspondientes. También muestra cómo compartir datos accediendo a las variables que se declaran en MetaCard.

Figura 1-13. "External Tutorial": aplicaciones de extensión de operaciones de cálculo matemático.

El segundo de los ejemplos (en la segunda tarjeta de la pila) ejemplifica cómo utilizar la propiedad imagePixmapId de un objeto de tipo image, permitiendo la interacción asíncrona entre MetaCard y una aplicación externa que utiliza esa referencia visual en pantalla. El código es el del "Juego de la vida" donde la regla básica es que una celda (el elemento básico de tal planteamiento) permanece activa (sobrevive) si tiene dos o tres celdas vecinas activas (vivas) y se desactiva (muere) en otro caso. La evolución de estas "comunidades de individuos" se actualiza a cada iteracción del algoritmo a partir de una situación inicial y los elementos pueden tener comportamientos más complejos, con lo que habrán "comunidades" que pueden converger a un estado estable, mientras otras permanecen en un continuo cambio (de posición o de disposición).

La aplicación externa dibuja en este contenedor ("X pixmap") a partir del identificador que se le pasa, actualiza sus contenidos y los refresca en pantalla de modo asíncrono respecto a MetaCard (sin la intervención directa de este). Por lo que es posible, por ejemplo, mover la imagen mientras se actualiza su contenido; así como modificar sus elementos activos con el ratón.

Figura 1-14. "External Tutorial": aplicaciones con salida gráfica (imagePixmapId).

Un ejemplo más lo proporciona la siguiente tarjeta de esta aplicación, donde se muestras las bases de las operaciones de procesado de imágenes a partir de la utilización de filtros y la utilización de la función "MatrixConvolve" de MetaCard.

Figura 1-15. "External Tutorial": aplicaciones para acelerar el procesado de imágenes mediante librerías externas.

La versión de ALTUIT RunRev Site ofrece una versión totalmente independiente de plataforma de este ejemplo, en una versión realizada sobre Revolution, que puede ejecutarse desde MetaCard y que en función de la plataforma que detecta se está utilizando para ejecutar la aplicación ofrece una versión a partir de la utilización de un programa externo o desde el propio MetaCard cuando está en las otras plataformas.

Volveremos sobre estos últimos casos con más profundidad en la sección de nombre Procesado de imágenes en Capítulo 9.

Figura 1-16. "External Tutorial": la versión de ALTUIT utiliza la función MatrixConvolve.

Si lo que necesita es introducirse en el mundo de la programaciónn, puede hacerlo también con MetaCard. Si se dirige al sitio FTP de MetaCard, puede encontrar la última versión de esta herramienta antes de que se haya hecho pública. En esta dirección de FTP, junto a la distribución, puede encontrar dos ficheros: mtp.mc y mtpguide.mc que le ayudarán en este trámite. También podrá encontrar dirección en la URL http://www.metacard.com/pi6.html con su navegador favorito. Aquí, repasaremos estos conceptos en el Capítulo 3.

Pero si lo que necesita es conocer opciones de MetaCard con mayor profundidad para tener una mejor idea de lo que puede hacer con ella, le recomiendo que busque en las MetaClasses de Cross Worlds Computing. En el sitio Web de esta empresa encontrará junto a extensiones de MetaCard, la referencia por orden de dificultad a una serie de items sobre el desarrollo de aplicaciones que, a modo de pequeñas lecciones, introducen de forma amena al lector interesado en cuestiones avanzadas. En la la sección de nombre MetaClasses, haremos un breve resumen de estas.

Pero no olvidemos que desde dentro de la propia herramienta se nos ofrecen ejemplos de utilización de órdenes y objetos en el apartado de MetaCard Examples que estaba en la pila de ayuda que ya habrá visitado. Y, por último, en la ayuda en línea, a la que puede acceder desde la misma pila y que está compuesta por:

Desensamblando MetaCard

Otra de las formas de aprender sobre un lenguaje de programación o la utilización de una aplicación es viendo ejemplos de cosas hechas con ellos. En este caso podemos aprovechar que MetaCard, el entorno (como Revolution), está hecho con pilas y el lenguaje de programación MetaTalk. Así que podemos coger el "Control Browser" y abrir la pila "Home", la "Menu Bar" o cualquier otro elemento con el que interactuemos en este sistema. También podemos copiarlos a nuestra aplicación y reutilizarlos.

Figura 1-17. Desensamblando la pila "Home" para aprender.

#
# Botón "Menu Bar"
#
on mouseUp
  if the short name of me is "Menu Bar"
  then palette "MetaCard Menu Bar"
  else palette "Tools"
end mouseUp

#
# Botón "Message Box"
#
on mouseUp
  modeless "Message Box"
end mouseUp
                         

Toda ventana que abre MetaCard es una oportunidad de aprender, puesto que todas son subpilas de la pila HOME o de la "Menu Bar" generalmente. Yo empezaría por examinar la pila "Home", claro, ¿por qué no?. Tranquilo, no la va a romper y más tarde hablaremos de lo que hay que hacer para modificarla[1]. En la figura Figura 1-17 verá la que utilizo ahora y el código de dos botones de la pila "Home", los tres últimos botones no son del interfaz estándar ... Algunas otras interesantes (Figura 1-18) son las que se ejecutan desde las opciones de menú de la "Menu Bar": File|Import..., File|Page Setup..., Tools|Find..., Tools|tools.metacard.com.

Figura 1-18. Pilas de donde aprender, de arriba abajo y de izquierda a derecha: importar elementos, configurar la impresión, buscar en los campos de texto y descargas de Internet.

La "demo" es, posiblemente, uno de los sitios más bonitos y divertidos para aprender. Si también trabaja sobre GNU/Linux verá que algunos manejadores de ventanas son reacios a atender peticiones de eliminar la barra de título de la ventana. Esta demostración que incorpora MetaCard utiliza esto para empezar e impresionar y, en ocasiones, sólo se ve el fondo negro y se oye que pasan cosas de fondo. ¿Nos vamos a quedar sin ver la "demo"? Tranquilo, no. Pero bueno, de paso echaremos un vistazo al código en tres pasos:

  1. Tanto para aprender como para cursiosar, necesitamos saber dónde está la pila. Dspués de curiosear en el código del botón correspondiente de la pila "Home" veremos que la pila que implementa esta demostración es mcdemo2.mc:.

    on mouseUp
      go "mcdemo2.mc"
    end mouseUp
                             
  2. Sabido esto, podemos ir a la "Menu Bar" y ejecutar:

    lock messages; open stack "mcdemo2.mc"
                             

    Si no observa más que un triste recuadro gris, sin imánenes, texto, ejecute MetaCard en su directorio de origen. Utiliza rutas relativas (lo cual es correcto) pero nosotros no hemos dejado que se incie asegurando la ubicación correcta, así que ... También puede cambiarla a mano y reiniciar la "demo", ¡claro!

  3. Ya podemos empezar a ver código, desde la "Message Box" ejecutando cosas como:

    • edit script of stack "mcdemo2.mc"
                               

      Allí verá por qué las pilas de MetaCard desaparecen al ejecutar MetaCard . ¿No sabe por qué? digo "desaparecen"? Entonces es por que no ha intentando ir al "Control Browser" mientras está ejecutando la "demo" para ver qué contiene. Hay que reconocer que son unos artirstas de verdad (estoy aplaudiendo, aunque no se oiga, frente al "About" de la demostración).

    • edit script of first card of stack "mcdemo2.mc"
                               

      Encontrará cómo empieza a reproducir el vídeo de entrada y hace desaparecer hacia fuera de la pantalla el ratón.

    Desde luego, puede dedicase a recorrer la pila si no lo ha hecho ya. Como en cualquier otra pila de MetaCard: ponga el modo ejecución (browse tool) y a divertirse aprendiendo. Desde luego, lo mejor son las apariciones de Penélope y el movimiento tembloroso de la pila (earthquake2).

Y puestos a aprender, si ha visto la "demo", en su sección avanzada, habrá podido utilizar la Agenda personal (Personal Organizer Example), pero seguramente no sabrá cómo está hecha.

Figura 1-19. Personal Organizer Example: muestra de la tarjeta de agenda.

Pues abrá MetaCard y busque dentro del directorio donde esta el subdirectorio demo, dentro de este encontrará persorg.mc. Delante de Vd. tiene una pila y con el "Control Browser" puede examinarla como con cualquier otra, como muestran la Figura 1-19 y la Figura 1-20.

Figura 1-20. Personal Organizer Example: muestra de la tarjeta de contactos.

MetaClasses

A partir de las lecciones de Cross Worlds (ahora Runtime Revolution Ltd.) se puede comenzar a revisar una serie de conocimientos sobre la herramienta guiados por la tabla de dificultad (que se incrementa con el valor numérico asociado a las mismas en la tabla), importancia y tema tratado.

Tabla 1-1. Listado de las MetaClasses

TítuloDificultad
The Basics: Understanding stacks, subStacks and mainStacks1
Messages and the Message Hierarchy1
Groups and Backgrounds2
Finding and Replacing Text2
StackFiles3
Doing Menus in MetaCard3
Using the Send Command4
Using Files with MetaCard4
Text Management5

Yo le recomiendo que lo haga, pero Vd. puede decidir si debe leer o no estas pequeñas y prácticas lecciones en cuanto que si comprende y es capaz de explicar las siguientes ideas:

Notas

[1]

Aunque ahora que pienso: ¿Vd. ya lo sabe, verdad? Claro lo ha visto en el primer capítulo (más concretamente en la la sección de nombre Paso 15: regrese a la pila "Home") de este texto al realizar el primer tutorial.