File Annotation

Not logged in
dcdd144598 2011-02-23        kinaba: #ifndef AFX_SEARCH_H__201E0D70_9C20_420A_8600_966D2BA23010__INCLUDED_
dcdd144598 2011-02-23        kinaba: #define AFX_SEARCH_H__201E0D70_9C20_420A_8600_966D2BA23010__INCLUDED_
dcdd144598 2011-02-23        kinaba: #include "editwing/editwing.h"
dcdd144598 2011-02-23        kinaba: #include "kilib/window.h"
dcdd144598 2011-02-23        kinaba: #include "kilib/memory.h"
dcdd144598 2011-02-23        kinaba: #include "kilib/ktlaptr.h"
dcdd144598 2011-02-23        kinaba: #include "kilib/string.h"
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: //@{ @pkg Gp.Search //@}
dcdd144598 2011-02-23        kinaba: //@{
dcdd144598 2011-02-23        kinaba: //	検索オブジェクト
dcdd144598 2011-02-23        kinaba: //@}
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: class Searchable : public ki::Object
dcdd144598 2011-02-23        kinaba: {
dcdd144598 2011-02-23        kinaba: public:
dcdd144598 2011-02-23        kinaba: 	//@{
dcdd144598 2011-02-23        kinaba: 	//	検索を行う
dcdd144598 2011-02-23        kinaba: 	//	@param str 対象文字列
dcdd144598 2011-02-23        kinaba: 	//	@param len 対象文字列の長さ
dcdd144598 2011-02-23        kinaba: 	//	@param stt 検索開始index。0なら先頭から
dcdd144598 2011-02-23        kinaba: 	//	@param mbg マッチ結果の先頭index
dcdd144598 2011-02-23        kinaba: 	//	@param med マッチ結果の終端indexの1個後ろ
dcdd144598 2011-02-23        kinaba: 	//	@return マッチしたかどうか
dcdd144598 2011-02-23        kinaba: 	//
dcdd144598 2011-02-23        kinaba: 	//	下方向サーチオブジェクトの場合、stt <= *beg の範囲
dcdd144598 2011-02-23        kinaba: 	//	上方向サーチオブジェクトの場合、*beg <= stt の範囲を検索
dcdd144598 2011-02-23        kinaba: 	//@}
dcdd144598 2011-02-23        kinaba: 	virtual bool Search( const unicode* str, ulong len, ulong stt,
dcdd144598 2011-02-23        kinaba: 		ulong* mbg, ulong* med ) = 0;
dcdd144598 2011-02-23        kinaba: };
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: //@{
dcdd144598 2011-02-23        kinaba: //	検索管理人
dcdd144598 2011-02-23        kinaba: //
dcdd144598 2011-02-23        kinaba: //	前回検索したときのオプションや検索文字列を覚えておくのが
dcdd144598 2011-02-23        kinaba: //	このクラスの担当。検索・置換ダイアログの表示等もここで
dcdd144598 2011-02-23        kinaba: //	やるかもしれない。
dcdd144598 2011-02-23        kinaba: //@}
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: class SearchManager : ki::DlgImpl
dcdd144598 2011-02-23        kinaba: {
dcdd144598 2011-02-23        kinaba: 	typedef editwing::DPos DPos;
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: public:
dcdd144598 2011-02-23        kinaba: 	//@{ コンストラクタ。特記事項無し //@}
dcdd144598 2011-02-23        kinaba: 	SearchManager( ki::Window& w, editwing::EwEdit& e );
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ デストラクタ。特記事項無し //@}
dcdd144598 2011-02-23        kinaba: 	~SearchManager();
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ 検索ダイアログ表示 //@}
dcdd144598 2011-02-23        kinaba: 	void ShowDlg();
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ [次を検索]コマンド //@}
dcdd144598 2011-02-23        kinaba: 	void FindNext();
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ [前を検索]コマンド //@}
dcdd144598 2011-02-23        kinaba: 	void FindPrev();
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ 今すぐ検索可能か? //@}
dcdd144598 2011-02-23        kinaba: 	bool isReady() const
dcdd144598 2011-02-23        kinaba: 		{ return searcher_.isValid(); }
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ 設定Save //@}
dcdd144598 2011-02-23        kinaba: 	void SaveToINI( ki::IniFile& ini );
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ 設定Load //@}
dcdd144598 2011-02-23        kinaba: 	void LoadFromINI( ki::IniFile& ini );
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ 苦肉の策^^; //@}
dcdd144598 2011-02-23        kinaba: 	bool TrapMsg(MSG* msg);
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ 見つかりませんでしたダイアログ //@}
dcdd144598 2011-02-23        kinaba: 	void NotFound();
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: private:
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ [置換]コマンド //@}
dcdd144598 2011-02-23        kinaba: 	void ReplaceImpl();
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ [全置換]コマンド //@}
dcdd144598 2011-02-23        kinaba: 	void ReplaceAllImpl();
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: private:
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	virtual void on_init();
dcdd144598 2011-02-23        kinaba: 	virtual void on_destroy();
dcdd144598 2011-02-23        kinaba: 	virtual bool on_command( UINT cmd, UINT id, HWND ctrl );
dcdd144598 2011-02-23        kinaba: 	void on_findnext();
dcdd144598 2011-02-23        kinaba: 	void on_findprev();
dcdd144598 2011-02-23        kinaba: 	void on_replacenext();
dcdd144598 2011-02-23        kinaba: 	void on_replaceall();
dcdd144598 2011-02-23        kinaba: 	void UpdateData();
dcdd144598 2011-02-23        kinaba: 	void ConstructSearcher( bool down=true );
dcdd144598 2011-02-23        kinaba: 	void FindNextImpl();
dcdd144598 2011-02-23        kinaba: 	void FindPrevImpl();
dcdd144598 2011-02-23        kinaba: 	bool FindNextFromImpl( DPos s, DPos* beg, DPos* end );
dcdd144598 2011-02-23        kinaba: 	bool FindPrevFromImpl( DPos s, DPos* beg, DPos* end );
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: private:
dcdd144598 2011-02-23        kinaba: 	editwing::EwEdit& edit_;
dcdd144598 2011-02-23        kinaba: 	ki::dptr<Searchable> searcher_;
dcdd144598 2011-02-23        kinaba: 	ki::Window& mainWnd_;
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	bool bIgnoreCase_; // 大文字小文字を同一視?
dcdd144598 2011-02-23        kinaba: 	bool bRegExp_;     // 正規表現?
dcdd144598 2011-02-23        kinaba: 	bool bDownSearch_; // 検索方向
dcdd144598 2011-02-23        kinaba: 	bool bChanged_;    // 前回のsearcher構築時から変更があったらtrue
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	ki::String findStr_;
dcdd144598 2011-02-23        kinaba: 	ki::String replStr_;
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: private:
dcdd144598 2011-02-23        kinaba: 	NOCOPY(SearchManager);
dcdd144598 2011-02-23        kinaba: };
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: #endif // AFX_SEARCH_H__201E0D70_9C20_420A_8600_966D2BA23010__INCLUDED_