lunes, agosto 15, 2005

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 Comentarios:

A la/s 4:27 a. m., Blogger Mario Sopena Novales dijo...

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

 
A la/s 6:55 p. m., Blogger Unknown dijo...

Este blog ha sido eliminado por un administrador de blog.

 

Publicar un comentario

Suscribirse a Comentarios de la entrada [Atom]

<< Página Principal