⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csharedata_new.cpp

📁 日本的开源编辑器源码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
//	$Id: CShareData_new.cpp,v 1.60 2005/04/22 22:45:47 genta Exp $
/*!	@file
	@brief プロセス間共有データのファイルへ/からの入出力

	@author Norio Nakatani
	$Revision: 1.60 $

	@date 2005.04.07 D.S.Koba 各セクションの入出力を関数として分離
*/
/*
	Copyright (C) 1998-2001, Norio Nakatani
	Copyright (C) 2000-2001, genta
	Copyright (C) 2001, Stonee, jepro, mik, asa-o, YAZAKI
	Copyright (C) 2002, YAZAKI, hor, aroka, MIK
	Copyright (C) 2003, MIK
	Copyright (C) 2004, MIK

	This source code is designed for sakura editor.
	Please contact the copyright holder to use this code for other purpose.
*/

#include <stdio.h>
#include <io.h>
#include "CShareData.h"
#include "mymessage.h"
#include "debug.h"
#include "global.h"
#include "CRunningTimer.h"
#include "CProfile.h"
#include "etc_uty.h"

#define STR_COLORDATA_HEAD3		" テキストエディタ色設定 Ver3"	//Jan. 15, 2001 Stonee  色設定Ver3ドラフト(設定ファイルのキーを連番→文字列に)	//Feb. 11, 2001 JEPRO 有効にした



//	CShareData_new2.cppと統合
CShareData::CShareData()
{
//	m_pszAppName = GSTR_CSHAREDATA;
	m_hFileMap   = NULL;
	m_pShareData = NULL;
//@@@ 2002.01.03 YAZAKI m_tbMyButtonなどをCShareDataからCMenuDrawerへ移動
	m_nTransformFileNameCount = -1;
	return;
}

// レジストリは使わない。
// 未使用の2関数を削除 2002/2/3 aroka

/*!
	共有データの読み込み/保存 2

	@param[in] bRead true: 読み込み / false: 書き込み

	@date 2004-01-11 D.S.Koba CProfile変更によるコード簡略化
	@date 2005-04-05 D.S.Koba 各セクションの入出力を関数として分離
*/
BOOL CShareData::ShareData_IO_2( bool bRead )
{
	MY_RUNNINGTIMER( cRunningTimer, "CShareData::ShareData_IO_2" );

	char		szIniFileName[_MAX_PATH + 1];
	CProfile	cProfile;
	char		szPath[_MAX_PATH + 1];
	char		szDrive[_MAX_DRIVE];
	char		szDir[_MAX_DIR];
	char		szFname[_MAX_FNAME];
	char		szExt[_MAX_EXT];

	/* exeのあるフォルダ */
	::GetModuleFileName(
		::GetModuleHandle( NULL ),
		szPath, sizeof(szPath)
	);
	_splitpath( szPath, szDrive, szDir, szFname, szExt );
	_makepath( szIniFileName, szDrive, szDir, szFname, "ini" );


//	MYTRACE( "Iniファイル処理-1 所要時間(ミリ秒) = %d\n", cRunningTimer.Read() );


	if( bRead ){
		if( false == cProfile.ReadProfile( szIniFileName ) ){
			/* 設定ファイルが存在しない */
			return FALSE;
		}
#ifdef _DEBUG
//@@@ 2001.12.26 YAZAKI デバッグ版が正常に起動しないため。
//		cProfile.DUMP();
#endif

	}
//	MYTRACE( "Iniファイル処理 0 所要時間(ミリ秒) = %d\n", cRunningTimer.Read() );
	
	ShareData_IO_Mru( bRead, cProfile );
	ShareData_IO_Keys( bRead, cProfile );
	ShareData_IO_Grep( bRead, cProfile );
	ShareData_IO_Folders( bRead, cProfile );
	ShareData_IO_Cmd( bRead, cProfile );
	ShareData_IO_Nickname( bRead, cProfile );
	ShareData_IO_Common( bRead, cProfile );
	ShareData_IO_Toolbar( bRead, cProfile );
	ShareData_IO_CustMenu( bRead, cProfile );
	ShareData_IO_Font( bRead, cProfile );
	ShareData_IO_KeyBind( bRead, cProfile );
	ShareData_IO_Print( bRead, cProfile );
	ShareData_IO_Types( bRead, cProfile );
	ShareData_IO_KeyWords( bRead, cProfile );
	ShareData_IO_Macro( bRead, cProfile );
	ShareData_IO_Other( bRead, cProfile );
	
	if( !bRead ){
		cProfile.WriteProfile( szIniFileName, " sakura.ini テキストエディタ設定ファイル" );
	}

//	MYTRACE( "Iniファイル処理 8 所要時間(ミリ秒) = %d\n", cRunningTimer.Read() );
//	MYTRACE( "Iniファイル処理 所要時間(ミリ秒) = %d\n", cRunningTimerStart.Read() );

	return TRUE;
}

/*!
	@brief 共有データのMruセクションの入出力
	@param[in]		bRead		true: 読み込み / false: 書き込み
	@param[in,out]	cProfile	INIファイル入出力クラス

	@date 2005-04-07 D.S.Koba ShareData_IO_2から分離。読み込み時の初期化を修正
*/
void CShareData::ShareData_IO_Mru( const bool bRead, CProfile& cProfile )
{
	const char* pszSecName = "MRU";
	int			i;
	int			nSize;
	FileInfo*	pfiWork;
	char		szKeyName[64];

	cProfile.IOProfileData( bRead, pszSecName, "_MRU_Counts", m_pShareData->m_nMRUArrNum );
	nSize = m_pShareData->m_nMRUArrNum;
	for( i = 0; i < nSize; ++i ){
		pfiWork = &m_pShareData->m_fiMRUArr[i];
		wsprintf( szKeyName, "MRU[%02d].nViewTopLine", i );
		cProfile.IOProfileData( bRead, pszSecName, szKeyName, pfiWork->m_nViewTopLine );
		wsprintf( szKeyName, "MRU[%02d].nViewLeftCol", i );
		cProfile.IOProfileData( bRead, pszSecName, szKeyName, pfiWork->m_nViewLeftCol );
		wsprintf( szKeyName, "MRU[%02d].nX", i );
		cProfile.IOProfileData( bRead, pszSecName, szKeyName, pfiWork->m_nX );
		wsprintf( szKeyName, "MRU[%02d].nY", i );
		cProfile.IOProfileData( bRead, pszSecName, szKeyName, pfiWork->m_nY );
		wsprintf( szKeyName, "MRU[%02d].nCharCode", i );
		cProfile.IOProfileData( bRead, pszSecName, szKeyName, pfiWork->m_nCharCode );
		wsprintf( szKeyName, "MRU[%02d].szPath", i );
		cProfile.IOProfileData( bRead, pszSecName, szKeyName, pfiWork->m_szPath, sizeof( pfiWork->m_szPath ));
		wsprintf( szKeyName, "MRU[%02d].szMark", i );
		cProfile.IOProfileData( bRead, pszSecName, szKeyName, pfiWork->m_szMarkLines, sizeof( pfiWork->m_szMarkLines ));
		//お気に入り	//@@@ 2003.04.08 MIK
		wsprintf( szKeyName, "MRU[%02d].bFavorite", i );
		cProfile.IOProfileData( bRead, pszSecName, szKeyName, m_pShareData->m_bMRUArrFavorite[i] );
	}
	//@@@ 2001.12.26 YAZAKI 残りのm_fiMRUArrを初期化。
	if ( bRead ){
		FileInfo	fiInit;
		//	残りをfiInitで初期化しておく。
		fiInit.m_nCharCode = 0;
		fiInit.m_nViewLeftCol = 0;
		fiInit.m_nViewTopLine = 0;
		fiInit.m_nX = 0;
		fiInit.m_nY = 0;
		strcpy( fiInit.m_szPath, "" );
		strcpy( fiInit.m_szMarkLines, "" );	// 2002.01.16 hor
		for( ; i < MAX_MRU; ++i){
			m_pShareData->m_fiMRUArr[i] = fiInit;
			m_pShareData->m_bMRUArrFavorite[i] = false;	//お気に入り	//@@@ 2003.04.08 MIK
		}
	}

	cProfile.IOProfileData( bRead, pszSecName, "_MRUFOLDER_Counts", m_pShareData->m_nOPENFOLDERArrNum );
	nSize = m_pShareData->m_nOPENFOLDERArrNum;
	for( i = 0; i < nSize; ++i ){
		wsprintf( szKeyName, "MRUFOLDER[%02d]", i );
		cProfile.IOProfileData( bRead, pszSecName, szKeyName, m_pShareData->m_szOPENFOLDERArr[i],
			sizeof( m_pShareData->m_szOPENFOLDERArr[0] ));
		//お気に入り	//@@@ 2003.04.08 MIK
		strcat( szKeyName, ".bFavorite" );
		cProfile.IOProfileData( bRead, pszSecName, szKeyName, m_pShareData->m_bOPENFOLDERArrFavorite[i] );
	}
	//読み込み時は残りを初期化
	if ( bRead ){
		for (; i< MAX_OPENFOLDER; ++i){
			// 2005.04.05 D.S.Koba
			m_pShareData->m_szOPENFOLDERArr[i][0] = '\0';
			m_pShareData->m_bOPENFOLDERArrFavorite[i] = false;	//お気に入り	//@@@ 2003.04.08 MIK
		}
	}
}

/*!
	@brief 共有データのKeysセクションの入出力
	@param[in]		bRead		true: 読み込み / false: 書き込み
	@param[in,out]	cProfile	INIファイル入出力クラス

	@date 2005-04-07 D.S.Koba ShareData_IO_2から分離。読み込み時の初期化を修正
*/
void CShareData::ShareData_IO_Keys( const bool bRead, CProfile& cProfile )
{
	const char* pszSecName = "Keys";
	int		i;
	int		nSize;
	char	szKeyName[64];

	cProfile.IOProfileData( bRead, pszSecName, "_SEARCHKEY_Counts", m_pShareData->m_nSEARCHKEYArrNum );
	nSize = m_pShareData->m_nSEARCHKEYArrNum;
	for( i = 0; i < nSize; ++i ){
		wsprintf( szKeyName, "SEARCHKEY[%02d]", i );
		cProfile.IOProfileData( bRead, pszSecName, szKeyName,
			m_pShareData->m_szSEARCHKEYArr[i], sizeof( m_pShareData->m_szSEARCHKEYArr[0] ));
	}
	//読み込み時は残りを初期化
	if( bRead ){
		for(; i < MAX_SEARCHKEY; ++i){
			m_pShareData->m_szSEARCHKEYArr[i][0] = '\0';
		}
	}

	cProfile.IOProfileData( bRead, pszSecName, "_REPLACEKEY_Counts", m_pShareData->m_nREPLACEKEYArrNum );
	nSize = m_pShareData->m_nREPLACEKEYArrNum;
	for( i = 0; i < nSize; ++i ){
		wsprintf( szKeyName, "REPLACEKEY[%02d]", i );
		cProfile.IOProfileData( bRead, pszSecName, szKeyName,
			m_pShareData->m_szREPLACEKEYArr[i], sizeof( m_pShareData->m_szREPLACEKEYArr[0] ) );
	}
	//読み込み時は残りを初期化
	if( bRead ){
		for(; i < MAX_REPLACEKEY; ++i){
			m_pShareData->m_szREPLACEKEYArr[i][0] = '\0';
		}
	}
}

/*!
	@brief 共有データのGrepセクションの入出力
	@param[in]		bRead		true: 読み込み / false: 書き込み
	@param[in,out]	cProfile	INIファイル入出力クラス

	@date 2005-04-07 D.S.Koba ShareData_IO_2から分離。読み込み時の初期化を修正
*/
void CShareData::ShareData_IO_Grep( const bool bRead, CProfile& cProfile )
{
	const char* pszSecName = "Grep";
	int		i;
	int		nSize;
	char	szKeyName[64];

	cProfile.IOProfileData( bRead, pszSecName, "_GREPFILE_Counts", m_pShareData->m_nGREPFILEArrNum );
	nSize = m_pShareData->m_nGREPFILEArrNum;
	for( i = 0; i < nSize; ++i ){
		wsprintf( szKeyName, "GREPFILE[%02d]", i );
		cProfile.IOProfileData( bRead, pszSecName, szKeyName,
			m_pShareData->m_szGREPFILEArr[i], sizeof( m_pShareData->m_szGREPFILEArr[0] ));
	}
	//読み込み時は残りを初期化
	if( bRead ){
		for(; i < MAX_GREPFILE; ++i){
			m_pShareData->m_szGREPFILEArr[i][0] = '\0';
		}
	}

	cProfile.IOProfileData( bRead, pszSecName, "_GREPFOLDER_Counts", m_pShareData->m_nGREPFOLDERArrNum );
	nSize = m_pShareData->m_nGREPFOLDERArrNum;
	for( i = 0; i < nSize; ++i ){
		wsprintf( szKeyName, "GREPFOLDER[%02d]", i );
		cProfile.IOProfileData( bRead, pszSecName, szKeyName,
			m_pShareData->m_szGREPFOLDERArr[i], sizeof( m_pShareData->m_szGREPFOLDERArr[0] ));
	}
	//読み込み時は残りを初期化
	if( bRead ){
		for(; i < MAX_GREPFOLDER; ++i){
			m_pShareData->m_szGREPFOLDERArr[i][0] = '\0';
		}
	}
}

/*!
	@brief 共有データのFoldersセクションの入出力
	@param[in]		bRead		true: 読み込み / false: 書き込み
	@param[in,out]	cProfile	INIファイル入出力クラス

	@date 2005-04-07 D.S.Koba ShareData_IO_2から分離。
*/
void CShareData::ShareData_IO_Folders( const bool bRead, CProfile& cProfile )
{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -