📄 csharedata_new.cpp
字号:
// $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 + -