INT_PTR CALLBACK FileRelocalizerDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM) { switch (Message) { case WM_INITDIALOG : { goToCenter(); ::SetDlgItemText(_hSelf, IDC_EDIT_FILEFULLPATHNAME, _fullFilePath.c_str()); return TRUE; } case WM_COMMAND : { switch (wParam) { case IDOK : { TCHAR textBuf[MAX_PATH]; ::GetDlgItemText(_hSelf, IDC_EDIT_FILEFULLPATHNAME, textBuf, MAX_PATH); _fullFilePath = textBuf; ::EndDialog(_hSelf, 0); } return TRUE; case IDCANCEL : ::EndDialog(_hSelf, -1); return TRUE; default: return FALSE; } } default : return FALSE; } }
LRESULT CALLBACK proxyDlgProc(HWND hWndDlg, UINT Msg, WPARAM wParam, LPARAM lParam) { switch(Msg) { case WM_INITDIALOG: ::SetDlgItemTextA(hWndDlg, IDC_PROXYSERVER_EDIT, proxySrv.c_str()); ::SetDlgItemInt(hWndDlg, IDC_PORT_EDIT, proxyPort, FALSE); goToCenter(hWndDlg); return TRUE; case WM_COMMAND: switch(wParam) { case IDOK: { char proxyServer[MAX_PATH]; ::GetDlgItemTextA(hWndDlg, IDC_PROXYSERVER_EDIT, proxyServer, MAX_PATH); proxySrv = proxyServer; proxyPort = ::GetDlgItemInt(hWndDlg, IDC_PORT_EDIT, NULL, FALSE); EndDialog(hWndDlg, 1); return TRUE; } case IDCANCEL: EndDialog(hWndDlg, 0); return TRUE; } break; } return FALSE; }
void AboutDialog::doDialog() { if (!isCreated()) create(IDD_ABOUTDLG); goToCenter(); }
void SelectProxy::DoDialog () { if (!isCreated()) { create (IDD_DIALOG_SELECT_PROXY); } goToCenter (); }
void ConfigDialog::doDialog() { if (!isCreated()) create(IDD_CONFIGDIALOG); _isModal = FALSE; goToCenter(); }
void AboutDlg::doDialog() { if (!isCreated()) create(IDD_ABOUTBOX); // Adjust the position of AboutBox goToCenter(); }
void DebugInfoDlg::doDialog() { if (!isCreated()) create(IDD_DEBUGINFOBOX); // Adjust the position of AboutBox goToCenter(); }
void LangListDialog::DoDialog() { if (!isCreated()) { create(IDD_CHOOSE_MULTIPLE_LANGUAGES); } goToCenter(); display(); SetFocus(HLangList); }
void AboutDlg::DoDialog () { if (!isCreated()) { create (IDD_ABOUT); goToCenter (); } display (); }
void RunDlg::doDialog(bool isRTL) { if (!isCreated()) create(IDD_RUN_DLG, isRTL); // Adjust the position in the center goToCenter(); ::SetFocus(::GetDlgItem(_hSelf, IDC_COMBO_RUN_PATH)); };
void SettingDlg::doDialog() { if (!isCreated()) { create(IDD_SETTING_DLG); } goToCenter(); }
void ConfigDialog::doDialog(int FuncCmdId) { if (!isCreated()) { create(IDD_DIALOG); } _cmdId = FuncCmdId; // position dialog to the center of the screen goToCenter(); }
void Progress::DoDialog () { if (!isCreated()) { create (IDD_DIALOGPROGRESS); } else { goToCenter (); display (); } }
BOOL CALLBACK FindCharsInRangeDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM) { switch (message) { case WM_INITDIALOG : { ::SendDlgItemMessage(_hSelf, IDC_RANGESTART_EDIT, EM_LIMITTEXT, 3, 0); ::SendDlgItemMessage(_hSelf, IDC_RANGEEND_EDIT, EM_LIMITTEXT, 3, 0); ::SendDlgItemMessage(_hSelf, IDC_NONASCCI_RADIO, BM_SETCHECK, TRUE, 0); ::SendDlgItemMessage(_hSelf, ID_FINDCHAR_DIRDOWN, BM_SETCHECK, TRUE, 0); goToCenter(); return TRUE; } case WM_COMMAND : { switch (wParam) { case IDCANCEL : // Close display(false); return TRUE; case ID_FINDCHAR_NEXT: { int currentPos = (*_ppEditView)->execute(SCI_GETCURRENTPOS); unsigned char startRange = 0; unsigned char endRange = 255; bool direction = dirDown; bool isWrap = true; if (!getRangeFromUI(startRange, endRange)) { //STOP! ::MessageBox(_hSelf, TEXT("You should type between from 0 to 255."), TEXT("Range Value problem"), MB_OK); return TRUE; } getDirectionFromUI(direction, isWrap); findCharInRange(startRange, endRange, currentPos, direction, isWrap); return TRUE; } default : { break; } } } default : return FALSE; } }
void AboutDlg::doDialog() { if( !isCreated() ) { if( m_isReadMeDlg ) { create( IDD_README_DLG ); } else { create( IDD_ABOUT_DLG ); } } goToCenter(); }
LRESULT CALLBACK progressBarDlgProc(HWND hWndDlg, UINT Msg, WPARAM wParam, LPARAM lParam) { INITCOMMONCONTROLSEX InitCtrlEx; InitCtrlEx.dwSize = sizeof(INITCOMMONCONTROLSEX); InitCtrlEx.dwICC = ICC_PROGRESS_CLASS; InitCommonControlsEx(&InitCtrlEx); switch(Msg) { case WM_INITDIALOG: hProgressDlg = hWndDlg; hProgressBar = CreateWindowEx(0, PROGRESS_CLASS, NULL, WS_CHILD | WS_VISIBLE, 20, 20, 260, 17, hWndDlg, NULL, hInst, NULL); SendMessage(hProgressBar, PBM_SETRANGE, 0, MAKELPARAM(0, 100)); SendMessage(hProgressBar, PBM_SETSTEP, 1, 0); goToCenter(hWndDlg); return TRUE; case WM_COMMAND: switch(wParam) { case IDOK: EndDialog(hWndDlg, 0); return TRUE; case IDCANCEL: stopDL = true; if (abortOrNot == "") abortOrNot = MSGID_ABORTORNOT; int abortAnswer = ::MessageBoxA(hWndDlg, abortOrNot.c_str(), msgBoxTitle.c_str(), MB_YESNO); if (abortAnswer == IDYES) { doAbort = true; EndDialog(hWndDlg, 0); } stopDL = false; return TRUE; } break; } return FALSE; }
void AboutDialog::doDialog() { if (!isCreated()) create(IDD_ABOUTDIALOG); /* want to set the VERSION/DATE from the build 'version.txt' */ #if 0 /* 00000000000000000 this FAILED? WHY? */ // HWND hwnd = this.GetSafeHwnd(); // m_hWnd; HWND label = GetDlgItem((HWND)this, IDC_VERSION); if (label) { TCHAR buf[1024]; swprintf(buf, sizeof(buf), _T("Using HTML Tidy date " TIDY2_DATE ", version " TIDY2_VERSION ", from https://github.com/htacg/tidy-html5")); SetWindowText(label, buf); } #endif /* 0000000000000000000 */ goToCenter(); }
UINT_PTR CALLBACK FileDialog::OFNHookProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { case WM_INITDIALOG : { NppParameters *pNppParam = NppParameters::getInstance(); int index = pNppParam->getFileSaveDlgFilterIndex(); ::SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR)staticThis); hFileDlg = ::GetParent(hWnd); goToCenter(hFileDlg); if (index != -1) { HWND typeControl = ::GetDlgItem(hFileDlg, cmb1); ::SendMessage(typeControl, CB_SETCURSEL, index, 0); } // Don't touch the following 3 lines, they are cursed !!! oldProc = (WNDPROC)::GetWindowLongPtr(hFileDlg, GWL_WNDPROC); if ((long)oldProc > 0) ::SetWindowLongPtr(hFileDlg, GWLP_WNDPROC, (LONG_PTR)fileDlgProc); return FALSE; } default : { FileDialog *pFileDialog = reinterpret_cast<FileDialog *>(::GetWindowLongPtr(hWnd, GWL_USERDATA)); if (!pFileDialog) { return FALSE; } return pFileDialog->run(hWnd, uMsg, wParam, lParam); } } }
INT_PTR CALLBACK TaskListDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM lParam) { switch (Message) { case WM_INITDIALOG : { ::SendMessage(_hParent, WM_GETTASKLISTINFO, reinterpret_cast<WPARAM>(&_taskListInfo), 0); int nbTotal = static_cast<int32_t>(_taskListInfo._tlfsLst.size()); int i2set = _taskListInfo._currentIndex + (_initDir == dirDown?1:-1); if (i2set < 0) i2set = nbTotal - 1; if (i2set > (nbTotal - 1)) i2set = 0; _taskList.init(_hInst, _hSelf, _hImalist, nbTotal, i2set); _taskList.setFont(TEXT("Verdana"), NppParameters::getInstance()->_dpiManager.scaleY(14)); _rc = _taskList.adjustSize(); reSizeTo(_rc); goToCenter(); _taskList.display(true); hWndServer = _hSelf; windowsVersion = NppParameters::getInstance()->getWinVersion(); #ifndef WH_MOUSE_LL #define WH_MOUSE_LL 14 #endif _hHooker = ::SetWindowsHookEx(WH_MOUSE_LL, hookProc, _hInst, 0); hook = _hHooker; return FALSE; } case WM_DESTROY : { _taskList.destroy(); ::UnhookWindowsHookEx(_hHooker); _instanceCount--; return TRUE; } case WM_RBUTTONUP: { ::SendMessage(_hSelf, WM_COMMAND, ID_PICKEDUP, _taskList.getCurrentIndex()); return TRUE; } case WM_MOUSEWHEEL: { ::SendMessage(_taskList.getHSelf(), WM_MOUSEWHEEL, wParam, lParam); return TRUE; } case WM_DRAWITEM : { drawItem((DRAWITEMSTRUCT *)lParam); return TRUE; } case WM_NOTIFY: { switch (((LPNMHDR)lParam)->code) { case LVN_GETDISPINFO: { LV_ITEM &lvItem = reinterpret_cast<LV_DISPINFO*>(reinterpret_cast<LV_DISPINFO FAR *>(lParam))->item; TaskLstFnStatus & fileNameStatus = _taskListInfo._tlfsLst[lvItem.iItem]; lvItem.pszText = (TCHAR *)fileNameStatus._fn.c_str(); lvItem.iImage = fileNameStatus._status; return TRUE; } case NM_CLICK : case NM_RCLICK : { ::SendMessage(_hSelf, WM_COMMAND, ID_PICKEDUP, _taskList.updateCurrentIndex()); return TRUE; } default: break; } break; } case WM_COMMAND : { switch (wParam) { case ID_PICKEDUP : { auto listIndex = lParam; int view2set = _taskListInfo._tlfsLst[listIndex]._iView; int index2Switch = _taskListInfo._tlfsLst[listIndex]._docIndex; ::SendMessage(_hParent, NPPM_ACTIVATEDOC, view2set, index2Switch); ::EndDialog(_hSelf, -1); return TRUE; } default: return FALSE; } } default : return FALSE; } return FALSE; }
BOOL CALLBACK ShortcutMapper::run_dlgProc(UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_INITDIALOG : { initTabs(); initList(); populateShortCuts(); goToCenter(); GetWindowRect(_hSelf,&default_sm_size); AnchorInit(_hSelf,ShortcutAnchors,sizeof(ShortcutAnchors)/sizeof(CONTROL_ANCHOR)); RestoreWinRelPosition(_hParent,_hSelf,&WinRelPos); return TRUE; } case WM_DESTROY: SaveWinRelPosition(_hParent,_hSelf,&WinRelPos); break; case WM_SIZE: AnchorResize(_hSelf,ShortcutAnchors,sizeof(ShortcutAnchors)/sizeof(CONTROL_ANCHOR)); break; case WM_SIZING: return ClampMinWindowSize(&default_sm_size,wParam,(RECT*)lParam); break; case WM_NOTIFY: { NMHDR nmh = *((NMHDR*)lParam); if (nmh.hwndFrom == _hTabCtrl) { if (nmh.code == TCN_SELCHANGE) { int index = TabCtrl_GetCurSel(_hTabCtrl); switch (index) { case 0: _currentState = STATE_MENU; break; case 1: _currentState = STATE_MACRO; break; case 2: _currentState = STATE_USER; break; case 3: _currentState = STATE_PLUGIN; break; case 4: _currentState = STATE_SCINTILLA; break; } populateShortCuts(); } } else if(nmh.hwndFrom==hlistview){ switch(nmh.code){ case NM_DBLCLK: return ::SendMessage(_hSelf, WM_COMMAND, IDC_SHORTCUT_MODIFY, LOWORD(lParam)); case NM_RCLICK: { POINT p; ::GetCursorPos(&p); if (!_rightClickMenu.isCreated()) { vector<MenuItemUnit> itemUnitArray; itemUnitArray.push_back(MenuItemUnit(IDC_SHORTCUT_MODIFY, TEXT("Modify"))); itemUnitArray.push_back(MenuItemUnit(IDC_SHORTCUT_DISABLE, TEXT("Disable"))); itemUnitArray.push_back(MenuItemUnit(0, 0)); itemUnitArray.push_back(MenuItemUnit(IDC_SHORTCUT_DELETE, TEXT("Delete"))); _rightClickMenu.create(_hSelf, itemUnitArray); } switch(_currentState) { case STATE_MACRO: case STATE_USER: { _rightClickMenu.enableItem(IDC_SHORTCUT_DELETE, true); break; } case STATE_MENU: case STATE_PLUGIN: case STATE_SCINTILLA: { _rightClickMenu.enableItem(IDC_SHORTCUT_DELETE, false); break; } } _rightClickMenu.display(p); return TRUE; } } } break; } case WM_COMMAND : { switch (LOWORD(wParam)) { case IDCANCEL : { ::EndDialog(_hSelf, -1); return TRUE; } case IDOK : { if(GetFocus()==hlistview) return ::SendMessage(_hSelf, WM_COMMAND, IDC_SHORTCUT_MODIFY, LOWORD(lParam)); else ::EndDialog(_hSelf, 0); return TRUE; } case IDC_SHORTCUT_FILTER2: case IDC_SHORTCUT_FILTER1: if(HIWORD(wParam)==EN_CHANGE) populateShortCuts(); break; case IDC_SHORTCUT_DISABLE: { int sel=0; sel=disable_selected(FALSE); if(sel!=0){ if(IDOK==MessageBox(_hSelf,TEXT("Ok to disable selected shortcuts?"),TEXT("Warning!"),MB_OKCANCEL|MB_SYSTEMMODAL)){ disable_selected(TRUE); populateShortCuts(); } } } break; case IDC_SHORTCUT_MODIFY : { NppParameters *nppParam = NppParameters::getInstance(); int index; int selected_row=getselectedrow(); if(selected_row<0) break; index=getitemindex(selected_row); switch(_currentState) { case STATE_MENU: { //Get CommandShortcut corresponding to index vector<CommandShortcut> & shortcuts = nppParam->getUserShortcuts(); CommandShortcut csc = shortcuts[index], prevcsc = shortcuts[index]; csc.init(_hInst, _hSelf); csc.set_shortcut_info(_currentState,index); if (csc.doDialog() != -1 && prevcsc != csc) { //shortcut was altered generic_string keys=csc.toString(); nppParam->addUserModifiedIndex(index); shortcuts[index] = csc; ListView_SetItemText(hlistview,selected_row,2,(LPWSTR)keys.c_str()); update_col_width(keys.c_str(),2); //Notify current Accelerator class to update everything nppParam->getAccelerator()->updateShortcuts(); TCHAR str[255]; if(0<check_in_use(_currentState,index,&csc.getKeyCombo(),nppParam,str,sizeof(str)/sizeof(TCHAR))) MessageBox(_hSelf,str,L"Duplicates found",MB_OK); } break; } case STATE_MACRO: { //Get MacroShortcut corresponding to index vector<MacroShortcut> & shortcuts = nppParam->getMacroList(); MacroShortcut msc = shortcuts[index], prevmsc = shortcuts[index]; msc.init(_hInst, _hSelf); msc.set_shortcut_info(_currentState,index); if (msc.doDialog() != -1 && prevmsc != msc) { //shortcut was altered generic_string name=msc.getName(); generic_string keys=msc.toString(); shortcuts[index] = msc; ListView_SetItemText(hlistview,selected_row,1,(LPWSTR)name.c_str()); ListView_SetItemText(hlistview,selected_row,2,(LPWSTR)keys.c_str()); update_col_width(keys.c_str(),2); //Notify current Accelerator class to update everything nppParam->getAccelerator()->updateShortcuts(); TCHAR str[255]; if(0<check_in_use(_currentState,index,&msc.getKeyCombo(),nppParam,str,sizeof(str)/sizeof(TCHAR))) MessageBox(_hSelf,str,L"Duplicates found",MB_OK); } break; } case STATE_USER: { //Get UserCommand corresponding to index vector<UserCommand> & shortcuts = nppParam->getUserCommandList(); UserCommand ucmd = shortcuts[index], prevucmd = shortcuts[index]; ucmd.init(_hInst, _hSelf); ucmd.set_shortcut_info(_currentState,index); prevucmd = ucmd; if (ucmd.doDialog() != -1 && prevucmd != ucmd) { //shortcut was altered generic_string name=ucmd.getName(); generic_string keys=ucmd.toString(); shortcuts[index] = ucmd; ListView_SetItemText(hlistview,selected_row,1,(LPWSTR)name.c_str()); ListView_SetItemText(hlistview,selected_row,2,(LPWSTR)keys.c_str()); update_col_width(name.c_str(),1); update_col_width(keys.c_str(),2); //Notify current Accelerator class to update everything nppParam->getAccelerator()->updateShortcuts(); TCHAR str[255]; if(0<check_in_use(_currentState,index,&ucmd.getKeyCombo(),nppParam,str,sizeof(str)/sizeof(TCHAR))) MessageBox(_hSelf,str,L"Duplicates found",MB_OK); } break; } case STATE_PLUGIN: { //Get PluginCmdShortcut corresponding to index vector<PluginCmdShortcut> & shortcuts = nppParam->getPluginCommandList(); if(shortcuts.empty()) break; PluginCmdShortcut pcsc = shortcuts[index], prevpcsc = shortcuts[index]; pcsc.init(_hInst, _hSelf); pcsc.set_shortcut_info(_currentState,index); prevpcsc = pcsc; if (pcsc.doDialog() != -1 && prevpcsc != pcsc) { //shortcut was altered nppParam->addPluginModifiedIndex(index); generic_string keys=pcsc.toString(); shortcuts[index] = pcsc; ListView_SetItemText(hlistview,selected_row,2,(LPWSTR)keys.c_str()); update_col_width(keys.c_str(),2); //Notify current Accelerator class to update everything nppParam->getAccelerator()->updateShortcuts(); TCHAR str[255]; if(0<check_in_use(_currentState,index,&pcsc.getKeyCombo(),nppParam,str,sizeof(str)/sizeof(TCHAR))) MessageBox(_hSelf,str,L"Duplicates found",MB_OK); unsigned long cmdID = pcsc.getID(); ShortcutKey shortcut; shortcut._isAlt = pcsc.getKeyCombo()._isAlt; shortcut._isCtrl = pcsc.getKeyCombo()._isCtrl; shortcut._isShift = pcsc.getKeyCombo()._isShift; shortcut._key = pcsc.getKeyCombo()._key; ::SendMessage(_hParent, NPPM_INTERNAL_PLUGINSHORTCUTMOTIFIED, cmdID, (LPARAM)&shortcut); } break; } case STATE_SCINTILLA: { //Get ScintillaKeyMap corresponding to index vector<ScintillaKeyMap> & shortcuts = nppParam->getScintillaKeyList(); ScintillaKeyMap skm = shortcuts[index], prevskm = shortcuts[index]; skm.init(_hInst, _hSelf); skm.set_shortcut_info(_currentState,index); if (skm.doDialog() != -1 && prevskm != skm) { //shortcut was altered nppParam->addScintillaModifiedIndex(index); shortcuts[index] = skm; int i,max; TCHAR str[40]={0}; max=skm.getSize(); for(i=0;i<max;i++){ generic_string keys=skm.toString(i); _sntprintf_s(str,sizeof(str)/sizeof(TCHAR),_TRUNCATE,L"%s%s%c",str,keys.c_str(),i<(max-1)?L';':L''); } ListView_SetItemText(hlistview,selected_row,2,(LPWSTR)str); update_col_width(str,2); if(max>0){ TCHAR str[255]; KeyCombo skmkc=skm.getKeyComboByIndex(0); if(0<check_in_use(_currentState,index,&skmkc,nppParam,str,sizeof(str)/sizeof(TCHAR))) MessageBox(_hSelf,str,L"Duplicates found",MB_OK); } //Notify current Accelerator class to update key nppParam->getScintillaAccelerator()->updateKeys(); } break; } } return TRUE; } case IDC_SHORTCUT_DELETE : { NppParameters *nppParam = NppParameters::getInstance(); int index,selected_row=getselectedrow(); TCHAR str[255]={0},msg[255]={0}; if(selected_row<0) break; index=getitemindex(selected_row); ListView_GetItemText(hlistview,selected_row,1,str,sizeof(str)/sizeof(TCHAR)); _sntprintf_s(msg,sizeof(msg)/sizeof(TCHAR),_TRUNCATE, TEXT("%s\r\n%s"), TEXT("Are you sure you want to delete this shortcut?"), str); if (::MessageBox(_hSelf, msg, TEXT("Are you sure?"), MB_OKCANCEL) == IDOK) { int shortcutIndex = index; DWORD cmdID = 0; // Menu data size_t posBase = 0; size_t nbElem = 0; HMENU hMenu = NULL; int modifCmd = IDM_SETTING_SHORTCUT_MAPPER_RUN; switch(_currentState) { case STATE_MENU: case STATE_PLUGIN: case STATE_SCINTILLA: { return FALSE; //this is bad } case STATE_MACRO: { vector<MacroShortcut> & theMacros = nppParam->getMacroList(); vector<MacroShortcut>::iterator it = theMacros.begin(); cmdID = theMacros[shortcutIndex].getID(); theMacros.erase(it + shortcutIndex); populateShortCuts(); // preparing to remove from menu posBase = 6; nbElem = theMacros.size(); hMenu = ::GetSubMenu((HMENU)::SendMessage(_hParent, NPPM_INTERNAL_GETMENU, 0, 0), MENUINDEX_MACRO); modifCmd = IDM_SETTING_SHORTCUT_MAPPER_MACRO; for (size_t i = shortcutIndex ; i < nbElem ; i++) //lower the IDs of the remaining items so there are no gaps { MacroShortcut ms = theMacros[i]; ms.setID(ms.getID() - 1); //shift all IDs theMacros[i] = ms; } break; } case STATE_USER: { vector<UserCommand> & theUserCmds = nppParam->getUserCommandList(); vector<UserCommand>::iterator it = theUserCmds.begin(); cmdID = theUserCmds[shortcutIndex].getID(); theUserCmds.erase(it + shortcutIndex); populateShortCuts(); // preparing to remove from menu posBase = 2; nbElem = theUserCmds.size(); hMenu = ::GetSubMenu((HMENU)::SendMessage(_hParent, NPPM_INTERNAL_GETMENU, 0, 0), MENUINDEX_RUN); modifCmd = IDM_SETTING_SHORTCUT_MAPPER_RUN; for (size_t i = shortcutIndex ; i < nbElem ; i++) //lower the IDs of the remaining items so there are no gaps { UserCommand uc = theUserCmds[i]; uc.setID(uc.getID() - 1); //shift all IDs theUserCmds[i] = uc; } break; } } // updateShortcuts() will update all menu item - the menu items will be shifted nppParam->getAccelerator()->updateShortcuts(); // All menu items are shifted up. So we delete the last item ::RemoveMenu(hMenu, posBase + nbElem, MF_BYPOSITION); if (nbElem == 0) { ::RemoveMenu(hMenu, modifCmd, MF_BYCOMMAND); //remove separator ::RemoveMenu(hMenu, posBase-1, MF_BYPOSITION); ::RemoveMenu(hMenu, posBase-1, MF_BYPOSITION); } } return TRUE; } } } default: return FALSE; } return FALSE; }
BOOL CALLBACK GoToLineDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_INITDIALOG : { ::SendDlgItemMessage(_hSelf, IDC_RADIO_GOTOLINE, BM_SETCHECK, TRUE, 0); goToCenter(); return TRUE; } case WM_COMMAND : { switch (wParam) { case IDCANCEL : // Close display(false); cleanLineEdit(); return TRUE; case IDOK : { int line = getLine(); if (line != -1) { display(false); cleanLineEdit(); if (_mode == go2line) { (*_ppEditView)->execute(SCI_ENSUREVISIBLE, line-1); (*_ppEditView)->execute(SCI_GOTOLINE, line-1); } else { int sci_line = (*_ppEditView)->execute(SCI_LINEFROMPOSITION, line); (*_ppEditView)->execute(SCI_ENSUREVISIBLE, sci_line); (*_ppEditView)->execute(SCI_GOTOPOS, line); } } (*_ppEditView)->getFocus(); return TRUE; } case IDC_RADIO_GOTOLINE : case IDC_RADIO_GOTOOFFSET : { bool isLine, isOffset; if (wParam == IDC_RADIO_GOTOLINE) { isLine = true; isOffset = false; _mode = go2line; } else { isLine = false; isOffset = true; _mode = go2offsset; } ::SendDlgItemMessage(_hSelf, IDC_RADIO_GOTOLINE, BM_SETCHECK, isLine, 0); ::SendDlgItemMessage(_hSelf, IDC_RADIO_GOTOOFFSET, BM_SETCHECK, isOffset, 0); updateLinesNumbers(); return TRUE; } default : { switch (HIWORD(wParam)) { case EN_SETFOCUS : case BN_SETFOCUS : updateLinesNumbers(); return TRUE; default : return TRUE; } break; } } } default : return FALSE; } return FALSE; }
BOOL CALLBACK OptionDlg::run_dlgProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { switch (Message) { case WM_INITDIALOG: { goToCenter(); for (int i = 0; i < SFMT_MAX; i++) { ::SendDlgItemMessage(_hSelf, IDC_COMBO_SIZE_FORMAT, CB_ADDSTRING, 0, (LPARAM)pszSizeFmt[i]); } for (i = 0; i < DFMT_MAX; i++) { ::SendDlgItemMessage(_hSelf, IDC_COMBO_DATE_FORMAT, CB_ADDSTRING, 0, (LPARAM)pszDateFmt[i]); } ::SendDlgItemMessage(_hSelf, IDC_EDIT_TIMEOUT, EM_LIMITTEXT, 5, 0); SetParams(); LongUpdate(); /* change language */ NLChangeDialog(_hInst, _nppData._nppHandle, _hSelf, _T("Options")); NLChangeCombo(_hInst, _nppData._nppHandle, ::GetDlgItem(_hSelf, IDC_COMBO_SIZE_FORMAT), _T("ComboSize"), SFMT_MAX); NLChangeCombo(_hInst, _nppData._nppHandle, ::GetDlgItem(_hSelf, IDC_COMBO_DATE_FORMAT), _T("ComboDate"), DFMT_MAX); break; } case WM_COMMAND : { switch (LOWORD(wParam)) { case IDC_CHECK_LONG: { LongUpdate(); return TRUE; } case IDC_BTN_OPENDLG: { // This code was copied and slightly modifed from: // http://www.bcbdev.com/faqs/faq62.htm // SHBrowseForFolder returns a PIDL. The memory for the PIDL is // allocated by the shell. Eventually, we will need to free this // memory, so we need to get a pointer to the shell malloc COM // object that will free the PIDL later on. LPMALLOC pShellMalloc = 0; if (::SHGetMalloc(&pShellMalloc) == NO_ERROR) { // If we were able to get the shell malloc object, // then proceed by initializing the BROWSEINFO stuct BROWSEINFO info; ZeroMemory(&info, sizeof(info)); info.hwndOwner = _hParent; info.pidlRoot = NULL; info.pszDisplayName = (LPTSTR)new TCHAR[MAX_PATH]; info.lpszTitle = _T("Select a folder:"); info.ulFlags = BIF_RETURNONLYFSDIRS; info.lpfn = BrowseCallbackProc; info.lParam = (LPARAM)_pProp->nppExecProp.szScriptPath; // Execute the browsing dialog. LPITEMIDLIST pidl = ::SHBrowseForFolder(&info); // pidl will be null if they cancel the browse dialog. // pidl will be not null when they select a folder. if (pidl) { // Try to convert the pidl to a display string. // Return is true if success. if (::SHGetPathFromIDList(pidl, _pProp->nppExecProp.szScriptPath)) { // Set edit control to the directory path. ::SetWindowText(::GetDlgItem(_hSelf, IDC_EDIT_SCRIPTPATH), _pProp->nppExecProp.szScriptPath); } pShellMalloc->Free(pidl); } pShellMalloc->Release(); delete [] info.pszDisplayName; } break; } case IDC_BTN_EXAMPLE_FILE: { #ifdef UNICODE CHAR szBOM[] = {0xFF, 0xFE}; #endif DWORD dwByteWritten = 0; TCHAR szExampleScriptPath[MAX_PATH]; if (_pProp->nppExecProp.szScriptPath[0] == '.') { /* module path of notepad */ GetModuleFileName(_hInst, szExampleScriptPath, sizeof(szExampleScriptPath)); PathRemoveFileSpec(szExampleScriptPath); PathAppend(szExampleScriptPath, _pProp->nppExecProp.szScriptPath); } else { _tcscpy(szExampleScriptPath, _pProp->nppExecProp.szScriptPath); } ::PathAppend(szExampleScriptPath, _T("Goto path.exec")); HANDLE hFile = ::CreateFile(szExampleScriptPath, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); #ifdef UNICODE ::WriteFile(hFile, szBOM, sizeof(szBOM), &dwByteWritten, NULL); #endif for (INT i = 0; i < MAX_NPP_EXAMPLE_LINE; i++) ::WriteFile(hFile, szExampleScript[i], _tcslen(szExampleScript[i]) * sizeof(TCHAR), &dwByteWritten, NULL); ::CloseHandle(hFile); break; } case IDCANCEL: ::EndDialog(_hSelf, IDCANCEL); return TRUE; case IDOK: { if (GetParams() == FALSE) { return FALSE; } ::EndDialog(_hSelf, IDOK); return TRUE; } default: return FALSE; } break; } default: break; } return FALSE; }
BOOL CALLBACK Shortcut::run_dlgProc(UINT Message, WPARAM wParam, LPARAM) { switch (Message) { case WM_INITDIALOG : { ::SetDlgItemText(_hSelf, IDC_NAME_EDIT, getMenuName()); //display the menu name, with ampersands if (!_canModifyName) ::SendDlgItemMessage(_hSelf, IDC_NAME_EDIT, EM_SETREADONLY, TRUE, 0); int textlen = (int)::SendDlgItemMessage(_hSelf, IDC_NAME_EDIT, WM_GETTEXTLENGTH, 0, 0); ::SendDlgItemMessage(_hSelf, IDC_CTRL_CHECK, BM_SETCHECK, _keyCombo._isCtrl?BST_CHECKED:BST_UNCHECKED, 0); ::SendDlgItemMessage(_hSelf, IDC_ALT_CHECK, BM_SETCHECK, _keyCombo._isAlt?BST_CHECKED:BST_UNCHECKED, 0); ::SendDlgItemMessage(_hSelf, IDC_SHIFT_CHECK, BM_SETCHECK, _keyCombo._isShift?BST_CHECKED:BST_UNCHECKED, 0); ::EnableWindow(::GetDlgItem(_hSelf, IDOK), isValid() && (textlen > 0 || !_canModifyName)); int iFound = -1; for (size_t i = 0 ; i < nrKeys ; i++) { ::SendDlgItemMessage(_hSelf, IDC_KEY_COMBO, CB_ADDSTRING, 0, (LPARAM)namedKeyArray[i].name); if (_keyCombo._key == namedKeyArray[i].id) iFound = i; } if (iFound != -1) ::SendDlgItemMessage(_hSelf, IDC_KEY_COMBO, CB_SETCURSEL, iFound, 0); ::ShowWindow(::GetDlgItem(_hSelf, IDC_WARNING_STATIC), isEnabled()?SW_HIDE:SW_SHOW); goToCenter(); return TRUE; } case WM_COMMAND : { int textlen = (int)::SendDlgItemMessage(_hSelf, IDC_NAME_EDIT, WM_GETTEXTLENGTH, 0, 0); switch (wParam) { case IDC_CTRL_CHECK : _keyCombo._isCtrl = BST_CHECKED == ::SendDlgItemMessage(_hSelf, wParam, BM_GETCHECK, 0, 0); ::EnableWindow(::GetDlgItem(_hSelf, IDOK), isValid() && (textlen > 0 || !_canModifyName)); return TRUE; case IDC_ALT_CHECK : _keyCombo._isAlt = BST_CHECKED == ::SendDlgItemMessage(_hSelf, wParam, BM_GETCHECK, 0, 0); ::EnableWindow(::GetDlgItem(_hSelf, IDOK), isValid() && (textlen > 0 || !_canModifyName)); return TRUE; case IDC_SHIFT_CHECK : _keyCombo._isShift = BST_CHECKED == ::SendDlgItemMessage(_hSelf, wParam, BM_GETCHECK, 0, 0); return TRUE; case IDOK : if (!isEnabled()) { _keyCombo._isCtrl = _keyCombo._isAlt = _keyCombo._isShift = false; } if (_canModifyName) { TCHAR editName[nameLenMax]; ::SendDlgItemMessage(_hSelf, IDC_NAME_EDIT, WM_GETTEXT, nameLenMax, (LPARAM)editName); setName(editName); } ::EndDialog(_hSelf, 0); return TRUE; case IDCANCEL : ::EndDialog(_hSelf, -1); return TRUE; default: if (HIWORD(wParam) == EN_CHANGE) { if (LOWORD(wParam) == IDC_NAME_EDIT) { ::EnableWindow(::GetDlgItem(_hSelf, IDOK), isValid() && (textlen > 0 || !_canModifyName)); return TRUE; } } else if (HIWORD(wParam) == CBN_SELCHANGE) { if (LOWORD(wParam) == IDC_KEY_COMBO) { int i = ::SendDlgItemMessage(_hSelf, LOWORD(wParam), CB_GETCURSEL, 0, 0); _keyCombo._key = namedKeyArray[i].id; ::EnableWindow(::GetDlgItem(_hSelf, IDOK), isValid() && (textlen > 0 || !_canModifyName)); ::ShowWindow(::GetDlgItem(_hSelf, IDC_WARNING_STATIC), isEnabled()?SW_HIDE:SW_SHOW); return TRUE; } } return FALSE; } } default : return FALSE; } }
BOOL CALLBACK ScintillaKeyMap::run_dlgProc(UINT Message, WPARAM wParam, LPARAM) { switch (Message) { case WM_INITDIALOG : { ::SetDlgItemText(_hSelf, IDC_NAME_EDIT, _name); _keyCombo = _keyCombos[0]; for (size_t i = 0 ; i < nrKeys ; i++) { ::SendDlgItemMessage(_hSelf, IDC_KEY_COMBO, CB_ADDSTRING, 0, (LPARAM)namedKeyArray[i].name); } for(size_t i = 0; i < size; i++) { ::SendDlgItemMessage(_hSelf, IDC_LIST_KEYS, LB_ADDSTRING, 0, (LPARAM)toString(i).c_str()); } ::SendDlgItemMessage(_hSelf, IDC_LIST_KEYS, LB_SETCURSEL, 0, 0); showCurrentSettings(); validateDialog(); goToCenter(); return TRUE; } case WM_COMMAND : { switch (wParam) { case IDC_CTRL_CHECK : _keyCombo._isCtrl = BST_CHECKED == ::SendDlgItemMessage(_hSelf, wParam, BM_GETCHECK, 0, 0); //applyToCurrentIndex(); validateDialog(); return TRUE; case IDC_ALT_CHECK : _keyCombo._isAlt = BST_CHECKED == ::SendDlgItemMessage(_hSelf, wParam, BM_GETCHECK, 0, 0); //applyToCurrentIndex(); validateDialog(); return TRUE; case IDC_SHIFT_CHECK : _keyCombo._isShift = BST_CHECKED == ::SendDlgItemMessage(_hSelf, wParam, BM_GETCHECK, 0, 0); //applyToCurrentIndex(); return TRUE; case IDOK : //Cleanup _keyCombo._key = 0; _keyCombo._isCtrl = _keyCombo._isAlt = _keyCombo._isShift = false; ::EndDialog(_hSelf, 0); return TRUE; case IDCANCEL : ::EndDialog(_hSelf, -1); return TRUE; case IDC_BUTTON_ADD: { int oldsize = size; int res = addKeyCombo(_keyCombo); if (res > -1) { if (res == oldsize) { ::SendDlgItemMessage(_hSelf, IDC_LIST_KEYS, LB_INSERTSTRING, (WPARAM)-1, (LPARAM)toString(res).c_str()); }else { //update current generic_string, can happen if it was disabled updateListItem(res); } ::SendDlgItemMessage(_hSelf, IDC_LIST_KEYS, LB_SETCURSEL, res, 0); } showCurrentSettings(); validateDialog(); return TRUE; } case IDC_BUTTON_RMVE: { if (size == 1) //cannot delete last shortcut return TRUE; int i = ::SendDlgItemMessage(_hSelf, IDC_LIST_KEYS, LB_GETCURSEL, 0, 0); removeKeyComboByIndex(i); ::SendDlgItemMessage(_hSelf, IDC_LIST_KEYS, LB_DELETESTRING, i, 0); if (i == (int)size) i = size - 1; ::SendDlgItemMessage(_hSelf, IDC_LIST_KEYS, LB_SETCURSEL, i, 0); showCurrentSettings(); validateDialog(); return TRUE; } case IDC_BUTTON_APPLY: { applyToCurrentIndex(); validateDialog(); return TRUE; } default: if (HIWORD(wParam) == CBN_SELCHANGE || HIWORD(wParam) == LBN_SELCHANGE) { switch(LOWORD(wParam)) { case IDC_KEY_COMBO: { int i = ::SendDlgItemMessage(_hSelf, IDC_KEY_COMBO, CB_GETCURSEL, 0, 0); _keyCombo._key = namedKeyArray[i].id; //applyToCurrentIndex(); validateDialog(); return TRUE; } case IDC_LIST_KEYS: { showCurrentSettings(); return TRUE; } } } return FALSE; } } default : return FALSE; } //return FALSE; }
BOOL CALLBACK WordStyleDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM lParam) { switch (Message) { case WM_INITDIALOG : { NppParameters *nppParamInst = NppParameters::getInstance(); _hCheckBold = ::GetDlgItem(_hSelf, IDC_BOLD_CHECK); _hCheckItalic = ::GetDlgItem(_hSelf, IDC_ITALIC_CHECK); _hCheckUnderline = ::GetDlgItem(_hSelf, IDC_UNDERLINE_CHECK); _hFontNameCombo = ::GetDlgItem(_hSelf, IDC_FONT_COMBO); _hFontSizeCombo = ::GetDlgItem(_hSelf, IDC_FONTSIZE_COMBO); _hSwitch2ThemeCombo = ::GetDlgItem(_hSelf, IDC_SWITCH2THEME_COMBO); _hFgColourStaticText = ::GetDlgItem(_hSelf, IDC_FG_STATIC); _hBgColourStaticText = ::GetDlgItem(_hSelf, IDC_BG_STATIC); _hFontNameStaticText = ::GetDlgItem(_hSelf, IDC_FONTNAME_STATIC); _hFontSizeStaticText = ::GetDlgItem(_hSelf, IDC_FONTSIZE_STATIC); _hStyleInfoStaticText = ::GetDlgItem(_hSelf, IDC_STYLEDESCRIPTION_STATIC); _colourHooker->setColour(RGB(0xFF, 0x00, 0x00)); _colourHooker->hookOn(_hStyleInfoStaticText); _currentThemeIndex = -1; int defaultThemeIndex = 0; ThemeSwitcher & themeSwitcher = nppParamInst->getThemeSwitcher(); for(size_t i = 0 ; i < themeSwitcher.size() ; i++) { std::pair<generic_string, generic_string> & themeInfo = themeSwitcher.getElementFromIndex(i); int j = ::SendMessage(_hSwitch2ThemeCombo, CB_ADDSTRING, 0, (LPARAM)themeInfo.first.c_str()); if (! themeInfo.second.compare( nppParamInst->getNppGUI()._themeName ) ) { _currentThemeIndex = j; } if (! themeInfo.first.compare(TEXT("Default")) ) { defaultThemeIndex = j; } } if (_currentThemeIndex == -1) { _currentThemeIndex = defaultThemeIndex; } ::SendMessage(_hSwitch2ThemeCombo, CB_SETCURSEL, _currentThemeIndex, 0); for(int i = 0 ; i < sizeof(fontSizeStrs)/(3*sizeof(TCHAR)) ; i++) ::SendMessage(_hFontSizeCombo, CB_ADDSTRING, 0, (LPARAM)fontSizeStrs[i]); const std::vector<generic_string> & fontlist = (NppParameters::getInstance())->getFontList(); for (size_t i = 0 ; i < fontlist.size() ; i++) { int j = ::SendMessage(_hFontNameCombo, CB_ADDSTRING, 0, (LPARAM)fontlist[i].c_str()); ::SendMessage(_hFontNameCombo, CB_SETITEMDATA, j, (LPARAM)fontlist[i].c_str()); } _pFgColour = new ColourPicker; _pBgColour = new ColourPicker; _pFgColour->init(_hInst, _hSelf); _pBgColour->init(_hInst, _hSelf); POINT p1, p2; alignWith(_hFgColourStaticText, _pFgColour->getHSelf(), ALIGNPOS_RIGHT, p1); alignWith(_hBgColourStaticText, _pBgColour->getHSelf(), ALIGNPOS_RIGHT, p2); p1.x = p2.x = ((p1.x > p2.x)?p1.x:p2.x) + 10; p1.y -= 4; p2.y -= 4; ::MoveWindow((HWND)_pFgColour->getHSelf(), p1.x, p1.y, 25, 25, TRUE); ::MoveWindow((HWND)_pBgColour->getHSelf(), p2.x, p2.y, 25, 25, TRUE); _pFgColour->display(); _pBgColour->display(); ::EnableWindow(::GetDlgItem(_hSelf, IDOK), _isDirty); ::EnableWindow(::GetDlgItem(_hSelf, IDC_SAVECLOSE_BUTTON), FALSE/*!_isSync*/); ETDTProc enableDlgTheme = (ETDTProc)nppParamInst->getEnableThemeDlgTexture(); if (enableDlgTheme) { enableDlgTheme(_hSelf, ETDT_ENABLETAB); redraw(); } updateGlobalOverrideCtrls(); loadLangListFromNppParam(); setVisualFromStyleList(); goToCenter(); return TRUE; } case WM_DESTROY: { if (_pFgColour) { _pFgColour->destroy(); delete _pFgColour; _pFgColour = NULL; } if (_pBgColour) { _pBgColour->destroy(); delete _pBgColour; _pBgColour = NULL; } return TRUE; } case WM_HSCROLL : { if ((HWND)lParam == ::GetDlgItem(_hSelf, IDC_SC_PERCENTAGE_SLIDER)) { int percent = ::SendDlgItemMessage(_hSelf, IDC_SC_PERCENTAGE_SLIDER, TBM_GETPOS, 0, 0); (NppParameters::getInstance())->SetTransparent(_hSelf, percent); } return TRUE; } case WM_COMMAND : { if (HIWORD(wParam) == EN_CHANGE) { int editID = LOWORD(wParam); if (editID == IDC_USER_KEYWORDS_EDIT) { updateUserKeywords(); notifyDataModified(); apply(); } else if (editID == IDC_USER_EXT_EDIT) { updateExtension(); notifyDataModified(); apply(); } } else { switch (wParam) { case IDC_BOLD_CHECK : updateFontStyleStatus(BOLD_STATUS); notifyDataModified(); apply(); break; case IDC_ITALIC_CHECK : updateFontStyleStatus(ITALIC_STATUS); notifyDataModified(); apply(); break; case IDC_UNDERLINE_CHECK : updateFontStyleStatus(UNDERLINE_STATUS); notifyDataModified(); apply(); break; case IDCANCEL : //::MessageBox(NULL, TEXT("cancel"), TEXT(""), MB_OK); if (_isDirty) { NppParameters *nppParamInst = NppParameters::getInstance(); if (_restoreInvalid) { generic_string str( nppParamInst->getNppGUI()._themeName ); nppParamInst->reloadStylers( &str[0] ); } LexerStylerArray & lsArray = nppParamInst->getLStylerArray(); StyleArray & globalStyles = nppParamInst->getGlobalStylers(); if (_restoreInvalid) { _lsArray = _styles2restored = lsArray; _globalStyles = _gstyles2restored = globalStyles; } else { globalStyles = _globalStyles = _gstyles2restored; lsArray = _lsArray = _styles2restored; } restoreGlobalOverrideValues(); _restoreInvalid = false; _isDirty = false; _isThemeDirty = false; setVisualFromStyleList(); //(nppParamInst->getNppGUI())._themeName ::SendMessage(_hSwitch2ThemeCombo, CB_SETCURSEL, _currentThemeIndex, 0); ::SendMessage(_hParent, WM_UPDATESCINTILLAS, 0, 0); } ::EnableWindow(::GetDlgItem(_hSelf, IDC_SAVECLOSE_BUTTON), FALSE/*!_isSync*/); display(false); return TRUE; case IDC_SAVECLOSE_BUTTON : { if (_isDirty) { LexerStylerArray & lsa = (NppParameters::getInstance())->getLStylerArray(); StyleArray & globalStyles = (NppParameters::getInstance())->getGlobalStylers(); _lsArray = lsa; _globalStyles = globalStyles; updateThemeName(_themeName); _restoreInvalid = false; _currentThemeIndex = ::SendMessage(_hSwitch2ThemeCombo, CB_GETCURSEL, 0, 0); ::EnableWindow(::GetDlgItem(_hSelf, IDOK), FALSE); _isDirty = false; } _isThemeDirty = false; (NppParameters::getInstance())->writeStyles(_lsArray, _globalStyles); ::EnableWindow(::GetDlgItem(_hSelf, IDC_SAVECLOSE_BUTTON), FALSE); //_isSync = true; display(false); ::SendMessage(_hParent, WM_UPDATESCINTILLAS, 0, 0); return TRUE; } case IDC_SC_TRANSPARENT_CHECK : { bool isChecked = (BST_CHECKED == ::SendDlgItemMessage(_hSelf, IDC_SC_TRANSPARENT_CHECK, BM_GETCHECK, 0, 0)); if (isChecked) { int percent = ::SendDlgItemMessage(_hSelf, IDC_SC_PERCENTAGE_SLIDER, TBM_GETPOS, 0, 0); (NppParameters::getInstance())->SetTransparent(_hSelf, percent); } else (NppParameters::getInstance())->removeTransparent(_hSelf); ::EnableWindow(::GetDlgItem(_hSelf, IDC_SC_PERCENTAGE_SLIDER), isChecked); return TRUE; } case IDC_GLOBAL_FG_CHECK : { GlobalOverride & glo = (NppParameters::getInstance())->getGlobalOverrideStyle(); glo.enableFg = (BST_CHECKED == ::SendDlgItemMessage(_hSelf, wParam, BM_GETCHECK, 0, 0)); notifyDataModified(); apply(); return TRUE; } case IDC_GLOBAL_BG_CHECK: { GlobalOverride & glo = (NppParameters::getInstance())->getGlobalOverrideStyle(); glo.enableBg = (BST_CHECKED == ::SendDlgItemMessage(_hSelf, wParam, BM_GETCHECK, 0, 0)); notifyDataModified(); apply(); return TRUE; } case IDC_GLOBAL_FONT_CHECK : { GlobalOverride & glo = (NppParameters::getInstance())->getGlobalOverrideStyle(); glo.enableFont = (BST_CHECKED == ::SendDlgItemMessage(_hSelf, wParam, BM_GETCHECK, 0, 0)); notifyDataModified(); apply(); return TRUE; } case IDC_GLOBAL_FONTSIZE_CHECK : { GlobalOverride & glo = (NppParameters::getInstance())->getGlobalOverrideStyle(); glo.enableFontSize = (BST_CHECKED == ::SendDlgItemMessage(_hSelf, wParam, BM_GETCHECK, 0, 0)); notifyDataModified(); apply(); return TRUE; } case IDC_GLOBAL_BOLD_CHECK : { GlobalOverride & glo = (NppParameters::getInstance())->getGlobalOverrideStyle(); glo.enableBold = (BST_CHECKED == ::SendDlgItemMessage(_hSelf, wParam, BM_GETCHECK, 0, 0)); notifyDataModified(); apply(); return TRUE; } case IDC_GLOBAL_ITALIC_CHECK : { GlobalOverride & glo = (NppParameters::getInstance())->getGlobalOverrideStyle(); glo.enableItalic = (BST_CHECKED == ::SendDlgItemMessage(_hSelf, wParam, BM_GETCHECK, 0, 0)); notifyDataModified(); apply(); return TRUE; } case IDC_GLOBAL_UNDERLINE_CHECK : { GlobalOverride & glo = (NppParameters::getInstance())->getGlobalOverrideStyle(); glo.enableUnderLine = (BST_CHECKED == ::SendDlgItemMessage(_hSelf, wParam, BM_GETCHECK, 0, 0)); notifyDataModified(); apply(); return TRUE; } default: { switch (HIWORD(wParam)) { case CBN_SELCHANGE : // == case LBN_SELCHANGE : { switch (LOWORD(wParam)) { case IDC_FONT_COMBO : updateFontName(); notifyDataModified(); apply(); break; case IDC_FONTSIZE_COMBO : updateFontSize(); notifyDataModified(); apply(); break; case IDC_LANGUAGES_LIST : { int i = ::SendDlgItemMessage(_hSelf, LOWORD(wParam), LB_GETCURSEL, 0, 0); if (i != LB_ERR) { bool prevThemeState = _isThemeDirty; setStyleListFromLexer(i); _isThemeDirty = prevThemeState; } break; } case IDC_STYLES_LIST : setVisualFromStyleList(); break; case IDC_SWITCH2THEME_COMBO : switchToTheme(); setVisualFromStyleList(); notifyDataModified(); _isThemeDirty = false; apply(); break; NO_DEFAULT_CASE; } return TRUE; } case CPN_COLOURPICKED: { assert(_pFgColour); assert(_pBgColour); if ((HWND)lParam == _pFgColour->getHSelf()) { updateColour(C_FOREGROUND); notifyDataModified(); int tabColourIndex; if ((tabColourIndex = whichTabColourIndex()) != -1) { //::SendMessage(_hParent, WM_UPDATETABBARCOLOUR, tabColourIndex, _pFgColour->getColour()); TabBarPlus::setColour(_pFgColour->getColour(), (TabBarPlus::tabColourIndex)tabColourIndex); return TRUE; } apply(); return TRUE; } else if ((HWND)lParam == _pBgColour->getHSelf()) { updateColour(C_BACKGROUND); notifyDataModified(); int tabColourIndex; if ((tabColourIndex = whichTabColourIndex()) != -1) { tabColourIndex = (int)tabColourIndex == TabBarPlus::inactiveText? TabBarPlus::inactiveBg : tabColourIndex; TabBarPlus::setColour(_pBgColour->getColour(), (TabBarPlus::tabColourIndex)tabColourIndex); return TRUE; } apply(); return TRUE; } else return FALSE; } default : { return FALSE; } } } } } } break; default : break; } return FALSE; }
INT_PTR CALLBACK ColumnEditorDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM) { switch (message) { case WM_INITDIALOG : { switchTo(activeText); ::SendDlgItemMessage(_hSelf, IDC_COL_DEC_RADIO, BM_SETCHECK, TRUE, 0); goToCenter(); NppParameters *pNppParam = NppParameters::getInstance(); ETDTProc enableDlgTheme = (ETDTProc)pNppParam->getEnableThemeDlgTexture(); if (enableDlgTheme) { enableDlgTheme(_hSelf, ETDT_ENABLETAB); redraw(); } return TRUE; } case WM_COMMAND : { switch (wParam) { case IDCANCEL : // Close display(false); return TRUE; case IDOK : { (*_ppEditView)->execute(SCI_BEGINUNDOACTION); const int stringSize = 1024; TCHAR str[stringSize]; bool isTextMode = (BST_CHECKED == ::SendDlgItemMessage(_hSelf, IDC_COL_TEXT_RADIO, BM_GETCHECK, 0, 0)); if (isTextMode) { ::SendDlgItemMessage(_hSelf, IDC_COL_TEXT_EDIT, WM_GETTEXT, stringSize, (LPARAM)str); display(false); if ((*_ppEditView)->execute(SCI_SELECTIONISRECTANGLE) || (*_ppEditView)->execute(SCI_GETSELECTIONS) > 1) { ColumnModeInfos colInfos = (*_ppEditView)->getColumnModeSelectInfo(); std::sort(colInfos.begin(), colInfos.end(), SortInPositionOrder()); (*_ppEditView)->columnReplace(colInfos, str); std::sort(colInfos.begin(), colInfos.end(), SortInSelectOrder()); (*_ppEditView)->setMultiSelections(colInfos); } else { int cursorPos = (*_ppEditView)->execute(SCI_GETCURRENTPOS); int cursorCol = (*_ppEditView)->execute(SCI_GETCOLUMN, cursorPos); int cursorLine = (*_ppEditView)->execute(SCI_LINEFROMPOSITION, cursorPos); int endPos = (*_ppEditView)->execute(SCI_GETLENGTH); int endLine = (*_ppEditView)->execute(SCI_LINEFROMPOSITION, endPos); int lineAllocatedLen = 1024; TCHAR *line = new TCHAR[lineAllocatedLen]; for (int i = cursorLine ; i <= endLine ; ++i) { int lineBegin = (*_ppEditView)->execute(SCI_POSITIONFROMLINE, i); int lineEnd = (*_ppEditView)->execute(SCI_GETLINEENDPOSITION, i); int lineEndCol = (*_ppEditView)->execute(SCI_GETCOLUMN, lineEnd); int lineLen = lineEnd - lineBegin + 1; if (lineLen > lineAllocatedLen) { delete [] line; line = new TCHAR[lineLen]; } (*_ppEditView)->getGenericText(line, lineLen, lineBegin, lineEnd); generic_string s2r(line); if (lineEndCol < cursorCol) { generic_string s_space(cursorCol - lineEndCol, ' '); s2r.append(s_space); s2r.append(str); } else { int posAbs2Start = (*_ppEditView)->execute(SCI_FINDCOLUMN, i, cursorCol); int posRelative2Start = posAbs2Start - lineBegin; s2r.insert(posRelative2Start, str); } (*_ppEditView)->replaceTarget(s2r.c_str(), lineBegin, lineEnd); } delete [] line; } } else { int initialNumber = ::GetDlgItemInt(_hSelf, IDC_COL_INITNUM_EDIT, NULL, TRUE); int increaseNumber = ::GetDlgItemInt(_hSelf, IDC_COL_INCREASENUM_EDIT, NULL, TRUE); int repeat = ::GetDlgItemInt(_hSelf, IDC_COL_REPEATNUM_EDIT, NULL, TRUE); if (repeat == 0) { repeat = 1; // Without this we might get an infinite loop while calculating the set "numbers" below. } UCHAR format = getFormat(); display(false); if ((*_ppEditView)->execute(SCI_SELECTIONISRECTANGLE) || (*_ppEditView)->execute(SCI_GETSELECTIONS) > 1) { ColumnModeInfos colInfos = (*_ppEditView)->getColumnModeSelectInfo(); std::sort(colInfos.begin(), colInfos.end(), SortInPositionOrder()); (*_ppEditView)->columnReplace(colInfos, initialNumber, increaseNumber, repeat, format); std::sort(colInfos.begin(), colInfos.end(), SortInSelectOrder()); (*_ppEditView)->setMultiSelections(colInfos); } else { int cursorPos = (*_ppEditView)->execute(SCI_GETCURRENTPOS); int cursorCol = (*_ppEditView)->execute(SCI_GETCOLUMN, cursorPos); int cursorLine = (*_ppEditView)->execute(SCI_LINEFROMPOSITION, cursorPos); int endPos = (*_ppEditView)->execute(SCI_GETLENGTH); int endLine = (*_ppEditView)->execute(SCI_LINEFROMPOSITION, endPos); // Compute the numbers to be placed at each column. std::vector<int> numbers; { int curNumber = initialNumber; const unsigned int kiMaxSize = 1 + (unsigned int)endLine - (unsigned int)cursorLine; while (numbers.size() < kiMaxSize) { for (int i = 0; i < repeat; i++) { numbers.push_back(curNumber); if (numbers.size() >= kiMaxSize) { break; } } curNumber += increaseNumber; } } assert(numbers.size() > 0); int lineAllocatedLen = 1024; TCHAR *line = new TCHAR[lineAllocatedLen]; UCHAR f = format & MASK_FORMAT; bool isZeroLeading = (MASK_ZERO_LEADING & format) != 0; int base = 10; if (f == BASE_16) base = 16; else if (f == BASE_08) base = 8; else if (f == BASE_02) base = 2; int endNumber = *numbers.rbegin(); int nbEnd = getNbDigits(endNumber, base); int nbInit = getNbDigits(initialNumber, base); int nb = max(nbInit, nbEnd); for (int i = cursorLine ; i <= endLine ; ++i) { int lineBegin = (*_ppEditView)->execute(SCI_POSITIONFROMLINE, i); int lineEnd = (*_ppEditView)->execute(SCI_GETLINEENDPOSITION, i); int lineEndCol = (*_ppEditView)->execute(SCI_GETCOLUMN, lineEnd); int lineLen = lineEnd - lineBegin + 1; if (lineLen > lineAllocatedLen) { delete [] line; line = new TCHAR[lineLen]; } (*_ppEditView)->getGenericText(line, lineLen, lineBegin, lineEnd); generic_string s2r(line); // // Calcule generic_string // int2str(str, stringSize, numbers.at(i - cursorLine), base, nb, isZeroLeading); if (lineEndCol < cursorCol) { generic_string s_space(cursorCol - lineEndCol, ' '); s2r.append(s_space); s2r.append(str); } else { int posAbs2Start = (*_ppEditView)->execute(SCI_FINDCOLUMN, i, cursorCol); int posRelative2Start = posAbs2Start - lineBegin; s2r.insert(posRelative2Start, str); } (*_ppEditView)->replaceTarget(s2r.c_str(), lineBegin, lineEnd); } delete [] line; } } (*_ppEditView)->execute(SCI_ENDUNDOACTION); (*_ppEditView)->getFocus(); return TRUE; } case IDC_COL_TEXT_RADIO : case IDC_COL_NUM_RADIO : { switchTo((wParam == IDC_COL_TEXT_RADIO)? activeText : activeNumeric); return TRUE; } default : { switch (HIWORD(wParam)) { case EN_SETFOCUS : case BN_SETFOCUS : //updateLinesNumbers(); return TRUE; default : return TRUE; } break; } } } default : return FALSE; } //return FALSE; }
BOOL CALLBACK CompareDlg::run_dlgProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { switch (Message) { case WM_INITDIALOG: { goToCenter(); _pHexEdit1->getWindowRect(_rcEdit1); _pHexEdit2->getWindowRect(_rcEdit2); _isUpDown = (_rcEdit1.left == _rcEdit2.left ? TRUE : FALSE); if (_isUpDown == FALSE) { /* hide the unneccesary elements */ ::ShowWindow(::GetDlgItem(_hSelf, IDC_STATIC_COMPARE_TB), SW_HIDE); ::ShowWindow(::GetDlgItem(_hSelf, IDC_BUTTON_TOP), SW_HIDE); ::ShowWindow(::GetDlgItem(_hSelf, IDC_BUTTON_BOTTOM), SW_HIDE); /* focus the correct button */ if (_rcEdit1.left < _rcEdit2.left) { if (_currentSC == MAIN_VIEW) { ::SetFocus(::GetDlgItem(_hSelf, IDC_BUTTON_LEFT)); } else { ::SetFocus(::GetDlgItem(_hSelf, IDC_BUTTON_RIGHT)); } } else { if (_currentSC == SUB_VIEW) { ::SetFocus(::GetDlgItem(_hSelf, IDC_BUTTON_LEFT)); } else { ::SetFocus(::GetDlgItem(_hSelf, IDC_BUTTON_RIGHT)); } } } else { /* hide the unneccesary elements */ ::ShowWindow(::GetDlgItem(_hSelf, IDC_STATIC_COMPARE_LR), SW_HIDE); ::ShowWindow(::GetDlgItem(_hSelf, IDC_BUTTON_LEFT), SW_HIDE); ::ShowWindow(::GetDlgItem(_hSelf, IDC_BUTTON_RIGHT), SW_HIDE); /* focus the correct button */ if (_rcEdit1.top < _rcEdit2.top) { if (_currentSC == MAIN_VIEW) { ::SetFocus(::GetDlgItem(_hSelf, IDC_BUTTON_TOP)); } else { ::SetFocus(::GetDlgItem(_hSelf, IDC_BUTTON_BOTTOM)); } } else { if (_currentSC == SUB_VIEW) { ::SetFocus(::GetDlgItem(_hSelf, IDC_BUTTON_TOP)); } else { ::SetFocus(::GetDlgItem(_hSelf, IDC_BUTTON_BOTTOM)); } } } /* change language */ NLChangeDialog(_hInst, _nppData._nppHandle, _hSelf, _T("CompDialog")); break; } case WM_COMMAND : { BOOL owEdit2 = FALSE; switch (LOWORD(wParam)) { case IDCANCEL: ::EndDialog(_hSelf, IDCANCEL); return FALSE; case IDC_BUTTON_TOP: if (_rcEdit1.top < _rcEdit2.top) owEdit2 = TRUE; break; case IDC_BUTTON_BOTTOM: if (_rcEdit2.top < _rcEdit1.top) owEdit2 = TRUE; break; case IDC_BUTTON_LEFT: if (_rcEdit1.left < _rcEdit2.left) owEdit2 = TRUE; break; case IDC_BUTTON_RIGHT: if (_rcEdit2.left < _rcEdit1.left) owEdit2 = TRUE; break; default: break; } tHexProp hexProp1 = _pHexEdit1->GetHexProp(); tHexProp hexProp2 = _pHexEdit2->GetHexProp(); /* set settings in on of the hex edit */ if (owEdit2 == TRUE) { tHexProp hexProp = hexProp2; hexProp.bits = hexProp1.bits; hexProp.columns = hexProp1.columns; hexProp.isBin = hexProp1.isBin; _pHexEdit2->SetHexProp(hexProp); } else { tHexProp hexProp = hexProp1; hexProp.bits = hexProp2.bits; hexProp.columns = hexProp2.columns; hexProp.isBin = hexProp2.isBin; _pHexEdit1->SetHexProp(hexProp); } ::EndDialog(_hSelf, LOWORD(wParam)); break; } default: break; } return FALSE; }
BOOL CALLBACK RunMacroDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM) { switch (message) { case WM_INITDIALOG : { initMacroList(); TCHAR str[512]; wsprintf(str, TEXT("%d"), m_Times); ::SetDlgItemText(_hSelf, IDC_M_RUN_TIMES, str); switch ( m_Mode ) { case RM_RUN_MULTI: check(IDC_M_RUN_MULTI); break; case RM_RUN_EOF: check(IDC_M_RUN_EOF); break; } ::SendDlgItemMessage(_hSelf, IDC_M_RUN_TIMES, EM_LIMITTEXT, 4, 0); goToCenter(); return TRUE; } case WM_COMMAND : { if (HIWORD(wParam) == EN_CHANGE) { switch (LOWORD(wParam)) { case IDC_M_RUN_TIMES: check(IDC_M_RUN_MULTI); return TRUE; default: return FALSE; } } switch (wParam) { case IDCANCEL : ::ShowWindow(_hSelf, SW_HIDE); return TRUE; case IDOK : if ( isCheckedOrNot(IDC_M_RUN_MULTI) ) { m_Mode = RM_RUN_MULTI; m_Times = ::GetDlgItemInt(_hSelf, IDC_M_RUN_TIMES, NULL, FALSE); } else if ( isCheckedOrNot(IDC_M_RUN_EOF) ) { m_Mode = RM_RUN_EOF; } if (::SendDlgItemMessage(_hSelf, IDC_MACRO_COMBO, CB_GETCOUNT, 0, 0)) ::SendMessage(_hParent, WM_MACRODLGRUNMACRO, 0, 0); return TRUE; default: if ((HIWORD(wParam) == CBN_SELCHANGE) && (LOWORD(wParam) == IDC_MACRO_COMBO)) { m_macroIndex = ::SendDlgItemMessage(_hSelf, IDC_MACRO_COMBO, CB_GETCURSEL, 0, 0); return TRUE; } } } } return FALSE; }
BOOL CALLBACK ConfigDialog::run_dlgProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam) { LRESULT result; switch (Message) { case WM_INITDIALOG : { initialiseOptions(); goToCenter(); return TRUE; } case WM_COMMAND : { switch (LOWORD(wParam)) { case IDC_RADIOSORTREMEMBER: case IDC_RADIOSORTINDEX: case IDC_RADIOSORTPATH: case IDC_RADIOSORTFILENAME: result = ::SendDlgItemMessage(_hSelf, IDC_RADIOSORTREMEMBER, BM_GETCHECK, 0, 0); if (BST_CHECKED == result) { EnableWindow(GetDlgItem(_hSelf, IDC_CHECKRESETSORTORDER), FALSE); EnableWindow(GetDlgItem(_hSelf, IDC_CHECKSORTDESCENDING), FALSE); } else { EnableWindow(GetDlgItem(_hSelf, IDC_CHECKRESETSORTORDER), TRUE); EnableWindow(GetDlgItem(_hSelf, IDC_CHECKSORTDESCENDING), TRUE); } break; case IDC_CHECKOVERRIDESORTWHENTABBING: result = ::SendDlgItemMessage(_hSelf, IDC_CHECKOVERRIDESORTWHENTABBING, BM_GETCHECK, 0, 0); if (BST_CHECKED == result) { EnableWindow(GetDlgItem(_hSelf, IDC_CHECKREVERTSORTORDERDURINGTABBING), TRUE); } else { EnableWindow(GetDlgItem(_hSelf, IDC_CHECKREVERTSORTORDERDURINGTABBING), FALSE); } break; case IDC_CHECKAUTOSIZECOLUMNS: result = ::SendDlgItemMessage(_hSelf, IDC_CHECKAUTOSIZECOLUMNS, BM_GETCHECK, 0, 0); if (BST_CHECKED == result) { EnableWindow(GetDlgItem(_hSelf, IDC_CHECKAUTOSIZEWINDOW), TRUE); } else { EnableWindow(GetDlgItem(_hSelf, IDC_CHECKAUTOSIZEWINDOW), FALSE); } break; case IDOK : _options->searchFlags = 0; result = ::SendDlgItemMessage(_hSelf, IDC_CHECKSTARTONLY, BM_GETCHECK, 0, 0); if (BST_CHECKED == result) _options->searchFlags |= SEARCHFLAG_STARTONLY; result = ::SendDlgItemMessage(_hSelf, IDC_CHECKCASE, BM_GETCHECK, 0, 0); if (BST_CHECKED == result) _options->searchFlags |= SEARCHFLAG_CASESENSITIVE; result = ::SendDlgItemMessage(_hSelf, IDC_CHECKINCLUDEPATH, BM_GETCHECK, 0, 0); if (BST_CHECKED == result) _options->searchFlags |= SEARCHFLAG_INCLUDEPATH; result = ::SendDlgItemMessage(_hSelf, IDC_CHECKINCLUDEFILENAME, BM_GETCHECK, 0, 0); if (BST_CHECKED == result) _options->searchFlags |= SEARCHFLAG_INCLUDEFILENAME; result = ::SendDlgItemMessage(_hSelf, IDC_CHECKINCLUDEINDEX, BM_GETCHECK, 0, 0); if (BST_CHECKED == result) _options->searchFlags |= SEARCHFLAG_INCLUDEINDEX; result = ::SendDlgItemMessage(_hSelf, IDC_CHECKINCLUDEVIEW, BM_GETCHECK, 0, 0); if (BST_CHECKED == result) _options->searchFlags |= SEARCHFLAG_INCLUDEVIEW; result = ::SendDlgItemMessage(_hSelf, IDC_RADIOSORTFILENAME, BM_GETCHECK, 0, 0); if (BST_CHECKED == result) _options->defaultSortOrder = FILENAME; result = ::SendDlgItemMessage(_hSelf, IDC_RADIOSORTPATH, BM_GETCHECK, 0, 0); if (BST_CHECKED == result) _options->defaultSortOrder = PATH; result = ::SendDlgItemMessage(_hSelf, IDC_RADIOSORTINDEX, BM_GETCHECK, 0, 0); if (BST_CHECKED == result) _options->defaultSortOrder = INDEX; result = ::SendDlgItemMessage(_hSelf, IDC_RADIOSORTREMEMBER, BM_GETCHECK, 0, 0); if (BST_CHECKED == result) _options->defaultSortOrder = ALWAYSREMEMBER; else { result = ::SendDlgItemMessage(_hSelf, IDC_CHECKSORTDESCENDING, BM_GETCHECK, 0, 0); if (BST_CHECKED == result) _options->defaultSortOrder |= REVERSE_SORT_ORDER; } result = ::SendDlgItemMessage(_hSelf, IDC_CHECKRESETSORTORDER, BM_GETCHECK, 0, 0); if (BST_CHECKED == result) _options->resetSortOrder = TRUE; else _options->resetSortOrder = FALSE; result = ::SendDlgItemMessage(_hSelf, IDC_CHECKOVERRIDESORTWHENTABBING, BM_GETCHECK, 0, 0); if (BST_CHECKED == result) _options->overrideSortWhenTabbing = TRUE; else _options->overrideSortWhenTabbing = FALSE; result = ::SendDlgItemMessage(_hSelf, IDC_CHECKREVERTSORTORDERDURINGTABBING, BM_GETCHECK, 0, 0); if (BST_CHECKED == result) _options->revertSortWhenTabbing = TRUE; else _options->revertSortWhenTabbing = FALSE; result = ::SendDlgItemMessage(_hSelf, IDC_CHECKONLYCURRENTVIEW, BM_GETCHECK, 0, 0); if (BST_CHECKED == result) _options->onlyUseCurrentView = TRUE; else _options->onlyUseCurrentView = FALSE; result = ::SendDlgItemMessage(_hSelf, IDC_CHECKAUTOSIZECOLUMNS, BM_GETCHECK, 0, 0); if (BST_CHECKED == result) _options->autoSizeColumns = TRUE; else _options->autoSizeColumns = FALSE; result = ::SendDlgItemMessage(_hSelf, IDC_CHECKAUTOSIZEWINDOW, BM_GETCHECK, 0, 0); if (BST_CHECKED == result) _options->autoSizeWindow = TRUE; else _options->autoSizeWindow = FALSE; result = ::SendDlgItemMessage(_hSelf, IDC_CHECKSEPARATECOLUMNFORVIEW, BM_GETCHECK, 0, 0); if (BST_CHECKED == result) _options->columnForView = TRUE; else _options->columnForView = FALSE; result = ::SendDlgItemMessage(_hSelf, IDC_CHECKDIALOGFORCTRLTAB, BM_GETCHECK, 0, 0); if (BST_CHECKED == result) _options->noDialogForCtrlTab = FALSE; else _options->noDialogForCtrlTab = TRUE; result = ::SendDlgItemMessage(_hSelf, IDC_CHECKUSEHOMEFOREDIT, BM_GETCHECK, 0, 0); if (BST_CHECKED == result) _options->useHomeForEdit = TRUE; else _options->useHomeForEdit = FALSE; case IDCANCEL : if (_isModal) EndDialog(hWnd, 0); else display(FALSE); return TRUE; default : break; } } } return FALSE; }
BOOL CALLBACK ShortcutMapper::run_dlgProc(UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_INITDIALOG : { initBabyGrid(); initTabs(); fillOutBabyGrid(); _babygrid.display(); goToCenter(); return TRUE; } case WM_NOTIFY: { NMHDR nmh = *((NMHDR*)lParam); if (nmh.hwndFrom == _hTabCtrl) { if (nmh.code == TCN_SELCHANGE) { int index = TabCtrl_GetCurSel(_hTabCtrl); switch (index) { case 0: _currentState = STATE_MENU; break; case 1: _currentState = STATE_MACRO; break; case 2: _currentState = STATE_USER; break; case 3: _currentState = STATE_PLUGIN; break; case 4: _currentState = STATE_SCINTILLA; break; } fillOutBabyGrid(); } } break; } case WM_COMMAND : { switch (LOWORD(wParam)) { case IDCANCEL : { ::EndDialog(_hSelf, -1); return TRUE; } case IDOK : { ::EndDialog(_hSelf, 0); return TRUE; } case IDM_BABYGRID_MODIFY : { NppParameters *nppParam = NppParameters::getInstance(); int row = _babygrid.getSelectedRow(); switch(_currentState) { case STATE_MENU: { //Get CommandShortcut corresponding to row vector<CommandShortcut> & shortcuts = nppParam->getUserShortcuts(); CommandShortcut csc = shortcuts[row - 1], prevcsc = shortcuts[row - 1]; csc.init(_hInst, _hSelf); if (csc.doDialog() != -1 && prevcsc != csc) { //shortcut was altered nppParam->addUserModifiedIndex(row-1); shortcuts[row - 1] = csc; _babygrid.setText(row, 2, csc.toString().c_str()); //Notify current Accelerator class to update everything nppParam->getAccelerator()->updateShortcuts(); } break; } case STATE_MACRO: { //Get MacroShortcut corresponding to row vector<MacroShortcut> & shortcuts = nppParam->getMacroList(); MacroShortcut msc = shortcuts[row - 1], prevmsc = shortcuts[row - 1]; msc.init(_hInst, _hSelf); if (msc.doDialog() != -1 && prevmsc != msc) { //shortcut was altered shortcuts[row - 1] = msc; _babygrid.setText(row, 1, msc.getName()); _babygrid.setText(row, 2, msc.toString().c_str()); //Notify current Accelerator class to update everything nppParam->getAccelerator()->updateShortcuts(); } break; } case STATE_USER: { //Get UserCommand corresponding to row vector<UserCommand> & shortcuts = nppParam->getUserCommandList(); UserCommand ucmd = shortcuts[row - 1], prevucmd = shortcuts[row - 1]; ucmd.init(_hInst, _hSelf); prevucmd = ucmd; if (ucmd.doDialog() != -1 && prevucmd != ucmd) { //shortcut was altered shortcuts[row - 1] = ucmd; _babygrid.setText(row, 1, ucmd.getName()); _babygrid.setText(row, 2, ucmd.toString().c_str()); //Notify current Accelerator class to update everything nppParam->getAccelerator()->updateShortcuts(); } break; } case STATE_PLUGIN: { //Get PluginCmdShortcut corresponding to row vector<PluginCmdShortcut> & shortcuts = nppParam->getPluginCommandList(); PluginCmdShortcut pcsc = shortcuts[row - 1], prevpcsc = shortcuts[row - 1]; pcsc.init(_hInst, _hSelf); prevpcsc = pcsc; if (pcsc.doDialog() != -1 && prevpcsc != pcsc) { //shortcut was altered nppParam->addPluginModifiedIndex(row-1); shortcuts[row - 1] = pcsc; _babygrid.setText(row, 2, pcsc.toString().c_str()); //Notify current Accelerator class to update everything nppParam->getAccelerator()->updateShortcuts(); unsigned long cmdID = pcsc.getID(); ShortcutKey shortcut; shortcut._isAlt = pcsc.getKeyCombo()._isAlt; shortcut._isCtrl = pcsc.getKeyCombo()._isCtrl; shortcut._isShift = pcsc.getKeyCombo()._isShift; shortcut._key = pcsc.getKeyCombo()._key; ::SendMessage(_hParent, NPPM_INTERNAL_PLUGINSHORTCUTMOTIFIED, cmdID, (LPARAM)&shortcut); } break; } case STATE_SCINTILLA: { //Get ScintillaKeyMap corresponding to row vector<ScintillaKeyMap> & shortcuts = nppParam->getScintillaKeyList(); ScintillaKeyMap skm = shortcuts[row - 1], prevskm = shortcuts[row-1]; skm.init(_hInst, _hSelf); if (skm.doDialog() != -1 && prevskm != skm) { //shortcut was altered nppParam->addScintillaModifiedIndex(row-1); shortcuts[row-1] = skm; _babygrid.setText(row, 2, skm.toString().c_str()); //Notify current Accelerator class to update key nppParam->getScintillaAccelerator()->updateKeys(); } break; } } return TRUE; } case IDM_BABYGRID_DELETE : { NppParameters *nppParam = NppParameters::getInstance(); if (::MessageBox(_hSelf, TEXT("Are you sure you want to delete this shortcut?"), TEXT("Are you sure?"), MB_OKCANCEL) == IDOK) { const int row = _babygrid.getSelectedRow(); int shortcutIndex = row-1; DWORD cmdID = 0; // Menu data size_t posBase = 0; size_t nbElem = 0; HMENU hMenu = NULL; int modifCmd = IDM_SETTING_SHORTCUT_MAPPER_RUN; switch(_currentState) { case STATE_MENU: case STATE_PLUGIN: case STATE_SCINTILLA: { return FALSE; //this is bad } case STATE_MACRO: { vector<MacroShortcut> & theMacros = nppParam->getMacroList(); vector<MacroShortcut>::iterator it = theMacros.begin(); cmdID = theMacros[shortcutIndex].getID(); theMacros.erase(it + shortcutIndex); fillOutBabyGrid(); // preparing to remove from menu posBase = 6; nbElem = theMacros.size(); hMenu = ::GetSubMenu((HMENU)::SendMessage(_hParent, NPPM_INTERNAL_GETMENU, 0, 0), MENUINDEX_MACRO); modifCmd = IDM_SETTING_SHORTCUT_MAPPER_MACRO; for (size_t i = shortcutIndex ; i < nbElem ; i++) //lower the IDs of the remaining items so there are no gaps { MacroShortcut ms = theMacros[i]; ms.setID(ms.getID() - 1); //shift all IDs theMacros[i] = ms; } break; } case STATE_USER: { vector<UserCommand> & theUserCmds = nppParam->getUserCommandList(); vector<UserCommand>::iterator it = theUserCmds.begin(); cmdID = theUserCmds[shortcutIndex].getID(); theUserCmds.erase(it + shortcutIndex); fillOutBabyGrid(); // preparing to remove from menu posBase = 2; nbElem = theUserCmds.size(); hMenu = ::GetSubMenu((HMENU)::SendMessage(_hParent, NPPM_INTERNAL_GETMENU, 0, 0), MENUINDEX_RUN); modifCmd = IDM_SETTING_SHORTCUT_MAPPER_RUN; for (size_t i = shortcutIndex ; i < nbElem ; i++) //lower the IDs of the remaining items so there are no gaps { UserCommand uc = theUserCmds[i]; uc.setID(uc.getID() - 1); //shift all IDs theUserCmds[i] = uc; } break; } } // updateShortcuts() will update all menu item - the menu items will be shifted nppParam->getAccelerator()->updateShortcuts(); // All menu items are shifted up. So we delete the last item ::RemoveMenu(hMenu, posBase + nbElem - 1, MF_BYPOSITION); if (nbElem == 0) { ::RemoveMenu(hMenu, modifCmd, MF_BYCOMMAND); //remove separator ::RemoveMenu(hMenu, posBase-1, MF_BYPOSITION); ::RemoveMenu(hMenu, posBase-1, MF_BYPOSITION); } } return TRUE; } case IDD_BABYGRID_ID1: { if(HIWORD(wParam) == BGN_CELLDBCLICKED) //a cell was clicked in the properties grid { return ::SendMessage(_hSelf, WM_COMMAND, IDM_BABYGRID_MODIFY, LOWORD(lParam)); } else if(HIWORD(wParam) == BGN_CELLRCLICKED) //a cell was clicked in the properties grid { POINT p; ::GetCursorPos(&p); if (!_rightClickMenu.isCreated()) { vector<MenuItemUnit> itemUnitArray; itemUnitArray.push_back(MenuItemUnit(IDM_BABYGRID_MODIFY, TEXT("Modify"))); itemUnitArray.push_back(MenuItemUnit(IDM_BABYGRID_DELETE, TEXT("Delete"))); _rightClickMenu.create(_hSelf, itemUnitArray); } switch(_currentState) { case STATE_MACRO: case STATE_USER: { _rightClickMenu.enableItem(IDM_BABYGRID_DELETE, true); break; } case STATE_MENU: case STATE_PLUGIN: case STATE_SCINTILLA: { _rightClickMenu.enableItem(IDM_BABYGRID_DELETE, false); break; } } _rightClickMenu.display(p); return TRUE; } } } } default: return FALSE; } return FALSE; }