XCCalendarManipulator::~XCCalendarManipulator(){
// Destory the controls from the widget.
+
+ dateButton->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(XCCalendarManipulator::DateTextClick), NULL, this);
+ nextButton->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(XCCalendarManipulator::NextMonth), NULL, this);
+ calendarsButton->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(XCCalendarManipulator::ShowCalendarsList), NULL, this);
+ previousButton->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(XCCalendarManipulator::PreviousMonth), NULL, this);
+
+#if defined(WIN32)
+ dateButton->Disconnect(wxEVT_ENTER_WINDOW, wxMouseEventHandler(XCCalendarManipulator::ButtonMouseover), NULL, this);
+ dateButton->Disconnect(wxEVT_LEAVE_WINDOW, wxMouseEventHandler(XCCalendarManipulator::ButtonMouseout), NULL, this);
+ nextButton->Disconnect(wxEVT_ENTER_WINDOW, wxMouseEventHandler(XCCalendarManipulator::ButtonMouseover), NULL, this);
+ nextButton->Disconnect(wxEVT_LEAVE_WINDOW, wxMouseEventHandler(XCCalendarManipulator::ButtonMouseout), NULL, this);
+ calendarsButton->Disconnect(wxEVT_ENTER_WINDOW, wxMouseEventHandler(XCCalendarManipulator::ButtonMouseover), NULL, this);
+ calendarsButton->Disconnect(wxEVT_LEAVE_WINDOW, wxMouseEventHandler(XCCalendarManipulator::ButtonMouseout), NULL, this);
+ previousButton->Disconnect(wxEVT_ENTER_WINDOW, wxMouseEventHandler(XCCalendarManipulator::ButtonMouseover), NULL, this);
+ previousButton->Disconnect(wxEVT_LEAVE_WINDOW, wxMouseEventHandler(XCCalendarManipulator::ButtonMouseout), NULL, this);
+#endif
+
+ Unbind(XCCALENDARMANIPULATOR_CHANGEGRID, &XCCalendarManipulator::ChangeGrid, this, ID_CHANGEGRID);
+
+ // Delete the buttons in pnlMain.
+
+ szrNavigation->Clear();
+
+ delete previousButton;
+ previousButton = nullptr;
+
+ delete nextButton;
+ nextButton = nullptr;
+
+ delete calendarsButton;
+ calendarsButton = nullptr;
+
+ delete dateButton;
+ dateButton = nullptr;
+
+ // Delete szrNavigation.
+
+ szrMain->Clear();
+ pnlMain->SetSizer(nullptr, true);
+
+ // Delete pnlMain itself;
+
+ delete pnlMain;
+ pnlMain = nullptr;
+
+ delete moo;
+ moo = nullptr;
+
+ delete calendarList;
+ calendarList = nullptr;
+
+ // Delete szrMain itself;
+
+ this->SetSizer(nullptr, true);
+
+ dataStorage = nullptr;
}