3 ms·
I'm genuinely curious. Is there a good example of a cross-platform wrapper around platform widgets? That was the original design brief of AWT, which turned out
by raphlinus 7y ago
I'm genuinely curious. Is there a good example of a cross-platform wrapper around platform widgets? That was the original design brief of AWT, which turned out quite bad. Is there a successor which actually gets it right?
- nitwit005 7y agoI obviously haven't tried every library, but my experience has been they all have some problems. You have to expect things like differing text wrapping and scroll behavior because it's hard to completely abstract the underlying UI frameworks. The alternative of custom painting everything tends to come with more difficult to fix issues however. AWT's successor Swing struggled with things like respecting system user preferences and accessibility. You can find some old Java 1.5 write ups about it: https://web.mit.edu/java_v1.5.0_22/distrib/share/docs/guide/swing/1.4/windows.html https://web.mit.edu/java_v1.5.0_22/distrib/share/docs/guide/...
- pnako 7y agowxWidgets is the most popular one. It's an ambitious project that allows accessing true native widgets, not just from C++ but also from other languages like Python, etc.
- twic 7y agoSomeone had a go at a Rust binding of wxWidgets five years ago: https://github.com/kenz-gelsoft/wxRust https://github.com/kenz-gelsoft/wxRust As they mention, this is based on a C wrapper round wxWidgets' native C++ API, originally developed to aid in developing a Haskell binding to wxWidgets: http://wxc.sourceforge.net/ http://wxc.sourceforge.net/ The Rust binding is probably bitrotted for modern Rust, but since it's mostly generated, generating a low-level API using bindgen, which is actively maintained, and then a high-level API using a Python script of its own, it might be fairly easy to resurrect. bindgen has got pretty good at converting C++ APIs, so it might be worth trying it on wxWidgets' native API, too. I have no plans to write a GUI application in Rust myself, but i would love for there to be a good option for other people to write native GUI apps in Rust. As many other commenters have noted, cross-platform synthetic GUIs never look or behave quite right.
- dsego 7y agoHow about libui? https://github.com/andlabs/libui/ https://github.com/andlabs/libui/
- the8472 7y agohttps://www.eclipse.org/swt/ https://www.eclipse.org/swt/
- j88439h84 7y agohttp://Beeware.org http://Beeware.org is a new project for python.