/*-----------------------------------------------------------------------------
[名称]	CustomSettingVisualBasic.cpp
[概要]	VisualBasic用設定情報の実装
[備考]	システム標準で用意するVisualBasic用設定情報クラス。
		キーワード定義はサクラエディタのソースからのパクリ。
[履歴]	2003-06-15	NC		新規作成(moralog)
-----------------------------------------------------------------------------*/

//-----------------------------------------------------------------------------
// インクルード
//-----------------------------------------------------------------------------
#include "stdafx.h"
#include "shitarabian.h"
#include "CustomSettingVisualBasic.h"
#include "EmphasisDefine.h"

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

static const char*	f_ppszKeyWords1[] = {
			"And",
			"As",
			"Attribute",
			"Begin",
			"BeginProperty",
			"Boolean",
			"ByVal",
			"Byte",
			"Call",
			"Case",
			"Const",
			"Currency",
			"Date",
			"Declare",
			"Dim",
			"Do",
			"Double",
			"Each",
			"Else",
			"ElseIf",
			"Empty",
			"End",
			"EndProperty",
			"Error",
			"Eqv",
			"Exit",
			"False",
			"For",
			"Friend",
			"Function",
			"Get",
			"GoTo",
			"If",
			"Imp",
			"Integer",
			"Is",
			"Let",
			"Like",
			"Long",
			"Loop",
			"Me",
			"Mod",
			"New",
			"Next",
			"Not",
			"Null",
			"Object",
			"On",
			"Option",
			"Or",
			"Private",
			"Property",
			"Public",
			"RSet",
			"ReDim",
			"Rem",
			"Resume",
			"Select",
			"Set",
			"Single",
			"Static",
			"Step",
			"Stop",
			"String",
			"Sub",
			"Then",
			"To",
			"True",
			"Type",
			"Wend",
			"While",
			"With",
			"Xor",
			"#If",
			"#Else",
			"#End",
			"#Const",
			"AddressOf",
			"Alias",
			"Append",
			"Array",
			"ByRef",
			"Explicit",
			"Global",
			"In",
			"Lib",
			"Nothing",
			"Optional",
			"Output",
			"Terminate",
			"Until",
//=========================================================
// 以下はVB.NET(VB7)での廃止が決定しているキーワードです
//=========================================================
			"DefBool",
			"DefByte",
			"DefCur",
			"DefDate",
			"DefDbl",
			"DefInt",
			"DefLng",
			"DefObj",
			"DefSng",
			"DefStr",
			"DefVar",
			"LSet",
			"GoSub",
			"Return",
			"Variant",
//			"Option Base
//			"As Any
//=========================================================
// 以下はVB.NET用キーワードです
//=========================================================
			"BitAnd",
			"BitOr",
			"BitNot",
			"BitXor",
			"Delegate",
			"Short",
			"Structure"
		};

static const char*	f_ppszKeyWords2[] = {
			"AppActivate",
			"Beep",
			"BeginTrans",
			"ChDir",
			"ChDrive",
			"Close",
			"CommitTrans",
			"CompactDatabase",
			"Date",
			"DeleteSetting",
			"Erase",
			"FileCopy",
			"FreeLocks",
			"Input",
			"Kill",
			"Load",
			"Lock",
			"Mid",
			"MidB",
			"MkDir",
			"Name",
			"Open",
			"Print",
			"Put",
			"Randomize",
			"RegisterDatabase",
			"RepairDatabase",
			"Reset",
			"RmDir",
			"Rollback",
			"SavePicture",
			"SaveSetting",
			"Seek",
			"SendKeys",
			"SetAttr",
			"SetDataAccessOption",
			"SetDefaultWorkspace",
			"Time",
			"Unload",
			"Unlock",
			"Width",
			"Write",
			"Array",
			"Asc",
			"AscB",
			"Atn",
			"CBool",
			"CByte",
			"CCur",
			"CDate",
			"CDbl",
			"CInt",
			"CLng",
			"CSng",
			"CStr",
			"CVErr",
			"CVar",
			"Choose",
			"Chr",
			"ChrB",
			"Command",
			"Cos",
			"CreateDatabase",
			"CreateObject",
			"CurDir",
			"DDB",
			"Date",
			"DateAdd",
			"DateDiff",
			"DatePart",
			"DateSerial",
			"DateValue",
			"Day",
			"Dir",
			"DoEvents",
			"EOF",
			"Environ",
			"Error",
			"Exp",
			"FV",
			"FileAttr",
			"FileDateTime",
			"FileLen",
			"Fix",
			"Format",
			"FreeFile",
			"GetAllSettings",
			"GetAttr",
			"GetObject",
			"GetSetting",
			"Hex",
			"Hour",
			"IIf",
			"IMEStatus",
			"IPmt",
			"IRR",
			"InStr",
			"Input",
			"Int",
			"IsArray",
			"IsDate",
			"IsEmpty",
			"IsError",
			"IsMissing",
			"IsNull",
			"IsNumeric",
			"IsObject",
			"LBound",
			"LCase",
			"LOF",
			"LTrim",
			"Left",
			"LeftB",
			"Len",
			"LoadPicture",
			"Loc",
			"Log",
			"MIRR",
			"Mid",
			"MidB",
			"Minute",
			"Month",
			"MsgBox",
			"NPV",
			"NPer",
			"Now",
			"Oct",
			"OpenDatabase",
			"PPmt",
			"PV",
			"Partition",
			"Pmt",
			"QBColor",
			"RGB",
			"RTrim",
			"Rate",
			"ReadProperty",
			"Right",
			"RightB",
			"Rnd",
			"SLN",
			"SYD",
			"Second",
			"Seek",
			"Sgn",
			"Shell",
			"Sin",
			"Space",
			"Spc",
			"Sqr",
			"Str",
			"StrComp",
			"StrConv",
			"Switch",
			"Tab",
			"Tan",
			"Time",
			"TimeSerial",
			"TimeValue",
			"Timer",
			"Trim",
			"TypeName",
			"UBound",
			"UCase",
			"Val",
			"VarType",
			"Weekday",
			"Year",
			"Hide",
			"Line",
			"Refresh",
			"Show",
//=========================================================
// 以下はVB.NET(VB7)での廃止が決定しているキーワードです
//=========================================================
//$付き関数各種
			"Dir$",
			"LCase$",
			"Left$",
			"LeftB$",
			"Mid$",
			"MidB$",
			"RightB$",
			"Right$",
			"Space$",
			"Str$",
			"String$",
			"Trim$",
			"UCase$",
//VB5,6の隠し関数
			"VarPtr",
			"StrPtr",
			"ObjPtr",
			"VarPrtArray",
			"VarPtrStringArray"
		};

/*-----------------------------------------------------------------------------
[名称]	コンストラクタ
[機能]	インスタンスの生成。
[戻値]	なし
[備考]	なし
-----------------------------------------------------------------------------*/
CCustomSettingVisualBasic::CCustomSettingVisualBasic()
{
	m_strSettingName = "VisualBasicソース";
	m_strExt = "bas,frm,cls,ctl,pag";

	// 色設定
	{
		CEmphasisDefine*	pEmphasis = GetEmphasisDefine();
		CEmphasisItem		Item;

		// キーワード１
		CString	strKeyWordz1;
		StrArrayToKeyWordzString( (char**)f_ppszKeyWords1, sizeof(f_ppszKeyWords1)/sizeof(char*), &strKeyWordz1 );
		Item.SetPattern( strKeyWordz1 );
		Item.SetTerminator((CString)"");
		Item.SetForeColor( RGB(0,0,255) );
		Item.SetBackColor( RGB(255,255,255) );
		Item.SetEnableToggle( TRUE );
		pEmphasis->GetItemz().Add( Item );

		// キーワード２
		CString	strKeyWordz2;
		StrArrayToKeyWordzString( (char**)f_ppszKeyWords2, sizeof(f_ppszKeyWords2)/sizeof(char*), &strKeyWordz2 );
		Item.SetPattern( strKeyWordz2 );
		Item.SetTerminator((CString)"");
		Item.SetForeColor( RGB(128,128,255) );
		Item.SetBackColor( RGB(255,255,255) );
		Item.SetEnableToggle( TRUE );
		pEmphasis->GetItemz().Add( Item );

		// リテラル文字列
		Item.SetPattern((CString)"\\\"");
		Item.SetTerminator((CString)"\\\"");
		Item.SetForeColor( RGB(255,0,0) );
		Item.SetBackColor( RGB(255,255,255) );
		Item.SetEnableToggle( TRUE );
		pEmphasis->GetItemz().Add( Item );

		// 行コメント
		Item.SetPattern((CString)"\\'.*");
		Item.SetTerminator((CString)"");
		Item.SetForeColor( RGB(0,128,0) );
		Item.SetBackColor( RGB(255,255,255) );
		Item.SetEnableToggle( TRUE );
		pEmphasis->GetItemz().Add( Item );

		// リテラル数字
		Item.SetPattern((CString)"\\#.*\?\\s");
		Item.SetTerminator((CString)"");
		Item.SetForeColor( RGB(255,0,0) );
		Item.SetBackColor( RGB(255,255,255) );
		Item.SetEnableToggle( TRUE );
		pEmphasis->GetItemz().Add( Item );
	}

	// フォント
	{
		GetLogFont()->m_iPointSize = 10;
		GetLogFont()->m_strFontName = "ＭＳ ゴシック";
	}

	// 印刷幅指示線
	{
		GetPrintDefine()->m_bPrintWidthLine = TRUE;
		GetPrintDefine()->m_bMarge = TRUE;
		GetPrintDefine()->m_uiMargeCount = 2;
	}

	// BOX表示指定
	{
		m_BoxCharDefine.GetItemz().RemoveAll();
		TBoxChar	Item;
		
		// 全角空白
		Item.strChar = "　";
		Item.bEnable = TRUE;
		m_BoxCharDefine.GetItemz().Add( Item );

		// 半角空白
		Item.strChar = " ";
		Item.bEnable = FALSE;
		m_BoxCharDefine.GetItemz().Add( Item );

		// タブ
		Item.strChar = "\t";
		Item.bEnable = FALSE;
		m_BoxCharDefine.GetItemz().Add( Item );
	}
}


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

}
