8 releases (breaking)
new 0.9.0 | Apr 18, 2024 |
---|---|
0.7.0 | Sep 6, 2022 |
0.6.0 | Jul 9, 2021 |
0.5.0 | May 19, 2021 |
0.1.0 | Sep 2, 2020 |
#1322 in Procedural macros
Used in woab
24KB
581 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
~0.3–0.8MB
~19K SLoC