
Boost.UI – a new C++ GUI library - kosenko
https://groups.google.com/forum/#!topic/boost-developers-archive/_aEmJlslb7M
======
eXpl0it3r
I 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
It 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
> 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
For 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.

------
jasonjei
This 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
Thanks. 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
Agreed 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
Web 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
You 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.

------
eps
Do you have any screenshots? Ideally, for the same UI on all supported
platforms.

~~~
stephen82
I 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
[https://github.com/kosenko/ui/blob/master/example/native.cpp...](https://github.com/kosenko/ui/blob/master/example/native.cpp#L11)

It's basically using wxWidgets.

------
dmitriik
Such 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.

~~~
gpderetta
I 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.

