1 // XCCalendarMenu.cpp - XCCalendarMenu widget
3 // (c) 2012-2017 Xestia Software Development.
5 // This file is part of Xestia Calendar. Original code from Xestia Address Book.
7 // Xestia Calendar is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by the
9 // Free Software Foundation, version 3 of the license.
11 // Xestia Calendar is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License along
17 // with Xestia Calendar. If not, see <http://www.gnu.org/licenses/>
19 #include "XCEventMenu.h"
21 XCEventMenu::XCEventMenu(){
23 // Setup the menu items.
25 AppendMenuItem(wxT("editevent"), _("Edit Event"), wxT(""), ID_EVENTMENU_EDIT, wxITEM_NORMAL);
26 AppendMenuItem(wxT("deleteevent"), _("Delete Event"), wxT(""), ID_EVENTMENU_DELETE, wxITEM_NORMAL);
30 XCEventMenu::~XCEventMenu(){
32 // Destory the XCEventMenu object.
34 // Remove items from list (but don't delete).
38 // Menu items are deleted through ~wxMenuBase()
42 void XCEventMenu::AppendMenuItem(wxString objectName,
44 wxString menuDescription,
48 if (itemType == wxITEM_SEPARATOR){
49 this->AppendSeparator();
53 // Append a menu item to the XCEventMenu control.
55 wxMenuItem *menuitem = this->Append(itemID, menuName, menuDescription);
56 this->Connect(menuitem->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(XCEventMenu::ProcessMenuItemClick));
57 menuItems.insert(std::make_pair(objectName.ToStdString(), menuitem));
61 wxMenu* XCEventMenu::MenuPointer(){
67 void XCEventMenu::ProcessMenuItemClick( wxCommandEvent& event){
69 // Process an action when a menu item in the XCEventMenu
70 // control is selected.
72 int itemID = event.GetId();
76 case ID_EVENTMENU_EDIT:
78 wxCommandEvent editEntry(XCMAIN_EDITEVENT);
79 editEntry.SetId(ID_EDITEVENT);
80 editEntry.SetInt(eventID);
81 wxPostEvent(windowPtr, editEntry);
84 case ID_EVENTMENU_DELETE:
86 EventProperties *eventInfo = new EventProperties;
88 eventInfo->calendarID = calendarID;
89 eventInfo->eventID = eventID;
91 wxCommandEvent deleteEvent(XCMAIN_DELETEEVENT);
92 deleteEvent.SetId(ID_DELETEEVENT);
93 deleteEvent.SetClientData(eventInfo);
94 wxPostEvent(windowPtr, deleteEvent);
102 void XCEventMenu::SetCalendarID(int calendarID){
104 this->calendarID = calendarID;
108 void XCEventMenu::SetEventID(int eventID){
110 this->eventID = eventID;
114 void XCEventMenu::SetWindowPointer(wxWindow *windowPointer){
116 windowPtr = windowPointer;