X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/05394a18d47c8d6d2e7e91dcfe96b2a83f566c8d..4b123bb9ccbacf21c742173e95f418cca9a5516c:/utils/wxPython/modules/lseditor/finddlg.cpp diff --git a/utils/wxPython/modules/lseditor/finddlg.cpp b/utils/wxPython/modules/lseditor/finddlg.cpp new file mode 100644 index 0000000000..0270cac0ba --- /dev/null +++ b/utils/wxPython/modules/lseditor/finddlg.cpp @@ -0,0 +1,146 @@ +///////////////////////////////////////////////////////////////////////////// +// 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(); +}