📄 userdefinedialog.cpp
字号:
::EnableWindow(::GetDlgItem(_hSelf, idButton2Disable), FALSE);
}
// Get the operators list
count = ::SendDlgItemMessage(_hSelf, IDC_ACTIVATED_SYMBOL_LIST, LB_GETCOUNT, 0, 0);
int j = 0;
for (int i = 0 ; i < count ; i++)
{
::SendDlgItemMessage(_hSelf, IDC_ACTIVATED_SYMBOL_LIST, LB_GETTEXT, i, (LPARAM)s);
_pUserLang->_keywordLists[3][j++] = s[0];
_pUserLang->_keywordLists[3][j++] = ' ';
}
_pUserLang->_keywordLists[3][--j] = '\0';
if (_pScintilla->getCurrentDocType() == L_USER)
_pScintilla->defineDocType(L_USER);
}
void SymbolsStyleDialog::listboxsRemoveAll()
{
int count = ::SendDlgItemMessage(_hSelf, IDC_AVAILABLE_SYMBOLS_LIST, LB_GETCOUNT, 0, 0);
for (int i = count-1 ; i >= 0 ; i--)
{
::SendDlgItemMessage(_hSelf, IDC_AVAILABLE_SYMBOLS_LIST, LB_DELETESTRING, i, 0);
}
count = ::SendDlgItemMessage(_hSelf, IDC_ACTIVATED_SYMBOL_LIST, LB_GETCOUNT, 0, 0);
for (int i = count-1 ; i >= 0 ; i--)
{
::SendDlgItemMessage(_hSelf, IDC_ACTIVATED_SYMBOL_LIST, LB_DELETESTRING, i, 0);
}
}
void SymbolsStyleDialog::updateDlg()
{
listboxsReInit();
const char *symbols = _pUserLang->_keywordLists[KWL_OPERATOR_INDEX];
for (int i = 0 ; i < int(strlen(symbols)) ; i++)
{
if (symbols[i] != ' ')
{
char s[2];
s[0] = symbols[i];
s[1] = '\0';
int index = ::SendDlgItemMessage(_hSelf, IDC_AVAILABLE_SYMBOLS_LIST, LB_FINDSTRING, (WPARAM)-1, (LPARAM)s);
if (index == LB_ERR)
continue;
int id2Add = IDC_ACTIVATED_SYMBOL_LIST;
int id2Remove = IDC_AVAILABLE_SYMBOLS_LIST;
int idButton2Enable = IDC_REMOVE_BUTTON;
int idButton2Disable = IDC_ADD_BUTTON;
::SendDlgItemMessage(_hSelf, id2Add, LB_ADDSTRING, 0, (LPARAM)s);
::SendDlgItemMessage(_hSelf, id2Remove, LB_DELETESTRING, index, 0);
int count = ::SendDlgItemMessage(_hSelf, id2Remove, LB_GETCOUNT, 0, 0);
if (index == count)
index -= 1;
::SendDlgItemMessage(_hSelf, id2Remove, LB_SETCURSEL, index, 0);
count = ::SendDlgItemMessage(_hSelf, id2Remove, LB_GETCOUNT, 0, 0);
// If there's no symbol, we activate another side
if (!count)
{
::SendDlgItemMessage(_hSelf, id2Add, LB_SETCURSEL, 0, 0);
::EnableWindow(::GetDlgItem(_hSelf, idButton2Enable), TRUE);
::EnableWindow(::GetDlgItem(_hSelf, idButton2Disable), FALSE);
}
}
}
const char *delims = _pUserLang->_keywordLists[KWL_DELIM_INDEX];
// ICI LE TRAITEMENT POUR REMPLIR LES 4 COMBO BOX
char dOpen1[2], dClose1[2], dOpen2[2], dClose2[2], dOpen3[2], dClose3[2];
dOpen1[0] = dClose1[0] = dOpen2[0] = dClose2[0] = dOpen3[0] = dClose3[0] = '\0';
dOpen1[1] = dClose1[1] = dOpen2[1] = dClose2[1] = dOpen3[1] = dClose3[1] = '\0';
if (strlen(delims) >= 6)
{
if (delims[0] != '0')
dOpen1[0] = delims[0];
int i = ::SendDlgItemMessage(_hSelf, IDC_SYMBOL_BO2_COMBO, CB_FINDSTRINGEXACT, (WPARAM)-1, (LPARAM)dOpen1);
if (i == CB_ERR)
i = 0;
::SendDlgItemMessage(_hSelf, IDC_SYMBOL_BO2_COMBO,CB_SETCURSEL, i, 0);
if (delims[1] != '0')
dOpen2[0] = delims[1];
i = ::SendDlgItemMessage(_hSelf, IDC_SYMBOL_BO3_COMBO, CB_FINDSTRINGEXACT, (WPARAM)-1, (LPARAM)dOpen2);
if (i == CB_ERR)
i = 0;
::SendDlgItemMessage(_hSelf, IDC_SYMBOL_BO3_COMBO,CB_SETCURSEL, i, 0);
//if (delims[2] != '0')
//dOpen3 = delims[2];
if (delims[3] != '0')
dClose1[0] = delims[3];
i = ::SendDlgItemMessage(_hSelf, IDC_SYMBOL_BC2_COMBO, CB_FINDSTRINGEXACT, (WPARAM)-1, (LPARAM)dClose1);
if (i == CB_ERR)
i = 0;
::SendDlgItemMessage(_hSelf, IDC_SYMBOL_BC2_COMBO,CB_SETCURSEL, i, 0);
if (delims[4] != '0')
dClose2[0] = delims[4];
i = ::SendDlgItemMessage(_hSelf, IDC_SYMBOL_BC3_COMBO, CB_FINDSTRINGEXACT, (WPARAM)-1, (LPARAM)dClose2);
if (i == CB_ERR)
i = 0;
::SendDlgItemMessage(_hSelf, IDC_SYMBOL_BC3_COMBO,CB_SETCURSEL, i, 0);
//if (delims[5] != '0')
//dClose3 = delims[5];
}
Style & opStyle = _pUserLang->_styleArray.getStyler(STYLE_OPERATOR_INDEX);
styleUpdate(opStyle, _pFgColour[0], _pBgColour[0], IDC_SYMBOL_FONT_COMBO, IDC_SYMBOL_FONTSIZE_COMBO,
IDC_SYMBOL_BOLD_CHECK, IDC_SYMBOL_ITALIC_CHECK, IDC_SYMBOL_UNDERLINE_CHECK);
Style & delim2Style = _pUserLang->_styleArray.getStyler(STYLE_DELIM2_INDEX);
// the compatibility with the old xml
if (delim2Style._styleID = -1)
{
delim2Style._styleID = SCE_USER_DELIMITER1;
delim2Style._styleDesc = SymbolsStyleDialog::_delimTag1;
}
styleUpdate(delim2Style, _pFgColour[1], _pBgColour[1], IDC_SYMBOL_FONT2_COMBO, IDC_SYMBOL_FONTSIZE2_COMBO,
IDC_SYMBOL_BOLD2_CHECK, IDC_SYMBOL_ITALIC2_CHECK, IDC_SYMBOL_UNDERLINE2_CHECK);
Style & delim3Style = _pUserLang->_styleArray.getStyler(STYLE_DELIM3_INDEX);
// the compatibility with the old xml
if (delim3Style._styleID = -1)
{
delim3Style._styleID = SCE_USER_DELIMITER2;
delim3Style._styleDesc = SymbolsStyleDialog::_delimTag2;
}
styleUpdate(delim3Style, _pFgColour[2], _pBgColour[2], IDC_SYMBOL_FONT3_COMBO, IDC_SYMBOL_FONTSIZE3_COMBO,
IDC_SYMBOL_BOLD3_CHECK, IDC_SYMBOL_ITALIC3_CHECK, IDC_SYMBOL_UNDERLINE3_CHECK);
// the compatibility with the old xml
if (_pUserLang->_styleArray.getNbStyler() < 13)
_pUserLang->_styleArray.setNbStyler(13);
}
void SymbolsStyleDialog::listboxsInit()
{
::SendDlgItemMessage(_hSelf, IDC_SYMBOL_BO2_COMBO, CB_ADDSTRING, 0, (LPARAM)"");
::SendDlgItemMessage(_hSelf, IDC_SYMBOL_BC2_COMBO, CB_ADDSTRING, 0, (LPARAM)"");
::SendDlgItemMessage(_hSelf, IDC_SYMBOL_BO3_COMBO, CB_ADDSTRING, 0, (LPARAM)"");
::SendDlgItemMessage(_hSelf, IDC_SYMBOL_BC3_COMBO, CB_ADDSTRING, 0, (LPARAM)"");
for (int i = 0 ; i < int(sizeof(symbolesArray)-1) ; i++)
{
char s[2];
s[0] = symbolesArray[i];
s[1] = '\0';
::SendDlgItemMessage(_hSelf, IDC_AVAILABLE_SYMBOLS_LIST, LB_ADDSTRING, 0, (LPARAM)s);
::SendDlgItemMessage(_hSelf, IDC_SYMBOL_BO2_COMBO, CB_ADDSTRING, 0, (LPARAM)s);
::SendDlgItemMessage(_hSelf, IDC_SYMBOL_BC2_COMBO, CB_ADDSTRING, 0, (LPARAM)s);
::SendDlgItemMessage(_hSelf, IDC_SYMBOL_BO3_COMBO, CB_ADDSTRING, 0, (LPARAM)s);
::SendDlgItemMessage(_hSelf, IDC_SYMBOL_BC3_COMBO, CB_ADDSTRING, 0, (LPARAM)s);
}
}
BOOL CALLBACK SymbolsStyleDialog::run_dlgProc(UINT Message, WPARAM wParam, LPARAM lParam)
{
switch (Message)
{
case WM_INITDIALOG :
{
// 2 listBoxes et 4 combobox
listboxsInit();
::SendDlgItemMessage(_hSelf, IDC_AVAILABLE_SYMBOLS_LIST, LB_SETCURSEL, 0, 0);
::EnableWindow(::GetDlgItem(_hSelf, IDC_REMOVE_BUTTON), FALSE);
return SharedParametersDialog::run_dlgProc(Message, wParam, lParam);
}
case WM_COMMAND :
{
//int toto = HIWORD(wParam);
if ((wParam == IDC_ADD_BUTTON) || (wParam == IDC_REMOVE_BUTTON))
{
symbolAction((wParam == IDC_ADD_BUTTON)?ADD:REMOVE);
if (_pScintilla->getCurrentDocType() == L_USER)
_pScintilla->defineDocType(L_USER);
return TRUE;
}
// car LBN_SELCHANGE == CBN_SELCHANGE == 1
else if ((HIWORD(wParam) == LBN_SELCHANGE) ||(HIWORD(wParam) == CBN_SELCHANGE))
{
if ((LOWORD(wParam) == IDC_ACTIVATED_SYMBOL_LIST) || (LOWORD(wParam) == IDC_AVAILABLE_SYMBOLS_LIST))
{
int idButton2Enable;
int idButton2Disable;
if (LOWORD(wParam) == IDC_AVAILABLE_SYMBOLS_LIST)
{
idButton2Enable = IDC_ADD_BUTTON;
idButton2Disable = IDC_REMOVE_BUTTON;
}
else
{
idButton2Enable = IDC_REMOVE_BUTTON;
idButton2Disable = IDC_ADD_BUTTON;
}
int i = ::SendDlgItemMessage(_hSelf, LOWORD(wParam), LB_GETCURSEL, 0, 0);
if (i != LB_ERR)
{
::EnableWindow(::GetDlgItem(_hSelf, idButton2Enable), TRUE);
int idListbox2Disable = (LOWORD(wParam)== IDC_AVAILABLE_SYMBOLS_LIST)?IDC_ACTIVATED_SYMBOL_LIST:IDC_AVAILABLE_SYMBOLS_LIST;
::SendDlgItemMessage(_hSelf, idListbox2Disable, LB_SETCURSEL, (WPARAM)-1, 0);
::EnableWindow(::GetDlgItem(_hSelf, idButton2Disable), FALSE);
}
return TRUE;
}
else if ((LOWORD(wParam) == IDC_SYMBOL_BO2_COMBO) || (LOWORD(wParam) == IDC_SYMBOL_BC2_COMBO) ||
(LOWORD(wParam) == IDC_SYMBOL_BO3_COMBO) || (LOWORD(wParam) == IDC_SYMBOL_BC3_COMBO))
{
char charStr[5] = "";
int i = ::SendDlgItemMessage(_hSelf, LOWORD(wParam), CB_GETCURSEL, 0, 0);
::SendDlgItemMessage(_hSelf, LOWORD(wParam), CB_GETLBTEXT, i, (LPARAM)charStr);
int symbIndex;
if (LOWORD(wParam) == IDC_SYMBOL_BO2_COMBO)
symbIndex = 0;
else if (LOWORD(wParam) == IDC_SYMBOL_BO3_COMBO)
symbIndex = 1;
else if (LOWORD(wParam) == IDC_SYMBOL_BC2_COMBO)
symbIndex = 3;
else // (LOWORD(wParam) == IDC_SYMBOL_BC3_COMBO)
symbIndex = 4;
char *delims = _pUserLang->_keywordLists[KWL_DELIM_INDEX];
delims[symbIndex] = charStr[0]?charStr[0]:'0';
if (_pScintilla->getCurrentDocType() == L_USER)
_pScintilla->defineDocType(L_USER);
return TRUE;
}
else
return SharedParametersDialog::run_dlgProc(Message, wParam, lParam);
}
}
default :
return SharedParametersDialog::run_dlgProc(Message, wParam, lParam);
}
return FALSE;
}
int SymbolsStyleDialog::getGroupeIndexFromCheck(int ctrlID, int & fontStyleMask) const
{
switch (ctrlID)
{
case IDC_SYMBOL_BOLD_CHECK :
{
fontStyleMask = FONTSTYLE_BOLD;
return STYLE_OPERATOR_INDEX;
}
case IDC_SYMBOL_ITALIC_CHECK :
{
fontStyleMask = FONTSTYLE_ITALIC;
return STYLE_OPERATOR_INDEX;
}
case IDC_SYMBOL_UNDERLINE_CHECK :
{
fontStyleMask = FONTSTYLE_UNDERLINE;
return STYLE_OPERATOR_INDEX;
}
case IDC_SYMBOL_BOLD2_CHECK :
{
fontStyleMask = FONTSTYLE_BOLD;
return STYLE_DELIM2_INDEX;
}
case IDC_SYMBOL_ITALIC2_CHECK :
{
fontStyleMask = FONTSTYLE_ITALIC;
return STYLE_DELIM2_INDEX;
}
case IDC_SYMBOL_UNDERLINE2_CHECK :
{
fontStyleMask = FONTSTYLE_UNDERLINE;
return STYLE_DELIM2_INDEX;
}
case IDC_SYMBOL_BOLD3_CHECK :
{
fontStyleMask = FONTSTYLE_BOLD;
return STYLE_DELIM3_INDEX;
}
case IDC_SYMBOL_ITALIC3_CHECK :
{
fontStyleMask = FONTSTYLE_ITALIC;
return STYLE_DELIM3_INDEX;
}
case IDC_SYMBOL_UNDERLINE3_CHECK :
{
fontStyleMask = FONTSTYLE_UNDERLINE;
return STYLE_DELIM3_INDEX;
}
default :
return -1;
}
}
char styleName[][32] = {"DEFAULT", "FOLDEROPEN", "FOLDERCLOSE", "KEYWORD1", "KEYWORD2", "KEYWORD3", "KEYWORD4", "COMMENT", "COMMENT LINE", "NUMBER", "OPERATOR", "DELIMINER1", "DELIMINER2", "DELIMINER3"};
UserDefineDialog::UserDefineDialog(): SharedParametersDialog(), _status(UNDOCK), _yScrollPos(0), _prevHightVal(0), _isDirty(false)
{
_pCurrentUserLang = new UserLangContainer();
// @REF #01 NE CHANGER PAS D'ORDRE !!!
_pCurrentUserLang->_styleArray.addStyler(SCE_USER_IDENTIFIER, styleName[0]);
_pCurrentUserLang->_styleArray.addStyler(SCE_USER_BLOCK_OPERATOR_OPEN, styleName[1]);
_pCurrentUserLang->_styleArray.addStyler(SCE_USER_BLOCK_OPERATOR_CLOSE, styleName[2]);
_pCurrentUserLang->_styleArray.addStyler(SCE_USER_WORD1, styleName[3]);
_pCurrentUserLang->_styleArray.addStyler(SCE_USER_WORD2, styleName[4]);
_pCurrentUserLang->_styleArray.addStyler(SCE_USER_WORD3, styleName[5]);
_pCurrentUserLang->_styleArray.addStyler(SCE_USER_WORD4, styleName[6]);
_pCurrentUserLang->_styleArray.addStyler(SCE_USER_COMMENT, styleName[7]);
_pCurrentUserLang->_styleArray.addStyler(SCE_USER_COMMENTLINE, styleName[8]);
_pCurrentUserLang->_styleArray.addStyler(SCE_USER_NUMBER, styleName[9]);
_pCurrentUserLang->_styleArray.addStyler(SCE_USER_OPERATOR, styleName[10]);
_pCurrentUserLang->_styleArray.addStyler(SCE_USER_DELIMITER1, styleName[11]);
_pCurrentUserLang->_styleArray.addStyler(SCE_USER_DELIMITER2, styleName[12]);
_pCurrentUserLang->_styleArray.addStyler(SCE_USER_DELIMITER3, styleName[13]);
}
UserDefineDialog::~UserDefineDialog()
{
delete _pCurrentUserLang;
}
void UserDefineDialog::changeStyle()
{
display(false);
_status = !_status;
::SetDlgItemText(_hSelf, IDC_DOCK_BUTTON, (_status == DOCK)?"Undock":"Dock");
long style = ::GetWindowLong(_hSelf, GWL_STYLE);
if (!style)
::MessageBox(NULL,"echou GetWindowLong", "", MB_OK);
style = (_status == DOCK)?
((style & ~WS_POPUP) & ~DS_MODALFRAME & ~WS_CAPTION) | WS_CHILD :
(style & ~WS_CHILD) | WS_POPUP | DS_MODALFRAME | WS_CAPTION;
long result = ::SetWindowLong(_hSelf, GWL_STYLE, style);
if (!result)
::MessageBox(NULL,"echou SetWindowLong", "", MB_OK);
if (_status == DOCK)
getActualPosSize();
else
restorePosSize();
::SetWindowPos(_hSelf, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOOWNERZORDER | SWP_FRAMECHANGED | SWP_NOREPOSITION);
::SetParent(_hSelf, (_status == DOCK)?_hParent:NULL);
}
void UserDefineDialog::enableLangAndControlsBy(int index)
{
_pUserLang = (index == 0)?_pCurrentUserLang:&((NppParameters::getInstance())->getULCFromIndex(index - 1));
if (index != 0)
::SetWindowText(::GetDlgItem(_hSelf, IDC_EXT_EDIT), _pUserLang->_ext);
::ShowWindow(::GetDlgItem(_hSelf, IDC_EXT_STATIC), (index == 0)?SW_HIDE:SW_SHOW);
::ShowWindow(::GetDlgItem(_hSelf, IDC_EXT_EDIT), (index == 0)?SW_HIDE:SW_SHOW);
::ShowWindow(::GetDlgItem(_hSelf, IDC_RENAME_BUTTON), (index == 0)?SW_HIDE:SW_SHOW);
::ShowWindow(::GetDlgItem(_hSelf, IDC_REMOVELANG_BUTTON), (index == 0)?SW_HIDE:SW_SHOW);
}
void UserDefineDialog::updateDlg()
{
if (!_isDirty)
{
int i = ::SendDlgItemMessage(_hSelf, IDC_LANGNAME_COMBO, CB_GETCURSEL, 0, 0);
if (i > 0)
_isDirty = true;
}
::SendDlgItemMessage(_hSelf, IDC_LANGNAME_IGNORECASE_CHECK, BM_SETCHECK, _pUserLang->_isCaseIgnored, 0);
_folderStyleDlg.updateDlg();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -