From fc5cce8eac0dd575d4ce84720df1a6db8954b31b Mon Sep 17 00:00:00 2001 From: Rainer Kottenhoff Date: Mon, 11 Jun 2018 11:09:08 +0200 Subject: [PATCH] + fix: sorting lines: distinguish between empty and white-space-only lines + chg: sorting lines: move empty lines to end of selection (always, if not removed) --- language/np3_af_za/dialogs_af_za.rc | Bin 72968 -> 73178 bytes language/np3_de_de/dialogs_de_de.rc | Bin 74012 -> 74236 bytes language/np3_en_uk/dialogs_en_uk.rc | Bin 73010 -> 73220 bytes language/np3_en_us/dialogs_en_us.rc | Bin 72708 -> 72918 bytes language/np3_es_es/dialogs_es_es.rc | Bin 73062 -> 73272 bytes language/np3_fr_fr/dialogs_fr_fr.rc | Bin 72964 -> 73174 bytes language/np3_nl_nl/dialogs_nl_nl.rc | Bin 72976 -> 73186 bytes src/Edit.c | 134 ++++++++++++++++++---------- src/Notepad3.c | 2 +- 9 files changed, 86 insertions(+), 50 deletions(-) diff --git a/language/np3_af_za/dialogs_af_za.rc b/language/np3_af_za/dialogs_af_za.rc index e34431bc0366b668b6d8ce2915e066c468f2fe62..a279aff4345aa673e82ded3c96649cf836956c50 100644 GIT binary patch delta 163 zcmeC!#d2#m%LcLA%w`NGlMerqdrX1Bn10MwZD2 NPdT=$i7`H60{}LlH`)LI delta 109 zcmV-z0FwXOy99{31h5v{0X36>(!;ab+foG;dH`hrasY1tEdXo)WdLpfX8?2nXp=SJ zxs%M|ECDx@Au3k^Gm}x{d6W3!TmvxxFq5GlH{=mJN5FaQZN$0$~wD)#UjPMJNAxGG+3I$3n(%QJ`EVLo!1Kkj`V!Wrzav zbHF@31|glP>5`laS|F2{QmQ04xA805p?B2DqG?$?m0X36g L{RFot8v)b?XBjGy diff --git a/language/np3_en_uk/dialogs_en_uk.rc b/language/np3_en_uk/dialogs_en_uk.rc index ba704964e11c54bc15b755aca1015929b6932042..10cfbf5beeffe3bc3d99b4d9146edfb7c6f56c18 100644 GIT binary patch delta 158 zcmdnAi=|}`%Lc34jAoM+-yh!m?{*L?XDUN3LjgkxL*?YuhdU=bJQNTvXUJg41d60G z=rR-o8({PC{!hN_O@NXU{}^u<5NG_t1^^X?Dm?%I diff --git a/language/np3_en_us/dialogs_en_us.rc b/language/np3_en_us/dialogs_en_us.rc index cfab3a42520b03893c1bcb3be4fe5ca17db4ed36..d9e45e0e680c4af20b713fd5d408b726c250e62d 100644 GIT binary patch delta 160 zcmZqK!E$XU%Lc7mjAoPPrX1b;;Z^`EXDUN3LjgkxL*?Yq2RkPlJP;5rXUJg41d60G z=rR-oY725A7y@c@)NJ z#9+>#15!6R(Aa$Pvt4|XH#~A;2Jt_t1+yA5m@t@b_I*6vkkNGdLncPk$puO*lO3LL LY*!OyyvGIrs9ZU& delta 129 zcmV-{0Dk}0xdeo`1h6XF12q6Klb>Y6v+&wb1r>S#WdL#jZvZU-Yyf2dZUAQhbO30R zN#MDY;NdI*HZ6wMJIm{RhoR^aR8&?S#WdL#jZvZU-Yyf2dZUAQhbO30R z@!u1Zis7b{4&yA75|t#AFyt}=FaR@?58gYI&f`9lI^$deF#s@=!LJpQfaG$M3glP= cGXOKQP35aG0W_C^69F}oK;{g$Iu`-{2J+Y~#sB~S diff --git a/language/np3_fr_fr/dialogs_fr_fr.rc b/language/np3_fr_fr/dialogs_fr_fr.rc index fdb4c5150ee1927f4e50b9dca76e71c82a3472d9..f813dd8e5661d20c827a7b89a4198ef7f2296a52 100644 GIT binary patch delta 185 zcmZqK#d2*o%LcjIjAoNRa%4_62#MPK=ynh*XDUN3LjgkxL*-=8hdU=HJPZV8^eAhl@oliLBTqE!s33`Gq247vwcpSlL43;!x gFrK_H$aizv(+ERGlj(&bjHZ*6S+@TWW4y-(09JG_CjbBd diff --git a/language/np3_nl_nl/dialogs_nl_nl.rc b/language/np3_nl_nl/dialogs_nl_nl.rc index 5dcf3aef30ed80064cd550afd90d42d37de76d5d..4079f4e4921e37d77a21aebb8d2cd3f27f1e7349 100644 GIT binary patch delta 173 zcmV;e08;;ux&-381h6980XCCSWyQ1T+fW4wWdLmeZ~$}wd6V(p6O&-!rjx)b1d}Y` z3=?+%XaH#dbO2=lEdX->Z~$QdW0N7?6_a4$1_L($ER)ei6_bA9L<2bhIFrTUZIcA! zTmd(ep(!_$#^OGc?BiAgG5|M|UE_@dF#s@=Q7=!DXao&005kwK04xA805bqFlhJ-j bvzFvqF#|OKHS#WdL#jZvZU-Yyf2dZUAQhbO30R zLE*WRaL5Fc+~Oz!HPm*W^lYlA&0W*_b<9U+=<6M(6 0) { @@ -4232,15 +4242,6 @@ void EditSortLines(HWND hwnd, int iSortFlags) char* pmszResOffset = pmszResult; char* pmszBuf = AllocMem(ichlMax + 1, HEAP_ZERO_MEMORY); - // Handle empty lines - if ((iSortFlags & SORT_UNIQDUP) && (iZeroLenLineCount > 1)) { iZeroLenLineCount = 1; }; - if (!(iSortFlags & SORT_REMZEROLEN) && (iSortFlags & SORT_ASCENDING)) { - for (DocLn i = 0; i < iZeroLenLineCount; ++i) { - StringCchCatA(pmszResult, lenRes, mszEOL); - pmszResOffset += ((cEOLMode == SC_EOL_CRLF) ? 2 : 1); - } - } - for (DocLn i = 0; i < iLineCount; ++i) { bool bDropLine = false; if (pLines[i].pwszLine && ((iSortFlags & SORT_SHUFFLE) || lstrlen(pLines[i].pwszLine))) { @@ -4271,11 +4272,14 @@ void EditSortLines(HWND hwnd, int iSortFlags) } FreeMem(pmszBuf); - // Handle empty lines + // Handle empty (no whitespace or other char) lines (always at the end) if (!(iSortFlags & SORT_UNIQDUP) || (iZeroLenLineCount == 0)) { StrTrimA(pmszResOffset, "\r\n"); // trim end only } - if (!(iSortFlags & SORT_REMZEROLEN) && (iSortFlags & SORT_DESCENDING)) { + if ((iSortFlags & SORT_UNIQDUP) && (iZeroLenLineCount > 1)) { + iZeroLenLineCount = 1; // removes duplicate empty lines + } + if (!(iSortFlags & SORT_REMZEROLEN)) { for (DocLn i = 0; i < iZeroLenLineCount; ++i) { StringCchCatA(pmszResult, lenRes, mszEOL); } @@ -7432,6 +7436,10 @@ INT_PTR CALLBACK EditSortDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam { piSortFlags = (int*)lParam; + if (*piSortFlags == 0) { + *piSortFlags = SORT_ASCENDING | SORT_REMZEROLEN; + } + if (*piSortFlags & SORT_DESCENDING) { CheckRadioButton(hwnd, 100, 102, 101); } @@ -7443,42 +7451,53 @@ INT_PTR CALLBACK EditSortDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam DialogEnableWindow(hwnd,106,false); DialogEnableWindow(hwnd,107,false); DialogEnableWindow(hwnd,108,false); - } - else - CheckRadioButton(hwnd,100,102,100); - - if (*piSortFlags & SORT_MERGEDUP) - CheckDlgButton(hwnd,103,BST_CHECKED); - if (*piSortFlags & SORT_UNIQDUP) { - CheckDlgButton(hwnd,104,BST_CHECKED); - DialogEnableWindow(hwnd,103,false); - } - if (*piSortFlags & SORT_UNIQUNIQ) - CheckDlgButton(hwnd,105,BST_CHECKED); - if (*piSortFlags & SORT_REMZEROLEN) - CheckDlgButton(hwnd, 106, BST_CHECKED); - if (*piSortFlags & SORT_NOCASE) - CheckDlgButton(hwnd,107,BST_CHECKED); - if (*piSortFlags & SORT_LOGICAL) - CheckDlgButton(hwnd,108,BST_CHECKED); - - if (!SciCall_IsSelectionRectangle()) { - *piSortFlags &= ~SORT_COLUMN; DialogEnableWindow(hwnd,109,false); } + else { + CheckRadioButton(hwnd, 100, 102, 100); + } + if (*piSortFlags & SORT_MERGEDUP) { + CheckDlgButton(hwnd, 103, BST_CHECKED); + } + if (*piSortFlags & SORT_UNIQDUP) { + CheckDlgButton(hwnd, 104, BST_CHECKED); + DialogEnableWindow(hwnd, 103, false); + } + if (*piSortFlags & SORT_UNIQUNIQ) { + CheckDlgButton(hwnd, 105, BST_CHECKED); + } + if (*piSortFlags & SORT_REMZEROLEN) { + CheckDlgButton(hwnd, 106, BST_CHECKED); + } + if (*piSortFlags & SORT_REMWSPACELN) { + CheckDlgButton(hwnd, 107, BST_CHECKED); + CheckDlgButton(hwnd, 106, BST_CHECKED); + DialogEnableWindow(hwnd, 106, false); + } + if (*piSortFlags & SORT_NOCASE) { + CheckDlgButton(hwnd, 108, BST_CHECKED); + } + if (*piSortFlags & SORT_LOGICAL) { + CheckDlgButton(hwnd, 109, BST_CHECKED); + } + if (!SciCall_IsSelectionRectangle()) { + *piSortFlags &= ~SORT_COLUMN; + DialogEnableWindow(hwnd,110,false); + } else { *piSortFlags |= SORT_COLUMN; - CheckDlgButton(hwnd,109,BST_CHECKED); + CheckDlgButton(hwnd,110,BST_CHECKED); } CenterDlgInParent(hwnd); } return true; + case WM_COMMAND: switch(LOWORD(wParam)) { case IDOK: { *piSortFlags = 0; - if (IsDlgButtonChecked(hwnd,100) == BST_CHECKED) + if (IsDlgButtonChecked(hwnd, 100) == BST_CHECKED) *piSortFlags |= SORT_ASCENDING; if (IsDlgButtonChecked(hwnd,101) == BST_CHECKED) *piSortFlags |= SORT_DESCENDING; @@ -7493,17 +7512,21 @@ INT_PTR CALLBACK EditSortDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam if (IsDlgButtonChecked(hwnd,106) == BST_CHECKED) *piSortFlags |= SORT_REMZEROLEN; if (IsDlgButtonChecked(hwnd,107) == BST_CHECKED) - *piSortFlags |= SORT_NOCASE; + *piSortFlags |= SORT_REMWSPACELN; if (IsDlgButtonChecked(hwnd,108) == BST_CHECKED) - *piSortFlags |= SORT_LOGICAL; + *piSortFlags |= SORT_NOCASE; if (IsDlgButtonChecked(hwnd,109) == BST_CHECKED) + *piSortFlags |= SORT_LOGICAL; + if (IsDlgButtonChecked(hwnd,110) == BST_CHECKED) *piSortFlags |= SORT_COLUMN; EndDialog(hwnd,IDOK); } break; + case IDCANCEL: EndDialog(hwnd,IDCANCEL); break; + case 100: case 101: DialogEnableWindow(hwnd,103,IsDlgButtonChecked(hwnd,105) != BST_CHECKED); @@ -7512,6 +7535,7 @@ INT_PTR CALLBACK EditSortDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam DialogEnableWindow(hwnd,106,true); DialogEnableWindow(hwnd,107,true); DialogEnableWindow(hwnd,108,true); + DialogEnableWindow(hwnd,109,true); break; case 102: DialogEnableWindow(hwnd,103,false); @@ -7520,10 +7544,22 @@ INT_PTR CALLBACK EditSortDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam DialogEnableWindow(hwnd,106,false); DialogEnableWindow(hwnd,107,false); DialogEnableWindow(hwnd,108,false); + DialogEnableWindow(hwnd,109,false); break; case 104: DialogEnableWindow(hwnd,103,IsDlgButtonChecked(hwnd,104) != BST_CHECKED); break; + case 107: + if (IsDlgButtonChecked(hwnd, 107) == BST_CHECKED) { + CheckDlgButton(hwnd, 106, BST_CHECKED); + DialogEnableWindow(hwnd, 106, false); + } + else { + DialogEnableWindow(hwnd, 106, true); + } + break; + default: + break; } return true; } diff --git a/src/Notepad3.c b/src/Notepad3.c index 36290d5b0..1a976826c 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -344,7 +344,7 @@ WCHAR wchAppendSelection[256] = { L'\0' }; WCHAR wchPrefixLines[256] = { L'\0' }; WCHAR wchAppendLines[256] = { L'\0' }; -static int iSortOptions = SORT_ASCENDING; +static int iSortOptions = 0; static int iAlignMode = 0; bool flagIsElevated = false;