brickstore
brickstore copied to clipboard
Add an extension mechanism for custom columns
A lot of wildly different ideas on what additional columns would be useful have surfaced over the years. BrickStore can and will not implement all those ideas in the core code, as the maintenance cost would be to high.
The solution for this would be a QML/JavaScript based extension mechanism (similar to the Printing extensions). This task is far from trivial though, and here's a rough roadmap.
Phase 1 would be read-only columns that just process and display data:
- [x] make all BrickStore database structures available in QML/JavaScript
- [ ] make it possible to receive asynchronous price guide updates from QML
- [ ] extend the display, filtering and sorting code to be aware of custom columns and call into JavaScript code where needed
- [ ] find a way on how to deal with those columns in regards to saving the column layout directly and to BSX files: official columns simply get an unique, increasing integer id, but custom ones would need a globally unique id for BSX files to be interchangeable. Not saving these column positions and sizes is not a viable option. This is probably one of most complex tasks on this list.
- [ ] make sure that all this JS code doesn't slow down the document view to a crawl!
Phase 2 would be editable columns that can save and load their data:
- [ ] extend the editing code to be aware of custom columns and call into JavaScript code where needed
- [ ] for complex editing operations, we would need to be able to open a QML dialog inside the main widget UI, while not messing up the overall window modality
- [ ] find a way to save custom data in BSX files, while keeping the file format backwards compatible and cross-compatible between multiple different extensions
I will update this list if and when I have time to work on this.