Una vez que se ha aprendido a realizar aplicaciones completas en Python, utilizando recursos estándar como son los menús, ventanas y diálogos, el siguiente paso es empezar a manejar las características multimedia del Sistema Operativo .

En este capítulo se muestran algunas de las características más interesantes, como son la utilización de QuickTime, y cómo aplicarlas en el desarrollo de sus programas .

El proyector

El programa a crear consistirá únicamente en un reproductor de películas al estilo de MoviePlayer pero incluso más sencillo . Constará de un único menú Archivo con las opciones de Abrir y Salir . Al elegir Abrir permitirá seleccionar una película, la abrirá, mostrará en una ventana y reproducirá automáticamente .

Como es habitual en estos casos, lo primero que debe hacerse en el archivo del programa, al que siguiendo la costumbre se le ha puesto el nombre “miprograma . py”, es importar la librería FrameWork, que es la que contiene todos los objetos necesarios para crear una aplicación, incluyendo el objeto Application desde el que se deriva el objeto del programa en sí .

Después de esta importación debe crearse el objeto programa que deriva de Application . Como ya se ha realizado en los ejemplos anteriores, esta definición es:

class MiPrograma ( Application ) :

A continuación, y desplazadas a la derecha, debe incluirse la definición de todas las funciones que pertenecen a este objeto . Inicialmente sólo hay dos: makeusermenus ( que es la función de Application, que permite crear los menús propios del programa ) y Salir, que será la función llamada cuando el usuario elija la opción del menú correspondiente .

En makeusermenus se crean los menús de la aplicación como ya se ha visto en ocasiones precedentes . Sólo se crea un menú “Archivo” en el que hay una opción “Abrir” que temporalmente no tiene operación asignada, de ahí la coma sin parámetro detrás que se encuentra al final de la lista de parámetros entre paréntesis, a continuación una raya separadora y finalmente la opción Salir que llama a la función del mismo nombre que se define a continuación . Con esto se dispone del esqueleto del programa listo para funcionar tal como se muestra a continuación:

from FrameWork import *

class MiPrograma ( Application ) :

def makeusermenus ( self ) :

self . menuArchivo=Menu ( self . menubar, " ¬

Archivo " )

self . itemNuevo=MenuItem ( self . menuArchi- vo, " Abrir " , " O " , )

self . menuArchivo . addseparator ( )

self . itemSalir=MenuItem ( self . menuArchi- vo, " Salr " , " " ,self . Salir )

def Salir ( self,*args ) :

self . _quit ( )

Programa=MiPrograma ( )

Programa . mainloop ( )

Para manejar películas, lo primero que debe hacerse es cargar las librerías que definen las funciones y variables de QuickTime . Estas son Qt y QuickTime, por lo que lo primero que debe hacerse, después de importar FrameWork, es importar estas dos:

import Qt

import QuickTime

A continuación, debe empezar a codificar el programa . Al igual que en el capítulo pasado, cuando se vieron las rutinas de impresión, QuickTime tiene una función de inicialización que debe llamarse antes de emplear cualquier otra función de esta librería: EnterMovies . Para ello puede hacerse igual que con la rutina PrOpen, es decir definir la función __init__ del objeto derivado de Application, que será llamada automáticamente al iniciar el objeto MiPrograma; es decir, al arrancar la aplicación . Tal como se explicó al principio de este curso, los objetos pueden tener funciones redefinidas ( en inglés “overload” ) . En este caso, el objeto Application del que se deriva MiPrograma define una función __init__ que se va a redefinir .

Normalmente la función redefinida sustituye a la del objeto padre . Cuando se llama a la función sólo se ejecutan las instrucciones de la nueva función y se ignoran las del objeto padre . Un ejemplo es makeusermenus . En Application esta función no realiza ninguna función, está vacía, mientras que la que usted define para su programa inserta los menús y opciones de menú personalizados .

Sin embargo, en algunos casos es interesante o necesario que se llame también a la función del objeto padre . Por ejemplo la función __init__ de Application inicia de todas las funciones necesarias para utilizar el Mac OS y, por tanto, debe ejecutarse adicionalmente a las operaciones que usted inserte . En ese caso se llama a la función explícitamente anteponiendo el nombre del objeto . Por ejemplo, “Application . __init ( self ) ” le indica a Python que ejecute la función __init__; pero la del objeto Application y no la redefinida en MiPrograma, que sería la que de forma natural llamaría . Por tanto, sólo es necesario insertar las siguientes líneas:

def __init__ ( self ) :

Application . __init__ ( self )

Qt . EnterMovies ( )

Ahora el programa ya puede realizar llamadas a las diversas funciones de la librería QuickTime .

Tipos de archivos

El siguiente paso es desarrollar el diálogo de abrir archivo que permita al usuario abrir y seleccionar una película para reproducirla . La función necesaria para realizar esta operación, StandardGetFile, ya se comentó en el capítulo 4 y es parte de la librería macfs, por lo que es necesario en primer lugar importar dicha librería añadiendo al principio la instrucción “import macfs” .

Como recordará, StandardGetFile mostraba el diálogo de abrir archivo, permitía que el usuario seleccionara un documento y devolvía la referencia a este documento . Esta función admite opcionalmente la posibilidad de pasarle como parámetro una cadena de cuatro caracteres . Esta cadena permite identificar el tipo de documento que quiere abrir de forma que no se le muestren todos los archivos existentes en su disco y sólo los que coinciden con este tipo . Un usuario normal no ve este tipo, al contrario de lo que sucede en MS-DOS que lleva el tipo a continuación del nombre del documento como en “CARTA . DOC” que identifica al archivo como de tipo DOC, pero si arranca el programa ResEdit y en el menú File selecciona Get File Info y elige un documento, el programa le mostrará el tipo y creador de éste . El creador es otra extensión de cuatro caracteres que permite que el sistema operativo sepa con qué aplicación se ha creado dicho documento y, al hacer doble clic sobre él, se pueda abrir directamente el programa .

Algunos tipos estándar son “TEXT” para archivos de texto puro “PICT” para imágenes de tipo pict, “JPEG” para imágenes en formato jpeg y “MooV” para películas QuickTime . Por tanto, si quiere que sólo permitan abrirse películas QuickTime, la llamada a la función será:

archivo,ok=macfs . StandardGetFile ( ‘MooV’ )

Esta llamada debe realizarse cuando el usuario elija la opción Abrir . Por tanto al definir esta opción de menú debe añadirse el final el nombre de dicha función para que sea llamada automáticamente al selecciona la opción . La línea queda tal y como sigue:

self . itemNuevo=MenuItem ( self . menuArchi- vo, " Abrir " , " O " ,self . Abrir )

y seguidamente es necesario crear dicha función Abrir dentro de MiPrograma . Esta función sólo tendrá la llamada definida anteriormente, por lo que quedará así:

def Abrir ( self,*args ) :

archivo,ok=macfs . StandardGetFile ( 'MooV' )

A continuación debe comprobarse el valor de ok, si es distinto de cero significa que el usuario ha seleccionado un archivo y ha pulsado el botón de Aceptar, un valor igual a cero significa que ha pulsado Cancelar .

Por t