mirror of
https://github.com/notepad-plus-plus/notepad-plus-plus.git
synced 2025-10-24 17:13:52 +02:00
git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository/trunk@637 f5eea248-9336-0410-98b8-ebc06183d4e3
1906 lines
64 KiB
C++
1906 lines
64 KiB
C++
//this file is part of Notepad++
|
||
//Copyright (C)2003 Don HO <donho@altern.org>
|
||
//
|
||
//This program is free software; you can redistribute it and/or
|
||
//modify it under the terms of the GNU General Public License
|
||
//as published by the Free Software Foundation; either
|
||
//version 2 of the License, or (at your option) any later version.
|
||
//
|
||
//This program is distributed in the hope that it will be useful,
|
||
//but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
//GNU General Public License for more details.
|
||
//
|
||
//You should have received a copy of the GNU General Public License
|
||
//along with this program; if not, write to the Free Software
|
||
//Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||
|
||
#include "precompiledHeaders.h"
|
||
|
||
#include "UserDefineDialog.h"
|
||
#include "ScintillaEditView.h"
|
||
#include "Parameters.h"
|
||
#include "resource.h"
|
||
#include "Notepad_plus_msgs.h"
|
||
#include "FileDialog.h"
|
||
|
||
UserLangContainer * SharedParametersDialog::_pUserLang = NULL;
|
||
ScintillaEditView * SharedParametersDialog::_pScintilla = NULL;
|
||
|
||
void SharedParametersDialog::initControls()
|
||
{
|
||
NppParameters *pNppParam = NppParameters::getInstance();
|
||
for (int i = 0 ; i < _nbGroup ; i++)
|
||
{
|
||
HWND hFgColourStaticText = ::GetDlgItem(_hSelf, _fgStatic[i]);
|
||
HWND hBgColourStaticText = ::GetDlgItem(_hSelf, _bgStatic[i]);
|
||
|
||
_pFgColour[i] = new ColourPicker;
|
||
_pFgColour[i]->init(_hInst, _hSelf);
|
||
_pFgColour[i]->setColour(black);
|
||
|
||
_pBgColour[i] = new ColourPicker;
|
||
_pBgColour[i]->init(_hInst, _hSelf);
|
||
_pBgColour[i]->setColour(white);
|
||
|
||
POINT p1, p2;
|
||
|
||
alignWith(hFgColourStaticText, _pFgColour[i]->getHSelf(), ALIGNPOS_RIGHT, p1);
|
||
alignWith(hBgColourStaticText, _pBgColour[i]->getHSelf(), ALIGNPOS_RIGHT, p2);
|
||
|
||
p1.x = p2.x = ((p1.x > p2.x)?p1.x:p2.x) + 10;
|
||
p1.y -= 4; p2.y -= 4;
|
||
|
||
::MoveWindow(_pFgColour[i]->getHSelf(), p1.x, p1.y, 25, 25, TRUE);
|
||
::MoveWindow(_pBgColour[i]->getHSelf(), p2.x, p2.y, 25, 25, TRUE);
|
||
_pFgColour[i]->display();
|
||
_pBgColour[i]->display();
|
||
|
||
//for the font size combos
|
||
for(int j = 0 ; j < int(sizeof(fontSizeStrs))/(3*sizeof(TCHAR)) ; j++)
|
||
{
|
||
::SendDlgItemMessage(_hSelf, _fontSizeCombo[i], CB_ADDSTRING, 0, (LPARAM)fontSizeStrs[j]);
|
||
}
|
||
|
||
//for the font name combos
|
||
HWND hFontNameCombo = ::GetDlgItem(_hSelf, _fontNameCombo[i]);
|
||
|
||
const std::vector<generic_string> & fontlist = pNppParam->getFontList();
|
||
for (int j = 0 ; j < int(fontlist.size()) ; j++)
|
||
{
|
||
int k = ::SendMessage(hFontNameCombo, CB_ADDSTRING, 0, (LPARAM)fontlist[j].c_str());
|
||
::SendMessage(hFontNameCombo, CB_SETITEMDATA, k, (LPARAM)fontlist[j].c_str());
|
||
}
|
||
}
|
||
}
|
||
|
||
bool SharedParametersDialog::setPropertyByCheck(HWND hwnd, WPARAM id, bool & bool2set)
|
||
{
|
||
bool2set = (BST_CHECKED == ::SendMessage(::GetDlgItem(hwnd, id), BM_GETCHECK, 0, 0));
|
||
|
||
if (_pScintilla->getCurrentBuffer()->getLangType() == L_USER)
|
||
_pScintilla->styleChange();
|
||
return TRUE;
|
||
}
|
||
|
||
void SharedParametersDialog::styleUpdate(const Style & style, ColourPicker *pFgColourPicker, ColourPicker *pBgColourPicker,
|
||
int fontComboId, int fontSizeComboId, int boldCheckId, int italicCheckId, int underlineCheckId)
|
||
{
|
||
pFgColourPicker->setColour((style._fgColor == COLORREF(-1))?black:style._fgColor);
|
||
pFgColourPicker->setEnabled((style._colorStyle & COLORSTYLE_FOREGROUND) != 0);
|
||
pFgColourPicker->redraw();
|
||
pBgColourPicker->setColour((style._bgColor == COLORREF(-1))?white:style._bgColor);
|
||
pBgColourPicker->setEnabled((style._colorStyle & COLORSTYLE_BACKGROUND) != 0);
|
||
pBgColourPicker->redraw();
|
||
|
||
HWND hFontCombo = ::GetDlgItem(_hSelf, fontComboId);
|
||
int i = ::SendMessage(hFontCombo, CB_FINDSTRINGEXACT, (WPARAM)-1, (LPARAM)style._fontName);
|
||
if (i == CB_ERR)
|
||
i = 0;
|
||
::SendMessage(hFontCombo, CB_SETCURSEL, i, 0);
|
||
|
||
TCHAR size[10];
|
||
if (style._fontSize == -1)
|
||
size[0] = '\0';
|
||
else
|
||
wsprintf(size, TEXT("%d"), style._fontSize);
|
||
|
||
hFontCombo = ::GetDlgItem(_hSelf, fontSizeComboId);
|
||
i = ::SendMessage(hFontCombo, CB_FINDSTRINGEXACT, (WPARAM)-1, (LPARAM)size);
|
||
if (i != CB_ERR)
|
||
::SendMessage(hFontCombo, CB_SETCURSEL, i, 0);
|
||
int isBold = 0;
|
||
int isItalic = 0;
|
||
int isUnderline = 0;
|
||
if (style._fontStyle != -1)
|
||
{
|
||
isBold = (style._fontStyle & FONTSTYLE_BOLD)?BST_CHECKED:BST_UNCHECKED;
|
||
isItalic = (style._fontStyle & FONTSTYLE_ITALIC)?BST_CHECKED:BST_UNCHECKED;
|
||
isUnderline = (style._fontStyle & FONTSTYLE_UNDERLINE)?BST_CHECKED:BST_UNCHECKED;
|
||
}
|
||
::SendDlgItemMessage(_hSelf, boldCheckId, BM_SETCHECK, isBold, 0);
|
||
::SendDlgItemMessage(_hSelf, italicCheckId, BM_SETCHECK, isItalic, 0);
|
||
::SendDlgItemMessage(_hSelf, underlineCheckId, BM_SETCHECK, isUnderline, 0);
|
||
}
|
||
|
||
int fgStatic[] = {IDC_DEFAULT_FG_STATIC, IDC_FOLDEROPEN_FG_STATIC, IDC_FOLDERCLOSE_FG_STATIC};
|
||
int bgStatic[] = {IDC_DEFAULT_BG_STATIC, IDC_FOLDEROPEN_BG_STATIC, IDC_FOLDERCLOSE_BG_STATIC};
|
||
int fontSizeCombo[] = {IDC_DEFAULT_FONTSIZE_COMBO, IDC_FOLDEROPEN_FONTSIZE_COMBO, IDC_FOLDERCLOSE_FONTSIZE_COMBO};
|
||
int fontNameCombo[] = {IDC_DEFAULT_FONT_COMBO, IDC_FOLDEROPEN_FONT_COMBO, IDC_FOLDERCLOSE_FONT_COMBO};
|
||
|
||
FolderStyleDialog::FolderStyleDialog() : SharedParametersDialog(3)
|
||
{
|
||
memcpy(_fgStatic, fgStatic, sizeof(fgStatic));
|
||
memcpy(_bgStatic, bgStatic, sizeof(bgStatic));
|
||
memcpy(_fontSizeCombo, fontSizeCombo, sizeof(fontSizeCombo));
|
||
memcpy(_fontNameCombo, fontNameCombo, sizeof(fontNameCombo));
|
||
}
|
||
|
||
void FolderStyleDialog::setKeywords2List(int ctrlID)
|
||
{
|
||
int index;
|
||
if (ctrlID == IDC_FOLDEROPEN_EDIT)
|
||
index = 1;
|
||
else if (ctrlID == IDC_FOLDERCLOSE_EDIT)
|
||
index = 2;
|
||
else
|
||
index = -1;
|
||
|
||
if (index != -1)
|
||
::GetDlgItemText(_hSelf, ctrlID, _pUserLang->_keywordLists[index], max_char);
|
||
}
|
||
|
||
int FolderStyleDialog::getGroupIndexFromCombo(int ctrlID, bool & isFontSize) const
|
||
{
|
||
switch (ctrlID)
|
||
{
|
||
case IDC_DEFAULT_FONT_COMBO :
|
||
isFontSize = false;
|
||
return STYLE_DEFAULT_INDEX;
|
||
|
||
case IDC_DEFAULT_FONTSIZE_COMBO :
|
||
isFontSize = true;
|
||
return STYLE_DEFAULT_INDEX;
|
||
|
||
case IDC_FOLDEROPEN_FONT_COMBO :
|
||
isFontSize = false;
|
||
return STYLE_BLOCK_OPEN_INDEX;
|
||
|
||
case IDC_FOLDEROPEN_FONTSIZE_COMBO :
|
||
isFontSize = true;
|
||
return STYLE_BLOCK_OPEN_INDEX;
|
||
|
||
case IDC_FOLDERCLOSE_FONT_COMBO :
|
||
isFontSize = false;
|
||
return STYLE_BLOCK_CLOSE_INDEX;
|
||
|
||
case IDC_FOLDERCLOSE_FONTSIZE_COMBO :
|
||
isFontSize = true;
|
||
return STYLE_BLOCK_CLOSE_INDEX;
|
||
|
||
default :
|
||
return -1;
|
||
}
|
||
}
|
||
|
||
BOOL CALLBACK SharedParametersDialog::run_dlgProc(UINT Message, WPARAM wParam, LPARAM lParam)
|
||
{
|
||
switch (Message)
|
||
{
|
||
case WM_INITDIALOG :
|
||
{
|
||
initControls();
|
||
return TRUE;
|
||
}
|
||
|
||
case WM_COMMAND :
|
||
{
|
||
if (HIWORD(wParam) == EN_CHANGE)
|
||
{
|
||
setKeywords2List(LOWORD(wParam));
|
||
|
||
if (_pScintilla->getCurrentBuffer()->getLangType() == L_USER)
|
||
_pScintilla->styleChange();
|
||
|
||
return TRUE;
|
||
}
|
||
else if (HIWORD(wParam) == CBN_SELCHANGE)
|
||
{
|
||
bool isFontSize;
|
||
int k = getGroupIndexFromCombo(LOWORD(wParam), isFontSize);
|
||
|
||
if (k != -1)
|
||
{
|
||
int i = ::SendDlgItemMessage(_hSelf, LOWORD(wParam), CB_GETCURSEL, 0, 0);
|
||
Style & style = _pUserLang->_styleArray.getStyler(k);
|
||
if (isFontSize)
|
||
{
|
||
TCHAR intStr[5];
|
||
if (i != 0)
|
||
{
|
||
::SendDlgItemMessage(_hSelf, LOWORD(wParam), CB_GETLBTEXT, i, (LPARAM)intStr);
|
||
if ((!intStr) || (!intStr[0]))
|
||
style._fontSize = -1;
|
||
else
|
||
{
|
||
TCHAR *finStr;
|
||
style._fontSize = generic_strtol(intStr, &finStr, 10);
|
||
if (*finStr != '\0')
|
||
style._fontSize = -1;
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
style._fontName = (TCHAR *)::SendDlgItemMessage(_hSelf, LOWORD(wParam), CB_GETITEMDATA, i, 0);
|
||
}
|
||
if (_pScintilla->getCurrentBuffer()->getLangType() == L_USER)
|
||
_pScintilla->styleChange();
|
||
return TRUE;
|
||
}
|
||
}
|
||
else if (HIWORD(wParam) == CPN_COLOURPICKED)
|
||
{
|
||
bool isFG;
|
||
ColourPicker *pCP;
|
||
int index = getStylerIndexFromCP((HWND)lParam, isFG, &pCP);
|
||
if (index != -1)
|
||
{
|
||
Style & style = _pUserLang->_styleArray.getStyler(index);
|
||
if (isFG) {
|
||
style._fgColor = pCP->getColour();
|
||
if (pCP->isEnabled())
|
||
style._colorStyle |= COLORSTYLE_FOREGROUND;
|
||
else
|
||
style._colorStyle &= ~COLORSTYLE_FOREGROUND;
|
||
} else {
|
||
style._bgColor = pCP->getColour();
|
||
if (pCP->isEnabled())
|
||
style._colorStyle |= COLORSTYLE_BACKGROUND;
|
||
else
|
||
style._colorStyle &= ~COLORSTYLE_BACKGROUND;
|
||
}
|
||
}
|
||
// A cause de "#define CPN_COLOURPICKED (BN_CLICKED)"
|
||
// Nous sommes oblig<69>s de mettre ce bloc ici !!!
|
||
// A modifier !!!
|
||
else
|
||
{
|
||
int fontStyleMask;
|
||
int k = getGroupeIndexFromCheck(wParam, fontStyleMask);
|
||
|
||
if (k != -1)
|
||
{
|
||
Style & style = _pUserLang->_styleArray.getStyler(k);
|
||
if (style._fontStyle == -1)
|
||
style._fontStyle = 0;
|
||
style._fontStyle ^= fontStyleMask;
|
||
//::MessageBox(NULL, TEXT("Bingo!!!"), TEXT(""), MB_OK);
|
||
}
|
||
}
|
||
if (_pScintilla->getCurrentBuffer()->getLangType() == L_USER)
|
||
_pScintilla->styleChange();
|
||
return TRUE;
|
||
}
|
||
return FALSE;
|
||
}
|
||
/*
|
||
case WM_SIZE :
|
||
{
|
||
redraw();
|
||
return TRUE;
|
||
}
|
||
*/
|
||
case WM_DESTROY:
|
||
{
|
||
for (int i = 0 ; i < _nbGroup ; i++)
|
||
{
|
||
_pFgColour[i]->destroy();
|
||
_pBgColour[i]->destroy();
|
||
|
||
delete _pFgColour[i];
|
||
delete _pBgColour[i];
|
||
}
|
||
return TRUE;
|
||
}
|
||
}
|
||
return FALSE;
|
||
}
|
||
|
||
void FolderStyleDialog::updateDlg()
|
||
{
|
||
::SendDlgItemMessage(_hSelf, IDC_FOLDEROPEN_EDIT, WM_SETTEXT, 0, (LPARAM)(_pUserLang->_keywordLists[KWL_FOLDER_OPEN_INDEX]));
|
||
::SendDlgItemMessage(_hSelf, IDC_FOLDERCLOSE_EDIT, WM_SETTEXT, 0, (LPARAM)(_pUserLang->_keywordLists[KWL_FOLDER_CLOSE_INDEX]));
|
||
|
||
Style & defaultStyle = _pUserLang->_styleArray.getStyler(STYLE_DEFAULT_INDEX);
|
||
styleUpdate(defaultStyle, _pFgColour[0], _pBgColour[0], IDC_DEFAULT_FONT_COMBO, IDC_DEFAULT_FONTSIZE_COMBO,
|
||
IDC_DEFAULT_BOLD_CHECK, IDC_DEFAULT_ITALIC_CHECK, IDC_DEFAULT_UNDERLINE_CHECK);
|
||
|
||
Style & foStyle = _pUserLang->_styleArray.getStyler(STYLE_BLOCK_OPEN_INDEX);
|
||
styleUpdate(foStyle, _pFgColour[1], _pBgColour[1], IDC_FOLDEROPEN_FONT_COMBO, IDC_FOLDEROPEN_FONTSIZE_COMBO,
|
||
IDC_FOLDEROPEN_BOLD_CHECK, IDC_FOLDEROPEN_ITALIC_CHECK, IDC_FOLDEROPEN_UNDERLINE_CHECK);
|
||
|
||
Style & fcStyle = _pUserLang->_styleArray.getStyler(STYLE_BLOCK_CLOSE_INDEX);
|
||
styleUpdate(fcStyle, _pFgColour[2], _pBgColour[2], IDC_FOLDERCLOSE_FONT_COMBO, IDC_FOLDERCLOSE_FONTSIZE_COMBO,
|
||
IDC_FOLDERCLOSE_BOLD_CHECK, IDC_FOLDERCLOSE_ITALIC_CHECK, IDC_FOLDERCLOSE_UNDERLINE_CHECK);
|
||
}
|
||
|
||
int FolderStyleDialog::getStylerIndexFromCP(HWND hWnd, bool & isFG, ColourPicker **ppCP) const
|
||
{
|
||
for (int i = 0 ; i < _nbGroup ; i++)
|
||
{
|
||
if (hWnd == _pFgColour[i]->getHSelf())
|
||
{
|
||
*ppCP = _pFgColour[i];
|
||
isFG = true;
|
||
return i;
|
||
}
|
||
if (hWnd == _pBgColour[i]->getHSelf())
|
||
{
|
||
*ppCP = _pBgColour[i];
|
||
isFG = false;
|
||
return i;
|
||
}
|
||
}
|
||
return -1;
|
||
}
|
||
|
||
int FolderStyleDialog::getGroupeIndexFromCheck(int ctrlID, int & fontStyleMask) const
|
||
{
|
||
switch (ctrlID)
|
||
{
|
||
case IDC_DEFAULT_BOLD_CHECK :
|
||
fontStyleMask = FONTSTYLE_BOLD;
|
||
return STYLE_DEFAULT_INDEX;
|
||
|
||
case IDC_DEFAULT_ITALIC_CHECK :
|
||
fontStyleMask = FONTSTYLE_ITALIC;
|
||
return STYLE_DEFAULT_INDEX;
|
||
|
||
case IDC_DEFAULT_UNDERLINE_CHECK :
|
||
fontStyleMask = FONTSTYLE_UNDERLINE;
|
||
return STYLE_DEFAULT_INDEX;
|
||
|
||
case IDC_FOLDEROPEN_BOLD_CHECK :
|
||
fontStyleMask = FONTSTYLE_BOLD;
|
||
return STYLE_BLOCK_OPEN_INDEX;
|
||
|
||
case IDC_FOLDEROPEN_ITALIC_CHECK :
|
||
fontStyleMask = FONTSTYLE_ITALIC;
|
||
return STYLE_BLOCK_OPEN_INDEX;
|
||
|
||
case IDC_FOLDEROPEN_UNDERLINE_CHECK :
|
||
fontStyleMask = FONTSTYLE_UNDERLINE;
|
||
return STYLE_BLOCK_OPEN_INDEX;
|
||
|
||
case IDC_FOLDERCLOSE_BOLD_CHECK :
|
||
fontStyleMask = FONTSTYLE_BOLD;
|
||
return STYLE_BLOCK_CLOSE_INDEX;
|
||
|
||
case IDC_FOLDERCLOSE_ITALIC_CHECK :
|
||
fontStyleMask = FONTSTYLE_ITALIC;
|
||
return STYLE_BLOCK_CLOSE_INDEX;
|
||
|
||
case IDC_FOLDERCLOSE_UNDERLINE_CHECK :
|
||
fontStyleMask = FONTSTYLE_UNDERLINE;
|
||
return STYLE_BLOCK_CLOSE_INDEX;
|
||
|
||
default :
|
||
return -1;
|
||
}
|
||
}
|
||
|
||
int fgStatic2[] = {IDC_KEYWORD1_FG_STATIC, IDC_KEYWORD2_FG_STATIC, IDC_KEYWORD3_FG_STATIC, IDC_KEYWORD4_FG_STATIC};
|
||
int bgStatic2[] = {IDC_KEYWORD1_BG_STATIC, IDC_KEYWORD2_BG_STATIC, IDC_KEYWORD3_BG_STATIC, IDC_KEYWORD4_BG_STATIC};
|
||
int fontSizeCombo2[] = {IDC_KEYWORD1_FONTSIZE_COMBO, IDC_KEYWORD2_FONTSIZE_COMBO, IDC_KEYWORD3_FONTSIZE_COMBO, IDC_KEYWORD4_FONTSIZE_COMBO};
|
||
int fontNameCombo2[] = {IDC_KEYWORD1_FONT_COMBO, IDC_KEYWORD2_FONT_COMBO, IDC_KEYWORD3_FONT_COMBO, IDC_KEYWORD4_FONT_COMBO};
|
||
|
||
KeyWordsStyleDialog::KeyWordsStyleDialog() : SharedParametersDialog(4)
|
||
{
|
||
memcpy(_fgStatic, fgStatic2, sizeof(fgStatic2));
|
||
memcpy(_bgStatic, bgStatic2, sizeof(bgStatic2));
|
||
memcpy(_fontSizeCombo, fontSizeCombo2, sizeof(fontSizeCombo2));
|
||
memcpy(_fontNameCombo, fontNameCombo2, sizeof(fontNameCombo2));
|
||
}
|
||
|
||
|
||
BOOL CALLBACK KeyWordsStyleDialog::run_dlgProc(UINT Message, WPARAM wParam, LPARAM lParam)
|
||
{
|
||
switch (Message)
|
||
{
|
||
|
||
case WM_COMMAND :
|
||
{
|
||
switch (wParam)
|
||
{
|
||
case IDC_KEYWORD1_PREFIX_CHECK :
|
||
return setPropertyByCheck(_hSelf, wParam, _pUserLang->_isPrefix[0]);
|
||
|
||
case IDC_KEYWORD2_PREFIX_CHECK :
|
||
return setPropertyByCheck(_hSelf, wParam, _pUserLang->_isPrefix[1]);
|
||
|
||
case IDC_KEYWORD3_PREFIX_CHECK :
|
||
return setPropertyByCheck(_hSelf, wParam, _pUserLang->_isPrefix[2]);
|
||
|
||
case IDC_KEYWORD4_PREFIX_CHECK :
|
||
return setPropertyByCheck(_hSelf, wParam, _pUserLang->_isPrefix[3]);
|
||
}
|
||
}
|
||
default :
|
||
return SharedParametersDialog::run_dlgProc(Message, wParam, lParam);
|
||
}
|
||
}
|
||
|
||
void KeyWordsStyleDialog::setKeywords2List(int id)
|
||
{
|
||
int index;
|
||
switch (id)
|
||
{
|
||
case IDC_KEYWORD1_EDIT : index = 5; break;
|
||
case IDC_KEYWORD2_EDIT : index = 6; break;
|
||
case IDC_KEYWORD3_EDIT : index = 7; break;
|
||
case IDC_KEYWORD4_EDIT : index = 8; break;
|
||
default : index = -1;
|
||
}
|
||
if (index != -1)
|
||
::GetDlgItemText(_hSelf, id, _pUserLang->_keywordLists[index], max_char);
|
||
}
|
||
|
||
int KeyWordsStyleDialog::getStylerIndexFromCP(HWND hWnd, bool & isFG, ColourPicker **ppCP) const
|
||
{
|
||
for (int i = 0 ; i < _nbGroup ; i++)
|
||
{
|
||
if (hWnd == _pFgColour[i]->getHSelf())
|
||
{
|
||
*ppCP = _pFgColour[i];
|
||
isFG = true;
|
||
return i+3;
|
||
}
|
||
if (hWnd == _pBgColour[i]->getHSelf())
|
||
{
|
||
*ppCP = _pBgColour[i];
|
||
isFG = false;
|
||
return i+3;
|
||
}
|
||
}
|
||
return -1;
|
||
}
|
||
|
||
int KeyWordsStyleDialog::getGroupIndexFromCombo(int ctrlID, bool & isFontSize) const
|
||
{
|
||
switch (ctrlID)
|
||
{
|
||
case IDC_KEYWORD1_FONT_COMBO :
|
||
isFontSize = false;
|
||
return STYLE_WORD1_INDEX;
|
||
|
||
case IDC_KEYWORD1_FONTSIZE_COMBO :
|
||
isFontSize = true;
|
||
return STYLE_WORD1_INDEX;
|
||
|
||
case IDC_KEYWORD2_FONT_COMBO :
|
||
isFontSize = false;
|
||
return STYLE_WORD2_INDEX;
|
||
|
||
case IDC_KEYWORD2_FONTSIZE_COMBO :
|
||
isFontSize = true;
|
||
return STYLE_WORD2_INDEX;
|
||
|
||
case IDC_KEYWORD3_FONT_COMBO :
|
||
isFontSize = false;
|
||
return STYLE_WORD3_INDEX;
|
||
|
||
case IDC_KEYWORD3_FONTSIZE_COMBO :
|
||
isFontSize = true;
|
||
return STYLE_WORD3_INDEX;
|
||
|
||
case IDC_KEYWORD4_FONT_COMBO :
|
||
isFontSize = false;
|
||
return STYLE_WORD4_INDEX;
|
||
|
||
case IDC_KEYWORD4_FONTSIZE_COMBO :
|
||
isFontSize = true;
|
||
return STYLE_WORD4_INDEX;
|
||
|
||
default :
|
||
return -1;
|
||
}
|
||
}
|
||
|
||
int KeyWordsStyleDialog::getGroupeIndexFromCheck(int ctrlID, int & fontStyleMask) const
|
||
{
|
||
switch (ctrlID)
|
||
{
|
||
case IDC_KEYWORD1_BOLD_CHECK :
|
||
fontStyleMask = FONTSTYLE_BOLD;
|
||
return STYLE_WORD1_INDEX;
|
||
|
||
case IDC_KEYWORD1_ITALIC_CHECK :
|
||
fontStyleMask = FONTSTYLE_ITALIC;
|
||
return STYLE_WORD1_INDEX;
|
||
|
||
case IDC_KEYWORD1_UNDERLINE_CHECK :
|
||
fontStyleMask = FONTSTYLE_UNDERLINE;
|
||
return STYLE_WORD1_INDEX;
|
||
|
||
case IDC_KEYWORD2_BOLD_CHECK :
|
||
fontStyleMask = FONTSTYLE_BOLD;
|
||
return STYLE_WORD2_INDEX;
|
||
|
||
case IDC_KEYWORD2_ITALIC_CHECK :
|
||
fontStyleMask = FONTSTYLE_ITALIC;
|
||
return STYLE_WORD2_INDEX;
|
||
|
||
case IDC_KEYWORD2_UNDERLINE_CHECK :
|
||
fontStyleMask = FONTSTYLE_UNDERLINE;
|
||
return STYLE_WORD2_INDEX;
|
||
|
||
case IDC_KEYWORD3_BOLD_CHECK :
|
||
fontStyleMask = FONTSTYLE_BOLD;
|
||
return STYLE_WORD3_INDEX;
|
||
|
||
case IDC_KEYWORD3_ITALIC_CHECK :
|
||
fontStyleMask = FONTSTYLE_ITALIC;
|
||
return STYLE_WORD3_INDEX;
|
||
|
||
case IDC_KEYWORD3_UNDERLINE_CHECK :
|
||
fontStyleMask = FONTSTYLE_UNDERLINE;
|
||
return STYLE_WORD3_INDEX;
|
||
|
||
case IDC_KEYWORD4_BOLD_CHECK :
|
||
fontStyleMask = FONTSTYLE_BOLD;
|
||
return STYLE_WORD4_INDEX;
|
||
|
||
case IDC_KEYWORD4_ITALIC_CHECK :
|
||
fontStyleMask = FONTSTYLE_ITALIC;
|
||
return STYLE_WORD4_INDEX;
|
||
|
||
case IDC_KEYWORD4_UNDERLINE_CHECK :
|
||
fontStyleMask = FONTSTYLE_UNDERLINE;
|
||
return STYLE_WORD4_INDEX;
|
||
|
||
default :
|
||
return -1;
|
||
}
|
||
}
|
||
|
||
void KeyWordsStyleDialog::updateDlg()
|
||
{
|
||
::SendDlgItemMessage(_hSelf, IDC_KEYWORD1_EDIT, WM_SETTEXT, 0, (LPARAM)(_pUserLang->_keywordLists[KWL_KW1_INDEX]));
|
||
::SendDlgItemMessage(_hSelf, IDC_KEYWORD2_EDIT, WM_SETTEXT, 0, (LPARAM)(_pUserLang->_keywordLists[KWL_KW2_INDEX]));
|
||
::SendDlgItemMessage(_hSelf, IDC_KEYWORD3_EDIT, WM_SETTEXT, 0, (LPARAM)(_pUserLang->_keywordLists[KWL_KW3_INDEX]));
|
||
::SendDlgItemMessage(_hSelf, IDC_KEYWORD4_EDIT, WM_SETTEXT, 0, (LPARAM)(_pUserLang->_keywordLists[KWL_KW4_INDEX]));
|
||
|
||
Style & w1Style = _pUserLang->_styleArray.getStyler(STYLE_WORD1_INDEX);
|
||
styleUpdate(w1Style, _pFgColour[0], _pBgColour[0], IDC_KEYWORD1_FONT_COMBO, IDC_KEYWORD1_FONTSIZE_COMBO,
|
||
IDC_KEYWORD1_BOLD_CHECK, IDC_KEYWORD1_ITALIC_CHECK, IDC_KEYWORD1_UNDERLINE_CHECK);
|
||
|
||
Style & w2Style = _pUserLang->_styleArray.getStyler(STYLE_WORD2_INDEX);
|
||
styleUpdate(w2Style, _pFgColour[1], _pBgColour[1], IDC_KEYWORD2_FONT_COMBO, IDC_KEYWORD2_FONTSIZE_COMBO,
|
||
IDC_KEYWORD2_BOLD_CHECK, IDC_KEYWORD2_ITALIC_CHECK, IDC_KEYWORD2_UNDERLINE_CHECK);
|
||
|
||
Style & w3Style = _pUserLang->_styleArray.getStyler(STYLE_WORD3_INDEX);
|
||
styleUpdate(w3Style, _pFgColour[2], _pBgColour[2], IDC_KEYWORD3_FONT_COMBO, IDC_KEYWORD3_FONTSIZE_COMBO,
|
||
IDC_KEYWORD3_BOLD_CHECK, IDC_KEYWORD3_BOLD_CHECK, IDC_KEYWORD3_UNDERLINE_CHECK);
|
||
|
||
Style & w4Style = _pUserLang->_styleArray.getStyler(STYLE_WORD4_INDEX);
|
||
styleUpdate(w4Style, _pFgColour[3], _pBgColour[3], IDC_KEYWORD4_FONT_COMBO, IDC_KEYWORD4_FONTSIZE_COMBO,
|
||
IDC_KEYWORD4_BOLD_CHECK, IDC_KEYWORD4_ITALIC_CHECK, IDC_KEYWORD4_UNDERLINE_CHECK);
|
||
|
||
::SendDlgItemMessage(_hSelf, IDC_KEYWORD1_PREFIX_CHECK, BM_SETCHECK, _pUserLang->_isPrefix[0], 0);
|
||
::SendDlgItemMessage(_hSelf, IDC_KEYWORD2_PREFIX_CHECK, BM_SETCHECK, _pUserLang->_isPrefix[1], 0);
|
||
::SendDlgItemMessage(_hSelf, IDC_KEYWORD3_PREFIX_CHECK, BM_SETCHECK, _pUserLang->_isPrefix[2], 0);
|
||
::SendDlgItemMessage(_hSelf, IDC_KEYWORD4_PREFIX_CHECK, BM_SETCHECK, _pUserLang->_isPrefix[3], 0);
|
||
}
|
||
|
||
int fgStatic3[] = {IDC_COMMENT_FG_STATIC, IDC_COMMENTLINE_FG_STATIC, IDC_NUMBER_FG_STATIC};
|
||
int bgStatic3[] = {IDC_COMMENT_BG_STATIC, IDC_COMMENTLINE_BG_STATIC, IDC_NUMBER_BG_STATIC};
|
||
int fontSizeCombo3[] = {IDC_COMMENT_FONTSIZE_COMBO, IDC_COMMENTLINE_FONTSIZE_COMBO, IDC_NUMBER_FONTSIZE_COMBO};
|
||
int fontNameCombo3[] = {IDC_COMMENT_FONT_COMBO, IDC_COMMENTLINE_FONT_COMBO, IDC_NUMBER_FONT_COMBO};
|
||
|
||
CommentStyleDialog::CommentStyleDialog() : SharedParametersDialog(3)
|
||
{
|
||
memcpy(_fgStatic, fgStatic3, sizeof(fgStatic3));
|
||
memcpy(_bgStatic, bgStatic3, sizeof(bgStatic3));
|
||
memcpy(_fontSizeCombo, fontSizeCombo3, sizeof(fontSizeCombo3));
|
||
memcpy(_fontNameCombo, fontNameCombo3, sizeof(fontNameCombo3));
|
||
}
|
||
|
||
BOOL CALLBACK CommentStyleDialog::run_dlgProc(UINT Message, WPARAM wParam, LPARAM lParam)
|
||
{
|
||
switch (Message)
|
||
{
|
||
case WM_COMMAND :
|
||
{
|
||
switch (wParam)
|
||
{
|
||
case IDC_COMMENTLINESYMBOL_CHECK :
|
||
return setPropertyByCheck(_hSelf, wParam, _pUserLang->_isCommentLineSymbol);;
|
||
|
||
case IDC_COMMENTSYMBOL_CHECK :
|
||
return setPropertyByCheck(_hSelf, wParam, _pUserLang->_isCommentSymbol);;
|
||
|
||
}
|
||
}
|
||
default :
|
||
return SharedParametersDialog::run_dlgProc(Message, wParam, lParam);
|
||
}
|
||
}
|
||
|
||
|
||
void CommentStyleDialog::setKeywords2List(int id)
|
||
{
|
||
int i;
|
||
switch (id)
|
||
{
|
||
case IDC_COMMENTOPEN_EDIT :
|
||
case IDC_COMMENTCLOSE_EDIT :
|
||
case IDC_COMMENTLINE_EDIT :
|
||
i = 4;
|
||
break;
|
||
default : i = -1;
|
||
}
|
||
if (i != -1)
|
||
{
|
||
TCHAR commentOpen[max_char];
|
||
TCHAR commentClose[max_char];
|
||
TCHAR commentLine[max_char];
|
||
TCHAR newList[max_char] = TEXT("");
|
||
::GetDlgItemText(_hSelf, IDC_COMMENTOPEN_EDIT, commentOpen, max_char);
|
||
::GetDlgItemText(_hSelf, IDC_COMMENTCLOSE_EDIT, commentClose, max_char);
|
||
::GetDlgItemText(_hSelf, IDC_COMMENTLINE_EDIT, commentLine, max_char);
|
||
convertTo(newList, commentOpen, '1');
|
||
convertTo(newList, commentClose, '2');
|
||
convertTo(newList, commentLine, '0');
|
||
lstrcpy(_pUserLang->_keywordLists[i], newList);
|
||
}
|
||
}
|
||
|
||
int CommentStyleDialog::getStylerIndexFromCP(HWND hWnd, bool & isFG, ColourPicker **ppCP) const
|
||
{
|
||
for (int i = 0 ; i < _nbGroup ; i++)
|
||
{
|
||
if (hWnd == _pFgColour[i]->getHSelf())
|
||
{
|
||
*ppCP = _pFgColour[i];
|
||
isFG = true;
|
||
return i+7;
|
||
}
|
||
if (hWnd == _pBgColour[i]->getHSelf())
|
||
{
|
||
*ppCP = _pBgColour[i];
|
||
isFG = false;
|
||
return i+7;
|
||
}
|
||
}
|
||
return -1;
|
||
}
|
||
|
||
int CommentStyleDialog::getGroupIndexFromCombo(int ctrlID, bool & isFontSize) const
|
||
{
|
||
switch (ctrlID)
|
||
{
|
||
case IDC_COMMENT_FONT_COMBO :
|
||
isFontSize = false;
|
||
return STYLE_COMMENT_INDEX;
|
||
|
||
case IDC_COMMENT_FONTSIZE_COMBO :
|
||
isFontSize = true;
|
||
return STYLE_COMMENT_INDEX;
|
||
|
||
case IDC_COMMENTLINE_FONT_COMBO :
|
||
isFontSize = false;
|
||
return STYLE_COMMENTLINE_INDEX;
|
||
|
||
case IDC_COMMENTLINE_FONTSIZE_COMBO :
|
||
isFontSize = true;
|
||
return STYLE_COMMENTLINE_INDEX;
|
||
|
||
case IDC_NUMBER_FONT_COMBO :
|
||
isFontSize = false;
|
||
return STYLE_NUMBER_INDEX;
|
||
|
||
case IDC_NUMBER_FONTSIZE_COMBO :
|
||
isFontSize = true;
|
||
return STYLE_NUMBER_INDEX;
|
||
|
||
default :
|
||
return -1;
|
||
}
|
||
}
|
||
|
||
int CommentStyleDialog::getGroupeIndexFromCheck(int ctrlID, int & fontStyleMask) const
|
||
{
|
||
switch (ctrlID)
|
||
{
|
||
case IDC_COMMENT_BOLD_CHECK :
|
||
fontStyleMask = FONTSTYLE_BOLD;
|
||
return STYLE_COMMENT_INDEX;
|
||
|
||
case IDC_COMMENT_ITALIC_CHECK :
|
||
fontStyleMask = FONTSTYLE_ITALIC;
|
||
return STYLE_COMMENT_INDEX;
|
||
|
||
case IDC_COMMENT_UNDERLINE_CHECK :
|
||
fontStyleMask = FONTSTYLE_UNDERLINE;
|
||
return STYLE_COMMENT_INDEX;
|
||
|
||
case IDC_COMMENTLINE_BOLD_CHECK :
|
||
fontStyleMask = FONTSTYLE_BOLD;
|
||
return STYLE_COMMENTLINE_INDEX;
|
||
|
||
case IDC_COMMENTLINE_ITALIC_CHECK :
|
||
fontStyleMask = FONTSTYLE_ITALIC;
|
||
return STYLE_COMMENTLINE_INDEX;
|
||
|
||
case IDC_COMMENTLINE_UNDERLINE_CHECK :
|
||
fontStyleMask = FONTSTYLE_UNDERLINE;
|
||
return STYLE_COMMENTLINE_INDEX;
|
||
|
||
case IDC_NUMBER_BOLD_CHECK :
|
||
fontStyleMask = FONTSTYLE_BOLD;
|
||
return STYLE_NUMBER_INDEX;
|
||
|
||
case IDC_NUMBER_ITALIC_CHECK :
|
||
fontStyleMask = FONTSTYLE_ITALIC;
|
||
return STYLE_NUMBER_INDEX;
|
||
|
||
case IDC_NUMBER_UNDERLINE_CHECK :
|
||
fontStyleMask = FONTSTYLE_UNDERLINE;
|
||
return STYLE_NUMBER_INDEX;
|
||
|
||
default :
|
||
return -1;
|
||
}
|
||
}
|
||
|
||
void CommentStyleDialog::convertTo(TCHAR *dest, const TCHAR *toConvert, TCHAR prefix) const
|
||
{
|
||
int index = lstrlen(dest);
|
||
dest[index++] = ' ';
|
||
dest[index++] = prefix;
|
||
for (int i = 0 ; i < int(lstrlen(toConvert)) ; i++)
|
||
{
|
||
if (toConvert[i] == ' ')
|
||
{
|
||
if (toConvert[i+1] != ' ')
|
||
{
|
||
dest[index++] = ' ';
|
||
dest[index++] = prefix;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
dest[index++] = toConvert[i];
|
||
}
|
||
}
|
||
dest[index] = '\0';
|
||
}
|
||
|
||
void CommentStyleDialog::retrieve(TCHAR *dest, const TCHAR *toRetrieve, TCHAR prefix) const
|
||
{
|
||
int j = 0;
|
||
bool begin2Copy = false;
|
||
|
||
for (int i = 0 ; i < int(lstrlen(toRetrieve)) ; i++)
|
||
{
|
||
if (((i == 0) || toRetrieve[i-1] == ' ') && (toRetrieve[i] == prefix))
|
||
{
|
||
begin2Copy = true;
|
||
continue;
|
||
}
|
||
else if (((toRetrieve[i] == ' ') && begin2Copy == true))
|
||
{
|
||
dest[j++] = toRetrieve[i];
|
||
begin2Copy = false;
|
||
}
|
||
if (begin2Copy)
|
||
dest[j++] = toRetrieve[i];
|
||
}
|
||
dest[j++] = '\0';
|
||
}
|
||
|
||
void CommentStyleDialog::updateDlg()
|
||
{
|
||
TCHAR commentOpen[256] = TEXT("");
|
||
TCHAR commentClose[256] = TEXT("");
|
||
TCHAR commentLine[256] = TEXT("");
|
||
|
||
retrieve(commentOpen, _pUserLang->_keywordLists[KWL_COMMENT_INDEX], '1');
|
||
retrieve(commentClose, _pUserLang->_keywordLists[KWL_COMMENT_INDEX], '2');
|
||
retrieve(commentLine, _pUserLang->_keywordLists[KWL_COMMENT_INDEX], '0');
|
||
|
||
::SendDlgItemMessage(_hSelf, IDC_COMMENTOPEN_EDIT, WM_SETTEXT, 0, (LPARAM)commentOpen);
|
||
::SendDlgItemMessage(_hSelf, IDC_COMMENTCLOSE_EDIT, WM_SETTEXT, 0, (LPARAM)commentClose);
|
||
::SendDlgItemMessage(_hSelf, IDC_COMMENTLINE_EDIT, WM_SETTEXT, 0, (LPARAM)commentLine);
|
||
|
||
Style & commentStyle = _pUserLang->_styleArray.getStyler(STYLE_COMMENT_INDEX);
|
||
styleUpdate(commentStyle, _pFgColour[0], _pBgColour[0], IDC_COMMENT_FONT_COMBO, IDC_COMMENT_FONTSIZE_COMBO,
|
||
IDC_COMMENT_BOLD_CHECK, IDC_COMMENT_ITALIC_CHECK, IDC_COMMENT_UNDERLINE_CHECK);
|
||
|
||
Style & commentLineStyle = _pUserLang->_styleArray.getStyler(STYLE_COMMENTLINE_INDEX);
|
||
styleUpdate(commentLineStyle, _pFgColour[1], _pBgColour[1], IDC_COMMENTLINE_FONT_COMBO, IDC_COMMENTLINE_FONTSIZE_COMBO,
|
||
IDC_COMMENTLINE_BOLD_CHECK, IDC_COMMENTLINE_ITALIC_CHECK, IDC_COMMENTLINE_UNDERLINE_CHECK);
|
||
|
||
Style & numberStyle = _pUserLang->_styleArray.getStyler(STYLE_NUMBER_INDEX);
|
||
styleUpdate(numberStyle, _pFgColour[2], _pBgColour[2], IDC_NUMBER_FONT_COMBO, IDC_NUMBER_FONTSIZE_COMBO,
|
||
IDC_NUMBER_BOLD_CHECK, IDC_NUMBER_ITALIC_CHECK, IDC_NUMBER_UNDERLINE_CHECK);
|
||
|
||
::SendDlgItemMessage(_hSelf, IDC_COMMENTLINESYMBOL_CHECK, BM_SETCHECK, _pUserLang->_isCommentLineSymbol, 0);
|
||
::SendDlgItemMessage(_hSelf, IDC_COMMENTSYMBOL_CHECK, BM_SETCHECK, _pUserLang->_isCommentSymbol, 0);
|
||
}
|
||
|
||
TCHAR symbolesArray[] = TEXT("+-*/.?!:;,%^$&\"'(_)=}]@\\`|[{#~<>");
|
||
const bool SymbolsStyleDialog::ADD = true;
|
||
const bool SymbolsStyleDialog::REMOVE = false;
|
||
|
||
int fgStatic4[] = {IDC_SYMBOL_FG_STATIC, IDC_SYMBOL_FG2_STATIC, IDC_SYMBOL_FG3_STATIC};
|
||
int bgStatic4[] = {IDC_SYMBOL_BG_STATIC, IDC_SYMBOL_BG2_STATIC, IDC_SYMBOL_BG3_STATIC};
|
||
int fontSizeCombo4[] = {IDC_SYMBOL_FONTSIZE_COMBO, IDC_SYMBOL_FONTSIZE2_COMBO, IDC_SYMBOL_FONTSIZE3_COMBO};
|
||
int fontNameCombo4[] = {IDC_SYMBOL_FONT_COMBO, IDC_SYMBOL_FONT2_COMBO, IDC_SYMBOL_FONT3_COMBO};
|
||
|
||
// 2 static const TCHAR * to have the compatibility with the old xml
|
||
const TCHAR *SymbolsStyleDialog::_delimTag1 = TEXT("DELIMINER1");
|
||
const TCHAR *SymbolsStyleDialog::_delimTag2 = TEXT("DELIMINER2");
|
||
|
||
SymbolsStyleDialog::SymbolsStyleDialog() : SharedParametersDialog(3)
|
||
{
|
||
memcpy(_fgStatic, fgStatic4, sizeof(fgStatic4));
|
||
memcpy(_bgStatic, bgStatic4, sizeof(bgStatic4));
|
||
memcpy(_fontSizeCombo, fontSizeCombo4, sizeof(fontSizeCombo4));
|
||
memcpy(_fontNameCombo, fontNameCombo4, sizeof(fontNameCombo4));
|
||
}
|
||
|
||
int SymbolsStyleDialog::getStylerIndexFromCP(HWND hWnd, bool & isFG, ColourPicker **ppCP) const
|
||
{
|
||
for (int i = 0 ; i < _nbGroup ; i++)
|
||
{
|
||
if (hWnd == _pFgColour[i]->getHSelf())
|
||
{
|
||
*ppCP = _pFgColour[i];
|
||
isFG = true;
|
||
return i+10;
|
||
}
|
||
if (hWnd == _pBgColour[i]->getHSelf())
|
||
{
|
||
*ppCP = _pBgColour[i];
|
||
isFG = false;
|
||
return i+10;
|
||
}
|
||
}
|
||
return -1;
|
||
}
|
||
|
||
int SymbolsStyleDialog::getGroupIndexFromCombo(int ctrlID, bool & isFontSize) const
|
||
{
|
||
switch (ctrlID)
|
||
{
|
||
case IDC_SYMBOL_FONT_COMBO :
|
||
isFontSize = false;
|
||
return STYLE_OPERATOR_INDEX;
|
||
|
||
case IDC_SYMBOL_FONTSIZE_COMBO :
|
||
isFontSize = true;
|
||
return STYLE_OPERATOR_INDEX;
|
||
|
||
case IDC_SYMBOL_FONT2_COMBO :
|
||
isFontSize = false;
|
||
return STYLE_DELIM2_INDEX;
|
||
|
||
case IDC_SYMBOL_FONTSIZE2_COMBO :
|
||
isFontSize = true;
|
||
return STYLE_DELIM2_INDEX;
|
||
|
||
case IDC_SYMBOL_FONT3_COMBO :
|
||
isFontSize = false;
|
||
return STYLE_DELIM3_INDEX;
|
||
|
||
case IDC_SYMBOL_FONTSIZE3_COMBO :
|
||
isFontSize = true;
|
||
return STYLE_DELIM3_INDEX;
|
||
|
||
default :
|
||
return -1;
|
||
}
|
||
}
|
||
|
||
void SymbolsStyleDialog::symbolAction(bool action)
|
||
{
|
||
int id2Add, id2Remove;
|
||
int idButton2Disable, idButton2Enable;
|
||
if (action == ADD)
|
||
{
|
||
id2Add = IDC_ACTIVATED_SYMBOL_LIST;
|
||
id2Remove = IDC_AVAILABLE_SYMBOLS_LIST;
|
||
idButton2Enable = IDC_REMOVE_BUTTON;
|
||
idButton2Disable = IDC_ADD_BUTTON;
|
||
|
||
}
|
||
else
|
||
{
|
||
id2Add = IDC_AVAILABLE_SYMBOLS_LIST;
|
||
id2Remove = IDC_ACTIVATED_SYMBOL_LIST;
|
||
idButton2Enable = IDC_ADD_BUTTON;
|
||
idButton2Disable = IDC_REMOVE_BUTTON;
|
||
}
|
||
int i = ::SendDlgItemMessage(_hSelf, id2Remove, LB_GETCURSEL, 0, 0);
|
||
TCHAR s[2];
|
||
::SendDlgItemMessage(_hSelf, id2Remove, LB_GETTEXT, i, (LPARAM)s);
|
||
|
||
::SendDlgItemMessage(_hSelf, id2Add, LB_ADDSTRING, 0, (LPARAM)s);
|
||
::SendDlgItemMessage(_hSelf, id2Remove, LB_DELETESTRING, i, 0);
|
||
int count = ::SendDlgItemMessage(_hSelf, id2Remove, LB_GETCOUNT, 0, 0);
|
||
if (i == count)
|
||
i -= 1;
|
||
|
||
::SendDlgItemMessage(_hSelf, id2Remove, LB_SETCURSEL, i, 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);
|
||
}
|
||
|
||
// 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->getCurrentBuffer()->getLangType() == L_USER)
|
||
_pScintilla->styleChange();
|
||
}
|
||
|
||
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 TCHAR *symbols = _pUserLang->_keywordLists[KWL_OPERATOR_INDEX];
|
||
|
||
for (int i = 0 ; i < int(lstrlen(symbols)) ; i++)
|
||
{
|
||
if (symbols[i] != ' ')
|
||
{
|
||
TCHAR 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);
|
||
}
|
||
}
|
||
}
|
||
bool hasEscape = (_pUserLang->_escapeChar[0] != 0);
|
||
::SendDlgItemMessage(_hSelf, IDC_HAS_ESCAPE, BM_SETCHECK, (hasEscape) ? BST_CHECKED : BST_UNCHECKED,0);
|
||
::EnableWindow(::GetDlgItem(_hSelf, IDC_ESCAPE_CHAR), (hasEscape) ? TRUE : FALSE);
|
||
::SendDlgItemMessage(_hSelf, IDC_ESCAPE_CHAR, WM_SETTEXT, 0, reinterpret_cast<LPARAM>(&_pUserLang->_escapeChar));
|
||
const TCHAR *delims = _pUserLang->_keywordLists[KWL_DELIM_INDEX];
|
||
// ICI LE TRAITEMENT POUR REMPLIR LES 4 COMBO BOX
|
||
TCHAR 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 (lstrlen(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)TEXT(""));
|
||
::SendDlgItemMessage(_hSelf, IDC_SYMBOL_BC2_COMBO, CB_ADDSTRING, 0, (LPARAM)TEXT(""));
|
||
::SendDlgItemMessage(_hSelf, IDC_SYMBOL_BO3_COMBO, CB_ADDSTRING, 0, (LPARAM)TEXT(""));
|
||
::SendDlgItemMessage(_hSelf, IDC_SYMBOL_BC3_COMBO, CB_ADDSTRING, 0, (LPARAM)TEXT(""));
|
||
|
||
for (int i = 0 ; i < int((sizeof(symbolesArray)/sizeof(TCHAR))-1) ; i++)
|
||
{
|
||
TCHAR 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);
|
||
::SendDlgItemMessage(_hSelf,IDC_ESCAPE_CHAR, EM_LIMITTEXT,1,0);
|
||
|
||
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->getCurrentBuffer()->getLangType() == L_USER)
|
||
_pScintilla->styleChange();
|
||
return TRUE;
|
||
}
|
||
else if (wParam == IDC_HAS_ESCAPE)
|
||
{
|
||
int newState = ::SendDlgItemMessage(_hSelf,IDC_HAS_ESCAPE, BM_GETCHECK, 0, 0);
|
||
::EnableWindow(::GetDlgItem(_hSelf, IDC_ESCAPE_CHAR), (newState == BST_CHECKED) ? TRUE : FALSE);
|
||
if ((newState == BST_CHECKED) && !::SendDlgItemMessage(_hSelf, IDC_ESCAPE_CHAR, WM_GETTEXTLENGTH, 0, 0) && (_lastEscapeChar != 0))
|
||
//restore previous char
|
||
{
|
||
_pUserLang->_escapeChar[0] = _lastEscapeChar;
|
||
::SendDlgItemMessage(_hSelf, IDC_ESCAPE_CHAR, WM_SETTEXT, 0, reinterpret_cast<LPARAM>(&_pUserLang->_escapeChar[0]));
|
||
}
|
||
else
|
||
{
|
||
_lastEscapeChar = _pUserLang->_escapeChar[0];
|
||
::SendDlgItemMessage(_hSelf,IDC_ESCAPE_CHAR,WM_SETTEXT,0,reinterpret_cast<LPARAM>(""));
|
||
_pUserLang->_escapeChar[0]='\0';
|
||
}
|
||
if (_pScintilla->getCurrentBuffer()->getLangType() == L_USER)
|
||
{
|
||
_pScintilla->execute(SCI_SETPROPERTY, (WPARAM)"userDefine.escapeChar", reinterpret_cast<LPARAM>(_pUserLang->_escapeChar));
|
||
_pScintilla->styleChange();
|
||
}
|
||
}
|
||
|
||
else if (LOWORD(wParam) == IDC_ESCAPE_CHAR)
|
||
{
|
||
if (HIWORD(wParam) == EN_CHANGE)
|
||
{
|
||
if (::SendDlgItemMessage(_hSelf, IDC_ESCAPE_CHAR, WM_GETTEXTLENGTH, 0, 0))
|
||
{
|
||
::SendDlgItemMessage(_hSelf, IDC_ESCAPE_CHAR, WM_GETTEXT, sizeof(_pUserLang->_escapeChar), reinterpret_cast<LPARAM>(&_pUserLang->_escapeChar));
|
||
_lastEscapeChar = _pUserLang->_escapeChar[0];
|
||
}
|
||
if (_pScintilla->getCurrentBuffer()->getLangType() == L_USER)
|
||
{
|
||
_pScintilla->execute(SCI_SETPROPERTY, (WPARAM)"userDefine.escapeChar", reinterpret_cast<LPARAM>(_pUserLang->_escapeChar));
|
||
_pScintilla->styleChange();
|
||
}
|
||
}
|
||
}
|
||
// 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))
|
||
{
|
||
TCHAR charStr[5] = TEXT("");
|
||
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;
|
||
|
||
TCHAR *delims = _pUserLang->_keywordLists[KWL_DELIM_INDEX];
|
||
delims[symbIndex] = charStr[0]?charStr[0]:'0';
|
||
|
||
if (_pScintilla->getCurrentBuffer()->getLangType() == L_USER)
|
||
_pScintilla->styleChange();
|
||
return TRUE;
|
||
}
|
||
else
|
||
return SharedParametersDialog::run_dlgProc(Message, wParam, lParam);
|
||
}
|
||
}
|
||
default :
|
||
return SharedParametersDialog::run_dlgProc(Message, wParam, lParam);
|
||
}
|
||
}
|
||
|
||
void SymbolsStyleDialog::undeleteChar()
|
||
{
|
||
if ((::SendDlgItemMessage(_hSelf, IDC_HAS_ESCAPE, BM_GETCHECK,0,0) == BST_CHECKED) &&
|
||
(!::SendDlgItemMessage(_hSelf, IDC_ESCAPE_CHAR, WM_GETTEXTLENGTH, 0, 0)))
|
||
{
|
||
if (_pUserLang->_escapeChar[0])
|
||
::SendDlgItemMessage(_hSelf, IDC_ESCAPE_CHAR, WM_SETTEXT, 0, reinterpret_cast<LPARAM>(&_pUserLang->_escapeChar[0]));
|
||
else
|
||
::SendDlgItemMessage(_hSelf, IDC_HAS_ESCAPE, BM_SETCHECK, BST_UNCHECKED, 0);
|
||
}
|
||
}
|
||
|
||
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;
|
||
}
|
||
}
|
||
|
||
TCHAR styleName[][32] = {TEXT("DEFAULT"), TEXT("FOLDEROPEN"), TEXT("FOLDERCLOSE"), TEXT("KEYWORD1"), TEXT("KEYWORD2"), TEXT("KEYWORD3"), TEXT("KEYWORD4"), TEXT("COMMENT"), TEXT("COMMENT LINE"), TEXT("NUMBER"), TEXT("OPERATOR"), TEXT("DELIMINER1"), TEXT("DELIMINER2"), TEXT("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::reloadLangCombo()
|
||
{
|
||
NppParameters *pNppParam = NppParameters::getInstance();
|
||
::SendDlgItemMessage(_hSelf, IDC_LANGNAME_COMBO, CB_RESETCONTENT, 0, 0);
|
||
::SendDlgItemMessage(_hSelf, IDC_LANGNAME_COMBO, CB_ADDSTRING, 0, (LPARAM)TEXT("User Define Language"));
|
||
for (int i = 0 ; i < pNppParam->getNbUserLang() ; i++)
|
||
{
|
||
UserLangContainer & userLangContainer = pNppParam->getULCFromIndex(i);
|
||
::SendDlgItemMessage(_hSelf, IDC_LANGNAME_COMBO, CB_ADDSTRING, 0, (LPARAM)userLangContainer.getName());
|
||
}
|
||
}
|
||
|
||
void UserDefineDialog::changeStyle()
|
||
{
|
||
display(false);
|
||
_status = !_status;
|
||
::SetDlgItemText(_hSelf, IDC_DOCK_BUTTON, (_status == DOCK)?TEXT("Undock"):TEXT("Dock"));
|
||
|
||
long style = ::GetWindowLongPtr(_hSelf, GWL_STYLE);
|
||
if (!style)
|
||
::MessageBox(NULL, TEXT("echou GetWindowLongPtr"), TEXT(""), 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 = ::SetWindowLongPtr(_hSelf, GWL_STYLE, style);
|
||
if (!result)
|
||
::MessageBox(NULL, TEXT("echou SetWindowLongPtr"), TEXT(""), 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.c_str());
|
||
|
||
::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();
|
||
_keyWordsStyleDlg.updateDlg();
|
||
_commentStyleDlg.updateDlg();
|
||
_symbolsStyleDlg.updateDlg();
|
||
}
|
||
|
||
BOOL CALLBACK UserDefineDialog::run_dlgProc(UINT message, WPARAM wParam, LPARAM lParam)
|
||
{
|
||
NppParameters *pNppParam = NppParameters::getInstance();
|
||
switch (message)
|
||
{
|
||
case WM_INITDIALOG :
|
||
{
|
||
_ctrlTab.init(_hInst, _hSelf, false);
|
||
_ctrlTab.setFont(TEXT("Tahoma"), 13);
|
||
|
||
_folderStyleDlg.init(_hInst, _hSelf);
|
||
_folderStyleDlg.create(IDD_FOLDER_STYLE_DLG);
|
||
_folderStyleDlg.display();
|
||
|
||
_keyWordsStyleDlg.init(_hInst, _hSelf);
|
||
_keyWordsStyleDlg.create(IDD_KEYWORD_STYLE_DLG);
|
||
_keyWordsStyleDlg.display(false);
|
||
|
||
_commentStyleDlg.init(_hInst, _hSelf);
|
||
_commentStyleDlg.create(IDD_COMMENT_STYLE_DLG);
|
||
_commentStyleDlg.display(false);
|
||
|
||
_symbolsStyleDlg.init(_hInst, _hSelf);
|
||
_symbolsStyleDlg.create(IDD_SYMBOL_STYLE_DLG);
|
||
_symbolsStyleDlg.display(false);
|
||
|
||
_wVector.push_back(DlgInfo(&_folderStyleDlg, TEXT("Folder && Default")));
|
||
_wVector.push_back(DlgInfo(&_keyWordsStyleDlg, TEXT("Keywords Lists")));
|
||
_wVector.push_back(DlgInfo(&_commentStyleDlg, TEXT("Comment && Number")));
|
||
_wVector.push_back(DlgInfo(&_symbolsStyleDlg, TEXT("Operators")));
|
||
|
||
_ctrlTab.createTabs(_wVector);
|
||
_ctrlTab.display();
|
||
|
||
RECT arc;
|
||
::GetWindowRect(::GetDlgItem(_hSelf, IDC_IMPORT_BUTTON), &arc);
|
||
|
||
POINT p;
|
||
p.x = arc.left;
|
||
p.y = arc.bottom;
|
||
::ScreenToClient(_hSelf, &p);
|
||
|
||
RECT rc;
|
||
getClientRect(rc);
|
||
rc.top = p.y + 10;
|
||
rc.bottom -= 100;
|
||
_ctrlTab.reSizeTo(rc);
|
||
|
||
_folderStyleDlg.reSizeTo(rc);
|
||
_keyWordsStyleDlg.reSizeTo(rc);
|
||
_commentStyleDlg.reSizeTo(rc);
|
||
_symbolsStyleDlg.reSizeTo(rc);
|
||
|
||
reloadLangCombo();
|
||
::SendDlgItemMessage(_hSelf, IDC_LANGNAME_COMBO, CB_SETCURSEL, 0, 0);
|
||
|
||
enableLangAndControlsBy(0);
|
||
|
||
_pUserLang = _pCurrentUserLang;
|
||
|
||
if (pNppParam->isTransparentAvailable())
|
||
{
|
||
::ShowWindow(::GetDlgItem(_hSelf, IDC_UD_TRANSPARENT_CHECK), SW_SHOW);
|
||
::ShowWindow(::GetDlgItem(_hSelf, IDC_UD_PERCENTAGE_SLIDER), SW_SHOW);
|
||
|
||
::SendDlgItemMessage(_hSelf, IDC_UD_PERCENTAGE_SLIDER, TBM_SETRANGE, FALSE, MAKELONG(20, 200));
|
||
::SendDlgItemMessage(_hSelf, IDC_UD_PERCENTAGE_SLIDER, TBM_SETPOS, TRUE, 150);
|
||
if (!(BST_CHECKED == ::SendDlgItemMessage(_hSelf, IDC_UD_PERCENTAGE_SLIDER, BM_GETCHECK, 0, 0)))
|
||
::EnableWindow(::GetDlgItem(_hSelf, IDC_UD_PERCENTAGE_SLIDER), FALSE);
|
||
}
|
||
SCROLLINFO si;
|
||
si.cbSize = sizeof(si);
|
||
si.fMask = SIF_RANGE; //| SIF_PAGE;
|
||
si.nMin = 0;
|
||
si.nMax = 0;
|
||
//si.nPage = _currentHight;
|
||
//si.nPos = 0;
|
||
::SetScrollInfo(_hSelf, SB_VERT, &si, TRUE);
|
||
|
||
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_HSCROLL :
|
||
{
|
||
if ((HWND)lParam == ::GetDlgItem(_hSelf, IDC_UD_PERCENTAGE_SLIDER))
|
||
{
|
||
int percent = ::SendDlgItemMessage(_hSelf, IDC_UD_PERCENTAGE_SLIDER, TBM_GETPOS, 0, 0);
|
||
pNppParam->SetTransparent(_hSelf, percent/*HIWORD(wParam)*/);
|
||
}
|
||
return TRUE;
|
||
}
|
||
|
||
case WM_COMMAND :
|
||
{
|
||
if (HIWORD(wParam) == EN_CHANGE)
|
||
{
|
||
TCHAR ext[extsLenMax];
|
||
::SendDlgItemMessage(_hSelf, IDC_EXT_EDIT, WM_GETTEXT, extsLenMax, (LPARAM)ext);
|
||
_pUserLang->_ext = ext;
|
||
return TRUE;
|
||
}
|
||
else if (HIWORD(wParam) == CBN_SELCHANGE)
|
||
{
|
||
if (LOWORD(wParam) == IDC_LANGNAME_COMBO)
|
||
{
|
||
int i = ::SendDlgItemMessage(_hSelf, LOWORD(wParam), CB_GETCURSEL, 0, 0);
|
||
enableLangAndControlsBy(i);
|
||
updateDlg();
|
||
}
|
||
return TRUE;
|
||
}
|
||
else
|
||
{
|
||
switch (wParam)
|
||
{
|
||
case IDC_DOCK_BUTTON :
|
||
{
|
||
int msg = WM_UNDOCK_USERDEFINE_DLG;
|
||
|
||
if (_status == UNDOCK)
|
||
{
|
||
if (pNppParam->isTransparentAvailable())
|
||
{
|
||
pNppParam->removeTransparent(_hSelf);
|
||
::ShowWindow(::GetDlgItem(_hSelf, IDC_UD_TRANSPARENT_CHECK), SW_HIDE);
|
||
::ShowWindow(::GetDlgItem(_hSelf, IDC_UD_PERCENTAGE_SLIDER), SW_HIDE);
|
||
}
|
||
msg = WM_DOCK_USERDEFINE_DLG;
|
||
}
|
||
|
||
changeStyle();
|
||
|
||
if (_status == UNDOCK)
|
||
{
|
||
if (pNppParam->isTransparentAvailable())
|
||
{
|
||
bool isChecked = (BST_CHECKED == ::SendDlgItemMessage(_hSelf, IDC_UD_TRANSPARENT_CHECK, BM_GETCHECK, 0, 0));
|
||
if (isChecked)
|
||
{
|
||
int percent = ::SendDlgItemMessage(_hSelf, IDC_UD_PERCENTAGE_SLIDER, TBM_GETPOS, 0, 0);
|
||
pNppParam->SetTransparent(_hSelf, percent);
|
||
}
|
||
::ShowWindow(::GetDlgItem(_hSelf, IDC_UD_TRANSPARENT_CHECK), SW_SHOW);
|
||
::ShowWindow(::GetDlgItem(_hSelf, IDC_UD_PERCENTAGE_SLIDER), SW_SHOW);
|
||
}
|
||
}
|
||
::SendMessage(_hParent, msg, 0, 0);
|
||
return TRUE;
|
||
}
|
||
case IDCANCEL :
|
||
::SendMessage(_hParent, WM_CLOSE_USERDEFINE_DLG, 0, 0);
|
||
display(false);
|
||
return TRUE;
|
||
|
||
case IDC_REMOVELANG_BUTTON :
|
||
{
|
||
int result = ::MessageBox(_hSelf, TEXT("Are you sure?"), TEXT("Remove the current language"), MB_YESNO);
|
||
if (result == IDYES)
|
||
{
|
||
int i = ::SendDlgItemMessage(_hSelf, IDC_LANGNAME_COMBO, CB_GETCURSEL, 0, 0);
|
||
TCHAR langName[256];
|
||
::SendDlgItemMessage(_hSelf, IDC_LANGNAME_COMBO, CB_GETLBTEXT, i, (LPARAM)langName);
|
||
|
||
//remove current language from combobox
|
||
::SendDlgItemMessage(_hSelf, IDC_LANGNAME_COMBO, CB_DELETESTRING, i, 0);
|
||
::SendDlgItemMessage(_hSelf, IDC_LANGNAME_COMBO, CB_SETCURSEL, i-1, 0);
|
||
::SendMessage(_hSelf, WM_COMMAND, MAKELONG(IDC_LANGNAME_COMBO, CBN_SELCHANGE), (LPARAM)::GetDlgItem(_hSelf, IDC_LANGNAME_COMBO));
|
||
|
||
//remove current language from userLangArray
|
||
pNppParam->removeUserLang(i-1);
|
||
|
||
//remove current language from langMenu
|
||
HWND hNpp = ::GetParent(_hSelf);
|
||
::RemoveMenu(::GetSubMenu((HMENU)::SendMessage(hNpp, NPPM_INTERNAL_GETMENU, 0, 0), MENUINDEX_LANGUAGE), IDM_LANG_USER + i, MF_BYCOMMAND);
|
||
::DrawMenuBar(hNpp);
|
||
::SendMessage(_hParent, WM_REMOVE_USERLANG, 0, (LPARAM)langName);
|
||
}
|
||
return TRUE;
|
||
}
|
||
case IDC_RENAME_BUTTON :
|
||
{
|
||
TCHAR langName[256];
|
||
int i = ::SendDlgItemMessage(_hSelf, IDC_LANGNAME_COMBO, CB_GETCURSEL, 0, 0);
|
||
::SendDlgItemMessage(_hSelf, IDC_LANGNAME_COMBO, CB_GETLBTEXT, i, (LPARAM)langName);
|
||
|
||
StringDlg strDlg;
|
||
strDlg.init(_hInst, _hSelf, TEXT("Rename Current Language Name"), TEXT("Name : "), langName, langNameLenMax-1);
|
||
|
||
TCHAR *newName = (TCHAR *)strDlg.doDialog();
|
||
|
||
if (newName)
|
||
{
|
||
if (pNppParam->isExistingUserLangName(newName))
|
||
{
|
||
::MessageBox(_hSelf, TEXT("This name is used by another language,\rplease give another one."), TEXT("Err"), MB_OK);
|
||
::PostMessage(_hSelf, WM_COMMAND, IDC_RENAME_BUTTON, 0);
|
||
return TRUE;
|
||
}
|
||
//rename current language name in combobox
|
||
::SendDlgItemMessage(_hSelf, IDC_LANGNAME_COMBO, CB_DELETESTRING, i, 0);
|
||
::SendDlgItemMessage(_hSelf, IDC_LANGNAME_COMBO, CB_INSERTSTRING, i, (LPARAM)newName);
|
||
::SendDlgItemMessage(_hSelf, IDC_LANGNAME_COMBO, CB_SETCURSEL, i, 0);
|
||
|
||
//rename current language name in userLangArray
|
||
UserLangContainer & userLangContainer = pNppParam->getULCFromIndex(i-1);
|
||
userLangContainer._name = newName;
|
||
|
||
//rename current language name in langMenu
|
||
HWND hNpp = ::GetParent(_hSelf);
|
||
::ModifyMenu(::GetSubMenu((HMENU)::SendMessage(hNpp, NPPM_INTERNAL_GETMENU, 0, 0), MENUINDEX_LANGUAGE), IDM_LANG_USER + i, MF_BYCOMMAND, IDM_LANG_USER + i, newName);
|
||
::DrawMenuBar(hNpp);
|
||
::SendMessage(_hParent, WM_RENAME_USERLANG, (WPARAM)newName, (LPARAM)langName);
|
||
}
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
case IDC_ADDNEW_BUTTON :
|
||
case IDC_SAVEAS_BUTTON :
|
||
{
|
||
//TCHAR langName[256];
|
||
int i = ::SendDlgItemMessage(_hSelf, IDC_LANGNAME_COMBO, CB_GETCURSEL, 0, 0);
|
||
//::SendDlgItemMessage(_hSelf, IDC_LANGNAME_COMBO, CB_GETLBTEXT, i, (LPARAM)langName);
|
||
if (i == 0)
|
||
wParam = IDC_ADDNEW_BUTTON;
|
||
|
||
StringDlg strDlg;
|
||
if (wParam == IDC_SAVEAS_BUTTON)
|
||
strDlg.init(_hInst, _hSelf, TEXT("Save Current Language Name As..."), TEXT("Name : "), TEXT(""), langNameLenMax-1);
|
||
else
|
||
strDlg.init(_hInst, _hSelf, TEXT("Create New Language..."), TEXT("Name : "), TEXT(""), langNameLenMax-1);
|
||
|
||
TCHAR *tmpName = (TCHAR *)strDlg.doDialog();
|
||
//const TCHAR *newName = newNameString.c_str();
|
||
|
||
if (tmpName && tmpName[0])
|
||
{
|
||
generic_string newNameString(tmpName);
|
||
const TCHAR *newName = newNameString.c_str();
|
||
|
||
if (pNppParam->isExistingUserLangName(newName))
|
||
{
|
||
::MessageBox(_hSelf, TEXT("This name is used by another language,\rplease give another one."), TEXT("Err"), MB_OK);
|
||
::PostMessage(_hSelf, WM_COMMAND, IDC_RENAME_BUTTON, 0);
|
||
return TRUE;
|
||
}
|
||
//add current language in userLangArray at the end as a new lang
|
||
UserLangContainer & userLang = (wParam == IDC_SAVEAS_BUTTON)?pNppParam->getULCFromIndex(i-1):*_pCurrentUserLang;
|
||
int newIndex = pNppParam->addUserLangToEnd(userLang, newName);
|
||
|
||
//add new language name in combobox
|
||
::SendDlgItemMessage(_hSelf, IDC_LANGNAME_COMBO, CB_ADDSTRING, 0, LPARAM(newName));
|
||
::SendDlgItemMessage(_hSelf, IDC_LANGNAME_COMBO, CB_SETCURSEL, newIndex + 1, 0);
|
||
::SendMessage(_hSelf, WM_COMMAND, MAKELONG(IDC_LANGNAME_COMBO, CBN_SELCHANGE), (LPARAM)::GetDlgItem(_hSelf, IDC_LANGNAME_COMBO));
|
||
|
||
//add new language name in langMenu
|
||
HWND hNpp = ::GetParent(_hSelf);
|
||
::InsertMenu(::GetSubMenu((HMENU)::SendMessage(hNpp, NPPM_INTERNAL_GETMENU, 0, 0), MENUINDEX_LANGUAGE), IDM_LANG_USER + newIndex /*+ 1*/, MF_BYCOMMAND, IDM_LANG_USER + newIndex + 1, newName);
|
||
::DrawMenuBar(hNpp);
|
||
}
|
||
|
||
return TRUE;
|
||
}
|
||
case IDC_IMPORT_BUTTON :
|
||
{
|
||
NppParameters *pNppParam = NppParameters::getInstance();
|
||
|
||
FileDialog fDlg(_hSelf, ::GetModuleHandle(NULL));
|
||
fDlg.setExtFilter(TEXT("UDL"), TEXT(".xml"), NULL);
|
||
TCHAR *fn = fDlg.doOpenSingleFileDlg();
|
||
if (!fn) break;
|
||
generic_string sourceFile = fn;
|
||
|
||
bool isSuccessful = pNppParam->importUDLFromFile(sourceFile);
|
||
if (isSuccessful)
|
||
{
|
||
int i = ::SendDlgItemMessage(_hSelf, IDC_LANGNAME_COMBO, CB_GETCURSEL, 0, 0);
|
||
reloadLangCombo();
|
||
::SendDlgItemMessage(_hSelf, IDC_LANGNAME_COMBO, CB_SETCURSEL, i, 0);
|
||
_isDirty = true;
|
||
printStr(TEXT("Import successful."));
|
||
}
|
||
else
|
||
{
|
||
printStr(TEXT("Fail to import."));
|
||
}
|
||
break;
|
||
}
|
||
|
||
case IDC_EXPORT_BUTTON :
|
||
{
|
||
NppParameters *pNppParam = NppParameters::getInstance();
|
||
|
||
FileDialog fDlg(_hSelf, ::GetModuleHandle(NULL));
|
||
fDlg.setExtFilter(TEXT("UDL"), TEXT(".xml"), NULL);
|
||
TCHAR *fn = fDlg.doSaveDlg();
|
||
if (!fn) break;
|
||
generic_string fileName2save = fn;
|
||
|
||
int i2Export = ::SendDlgItemMessage(_hSelf, IDC_LANGNAME_COMBO, CB_GETCURSEL, 0, 0);
|
||
|
||
if (i2Export > 0)
|
||
{
|
||
bool isSuccessful = pNppParam->exportUDLToFile(i2Export - 1, fileName2save);
|
||
if (isSuccessful)
|
||
{
|
||
printStr(TEXT("Export successful"));
|
||
}
|
||
else
|
||
{
|
||
printStr(TEXT("Fail to export."));
|
||
}
|
||
}
|
||
break;
|
||
}
|
||
|
||
case IDC_UD_TRANSPARENT_CHECK :
|
||
{
|
||
bool isChecked = (BST_CHECKED == ::SendDlgItemMessage(_hSelf, IDC_UD_TRANSPARENT_CHECK, BM_GETCHECK, 0, 0));
|
||
if (isChecked)
|
||
{
|
||
int percent = ::SendDlgItemMessage(_hSelf, IDC_UD_PERCENTAGE_SLIDER, TBM_GETPOS, 0, 0);
|
||
pNppParam->SetTransparent(_hSelf, percent);
|
||
}
|
||
else
|
||
pNppParam->removeTransparent(_hSelf);
|
||
|
||
::EnableWindow(::GetDlgItem(_hSelf, IDC_UD_PERCENTAGE_SLIDER), isChecked);
|
||
return TRUE;
|
||
}
|
||
|
||
case IDC_LANGNAME_IGNORECASE_CHECK :
|
||
return setPropertyByCheck(_hSelf, wParam, _pUserLang->_isCaseIgnored);
|
||
|
||
default :
|
||
break;
|
||
}
|
||
}
|
||
return FALSE;
|
||
}
|
||
|
||
case WM_DESTROY:
|
||
{
|
||
_folderStyleDlg.destroy();
|
||
_keyWordsStyleDlg.destroy();
|
||
_commentStyleDlg.destroy();
|
||
_symbolsStyleDlg.destroy();
|
||
|
||
_ctrlTab.destroy();
|
||
return TRUE;
|
||
}
|
||
|
||
case WM_SIZE:
|
||
{
|
||
int originalHight = _dlgPos.bottom; //- ((_status == DOCK)?_dlgPos.top:0);
|
||
_currentHight = HIWORD (lParam);
|
||
|
||
int diff = _currentHight - _prevHightVal;
|
||
_prevHightVal = _currentHight;
|
||
|
||
int maxPos = originalHight - _currentHight;
|
||
// Set the vertical scrolling range and page size
|
||
SCROLLINFO si;
|
||
si.cbSize = sizeof(si);
|
||
si.fMask = SIF_RANGE | SIF_PAGE;
|
||
si.nMin = 0;
|
||
si.nMax = (_status == UNDOCK)?0:originalHight;
|
||
si.nPage = _currentHight;
|
||
//si.nPos = 0;
|
||
::SetScrollInfo(_hSelf, SB_VERT, &si, TRUE);
|
||
|
||
if ((_yScrollPos >= maxPos) && (_currentHight < originalHight))
|
||
{
|
||
//int nDelta = min(max(maxPos/10,5), maxPos - _yScrollPos);
|
||
if (_yScrollPos > 0)
|
||
{
|
||
_yScrollPos -= diff;
|
||
::SetScrollPos(_hSelf, SB_VERT, _yScrollPos, TRUE);
|
||
::ScrollWindow(_hSelf, 0, diff, NULL, NULL);
|
||
}
|
||
}
|
||
return TRUE;
|
||
}
|
||
|
||
case WM_VSCROLL :
|
||
{
|
||
int originalHight = _dlgPos.bottom;
|
||
int oldy = _yScrollPos;
|
||
int maxPos = originalHight - _currentHight;
|
||
|
||
switch (LOWORD (wParam))
|
||
{
|
||
// user clicked the top arrow
|
||
case SB_LINEUP:
|
||
if (_yScrollPos <= 0)
|
||
return FALSE;
|
||
_yScrollPos = 0;
|
||
break;
|
||
|
||
// user clicked the bottom arrow
|
||
case SB_LINEDOWN:
|
||
if (_yScrollPos >= maxPos)
|
||
return FALSE;
|
||
_yScrollPos = maxPos;
|
||
break;
|
||
|
||
case SB_PAGEDOWN:
|
||
if (_yScrollPos >= maxPos)
|
||
return FALSE;
|
||
_yScrollPos = maxPos;
|
||
break;
|
||
|
||
case SB_PAGEUP:
|
||
if (_yScrollPos <= 0)
|
||
return FALSE;
|
||
_yScrollPos = 0;
|
||
break;
|
||
|
||
case SB_THUMBTRACK:
|
||
case SB_THUMBPOSITION:
|
||
_yScrollPos = (int)HIWORD(wParam);
|
||
break;
|
||
|
||
default :
|
||
return FALSE;
|
||
}
|
||
::SetScrollPos(_hSelf, SB_VERT, _yScrollPos, TRUE);
|
||
::ScrollWindow(_hSelf, 0, oldy-_yScrollPos, NULL, NULL);
|
||
}
|
||
case NPPM_MODELESSDIALOG :
|
||
return ::SendMessage(_hParent, NPPM_MODELESSDIALOG, wParam, lParam);
|
||
}
|
||
|
||
return FALSE;
|
||
}
|
||
|
||
BOOL CALLBACK StringDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM)
|
||
{
|
||
|
||
switch (Message)
|
||
{
|
||
case WM_INITDIALOG :
|
||
{
|
||
::SetWindowText(_hSelf, _title.c_str());
|
||
::SetDlgItemText(_hSelf, IDC_STRING_STATIC, _static.c_str());
|
||
::SetDlgItemText(_hSelf, IDC_STRING_EDIT, _textValue.c_str());
|
||
if (_txtLen)
|
||
::SendDlgItemMessage(_hSelf, IDC_STRING_EDIT, EM_SETLIMITTEXT, _txtLen, 0);
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
case WM_COMMAND :
|
||
{
|
||
switch (wParam)
|
||
{
|
||
case IDOK :
|
||
{
|
||
TCHAR tmpName[langNameLenMax];
|
||
tmpName[0] = '\0';
|
||
::GetDlgItemText(_hSelf, IDC_STRING_EDIT, (LPTSTR)tmpName, langNameLenMax);
|
||
_textValue = tmpName;
|
||
::EndDialog(_hSelf, int(_textValue.c_str()));
|
||
return TRUE;
|
||
}
|
||
|
||
case IDCANCEL :
|
||
::EndDialog(_hSelf, 0);
|
||
return TRUE;
|
||
|
||
default:
|
||
return FALSE;
|
||
}
|
||
}
|
||
default :
|
||
return FALSE;
|
||
}
|
||
}
|