X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fforms%2Fmain%2FfrmMain.cpp;h=9c420ffe6870dae897b62b8cd67aa0fc6551a271;hb=ca1d24d80ec04ae64a7540cf8bca61c053f2a193;hp=d04574f441af33a1ca963dd793193df016557242;hpb=cba151c4b833a26c63984769f921bab5e755decd;p=xestiacalendar%2F.git diff --git a/source/forms/main/frmMain.cpp b/source/forms/main/frmMain.cpp index d04574f..9c420ff 100644 --- a/source/forms/main/frmMain.cpp +++ b/source/forms/main/frmMain.cpp @@ -1,4 +1,4 @@ -// frmMain.h - frmMain form functions header. +// frmMain.h - frmMain form functions // // (c) 2016-2017 Xestia Software Development. // @@ -18,11 +18,22 @@ #include "frmMain.h" +wxDEFINE_EVENT(XCMAIN_PROCESSCALENDAR, wxCommandEvent); +wxDEFINE_EVENT(XCMAIN_EDITCALENDAR, wxCommandEvent); +wxDEFINE_EVENT(XCMAIN_DELETECALENDAR, wxCommandEvent); +wxDEFINE_EVENT(XCMAIN_ADDEVENT, wxCommandEvent); +wxDEFINE_EVENT(XCMAIN_UPDATEEVENT, wxCommandEvent); +wxDEFINE_EVENT(XCMAIN_EDITEVENT, wxCommandEvent); +wxDEFINE_EVENT(XCMAIN_DELETEEVENT, wxCommandEvent); + +wxDEFINE_EVENT(XCMAIN_ADDWINDOWINFO, wxCommandEvent); +wxDEFINE_EVENT(XCMAIN_UPDATEWINDOWINFO, wxCommandEvent); +wxDEFINE_EVENT(XCMAIN_DELETEWINDOWINFO, wxCommandEvent); + frmMain::frmMain( wxWindow* parent ) : frmMainADT( parent ) { - // Setup the default settings if they don't // exist. @@ -76,15 +87,20 @@ frmMainADT( parent ) mainCalendarCtrl = new XCCalendarCtrl(this, &calendarData); szrMain->Add(mainCalendarCtrl, 1, wxEXPAND, 5); szrMain->Layout(); + + // Bind events to the control. - Connect(ID_PROCESSCALENDAR, XCMAIN_PROCESSCALENDAR, wxCommandEventHandler(frmMain::ProcessCalendar)); - Connect(ID_EDITCALENDAR, XCMAIN_EDITCALENDAR, wxCommandEventHandler(frmMain::EditCalendar)); - Connect(ID_DELETECALENDAR, XCMAIN_DELETECALENDAR, wxCommandEventHandler(frmMain::DeleteCalendar)); - Connect(ID_DELETEEVENT, XCMAIN_DELETEEVENT, wxCommandEventHandler(frmMain::DeleteEvent)); - Connect(ID_ADDENTRY, XCMAIN_ADDEVENT, wxCommandEventHandler(frmMain::AddEvent)); - Connect(ID_UPDATEENTRY, XCMAIN_UPDATEEVENT, wxCommandEventHandler(frmMain::UpdateEvent)); - Connect(ID_EDITEVENT, XCMAIN_EDITEVENT, wxCommandEventHandler(frmMain::EditEvent)); + Bind(XCMAIN_PROCESSCALENDAR, &frmMain::ProcessCalendar, this, ID_PROCESSCALENDAR); + Bind(XCMAIN_EDITCALENDAR, &frmMain::EditCalendar, this, ID_EDITCALENDAR); + Bind(XCMAIN_DELETECALENDAR, &frmMain::DeleteCalendar, this, ID_DELETECALENDAR); + Bind(XCMAIN_ADDEVENT, &frmMain::AddEvent, this, ID_ADDENTRY); + Bind(XCMAIN_UPDATEEVENT, &frmMain::UpdateEvent, this, ID_UPDATEENTRY); + Bind(XCMAIN_EDITEVENT, &frmMain::EditEvent, this, ID_EDITEVENT); + Bind(XCMAIN_DELETEEVENT, &frmMain::DeleteEvent, this, ID_DELETEEVENT); + Bind(XCMAIN_ADDWINDOWINFO, &frmMain::WindowAdd, this, ID_ADDWINDOW); + Bind(XCMAIN_UPDATEWINDOWINFO, &frmMain::WindowUpdate, this, ID_UPDATEWINDOW); + Bind(XCMAIN_DELETEWINDOWINFO, &frmMain::WindowDelete, this, ID_DELETEWINDOW); } void frmMain::QuitApp( wxCloseEvent& event ) @@ -254,6 +270,13 @@ void frmMain::LoadAccountData(){ void frmMain::ShowPreferencesWindow( wxCommandEvent& event ) { + // Close all windows first. + + if (CloseAllWindows() == false) + { + return; + } + // Open the preferences window. reloadAccounts = FALSE; @@ -374,6 +397,13 @@ void frmMain::CreateNewCalendar( wxCommandEvent& event ) void frmMain::EditCalendar( wxCommandEvent& event ) { + // Close all windows first. + + if (CloseAllWindows() == false) + { + return; + } + // Get the calendar data. CDSGetCalendarInfo calendarInfo = calendarData.GetCalendar(event.GetInt()); @@ -391,6 +421,13 @@ void frmMain::EditCalendar( wxCommandEvent& event ) void frmMain::DeleteCalendar( wxCommandEvent& event ) { + // Close all windows first. + + if (CloseAllWindows() == false) + { + return; + } + CalendarProperties *calendarEventInfo = (CalendarProperties*)event.GetClientData(); // Get the calendar data. @@ -469,6 +506,21 @@ void frmMain::CreateNewEvent( wxCommandEvent& event ){ frmEventEditor *frameNewEvent = new frmEventEditor ( this ); frameNewEvent->SetupForm(&calendarData, preferences); + frameNewEvent->SetWindowMenuItemID(++WindowMenuItemID); + + // Add the window to the window list. + + WindowData *newWindowData = new WindowData; + + newWindowData->DataType = 1; + newWindowData->WindowPointer = (void*)frameNewEvent; + newWindowData->WindowID = WindowMenuItemID; + + wxCommandEvent addevent(XCMAIN_ADDWINDOWINFO); + addevent.SetId(ID_ADDWINDOW); + addevent.SetClientData(newWindowData); + wxPostEvent(this, addevent); + frameNewEvent->Show(); } @@ -478,7 +530,24 @@ void frmMain::EditEvent( wxCommandEvent& event ){ frmEventEditor *frameEditEvent = new frmEventEditor ( this ); frameEditEvent->SetEventID(event.GetInt()); frameEditEvent->SetEditMode(true); + frameEditEvent->SetWindowMenuItemID(++WindowMenuItemID); frameEditEvent->SetupForm(&calendarData, preferences); + + // Add the window to the window list. + + WindowData *newWindowData = new WindowData; + + newWindowData->DataType = 1; + newWindowData->WindowPointer = (void*)frameEditEvent; + newWindowData->WindowID = WindowMenuItemID; + + wxCommandEvent addevent(XCMAIN_ADDWINDOWINFO); + addevent.SetId(ID_ADDWINDOW); + addevent.SetClientData(newWindowData); + wxPostEvent(this, addevent); + + // Setup the form and display it. + frameEditEvent->Show(); }