What GUI development framework was used for LibrePCB
Hello Urban(ubruhin)
Are you planning to stay with Qt and C++ ?
Its now C++ and Qt
Erik
Hi Erik,
I’m currently moving from Qt to Slint UI and for long term also move away from C++ towards Rust. For the new UI see here:
opened 02:45PM - 16 Mar 25 UTC
_(this is a tracking issue about the progress of the new UI currently in develop… ment and will be updated regularly)_
# Goals
The goals of the new UI, compared to the current UI:
- Less windows, suitable for both single-monitor and multi-monitor setups
- To be implemented with generic windows containing the different editors as tabs
- Less modal dialogs & message boxes to avoid distracting the user
- Efficient usage of screen space (e.g. not wasting lots of space with half-empty toolbars)
- Dynamic, context-aware content (e.g. only show relevant information depending on state)
- Responsive design (e.g. make content dependent on window size)
- Intuitive design, with tooltips, hints etc. helping and guiding the user
- Generally more modern look, with animations where appropriate
- More efficient development workflow
- Slowly moving away from C++ & Qt towards Rust
See also the blog post [NGI0 Grant for LibrePCB 2.0](https://librepcb.org/blog/2024-10-17_roadmap_2.0/).
# Tasks in This Repository
- [x] https://github.com/LibrePCB/LibrePCB/pull/1495
- [x] https://github.com/LibrePCB/LibrePCB/pull/1500
- [x] https://github.com/LibrePCB/LibrePCB/pull/1499
- [x] https://github.com/LibrePCB/LibrePCB/pull/1504
- [x] https://github.com/LibrePCB/LibrePCB/pull/1505
- [x] https://github.com/LibrePCB/LibrePCB/pull/1507
- [ ] Integrate SchematicEditor & BoardEditor into new Slint UI
- [ ] Integrate OrderPcbDialog into new Slint UI
- [ ] Integrate OutputJobsDialog into new Slint UI
- [ ] Integrate LibraryEditor into new Slint UI
- [ ] Integrate WorkspaceSettingsDialog into new Slint UI
# Tasks in Other Repositories
- [x] https://github.com/LibrePCB/docker-librepcb-dev/pull/57
- [x] https://github.com/LibrePCB/docker-librepcb-dev/pull/58
- [x] https://github.com/LibrePCB/docker-librepcb-dev/pull/61
- [x] https://github.com/LibrePCB/docker-librepcb-dev/pull/62
# Issues to be Solved or Improved
Note that not all issues are expected to be fully solved in LibrePCB 2.0, some might be completed in a later release.
- Solved By Design / Not Relevant Anymore
- [ ] https://github.com/LibrePCB/LibrePCB/issues/36
- [ ] https://github.com/LibrePCB/LibrePCB/issues/53
- [ ] https://github.com/LibrePCB/LibrePCB/issues/1050
- Problems of Current UI, Not Relevant Anymore or Easy to Fix
- [ ] https://github.com/LibrePCB/LibrePCB/issues/903
- [ ] https://github.com/LibrePCB/LibrePCB/issues/942
- [ ] https://github.com/LibrePCB/LibrePCB/issues/1232
- [ ] https://github.com/LibrePCB/LibrePCB/issues/1371
- [ ] https://github.com/LibrePCB/LibrePCB/issues/1372
- [ ] https://github.com/LibrePCB/LibrePCB/issues/1417
- To Be Considered / Reviewed
- [ ] https://github.com/LibrePCB/LibrePCB/issues/359
- [ ] https://github.com/LibrePCB/LibrePCB/issues/726
- [ ] https://github.com/LibrePCB/LibrePCB/issues/815
- [ ] https://github.com/LibrePCB/LibrePCB/issues/915
- [ ] https://github.com/LibrePCB/LibrePCB/issues/1053
- [ ] https://github.com/LibrePCB/LibrePCB/issues/1231
- [ ] https://github.com/LibrePCB/LibrePCB/issues/1258
- [ ] https://github.com/LibrePCB/LibrePCB/issues/1362
- [ ] https://github.com/LibrePCB/LibrePCB/issues/1367
- [ ] https://github.com/LibrePCB/LibrePCB/issues/1424
- To be Implemented For Sure
- [ ] https://github.com/LibrePCB/LibrePCB/issues/1051
- To be Implemented Sooner or Later
- [ ] https://github.com/LibrePCB/LibrePCB/issues/646
- [ ] https://github.com/LibrePCB/LibrePCB/issues/1045
- [ ] https://github.com/LibrePCB/LibrePCB/issues/1254
- [ ] https://github.com/LibrePCB/LibrePCB/issues/1332
- [ ] https://github.com/LibrePCB/LibrePCB/issues/1354
- [ ] https://github.com/LibrePCB/LibrePCB/issues/1370
# Related External Issues
- [ ] https://github.com/slint-ui/slint/issues/3715
- [ ] https://github.com/slint-ui/slint/issues/2723
Urban
Hello Urban(ubruhin),
I do understand that you moving from c++ to rust
What do you think about the tcl and tk libraries ?
Windows = Magicsplat Tcl/Tk for Windows | Magicsplat
magicsplat - Browse /magicsplat-tcl at SourceForge.net
Many persons using freebasic as programming language = windows ,linux, RaspberryPi (arm)
see
FreeBASIC is a completely free, open-source, multi-platform BASIC compiler, with syntax similar to MS-QuickBASIC, that adds new features such as pointers, object orientation, unsigned data types, inline assembly, and many others.
FreeBASIC is a completely free, open-source, multi-platform BASIC compiler, with syntax similar to MS-QuickBASIC, that adds new features such as pointers, object orientation, unsigned data types, inline assembly, and many others.
git clone https://git.code.sf.net/p/fbc/code fbc-code
FreeBASIC Compiler - Browse Files at SourceForge.net
FreeBASIC IDEs/Editors
IDE for FreeBasic
IDE for FreeBasic
Erik
Thanks for the suggestion, but to be honest, Tcl/Tk and FreeBasic are not interesting for us. LibrePCB is a giant software project with very specific needs. The chosen language and GUI toolkit is a fundamental decision which will have significant impact on the project’s future and thus have to be evaluated very seriously, based on many technical aspects but also considering the future of these toolkits. Some examples:
LibrePCB is the result of ~12 years of development. Switching the language has to be done step by step and will probably take more than 10 years to complete. During this time, it must be possible to mix the old with the new language so we require high compatibility between them.
Even just the evaluation of a new GUI toolkit took me several weeks because it is so complex.
I estimate at least 6 months of full-time work for migrating the major part of LibrePCB to a new UI. Migrating the whole UI will take several years.
Given these time frames, we require toolkits with a bright future. Although I do like old & mature toolkits, most of them will die sooner or later because modern toolkits provide a lot of advantages and will replace them step by step.