<body><script type="text/javascript"> function setAttributeOnload(object, attribute, val) { if(window.addEventListener) { window.addEventListener('load', function(){ object[attribute] = val; }, false); } else { window.attachEvent('onload', function(){ object[attribute] = val; }); } } </script> <div id="navbar-iframe-container"></div> <script type="text/javascript" src="https://apis.google.com/js/platform.js"></script> <script type="text/javascript"> gapi.load("gapi.iframes:gapi.iframes.style.bubble", function() { if (gapi.iframes && gapi.iframes.getContext) { gapi.iframes.getContext().openChild({ url: 'https://www.blogger.com/navbar.g?targetBlogID\x3d11552613\x26blogName\x3dMonoUML\x26publishMode\x3dPUBLISH_MODE_BLOGSPOT\x26navbarType\x3dBLUE\x26layoutType\x3dCLASSIC\x26searchRoot\x3dhttps://monouml.blogspot.com/search\x26blogLocale\x3den_US\x26v\x3d2\x26homepageUrl\x3dhttp://monouml.blogspot.com/\x26vt\x3d-7757409343531954721', where: document.getElementById("navbar-iframe-container"), id: "navbar-iframe", messageHandlersFilter: gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER, messageHandlers: { 'blogger-ping': function() {} } }); } }); </script>

Saturday, April 16, 2005

Manuel Cerón

Design changes in uml-canvas-sharp and Cairo experimentation

These days I have been working on the new versión of UMLCanvas, the graph engine for MonoUML. There are some interesting changes in design and architecture of this new version. One of them is the use of is the use of abstract shapes in clases used in node control, for example ControlShapeGroup. Due to this it is very easy to change aspect of control point or a control frame, here is an example:

screenshot

Because new design is more flexible, it is posible to make nodes with a different kind of control points (such as circles). This example tooks me less than 10 minutes to finish.

I am also doing some experiments with Cairo, the library for vector graphics which is the base for the System.Drawing implementation in Mono. Eventually, I think, Cairo must be used in UML Canvas, because, apearently Gnome Canvas will be deprecated. The problem with Cairo is the few documentantion avalible, and the lack of a GtkCairo binding for Mono. Though, I think we should start working with Cairo, it is the future for vector graphics.

Here is a screenshot from my experiments:

screenshot

Thursday, April 14, 2005

Rodolfo Campero

Performance improvements in ExpertCoder

Finally, I uploaded the promised changes to EC. If everything works as I think (and measured), you can expect to save around 2/3 of the memory we were consuming on regular usage. You will also notice a huge speed boost both when deserializing and serializing models - a couple of orders of magnitude in some cases.

Please, let me know about your experience.

Wednesday, April 13, 2005

Mario Carrion

Sources moved to ForgeNovell

After a quick survey we've decided to move our source code to ForgeNovell, the project is here. Have a nice hacking!

BTW. Reverse Engineering is almost finished, there are missing only two things: Events and Delegates. I'll finish as soon as possible :)

Reverse Engineering

Saturday, April 02, 2005

Rodolfo Campero

Deleting all references to an element

In my last post I said that EC had to be modified in order to allow deleting all the references to a given Element. This feature is ready, at least for the packages Kernel and UseCases.

Now is really easy to remove all the references to a given element: just call DeleteAllReferencesTo on the root-level elements of your model, and you're done.

Friday, April 01, 2005

Rodolfo Campero

Personal short-term roadmap

MonoUML is almost usable by now. We can create a model and add some diagrams, and the use cases-related functionality is mostly there: we can add actors, use cases, associations between actors and use cases, includes and extends... but we can't delete anything.

This is mainly due to ExpertCoder's UML 2 library is missing that feature, because originally it was meant to be used as a component of code generators. Code generators need to read models, not write them, so this feature is lacking.

I mean, of course you can remove a Class from a Package if you want to, but that won't delete the class; that would merely avoid the Class to be serialized within the Package as one of its owned types. Furthermore, if there's some other references to said Class, for example if the Class is the type of a Parameter or a Property, those references won't be set to null automatically.

But this is the nature of Software Libre (FOSS), projects must adapt to changing requirements, and that's what ExpertCoder will do.

So, this is my task for the time being: to modify ExpertCoder's UML 2 library in order to make it able to delete all the references to a given element.