void GlobalReplaceDialog::OnOk ( wxCommandEvent& e )
{
	std::string findUtf8, replaceUtf8;
	find = findCtrl->GetValue();
	replace = replaceCtrl->GetValue();
	findUtf8 = ( const char * ) find.mb_str ( wxConvUTF8 );
	replaceUtf8 = ( const char * ) replace.mb_str ( wxConvUTF8 );
	regex = regexBox->GetValue();
	allDocuments = allDocumentsBox->GetValue();
	matchCase = matchCaseBox->GetValue();

	if ( regex )
	{
		try
		{
			std::auto_ptr<WrapRegex> wr ( new WrapRegex (
			                                  findUtf8,
			                                  matchCase,
			                                  replaceUtf8 ) );
		}
		catch ( std::exception& e )
		{
			std::string pcreError ( e.what() );
			wxString widePcreError =
			    wxString ( pcreError.c_str(), wxConvUTF8, pcreError.size() );
			wxMessageBox (
			    _ ( "Cannot compile regular expression '" ) +
			    findCtrl->GetValue() +
			    _T ( "': " ) +
			    widePcreError,
			    _ ( "Global Find and Replace" ) );
			return;
		}
	}
	e.Skip();
}