Skip to content

Commit

Permalink
[NEW_FEATURE]
Browse files Browse the repository at this point in the history
- Add line wrap methods.
- Make folding margin hidable.
- One set of settings are applied in 2 scintilla controls.

- Notepad-plus svn trunk @ 643
  • Loading branch information
donho committed Jul 26, 2010
1 parent eb41675 commit e46e0a3
Show file tree
Hide file tree
Showing 15 changed files with 230 additions and 179 deletions.
166 changes: 66 additions & 100 deletions PowerEditor/src/Notepad_plus.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ LRESULT Notepad_plus::init(HWND hwnd)
_activeView = MAIN_VIEW;

const ScintillaViewParams & svp1 = pNppParam->getSVP(SCIV_PRIMARY);
const ScintillaViewParams & svp2 = pNppParam->getSVP(SCIV_SECOND);
//const ScintillaViewParams & svp2 = pNppParam->getSVP(SCIV_SECOND);

int tabBarStatus = nppGUI._tabStatus;
_toReduceTabBar = ((tabBarStatus & TAB_REDUCE) != 0);
Expand All @@ -192,12 +192,12 @@ LRESULT Notepad_plus::init(HWND hwnd)

// Configuration of 2 scintilla views
_mainEditView.showMargin(ScintillaEditView::_SC_MARGE_LINENUMBER, svp1._lineNumberMarginShow);
_subEditView.showMargin(ScintillaEditView::_SC_MARGE_LINENUMBER, svp2._lineNumberMarginShow);
_subEditView.showMargin(ScintillaEditView::_SC_MARGE_LINENUMBER, svp1._lineNumberMarginShow);
_mainEditView.showMargin(ScintillaEditView::_SC_MARGE_SYBOLE, svp1._bookMarkMarginShow);
_subEditView.showMargin(ScintillaEditView::_SC_MARGE_SYBOLE, svp2._bookMarkMarginShow);
_subEditView.showMargin(ScintillaEditView::_SC_MARGE_SYBOLE, svp1._bookMarkMarginShow);

_mainEditView.showIndentGuideLine(svp1._indentGuideLineShow);
_subEditView.showIndentGuideLine(svp2._indentGuideLineShow);
_subEditView.showIndentGuideLine(svp1._indentGuideLineShow);

::SendMessage(hwnd, NPPM_INTERNAL_SETCARETWIDTH, 0, 0);
::SendMessage(hwnd, NPPM_INTERNAL_SETCARETBLINKRATE, 0, 0);
Expand All @@ -207,37 +207,41 @@ LRESULT Notepad_plus::init(HWND hwnd)

//Marker Margin config
_mainEditView.setMakerStyle(svp1._folderStyle);
_subEditView.setMakerStyle(svp2._folderStyle);
_subEditView.setMakerStyle(svp1._folderStyle);

//Line wrap method
_mainEditView.setWrapMode(svp1._lineWrapMethod);
_subEditView.setWrapMode(svp1._lineWrapMethod);

_mainEditView.execute(SCI_SETCARETLINEVISIBLE, svp1._currentLineHilitingShow);
_subEditView.execute(SCI_SETCARETLINEVISIBLE, svp2._currentLineHilitingShow);
_subEditView.execute(SCI_SETCARETLINEVISIBLE, svp1._currentLineHilitingShow);

_mainEditView.execute(SCI_SETCARETLINEVISIBLEALWAYS, true);
_subEditView.execute(SCI_SETCARETLINEVISIBLEALWAYS, true);

_mainEditView.wrap(svp1._doWrap);
_subEditView.wrap(svp2._doWrap);
_subEditView.wrap(svp1._doWrap);

_mainEditView.execute(SCI_SETEDGECOLUMN, svp1._edgeNbColumn);
_mainEditView.execute(SCI_SETEDGEMODE, svp1._edgeMode);
_subEditView.execute(SCI_SETEDGECOLUMN, svp2._edgeNbColumn);
_subEditView.execute(SCI_SETEDGEMODE, svp2._edgeMode);
_subEditView.execute(SCI_SETEDGECOLUMN, svp1._edgeNbColumn);
_subEditView.execute(SCI_SETEDGEMODE, svp1._edgeMode);

_mainEditView.showEOL(svp1._eolShow);
_subEditView.showEOL(svp2._eolShow);
_subEditView.showEOL(svp1._eolShow);

_mainEditView.showWSAndTab(svp1._whiteSpaceShow);
_subEditView.showWSAndTab(svp2._whiteSpaceShow);
_subEditView.showWSAndTab(svp1._whiteSpaceShow);

_mainEditView.showWrapSymbol(svp1._wrapSymbolShow);
_subEditView.showWrapSymbol(svp2._wrapSymbolShow);
_subEditView.showWrapSymbol(svp1._wrapSymbolShow);

_mainEditView.performGlobalStyles();
_subEditView.performGlobalStyles();

_zoomOriginalValue = _pEditView->execute(SCI_GETZOOM);
_mainEditView.execute(SCI_SETZOOM, svp1._zoom);
_subEditView.execute(SCI_SETZOOM, svp2._zoom);
_subEditView.execute(SCI_SETZOOM, svp1._zoom);

::SendMessage(hwnd, NPPM_INTERNAL_SETMULTISELCTION, 0, 0);

Expand Down Expand Up @@ -1740,35 +1744,6 @@ void Notepad_plus::setUniModeText()
_statusBar.setText(uniModeTextString.c_str(), STATUSBAR_UNICODE_TYPE);
}

int Notepad_plus::getFolderMarginStyle() const
{
if (::GetMenuState(_mainMenuHandle, IDM_VIEW_FOLDERMAGIN_SIMPLE, MF_BYCOMMAND) == MF_CHECKED)
return IDM_VIEW_FOLDERMAGIN_SIMPLE;

if (::GetMenuState(_mainMenuHandle, IDM_VIEW_FOLDERMAGIN_ARROW, MF_BYCOMMAND) == MF_CHECKED)
return IDM_VIEW_FOLDERMAGIN_ARROW;

if (::GetMenuState(_mainMenuHandle, IDM_VIEW_FOLDERMAGIN_CIRCLE, MF_BYCOMMAND) == MF_CHECKED)
return IDM_VIEW_FOLDERMAGIN_CIRCLE;

if (::GetMenuState(_mainMenuHandle, IDM_VIEW_FOLDERMAGIN_BOX, MF_BYCOMMAND) == MF_CHECKED)
return IDM_VIEW_FOLDERMAGIN_BOX;

return 0;
}

int Notepad_plus::getFolderMaginStyleIDFrom(folderStyle fStyle) const
{
switch (fStyle)
{
case FOLDER_STYLE_SIMPLE : return IDM_VIEW_FOLDERMAGIN_SIMPLE;
case FOLDER_STYLE_ARROW : return IDM_VIEW_FOLDERMAGIN_ARROW;
case FOLDER_STYLE_CIRCLE : return IDM_VIEW_FOLDERMAGIN_CIRCLE;
case FOLDER_STYLE_BOX : return IDM_VIEW_FOLDERMAGIN_BOX;
default : return FOLDER_TYPE;
}
}


void Notepad_plus::charAdded(TCHAR chAdded)
{
Expand Down Expand Up @@ -1932,60 +1907,67 @@ void Notepad_plus::MaintainIndentation(TCHAR ch)
}
}
}
void Notepad_plus::specialCmd(int id, int param)
void Notepad_plus::specialCmd(int id/*, int param*/)
{
if ((param != 1) && (param != 2)) return;
//if ((param != 1) && (param != 2)) return;

NppParameters *pNppParam = NppParameters::getInstance();
ScintillaEditView *pEditView = (param == 1)?&_mainEditView:&_subEditView;
//ScintillaEditView *pEditView = (param == 1)?&_mainEditView:&_subEditView;

switch (id)
{
case IDM_VIEW_LINENUMBER:
case IDM_VIEW_SYMBOLMARGIN:
//case IDM_VIEW_DOCCHANGEMARGIN:
case IDM_VIEW_FOLDERMAGIN:
case IDM_VIEW_DOCCHANGEMARGIN:
{
int margin;
if (id == IDM_VIEW_LINENUMBER)
margin = ScintillaEditView::_SC_MARGE_LINENUMBER;
else if (id == IDM_VIEW_SYMBOLMARGIN)
else //if (id == IDM_VIEW_SYMBOLMARGIN)
margin = ScintillaEditView::_SC_MARGE_SYBOLE;
/*
else if (id == IDM_VIEW_DOCCHANGEMARGIN)
{
margin = ScintillaEditView::_SC_MARGE_MODIFMARKER;
}
*/
else
margin = ScintillaEditView::_SC_MARGE_FOLDER;

if (pEditView->hasMarginShowed(margin))
pEditView->showMargin(margin, false);
*/
if (_mainEditView.hasMarginShowed(margin))
{
_mainEditView.showMargin(margin, false);
_subEditView.showMargin(margin, false);
}
else
pEditView->showMargin(margin);

{
_mainEditView.showMargin(margin);
_subEditView.showMargin(margin);
}
break;
}

case IDM_VIEW_FOLDERMAGIN_SIMPLE:
case IDM_VIEW_FOLDERMAGIN_ARROW:
case IDM_VIEW_FOLDERMAGIN_CIRCLE:
case IDM_VIEW_FOLDERMAGIN_BOX:
case IDM_VIEW_FOLDERMAGIN:
{
int checkedID = getFolderMarginStyle();
if (checkedID == id) return;
folderStyle fStyle = (id == IDM_VIEW_FOLDERMAGIN_SIMPLE)?FOLDER_STYLE_SIMPLE:\
((id == IDM_VIEW_FOLDERMAGIN_ARROW)?FOLDER_STYLE_ARROW:\
((id == IDM_VIEW_FOLDERMAGIN_CIRCLE)?FOLDER_STYLE_CIRCLE:FOLDER_STYLE_BOX));
pEditView->setMakerStyle(fStyle);
(id == IDM_VIEW_FOLDERMAGIN_ARROW)?FOLDER_STYLE_ARROW:\
(id == IDM_VIEW_FOLDERMAGIN_CIRCLE)?FOLDER_STYLE_CIRCLE:\
(id == IDM_VIEW_FOLDERMAGIN)?FOLDER_STYLE_NONE:FOLDER_STYLE_BOX;

_mainEditView.setMakerStyle(fStyle);
_subEditView.setMakerStyle(fStyle);
break;
}

case IDM_VIEW_CURLINE_HILITING:
{
COLORREF colour = pNppParam->getCurLineHilitingColour();
pEditView->setCurrentLineHiLiting(!_pEditView->isCurrentLineHiLiting(), colour);
_mainEditView.setCurrentLineHiLiting(!_pEditView->isCurrentLineHiLiting(), colour);
_subEditView.setCurrentLineHiLiting(!_pEditView->isCurrentLineHiLiting(), colour);
break;
}

Expand All @@ -2009,14 +1991,16 @@ void Notepad_plus::specialCmd(int id, int param)
default :
mode = EDGE_NONE;
}
pEditView->execute(SCI_SETEDGEMODE, mode);
_mainEditView.execute(SCI_SETEDGEMODE, mode);
_subEditView.execute(SCI_SETEDGEMODE, mode);
break;
}

case IDM_SETTING_EDGE_SIZE :
{
ValueDlg nbColumnEdgeDlg;
ScintillaViewParams & svp = (ScintillaViewParams &)pNppParam->getSVP(param == 1?SCIV_PRIMARY:SCIV_SECOND);
//ScintillaViewParams & svp = (ScintillaViewParams &)pNppParam->getSVP(param == 1?SCIV_PRIMARY:SCIV_SECOND);
ScintillaViewParams & svp = (ScintillaViewParams &)pNppParam->getSVP(SCIV_PRIMARY);
nbColumnEdgeDlg.init(_pPublicInterface->getHinst(), _preference.getHSelf(), svp._edgeNbColumn, TEXT("Nb of column:"));
nbColumnEdgeDlg.setNBNumber(3);

Expand All @@ -2028,10 +2012,22 @@ void Notepad_plus::specialCmd(int id, int param)
if (size != -1)
{
svp._edgeNbColumn = size;
pEditView->execute(SCI_SETEDGECOLUMN, size);
_mainEditView.execute(SCI_SETEDGECOLUMN, size);
_subEditView.execute(SCI_SETEDGECOLUMN, size);
}
break;
}

case IDM_VIEW_LWDEF:
case IDM_VIEW_LWALIGN:
case IDM_VIEW_LWINDENT:
{
int mode = (id == IDM_VIEW_LWALIGN)?SC_WRAPINDENT_SAME:\
(id == IDM_VIEW_LWINDENT)?SC_WRAPINDENT_INDENT:SC_WRAPINDENT_FIXED;
_mainEditView.execute(SCI_SETWRAPINDENTMODE, mode);
_subEditView.execute(SCI_SETWRAPINDENTMODE, mode);
break;
}
}
}

Expand Down Expand Up @@ -2851,16 +2847,8 @@ void Notepad_plus::bookmarkNext(bool forwardScan)
_pEditView->execute(SCI_GOTOLINE, nextLine);
}

void Notepad_plus::dynamicCheckMenuAndTB() const
void Notepad_plus::staticCheckMenuAndTB() const
{
// Visibility of 3 margins
checkMenuItem(IDM_VIEW_LINENUMBER, _pEditView->hasMarginShowed(ScintillaEditView::_SC_MARGE_LINENUMBER));
checkMenuItem(IDM_VIEW_SYMBOLMARGIN, _pEditView->hasMarginShowed(ScintillaEditView::_SC_MARGE_SYBOLE));
checkMenuItem(IDM_VIEW_FOLDERMAGIN, _pEditView->hasMarginShowed(ScintillaEditView::_SC_MARGE_FOLDER));

// Folder margin style
checkFolderMarginStyleMenu(getFolderMaginStyleIDFrom(_pEditView->getFolderStyle()));

// Visibility of invisible characters
bool wsTabShow = _pEditView->isInvisibleCharsShown();
bool eolShow = _pEditView->isEolVisible();
Expand Down Expand Up @@ -2894,25 +2882,19 @@ void Notepad_plus::dynamicCheckMenuAndTB() const
checkMenuItem(IDM_VIEW_INDENT_GUIDE, b);
_toolBar.setCheck(IDM_VIEW_INDENT_GUIDE, b);

// Edge Line
int mode = int(_pEditView->execute(SCI_GETEDGEMODE));
checkMenuItem(IDM_VIEW_EDGEBACKGROUND, (MF_BYCOMMAND | ((mode == EDGE_NONE)||(mode == EDGE_LINE))?MF_UNCHECKED:MF_CHECKED) != 0);
checkMenuItem(IDM_VIEW_EDGELINE, (MF_BYCOMMAND | ((mode == EDGE_NONE)||(mode == EDGE_BACKGROUND))?MF_UNCHECKED:MF_CHECKED) != 0);

// Current Line Highlighting
checkMenuItem(IDM_VIEW_CURLINE_HILITING, _pEditView->isCurrentLineHiLiting());

// Wrap
b = _pEditView->isWrap();
checkMenuItem(IDM_VIEW_WRAP, b);
_toolBar.setCheck(IDM_VIEW_WRAP, b);
checkMenuItem(IDM_VIEW_WRAP_SYMBOL, _pEditView->isWrapSymbolVisible());
}

void Notepad_plus::dynamicCheckMenuAndTB() const
{
//Format conversion
enableConvertMenuItems(_pEditView->getCurrentBuffer()->getFormat());
checkUnicodeMenuItems(/*_pEditView->getCurrentBuffer()->getUnicodeMode()*/);

//Syncronized scrolling
checkUnicodeMenuItems();
}

void Notepad_plus::enableConvertMenuItems(formatType f) const
Expand Down Expand Up @@ -3200,23 +3182,8 @@ bool Notepad_plus::doStreamComment()

bool Notepad_plus::saveScintillaParams(bool whichOne)
{
ScintillaViewParams svp;
ScintillaEditView *pView = (whichOne == SCIV_PRIMARY)?&_mainEditView:&_subEditView;

svp._lineNumberMarginShow = pView->hasMarginShowed(ScintillaEditView::_SC_MARGE_LINENUMBER);
svp._bookMarkMarginShow = pView->hasMarginShowed(ScintillaEditView::_SC_MARGE_SYBOLE);
//svp._docChangeStateMarginShow = pView->hasMarginShowed(ScintillaEditView::_SC_MARGE_MODIFMARKER);
svp._indentGuideLineShow = pView->isShownIndentGuide();
svp._folderStyle = pView->getFolderStyle();
svp._currentLineHilitingShow = pView->isCurrentLineHiLiting();
svp._wrapSymbolShow = pView->isWrapSymbolVisible();
svp._doWrap = pView->isWrap();
svp._edgeMode = int(pView->execute(SCI_GETEDGEMODE));
svp._edgeNbColumn = int(pView->execute(SCI_GETEDGECOLUMN));
svp._zoom = int(pView->execute(SCI_GETZOOM));
svp._whiteSpaceShow = pView->isInvisibleCharsShown();
svp._eolShow = pView->isEolVisible();

NppParameters * pNppParam = NppParameters::getInstance();
ScintillaViewParams & svp = (ScintillaViewParams &)pNppParam->getSVP(SCIV_PRIMARY);
return (NppParameters::getInstance())->writeScintillaParams(svp, whichOne);
}

Expand Down Expand Up @@ -3271,7 +3238,6 @@ bool Notepad_plus::switchToFile(BufferID id)
if (i != -1)
{
switchEditViewTo(iView);
//_pDocTab->activateAt(i);
activateBuffer(id, currentView());
return true;
}
Expand Down
11 changes: 2 additions & 9 deletions PowerEditor/src/Notepad_plus.h
Original file line number Diff line number Diff line change
Expand Up @@ -401,7 +401,7 @@ friend class Notepad_plus_Window;


BOOL notify(SCNotification *notification);
void specialCmd(int id, int param);
void specialCmd(int id);
void command(int id);

//Document management
Expand Down Expand Up @@ -465,6 +465,7 @@ friend class Notepad_plus_Window;
void checkModifiedDocument();

void getMainClientRect(RECT & rc) const;
void staticCheckMenuAndTB() const;
void dynamicCheckMenuAndTB() const;
void enableConvertMenuItems(formatType f) const;
void checkUnicodeMenuItems() const;
Expand All @@ -483,14 +484,6 @@ friend class Notepad_plus_Window;
void setLanguage(LangType langType);
enum LangType menuID2LangType(int cmdID);

int getFolderMarginStyle() const;

void checkFolderMarginStyleMenu(int id2Check) const {
::CheckMenuRadioItem(_mainMenuHandle, IDM_VIEW_FOLDERMAGIN_SIMPLE, IDM_VIEW_FOLDERMAGIN_BOX, id2Check, MF_BYCOMMAND);
};

int getFolderMaginStyleIDFrom(folderStyle fStyle) const;

void checkMenuItem(int itemID, bool willBeChecked) const {
::CheckMenuItem(_mainMenuHandle, itemID, MF_BYCOMMAND | (willBeChecked?MF_CHECKED:MF_UNCHECKED));
};
Expand Down
2 changes: 2 additions & 0 deletions PowerEditor/src/Notepad_plus_Window.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,8 @@ void Notepad_plus_Window::init(HINSTANCE hInst, HWND parent, const TCHAR *cmdLin
throw std::runtime_error("Notepad_plus_Window::init : CreateWindowEx() function return null");
}

_notepad_plus_plus_core.staticCheckMenuAndTB();

gNppHWND = _hSelf;

// In setting the startup window position, take into account that the last-saved
Expand Down
3 changes: 1 addition & 2 deletions PowerEditor/src/NppBigSwitch.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -492,7 +492,7 @@ LRESULT Notepad_plus::process(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
{
if ((lParam == 1) || (lParam == 2))
{
specialCmd(LOWORD(wParam), lParam);
specialCmd(LOWORD(wParam));
}
else
command(LOWORD(wParam));
Expand Down Expand Up @@ -1375,7 +1375,6 @@ LRESULT Notepad_plus::process(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa

_lastRecentFileList.saveLRFL();
saveScintillaParams(SCIV_PRIMARY);
saveScintillaParams(SCIV_SECOND);
saveGUIParams();
saveUserDefineLangs();
saveShortcuts();
Expand Down

0 comments on commit e46e0a3

Please sign in to comment.