7 releases (breaking)
0.7.0 | Sep 6, 2022 |
---|---|
0.6.0 | Jul 9, 2021 |
0.5.0 | May 19, 2021 |
0.4.0 | Apr 15, 2021 |
0.1.0 | Sep 2, 2020 |
#11 in #micro-framework
Used in woab
25KB
607 lines
WoAB
WoAB (Widgets on Actors Bridge) is a GUI microframework for combining the widgets toolkit GTK with the actors framework Actix. It helps with:
- Running the actors inside the GTK thread, allowing message handlers to interact with the widgets directly.
- Routing GTK signals through the asynchronous runtime, so that the code handling them can proceed naturally to interact with the actors.
- Mapping widgets and signals from Glade XML files to user types.
Refer to the docs for more explanation on how to use WoAB, and to the examples for a short demonstration.
Pitfalls
- When starting Actix actors from outside Tokio/Actix,
woab::block_on
must be used. This is a limitation of Actix that needs to be respected. dialog.run()
must not be used - usewoab::run_dialog
instead.- If an actor is created inside a
gtk::Application::connect_activate
, itsstarted
method will run after theactivate
signal is done. This can be a problem for methods likeset_application
that can segfault if they are called outside theactivate
signal. A solution could be to either do the startup insideconnect_activate
or usewoab::route_signal
to route the application'sactivate
signal to the actor and do the startup in the actor's signal handler. woab::close_actix_runtime
must be called aftergtk::main()
, or else Tokio will panic when GTK quits. If anyone knows how to automate it I'm open to suggestions.
License
Licensed under MIT license (LICENSE or http://opensource.org/licenses/MIT))
Dependencies
~1.5MB
~33K SLoC