I have started to add four functions “Import, Cut, Copy and Paste”, The example below import a copy of the existing module into the repository. The main challenge to maintain integrity is straight forward as integrity is based on a unique, internal reference that needs to be updated. Names are only a precentation on this level. The more interesting issue is precentation of objects like Module 1, Diagram 1 and Class88 that now are duplicated as we in this example end up wih two of each. I only need to change the 2nd Module name as the full name of Class88 is “Module1.Diagram 1.Class88” etc, but I hesitate to start using the full, formal names everythere.
Cut, Copy and Paste is simlar to Import with the exception that you can operate within a module and as such you need to change names of ojects. If you copy a object between modules we need to make a physical copy, but if the copy a class inside a module we could make a new precentation of the original or we could create a new original. All of this must be handled in the UI.
Import is a must for several people to work on the same project and I probably need a merge option – that said I want to experiement with GIT first because two or more developers should be able to merge projects using GIT. The challenge is the references because as two users work in parallell they might be using the same references for different things – in which case GIT Merge will screw things up :(. I am also fully aware that a GIT Merge tend to screw up if two developers have worked on the same file, so it might be safer to handle Merge in BSA. I need to think about this one.
It still is a bit of work left before I am happy with the integrity and functionality of BSA:
- I need some improvements on clipboard copy, basically to copy selections rather than full diagrams.
- Import needs to work.
- Copy/Paste must work.
- Multiple Modules must work.
- And I will need to optimize Dictionary precentation.
- And test and fix bugs.
I also need to design an undo/redo mechanism, but I can release a beta without this. The reason I push on Import, cut, copy paste now is because they affect the core concept of how fast you can work – as in productivity. BSA is pretty fast to draw diagrams with as is, but as my test project grows I miss options to copy/paste to capitilize on things I already have done. One discussion coming up is my text editor in the Property Editor – it works, but it ends op on the right side as very small text. I also enter a lot of text that I need to precent in tables and get into documents. Documentation is important because it is something we can do a lot of automation on – the hard reality for many of us is that we make less doc than we should do because of lack of time – and doc in my case is precented to management that is stakeholders in work you do.
I was considering HMI as my next release, but it might be that I start pushing on Code Generators. To generate source code I will be re-using an old concept I developed back in 1995 – a specialized template language where you manually write the code and then modify content with a specialized markup language. This means the code that is generated is 100% controlled by yourself as it should be – the last functionality I then need is to be able to import tool kits and let the user create new tools. I will keep the build-in tools as a base, but users should be able to create their own libraries of code and tools.
One concept I am eager to push is to make more of BSA using BSA, but that is for a later day 🙂