📄 preferencedlg.cpp.svn-base
字号:
#include <windows.h>
#include "preferenceDlg.h"
#include "SysMsg.h"
#include "common_func.h"
BOOL CALLBACK PreferenceDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM lParam)
{
switch (Message)
{
case WM_INITDIALOG :
{
_ctrlTab.init(_hInst, _hSelf, false, true, true);
_ctrlTab.setFont("Tahoma", 13);
_barsDlg.init(_hInst, _hSelf);
_barsDlg.create(IDD_PREFERENCE_BAR_BOX);
_barsDlg.display();
_marginsDlg.init(_hInst, _hSelf);
_marginsDlg.create(IDD_PREFERENCE_MARGEIN_BOX);
_settingsDlg.init(_hInst, _hSelf);
_settingsDlg.create(IDD_PREFERENCE_SETTING_BOX);
_defaultNewDocDlg.init(_hInst, _hSelf);
_defaultNewDocDlg.create(IDD_PREFERENCE_NEWDOCSETTING_BOX);
_fileAssocDlg.init(_hInst, _hSelf);
_fileAssocDlg.create(IDD_REGEXT_BOX);
_printSettingsDlg.init(_hInst, _hSelf);
_printSettingsDlg.create(IDD_PREFERENCE_PRINT_BOX);
_printSettings2Dlg.init(_hInst, _hSelf);
_printSettings2Dlg.create(IDD_PREFERENCE_PRINT2_BOX);
_langMenuDlg.init(_hInst, _hSelf);
_langMenuDlg.create(IDD_PREFERENCE_LANG_BOX);
_backupDlg.init(_hInst, _hSelf);
_backupDlg.create(IDD_PREFERENCE_BACKUP_BOX);
_wVector.push_back(DlgInfo(&_barsDlg, "Global", "Global"));
_wVector.push_back(DlgInfo(&_marginsDlg, "Edit Components", "Scintillas"));
_wVector.push_back(DlgInfo(&_defaultNewDocDlg, "New Document", "NewDoc"));
_wVector.push_back(DlgInfo(&_fileAssocDlg, "File Association", "FileAssoc"));
_wVector.push_back(DlgInfo(&_langMenuDlg, "Language Menu", "LangMenu"));
_wVector.push_back(DlgInfo(&_printSettingsDlg, "Print - Colour and Marge", "Print1"));
_wVector.push_back(DlgInfo(&_printSettings2Dlg, "Print - Header and Footer", "Print2"));
_wVector.push_back(DlgInfo(&_backupDlg, "Backup", "Backup"));
_wVector.push_back(DlgInfo(&_settingsDlg, "MISC", "MISC"));
_ctrlTab.createTabs(_wVector);
_ctrlTab.display();
RECT rc;
getClientRect(rc);
_ctrlTab.reSizeTo(rc);
rc.bottom -= 30;
_barsDlg.reSizeTo(rc);
_marginsDlg.reSizeTo(rc);
_settingsDlg.reSizeTo(rc);
_defaultNewDocDlg.reSizeTo(rc);
_fileAssocDlg.reSizeTo(rc);
_langMenuDlg.reSizeTo(rc);
_printSettingsDlg.reSizeTo(rc);
_printSettings2Dlg.reSizeTo(rc);
_backupDlg.reSizeTo(rc);
NppParameters *pNppParam = NppParameters::getInstance();
ETDTProc enableDlgTheme = (ETDTProc)pNppParam->getEnableThemeDlgTexture();
if (enableDlgTheme)
enableDlgTheme(_hSelf, ETDT_ENABLETAB);
return TRUE;
}
case WM_NOTIFY :
{
NMHDR *nmhdr = (NMHDR *)lParam;
if (nmhdr->code == TCN_SELCHANGE)
{
if (nmhdr->hwndFrom == _ctrlTab.getHSelf())
{
_ctrlTab.clickedUpdate();
return TRUE;
}
}
break;
}
case WM_COMMAND :
{
switch (wParam)
{
case IDC_BUTTON_CLOSE :
case IDCANCEL :
display(false);
return TRUE;
default :
::SendMessage(_hParent, WM_COMMAND, wParam, lParam);
return TRUE;
}
}
}
return FALSE;
}
BOOL CALLBACK BarsDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM lParam)
{
NppParameters *pNppParam = NppParameters::getInstance();
switch (Message)
{
case WM_INITDIALOG :
{
const NppGUI & nppGUI = pNppParam->getNppGUI();
toolBarStatusType tbStatus = nppGUI._toolBarStatus;
int tabBarStatus = nppGUI._tabStatus;
bool showStatus = nppGUI._statusBarShow;
bool enableTaskList = nppGUI._doTaskList;
bool enableMaintainIndent = nppGUI._maitainIndent;
bool saveOpenKeepInSameDir = nppGUI._saveOpenKeepInSameDir;
bool styleMRU = nppGUI._styleMRU;
int ID2Check = 0;
switch (tbStatus)
{
case TB_HIDE :
ID2Check = IDC_RADIO_HIDE;
break;
case TB_SMALL :
ID2Check = IDC_RADIO_SMALLICON;
break;
case TB_LARGE :
ID2Check = IDC_RADIO_BIGICON;
break;
default : //TB_STANDARD
ID2Check = IDC_RADIO_STANDARD;
}
::SendDlgItemMessage(_hSelf, ID2Check, BM_SETCHECK, BST_CHECKED, 0);
::SendDlgItemMessage(_hSelf, IDC_CHECK_REDUCE, BM_SETCHECK, tabBarStatus & TAB_REDUCE, 0);
::SendDlgItemMessage(_hSelf, IDC_CHECK_LOCK, BM_SETCHECK, !(tabBarStatus & TAB_DRAGNDROP), 0);
::SendDlgItemMessage(_hSelf, IDC_CHECK_ORANGE, BM_SETCHECK, tabBarStatus & TAB_DRAWTOPBAR, 0);
::SendDlgItemMessage(_hSelf, IDC_CHECK_DRAWINACTIVE, BM_SETCHECK, tabBarStatus & TAB_DRAWINACTIVETAB, 0);
::SendDlgItemMessage(_hSelf, IDC_CHECK_ENABLETABCLOSE, BM_SETCHECK, tabBarStatus & TAB_CLOSEBUTTON, 0);
::SendDlgItemMessage(_hSelf, IDC_CHECK_DBCLICK2CLOSE, BM_SETCHECK, tabBarStatus & TAB_DBCLK2CLOSE, 0);
::SendDlgItemMessage(_hSelf, IDC_CHECK_SHOWSTATUSBAR, BM_SETCHECK, showStatus, 0);
::SendDlgItemMessage(_hSelf, IDC_CHECK_ENABLEDOCSWITCHER, BM_SETCHECK, enableTaskList, 0);
::SendDlgItemMessage(_hSelf, IDC_CHECK_MAINTAININDENT, BM_SETCHECK, enableMaintainIndent, 0);
::SendDlgItemMessage(_hSelf, IDC_CHECK_KEEPINSAMEDIR, BM_SETCHECK, saveOpenKeepInSameDir, 0);
::SendDlgItemMessage(_hSelf, IDC_CHECK_STYLEMRU, BM_SETCHECK, styleMRU, 0);
if (!nppGUI._doTaskList)
{
::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_STYLEMRU), FALSE);
}
ETDTProc enableDlgTheme = (ETDTProc)pNppParam->getEnableThemeDlgTexture();
if (enableDlgTheme)
enableDlgTheme(_hSelf, ETDT_ENABLETAB);
return TRUE;
}
case WM_COMMAND :
{
switch (wParam)
{
case IDC_CHECK_SHOWSTATUSBAR :
::SendMessage(_hParent, WM_COMMAND, IDM_VIEW_STATUSBAR, 0);
return TRUE;
case IDC_CHECK_ENABLEDOCSWITCHER :
{
NppGUI & nppGUI = (NppGUI &)NppParameters::getInstance()->getNppGUI();
nppGUI._doTaskList = !nppGUI._doTaskList;
if (nppGUI._doTaskList)
{
::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_STYLEMRU), TRUE);
}
else
{
nppGUI._styleMRU = false;
::SendDlgItemMessage(_hSelf, IDC_CHECK_STYLEMRU, BM_SETCHECK, false, 0);
::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_STYLEMRU), FALSE);
}
return TRUE;
}
case IDC_CHECK_KEEPINSAMEDIR :
{
NppGUI & nppGUI = (NppGUI &)NppParameters::getInstance()->getNppGUI();
nppGUI._saveOpenKeepInSameDir = !nppGUI._saveOpenKeepInSameDir;
return TRUE;
}
case IDC_CHECK_MAINTAININDENT :
{
NppGUI & nppGUI = (NppGUI &)NppParameters::getInstance()->getNppGUI();
nppGUI._maitainIndent = !nppGUI._maitainIndent;
return TRUE;
}
case IDC_CHECK_STYLEMRU :
{
NppGUI & nppGUI = (NppGUI &)NppParameters::getInstance()->getNppGUI();
nppGUI._styleMRU = !nppGUI._styleMRU;
return TRUE;
}
case IDC_CHECK_REDUCE :
::SendMessage(_hParent, WM_COMMAND, IDM_VIEW_REDUCETABBAR, 0);
return TRUE;
case IDC_CHECK_LOCK :
::SendMessage(_hParent, WM_COMMAND, IDM_VIEW_LOCKTABBAR, 0);
return TRUE;
case IDC_CHECK_ORANGE :
::SendMessage(_hParent, WM_COMMAND, IDM_VIEW_DRAWTABBAR_TOPBAR, 0);
return TRUE;
case IDC_CHECK_DRAWINACTIVE :
::SendMessage(_hParent, WM_COMMAND, IDM_VIEW_DRAWTABBAR_INACIVETAB, 0);
return TRUE;
case IDC_CHECK_ENABLETABCLOSE :
::SendMessage(_hParent, WM_COMMAND, IDM_VIEW_DRAWTABBAR_CLOSEBOTTUN, 0);
return TRUE;
case IDC_CHECK_DBCLICK2CLOSE :
::SendMessage(_hParent, WM_COMMAND, IDM_VIEW_DRAWTABBAR_DBCLK2CLOSE, 0);
return TRUE;
case IDC_RADIO_HIDE :
::SendMessage(_hParent, WM_COMMAND, IDM_VIEW_TOOLBAR_HIDE, 0);
return TRUE;
case IDC_RADIO_SMALLICON :
::SendMessage(_hParent, WM_COMMAND, IDM_VIEW_TOOLBAR_REDUCE, 0);
return TRUE;
case IDC_RADIO_BIGICON :
::SendMessage(_hParent, WM_COMMAND, IDM_VIEW_TOOLBAR_ENLARGE, 0);
return TRUE;
case IDC_RADIO_STANDARD :
::SendMessage(_hParent, WM_COMMAND, IDM_VIEW_TOOLBAR_STANDARD, 0);
return TRUE;
}
}
}
return FALSE;
}
void MarginsDlg::changePanelTo(int index)
{
NppParameters *pNppParam = NppParameters::getInstance();
const ScintillaViewParams & svp = pNppParam->getSVP(index?SCIV_SECOND:SCIV_PRIMARY);
::SendDlgItemMessage(_hSelf, IDC_RADIO_BOX, BM_SETCHECK, FALSE, 0);
::SendDlgItemMessage(_hSelf, IDC_RADIO_CIRCLE, BM_SETCHECK, FALSE, 0);
::SendDlgItemMessage(_hSelf, IDC_RADIO_ARROW, BM_SETCHECK, FALSE, 0);
::SendDlgItemMessage(_hSelf, IDC_RADIO_SIMPLE, BM_SETCHECK, FALSE, 0);
int id = 0;
switch (svp._folderStyle)
{
case FOLDER_STYLE_BOX:
id = IDC_RADIO_BOX;
break;
case FOLDER_STYLE_CIRCLE:
id = IDC_RADIO_CIRCLE;
break;
case FOLDER_STYLE_ARROW:
id = IDC_RADIO_ARROW;
break;
default : // FOLDER_STYLE_SIMPLE:
id = IDC_RADIO_SIMPLE;
}
::SendDlgItemMessage(_hSelf, id, BM_SETCHECK, TRUE, 0);
::SendDlgItemMessage(_hSelf, IDC_CHECK_LINENUMBERMARGE, BM_SETCHECK, svp._lineNumberMarginShow, 0);
::SendDlgItemMessage(_hSelf, IDC_CHECK_BOOKMARKMARGE, BM_SETCHECK, svp._bookMarkMarginShow, 0);
::SendDlgItemMessage(_hSelf, IDC_CHECK_CURRENTLINEHILITE, BM_SETCHECK, svp._currentLineHilitingShow, 0);
bool isEnable = !(svp._edgeMode == EDGE_NONE);
::SendDlgItemMessage(_hSelf, IDC_CHECK_SHOWVERTICALEDGE, BM_SETCHECK, isEnable, 0);
::SendDlgItemMessage(_hSelf, IDC_RADIO_LNMODE, BM_SETCHECK, (svp._edgeMode == EDGE_LINE), 0);
::SendDlgItemMessage(_hSelf, IDC_RADIO_BGMODE, BM_SETCHECK, (svp._edgeMode == EDGE_BACKGROUND), 0);
::EnableWindow(::GetDlgItem(_hSelf, IDC_RADIO_LNMODE), isEnable);
::EnableWindow(::GetDlgItem(_hSelf, IDC_RADIO_BGMODE), isEnable);
::EnableWindow(::GetDlgItem(_hSelf, IDC_NBCOLONE_STATIC), isEnable);
char nbColStr[10];
itoa(svp._edgeNbColumn, nbColStr, 10);
::SetWindowText(::GetDlgItem(_hSelf, IDC_COLONENUMBER_STATIC), nbColStr);
::ShowWindow(::GetDlgItem(_hSelf, IDC_COLONENUMBER_STATIC), isEnable);
}
BOOL CALLBACK MarginsDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM lParam)
{
switch (Message)
{
case WM_INITDIALOG :
{
_verticalEdgeLineNbColVal.init(_hInst, _hSelf);
_verticalEdgeLineNbColVal.create(::GetDlgItem(_hSelf, IDC_COLONENUMBER_STATIC), IDM_SETTING_EDGE_SIZE);
::SendDlgItemMessage(_hSelf, IDC_COMBO_SCINTILLAVIEWCHOIX, CB_ADDSTRING, 0, (LPARAM)"Primary View");
::SendDlgItemMessage(_hSelf, IDC_COMBO_SCINTILLAVIEWCHOIX, CB_ADDSTRING, 0, (LPARAM)"Second View");
::SendDlgItemMessage(_hSelf, IDC_COMBO_SCINTILLAVIEWCHOIX, CB_SETCURSEL, 0, 0);
changePanelTo(SCIV_PRIMARY);
NppParameters *pNppParam = NppParameters::getInstance();
ETDTProc enableDlgTheme = (ETDTProc)pNppParam->getEnableThemeDlgTexture();
if (enableDlgTheme)
enableDlgTheme(_hSelf, ETDT_ENABLETAB);
return TRUE;
}
case WM_COMMAND :
{
NppParameters *pNppParam = NppParameters::getInstance();
int i = ::SendDlgItemMessage(_hSelf, IDC_COMBO_SCINTILLAVIEWCHOIX, CB_GETCURSEL, 0, 0);
ScintillaViewParams & svp = (ScintillaViewParams &)pNppParam->getSVP(i?SCIV_SECOND:SCIV_PRIMARY);
int iView = i + 1;
switch (wParam)
{
case IDC_CHECK_LINENUMBERMARGE:
svp._lineNumberMarginShow = (BST_CHECKED == ::SendDlgItemMessage(_hSelf, IDC_CHECK_LINENUMBERMARGE, BM_GETCHECK, 0, 0));
::SendMessage(_hParent, WM_COMMAND, IDM_VIEW_LINENUMBER, iView);
return TRUE;
case IDC_CHECK_BOOKMARKMARGE:
svp._bookMarkMarginShow = (BST_CHECKED == ::SendDlgItemMessage(_hSelf, IDC_CHECK_BOOKMARKMARGE, BM_GETCHECK, 0, 0));
::SendMessage(_hParent, WM_COMMAND, IDM_VIEW_SYMBOLMARGIN, iView);
return TRUE;
case IDC_CHECK_CURRENTLINEHILITE:
svp._currentLineHilitingShow = (BST_CHECKED == ::SendDlgItemMessage(_hSelf, IDC_CHECK_CURRENTLINEHILITE, BM_GETCHECK, 0, 0));
::SendMessage(_hParent, WM_COMMAND, IDM_VIEW_CURLINE_HILITING, iView);
return TRUE;
case IDC_RADIO_SIMPLE:
svp._folderStyle = FOLDER_STYLE_SIMPLE;
::SendMessage(_hParent, WM_COMMAND, IDM_VIEW_FOLDERMAGIN_SIMPLE, iView);
return TRUE;
case IDC_RADIO_ARROW:
svp._folderStyle = FOLDER_STYLE_ARROW;
::SendMessage(_hParent, WM_COMMAND, IDM_VIEW_FOLDERMAGIN_ARROW, iView);
return TRUE;
case IDC_RADIO_CIRCLE:
svp._folderStyle = FOLDER_STYLE_CIRCLE;
::SendMessage(_hParent, WM_COMMAND, IDM_VIEW_FOLDERMAGIN_CIRCLE, iView);
return TRUE;
case IDC_RADIO_BOX:
svp._folderStyle = FOLDER_STYLE_BOX;
::SendMessage(_hParent, WM_COMMAND, IDM_VIEW_FOLDERMAGIN_BOX, iView);
return TRUE;
case IDC_CHECK_SHOWVERTICALEDGE:
{
int modeID = 0;
bool isChecked = (BST_CHECKED == ::SendDlgItemMessage(_hSelf, IDC_CHECK_SHOWVERTICALEDGE, BM_GETCHECK, 0, 0));
if (isChecked)
{
::SendDlgItemMessage(_hSelf, IDC_RADIO_LNMODE, BM_SETCHECK, TRUE, 0);
svp._edgeMode = EDGE_LINE;
modeID = IDM_VIEW_EDGELINE;
}
else
{
::SendDlgItemMessage(_hSelf, IDC_RADIO_LNMODE, BM_SETCHECK, FALSE, 0);
::SendDlgItemMessage(_hSelf, IDC_RADIO_BGMODE, BM_SETCHECK, FALSE, 0);
svp._edgeMode = EDGE_NONE;
modeID = IDM_VIEW_EDGENONE;
}
::EnableWindow(::GetDlgItem(_hSelf, IDC_RADIO_LNMODE), isChecked);
::EnableWindow(::GetDlgItem(_hSelf, IDC_RADIO_BGMODE), isChecked);
::EnableWindow(::GetDlgItem(_hSelf, IDC_NBCOLONE_STATIC), isChecked);
::ShowWindow(::GetDlgItem(_hSelf, IDC_COLONENUMBER_STATIC), isChecked);
::SendMessage(_hParent, WM_COMMAND, modeID, iView);
return TRUE;
}
case IDC_RADIO_LNMODE:
svp._edgeMode = EDGE_LINE;
::SendMessage(_hParent, WM_COMMAND, IDM_VIEW_EDGELINE, iView);
return TRUE;
case IDC_RADIO_BGMODE:
svp._edgeMode = EDGE_BACKGROUND;
::SendMessage(_hParent, WM_COMMAND, IDM_VIEW_EDGEBACKGROUND, iView);
return TRUE;
case IDM_SETTING_EDGE_SIZE:
{
::SendMessage(_hParent, WM_COMMAND, IDM_SETTING_EDGE_SIZE, iView);
char nbColStr[10];
itoa(svp._edgeNbColumn, nbColStr, 10);
::SetWindowText(::GetDlgItem(_hSelf, IDC_COLONENUMBER_STATIC), nbColStr);
return TRUE;
}
default :
switch (HIWORD(wParam))
{
case CBN_SELCHANGE : // == case LBN_SELCHANGE :
{
switch (LOWORD(wParam))
{
case IDC_COMBO_SCINTILLAVIEWCHOIX :
{
changePanelTo(i);
return TRUE;
}
default:
break;
}
}
}
}
}
}
return FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -