From 874702d3cbda37ef3c20a696de168bc5a3d4cb10 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Tue, 10 Jul 2018 22:13:57 +0300 Subject: Menu_SetVisible: new function to write down a Visibility checkbox for a menu item --- include/m_genmenu.h | 7 ++++++- libs/win32/mir_app.lib | Bin 173112 -> 173332 bytes libs/win64/mir_app.lib | Bin 168210 -> 168410 bytes src/mir_app/src/menu_options.cpp | 19 +++++++++++++++++++ src/mir_app/src/mir_app.def | 1 + src/mir_app/src/mir_app64.def | 1 + 6 files changed, 27 insertions(+), 1 deletion(-) diff --git a/include/m_genmenu.h b/include/m_genmenu.h index 00d01c1c10..64c599121b 100644 --- a/include/m_genmenu.h +++ b/include/m_genmenu.h @@ -171,7 +171,7 @@ EXTERN_C MIR_APP_DLL(BOOL) Menu_ProcessHotKey(int hMenuObject, int key); EXTERN_C MIR_APP_DLL(int) Menu_RemoveItem(HGENMENU hMenuItem); ///////////////////////////////////////////////////////////////////////////////////////// -// changes menu item's visibility +// temporarily changes menu item's visibility EXTERN_C MIR_APP_DLL(void) Menu_ShowItem(HGENMENU hMenuItem, bool bShow); @@ -180,6 +180,11 @@ EXTERN_C MIR_APP_DLL(void) Menu_ShowItem(HGENMENU hMenuItem, bool bShow); EXTERN_C MIR_APP_DLL(void) Menu_SetChecked(HGENMENU hMenuItem, bool bSet); +///////////////////////////////////////////////////////////////////////////////////////// +// sets menu item's Visible checkbox programmatically and write it to the options + +EXTERN_C MIR_APP_DLL(void) Menu_SetVisible(HGENMENU pimi, bool bVisible); + ///////////////////////////////////////////////////////////////////////////////////////// // Creates a new menu object // szName = unique menu object identifier diff --git a/libs/win32/mir_app.lib b/libs/win32/mir_app.lib index 03b0b88f8e..bcd629962d 100644 Binary files a/libs/win32/mir_app.lib and b/libs/win32/mir_app.lib differ diff --git a/libs/win64/mir_app.lib b/libs/win64/mir_app.lib index 1e7fb0deb2..b7c6951225 100644 Binary files a/libs/win64/mir_app.lib and b/libs/win64/mir_app.lib differ diff --git a/src/mir_app/src/menu_options.cpp b/src/mir_app/src/menu_options.cpp index 63e16e61ab..333426c5d7 100644 --- a/src/mir_app/src/menu_options.cpp +++ b/src/mir_app/src/menu_options.cpp @@ -32,6 +32,25 @@ extern bool bIconsDisabled; extern int DefaultImageListColorDepth; void RebuildProtoMenus(); +MIR_APP_DLL(void) Menu_SetVisible(TMO_IntMenuItem *pimi, bool bVisible) +{ + if ((pimi = MO_GetIntMenuItem(pimi)) == nullptr) + return; + + char szModule[256], menuItemName[256]; + mir_snprintf(szModule, "%s_Items", pimi->parent->pszName); + bin2hex(&pimi->mi.uid, sizeof(pimi->mi.uid), menuItemName); + + ptrW wszValue(db_get_wsa(0, szModule, menuItemName)); + if (wszValue == nullptr) + wszValue = mir_wstrdup(L"1;;;"); + + wszValue[0] = bVisible ? '1' : '0'; + db_set_ws(0, szModule, menuItemName, wszValue); + + Menu_ShowItem(pimi, bVisible); +} + ///////////////////////////////////////////////////////////////////////////////////////// struct MenuItemOptData : public MZeroedObject diff --git a/src/mir_app/src/mir_app.def b/src/mir_app/src/mir_app.def index 001b75d8f6..3b8a50f6eb 100644 --- a/src/mir_app/src/mir_app.def +++ b/src/mir_app/src/mir_app.def @@ -630,3 +630,4 @@ Netlib_GetUserSettingsByName @658 Netlib_SetUserSettingsByName @659 ?Backup@MDatabaseCommon@@UAGHPB_W@Z @660 NONAME ?addFrame@CMPluginBase@@QAEHPBUCLISTFrame@@@Z @661 NONAME +Menu_SetVisible @662 diff --git a/src/mir_app/src/mir_app64.def b/src/mir_app/src/mir_app64.def index 7ecf390d80..5678c9d5e2 100644 --- a/src/mir_app/src/mir_app64.def +++ b/src/mir_app/src/mir_app64.def @@ -630,3 +630,4 @@ Netlib_GetUserSettingsByName @658 Netlib_SetUserSettingsByName @659 ?Backup@MDatabaseCommon@@UEAAHPEB_W@Z @660 NONAME ?addFrame@CMPluginBase@@QEAAHPEBUCLISTFrame@@@Z @661 NONAME +Menu_SetVisible @662 -- cgit v1.2.3