From 493faf5b920be99e9b838da75b3140719fecefd2 Mon Sep 17 00:00:00 2001 From: "METANEOCORTEX\\Kotti" Date: Thu, 29 Jun 2023 23:39:02 +0200 Subject: [PATCH] +chg: add Reset Zoom toolbar button --- Build/Notepad3.ini | 1 + language/common_res.h | 1 + language/np3_de_de/strings_de_de.rc | 1 + language/np3_en_us/strings_en_us.rc | 1 + src/Config/Config.cpp | 6 +- src/Notepad3.c | 144 +++++++++++++++++----------- 6 files changed, 94 insertions(+), 60 deletions(-) diff --git a/Build/Notepad3.ini b/Build/Notepad3.ini index 67252911a..2bc4de2e6 100644 --- a/Build/Notepad3.ini +++ b/Build/Notepad3.ini @@ -113,6 +113,7 @@ SettingsVersion=5 ;28=History ;29=Always On Top ;30=Search in Files +;31=Reset Zoom [Styles] [Window] ;x DefaultWindowPosition= diff --git a/language/common_res.h b/language/common_res.h index b8c2c95c8..f5c4a2478 100644 --- a/language/common_res.h +++ b/language/common_res.h @@ -118,6 +118,7 @@ #define IDT_FILE_RECENT 11027 #define IDT_VIEW_PIN_ON_TOP 11028 #define IDT_GREP_WIN_TOOL 11029 +#define IDT_VIEW_RESETZOOM 11030 #define IDS_MUI_APPTITLE_ELEVATED 12006 #define IDS_MUI_APPTITLE_PASTEBOARD 12007 diff --git a/language/np3_de_de/strings_de_de.rc b/language/np3_de_de/strings_de_de.rc index 16b7dbf8f..a7b233374 100644 --- a/language/np3_de_de/strings_de_de.rc +++ b/language/np3_de_de/strings_de_de.rc @@ -73,6 +73,7 @@ BEGIN IDT_EDIT_REPLACE "Ersetze" IDT_VIEW_WORDWRAP "Wort Umbruch" IDT_VIEW_ZOOMIN "Hinein Zoomen" + IDT_VIEW_RESETZOOM "Kein Zoom" IDT_VIEW_ZOOMOUT "Heraus Zoomen" IDT_VIEW_SCHEME "Wähle Schema" IDT_VIEW_SCHEMECONFIG "Bearbeite Schemata" diff --git a/language/np3_en_us/strings_en_us.rc b/language/np3_en_us/strings_en_us.rc index f5a65371a..ace526cdd 100644 --- a/language/np3_en_us/strings_en_us.rc +++ b/language/np3_en_us/strings_en_us.rc @@ -73,6 +73,7 @@ BEGIN IDT_EDIT_REPLACE "Replace" IDT_VIEW_WORDWRAP "Word Wrap" IDT_VIEW_ZOOMIN "Zoom In" + IDT_VIEW_RESETZOOM "Reset Zoom" IDT_VIEW_ZOOMOUT "Zoom Out" IDT_VIEW_SCHEME "Select Scheme" IDT_VIEW_SCHEMECONFIG "Customize Schemes" diff --git a/src/Config/Config.cpp b/src/Config/Config.cpp index 9a98ed2df..457ad9753 100644 --- a/src/Config/Config.cpp +++ b/src/Config/Config.cpp @@ -62,8 +62,8 @@ extern "C" { #include "DarkMode/DarkMode.h" -extern "C" const WCHAR* const TBBUTTON_DEFAULT_IDS_V1; -extern "C" const WCHAR* const TBBUTTON_DEFAULT_IDS_V2; +extern "C" WCHAR TBBUTTON_DEFAULT_IDS[]; +extern "C" const WCHAR* const TBBUTTON_DEFAULT_IDS_OLD; extern "C" bool g_iStatusbarVisible[STATUS_SECTOR_COUNT]; extern "C" int g_iStatusbarWidthSpec[STATUS_SECTOR_COUNT]; @@ -1734,7 +1734,7 @@ void LoadSettings() ///~Settings2.IMEInteraction = clampi(IniSectionGetInt(IniSecSettings, L"IMEInteraction", Settings2.IMEInteraction), SC_IME_WINDOWED, SC_IME_INLINE); // see TBBUTTON s_tbbMainWnd[] for initial/reset set of buttons - StringCchCopy(Defaults.ToolbarButtons, COUNTOF(Defaults.ToolbarButtons), (Globals.iCfgVersionRead < CFG_VER_0002) ? TBBUTTON_DEFAULT_IDS_V1 : TBBUTTON_DEFAULT_IDS_V2); + StringCchCopy(Defaults.ToolbarButtons, COUNTOF(Defaults.ToolbarButtons), (Globals.iCfgVersionRead < CFG_VER_0002) ? TBBUTTON_DEFAULT_IDS_OLD : TBBUTTON_DEFAULT_IDS); IniSectionGetStringNoQuotes(IniSecSettings, L"ToolbarButtons", Defaults.ToolbarButtons, Settings.ToolbarButtons, COUNTOF(Settings.ToolbarButtons)); GET_BOOL_VALUE_FROM_INISECTION(ShowTitlebar, true); diff --git a/src/Notepad3.c b/src/Notepad3.c index 4dd5b5969..d6e78773f 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -181,62 +181,69 @@ static char* s_SelectionBuffer = NULL; static int const INISECTIONBUFCNT = 32; // .ini file load buffer in KB +// ---------------------------------------------------------------------------- + +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +// (!) ENSURE IDT_FILE_NEW -> IDT_VIEW_RESETZOOM corresponds to order of Toolbar.bmp +#define NUMTOOLBITMAPS (31) +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + static TBBUTTON s_tbbMainWnd[] = { - { 0,IDT_FILE_NEW,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 1,IDT_FILE_OPEN,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 3,IDT_FILE_SAVE,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 2,IDT_FILE_BROWSE,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 27,IDT_FILE_RECENT,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 0,0,0,BTNS_SEP,{0},0,0 }, - { 4,IDT_EDIT_UNDO,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 5,IDT_EDIT_REDO,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 0,0,0,BTNS_SEP,{0},0,0 }, - { 6,IDT_EDIT_CUT,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 7,IDT_EDIT_COPY,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 8,IDT_EDIT_PASTE,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 0,0,0,BTNS_SEP,{0},0,0 }, - { 9,IDT_EDIT_FIND,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 10,IDT_EDIT_REPLACE,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 0,0,0,BTNS_SEP,{0},0,0 }, - { 29,IDT_GREP_WIN_TOOL,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 0,0,0,BTNS_SEP,{0},0,0 }, - { 11,IDT_VIEW_WORDWRAP,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 0,0,0,BTNS_SEP,{0},0,0 }, - { 23,IDT_VIEW_TOGGLEFOLDS,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 25,IDT_VIEW_TOGGLE_VIEW,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 0,0,0,BTNS_SEP,{0},0,0 }, - { 21,IDT_FILE_OPENFAV,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 22,IDT_FILE_ADDTOFAV,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 0,0,0,BTNS_SEP,{0},0,0 }, - { 12,IDT_VIEW_ZOOMIN,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 13,IDT_VIEW_ZOOMOUT,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 0,0,0,BTNS_SEP,{0},0,0 }, - { 14,IDT_VIEW_SCHEME,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 0,0,0,BTNS_SEP,{0},0,0 }, - { 24,IDT_FILE_LAUNCH,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 0,0,0,BTNS_SEP,{0},0,0 }, - { 28,IDT_VIEW_PIN_ON_TOP,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 0,0,0,BTNS_SEP,{0},0,0 }, - { 16,IDT_FILE_EXIT,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 0,0,0,BTNS_SEP,{0},0,0 }, - { 15,IDT_VIEW_SCHEMECONFIG,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 17,IDT_FILE_SAVEAS,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 18,IDT_FILE_SAVECOPY,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 19,IDT_EDIT_CLEAR,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 20,IDT_FILE_PRINT,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, - { 26,IDT_VIEW_CHASING_DOCTAIL,TBSTATE_ENABLED,BTNS_BUTTON,{0},0,0 }, + { 0, IDT_FILE_NEW, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 1, IDT_FILE_OPEN, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 3, IDT_FILE_SAVE, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 2, IDT_FILE_BROWSE, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 27, IDT_FILE_RECENT, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 0, 0, 0, BTNS_SEP, { 0 }, 0, 0 }, + { 4, IDT_EDIT_UNDO, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 5, IDT_EDIT_REDO, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 0, 0, 0, BTNS_SEP, { 0 }, 0, 0 }, + { 6, IDT_EDIT_CUT, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 7, IDT_EDIT_COPY, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 8, IDT_EDIT_PASTE, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 0, 0, 0, BTNS_SEP, { 0 }, 0, 0 }, + { 9, IDT_EDIT_FIND, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 10, IDT_EDIT_REPLACE, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 0, 0, 0, BTNS_SEP, { 0 }, 0, 0 }, + { 29, IDT_GREP_WIN_TOOL, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 0, 0, 0, BTNS_SEP, { 0 }, 0, 0 }, + { 11, IDT_VIEW_WORDWRAP, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 0, 0, 0, BTNS_SEP, { 0 }, 0, 0 }, + { 23, IDT_VIEW_TOGGLEFOLDS, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 25, IDT_VIEW_TOGGLE_VIEW, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 0, 0, 0, BTNS_SEP, { 0 }, 0, 0 }, + { 21, IDT_FILE_OPENFAV, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 22, IDT_FILE_ADDTOFAV, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 0, 0, 0, BTNS_SEP, { 0 }, 0, 0 }, + { 12, IDT_VIEW_ZOOMIN, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 30, IDT_VIEW_RESETZOOM, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 13, IDT_VIEW_ZOOMOUT, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 0, 0, 0, BTNS_SEP, { 0 }, 0, 0 }, + { 14, IDT_VIEW_SCHEME, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 0, 0, 0, BTNS_SEP, { 0 }, 0, 0 }, + { 24, IDT_FILE_LAUNCH, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 0, 0, 0, BTNS_SEP, { 0 }, 0, 0 }, + { 28, IDT_VIEW_PIN_ON_TOP, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 0, 0, 0, BTNS_SEP, { 0 }, 0, 0 }, + { 16, IDT_FILE_EXIT, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 0, 0, 0, BTNS_SEP, { 0 }, 0, 0 }, + { 15, IDT_VIEW_SCHEMECONFIG, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 17, IDT_FILE_SAVEAS, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 18, IDT_FILE_SAVECOPY, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 19, IDT_EDIT_CLEAR, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 20, IDT_FILE_PRINT, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 }, + { 26, IDT_VIEW_CHASING_DOCTAIL, TBSTATE_ENABLED, BTNS_BUTTON, { 0 }, 0, 0 } }; -static const int NUMTOOLBITMAPS = 30; +// don't show buttons beyond this TBBUTTON[] index: +#define TBBUTTON_LAST_DEFAULT (37) + +WCHAR TBBUTTON_DEFAULT_IDS[256] = { L'\0' }; // filled in _InitGlobals() +const WCHAR* const TBBUTTON_DEFAULT_IDS_OLD = L"1 2 4 3 28 0 5 6 0 7 8 9 0 10 11 0 30 0 12 0 24 26 0 22 23 0 13 14 0 27 0 15 0 25 0 17"; // ---------------------------------------------------------------------------- const char chr_currency[6] = { '$', 0x80, 0xA2, 0xA3, 0xA5, '\0' }; // "$€¢£¥" CP-1252 -// ---------------------------------------------------------------------------- - -const WCHAR *const TBBUTTON_DEFAULT_IDS_V1 = L"1 2 4 3 28 0 5 6 0 7 8 9 0 10 11 0 30 0 12 0 24 26 0 22 23 0 13 14 0 27 0 15 0 25 0 17"; -const WCHAR* const TBBUTTON_DEFAULT_IDS_V2 = L"1 2 4 3 28 0 5 6 0 7 8 9 0 10 11 0 30 0 12 0 24 26 0 22 23 0 13 14 0 15 0 25 0 29 0 17"; - //============================================================================== // // Save Needed Flag @@ -829,6 +836,21 @@ static void _InitGlobals() g_tchToolbarBitmapHot = Path_Allocate(NULL); g_tchToolbarBitmapDisabled = Path_Allocate(NULL); + // --- dynamicly created globals --- + + WCHAR tchIndex[16] = { L'\0' }; + StringCchPrintf(tchIndex, COUNTOF(tchIndex), L"%i", s_tbbMainWnd[0].iBitmap + 1); + StringCchCopy(TBBUTTON_DEFAULT_IDS, COUNTOF(TBBUTTON_DEFAULT_IDS), tchIndex); + assert(TBBUTTON_LAST_DEFAULT <= COUNTOF(s_tbbMainWnd)); + for (int i = 1; i < TBBUTTON_LAST_DEFAULT; ++i) { + if (s_tbbMainWnd[i].idCommand) { + StringCchPrintf(tchIndex, COUNTOF(tchIndex), L" %i", s_tbbMainWnd[i].iBitmap + 1); + StringCchCat(TBBUTTON_DEFAULT_IDS, COUNTOF(TBBUTTON_DEFAULT_IDS), tchIndex); + } else { + StringCchCat(TBBUTTON_DEFAULT_IDS, COUNTOF(TBBUTTON_DEFAULT_IDS), L" 0"); + } + } + // --- static locals --- s_hpthRelaunchElevatedFile = Path_Allocate(NULL); @@ -3154,15 +3176,15 @@ void CreateBars(HWND hwnd, HINSTANCE hInstance) } // Load toolbar labels - WCHAR tchDesc[256] = { L'\0' }; - WCHAR tchIndex[256] = { L'\0' }; + WCHAR tchIndex[16] = { L'\0' }; + WCHAR tchDesc[80] = { L'\0' }; for (int i = 0; i < COUNTOF(s_tbbMainWnd); ++i) { + if (s_tbbMainWnd[i].fsStyle == BTNS_SEP) { continue; } - int n = s_tbbMainWnd[i].iBitmap + 1; - StringCchPrintf(tchIndex, COUNTOF(tchIndex), L"%02i", n); + StringCchPrintf(tchIndex, COUNTOF(tchIndex), L"%02i", s_tbbMainWnd[i].iBitmap + 1); if (IniSectionGetString(L"Toolbar Labels", tchIndex, L"", tchDesc, COUNTOF(tchDesc)) > 0) { s_tbbMainWnd[i].iString = SendMessage(Globals.hwndToolbar, TB_ADDSTRING, 0, (LPARAM)tchDesc); @@ -7352,6 +7374,14 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) } break; + case IDT_VIEW_RESETZOOM: + if (IsCmdEnabled(hwnd, IDM_VIEW_RESETZOOM)) { + SendWMCommand(hwnd, IDM_VIEW_RESETZOOM); + } else { + SimpleBeep(); + } + break; + case IDT_VIEW_ZOOMOUT: if (IsCmdEnabled(hwnd,IDM_VIEW_ZOOMOUT)) { @@ -9852,8 +9882,6 @@ static void _UpdateToolbarDelayed() bool const b2 = !Sci_IsDocEmpty(); bool const ro = SciCall_GetReadOnly(); bool const tv = FocusedView.HideNonMatchedLines; - bool const zi = (SciCall_GetZoom() > 100); - bool const zo = (SciCall_GetZoom() < 100); EnableTool(Globals.hwndToolbar, IDT_EDIT_UNDO, SciCall_CanUndo() && !ro); EnableTool(Globals.hwndToolbar, IDT_EDIT_REDO, SciCall_CanRedo() && !ro); @@ -9875,8 +9903,10 @@ static void _UpdateToolbarDelayed() EnableTool(Globals.hwndToolbar, IDT_VIEW_TOGGLE_VIEW, b2 && IsFocusedViewAllowed()); CheckTool(Globals.hwndToolbar, IDT_VIEW_TOGGLE_VIEW, tv); - CheckTool(Globals.hwndToolbar, IDT_VIEW_ZOOMIN, zi); - CheckTool(Globals.hwndToolbar, IDT_VIEW_ZOOMOUT, zo); + int const zoom = SciCall_GetZoom(); + CheckTool(Globals.hwndToolbar, IDT_VIEW_ZOOMIN, (zoom > 100)); + CheckTool(Globals.hwndToolbar, IDT_VIEW_RESETZOOM, (zoom == 100)); + CheckTool(Globals.hwndToolbar, IDT_VIEW_ZOOMOUT, (zoom < 100)); }