// frmContactEditor-Events.cpp - frmContactEditor Events subroutines. // // (c) 2012-2015 Xestia Software Development. // // This file is part of Xestia Address Book. // // Xestia Address Book 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 Address Book 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 Address Book. If not, see #include "frmContactEditor.h" bool frmContactEditor::ProcessEvent(wxEvent& event) { // Process the cut/copy/paste events. // This section has been taken from the wxWidgets sample code of richtext.cpp // so that simple Cut/Copy/Paste code can be made. // As this code comes from the samples of the wxWidgets library, this is licenced // under the wxWindows Library Licence and is compatable with the LGPL and is // compatable with Xestia Address Book's licence. if (event.IsCommandEvent() && !event.IsKindOf(CLASSINFO(wxChildFocusEvent))){ // Problem: we can get infinite recursion because the events // climb back up to this frame, and repeat. // Assume that command events don't cause another command event // to be called, so we can rely on inCommand not being overwritten static int s_eventType = 0; static wxWindowID s_id = 0; if (s_id != event.GetId() && s_eventType != event.GetEventType()){ s_eventType = event.GetEventType(); s_id = event.GetId(); wxWindow* focusWin = wxFindFocusDescendant(this); if (focusWin && focusWin->GetEventHandler()->ProcessEvent(event)){ //s_command = NULL; s_eventType = 0; s_id = 0; return true; } s_eventType = 0; s_id = 0; } else { return false; } } return wxFrame::ProcessEvent(event); } void frmContactEditor::UpdateDisplayAs( wxCommandEvent &event ){ // Generate a drop down list of common names to // use for the display as drop down box. wxString SetValue = cmbDisplayAs->GetValue(); cmbDisplayAs->Clear(); cmbDisplayAs->Append(txtForename->GetValue() + wxT(" ") + txtSurname->GetValue()); if (!txtOtherNames->GetValue().IsEmpty()){ cmbDisplayAs->Append(txtForename->GetValue() + wxT(" ") + txtOtherNames->GetValue() + wxT(" ") + txtForename->GetValue()); } cmbDisplayAs->Append(txtSurname->GetValue() + wxT(", ") + txtForename->GetValue()); if (!txtOtherNames->GetValue().IsEmpty()){ cmbDisplayAs->Append(txtForename->GetValue() + wxT(", ") + wxT(" ") + txtForename->GetValue() + wxT(" ") + txtOtherNames->GetValue()); } if (!txtTitle->GetValue().IsEmpty()){ cmbDisplayAs->Append(txtTitle->GetValue() + wxT(" ") + txtForename->GetValue() + wxT(" ") + txtSurname->GetValue()); } cmbDisplayAs->SetValue(SetValue); this->SetTitle(cmbDisplayAs->GetValue()); } void frmContactEditor::UpdateName( wxCommandEvent &event ){ // Update the window title and main window menu item // with the new name. this->SetTitle(cmbDisplayAs->GetValue()); WindowData *WData = new WindowData; if (StartupEditMode == FALSE){ WData->DataType = 1; WData->WindowPointer = this; WData->WindowID = ContactEditorUID; wxCommandEvent editevent(WINDOW_EDIT); editevent.SetClientData(WData); wxPostEvent(GetParent(), editevent); } }