[NEW_FEATURE] Add scroll to end line after update feature.

git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository@148 f5eea248-9336-0410-98b8-ebc06183d4e3
This commit is contained in:
donho 2008-03-16 03:23:04 +00:00
parent 2c7231484c
commit e7e3be93b8
10 changed files with 124 additions and 27 deletions

View File

@ -3732,6 +3732,7 @@ void Notepad_plus::command(int id)
shortcutMapper.destroy(); shortcutMapper.destroy();
break; break;
} }
/*
case IDM_SETTING_FILE_AUTODETECTION_ENABLE : case IDM_SETTING_FILE_AUTODETECTION_ENABLE :
{ {
NppGUI & nppgui = (NppGUI &)(pNppParam->getNppGUI()); NppGUI & nppgui = (NppGUI &)(pNppParam->getNppGUI());
@ -3751,7 +3752,7 @@ void Notepad_plus::command(int id)
nppgui._fileAutoDetection = cdAutoUpdate; nppgui._fileAutoDetection = cdAutoUpdate;
break; break;
} }
/*
case IDM_SETTING_TRAYICON : case IDM_SETTING_TRAYICON :
{ {
NppGUI & nppgui = (NppGUI &)(pNppParam->getNppGUI()); NppGUI & nppgui = (NppGUI &)(pNppParam->getNppGUI());
@ -4454,7 +4455,7 @@ void Notepad_plus::checkModifiedDocument()
NppParameters *pNppParam = NppParameters::getInstance(); NppParameters *pNppParam = NppParameters::getInstance();
const NppGUI & nppGUI = pNppParam->getNppGUI(); const NppGUI & nppGUI = pNppParam->getNppGUI();
bool autoUpdate = (nppGUI._fileAutoDetection == cdAutoUpdate); bool autoUpdate = (nppGUI._fileAutoDetection == cdAutoUpdate) || (nppGUI._fileAutoDetection == cdAutoUpdateGo2end);
for (int j = 0 ; j < NB_VIEW ; j++) for (int j = 0 ; j < NB_VIEW ; j++)
{ {
@ -4462,7 +4463,7 @@ void Notepad_plus::checkModifiedDocument()
{ {
Buffer & docBuf = pScintillaArray[j]->getBufferAt(i); Buffer & docBuf = pScintillaArray[j]->getBufferAt(i);
docFileStaus fStatus = docBuf.checkFileState(); docFileStaus fStatus = docBuf.checkFileState();
pDocTabArray[j]->updateTabItem(i); //pDocTabArray[j]->updateTabItem(i);
bool update = !docBuf.isDirty() && autoUpdate; bool update = !docBuf.isDirty() && autoUpdate;
if (fStatus == MODIFIED_FROM_OUTSIDE) if (fStatus == MODIFIED_FROM_OUTSIDE)
@ -4471,26 +4472,31 @@ void Notepad_plus::checkModifiedDocument()
if (::IsIconic(_hSelf)) if (::IsIconic(_hSelf))
::ShowWindow(_hSelf, SW_SHOWNORMAL); ::ShowWindow(_hSelf, SW_SHOWNORMAL);
if (update || doReloadOrNot(docBuf.getFileName()) == IDYES) if (update)
docBuf._reloadOnSwitchBack = true;
else if (doReloadOrNot(docBuf.getFileName()) == IDYES)
{ {
docBuf._reloadOnSwitchBack = true;
setTitleWith(pDocTabArray[j]->activate(i)); setTitleWith(pDocTabArray[j]->activate(i));
// if it's a non current view, make it as the current view // if it's a non current view, make it as the current view
if (j == 1) if (j == 1)
switchEditViewTo(getNonCurrentView()); switchEditViewTo(getNonCurrentView());
/*
if (pScintillaArray[j]->isCurrentBufReadOnly()) if (pScintillaArray[j]->isCurrentBufReadOnly())
pScintillaArray[j]->execute(SCI_SETREADONLY, FALSE); pScintillaArray[j]->execute(SCI_SETREADONLY, FALSE);
reload(docBuf.getFileName()); reload(docBuf.getFileName());
/*
//if (goToEOL) //if (goToEOL)
{ {
int line = _pEditView->getNbLine(); int line = _pEditView->getNbLine();
_pEditView->gotoLine(line); _pEditView->gotoLine(line);
} }
*/
if (pScintillaArray[j]->isCurrentBufReadOnly()) if (pScintillaArray[j]->isCurrentBufReadOnly())
pScintillaArray[j]->execute(SCI_SETREADONLY, TRUE); pScintillaArray[j]->execute(SCI_SETREADONLY, TRUE);
*/
} }
if (_activeAppInf._isActivated) if (_activeAppInf._isActivated)
@ -4546,6 +4552,32 @@ void Notepad_plus::checkModifiedDocument()
} }
} }
void Notepad_plus::reloadOnSwitchBack()
{
Buffer & buf = _pEditView->getCurrentBuffer();
if (buf._reloadOnSwitchBack)
{
if (_pEditView->isCurrentBufReadOnly())
_pEditView->execute(SCI_SETREADONLY, FALSE);
reload(buf.getFileName());
NppParameters *pNppParam = NppParameters::getInstance();
const NppGUI & nppGUI = pNppParam->getNppGUI();
if (nppGUI._fileAutoDetection == cdAutoUpdateGo2end || nppGUI._fileAutoDetection == cdGo2end)
{
int line = _pEditView->getNbLine();
_pEditView->gotoLine(line);
}
if (_pEditView->isCurrentBufReadOnly())
_pEditView->execute(SCI_SETREADONLY, TRUE);
buf._reloadOnSwitchBack = false;
}
}
void Notepad_plus::hideCurrentView() void Notepad_plus::hideCurrentView()
{ {
if (_mainWindowStatus & DOCK_MASK) if (_mainWindowStatus & DOCK_MASK)
@ -7455,11 +7487,11 @@ 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();
reloadOnSwitchBack();
return TRUE; return TRUE;
} }
case NPPM_INTERNAL_ISTABBARREDUCED : case NPPM_INTERNAL_ISTABBARREDUCED :
{ {
return _toReduceTabBar?TRUE:FALSE; return _toReduceTabBar?TRUE:FALSE;

View File

@ -708,6 +708,7 @@ private:
}; };
void setFileOpenSaveDlgFilters(FileDialog & fDlg); void setFileOpenSaveDlgFilters(FileDialog & fDlg);
void reloadOnSwitchBack();
}; };
#endif //NOTEPAD_PLUS_H #endif //NOTEPAD_PLUS_H

View File

@ -2174,16 +2174,20 @@ void NppParameters::feedGUIParameters(TiXmlNode *node)
val = n->Value(); val = n->Value();
if (val) if (val)
{ {
if (!strcmp(val, "yes"))
if (!strcmp(val, "no")) _nppGUI._fileAutoDetection = cdEnabled;
_nppGUI._fileAutoDetection = cdDisabled;
else if (!strcmp(val, "auto")) else if (!strcmp(val, "auto"))
_nppGUI._fileAutoDetection = cdAutoUpdate; _nppGUI._fileAutoDetection = cdAutoUpdate;
else else if (!strcmp(val, "Update2End"))
_nppGUI._fileAutoDetection = cdEnabled; _nppGUI._fileAutoDetection = cdGo2end;
else if (!strcmp(val, "autoUpdate2End"))
_nppGUI._fileAutoDetection = cdAutoUpdateGo2end;
else //(!strcmp(val, "no"))
_nppGUI._fileAutoDetection = cdDisabled;
} }
} }
} }
else if (!strcmp(nm, "TrayIcon")) else if (!strcmp(nm, "TrayIcon"))
{ {
TiXmlNode *n = childNode->FirstChild(); TiXmlNode *n = childNode->FirstChild();
@ -3055,7 +3059,22 @@ bool NppParameters::writeGUIParams()
else if (!strcmp(nm, "Auto-detection")) else if (!strcmp(nm, "Auto-detection"))
{ {
autoDetectionExist = true; autoDetectionExist = true;
const char *pStr = (cdEnabled == _nppGUI._fileAutoDetection)?"yes":((cdAutoUpdate == _nppGUI._fileAutoDetection)?"auto":"no"); const char *pStr = "no";
switch (_nppGUI._fileAutoDetection)
{
case cdEnabled:
pStr = "yes";
break;
case cdAutoUpdate:
pStr = "auto";
break;
case cdGo2end:
pStr = "Update2End";
break;
case cdAutoUpdateGo2end:
pStr = "autoUpdate2End";
break;
}
TiXmlNode *n = childNode->FirstChild(); TiXmlNode *n = childNode->FirstChild();
if (n) if (n)
n->SetValue(pStr); n->SetValue(pStr);
@ -3248,8 +3267,22 @@ bool NppParameters::writeGUIParams()
if (!autoDetectionExist) if (!autoDetectionExist)
{ {
//insertGUIConfigBoolNode(GUIRoot, "Auto-detection", _nppGUI._fileAutoDetection); const char *pStr = "no";
const char *pStr = _nppGUI._fileAutoDetection==0?"no":(_nppGUI._fileAutoDetection==1?"yes":"auto"); switch (_nppGUI._fileAutoDetection)
{
case cdEnabled:
pStr = "yes";
break;
case cdAutoUpdate:
pStr = "auto";
break;
case cdGo2end:
pStr = "Update2End";
break;
case cdAutoUpdateGo2end:
pStr = "autoUpdate2End";
break;
}
TiXmlElement *GUIConfigElement = (GUIRoot->InsertEndChild(TiXmlElement("GUIConfig")))->ToElement(); TiXmlElement *GUIConfigElement = (GUIRoot->InsertEndChild(TiXmlElement("GUIConfig")))->ToElement();
GUIConfigElement->SetAttribute("name", "Auto-detection"); GUIConfigElement->SetAttribute("name", "Auto-detection");
GUIConfigElement->InsertEndChild(TiXmlText(pStr)); GUIConfigElement->InsertEndChild(TiXmlText(pStr));

View File

@ -57,7 +57,8 @@ enum formatType {WIN_FORMAT, MAC_FORMAT, UNIX_FORMAT};
enum UniMode {uni8Bit=0, uniUTF8=1, uni16BE=2, uni16LE=3, uniCookie=4, uniEnd}; enum UniMode {uni8Bit=0, uniUTF8=1, uni16BE=2, uni16LE=3, uniCookie=4, uniEnd};
enum ChangeDetect {cdDisabled=0, cdEnabled=1, cdAutoUpdate=2}; enum ChangeDetect {cdDisabled=0, cdEnabled=1, cdAutoUpdate=2, cdGo2end=3, cdAutoUpdateGo2end=4};
enum BackupFeature {bak_none = 0, bak_simple = 1, bak_verbose = 2}; enum BackupFeature {bak_none = 0, bak_simple = 1, bak_verbose = 2};

View File

@ -107,7 +107,7 @@ public :
Buffer(const Buffer & buf) : _isDirty(buf._isDirty), _doc(buf._doc), _lang(buf._lang), Buffer(const Buffer & buf) : _isDirty(buf._isDirty), _doc(buf._doc), _lang(buf._lang),
_timeStamp(buf._timeStamp), _isReadOnly(buf._isReadOnly), _isSetReadOnly(buf._isSetReadOnly), _pos(buf._pos), _timeStamp(buf._timeStamp), _isReadOnly(buf._isReadOnly), _isSetReadOnly(buf._isSetReadOnly), _pos(buf._pos),
_format(buf._format),_unicodeMode(buf._unicodeMode), _foldState(buf._foldState), _recentTag(buf._recentTag), _format(buf._format),_unicodeMode(buf._unicodeMode), _foldState(buf._foldState), _recentTag(buf._recentTag),
_dontBotherMeAnymore(false) _dontBotherMeAnymore(false), _reloadOnSwitchBack(false)
{ {
strcpy(_fullPathName, buf._fullPathName); strcpy(_fullPathName, buf._fullPathName);
strcpy(_userLangExt, buf._userLangExt); strcpy(_userLangExt, buf._userLangExt);
@ -339,6 +339,7 @@ private :
static long _recentTagCtr; static long _recentTagCtr;
//bool _isBinary; //bool _isBinary;
bool _dontBotherMeAnymore; bool _dontBotherMeAnymore;
bool _reloadOnSwitchBack;
Lang * getCurrentLang() const { Lang * getCurrentLang() const {
int i = 0 ; int i = 0 ;

View File

@ -79,7 +79,7 @@ LRESULT ColourPicker::runProc(UINT Message, WPARAM wParam, LPARAM lParam)
p.y = rc.top + rc.bottom; p.y = rc.top + rc.bottom;
::ClientToScreen(_hSelf, &p); ::ClientToScreen(_hSelf, &p);
_pColourPopup = new ColourPopup; _pColourPopup = new ColourPopup(_currentColour);
_pColourPopup->init(_hInst, _hSelf); _pColourPopup->init(_hInst, _hSelf);
_pColourPopup->doDialog(p); _pColourPopup->doDialog(p);
} }

View File

@ -191,6 +191,7 @@ BOOL CALLBACK ColourPopup::run_dlgProc(UINT message, WPARAM wParam, LPARAM lPara
cc.hwndOwner = _hParent; cc.hwndOwner = _hParent;
cc.lpCustColors = (LPDWORD) acrCustClr; cc.lpCustColors = (LPDWORD) acrCustClr;
cc.rgbResult = _colour;
cc.Flags = CC_FULLOPEN | CC_RGBINIT; cc.Flags = CC_FULLOPEN | CC_RGBINIT;
display(false); display(false);
@ -236,3 +237,4 @@ BOOL CALLBACK ColourPopup::run_dlgProc(UINT message, WPARAM wParam, LPARAM lPara
} }

View File

@ -31,6 +31,7 @@ class ColourPopup : public Window
{ {
public : public :
ColourPopup() : Window(), isColourChooserLaunched(false) {}; ColourPopup() : Window(), isColourChooserLaunched(false) {};
ColourPopup(COLORREF defaultColor) : Window(), isColourChooserLaunched(false), _colour(defaultColor) {};
~ColourPopup(){}; ~ColourPopup(){};
bool isCreated() const { bool isCreated() const {
@ -64,3 +65,4 @@ private :
#endif //COLOUR_POPUP_H #endif //COLOUR_POPUP_H

View File

@ -441,7 +441,7 @@ BOOL CALLBACK SettingsDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM lPara
::SendDlgItemMessage(_hSelf, IDC_CHECK_REPLACEBYSPACE, BM_SETCHECK, nppGUI._tabReplacedBySpace, 0); ::SendDlgItemMessage(_hSelf, IDC_CHECK_REPLACEBYSPACE, BM_SETCHECK, nppGUI._tabReplacedBySpace, 0);
::SendDlgItemMessage(_hSelf, IDC_CHECK_DONTCHECKHISTORY, BM_SETCHECK, !nppGUI._checkHistoryFiles, 0); ::SendDlgItemMessage(_hSelf, IDC_CHECK_DONTCHECKHISTORY, BM_SETCHECK, !nppGUI._checkHistoryFiles, 0);
//
if (nppGUI._fileAutoDetection == cdEnabled) if (nppGUI._fileAutoDetection == cdEnabled)
{ {
::SendDlgItemMessage(_hSelf, IDC_CHECK_FILEAUTODETECTION, BM_SETCHECK, BST_CHECKED, 0); ::SendDlgItemMessage(_hSelf, IDC_CHECK_FILEAUTODETECTION, BM_SETCHECK, BST_CHECKED, 0);
@ -451,9 +451,21 @@ BOOL CALLBACK SettingsDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM lPara
::SendDlgItemMessage(_hSelf, IDC_CHECK_FILEAUTODETECTION, BM_SETCHECK, BST_CHECKED, 0); ::SendDlgItemMessage(_hSelf, IDC_CHECK_FILEAUTODETECTION, BM_SETCHECK, BST_CHECKED, 0);
::SendDlgItemMessage(_hSelf, IDC_CHECK_UPDATESILENTLY, BM_SETCHECK, BST_CHECKED, 0); ::SendDlgItemMessage(_hSelf, IDC_CHECK_UPDATESILENTLY, BM_SETCHECK, BST_CHECKED, 0);
} }
else if (nppGUI._fileAutoDetection == cdGo2end)
{
::SendDlgItemMessage(_hSelf, IDC_CHECK_FILEAUTODETECTION, BM_SETCHECK, BST_CHECKED, 0);
::SendDlgItemMessage(_hSelf, IDC_CHECK_UPDATEGOTOEOF, BM_SETCHECK, BST_CHECKED, 0);
}
else if (nppGUI._fileAutoDetection == cdAutoUpdateGo2end)
{
::SendDlgItemMessage(_hSelf, IDC_CHECK_FILEAUTODETECTION, BM_SETCHECK, BST_CHECKED, 0);
::SendDlgItemMessage(_hSelf, IDC_CHECK_UPDATESILENTLY, BM_SETCHECK, BST_CHECKED, 0);
::SendDlgItemMessage(_hSelf, IDC_CHECK_UPDATEGOTOEOF, BM_SETCHECK, BST_CHECKED, 0);
}
else //cdDisabled else //cdDisabled
{ {
::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_UPDATESILENTLY), FALSE); ::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_UPDATESILENTLY), FALSE);
::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_UPDATEGOTOEOF), FALSE);
} }
::SendDlgItemMessage(_hSelf, IDC_CHECK_MIN2SYSTRAY, BM_SETCHECK, nppGUI._isMinimizedToTray, 0); ::SendDlgItemMessage(_hSelf, IDC_CHECK_MIN2SYSTRAY, BM_SETCHECK, nppGUI._isMinimizedToTray, 0);
@ -532,20 +544,36 @@ BOOL CALLBACK SettingsDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM lPara
{ {
bool isChecked = isCheckedOrNot(IDC_CHECK_FILEAUTODETECTION); bool isChecked = isCheckedOrNot(IDC_CHECK_FILEAUTODETECTION);
if (!isChecked) if (!isChecked)
{
::SendDlgItemMessage(_hSelf, IDC_CHECK_UPDATESILENTLY, BM_SETCHECK, BST_UNCHECKED, 0); ::SendDlgItemMessage(_hSelf, IDC_CHECK_UPDATESILENTLY, BM_SETCHECK, BST_UNCHECKED, 0);
::SendDlgItemMessage(_hSelf, IDC_CHECK_UPDATEGOTOEOF, BM_SETCHECK, BST_UNCHECKED, 0);
}
::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_UPDATESILENTLY), isChecked); ::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_UPDATESILENTLY), isChecked);
::SendMessage(_hParent, WM_COMMAND, isChecked?IDM_SETTING_FILE_AUTODETECTION_ENABLE:IDM_SETTING_FILE_AUTODETECTION_DISABLE, 0); ::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_UPDATEGOTOEOF), isChecked);
nppGUI._fileAutoDetection = isChecked?cdAutoUpdate:cdDisabled;
//::SendMessage(_hParent, WM_COMMAND, isChecked?IDM_SETTING_FILE_AUTODETECTION_ENABLE:IDM_SETTING_FILE_AUTODETECTION_DISABLE, 0);
} }
return TRUE; return TRUE;
case IDC_CHECK_UPDATESILENTLY: case IDC_CHECK_UPDATESILENTLY:
case IDC_CHECK_UPDATEGOTOEOF:
{ {
bool isChecked = isCheckedOrNot(IDC_CHECK_UPDATESILENTLY); bool isSilent = isCheckedOrNot(IDC_CHECK_UPDATESILENTLY);
::SendMessage(_hParent, WM_COMMAND, isChecked?IDM_SETTING_FILE_AUTODETECTION_ENABLESILENTLY:IDM_SETTING_FILE_AUTODETECTION_ENABLE, 0); bool isGo2End = isCheckedOrNot(IDC_CHECK_UPDATEGOTOEOF);
ChangeDetect cd;
if (!isSilent && isGo2End)
cd = cdGo2end;
else if (isSilent && !isGo2End)
cd = cdAutoUpdate;
else
cd = cdAutoUpdateGo2end;
nppGUI._fileAutoDetection = cd;
} }
return TRUE; return TRUE;
case IDC_CHECK_CLICKABLELINK_ENABLE: case IDC_CHECK_CLICKABLELINK_ENABLE:
{ {
bool isChecked = isCheckedOrNot(IDC_CHECK_CLICKABLELINK_ENABLE); bool isChecked = isCheckedOrNot(IDC_CHECK_CLICKABLELINK_ENABLE);

View File

@ -270,9 +270,6 @@
#define IDM_SETTING_REMEMBER_LAST_SESSION (IDM_SETTING + 10) #define IDM_SETTING_REMEMBER_LAST_SESSION (IDM_SETTING + 10)
#define IDM_SETTING_PREFERECE (IDM_SETTING + 11) #define IDM_SETTING_PREFERECE (IDM_SETTING + 11)
#define IDM_SETTING_FILE_AUTODETECTION_ENABLE (IDM_SETTING + 12)
#define IDM_SETTING_FILE_AUTODETECTION_DISABLE (IDM_SETTING + 13)
#define IDM_SETTING_FILE_AUTODETECTION_ENABLESILENTLY (IDM_SETTING + 14)
#define IDM_SETTING_AUTOCNBCHAR (IDM_SETTING + 15) #define IDM_SETTING_AUTOCNBCHAR (IDM_SETTING + 15)
// Menu macro // Menu macro