X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fforms%2Fmain%2FfrmMain.cpp;h=9c420ffe6870dae897b62b8cd67aa0fc6551a271;hb=313ed5d266c0f7c192d51f4f8780c03aade2f43b;hp=e1f2bd9d229be4c9c90c9dea15cae180ff6ad1e3;hpb=457d38a9a7b94871b8df70e3a595fd316ca9c4c0;p=xestiacalendar%2F.git diff --git a/source/forms/main/frmMain.cpp b/source/forms/main/frmMain.cpp index e1f2bd9..9c420ff 100644 --- a/source/forms/main/frmMain.cpp +++ b/source/forms/main/frmMain.cpp @@ -1,10 +1,39 @@ +// frmMain.h - frmMain form functions +// +// (c) 2016-2017 Xestia Software Development. +// +// This file is part of Xestia Calendar. +// +// Xestia Calendar is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by the +// Free Software Foundation, version 3 of the license. +// +// Xestia Calendar is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with Xestia Calendar. If not, see + #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. @@ -58,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 ) @@ -236,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; @@ -356,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()); @@ -373,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. @@ -451,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(); } @@ -460,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(); }