Hi there, big props to you Code::Blocks people - it's been my IDE of choice for six months now, and I've yet to find anything I didn't like!
I've been working on my own graphical modelling language, similar to UML, but:
a) much simpler
b) covering system design only
c) designed with C++ and its features in mind
d) designed to completely manage the code for a class-based library
e) designed to exist primarily in electronic form in a CASE tool
f) storable as XML
It's called CPPLM/ML (C++ Library Modelling/Markup Language) because I''m a fan of ugly names.
I've started putting my own CASE tool to use this using wxOGL to draw the interactive diagrams. However, rather than having to run a separate tool to generate the code, and then have my C::B programs use it, it would be very cool if I could write it as a plugin to C::B.
The way I envisage it working in an ideal world would be:
1) Select File...New Project...New CPPLM/ML Project, and select a few basic parameters.
2) This would add a CPPLM/ML item to the workspace. This wouldn't be the same as a normal C::B project, it would be handled completely by the plugin
3) Upon build instruction, the plugin would use the XML file to (re)generate the C++ code, and then compile as normal.
Now, browsing through the code, this doesn't look possible with the current interface, because the ProjectManager class is set up to deal specifically with cbProjects, which would mean that I would need to write something that derived from cbProject, which it doesn't seem designed to do.
The way forward might be to create a new IProjectItem interface class, and re-implement cbProject, ProjectManager and probably a whole bunch of other stuff in terms of it. Then my plugin code could be implemented using the new interface, which would just contain the stuff that would be common to all similar types of item. It'd make sense to create a new derivative of cbPlugin whilst I was at it too.
Can anyone confirm that I've got the above right, and that I can't do exactly what I want right now with C::B? If so, I'll probably finish off my standalone CASE tool first before doing any work on changing C::B. Also, are there any plans for any similar changes already afoot that I might be able to take advantage of in the future?