Camino a UMLCanvas 2.0

MonoUML

Estos días estoy trabajando bastante en sacar adelante, de una vez por todas, UMLCanvas# 2.0. El trabajo con System.Drawing (GDI+) es bastante agradable. En comparación con GnomeCanvas, System.Drawing es de más bajo nivel, pero tiene la ventaja de ser mucho más flexible. Luego de ver la noticia de que GTK 2.8 ahora requiere Cairo, estoy aún más convencido de que la elección ha sido la adecuada. Aunque lo que hay hasta ahora es bastante primitivo, creo que con todo lo que aprendimos haciendo la primera versión de UMLCanvas#, podemos avanzar lo suficientemente rápido.

El trabajo con Gtk# y System.Drawing es bastante interesante. Gracias a Gtk.DotNet es posible combinar dos librerías de Widgets: Gtk# y Windows.Forms. Más específicamente, Gtk.DotNet es un puente entre Gdk.Drawable y System.Drawing.Graphics, ahora como sabemos que Gtk se basa en Gdk y que Windows.Forms se basa en System.Drawing, podemos llevar esto a la interoperabilidad entre librerías que mencioné al principio.

El problema que tiene Gtk.DotNet es que está muy poco (por no decir nada) documentado. Prácticamente hay que aprender a base de ensayo y error. No lo digo por Gtk.DotNet en sí (que en realidad es sólo una clase y un método), sino en la interoperabilidad de las dos librerías como tal. Por ejemplo, uno de los problemas que tuve fue que no sabía como hacer para redibujar sólo una parte del canvas y no todo, cuando se usa sólo Windows.Forms, esto usualmente se hace invalidando el Control en dónde se está dibujando, para ello se hace uso del método Invalidate() de la clase Control. Sin embargo, cuando se combinan las dos librerías, se está dibujando sobre un objeto S.D.Graphics pero no existen ningún objeto Control; en su lugar se usa un Gtk.Widget (más específicamente un Gtk.DrawingArea). Lo que hay que hacer entonces es usar Gtk.Widget.QueueDrawArea() para invalidar un rectángulo. Como dije antes, no puede saber esto sino a base de un sistema de prueba y error.

Lamentablemente esto de la falta de documentación se está volviendo un común denominador en las librerías de Mono. Aunque duela decirlo, la única parte que está bien documentada es la parte que también hace MS (claro que una de las ventajas de Mono es poder aprovecharnos de todo eso). Prometo que una vez que haya avanzado un poco más con UMLCanvas# haré algo de documentación sobre Gtk.DotNet.

SLUD 4 y JSL

En octubre estaré viajando para Bogotá para asistir a dos eventos de Software Libre. Por un lado están las Primeras Jornadas de Software Libre, las cuales vienen a llenar el vacío que deja el Congreso Internacional de Software Libre que se hacía aquí en Colombia. Creo que esta versión de las JSL más bien debería ser la cero, porque todavía falta mucho para consolidar este evento. Por otro lado, esta la IV Semana Linux de la Universidad Distrital, la cual es organizada por nuestros amigos del Grupo Linux de la Universidad Distrital (GLUD). Este último evento parece que va a estar muy interesante, yo por mi parte envíe dos propuestas de ponencia: “Programación Multimedia con Mono” y “El lenguaje de programación Boo”, espero que acepten aunque sea una de ellas. En total en el GLUC enviamos 10 propuestas, así que va a haber bastante participación por parte de nuestro grupo.

2 thoughts on “Camino a UMLCanvas 2.0

  1. Prometo que una vez que haya avanzado un poco más con UMLCanvas# haré algo de documentación sobre Gtk.DotNet.Te tomo la palabra y te estaré vigilando de cerca. :-D. Bueno, en serio, me parecería importante que colaboraras en la documentación de Gtk.DotNet con la experiencia que has acumulado.Soy completamente de tu opinión cuando dices que el talón de Aquiles de Mono es la falta de documentación.Un saludo. Mario

Commentarios

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s