Code: Select all
class ComdButton(wx.Button):
def __init__(self, panel, label):
super().__init__(panel, label = label)
self.Bind(wx.EVT_BUTTON, self.comd)
# filled in later in derived classes
def comd(self, e): pass
Code: Select all
class AddButton(ComdButton):
def __init__(self, panel, med):
super().__init__(panel, "Add")
self.med = med
# called by base class
def comd(self, e):
self.med.addClicked()
Code: Select all
class DButton: public wxButton {
protected:
Mediator* med;
public:
DButton(wxPanel* panel, int id, const std::string label, Mediator* med, wxApp* app):
wxButton(panel, id, wxString::wxString(label), wxDefaultPosition,
wxDefaultSize)
{
this->med = med;
Bind(wxEVT_BUTTON, &DButton::comd, this);
}
//abstract method to be completed in derived classes
virtual void comd(wxCommandEvent& event) {}
};
Code: Select all
class AddButton : public DButton
{
public:
AddButton(wxPanel* panel, int id, Mediator* med, wxApp* app) :
DButton(panel, id, std::string("Add"), med, app) {}
void comd() {
this->med->addClicked();
}
};