Initial
This commit is contained in:
191
test/FIND.CPP
Normal file
191
test/FIND.CPP
Normal file
@@ -0,0 +1,191 @@
|
||||
#include <apispy/find.hpp>
|
||||
#include <common/keydata.hpp>
|
||||
|
||||
Find::Find(void)
|
||||
: mLastFindIndex(-1)
|
||||
{
|
||||
mKeyDownHandler.setCallback(this,&Find::keyDownHandler);
|
||||
mDlgCodeHandler.setCallback(this,&Find::dlgCodeHandler);
|
||||
mEditHook.insertHandler(WinHookProc::KeyDownHandler,&mKeyDownHandler);
|
||||
mEditHook.insertHandler(WinHookProc::DialogCodeHandler,&mDlgCodeHandler);
|
||||
}
|
||||
|
||||
Find::Find(const Find &find)
|
||||
{ // private implementation
|
||||
*this=find;
|
||||
}
|
||||
|
||||
Find::~Find()
|
||||
{
|
||||
mEditHook.removeHandler(WinHookProc::KeyDownHandler,&mKeyDownHandler);
|
||||
mEditHook.removeHandler(WinHookProc::DialogCodeHandler,&mDlgCodeHandler);
|
||||
}
|
||||
|
||||
Find &Find::operator=(const Find &find)
|
||||
{ // private implementation
|
||||
return *this;
|
||||
}
|
||||
|
||||
void Find::perform(GUIWindow &parentWindow)
|
||||
{
|
||||
create(parentWindow);
|
||||
}
|
||||
|
||||
void Find::create(GUIWindow &parentWindow)
|
||||
{
|
||||
String staticName("STATIC");
|
||||
String editName("EDIT");
|
||||
String buttonName("BUTTON");
|
||||
|
||||
DialogTemplate dlgTemplate;
|
||||
DialogItemTemplate staticFind;
|
||||
DialogItemTemplate editFind;
|
||||
DialogItemTemplate cancelButton;
|
||||
DialogItemTemplate fnButton;
|
||||
DialogItemTemplate wmButton;
|
||||
|
||||
dlgTemplate.titleText("Find");
|
||||
dlgTemplate.posRect(Rect(10,73,236,62));
|
||||
dlgTemplate.pointSize(8);
|
||||
dlgTemplate.typeFace("Helv");
|
||||
dlgTemplate.style(DS_MODALFRAME|WS_VISIBLE|WS_CAPTION|DS_3DLOOK|WS_SYSMENU|DS_SETFONT|WS_POPUP); // WS_POPUP
|
||||
|
||||
staticFind.className(staticName);
|
||||
staticFind.titleText("Fi&nd what:");
|
||||
staticFind.style(WS_CHILD|WS_VISIBLE);
|
||||
staticFind.posRect(Rect(4,8,42,8));
|
||||
staticFind.itemID(-1);
|
||||
|
||||
editFind.className(editName);
|
||||
editFind.titleText("");
|
||||
editFind.style(WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP|WS_GROUP);
|
||||
editFind.posRect(Rect(47,7,128,12));
|
||||
editFind.itemID(FindText);
|
||||
|
||||
fnButton.className(buttonName);
|
||||
fnButton.titleText("&Find Next");
|
||||
fnButton.style(WS_VISIBLE|WS_CHILD|WS_TABSTOP|WS_GROUP|BS_DEFPUSHBUTTON);
|
||||
fnButton.posRect(Rect(182,5,50,14));
|
||||
fnButton.itemID(FindNext);
|
||||
|
||||
wmButton.className(buttonName);
|
||||
wmButton.titleText("Match &whole word only");
|
||||
wmButton.style(WS_VISIBLE|WS_CHILD|WS_TABSTOP|BS_AUTOCHECKBOX|WS_GROUP);
|
||||
wmButton.posRect(Rect(4,26,100,12));
|
||||
wmButton.itemID(FindWhole);
|
||||
|
||||
cancelButton.className(buttonName);
|
||||
cancelButton.titleText("Cancel");
|
||||
cancelButton.style(WS_VISIBLE|WS_CHILD|WS_TABSTOP|WS_GROUP);
|
||||
cancelButton.posRect(Rect(182,23,50,14));
|
||||
cancelButton.itemID(CancelFind);
|
||||
|
||||
dlgTemplate+=staticFind;
|
||||
dlgTemplate+=editFind;
|
||||
dlgTemplate+=cancelButton;
|
||||
dlgTemplate+=fnButton;
|
||||
dlgTemplate+=wmButton;
|
||||
createDialog(parentWindow,dlgTemplate,DynamicDialog::ModelessDialog);
|
||||
}
|
||||
|
||||
CallbackData::ReturnType Find::keyDownHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
KeyData keyData(someCallbackData);
|
||||
String strEditText;
|
||||
|
||||
if(!keyData.isEnterKey())return (CallbackData::ReturnType)FALSE;
|
||||
getText(strEditText);
|
||||
leaveEdit(strEditText);
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType Find::dlgCodeHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
return (CallbackData::ReturnType)DLGC_WANTALLKEYS;
|
||||
}
|
||||
|
||||
WORD Find::dlgCommand(DWORD commandID,CallbackData &someCallbackData)
|
||||
{
|
||||
switch(commandID)
|
||||
{
|
||||
case FindText :
|
||||
break;
|
||||
case FindNext :
|
||||
handleFindNext();
|
||||
break;
|
||||
case CancelFind :
|
||||
destroy();
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
WORD Find::dlgCode(CallbackData &someCallbackData)
|
||||
{
|
||||
return DLGC_WANTALLKEYS;
|
||||
}
|
||||
|
||||
BOOL Find::dlgInitDialog(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
mEditHook.hookWin(getItem(FindText));
|
||||
init();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void Find::dlgDestroyDialog(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
mEditHook.unhookWin();
|
||||
return;
|
||||
}
|
||||
|
||||
void Find::getText(String &strEditText)
|
||||
{
|
||||
String strText;
|
||||
|
||||
DynamicDialog::getText(FindText,strText);
|
||||
strEditText=strText;
|
||||
}
|
||||
|
||||
BOOL Find::matchWholeWordOnly(void)const
|
||||
{
|
||||
return ::SendMessage(getItem(FindWhole),BM_GETCHECK,0,0L);
|
||||
}
|
||||
|
||||
void Find::handleFind(void)
|
||||
{
|
||||
find();
|
||||
}
|
||||
|
||||
void Find::handleFindNext(void)
|
||||
{
|
||||
findNext();
|
||||
}
|
||||
|
||||
// virtuals
|
||||
|
||||
void Find::init(void)
|
||||
{
|
||||
}
|
||||
|
||||
void Find::find(void)
|
||||
{
|
||||
String currText;
|
||||
|
||||
getText(currText);
|
||||
lastSearchText(currText);
|
||||
}
|
||||
|
||||
void Find::findNext(void)
|
||||
{
|
||||
String currText;
|
||||
|
||||
getText(currText);
|
||||
lastSearchText(currText);
|
||||
}
|
||||
|
||||
void Find::leaveEdit(const String &strEditText)
|
||||
{
|
||||
lastSearchText(strEditText);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user