En la práctica gracias a los métodos de esta clase podemos acceder a aplicaciones x11, abrir archivos o urls en nuestro browser o gestor de archivos por defecto, abrir una sesión de terminal o enviar correo utilizando nuestra aplicación de correo por defecto.
La combinación de estas posibilidades con la clase embedder nos abre la posibilidad de utilizar todas estas posibilidades en nuestras aplicaciones.
Ejemplo:
Aplicación que permita integrar el escritorio dentro un contenedor de un formulario de nuestra aplicación.
1. Pintar en un formulario un control embebeder donde queremos integrado el escritorio. Llamaré EMB a ese objeto
1. Ponemos el siguiente código en la funcioón sub main
Esta sencilla función hará que en el especio adecuado aparezca vuestro escritorio completamente funcional.
La clase desktop
Requiere la presencia de gb.desktop.
Tiene los siguientes métodos (todos estáticos)
open
Abre una url o un archivo en la aplicación por defecto. Si es una url utilizará el browser por defecto del sistema. Si es un archivo utilizará el gestor de archivos del sistema (nautilus o el que sea).
Las url no tienen por que ser necesriamente http. Se admiten también sesiones http, ftp y https
openterminal
Inicia una sesión terminal con el usuario por defecto y la aplicación de terminal del sistema por defecto (gnome-terminal, eterm, aterm, konsole, ..., etc) en la ubicación indicada
Sendmail
Sirve para enviar un email utilizando el gestor de correo por defecto del sistema.
Desktop.sendmail( para, cc, bcc, asunto, cuerpo, adjunto)
ejemplo
Desktop.sendmail(para.text,,asunto.text,cuerpo.text,"/home/foto.jpg")
Sendkeys
envía al teclado la secuencia de pulsaciones que se desee.
Desktop.Sendkeys("hola")
También se pueden enviar teclas por su nombre si se encierran entre corchetes (la definición X11 de estas teclas se encuentra en /usr/include/X11/keysymdef.h
Desktop.SendKeys("[RETURN]")
Para enviar dos pulsaciones simultánteas utilizar las llaves { }
find
A mi modo de ver es la mas interesante de todas porque lo que hace es capturar los handle de las aplicaciones de X11 y podemos disponer de ellas en nuestra aplicación mediante un objeto de la clase embebeder.
Lo que hace find es devolver un array con los handlers de todas las aplicaciones X11 en uso.
Dim Punteros as pointer[] ---> crear espacio para los handlers que sean
Punteros=desktop.find(titulo,aplicacion)
Es decir podemos buscar todos aquellos cuya ventana tenga un título X o todos aquellos procesos cuya aplicación coincida con "aplicación". No es necesario poner el título o aplicación exacto porque se utilizan las claúsulas LIKE para seleccionar procesos.
Así en el caso propuesto anteriormente
la propiedad GRAB
Captura la pantalla y devuelve un picture con el resultado
Hay otras propiedades como resolution, charset y screensaver que aún no he probado y no se bien lo que hacen.
El objeto embebeder
Sirve para integrar aplicaciones X11 dentro de nuestra aplicación. Es un contenedor cuyo contenido es el especificado en la propiedad client
Método embed
Para iniciar el embebido de la aplicación X11 en nuestra aplicación.
Embedder.embed(handle)
Ese handle sería el devuelto por una ejecución previa de desktop.find
Método discard
Descartar el embebido actual.
Embedder.discard()
En la propiedad client podemos leer (solo lectura= el handle que el objeto embedder está utilizando.
Dim cliente as pointer
cliente=embedder.client
Se me ocurren diversas aplicaciones como por ejemplo poder integrar el software de música o por ejemplo para el proyecto moviebox poder ver las películas si se desea.