wxWidgets Observable Library
EventVar Class Reference

Generic event handling between between two parties like MVC Model and Controller using a shared EventVar variable. More...

#include <observable_evtvar.h>

Inheritance diagram for EventVar:
Observable KeyProvider

Public Member Functions

const void Notify ()
 Notify all listeners, no data supplied.
 
const void Notify (void *data)
 Notify all listeners about variable change with ClientData.
 
const void Notify (const std::string &s)
 Notify all listeners about variable change with a string.
 
const void Notify (int n, const std::string &s)
 Notify all listeners about variable change with a string and an int.
 
const void Notify (std::shared_ptr< void > p, const std::string &s, int n=0)
 Notify all listeners about variable change with shared_ptr, a string and an optional number.
 
- Public Member Functions inherited from Observable
 Observable (const std::string &_key)
 Create an instance listening to given key.
 
 Observable (const KeyProvider &kp)
 Create an instance listening to key provided by kp.GetKey().
 
const void Notify (std::shared_ptr< const void > p)
 Notify all listeners about variable change with a shared_ptr payload.
 
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:
 

Additional Inherited Members

- Public Attributes inherited from Observable
const std::string key
 The key used to create and clone.
 
- 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().
 
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().
 

Detailed Description

Generic event handling between between two parties like MVC Model and Controller using a shared EventVar variable.

Notifying, for example in Model code:

class Model: ...
public:
  EventVar change;

  void some_method() {
    ...
    change.Notify("new value")
  }

Listening, for example in Controller/GUI:

class Gui: public wxEvtHandler {
public:
  Gui:Gui(Model& model) {
    wxDEFINE_EVENT(EVT_FOO, wxCommandEvent);
    change_listener.Listen(model.change, this, EVT_FOO);
    Bind(EVT_FOO, [&](wxCommandEvent ev) {
      auto s = ev.GetString();    s -> "new value"
      ... do something;
    });
  }

private:
  ObservableListener change_listener;
}

Definition at line 69 of file observable_evtvar.h.


The documentation for this class was generated from the following file: