¡Hola!
He avanzado algo en la librería Gext, sobre todo en la parte relacionada con el módulo Mouse, así que me gustaría poner un vídeo muy sencillo de Gext en acción (y de paso pruebo las posibilidades para empotrar vídeo aquí, con Flowplayer, GPL v3.0).
El guión es muy sencillo, simplemente crea una carpeta en el escritorio, la mueve de sitio y la borra. Para ello, ha sido necesario usar los movimientos relativos y absolutos, los clicks (izquierdo y derecho) y el Drag & Drop. El script en python (mouse.py) se encuentra en la carpeta de ejemplos del repositorio. El vídeo lo he grabado con gtk-recordmydesktop, habilitando la opción --no-frame para poder usar el DnD.
Aquí os dejo. ¡Saludos!
Mostrando entradas con la etiqueta librería. Mostrar todas las entradas
Mostrando entradas con la etiqueta librería. Mostrar todas las entradas
Sobre Gext (la librería)
miércoles, 25 de noviembre de 2009 Publicado por Oscar Aceña en 0:01 0 comentarios
¡Hola!
Como veis, últimamente estoy más animado para avanzar con el proyecto, aunque sólo sea pensar (porque la fase de desarrollo todavía no está oficialmente abierta). Este post va sobre la librería que comentábamos en el anterior.
Me he dado cuenta de que tanto el editor como el compilador son sólo accesorios. Lo único imprescindible es la librería. Me explico: el objetivo final será un script, generado con el compilador a partir de un proyecto creado con el editor. Pues bien, ese script se puede escribir a mano (obviamente, no quiero que eso sea siempre así, pero para probar la librería es válido). Por lo que la parte por la que empezaré será esa: gext.
Según lo tengo pensado, una de las funciones principales será la de emular el comportamiento humano, es decir, generar eventos del teclado y del ratón. Actualmente, la mayoría de los sistemas a los que va dirigida esta aplicación sólo cuenta con un dispositivo de cada tipo (si esto cambia, ya veremos :D). Por ello, intuitivamente, tendremos dos objetos, uno para el teclado y otro para el ratón (sendos singletones ;) ). Estos objetos tendrán una interfaz que permita controlar los dispositivos programáticamente. Por ejemplo, para el ratón, se debería poder mover, pulsar el botón derecho, soltarlo (con soporte para todos los botones posibles, claro :D), obtener su posición, etc. Y para el teclado idem.
Me atrevería a esbozar las interfaces aquí mismo. Veamos. La del ratón:
Las argumentos x e y son enteros que indican la posición, y abs especifica si el movimiento es absoluto (desde la posición 0,0 de la ventana root), o relativo a la posición actual del ratón. Button es un entero que indica el número de botón a pulsar. Se pueden añadir algunos métodos para simplificar ciertas tareas comunes, por ejemplo, un leftClick(), o un dragTo(). La del teclado, podría ser algo así:
Bueno, creo que por hoy, ya tengo bastante :D . ¡Hasta el siguiente post!
Como veis, últimamente estoy más animado para avanzar con el proyecto, aunque sólo sea pensar (porque la fase de desarrollo todavía no está oficialmente abierta). Este post va sobre la librería que comentábamos en el anterior.
Me he dado cuenta de que tanto el editor como el compilador son sólo accesorios. Lo único imprescindible es la librería. Me explico: el objetivo final será un script, generado con el compilador a partir de un proyecto creado con el editor. Pues bien, ese script se puede escribir a mano (obviamente, no quiero que eso sea siempre así, pero para probar la librería es válido). Por lo que la parte por la que empezaré será esa: gext.
Según lo tengo pensado, una de las funciones principales será la de emular el comportamiento humano, es decir, generar eventos del teclado y del ratón. Actualmente, la mayoría de los sistemas a los que va dirigida esta aplicación sólo cuenta con un dispositivo de cada tipo (si esto cambia, ya veremos :D). Por ello, intuitivamente, tendremos dos objetos, uno para el teclado y otro para el ratón (sendos singletones ;) ). Estos objetos tendrán una interfaz que permita controlar los dispositivos programáticamente. Por ejemplo, para el ratón, se debería poder mover, pulsar el botón derecho, soltarlo (con soporte para todos los botones posibles, claro :D), obtener su posición, etc. Y para el teclado idem.
Me atrevería a esbozar las interfaces aquí mismo. Veamos. La del ratón:
class Mouse:
def getPosition(self):
pass
def moveTo(self, x, y, abs=True):
pass
def pressButton(self, button):
pass
def releaseButton(self, button):
pass
Las argumentos x e y son enteros que indican la posición, y abs especifica si el movimiento es absoluto (desde la posición 0,0 de la ventana root), o relativo a la posición actual del ratón. Button es un entero que indica el número de botón a pulsar. Se pueden añadir algunos métodos para simplificar ciertas tareas comunes, por ejemplo, un leftClick(), o un dragTo(). La del teclado, podría ser algo así:
class Keyboard:
def pressKey(self, key):
pass
def releaseKey(self, key):
pass
De nuevo, también añadiré algunos métodos para tareas comunes. En este caso, es muy frecuente querer introducir muchos caracteres seguidos, en vez de ir uno por uno. Para ello, algo como generateKeyEvents(seq) sería útil, donde seq es una cadena de texto.Bueno, creo que por hoy, ya tengo bastante :D . ¡Hasta el siguiente post!
Suscribirse a:
Comentarios (Atom)