Communicating between widgets
We'll now communicate between the widgets to indicate we want to add a song to the playlist. But before we do so, we'll look in more detail at how a widget can communicate with itself.
Communicating with the same widget
We previously saw how to communicate with the same widget. To send a message to the same widget from an event handler in the view, we simply need to specify the message to be sent on the right side of =>
, like in the following example:
gtk::ToolButton { icon_widget: &new_icon("gtk-quit"), clicked => Quit, }
Here, the Quit
message is sent to the same widget (that is, App
) when the user clicks this tool button. But this is syntax sugar for a call to the emit()
method on the stream of events of a relm
widget.
Emit
So, let's see how to send a message to the same widget without using this syntax: this is useful in more complex cases, such as when we want to conditionally send a message. Let's go back to our Playlist
and add a play()
method...