miércoles, 23 de diciembre de 2015

Sobre la GUI de ZinjaI (anexo)

Más novedades en este boletín... O más pequeñas mejoras en ZinjaI para esta próxima release. Siguiendo con el tema de la interfaz, hoy les cuento otro detalle que agregué, y lo aprovecho como excusa para asentar algunas explicaciones de cómo funciona el proceso mediante el cual la interfaz "evoluciona".

Soy consiente de que no soy un gran diseñador en ningún sentido (particularmente me refiero ahora a interfases y usabilidad). Así que mis estrategias para sortear esta limitación son dos, y bien simples: [a] atenerme a lo clásico, básico, probado y establecido que todos conocemos; [b] copiar buenas y novedosas ideas de otros. Por [a] es que la interfaz de ZinjaI es en principio tan tradicional. Por [b] aparecen algunas cosas más interesantes. Sin embargo cuando digo en [b] que copio, no digo de donde, porque no hay una referencia clara o única. Trato de ver cómo funcionan muchas cosas, y cada tanto veo algo que me gusta para copiar. De hecho, muchas cosas las copio de otros programas o proyectos que no tienen nada que ver con programación (como es el caso de la excusa de hoy que muestro más abajo).

Faltarían los puntos [c] y [d], que son [c] soy usuario de mi software, así que sé qué tareas quiero hacer, y entonces cuando no me salen o se ponen tediosas, tengo una buena pista de cómo me gustaría que fueran; y [d] los usuarios también proponen cosas, así que también hay ideas que vienen de los mails o de los foros. Y ahora sí, con estas cuatro fuentes de cambios, más las limitaciones técnicas y de tiempo (mano de obra), la interfaz igual avanza, lentamente y a los tumbos, sin saber bien hacia adonde, pero digamos que avanza.

Volviendo entonces a [b], me copié otra idea de un software que como decía antes no tiene nada que ver con programación ni edición de código: del GIMP, el grandioso manipulador libre de imágenes raster (el fotoyop de los linuxeros). Me gusta mucho ese proyecto, ya mencioné que GIMP e Inkscape son mis herramientas gráficas de cabecera, que lo uso para las imágenes que pongo en el foro, cuando tengo que armar un gráfico en un informe, para los assets de MotoGT, etc, etc. Pues bien, resulta que leyendo sobre las novedades de la release 2.9.2 que publicaron hace muy poquito, veo que mezclado entre muchos otros cambios más importantes, está el detalle de que alguien notó un pequeño gran problema, y se le ocurrió una solución simple y (a mi gusto) efectiva.

El problema es que conforme GIMP fue agregando más y más funcionalidades, y los menúes se superpoblaron y complicaron bastante. Entonces ya no era tan super-fácil encontrar alguna funcionalidad en particular entre toda la maraña de opciones. Muchas veces me pasa por ejemplo que busco un filtro en particular y no me acuerdo en qué sub-menú estaba, o en qué sub-sub-menú dentro de qué sub-menú del menú de filtros. Y la solución es muy simple: un cuadrito de diálogo que permite ingresar parte del nombre del comando o alguna palabra clave, y hace una búsqueda en el menú. Si el menú está programado de alguna forma más o menos genérica, entonces tenemos alguna estructura de datos que nos permite recorrer todas las opciones (incluyendo sus descripciones y textos de ayuda). Y entonces en 10 minutos alguien programa una ventanita de búsqueda que usa eso como fuente. Simple y efectivo.


Desde que agregué lo de configurar atajos de teclado, mi menú también se volvió genérico y fácilmente configurable (por dentro). Así que me tomé mis 10 minutos, y me armé mi cuadrito siguiendo más o menos la misma idea. Más aún, en los atajos configurables hay más acciones que en los menúes, y estas también salen en la búsqueda. Y agregué a este sistema varios comandos de los menúes contextuales (como el del click derecho en el código, en el márgen, o en la pestaña, comandos contexto-dependientes que no figuran en los menúes). La interfaz es muy simple: un cuadro de texto donde podemos tipear palabras claves, y nos va sugiriendo (más o menos como un autocompletado) los comandos relacionados que encuentra. Se accede con Ctrl+F2, porque en principio se parece mucho al ejecutar clásico de los escritorios Linux que suele venir asociado a Alt+F2. Esto se puede cambiar, o se puede buscar en el menú ayuda, o se puede poner como botón en la barra de herramientas, da igual. La idea que si sabemos que ZinjaI hace algo, pero ese no sabemos donde buscarlo, ahí está desde ahora nuestro buscador amigo (además de la ventana de ayuda, que ya estaba desde hace rato).


Y así concluye otro ejemplo de mejora útil (eso espero) y fácil de implementar. Hay muchas otras ideas encoladas esperando, pero no todo se resuelve en 10 con 20 lineas de código.

1 comentario:

  1. Hola Pablo, te propongo que muestres tu potencial como instructor o profesor, creando en YouTube algo que casi no hay tutoriales, la cual es una GUI para crear un editor de texto en c++ (abrir archivo, buscar palabras, reemplazar, guardar etc), lo que he visto en videos es pegar botones, barra de herramientas, pero mi deseo es ver como se hace esto en puro código escrito, creo que tendrás muchos seguidores

    Gracias

    ResponderEliminar