/*-----------------------------------------------------------------------------
[名称]	MainFrm.h
[概要]	メインフレームクラスのヘッダ
[備考]	なし
[履歴]	2003-02-25	NC		コメント付加(moralog)
		2003-12-20	b031228 (3146)検索ツールバー分割(moralog)
		2004-01-30	b031228 (3367)Grep検索(dincom)
		2004-05-10	b031228 (3204)へぼぺとの連携(moralog)
		2004-05-10	b031228 (3751)文書名がショートファイルネームで表示される(moralog)
-----------------------------------------------------------------------------*/
#if !defined(AFX_MAINFRM_H_INCLUDED_)
#define AFX_MAINFRM_H_INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


//-----------------------------------------------------------------------------
// インクルード
//-----------------------------------------------------------------------------
#include "ManagedCombo.h"
#include "FinderDlg.h"
#include "ReplacerDlg.h"
#include "CharPaletteDlg.h"
#include "ProgressDlg.h"
// ▼ (3367) BGN 2004.1.30 (dincom)
#include "GrepDlg.h"
#include "GrepProgressDlg.h"
// ▲ (3367) END

// ▼ (3367) BGN 2004.1.30 (dincom)
/*-----------------------------------------------------------------------------
[名称]	したらびあんコマンド
[用途]	したらびあんコマンドメッセージのWPARAMに使用する。
[備考]	なし
-----------------------------------------------------------------------------*/
// ▼ (3204) BGN 2004.05.10 (moralog) CShitarbianPostCommand.hへ移動
/*
// ▽ original BGN
enum EShitarabianCommandWParam
{
	COMMAND_MESSAGE_INSERT			= 0x01,		// 文字列の挿入
	COMMAND_MESSAGE_CARET_EOF		= 0x02,		// キャレットの文末移動
	COMMAND_MESSAGE_INIT_SELECTION	= 0x03,		// 選択状態の解除
};
// △ original END
*/
// ▲ (3204) END
// ▲ (3367) END

/*-----------------------------------------------------------------------------
[名称]	アライメント列挙
[用途]	センタリング種類の列挙。
[備考]	なし
-----------------------------------------------------------------------------*/
enum EAlign
{
	AlignLeft,		// 左寄せ
	AlignCenter,	// 中央寄せ
	AlignRight,		// 右寄せ
};


/*-----------------------------------------------------------------------------
[名称]	メインフレームクラス
[用途]	メインフレームクラス。
[備考]	長くなったので以下のファイルに分割した。
			アプリ初期化・ハンドラ		MainFrame.cpp
			アクセラレータ系ハンドラ	MainFrameAccel.cpp
			UIのEnable制御ハンドラ		MainFrameUI.cpp
-----------------------------------------------------------------------------*/
class CMainFrame : public CFrameWnd
{
protected: // シリアライズ機能のみから作成します。
	CMainFrame();
	DECLARE_DYNCREATE(CMainFrame)

public:

// オーバーライド
	// ClassWizard は仮想関数のオーバーライドを生成します。
	//{{AFX_VIRTUAL(CMainFrame)
	public:
	virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);
	virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
	virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo);
	virtual BOOL DestroyWindow();
	//}}AFX_VIRTUAL

public:
	// 生成・破棄
	virtual ~CMainFrame();
#ifdef _DEBUG
	virtual void AssertValid() const;
	virtual void Dump(CDumpContext& dc) const;
#endif

	// 初期化済み判定
	BOOL	IsInitialized(){ return( m_bInitialized ); };

// 表示色
	// 表示色再構築
	void RebuildEmphasis();


// 検索・置換
	// 検索文字列登録
	void AddSubString(
		CString&		strSubString,
		CComboBox*		pComboBox
	);
	// 置換文字列登録
	void AddReplaceString(
		CString&		strReplaceString,
		CComboBox*		pComboBox
	);

// インスタンス取得
	// スプリッタ取得
	CSplitterWnd*	GetSplitter(){ return( &m_wndSplitter ); };

	// ﾄﾞｷｭﾒﾝﾄ取得
	CShitarabianDoc*	GetDocument(){ return( (CShitarabianDoc*)GetActiveDocument( ) ); };


	// プログレスダイアログ取得
	// ▼ (3367) BGN 2003.02.05 (dincom)
	// ▽ Original BGN
	CProgressDlg* GetProgressDlg(){ return( &m_dlgProgress ); };
	// △ Original END
	//CProgressDlg* GetProgressDlg();
	//CGrepProgressDlg* GetGrepProgressDlg();
	CGrepProgressDlg*		GetGrepProgressDlg(){ return( &m_dlgGrepProgress ); };
	// ▲ (3367) END

	// 設定コンボボックス取得
	CManagedCombo*		GetSettingCombo(){ return( &m_wndSettingNameCombo ); };


// ハンドラ
	// キー押下模擬
	BOOL AccelKeyDown(
		UCHAR*	punKey,
		BOOL*	pbShift,
		BOOL*	pbCtrl,
		BOOL*	pbAlt
	);

// コールバック
	// コンボボックス変更ハンドラ
	BOOL PreTranslateManagedCombo(
		CManagedCombo*	pSender,
		EComboEvent		eEvent
	);

// その他
	// ツールバーの配置
	void	DockControlBarLeftOf( CToolBar* pBar );

	// 設定コンボボックスの初期化
	void	ResetSettingCombo();

	// クリップボード入力
	CString EditPasteString();

// ▼ (3204) BGN 2004.05.10 (moralog) ランチャツールバー追加
	void RebuildLuncherToolBar();
// ▲ (3204) END

	CFinderDlg		m_dlgFinder;			// 検索ダイアログ [-] (-)
	CReplacerDlg	m_dlgReplacer;			// 置換ダイアログ [-] (-)

	// ▼ (3367) BGN 2004.1.30 (dincom) 
	CGrepDlg		m_dlgGrep;				// Grep検索ダイアログ [-] (-)
// ▼ (3204) BGN 2004.05.10 (moralog) 外部アプリとのＩＦをWM_COPYDATAメッセージとする
// ▽ original BGN
//	int				m_UM_CommandMessageID;		// したらびあん制御メッセージID [-] (-)
// △ original END
// ▲ (3204) END
	// ▲ (3367) END

protected:
	// スクロールバー再計算
	BOOL	RecalcScrollBar();

	// 選択文字列のアライメント変更
	void	Alignment(
		long	idxRow,
		EAlign	eAlign
	);
	void Alignment(
		EAlign	eAlign
	);
	void BlockAlignment(
		long	idxRow,
		EAlign	eAlign,
		long	lSrcBlockLeft,
		long	lSrcBlockRight
	);
	void BlockAlignment(
		EAlign	eAlign
	);

	// ドット調整
	void EditShift(
		BOOL	bRight
	);

protected:
	BOOL			m_bInitialized;			// 初期化フラグ [-] (TRUE:初期化済み、FALSE:未初期化)

// コントロール バー用メンバ
	CSplitterWnd		m_wndSplitter;			// スプリッタ [-] (-)
	CStatusBar			m_wndStatusBar;			// ステータスバー [-] (-)
	CToolBar			m_wndToolBar;			// 標準ツールバー [-] (-)
	CToolBar			m_wndFindBar;			// 検索ツールバー [-] (-)
// ▼ (3204) BGN 2004.05.10 (moralog) ランチャツールバー追加
	CToolBar			m_wndLauncherBar;		// ランチャツールバー [-] (-)
// ▲ (3204) END
	CToolBar			m_wndEditBar;			// 編集ツールバー [-] (-)
	CToolBar			m_wndSettingBar;		// 設定ツールバー [-] (-)
// ▼ (3146) BGN 2003.12.20 (moralog) 検索ツールバー分割
	CToolBar			m_wndExtFindBar;		// 拡張検索ツールバー [-] (-)
// ▲ (3146) END
	CManagedCombo		m_wndSubStringCombo;	// 検索コンボボックス [-] (-)
	CManagedCombo		m_wndSettingNameCombo;	// 設定コンボボックス [-] (-)
	CProgressDlg		m_dlgProgress;			// 進捗ダイアログ [-] (-)

	// ▼ (3367) BGN 2004.2.05 (dincom) 
	CGrepProgressDlg	m_dlgGrepProgress;		// Grep進捗ダイアログ [-] (-)
	// ▲ (3367) END

// 生成されたメッセージ マップ関数
protected:
	//{{AFX_MSG(CMainFrame)
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnUpdateViewZoomin(CCmdUI* pCmdUI);
	afx_msg void OnUpdateViewZoomout(CCmdUI* pCmdUI);
	afx_msg void OnUpdateEditCopy(CCmdUI* pCmdUI);
	afx_msg void OnUpdateEditCut(CCmdUI* pCmdUI);
	afx_msg void OnUpdateEditPaste(CCmdUI* pCmdUI);
	afx_msg void OnUpdateEditUndo(CCmdUI* pCmdUI);
	afx_msg void OnUpdateEditRedo(CCmdUI* pCmdUI);
	afx_msg void OnSettingSetting();
	afx_msg void OnUpdateFilePrint(CCmdUI* pCmdUI);
	afx_msg void OnUpdateFilePrintPreview(CCmdUI* pCmdUI);
	afx_msg void OnUpdateFilePrintSetup(CCmdUI* pCmdUI);
	afx_msg void OnHelpUrl();
	afx_msg void OnEditDemark();
	afx_msg void OnClose();
	afx_msg void OnUpdateEditModeselect(CCmdUI* pCmdUI);
	afx_msg void OnUpdateEditNextmark(CCmdUI* pCmdUI);
	afx_msg void OnUpdateEditFindnext(CCmdUI* pCmdUI);
	afx_msg void OnUpdateEditFindprev(CCmdUI* pCmdUI);
	afx_msg void OnUpdateViewFindtoolbar(CCmdUI* pCmdUI);
	afx_msg void OnViewFindtoolbar();
	afx_msg void OnUpdateComboSubstring(CCmdUI* pCmdUI);
	afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
	afx_msg void OnEditMirror();
	afx_msg void OnUpdateEditClipHistory(CCmdUI* pCmdUI);
	afx_msg void OnUpdateEditMirror(CCmdUI* pCmdUI);
	afx_msg void OnViewEdittoolbar();
	afx_msg void OnUpdateViewEdittoolbar(CCmdUI* pCmdUI);
	afx_msg void OnEditFlip();
	afx_msg void OnUpdateEditFlip(CCmdUI* pCmdUI);
	afx_msg void OnUpdateEditRemovelastblank(CCmdUI* pCmdUI);
	afx_msg void OnEditRemovelastblank();
	afx_msg void OnSettingPlugin();
	afx_msg void OnUpdateEditAllselect(CCmdUI* pCmdUI);
	afx_msg void OnEditQuickfind();
	afx_msg void OnUpdateEditQuickfind(CCmdUI* pCmdUI);
	afx_msg void OnUpdateEditReplace(CCmdUI* pCmdUI);
	afx_msg void OnUpdateEditFind(CCmdUI* pCmdUI);
	afx_msg void OnUpdateEditMark(CCmdUI* pCmdUI);
	afx_msg void OnEditMark();
	afx_msg void OnEditNextmark();
	afx_msg void OnEditPrevmark();
	afx_msg void OnEditCharpalette();
	afx_msg void OnEditClipHistory();
	afx_msg void OnEditAllselect();
	afx_msg void OnViewZoomin();
	afx_msg void OnViewZoomout();
	afx_msg void OnEditFind();
	afx_msg void OnEditFindnext();
	afx_msg void OnEditFindprev();
	afx_msg void OnEditReplace();
	afx_msg void OnEditCopy();
	afx_msg void OnEditCut();
	afx_msg void OnEditPaste();
	afx_msg void OnEditUndo();
	afx_msg void OnEditRedo();
	afx_msg void OnUpdateEditShiftleft(CCmdUI* pCmdUI);
	afx_msg void OnUpdateEditShiftright(CCmdUI* pCmdUI);
	afx_msg void OnEditShiftleft();
	afx_msg void OnEditShiftright();
	afx_msg void OnViewSettingtoolbar();
	afx_msg void OnUpdateViewSettingtoolbar(CCmdUI* pCmdUI);
	afx_msg void OnFindNextmodify();
	afx_msg void OnFindPrevmodify();
	afx_msg void OnUpdateFindNextmodify(CCmdUI* pCmdUI);
	afx_msg void OnUpdateFindPrevmodify(CCmdUI* pCmdUI);
	afx_msg void OnEditLeft();
	afx_msg void OnEditMid();
	afx_msg void OnEditRight();
	afx_msg void OnUpdateEditLeft(CCmdUI* pCmdUI);
	afx_msg void OnUpdateEditMid(CCmdUI* pCmdUI);
	afx_msg void OnUpdateEditRight(CCmdUI* pCmdUI);
	afx_msg void OnHelpAaheadline();
	afx_msg void OnFileOpen();
	afx_msg void OnFileSaveAs();
	afx_msg void OnLink();
	afx_msg void OnUpdateLink(CCmdUI* pCmdUI);
	afx_msg void OnMagicCopy();
	afx_msg void OnUpdateMagicCopy(CCmdUI* pCmdUI);
	afx_msg void OnMagicSelect();
	afx_msg void OnUpdateMagicSelect(CCmdUI* pCmdUI);
	afx_msg void OnEditQuotepaste();
	afx_msg void OnUpdateEditQuotepaste(CCmdUI* pCmdUI);
	afx_msg void OnSettingCommon();
	afx_msg void OnTimer(UINT nIDEvent);
	afx_msg void OnEditCharpaletteSetting();
	afx_msg void OnEditFindmagicrod();
	afx_msg void OnUpdateEditFindmagicrod(CCmdUI* pCmdUI);
	afx_msg void OnEditFreecursol();
	afx_msg void OnUpdateEditFreecursol(CCmdUI* pCmdUI);
	afx_msg void OnEditFlipchar();
	afx_msg void OnUpdateEditFlipchar(CCmdUI* pCmdUI);
	afx_msg void OnEditMirrorchar();
	afx_msg void OnUpdateEditMirrorchar(CCmdUI* pCmdUI);
	afx_msg void OnEditBoxchar();
	afx_msg void OnUpdateEditBoxchar(CCmdUI* pCmdUI);
	afx_msg void OnEditUnicode();
	afx_msg void OnUpdateEditUnicode(CCmdUI* pCmdUI);
	afx_msg void OnEditTagjump();
	afx_msg void OnUpdateEditTagjump(CCmdUI* pCmdUI);
	afx_msg void OnViewExtfindtoolbar();
	afx_msg void OnUpdateViewExtfindtoolbar(CCmdUI* pCmdUI);
	afx_msg void OnGrep();
	afx_msg void OnViewLauncher();
	afx_msg void OnUpdateViewLauncher(CCmdUI* pCmdUI);
	afx_msg BOOL OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct);
	afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
	afx_msg void OnNextPane();
	afx_msg void OnPrevPane();
	afx_msg void OnHelpManual();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ は前行の直前に追加の宣言を挿入します。

#endif // !defined(AFX_MAINFRM_H_INCLUDED_)
