[CHANGE] Change "UTF8 without BOM" menu item behaviour.

git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository@87 f5eea248-9336-0410-98b8-ebc06183d4e3
This commit is contained in:
donho 2007-12-16 18:24:24 +00:00
parent 8c1a5f5579
commit 8daa6278fe
3 changed files with 31 additions and 70 deletions

View File

@ -276,9 +276,6 @@ void Notepad_plus::init(HINSTANCE hInst, HWND parent, const char *cmdLine, CmdLi
setTitleWith(_pEditView->getCurrentTitle()); setTitleWith(_pEditView->getCurrentTitle());
//setLangStatus(_pEditView->getCurrentDocType());
//checkDocState();
// Notify plugins that Notepad++ is ready // Notify plugins that Notepad++ is ready
SCNotification scnN; SCNotification scnN;
scnN.nmhdr.code = NPPN_READY; scnN.nmhdr.code = NPPN_READY;
@ -289,7 +286,6 @@ void Notepad_plus::init(HINSTANCE hInst, HWND parent, const char *cmdLine, CmdLi
::ShowWindow(_hSelf, nppGUI._isMaximized?SW_MAXIMIZE:SW_SHOW); ::ShowWindow(_hSelf, nppGUI._isMaximized?SW_MAXIMIZE:SW_SHOW);
if (cmdLineParams->_isNoTab) if (cmdLineParams->_isNoTab)
{ {
//::MessageBox(_hSelf, "bingo", "", MB_OK);
::SendMessage(_hSelf, NPPM_HIDETABBAR, 0, TRUE); ::SendMessage(_hSelf, NPPM_HIDETABBAR, 0, TRUE);
} }
} }
@ -1255,6 +1251,7 @@ void Notepad_plus::checkDocState()
} }
enableConvertMenuItems((_pEditView->getCurrentBuffer()).getFormat()); enableConvertMenuItems((_pEditView->getCurrentBuffer()).getFormat());
checkUnicodeMenuItems((_pEditView->getCurrentBuffer()).getUnicodeMode());
checkLangsMenu(-1); checkLangsMenu(-1);
} }
@ -3174,12 +3171,10 @@ void Notepad_plus::command(int id)
case IDM_FORMAT_AS_UTF_8 : case IDM_FORMAT_AS_UTF_8 :
{ {
UniMode um; UniMode um;
bool isUnicodeMode = true;
switch (id) switch (id)
{ {
case IDM_FORMAT_ANSI: case IDM_FORMAT_AS_UTF_8:
um = uni8Bit; um = uniCookie;
isUnicodeMode = false;
break; break;
case IDM_FORMAT_UTF_8: case IDM_FORMAT_UTF_8:
@ -3194,29 +3189,20 @@ void Notepad_plus::command(int id)
um = uni16LE; um = uni16LE;
break; break;
default : // IDM_FORMAT_AS_UTF_8 default : // IDM_FORMAT_ANSI
{ um = uni8Bit;
bool wasChecked = (_pEditView->getCurrentBuffer().getUnicodeMode() == uniCookie);
if (wasChecked)
{
um = uni8Bit;
isUnicodeMode = false;
}
else
{
um = uniCookie;
checkMenuItem(IDM_FORMAT_AS_UTF_8, false);
}
}
} }
_pEditView->getCurrentBuffer().setUnicodeMode(um); if (_pEditView->getCurrentBuffer().getUnicodeMode() != um)
_pDocTab->updateCurrentTabItem(); {
checkDocState(); _pEditView->getCurrentBuffer().setUnicodeMode(um);
synchronise(); _pDocTab->updateCurrentTabItem();
checkDocState();
synchronise();
_pEditView->execute(SCI_SETCODEPAGE, isUnicodeMode?SC_CP_UTF8:0); _pEditView->execute(SCI_SETCODEPAGE, (um != uni8Bit)?SC_CP_UTF8:0);
checkUnicodeMenuItems(um); checkUnicodeMenuItems(um);
setUniModeText(um); setUniModeText(um);
}
break; break;
} }
@ -4543,25 +4529,14 @@ void Notepad_plus::checkUnicodeMenuItems(UniMode um) const
int id = -1; int id = -1;
switch (um) switch (um)
{ {
case uni8Bit : id = IDM_FORMAT_ANSI; break; case uniUTF8 : id = IDM_FORMAT_UTF_8; break;
case uniUTF8 : id = IDM_FORMAT_UTF_8; break; case uni16BE : id = IDM_FORMAT_UCS_2BE; break;
case uni16BE : id = IDM_FORMAT_UCS_2BE; break; case uni16LE : id = IDM_FORMAT_UCS_2LE; break;
case uni16LE : id = IDM_FORMAT_UCS_2LE; break; case uniCookie : id = IDM_FORMAT_AS_UTF_8; break;
} default :
if (id != -1) id = IDM_FORMAT_ANSI;
{
::CheckMenuRadioItem(::GetMenu(_hSelf), IDM_FORMAT_ANSI, IDM_FORMAT_UCS_2LE, id, MF_BYCOMMAND);
//if (um != uni8Bit)
checkMenuItem(IDM_FORMAT_AS_UTF_8, FALSE);
enableCommand(IDM_FORMAT_AS_UTF_8, (um == uni8Bit), MENU);
}
else
{
::CheckMenuRadioItem(::GetMenu(_hSelf), IDM_FORMAT_ANSI, IDM_FORMAT_UCS_2LE, IDM_FORMAT_ANSI, MF_BYCOMMAND);
enableCommand(IDM_FORMAT_AS_UTF_8, true, MENU);
checkMenuItem(IDM_FORMAT_AS_UTF_8, true);
} }
::CheckMenuRadioItem(::GetMenu(_hSelf), IDM_FORMAT_ANSI, IDM_FORMAT_AS_UTF_8, id, MF_BYCOMMAND);
} }
static bool isInList(string word, const vector<string> & wordArray) static bool isInList(string word, const vector<string> & wordArray)
@ -6490,26 +6465,26 @@ LRESULT Notepad_plus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
else else
return -1; return -1;
/* get text of current scintilla */ // get text of current scintilla
length = pSci->execute(SCI_GETTEXTLENGTH, 0, 0) + 1; length = pSci->execute(SCI_GETTEXTLENGTH, 0, 0) + 1;
buffer = (char*)new char[length]; buffer = (char*)new char[length];
pSci->execute(SCI_GETTEXT, length, (LPARAM)buffer); pSci->execute(SCI_GETTEXT, length, (LPARAM)buffer);
length = UnicodeConvertor.convert(buffer, length-1); length = UnicodeConvertor.convert(buffer, length-1);
/* set text in target */ // set text in target
pSci->execute(SCI_CLEARALL, 0, 0); pSci->execute(SCI_CLEARALL, 0, 0);
pSci->execute(SCI_ADDTEXT, length, (LPARAM)UnicodeConvertor.getNewBuf()); pSci->execute(SCI_ADDTEXT, length, (LPARAM)UnicodeConvertor.getNewBuf());
pSci->execute(SCI_EMPTYUNDOBUFFER, 0, 0); pSci->execute(SCI_EMPTYUNDOBUFFER, 0, 0);
/* set cursor position */ // set cursor position
pSci->execute(SCI_GOTOPOS, 0, 0); pSci->execute(SCI_GOTOPOS, 0, 0);
/* clean buffer */ // clean buffer
delete [] buffer; delete [] buffer;
/* set new encoding if BOM was changed by other programms */ // set new encoding if BOM was changed by other programms
UniMode um = UnicodeConvertor.getEncoding(); UniMode um = UnicodeConvertor.getEncoding();
(pSci->getCurrentBuffer()).setUnicodeMode(um); (pSci->getCurrentBuffer()).setUnicodeMode(um);
checkUnicodeMenuItems(um); checkUnicodeMenuItems(um);
@ -6520,19 +6495,8 @@ LRESULT Notepad_plus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
return um; return um;
} }
/*
case NPPM_ACTIVATEDOC : case NPPM_ACTIVATEDOC :
{
int whichView = ((wParam != MAIN_VIEW) && (wParam != SUB_VIEW))?getCurrentView():wParam;
int index = lParam;
switchEditViewTo(whichView);
activateDoc(index);
return TRUE;
}
*/ case NPPM_ACTIVATEDOC :
case NPPM_ACTIVATEDOCMENU: case NPPM_ACTIVATEDOCMENU:
{ {
// similar to NPPM_ACTIVEDOC // similar to NPPM_ACTIVEDOC
@ -6801,6 +6765,7 @@ LRESULT Notepad_plus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
checkDocState(); checkDocState();
dynamicCheckMenuAndTB(); dynamicCheckMenuAndTB();
setLangStatus(_pEditView->getCurrentDocType()); setLangStatus(_pEditView->getCurrentDocType());
//checkUnicodeMenuItems(_pEditView->getCurrentBuffer().getUnicodeMode());
updateStatusBar(); updateStatusBar();
return TRUE; return TRUE;
} }

View File

@ -511,10 +511,6 @@ private:
void fileNew(){ void fileNew(){
setTitleWith(_pDocTab->newDoc(NULL)); setTitleWith(_pDocTab->newDoc(NULL));
//updateStatusBar();
//dynamicCheckMenuAndTB();
//checkDocState();
//setLangStatus(_pEditView->getCurrentDocType());
setWorkingDir(NULL); setWorkingDir(NULL);
}; };

View File

@ -390,10 +390,10 @@ BEGIN
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "Encode in ANSI", IDM_FORMAT_ANSI MENUITEM "Encode in ANSI", IDM_FORMAT_ANSI
MENUITEM "Encode in UTF-8", IDM_FORMAT_UTF_8 MENUITEM "Encode in UTF-8", IDM_FORMAT_UTF_8
MENUITEM "Encode in UTF-8 without BOM", IDM_FORMAT_AS_UTF_8
MENUITEM "Encode in UCS-2 Big Endian", IDM_FORMAT_UCS_2BE MENUITEM "Encode in UCS-2 Big Endian", IDM_FORMAT_UCS_2BE
MENUITEM "Encode in UCS-2 Little Endian", IDM_FORMAT_UCS_2LE MENUITEM "Encode in UCS-2 Little Endian", IDM_FORMAT_UCS_2LE
MENUITEM SEPARATOR //MENUITEM SEPARATOR
MENUITEM "UTF-8 without BOM", IDM_FORMAT_AS_UTF_8
END END
POPUP "&Language" POPUP "&Language"