1 //////////////////////////////////////////////////////////////////////////////////////// 2 // 3 // Nestopia - NES/Famicom emulator written in C++ 4 // 5 // Copyright (C) 2003-2008 Martin Freij 6 // 7 // This file is part of Nestopia. 8 // 9 // Nestopia is free software; you can redistribute it and/or modify 10 // it under the terms of the GNU General Public License as published by 11 // the Free Software Foundation; either version 2 of the License, or 12 // (at your option) any later version. 13 // 14 // Nestopia is distributed in the hope that it will be useful, 15 // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 // GNU General Public License for more details. 18 // 19 // You should have received a copy of the GNU General Public License 20 // along with Nestopia; if not, write to the Free Software 21 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 // 23 //////////////////////////////////////////////////////////////////////////////////////// 24 25 #ifndef NST_DIALOG_FIND_H 26 #define NST_DIALOG_FIND_H 27 28 #pragma once 29 30 #include "NstObjectPod.hpp" 31 #include "NstObjectDelegate.hpp" 32 #include "NstWindowGeneric.hpp" 33 #include "NstString.hpp" 34 #include <CommDlg.h> 35 36 namespace Nestopia 37 { 38 namespace Window 39 { 40 class Custom; 41 struct Param; 42 43 class Finder 44 { 45 public: 46 47 explicit Finder(Custom&); 48 ~Finder(); 49 50 enum 51 { 52 DOWN = FR_DOWN, 53 WHOLEWORD = FR_WHOLEWORD, 54 MATCHCASE = FR_MATCHCASE 55 }; 56 57 void Close(); 58 59 private: 60 61 typedef Object::Delegate<void,GenericString,uint> Callback; 62 63 void Open(const Callback&,uint); 64 65 ibool OnMsg(Param&); 66 67 enum {BUFFER_SIZE = 512-1}; 68 69 Window::Generic window; 70 const Window::Custom& parent; 71 Object::Pod<FINDREPLACE> findReplace; 72 Callback callback; 73 74 public: 75 76 template<typename Data,typename Code> Open(Data * data,Code code,uint dir=DOWN)77 void Open(Data* data,Code code,uint dir=DOWN) 78 { 79 Open( Callback(data,code), dir ); 80 } 81 }; 82 } 83 } 84 85 #endif 86