/*-----------------------------------------------------------------------------
[名称]	EmphasisItem.cpp
[概要]	強調表示要素定義クラスの実装
[備考]	なし
[履歴]	2003-02-26	NC		コメント付加(moralog)
-----------------------------------------------------------------------------*/


//-----------------------------------------------------------------------------
// インクルード
//-----------------------------------------------------------------------------
#include "stdafx.h"
#include "Shitarabian.h"
#include "EmphasisItem.h"
#include "Common.h"
#include "ExeCommon.h"
#include "GeneralSetting.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif


/*-----------------------------------------------------------------------------
[名称]	コンストラクタ
[機能]	インスタンスの生成。
[戻値]	なし
[備考]	なし
-----------------------------------------------------------------------------*/
CEmphasisItem::CEmphasisItem()
:	m_strPattern()
,	m_colFore( RGB( 0,0,0 ) )
,	m_colBack( RGB( 255,255,255 ) )
,	m_bEnabled( TRUE )
,	m_bEnabledToggle( TRUE )
,	m_bUnderLine( FALSE )
{
	m_tFindCondition.bRegExp	= TRUE;		// 正規表現
	m_tFindCondition.bCaseCare	= TRUE;		// 大文字小文字区別
	m_tFindCondition.bToken		= TRUE;		// 単語単位
}


/*-----------------------------------------------------------------------------
[名称]	デストラクタ
[機能]	インスタンスの破棄。
[戻値]	なし
[備考]	なし
-----------------------------------------------------------------------------*/
CEmphasisItem::~CEmphasisItem()
{

}


/*-----------------------------------------------------------------------------
[名称]	ファイル出力
[機能]	ファイルへの書き出し。
[戻値]	BOOL	処理結果 [-] (TRUE:成功、FALSE:失敗)
[備考]	なし
-----------------------------------------------------------------------------*/
BOOL	CEmphasisItem::Write(
	CStdioFile* pFile		// O  :出力先ファイル [-] (-) :-
)
{
	try
	{
		// 属性の書き出し
		CString	strChar;
		strChar.Format(
			"%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",
			QuoteString( m_strPattern ),
			QuoteString( m_strTerminator ),
			ColorrefToString( m_colFore ),
			ColorrefToString( m_colBack ),
			BoolToString( m_bEnabled ),
			BoolToString( m_bEnabledToggle ),
			BoolToString( m_bUnderLine ),
			BoolToString( m_tFindCondition.bRegExp ),
			BoolToString( m_tFindCondition.bCaseCare ),
			BoolToString( m_tFindCondition.bToken )
		);
		pFile->WriteString( strChar );

		return( TRUE );
	}
	catch( CFileException* e )
	{
		e->Delete();
		ErrorLog( "ファイル出力", "CEmphasisItem::Write()" );
		return( FALSE );
	}
}


/*-----------------------------------------------------------------------------
[名称]	ファイル入力
[機能]	ファイルからの読み込み。
[戻値]	BOOL	処理結果 [-] (TRUE:成功、FALSE:失敗)
[備考]	なし
-----------------------------------------------------------------------------*/
BOOL	CEmphasisItem::Read(
	CStdioFile& File		// I  :入力元ファイル [-] (-)
)
{
	try
	{
		BOOL bSuccess =TRUE;
		CString		strLine;

		bSuccess &= File.ReadString( strLine );
		m_strPattern = DeQuoteString( strLine );

		bSuccess &= File.ReadString( strLine );
		m_strTerminator = DeQuoteString( strLine );

		bSuccess &= File.ReadString( strLine );
		m_colFore = StringToColorref( strLine );

		bSuccess &= File.ReadString( strLine );
		m_colBack = StringToColorref( strLine );

		bSuccess &= File.ReadString( strLine );
		m_bEnabled = StringToBool( strLine );

		bSuccess &= File.ReadString( strLine );
		m_bEnabledToggle = StringToBool( strLine );

		bSuccess &= File.ReadString( strLine );
		m_bUnderLine = StringToBool( strLine );

		bSuccess &= File.ReadString( strLine );
		m_tFindCondition.bRegExp = StringToBool( strLine );

		bSuccess &= File.ReadString( strLine );
		m_tFindCondition.bCaseCare = StringToBool( strLine );

		bSuccess &= File.ReadString( strLine );
		m_tFindCondition.bToken = StringToBool( strLine );

		return( bSuccess );
	}
	catch( CFileException* e )
	{
		e->Delete();
		ErrorLog( "ファイル入力", "CEmphasisItem::Read()" );
		return( FALSE );
	}
}


/*-----------------------------------------------------------------------------
[名称]	有効状態取得
[機能]	全体の設定から強調表示の有効状態を取得。
[戻値]	BOOL	有効状態 [-] (TRUE:有効、FALSE:無効)
[備考]	有効設定が「有効」であっても強調表示全体が無効にされていれば無効を戻す。
-----------------------------------------------------------------------------*/
BOOL CEmphasisItem::GetEnable()
{
	return( m_bEnabled && CGeneralSetting::GetInstance()->GetEmphasisDefine()->GetEnable() );
}


/*-----------------------------------------------------------------------------
[名称]	有効設定取得
[機能]	強調表示の有効設定を取得。
[戻値]	BOOL	有効設定 [-] (TRUE:有効、FALSE:無効)
[備考]	なし
-----------------------------------------------------------------------------*/
BOOL CEmphasisItem::GetCheck()
{
	return( m_bEnabled );
}
