jueves, 11 de junio de 2020

Actualización de PSeInt: las mejoras que se ven

Ya escribí en lineas generales sobre los problemas y las soluciones de la actualización de wx en PSeInt y ZinaI. Ahora seguramente vendrán cada tanto posts con detalles de cosas más particulares. Nuevas funcionalidades, o nuevos problemas específicos de alguno de los dos que valga la pena comentar. En este, el detrás de escena de las dos diferencias más notorias en la última versión de PSeInt: las anotaciones, y los operadores unicode.


Anotaciones en PSeInt

Scintilla es el componente que muestra y permite editar el código fuente en PSeInt y en ZinjaI (y también en muchos otros programas, como en notepad++ por ejemplo). Wx ofrece un wrapper sobre scintilla. Al actualizar wx, recibo dentro las actualizaciones de scintilla. Y desde la época de wx 2.8, son muchas. Una de ellas es la disponibilidad de "anotaciones". Las anotaciones son textos adicionales que pueden asociarse a las líneas del código, para que scintilla las muestre de forma especial. Un uso obvio, y es el que hago en PSeInt, son los mensajes de error (o cualquier diagnóstico en general):


Lo había comentado hace muuucho cuando empecé a jugar con wx3. Es un detalle que se ve muy bien en la captura de pantalla; pero ahora que se hizo habitual, es algo molesto durante la edición. Durante la edición, a mitad de escribir una linea o un estructura de control, seguramente el código incompleto no es correcto. Si tardamos en completarlo, PSeInt analiza lo que va por la mitad y comienza a señalar los errores. Si los errores se intercalan con el código, esto hace que el código salte de lugar todo el tiempo; porque las líneas incompletas se separan para dar lugar a los errores, y luego se juntan nuevamente al completarlas (corregirlos). Eso es molesto. Por eso ahora hay un ícono en la barra de herramientas para activar/desactivar las anotaciones:


Con las anotaciones desactivadas, los lugares con errores se siguen señalando (el subrayado rojo o amarillo), pero los mensajes no aparecen.


Caracteres Unicode en PSeInt

Otra ventaja del cambio es que ahora puedo utilizar caracteres unicode. Allí hay todo tipo de símbolos, muchos de los cuales representan mejor a ciertos operadores que la combinación original. Por ejemplo, están los símbolos matemáticos para distinto, mayor o igual, menor o igual, conjunción, disyunción, etc. Hasta hay flechas reales para usar para la asignación. La nueva versión de PSeInt aprovecha esto, y va reemplazando al vuelo los operadores que ingresamos como antes por estos nuevos caracteres:


Visualmente, el resultado final es muy bonito. Y el cambio solo se hace al momento de mostrar el código en scintilla. Pero los archivos se guardan como antes, si el código se copia al portapapeles se copia como antes, si va de un módulo a otro de PSeInt también va como antes. Así que implica estar atento a todos los posibles escenarios que requieran la conversión. Cubrí los que se me ocurrieron, los más habituales, pero seguramente con el uso iremos encontrando algunos casos en donde falte y habrá que ir corrigiendo.

El problema más grande fue que cómo se ven los caracteres unicode varía mucho de una fuente a otra. Por ej la flecha a la izquierda común, en muchas fuentes es muy chiquita, y hasta en algunas parece estar ubicada más abajo de lo esperado (tirando a subíndice). Entonces busqué otro símbolo unicode, una flecha adicional más grande que se veía mejor con mi fuente. Pero cuando voy a Windows veo que ese caracter adicional ni siquiera está en la fuente por defecto (en esos casos se ve un cuadradito genérico).

Como no podía encontrar un común denominador que funcionara bien, terminé cayendo en otra nueva posibilidad de wx: cargar fuentes que no sean las del sistema. Así que busqué una linda fuente con caracteres adecuados para los operadores que quería (Inconsolata, de Raph Levien), y la incluí en PSeInt. Así que de rebote ahora todas las instalaciones, al menos configuradas por defecto, van a usar la misma fuente. La excepción es MacOS, ahí no está disponible la funcionalidad de wx para agregar fuentes; pero por suerte MacOS trae por defecto una fuente muy adecuada (Monaco).

Sigue siendo posible cambiar luego la configuración de la fuente, y hasta desactivar los operadores unicode. Pero creo que nadie lo hará, parece que la nueva configuración por defecto funciona muy bien. Además, generé la textura para usar la misma fuente (casi) en el editor de diagramas, y también configuré la misma por defecto para la terminal de ejecución. Así que ahora todo es más uniforme.


En conclusión, lo primero que se ve sobre las nuevas versiones son obviamente los detalles estéticos. Hay varios que wx trajo de rebote (o el paso de gtk2 a gtk3), pero estos son los más importantes e intencionales. Esperemos que con el tiempo los cambios (estos y los que vendrán) resulten más funcionales que estéticos.


3 comentarios:

  1. Hola, estoy usando la herramienta pseint en la facu y me econtre con un error que no estoy pudiendo solucionar.

    ERROR 273: Debe haber un Proceso.
    No se encontro descripción para este error

    No encuentro ningun error de sintaxis, y no entiendo por qué falla, ya que no tiene descripción.
    Tienes idea como puedo solucionarlo o debido a qué sale ese error?

    ResponderEliminar
    Respuestas
    1. Hola.
      ¿Cuando te sucede esto?

      A mi me pasa lo mismo, cuando pongo comentarios en el seudocódigo. No importa donde los ponga, siempre aparece el
      "ERROR 237: Debe haber un Proceso."

      Lo curioso es que si los comentarios los inserto con el editor de Diagramas de Flujo, en los mismos lugares, el error no se produce y los comentarios quedan bien.

      Eliminar
  2. Gracias por continuar con este Proyecto.
    http://pseint.sourceforge.net/ devuelve un mensaje de error: "Esta página no funciona" ¿?

    ResponderEliminar