Summary
During week 11 I was on my vacation. After coming back I refactored the
MonoDevelop WinForms Designer Addin in order to make it work with
MonoDevelop'sDesignerSupport addin remoting environment. Unfortunately I
stumbled upon MWF-in-GTK problems and my attempt to complete the Addin failed.
The good news is that I've managed to hack up a standalone WinForms-based
frontend to the Design-Time code. I've spent the rest of the time testing the
Design-Time serialization and deserialization, which resulted a complete rewrite
of the expression contexting code. I am quite happy with the outcome. The
(de)serialization can even handle nested components fine (e.g
splitter1.Panel1.*). I have also implemented the serialization and
deserialization of events. I am able to bootstrap the designer - I can load and
store back to code it's GUI.
Repository Data
Start of week revision: 65
End of week revision: 89
Visual ChangeSet:
http://monodt.i-nz.net/changeset?old_path=%2F&old=65&new_path=%2F&new=89
Plain Text ChangeSet:
http://monodt.i-nz.net/changeset?format=diff&new=89&old=65&new_path=%2F&old_path=%2F
Details
1.) Refactored the MonoDevelop WinForms Addin to work in the remoting
environment of DesignerSupport. MWF-in-GTK was really broken and I gave up.
2.) I have designed and developed a small standalone frontend to the Design-Time
code. I have followed the KISS principle and I am quite happy with the resulting
code - it's simple and works. Currently the designer:
-
Can load (in tabs) souce code produced by SharpDevelop 2.x and Visual Studio
2k5. It is also able to save changes back to source code.
-
Has a PropertyGrid, a simple Toolbox and components dropdown list
-
Maintains a user-modifiable References, which allows the user to reference
custom components.
3.) Thanks to the frontend I was able do a cycle of testing which resulted a
major rewrite of the serialization and deserialization. The main work was
on redesigning the expressioncontext tracking to handle nested components.
The code is behaving very well.
4.) I have implemented the EventBindingService and event serialization and
deserialization. It doesn't play well with MSNET's PropertyGrid (which doesn't
really matter), but then again they probably have a lot of internal stuff which
is not documented and on which the proper working behavior depends.
5.) I have implemented Enum[] serialization/deserialization. Also includes
Enum[] support for the EnumType.
6). I have done some little updates and fixes to code in the mcs tree.
What's next?
In the following days I will write a detailed status report on the status of the
Design-Time code. I will start maintaining a list of concrete tasks that have to
be completed and continue working on those.