|
OpenCPN Partial API docs
|
Wrapper for global variable, supports notification events when value changes. More...
#include <observable_globvar.h>
Public Member Functions | |
| GlobalVar (T *ptr) | |
| Create a GlobalVar using given pointer (variable address) as key. More... | |
| void | Set (const T &arg) |
| Set variable value and notify all listeners. More... | |
| const T | Get () |
| Return current variable value. More... | |
Public Member Functions inherited from Observable | |
| Observable (const std::string &_key) | |
| Create an instance listening to given key. More... | |
| Observable (const KeyProvider &kp) | |
| Create an instance listening to key provided by kp.GetKey(). More... | |
| virtual const void | Notify () |
| Notify all listeners about variable change. More... | |
| const void | Notify (std::shared_ptr< const void > p) |
| Notify all listeners about variable change with a shared_ptr payload. More... | |
| bool | Unlisten (wxEvtHandler *listener, wxEventType ev) |
| Remove window listening to ev from list of listeners. More... | |
| std::string | GetKey () const |
| Retrieve the actual listening key: More... | |
| virtual std::string | GetKey () const =0 |
| Return key used to listen and notify. More... | |
Additional Inherited Members | |
Public Attributes inherited from Observable | |
| const std::string | key |
| The key used to create and clone. More... | |
Protected Member Functions inherited from Observable | |
| const void | Notify (std::shared_ptr< const void > ptr, const std::string &s, int num, void *client_data) |
| Notify all listeners: send them a 'type' ObservedEvt message as defined by listen() with optional data available using GetString(), getInt(), GetSharedPtr() and/or GetClientData(). More... | |
| const void | Notify (const std::string &s, void *client_data) |
| Notify all listeners: send them a 'type' ObservedEvt message as defined by listen() with optional data available using GetString() and/or GetClientData(). More... | |
Wrapper for global variable, supports notification events when value changes.
Client usage, writing a value + notifying listeners:
GlobalVar<wxString> compat_os(&g_compatOS);
compat_os.Set("ubuntu-gtk3-x86_64");
Client usage, modifying a value + notifying listeners:
GlobalVar<wxString> plugin_array_var(&plugin_array); plugin_array.Add(new_pic); plugin_array_var.Notify();
Client usage, listening to value changes:
class Foo: public wxEvtHandler {
public:
Foo(...) {
GlobalVar<wxString> compat_os(&g_compatOS);
// compat_os sends a wxCommandEvent type EVT_FOO to this on change:
wxDEFINE_EVENT(EVT_FOO, wxCommandEvent);
compat_os_listener.Listen(compat_os, this, EVT_FOO);)
// Handle EVT_FOO as any event when it arrives, for example:
Bind(EVT_FOO,
[](wxCommandEvent&) { cout << "value has changed"; });
...
}
private:
ObservableListener compat_os_listener;
...
}
Definition at line 72 of file observable_globvar.h.
|
inline |
Create a GlobalVar using given pointer (variable address) as key.
Definition at line 75 of file observable_globvar.h.
|
inline |
Return current variable value.
Definition at line 84 of file observable_globvar.h.
|
inline |
Set variable value and notify all listeners.
Definition at line 78 of file observable_globvar.h.