// frmMain-Window.h - frmMain form window functions.
//
// (c) 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"
void frmMain::WindowAdd( wxCommandEvent &event ){
// Add a window to the window list.
WindowData *receivedWindowData = (WindowData*)event.GetClientData();
size_t pos;
wxMenuItem *mnuNewItem = new wxMenuItem(NULL, receivedWindowData->WindowID, wxT("Event Window #") + wxString::Format(wxT("%i"), receivedWindowData->WindowID), wxEmptyString, wxITEM_NORMAL, NULL);
mnuNewItem->SetId(receivedWindowData->WindowID);
mnuWindow->Append(mnuNewItem);
this->Connect(mnuNewItem->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(frmMain::ShowEventWindow));
frmEventEditor *frmEventEditorPtr = static_cast(receivedWindowData->WindowPointer);
wxString windowTitle = frmEventEditorPtr->GetTitle();
mnuNewItem->SetItemLabel(windowTitle);
WindowListPointersMenu.insert(std::make_pair(receivedWindowData->WindowID, mnuNewItem));
WindowListPointers.insert(std::make_pair(receivedWindowData->WindowID, receivedWindowData->WindowPointer));
WindowListType.insert(std::make_pair(receivedWindowData->WindowID, 0));
delete receivedWindowData;
receivedWindowData = NULL;
}
void frmMain::WindowUpdate( wxCommandEvent &event ){
// Add a window to the window list.
WindowData *receivedWindowData = (WindowData*)event.GetClientData();
size_t pos;
frmEventEditor *frmEventEditorPtr = static_cast(receivedWindowData->WindowPointer);
wxString windowTitle = frmEventEditorPtr->GetTitle();
std::map::iterator MenuIter = WindowListPointersMenu.find(receivedWindowData->WindowID);
MenuIter->second->SetItemLabel(windowTitle);
delete receivedWindowData;
receivedWindowData = NULL;
}
void frmMain::WindowDelete( wxCommandEvent &event ){
// Delete the window from the window list.
WindowData *receivedWindowData = (WindowData*)event.GetClientData();
size_t pos;
std::map::iterator menuIter = WindowListPointersMenu.find(receivedWindowData->WindowID);
mnuWindow->Destroy(menuIter->second);
WindowListPointersMenu.erase(receivedWindowData->WindowID);
WindowListPointers.erase(receivedWindowData->WindowID);
WindowListType.erase(receivedWindowData->WindowID);
delete receivedWindowData;
receivedWindowData = NULL;
}
void frmMain::ShowEventWindow( wxCommandEvent &event ){
// Show a contact window from the window list.
std::map::iterator WindowIter = WindowListPointers.find(event.GetId());
frmEventEditor *frmEventEditorPtr = static_cast(WindowIter->second);
frmEventEditorPtr->Show();
frmEventEditorPtr->Raise();
}
}