miércoles, 31 de marzo de 2010

Problemas con los 'sizers' de WxWidgets

Para definir los layouts en las interfaces creadas con Wxwidgets, se usa un concepto llamado Sizer. La idea de los sizers es de un contenedor con dimensiones y habilidades de alineamiento y expansión definidas por el usuario. Es una filosofía parecida a otros toolkits como el AWT de Java o la librería QT, que controla la disposición de los elementos de forma independiente de la plataforma.

Existen varios tipos de sizers que nos ofrece wxWidgets para darnos más libertad de movimiento, pero todos ellos heredan de la clase base wxSizer.



El problema es que al progamar la GUI a mano, como es mi caso, el tema se hace algo engorroso y lioso, ya que hay que anidar varios tipos de sizers por cada componente que añades, inicializarlos y comprobar como se comportan en operaciones de redimensión de la pantalla.

En nuestro caso, después de hacer muchas pruebas, la estrategia decidida ha sido, en primer lugar crear una estructura básica de la ventana, con los sizers correspondientes asociados a cada uno de los componentes en el constructor, y cuando seleccionamos un archivo de video, redimensionamos la ventana para que se adapte a las dimensiones originales del video, actualizamos los datos del video (alto, ancho, codec, fps ...) y reorganizamos todos los elementos de la ventana. Al final para este sencillo GUI tuve que utilizar en torno a 10 sizers
anidados ... La verdad que esta parte se ha llevado bastante tiempo.

Adjunto un video del aspecto de la aplicación en este momento:


No hay comentarios:

Publicar un comentario