4 ms·
Boost.UI – a new C++ GUI library
- eps 9y agoDo you have any screenshots? Ideally, for the same UI on all supported platforms.
- stephen82 9y agoI thought the same thing, until I read the following line and got me covered: https://github.com/kosenko/ui/blob/master/example/native.cpp#L11
- speps 9y agohttps://github.com/kosenko/ui/blob/master/example/native.cpp#L11 https://github.com/kosenko/ui/blob/master/example/native.cpp... It's basically using wxWidgets.
- kosenko 9y agoScreenshots was added to documentation, sorry for delay.
- eXpl0it3r 9y agoI don't really get why this is called Boost.UI. The list of example seem to just try and have one for every boost library, is that the goal? Or is the goal to get this added to boost? As long as it's not an officially accepted library, I think using boost in the name and code is quite misleading. Even more misleading is that it claims to be all native, while underneath it simply uses wxWidgets. I'm sure it's a way to go, but don't hide your dependency and make it sound like you actually implemented cross-platform native UI elements.
- kosenko 9y agoIt is non official Boost library like an other libraries: http://blincubator.com/alphabetically/ http://blincubator.com/alphabetically/ Mentioned examples demonstrates integration with other Boost libraries. Yes, goal is to be added to Boost. Boost.UI application eventually uses native widgets. Cross-platform elements can't be native by definition. Boost.UI is about interface, but not implementation. And I would like to omit stereotypes about wxWidgets.
- eXpl0it3r 9y ago> Mentioned examples demonstrates integration with other Boost libraries. What do you understand with "integration". Do they really integrate or do you just demonstrate how each library can be used and then somehow represented with a UI? Examples are great, but making each one specifically for some Boost library feels odd. Are you showing off Boost libraries or are you showing Boost.UI's functionalities? I don't think anyone will doubt that Boost libraries can be used with Boost.UI. > And I would like to omit stereotypes about wxWidgets. That's okay, but I still find it a bit misleading, when only at the build stage the compiler will tell you "oh btw this library requires you to have wxWidget headers". When I use a library, I want to know its dependencies upfront and not having to browse the source code or being told through a compiler error.
- kosenko 9y agoFor example Boost.Geometry and Boost.Polygon could be used with Boost.UI coordinates, Boost.Chrono (and std::chrono) in Boost.UI on_timeout() function, Boost.Date_Time library is used in date and time pickers etc. wxWidgets is mentioned in build instructions.
- dmitriik 9y agoSuch a library will never be accepted by Boost community. Boost is a "C++ standard extension", this library infinitely far from STL and Boost standards. In fact GTK+ looks much more promising to become a C++ GUI library.
- kosenko 9y agoWhy you think that this library infinitely far from STL and Boost standards?
- gpderetta 9y agoI have no idea whether this library is good or not, but being a "C++ standard extension", whatever that means, is not a requirement for getting into boost. The only requirement for boost acceptance is basically convince enough people that the library is good enough to pass review.
- jasonjei 9y agoThis sounds great and I always love competition, but isn't QML and QT a very good product? QML is basically the C++ cross-platform answer to Apple's easy storyboard UI tooling. Wouldn't Boost need to have very good development tools to compete with QT? On top of that, a lot of C++ apps I know use Chromium Embedded to drive UI...
- kosenko 9y agoThanks. QML isn't C++. Boost somehow competes with Qt. Boost.UI is designed mostly for developers that prefer modern C++ syntax and integration with Boost. There is boost::ui::webview, but it supports only html output yet, without data input and user events.
- jasonjei 9y agoAgreed that QML isn't C++, but it can be connected to C++ code, and the "enacting clause" to start QML UI happens in main()... I have used Boost and love how it has influenced the direction of std::C++. Do you see any potential for the C++ standard to build off of Boost in building a UI standard?
- kosenko 9y agoWeb browser engines also can be connected to C++ code and I think that this way is more promising that QML-way. It is very early to say, but Boost.UI library has some potential to be included in C++ standard.
- dkersten 9y agoYou can use QtQuick without QML (although its a bit of effort) and Qt itself is very modern C++ friendly with support for example for using lambda's as slots and such. You can also (and should, IMHO) treat QML as a purely data description of the UI (as you would if your UI was created with a GUI builder, which QML can also be, as eg libglade does for GTK, or html or whatever), then you can easily do all of your logic in C++ without writing any javascript logic. I've actually done this for parts of an application: I created QObjects in C++ and in QML I attached QML properties (signals) to my C++ objects methods (slots) for the logic. It was pretty nice. Basically, you can think of QML as a data serialisation format describing the UI. Just throwing in my experience with Qt. I haven't used Boost.UI so have no opinions on it, but I'm sure its great too! (although its clearly early days, QtQuick has a super rich widget library, Boost.UI still needs some more work -- still, a promising start) One differentiator to point out is that Boost.UI uses system widgets. I personally prefer QtQuick's GPU composited custom widgets (not that the native ones don't do this, just that it works really well for me in Qt), but sometimes its desirable (and some people prefer it) to use system native widgets. Boost.UI looks like a great choice for this.