I am vaibhav bhel pursuing my engineering in chandigarh university. I am in second year now and have a keen interest in programming. My past experience is on C, C++, somewhat Java and ruby as well. I would like to contribute to LibreCAD 3 this year in the LC phase 1 UI.
I downloaded the LibreCAD 3 source code and tried to understand the workings. Somewhat I understood.
I had a quick call with Gaganjyot ( was my senior in the college ) two days ago and he explained me that in this project we need to develop a sort of abstraction from the UI for the LibreCAD.
So I realise we need multiple interfaces for to communicate between UI and LibreCAD kernel.
1) Mouse interface
2) Keyboard interface
3) Buttons interface
4) Menubar interface
5) Context Menu interface.
6) Scroll bar interface ( not sure though )
These interfaces are librecad side interfaces which will be called by Qt/GTK UI.
After building these interfaces, i need to connect LibreCAD and our UI via these interfaces and make them working.
Is this understanding correct?
What else comes under this project? any guidance will be helpful.
I'll be writing and uploading a proposal this weekend.
I know I am a bit late to communicate, I was kind of stuck up in mid-sem exams.
Any other sort of guidance, thoughts will help me in making a better proposal. Please let me know.
Reasons I realise the need of this project,
1) People will be able to write plugins in their favourite language.
2) People will be able to create JSON based macros to perform repetitive tasks.
3) People will be able to create micro-programs that will generate JSON inputs for the LibreCAD program.
4) I've used FreeCAD too much for my designs in college and hence we might be able to build an interactive command prompt just like freeCAD has one for LibreCAD.
I think the whole project could be split into smaller milestones,
1) integrating librecad into a webserver module that will be able to accept http requests.
2) Create an interface to the LibreCAD Kernel to be executed by JSON Parser being developed in point 3.
3) Creating custom JSON Command parser so as to parse the commands in the JSON Request and call the specific functionality from the LibreCAD interface developed in point 2.
I saw your proposal and have a few questions mentioned on the doc itself.
One of the most important thoughts I had while thinking of this model was that we don't need dependencies on any sort of libraries that don't get into with LibreCAD license. If the work is not much, we ourselves can develop that module but if work is much, maintenance and there are already good libraries available for the same, we might use them via this plugin interface.
For example LibDXFrw or LibreDWG to read DWG/DXF Files, instead of incorporating into librecad we use it via interface, are you able to understand this?
I again have this question from you, how do you see the GUI if the JSON interface is implemented? I'd like to know your thoughts regarding how do you see LibreCAD 3 implemented? The information in the proposal is fine but it can be an expansion of the information written on my blog as well. So I want to know what knowledge you have regarding LibreCAD history, design decisions, approaches previously used etc.
Some personal advice,
Please use a spell checker.
Also if you have any questions, doubts, try to post them on Forum or IRC ( as in open discussion ) instead of private communications. It will be much helpful in future for reference purposes.