Friday, August 22, 2008

Work progress 22 August

Made case studies with WorkItems and child WorkItems together with the EventBroker and Command. Looked at how the commands and events are routed on the application.

Didn't succeed to write a document about these but I understood the concepts and I am ready to start working on coding and documenting.

Thursday, August 21, 2008

Work progress 21 August

Studied the SCSF architecture concepts. Made some tests with Model View Presenter pattern using Workspaces and WorkItems. Understood many of the implementation details but not having yet a full understanding of these components.

Wednesday, August 20, 2008

Work progress 20 August

Added more details to the compiling document. Tomorrow will finish adding also some explanations about decisions made at wrappers and upload the document on SVN.

Worked at the application architecture. Studied more about the SCSF concepts. Tomorrow should start working at the application architecture document.

Monday, August 18, 2008

Work progress 18 August

Generated the wrappers, rebuilt the project and made a document on how to remove the errors that appear. Will add also explanations related to the wrappers structure and the wrapping decisions, task estimated to take 1 hour.

Studied the SCSF concepts like WorkItem, Shell, Workspace, UIExtensionSite, Command, DependencyInjection, ObjectBuilder, SmartPart. The concepts are exceptional, I will apply them at Naro.

Will continue working in parallel on two directions:
- work at the application architecture and make a concept document, task estimated to take 2-3 days, also will look for other equivalent open source/free software factories,
- continue with adding more documents on the current code and code cleanup: add a document describing the wrapper architecture, make a document on the application architecture, cleanup and refactor code, task estimated to take 2-3 days in parallel with the architecture work.

Between these tasks will also do some research on the OCAF document saving functionality.

Friday, August 15, 2008

Work progress 15 August

Made code cleanup on the wrapping code generator and uploaded it under the wrappers project. Added also a document that specifies how to wrap files.
Started working also at some document that specifies how to solve compiling errors that might appear when wrapping files.

Added code at Naro to load files and succeeded to load STEP files into it. It seems that the wrappers worked correctly, no crashes.

Continued working at the saving with OCAF feature. This doesn't work yet.

Will continue working at finishing the file saving feature and also cleanup the new functions from NaroCad to upload the code, task estimated to take one more day. Will also work at the application architecture design.

Thursday, August 14, 2008

Work progress 14 August

Worked on several directions: made an improvement at OCAF to be able to use the saving functionality, started wrapping the STEP package to allow opening files from disk, started preparing the code generator application to be uploaded on SVN and documenting it and the wrapping process.

Tomorrow will work at finishing these tasks and also work at the application architecture structure. I would like to use a framework like SCSF from Microsoft or at least the Windsor Container to create a loosely coupled architecture. Will study to see if these can be used in an open source project.

Wednesday, August 13, 2008

Work progress 13 August

Modified the wrappers to allow the usage of OCAF as a wrapper. Succeeded to integrate OCAF with Naro and made a simple Undo operation that worked properly (drawn a Box, applied Undo on the operation).

Will continue working at the Naro architecture design to integrate OCAF functionality.

Tuesday, August 12, 2008

Work progress 12 August

Made project cleanup, moved the unused code to branches/oldsources, moved the Wrapper project outside the Naro project, made updates to the txt files describing the project folder structure and compiling. The documentation updates are small because now the project compiling is fast and simple (the wrappers are built in release mode and referenced by the project).

Installed a Virtual PC with XP and Visual C# Express 2008 and tested the compiling. It worked well.

Worked at improving the OCAF package wrapper. The problem here was that for StdDocument there are native virtual methods called internally that must be implemented by the developer; because the class is wrapped the internal native call is passed internally and not passed to the wrappers and had to make some tricks to solve it.

Will continue with working at integrating the OCAF in Naro and also work at the application design, task estimated to take 2-4 days. While adding this code will also improve the Naro folder structure and will add some explanation txt file describing the folder structure.

Monday, August 11, 2008

Work progress 11 August

Worked on two directions:
- wrapper cleanup, removed all the references to the previous wrappers, the code now uses only the new wrappers. Built Debug and Release versions of Naro to test that it builds properly and used the build to see how it behaves and how much resources it uses,
- tested the newly inserted OCAF module and started integrating the Undo/Redo mechanism in Naro. Found a problem at the Document creation. Inserted by hand code for an Application constructor and rebuilt the wrappers.

Tomorrow for half a day will review/organize the plugin/command folders and update the documents describing the build process, also will check that everything builds properly. In parallel with it will work at integrating the OCAF package, schedule new tasks and make an estimation for them.

Sunday, August 10, 2008

Work progress 8 August

Built a release wrapper library using Whole Program Optimization off and uploaded it on SVN. Tried also making a separate assembly for the OCAF module but didn't succeed to make it, will leave this task on separating the modules as a lower priority task.

Compiled Naro with this library.

Will continue with working about half a day on cleaning the Naro code and making documents on how to built it.
After this task will start working at integrating OCAF in the application and implement an Undo Redo mechanism. This task together with the architectural design work is estimated to take about 3-4 days.

Thursday, August 7, 2008

Work progress 7 August

Spent the day investigating the wrapper compiling. It seems the the Visual Studio reaches the 2 Gb limit and that causes the linker to stop. Linking in the release mode with Whole Program Optimization off is not the best solution as the limit can be reached again when adding new packages, it compiled probably because the size was slightly below the size limit.

Investigated also making the OCAF module a separate assembly but didn't succeed. The problem is caused by the fact that the native classes whithin an assembly are by default private; a theoretical solution would be to make them public (an visible for other assemblies) using the pragma make_public. This directive works properly on a small test application but when used on the wrappers it doesn't work properly. Somehow because of the many include files private symbols are generated before the make_public directive.

Tomorrow will continue investigating the issue for half a day and take a decision how to move forward. A possibility would be to continue investigating another possibility would be to try linking with WPO off and use the generated assembly for further development.

Wednesday, August 6, 2008

Work progress 6 August

Worked at compiling the Wrappers having the OCAF packages included.
It seems that the linker gives errors because of the big number of files and has not enough memory to link everything.

The investigated solutions are the following:
- make the OCAF module as a separate assembly. On this solution the problem is that the base classes (that have a native pointer as member) are located in a different assembly and the base classes symbols need to be exported explicitly. Added the exporting pragmas, the symbols are properly exported but the problem continues: more errors are generated the cause being some inconsistent attribute errors. Solutions found on Internet on this problem are not applicable on this amount of files automatically generated. This path needs more research,
- another solution would be to disable Whole Program Optimization so that the Optimizations are made in the compiler instead of the linker requiring less memory (but also the assmbly is optimized less). Succeeded to build a full wrapper in release mode using this compiling configuration. Will try also to build it in debug mode.

Because the Solution 1 needs a lot of research (possibly can take 1-2 weeks and there is possibility not to work) and because the wrappers are not the product that we focus on, decided to use Solution 2 to build the dll with WPO off as a temporary solution that allows us to move forward with NaroCAD development.

Will continue with cleaning and uploading the code, prepare the wrapper dlls to be used by Naro (in release and debug mode), build Naro with the new wrappers and check the running speed, update the documentation about the project and how to build it, tasks estimated to take 2 days.

Work progress 5 August

Still couldn't compile the OCAF package. The linker gives an error like "invalid file or disk full" when the ApplicationFramework packages are added to the wrappers. Looks like a corrupt library or like some error generated by the big number of libraries used. Tried separately the packages and they compile and link properly.

Will work at generating a separate assembly for ApplicationFramework, task that should be finished in 1 day. There is a possibility not to succeed making this module a separate assembly because encountered problems when passing native pointers between separate assemblies.

Monday, August 4, 2008

Work progress 4 August

Worked at compiling the OCAF package.
There are some OCAF wrapped packages that give linking errors. Not solved yet the problem, it generates some error that looks like a corrupted OpenCascade library. The library will be detected by adding libraries one at a time but the investigation took a lot due to the long compiling time.

Work progress 1 August

Started wrapping the Open Cascade Application Framework. Wrapped 20 packages but there are linking errors to be solved.

The next development steps are the following:
- finish wrapping the OCAF package, task estimated to take 1.5 - 2 days,
- work at cleaning up the work made until now: compile a release version of the wrappers, cleanup the NaroCad source codes that use the new wrappers and update them on SVN, remove all the references to the old wrappers, update the documents describing the building process and verify building with VisualStudio Express, task estimated to take 2 days.