📄 cproptypes.cpp
字号:
// $Id: CPropTypes.cpp,v 1.47 2005/01/23 12:43:48 Administrator Exp $
/*! @file
@brief タイプ別設定ダイアログボックス
@author Norio Nakatani
@date 1998/12/24 新規作成
$Revision: 1.47 $
*/
/*
Copyright (C) 1998-2002, Norio Nakatani
Copyright (C) 2000-2001, jepro
Copyright (C) 2001, genta, MIK, hor, Stonee, asa-o
Copyright (C) 2002, YAZAKI, aroka, MIK
Copyright (C) 2003, MIK
Copyright (C) 2005, MIK, genta
This source code is designed for sakura editor.
Please contact the copyright holder to use this code for other purpose.
*/
#include "sakura_rc.h"
#include "CPropTypes.h"
#include "debug.h"
#include <windows.h>
#include <commctrl.h>
#include "CDlgOpenFile.h"
#include "CDlgKeywordSelect.h"
#include "etc_uty.h"
#include "global.h"
#include "CProfile.h"
#include "CShareData.h"
#include "funccode.h" //Stonee, 2001/05/18
struct TYPE_NAME {
int nMethod;
char* pszName;
};
TYPE_NAME OlmArr[] = {
// { OUTLINE_C, "C" },
{ OUTLINE_CPP, "C/C++" },
{ OUTLINE_PLSQL, "PL/SQL" },
{ OUTLINE_JAVA, "Java" },
{ OUTLINE_COBOL, "COBOL" },
{ OUTLINE_PERL, "Perl" }, //Sep. 8, 2000 genta
{ OUTLINE_ASM, "アセンブラ" },
{ OUTLINE_VB, "Visual Basic" }, // 2001/06/23 N.Nakatani
{ OUTLINE_WZTXT, "WZ階層付テキスト" }, // 2003.05.20 zenryaku, 2003.06.23 Moca 名称変更
{ OUTLINE_HTML, "HTML" }, // 2003.05.20 zenryaku
{ OUTLINE_TEX, "TeX" }, // 2003.07.20 naoh
{ OUTLINE_TEXT, "テキスト" } //Jul. 08, 2001 JEPRO 常に最後尾におく
};
const int nOlmArrNum = sizeof( OlmArr ) / sizeof( OlmArr[0] );
TYPE_NAME SmartIndentArr[] = {
{ SMARTINDENT_NONE, "なし" },
{ SMARTINDENT_CPP, "C/C++" }
};
const int nSmartIndentArrNum = sizeof( SmartIndentArr ) / sizeof( SmartIndentArr[0] );
// Nov. 20, 2000 genta
TYPE_NAME ImeStateArr[] = {
{ 0, "標準設定" },
{ 1, "全角" },
{ 2, "全角ひらがな" },
{ 3, "全角カタカナ" },
{ 4, "無変換" }
};
const int nImeStateArrNum = sizeof( ImeStateArr ) / sizeof( ImeStateArr[0] );
TYPE_NAME ImeSwitchArr[] = {
{ 0, "そのまま" },
{ 1, "常にON" },
{ 2, "常にOFF" },
};
const int nImeSwitchArrNum = sizeof( ImeSwitchArr ) / sizeof( ImeSwitchArr[0] );
/*! 2行目以降のインデント方法
@sa CLayoutMgr::SetLayoutInfo()
@date Oct. 1, 2002 genta
*/
TYPE_NAME IndentTypeArr[] = {
{ 0, "なし" },
{ 1, "tx2x" },
{ 2, "論理行先頭" },
};
const int nIndentTypeArrNum = sizeof( IndentTypeArr ) / sizeof( IndentTypeArr[0] );
// 行コメントに関する情報
struct {
int nEditID;
int nCheckBoxID;
int nTextID;
} const cLineComment[COMMENT_DELIMITER_NUM] = {
{ IDC_EDIT_LINECOMMENT , IDC_CHECK_LCPOS , IDC_EDIT_LINECOMMENTPOS },
{ IDC_EDIT_LINECOMMENT2 , IDC_CHECK_LCPOS2, IDC_EDIT_LINECOMMENTPOS2},
{ IDC_EDIT_LINECOMMENT3 , IDC_CHECK_LCPOS3, IDC_EDIT_LINECOMMENTPOS3}
};
WNDPROC m_wpColorListProc;
//Sept. 5, 2000 JEPRO 半角カタカナの全角化に伴い文字長を変更(21→32)
#define STR_COLORDATA_HEAD_LEN 32
#define STR_COLORDATA_HEAD "テキストエディタ 色設定ファイル\x1a"
//#define STR_COLORDATA_HEAD2 " テキストエディタ色設定 Ver2"
//#define STR_COLORDATA_HEAD21 " テキストエディタ色設定 Ver2.1" //Nov. 2, 2000 JEPRO 変更 [注]. 0.3.9.0:ur3β10以降、設定項目の番号を入れ替えたため
#define STR_COLORDATA_HEAD3 " テキストエディタ色設定 Ver3" //Jan. 15, 2001 Stonee 色設定Ver3ドラフト(設定ファイルのキーを連番→文字列に) //Feb. 11, 2001 JEPRO 有効にした
#define STR_COLORDATA_SECTION "SakuraColor"
char* MakeRGBStr( DWORD dwRGB, char* pszText )
{
wsprintf( pszText, "RGB( %d, %d, %d )",
GetRValue( dwRGB ),
GetGValue( dwRGB ),
GetBValue( dwRGB )
);
return pszText;
}
//@@@ 2001.02.04 Start by MIK: Popup Help
#include "sakura.hh"
static const DWORD p_helpids1[] = { //11300
IDC_CHECK_WORDWRAP, HIDC_CHECK_WORDWRAP, //英文ワードラップ
IDC_EDIT_TABSPACE, HIDC_EDIT_TABSPACE, //TAB幅 // Sep. 19, 2002 genta
IDC_COMBO_IMESWITCH, HIDC_COMBO_IMESWITCH, //IMEのON/OFF状態
IDC_COMBO_IMESTATE, HIDC_COMBO_IMESTATE, //IMEの入力モード
IDC_COMBO_SMARTINDENT, HIDC_COMBO_SMARTINDENT, //スマートインデント
IDC_COMBO_OUTLINES, HIDC_COMBO_OUTLINES, //アウトライン解析方法
IDC_EDIT_TYPENAME, HIDC_EDIT_TYPENAME, //設定の名前
IDC_EDIT_TYPEEXTS, HIDC_EDIT_TYPEEXTS, //ファイル拡張子
IDC_EDIT_MAXLINELEN, HIDC_EDIT_MAXLINELEN, //折り返し桁数
IDC_EDIT_CHARSPACE, HIDC_EDIT_CHARSPACE, //文字の間隔
IDC_EDIT_LINESPACE, HIDC_EDIT_LINESPACE, //行の間隔
IDC_EDIT_INDENTCHARS, HIDC_EDIT_INDENTCHARS, //その他のインデント対象文字
IDC_EDIT_TABVIEWSTRING, HIDC_EDIT_TABVIEWSTRING, //TAB表示文字列
IDC_CHECK_INS_SPACE, HIDC_CHECK_INS_SPACE, //スペースの挿入
IDC_SPIN_MAXLINELEN, HIDC_EDIT_MAXLINELEN,
IDC_SPIN_CHARSPACE, HIDC_EDIT_CHARSPACE,
IDC_SPIN_LINESPACE, HIDC_EDIT_LINESPACE,
IDC_CHECK_KINSOKUHEAD, HIDC_CHECK_KINSOKUHEAD, //行頭禁則 //@@@ 2002.04.08 MIK
IDC_CHECK_KINSOKUTAIL, HIDC_CHECK_KINSOKUTAIL, //行末禁則 //@@@ 2002.04.08 MIK
IDC_CHECK_KINSOKURET, HIDC_CHECK_KINSOKURET, //改行文字をぶら下げる //@@@ 2002.04.14 MIK
IDC_CHECK_KINSOKUKUTO, HIDC_CHECK_KINSOKUKUTO, //句読点をぶら下げる //@@@ 2002.04.17 MIK
IDC_EDIT_KINSOKUHEAD, HIDC_EDIT_KINSOKUHEAD, //行頭禁則 //@@@ 2002.04.08 MIK
IDC_EDIT_KINSOKUTAIL, HIDC_EDIT_KINSOKUTAIL, //行末禁則 //@@@ 2002.04.08 MIK
// IDC_STATIC, -1,
0, 0
};
static const DWORD p_helpids2[] = { //11400
IDC_BUTTON_TEXTCOLOR, HIDC_BUTTON_TEXTCOLOR, //文字色
IDC_BUTTON_BACKCOLOR, HIDC_BUTTON_BACKCOLOR, //背景色
IDC_BUTTON_SAMETEXTCOLOR, HIDC_BUTTON_SAMETEXTCOLOR, //文字色統一
IDC_BUTTON_SAMEBKCOLOR, HIDC_BUTTON_SAMEBKCOLOR, //背景色統一
IDC_BUTTON_IMPORT, HIDC_BUTTON_IMPORT_COLOR, //インポート
IDC_BUTTON_EXPORT, HIDC_BUTTON_EXPORT_COLOR, //エクスポート
IDC_CHECK_DISP, HIDC_CHECK_DISP, //色分け表示
IDC_CHECK_FAT, HIDC_CHECK_FAT, //太字
IDC_CHECK_UNDERLINE, HIDC_CHECK_UNDERLINE, //下線
IDC_CHECK_LCPOS, HIDC_CHECK_LCPOS, //桁指定1
IDC_CHECK_LCPOS2, HIDC_CHECK_LCPOS2, //桁指定2
IDC_COMBO_SET, HIDC_COMBO_SET_COLOR, //強調キーワード1セット名
IDC_COMBO_SET2, HIDC_COMBO_SET2_COLOR, //強調キーワード2セット名
IDC_EDIT_BLOCKCOMMENT_FROM, HIDC_EDIT_BLOCKCOMMENT_FROM, //ブロックコメント1開始
IDC_EDIT_BLOCKCOMMENT_TO, HIDC_EDIT_BLOCKCOMMENT_TO, //ブロックコメント1終了
IDC_EDIT_LINECOMMENT, HIDC_EDIT_LINECOMMENT, //行コメント1
IDC_EDIT_LINECOMMENT2, HIDC_EDIT_LINECOMMENT2, //行コメント2
IDC_EDIT_LINECOMMENTPOS, HIDC_EDIT_LINECOMMENTPOS, //桁数1
IDC_EDIT_LINECOMMENTPOS2, HIDC_EDIT_LINECOMMENTPOS2, //桁数2
IDC_EDIT_LINETERMCHAR, HIDC_EDIT_LINETERMCHAR, //行番号区切り
IDC_EDIT_BLOCKCOMMENT_FROM2, HIDC_EDIT_BLOCKCOMMENT_FROM2, //ブロックコメント2開始
IDC_EDIT_BLOCKCOMMENT_TO2, HIDC_EDIT_BLOCKCOMMENT_TO2, //ブロックコメント2終了
IDC_EDIT_LINECOMMENT3, HIDC_EDIT_LINECOMMENT3, //行コメント3
IDC_LIST_COLORS, HIDC_LIST_COLORS, //色指定
IDC_CHECK_LCPOS3, HIDC_CHECK_LCPOS3, //桁指定3
IDC_EDIT_LINECOMMENTPOS3, HIDC_EDIT_LINECOMMENTPOS3, //桁数3
IDC_RADIO_ESCAPETYPE_1, HIDC_RADIO_ESCAPETYPE_1, //文字列エスケープ(C言語風)
IDC_RADIO_ESCAPETYPE_2, HIDC_RADIO_ESCAPETYPE_2, //文字列エスケープ(PL/SQL風)
IDC_RADIO_LINENUM_LAYOUT, HIDC_RADIO_LINENUM_LAYOUT, //行番号の表示(折り返し単位)
IDC_RADIO_LINENUM_CRLF, HIDC_RADIO_LINENUM_CRLF, //行番号の表示(改行単位)
IDC_RADIO_LINETERMTYPE0, HIDC_RADIO_LINETERMTYPE0, //行番号区切り(なし)
IDC_RADIO_LINETERMTYPE1, HIDC_RADIO_LINETERMTYPE1, //行番号区切り(縦線)
IDC_RADIO_LINETERMTYPE2, HIDC_RADIO_LINETERMTYPE2, //行番号区切り(任意)
// IDC_STATIC, -1,
0, 0
};
static const DWORD p_helpids3[] = { //11500
IDC_BUTTON_HOKANFILE_REF, HIDC_BUTTON_HOKANFILE_REF, //入力補完 単語ファイル参照
IDC_BUTTON_KEYWORDHELPFILE_REF, HIDC_BUTTON_KEYWORDHELPFILE_REF, //キーワードヘルプファイル参照
IDC_CHECK_HOKANLOHICASE, HIDC_CHECK_HOKANLOHICASE, //入力補完の英大文字小文字
IDC_CHECK_USEKEYWORDHELP, HIDC_CHECK_USEKEYWORDHELP, //キーワードヘルプ機能
IDC_CHECK_HOKANBYFILE, HIDC_CHECK_HOKANBYFILE, //現在のファイルから入力補完
IDC_EDIT_HOKANFILE, HIDC_EDIT_HOKANFILE, //単語ファイル名
IDC_EDIT_KEYWORDHELPFILE, HIDC_EDIT_KEYWORDHELPFILE, //辞書ファイル名
// IDC_STATIC, -1,
0, 0
};
//To Here Jul. 05, 2001
/* p1 ダイアログプロシージャ */
INT_PTR CALLBACK PropTypesP1Proc(
HWND hwndDlg, // handle to dialog box
UINT uMsg, // message
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
PROPSHEETPAGE* pPsp;
CPropTypes* pCPropTypes;
switch( uMsg ){
case WM_INITDIALOG:
pPsp = (PROPSHEETPAGE*)lParam;
pCPropTypes = ( CPropTypes* )(pPsp->lParam);
if( NULL != pCPropTypes ){
return pCPropTypes->DispatchEvent_p1( hwndDlg, uMsg, wParam, pPsp->lParam );
}else{
return FALSE;
}
default:
// Modified by KEITA for WIN64 2003.9.6
pCPropTypes = ( CPropTypes* )::GetWindowLongPtr( hwndDlg, DWLP_USER );
if( NULL != pCPropTypes ){
return pCPropTypes->DispatchEvent_p1( hwndDlg, uMsg, wParam, lParam );
}else{
return FALSE;
}
}
}
/* p2 ダイアログプロシージャ */
INT_PTR CALLBACK PropTypesP2Proc(
HWND hwndDlg, // handle to dialog box
UINT uMsg, // message
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
PROPSHEETPAGE* pPsp;
CPropTypes* pCPropTypes;
switch( uMsg ){
case WM_INITDIALOG:
pPsp = (PROPSHEETPAGE*)lParam;
pCPropTypes = ( CPropTypes* )(pPsp->lParam);
if( NULL != pCPropTypes ){
return pCPropTypes->DispatchEvent_p2( hwndDlg, uMsg, wParam, pPsp->lParam );
}else{
return FALSE;
}
default:
// Modified by KEITA for WIN64 2003.9.6
pCPropTypes = ( CPropTypes* )::GetWindowLongPtr( hwndDlg, DWLP_USER );
if( NULL != pCPropTypes ){
return pCPropTypes->DispatchEvent_p2( hwndDlg, uMsg, wParam, lParam );
}else{
return FALSE;
}
}
}
// /* p3 ダイアログプロシージャ */
// BOOL CALLBACK PropTypesP3Proc(
// HWND hwndDlg, // handle to dialog box
// UINT uMsg, // message
// WPARAM wParam, // first message parameter
// LPARAM lParam // second message parameter
// )
// {
// PROPSHEETPAGE* pPsp;
// CPropTypes* pCPropTypes;
// switch( uMsg ){
// case WM_INITDIALOG:
// pPsp = (PROPSHEETPAGE*)lParam;
// pCPropTypes = ( CPropTypes* )(pPsp->lParam);
// if( NULL != pCPropTypes ){
// return pCPropTypes->DispatchEvent_p3( hwndDlg, uMsg, wParam, pPsp->lParam );
// }else{
// return FALSE;
// }
// default:
// pCPropTypes = ( CPropTypes* )::GetWindowLongPtr( hwndDlg, DWLP_USER );
// if( NULL != pCPropTypes ){
// return pCPropTypes->DispatchEvent_p3( hwndDlg, uMsg, wParam, lParam );
// }else{
// return FALSE;
// }
// }
// }
/* p3 ダイアログプロシージャ */
INT_PTR CALLBACK PropTypesP3_newProc(
HWND hwndDlg, // handle to dialog box
UINT uMsg, // message
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
PROPSHEETPAGE* pPsp;
CPropTypes* pCPropTypes;
switch( uMsg ){
case WM_INITDIALOG:
pPsp = (PROPSHEETPAGE*)lParam;
pCPropTypes = ( CPropTypes* )(pPsp->lParam);
if( NULL != pCPropTypes ){
return pCPropTypes->DispatchEvent_p3_new( hwndDlg, uMsg, wParam, pPsp->lParam );
}else{
return FALSE;
}
default:
// Modified by KEITA for WIN64 2003.9.6
pCPropTypes = ( CPropTypes* )::GetWindowLongPtr( hwndDlg, DWLP_USER );
if( NULL != pCPropTypes ){
return pCPropTypes->DispatchEvent_p3_new( hwndDlg, uMsg, wParam, lParam );
}else{
return FALSE;
}
}
}
CPropTypes::CPropTypes()
{
/* 共有データ構造体のアドレスを返す */
m_pShareData = CShareData::getInstance()->GetShareData();
// Mar. 31, 2003 genta メモリ削減のためポインタに変更
m_pCKeyWordSetMgr = &(m_pShareData->m_CKeyWordSetMgr);
m_hInstance = NULL; /* アプリケーションインスタンスのハンドル */
m_hwndParent = NULL; /* オーナーウィンドウのハンドル */
m_hwndThis = NULL; /* このダイアログのハンドル */
m_nPageNum = 0;
/* ヘルプファイルのフルパスを返す */
::GetHelpFilePath( m_szHelpFile );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -