wxWidgets/utils/wxPython/modules/lseditor/finddlg.cpp
Harco de Hilster 4b123bb9cc lots'o' wxpython modules files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3345 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1999-08-11 17:14:49 +00:00

147 lines
3.3 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: No names yet.
// Purpose: Contrib. demo
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 08/05/1999
// RCS-ID: $Id$
// Copyright: (c) Aleksandars Gluchovas
// Licence: GNU General Public License
/////////////////////////////////////////////////////////////////////////////
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
#include "finddlg.h"
/***** Implementation for class wxFindTextDialog *****/
//#define wxID_OK 3453453
BEGIN_EVENT_TABLE( wxFindTextDialog, wxDialog )
// FIXME:: why OnOk() is not called??
//EVT_BUTTON( wxID_OK, wxFindTextDialog::OnOK )
EVT_CHAR_HOOK(wxFindTextDialog::OnKeyHook)
END_EVENT_TABLE()
wxString wxFindTextDialog::mLastExpr;
bool wxFindTextDialog::mMatchCase = TRUE;
bool wxFindTextDialog::mMatchWord = FALSE;
StrListT wxFindTextDialog::mExprList;
// FIXME:: workaround for mystic. crashes wiht MSDev4.0
static wxComboBox* __gpCombo = NULL;
wxFindTextDialog::wxFindTextDialog( wxWindow* parent, const string& expr )
: wxDialog( parent, -1, "Find",
wxDefaultPosition, wxSize( 335, 130 ),
wxDIALOG_MODAL | wxCAPTION | wxTAB_TRAVERSAL |
wxDEFAULT_DIALOG_STYLE
)
{
mLastExpr = expr;
int leftMargin = 20;
int inputY = 20;
int inputWidth = 200;
wxStaticText* pStatic =
new wxStaticText( this, -1, "Fi&nd what:",
wxPoint( leftMargin, inputY ) );
int checkY = inputY + 25;
mpWordCheck = new wxCheckBox( this, -1, "Match &whole word only",
wxPoint( leftMargin, checkY ) );
mpCaseCheck = new wxCheckBox( this, -1, "Match &case",
wxPoint( leftMargin, checkY + 20 ) );
mpCaseCheck->SetValue( mMatchCase );
mpWordCheck->SetValue( mMatchWord );
int btnX = inputWidth + leftMargin + 23;
int btnY = inputY - 4;
wxSize btnSize( 70, 25 );
wxButton* pOkBtn = new wxButton( this, wxID_OK, "&Find",
wxPoint( btnX, btnY ), btnSize );
wxButton* pCancelBtn = new wxButton( this, wxID_CANCEL, "&Cancel",
wxPoint( btnX, btnY + 10 + btnSize.y ), btnSize );
__gpCombo = new wxComboBox( this, -1, mLastExpr,
wxPoint( leftMargin + 60, inputY - 2 ),
wxSize( inputWidth - 50, 20 ) );
for( size_t i = 0; i != mExprList.size(); ++i )
__gpCombo->Append( mExprList[i] );
pOkBtn->SetDefault();
__gpCombo->SetFocus();
Center( wxBOTH );
}
void wxFindTextDialog::SetExpr( const wxString& expr )
{
mLastExpr = expr;
__gpCombo->SetValue( mLastExpr );
}
wxComboBox* wxFindTextDialog::GetCombo()
{
return __gpCombo;
}
bool wxFindTextDialog::TransferDataFromWindow()
{
mLastExpr = GetCombo()->GetValue();
mMatchCase = mpCaseCheck->GetValue();
mMatchWord = mpWordCheck->GetValue();
if ( mLastExpr != "" )
{
for( size_t i = 0; i != mExprList.size(); ++i )
if ( mExprList[i] == mLastExpr )
return TRUE;
}
if ( mExprList.size() > 20 )
mExprList.pop_back();
mExprList.push_back( mLastExpr );
return TRUE;
}
void wxFindTextDialog::OnKeyHook( wxKeyEvent& event )
{
if ( event.m_keyCode == WXK_RETURN )
{
TransferDataFromWindow();
EndModal( wxID_OK );
}
else
event.Skip();
}