wanting to try a GUI toolkit: needing some advice on which one to choose
someone
someone at somewhere.com
Sat May 29 00:41:08 UTC 2021
On Thursday, 27 May 2021 at 01:17:44 UTC, someone wrote:
> Any comments are welcomed, even any comments regarding anyone
> experience with GUI development within D, no matter whether the
> answer would be relevant to my specific question seeking a
> choice or not.
First and foremost, thanks everybody for your replies :) !
I didn't know some of the toolkits you advised me to try even
existed.
There was a lot of info for me to digest before starting
answering you on some of the specifics and/or personal experience
with them, so, I did my homework and make the following summary
(mainly relevant to my requirements) to organize my thoughts so I
could make a roadmap to start selecting/discarding toolkits, and
please, let me know anything I got wrong and/or point me to
anything that is plainly wrong in the following summary:
- Microsoft
[MFC](https://en.wikipedia.org/wiki/Microsoft_Foundation_Class_Library) is a Microsoft Visual C++ wrapper around the Windows API
- Microsoft [Windows
Forms](https://en.wikipedia.org/wiki/Windows_Forms) for the net
framework (not a Windows API wrapper)
- Microsoft
[WPL](https://en.wikipedia.org/wiki/Windows_Presentation_Foundation) (aka Windows Presentation Foundation) for the net framework 3.0 using XAML or any CLR language
- Microsoft [WinUI #
1](https://docs.microsoft.com/windows/apps/winui/)
- Microsoft [WinUI #
2](https://docs.microsoft.com/windows/apps/winui/winui2/release-notes/) for UWP XAML apps
- Microsoft [WinUI #
3](https://docs.microsoft.com/windows/apps/winui/winui3/release-notes/) for UWP XAML / Win32 apps (aka Project Reunion)
- Gnome [GNUstep](https://en.wikipedia.org/wiki/GNUstep) for
Objective-C
- Apple [Cocoa](https://en.wikipedia.org/wiki/Cocoa_(API)) for
Objective-C
- [MOTIF](https://en.wikipedia.org/wiki/Motif_(software)) for C
is a legacy UNIX toolkit
- [libagar](http://libagar.org/) (aka agar) for
(industry-standard ANSI X3.159-1989) C:
[documentation](http://libagar.org/docs) for
[1.6.0](http://libagar.org/mdoc.cgi?man=AG_Intro.3),
[screenshots](http://libagar.org/screenshots.html)
- supports texture and GPU acceleration wherever available
- supports linux/freeBSD/dragonFlyBSD (at least)
- [Fox](http://www.fox-toolkit.org/home.html) for C++:
[overview](http://www.fox-toolkit.org/goals.html), plain
[documentation](http://www.fox-toolkit.org/doc.html),
[FAQ](http://www.fox-toolkit.org/faq.html), and
[screenshots](http://www.fox-toolkit.org/screenshots.html)
- relies only on core system facilities and **does not wrap**
native GUI libraries or toolkits
- supports linux/freeBSD (at least)
- used by the xfe file manager app
- [wxWidgets](https://en.wikipedia.org/wiki/WxWidgets) (former
wxWindows) for C++:
[overview](https://docs.wxwidgets.org/3.0/page_introduction.html), excellent plain [documentation](https://docs.wxwidgets.org/3.0/), [tutorials](https://docs.wxwidgets.org/3.0/page_topics.html); eg: [hello world app](https://docs.wxwidgets.org/3.0/overview_helloworld.html)
- supports native platform controls wherever possible
- supports UniCode:
(https://docs.wxwidgets.org/3.0/overview_unicode.html)overview
- wxMSW is the native port for Microsoft Windows
- wxGTK2 port supporting GTK+ 2.# ≥ 2.6
- wxGTK3 port supporting GTK+ 3.#
- first-impressions: fully-alive
-
[arsd](http://dpldocs.info/experimental-docs/arsd.html#desktop-gui): [simpledisplay](http://dpldocs.info/experimental-docs/arsd.simpledisplay.html) → [minigui](http://dpldocs.info/experimental-docs/arsd.minigui.html) for D: plain documentation
- simpleDisplay provides basic cross-platform GUI-related
functionality: creating windows, drawing on them, working with
the clipboard, timers, openGL, and more; but, **does not
provide** high-level GUI widgets
- simpleDisplay does not have any dependencies outside the OS
and color.d
- simpleDisplay should support UniCode and i18n
internationalization since its written in D to begin with (my
assumption)
- miniGUI primary goal is to be useful without being large and
complicated (like GTK and/or QT) and it isn't hugely concerned
with appearance
- miniGUI keeps it simple on linux: some controls can be
customized with CSS-inspired Widget.Style classes
- miniGUI supports the native controls/themes on Windows
- miniGUI supports creating widget trees at runtime from XML
with arsd.minigui_xml
- miniGUI requirements are arsd.simpledisplay and arsd.color
dependencies on which it is built: nothing more
- miniGUI had mostly additive changes or bug fixes since its
inception until 05-2021
- miniGUI should support UniCode and i18n internationalization
since its written in D to begin with (my assumption)
- [dlangUI](https://github.com/buggins/dlangui) for D:
[documentation](http://buggins.github.io/dlangui/ddox/),
[tutorials](https://github.com/buggins/dlangui/wiki), and
[screenshots](http://buggins.github.io/dlangui/screenshots.html)
- it is a major-refactored port of the Cool Reader app project
for C++
- supports openGL based acceleration: fallbacks to pure Win32
API / SDL / X11 when the openGL library is not available and/or
cannot be loaded
- supports highly-customizable styles and themes
- supports UniCode and i18n internationalization
- requirements: DMD ≥ 2.077
- requirements: third-party: DerelictGL3 for OpenGL support
- requirements: third-party: DerelictFT and FreeType library
support under linux and optionally under Windows
- requirements: third-party: DerelictFI and FreeImage library
support for image decoding
- requirements: third-party: DerelictSDL2 and SDL2 for cross
platform support
- requirements: third-party: XCB and X11 bindings (patched)
when SDL2 is not used
- first-impressions: seems abandoned
- Gnome [GTK+](https://en.wikipedia.org/wiki/GTK%2B) (former GIMP
ToolKit) for C (using GObject library targeting Glib) (currently
using Cairo)
- primarily targeting the X-Windows system
- used in Gnome, LXDE, XFCE, MATE, Cinamon
- used by Marco, Mutter, Xfwm (and some more) window managers
- [QT](https://en.wikipedia.org/wiki/Qt_(framework)) is for C++
- primarily targeting the X-Windows system or Wayland
- used in KDE, LXQT, Lumina, Unity
- QT [has removed LTS from the OSS
community](https://catfox.life/2021/03/21/really-leaving-the-linux-desktop-behind/) plainly admitting they want us to be their beta testers and that paid commercial users are the only ones who deserve stability
-
[Elementary](https://en.wikipedia.org/wiki/Enlightenment_Foundation_Libraries) for C
- part of EFL (aka Elementary Foundation Libraries)
- [sciter](https://sciter.com/): is an embeddable
HTML/CSS/JavaScript engine for modern UI development
- still need to research it: left it as the last one because
it seems it is the opposite of what I am looking for
At first glance, but that could end quite differently, possible
ones are (ordering not standing): dlangUI and arsd.miniGUI
written in D, agar written in C, Fox and wxWidgets written in C++.
Regarding dlangUI: its a shame if it was really abandoned ...
does someone seriously considered forking it ? Or is it pointless
since it needs a lot of human resources that are not there to
begin with which is what I suspect ?
More information about the Digitalmars-d-learn
mailing list