Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/kornelski/7z.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '7zip/FileManager/MyLoadMenu.cpp')
-rwxr-xr-x7zip/FileManager/MyLoadMenu.cpp694
1 files changed, 0 insertions, 694 deletions
diff --git a/7zip/FileManager/MyLoadMenu.cpp b/7zip/FileManager/MyLoadMenu.cpp
deleted file mode 100755
index e464f7f3..00000000
--- a/7zip/FileManager/MyLoadMenu.cpp
+++ /dev/null
@@ -1,694 +0,0 @@
-// MyLoadMenu
-
-#include "StdAfx.h"
-
-#include "Common/StringConvert.h"
-
-#include "Windows/Menu.h"
-#include "Windows/Error.h"
-
-#include "../PropID.h"
-
-#include "resource.h"
-#include "App.h"
-#include "Resource/AboutDialog/AboutDialog.h"
-#include "Resource/BenchmarkDialog/BenchmarkDialog.h"
-
-#include "HelpUtils.h"
-#include "LangUtils.h"
-#include "PluginInterface.h"
-
-static const UINT kOpenBookmarkMenuID = 730;
-static const UINT kSetBookmarkMenuID = 740;
-
-extern HINSTANCE g_hInstance;
-
-static LPCWSTR kFMHelpTopic = L"FM/index.htm";
-
-extern void OptionsDialog(HWND hwndOwner, HINSTANCE hInstance);
-
-using namespace NWindows;
-
-static const int kFileMenuIndex = 0;
-static const int kViewMenuIndex = 2;
-static const int kBookmarksMenuIndex = kViewMenuIndex + 1;
-
-struct CStringLangPair
-{
- wchar_t *String;
- UINT32 LangID;
-};
-
-static CStringLangPair kStringLangPairs[] =
-{
- { L"&File", 0x03000102 },
- { L"&Edit", 0x03000103 },
- { L"&View", 0x03000104 },
- { L"&Bookmarks", 0x03000107 },
- { L"&Tools", 0x03000105 },
- { L"&Help", 0x03000106 },
-};
-
-UINT32 kAddToFavoritesLangID = 0x03000710;
-UINT32 kToolbarsLangID = 0x03000451;
-
-/*
-static int FindStringLangItem(const UString &anItem)
-{
- for (int i = 0; i < sizeof(kStringLangPairs) /
- sizeof(kStringLangPairs[0]); i++)
- if (anItem.CompareNoCase(kStringLangPairs[i].String) == 0)
- return i;
- return -1;
-}
-*/
-
-static CIDLangPair kIDLangPairs[] =
-{
- // File
- { IDM_FILE_OPEN, 0x03000210 },
- { IDM_FILE_OPEN_INSIDE, 0x03000211 },
- { IDM_FILE_OPEN_OUTSIDE, 0x03000212 },
- { IDM_FILE_VIEW, 0x03000220 },
- { IDM_FILE_EDIT, 0x03000221 },
- { IDM_RENAME, 0x03000230 },
- { IDM_COPY_TO, 0x03000231 },
- { IDM_MOVE_TO, 0x03000232 },
- { IDM_DELETE, 0x03000233 },
- { IDM_FILE_PROPERTIES, 0x03000240 },
- { IDM_FILE_COMMENT, 0x03000241 },
- { IDM_FILE_CRC, 0x03000242 },
- { IDM_FILE_SPLIT, 0x03000270 },
- { IDM_FILE_COMBINE, 0x03000271 },
- { IDM_CREATE_FOLDER, 0x03000250 },
- { IDM_CREATE_FILE, 0x03000251 },
- { IDCLOSE, 0x03000260 },
-
- // Edit
- { IDM_EDIT_CUT, 0x03000320 },
- { IDM_EDIT_COPY, 0x03000321 },
- { IDM_EDIT_PASTE, 0x03000322 },
-
- { IDM_SELECT_ALL, 0x03000330 },
- { IDM_DESELECT_ALL, 0x03000331 },
- { IDM_INVERT_SELECTION, 0x03000332 },
- { IDM_SELECT, 0x03000333 },
- { IDM_DESELECT, 0x03000334 },
- { IDM_SELECT_BY_TYPE, 0x03000335 },
- { IDM_DESELECT_BY_TYPE, 0x03000336 },
-
- { IDM_VIEW_LARGE_ICONS, 0x03000410 },
- { IDM_VIEW_SMALL_ICONS, 0x03000411 },
- { IDM_VIEW_LIST, 0x03000412 },
- { IDM_VIEW_DETAILS, 0x03000413 },
-
- { IDM_VIEW_ARANGE_BY_NAME, 0x02000204 },
- { IDM_VIEW_ARANGE_BY_TYPE, 0x02000214 },
- { IDM_VIEW_ARANGE_BY_DATE, 0x0200020C },
- { IDM_VIEW_ARANGE_BY_SIZE, 0x02000207 },
- { IDM_VIEW_ARANGE_NO_SORT, 0x03000420 },
-
- { IDM_OPEN_ROOT_FOLDER, 0x03000430 },
- { IDM_OPEN_PARENT_FOLDER, 0x03000431 },
- { IDM_FOLDERS_HISTORY, 0x03000432 },
-
- { IDM_VIEW_REFRESH, 0x03000440 },
-
- { IDM_VIEW_FLAT_VIEW, 0x03000449 },
- { IDM_VIEW_TWO_PANELS, 0x03000450 },
- { IDM_VIEW_ARCHIVE_TOOLBAR, 0x03000460 },
- { IDM_VIEW_STANDARD_TOOLBAR, 0x03000461 },
- { IDM_VIEW_TOOLBARS_LARGE_BUTTONS, 0x03000462 },
- { IDM_VIEW_TOOLBARS_SHOW_BUTTONS_TEXT, 0x03000463 },
-
- { IDM_OPTIONS, 0x03000510 },
- { IDM_BENCHMARK, 0x03000511 },
-
- { IDM_HELP_CONTENTS, 0x03000610 },
- { IDM_ABOUT, 0x03000620 }
-};
-
-
-static int FindLangItem(int ControlID)
-{
- for (int i = 0; i < sizeof(kIDLangPairs) / sizeof(kIDLangPairs[0]); i++)
- if (kIDLangPairs[i].ControlID == ControlID)
- return i;
- return -1;
-}
-
-
-/*
-static bool g_IsNew_fMask = true;
-
-class CInit_fMask
-{
-public:
- CInit_fMask()
- {
- g_IsNew_fMask = false;
- OSVERSIONINFO vi;
- vi.dwOSVersionInfoSize = sizeof(vi);
- if (::GetVersionEx(&vi))
- {
- g_IsNew_fMask = (vi.dwMajorVersion > 4 ||
- (vi.dwMajorVersion == 4 && vi.dwMinorVersion > 0));
- }
- g_IsNew_fMask = false;
- }
-} g_Init_fMask;
-
-// it's hack for supporting Windows NT
-// constants are from WinUser.h
-
-#if(WINVER < 0x0500)
-#define MIIM_STRING 0x00000040
-#define MIIM_BITMAP 0x00000080
-#define MIIM_FTYPE 0x00000100
-#endif
-
-static UINT Get_fMaskForString()
-{
- return g_IsNew_fMask ? MIIM_STRING : MIIM_TYPE;
-}
-
-static UINT Get_fMaskForFTypeAndString()
-{
- return g_IsNew_fMask ? (MIIM_STRING | MIIM_FTYPE) : MIIM_TYPE;
-}
-*/
-
-static UINT Get_fMaskForString()
-{
- return MIIM_TYPE;
-}
-
-static UINT Get_fMaskForFTypeAndString()
-{
- return MIIM_TYPE;
-}
-
-
-
-static void MyChangeMenu(HMENU menuLoc, int level, int menuIndex)
-{
- CMenu menu;
- menu.Attach(menuLoc);
- for (int i = 0; i < menu.GetItemCount(); i++)
- {
- CMenuItem item;
- item.fMask = Get_fMaskForString() | MIIM_SUBMENU | MIIM_ID;
- item.fType = MFT_STRING;
- if (menu.GetItem(i, true, item))
- {
- UString newString;
- if (item.hSubMenu)
- {
- if (level == 1 && menuIndex == kBookmarksMenuIndex)
- newString = LangString(kAddToFavoritesLangID);
- else
- {
- MyChangeMenu(item.hSubMenu, level + 1, i);
- if (level == 1 && menuIndex == kViewMenuIndex)
- {
- newString = LangString(kToolbarsLangID);
- }
- else
- {
- if (level == 0 && i < sizeof(kStringLangPairs) /
- sizeof(kStringLangPairs[0]))
- newString = LangString(kStringLangPairs[i].LangID);
- else
- continue;
- }
- }
- if (newString.IsEmpty())
- continue;
- }
- else
- {
- int langPos = FindLangItem(item.wID);
- if (langPos < 0)
- continue;
- newString = LangString(kIDLangPairs[langPos].LangID);
- if (newString.IsEmpty())
- continue;
- UString shorcutString = item.StringValue;
- int tabPos = shorcutString.ReverseFind(wchar_t('\t'));
- if (tabPos >= 0)
- newString += shorcutString.Mid(tabPos);
- }
- {
- item.StringValue = newString;
- item.fMask = Get_fMaskForString();
- item.fType = MFT_STRING;
- menu.SetItem(i, true, item);
- }
- }
- }
-}
-
-CMenu g_FileMenu;
-
-class CFileMenuDestroyer
-{
-public:
- ~CFileMenuDestroyer()
- {
- if ((HMENU)g_FileMenu != 0)
- g_FileMenu.Destroy();
- }
-} g_FileMenuDestroyer;
-
-
-void MyLoadMenu(HWND hWnd)
-{
- if ((HMENU)g_FileMenu != 0)
- g_FileMenu.Destroy();
- HMENU oldMenu = ::GetMenu(hWnd);
- HMENU baseMenu = ::LoadMenu(g_hInstance, MAKEINTRESOURCE(IDM_MENU));
- ::SetMenu(hWnd, baseMenu);
- ::DestroyMenu(oldMenu);
- if (!g_LangID.IsEmpty())
- {
- HMENU menuOld = ::GetMenu(hWnd);
- MyChangeMenu(menuOld, 0, 0);
- }
- ::DrawMenuBar(hWnd);
-}
-
-extern HWND g_HWND;
-void MyLoadMenu()
-{
- MyLoadMenu(g_HWND);
-}
-
-static void CopyMenu(HMENU srcMenuSpec, HMENU destMenuSpec)
-{
- CMenu srcMenu;
- srcMenu.Attach(srcMenuSpec);
- CMenu destMenu;
- destMenu.Attach(destMenuSpec);
- int startPos = 0;
- for (int i = 0; i < srcMenu.GetItemCount(); i++)
- {
- CMenuItem item;
- item.fMask = MIIM_STATE | MIIM_ID | Get_fMaskForFTypeAndString();
- item.fType = MFT_STRING;
- if (srcMenu.GetItem(i, true, item))
- if (destMenu.InsertItem(startPos, true, item))
- startPos++;
- }
-}
-
-void OnMenuActivating(HWND /* hWnd */, HMENU hMenu, int position)
-{
- if (::GetSubMenu(::GetMenu(g_HWND), position) != hMenu)
- return;
- if (position == kFileMenuIndex)
- {
- if ((HMENU)g_FileMenu == 0)
- {
- g_FileMenu.CreatePopup();
- CopyMenu(hMenu, g_FileMenu);
- }
- CMenu menu;
- menu.Attach(hMenu);
- while (menu.GetItemCount() > 0)
- {
- if (!menu.RemoveItem(0, MF_BYPOSITION))
- break;
- }
- // CopyMenu(g_FileMenu, hMenu);
- g_App.GetFocusedPanel().CreateFileMenu(hMenu);
-
- }
- else if (position == kViewMenuIndex)
- {
- // View;
- CMenu menu;
- menu.Attach(hMenu);
- menu.CheckRadioItem(IDM_VIEW_LARGE_ICONS, IDM_VIEW_DETAILS,
- IDM_VIEW_LARGE_ICONS + g_App.GetListViewMode(), MF_BYCOMMAND);
- menu.CheckItem(IDM_VIEW_TWO_PANELS, MF_BYCOMMAND |
- ((g_App.NumPanels == 2) ? MF_CHECKED : MF_UNCHECKED));
- menu.CheckItem(IDM_VIEW_FLAT_VIEW, MF_BYCOMMAND |
- ((g_App.GetFlatMode()) ? MF_CHECKED : MF_UNCHECKED));
- menu.CheckItem(IDM_VIEW_ARCHIVE_TOOLBAR, MF_BYCOMMAND |
- (g_App.ShowArchiveToolbar ? MF_CHECKED : MF_UNCHECKED));
- menu.CheckItem(IDM_VIEW_STANDARD_TOOLBAR, MF_BYCOMMAND |
- (g_App.ShowStandardToolbar ? MF_CHECKED : MF_UNCHECKED));
- menu.CheckItem(IDM_VIEW_TOOLBARS_LARGE_BUTTONS, MF_BYCOMMAND |
- (g_App.LargeButtons ? MF_CHECKED : MF_UNCHECKED));
- menu.CheckItem(IDM_VIEW_TOOLBARS_SHOW_BUTTONS_TEXT, MF_BYCOMMAND |
- (g_App.ShowButtonsLables ? MF_CHECKED : MF_UNCHECKED));
- }
- else if (position == kBookmarksMenuIndex)
- {
- CMenu menu;
- menu.Attach(hMenu);
-
- CMenu subMenu;
- subMenu.Attach(menu.GetSubMenu(0));
- while (subMenu.GetItemCount() > 0)
- subMenu.RemoveItem(subMenu.GetItemCount() - 1, MF_BYPOSITION);
- int i;
- for (i = 0; i < 10; i++)
- {
- UString s = LangString(IDS_BOOKMARK, 0x03000720);
- s += L" ";
- wchar_t c = (wchar_t)(L'0' + i);
- s += c;
- s += L"\tAlt+Shift+";
- s += c;
- subMenu.AppendItem(MF_STRING, kSetBookmarkMenuID + i, s);
- }
-
- while (menu.GetItemCount() > 2)
- menu.RemoveItem(menu.GetItemCount() - 1, MF_BYPOSITION);
-
- for (i = 0; i < 10; i++)
- {
- UString path = g_App.AppState.FastFolders.GetString(i);
- const int kMaxSize = 100;
- const int kFirstPartSize = kMaxSize / 2;
- if (path.Length() > kMaxSize)
- {
- path = path.Left(kFirstPartSize) + UString(L" ... ") +
- path.Right(kMaxSize - kFirstPartSize);
- }
- UString s = path;
- if (s.IsEmpty())
- s = L"-";
- s += L"\tAlt+";
- s += (wchar_t)(L'0' + i);
- menu.AppendItem(MF_STRING, kOpenBookmarkMenuID + i, s);
- }
- }
-}
-
-/*
-It doesn't help
-void OnMenuUnActivating(HWND hWnd, HMENU hMenu, int id)
-{
- if (::GetSubMenu(::GetMenu(g_HWND), 0) != hMenu)
- return;
- // g_App.GetFocusedPanel()._contextMenu.Release();
-}
-
-void OnMenuUnActivating(HWND hWnd)
-{
-}
-*/
-
-
-void LoadFileMenu(HMENU hMenu, int startPos, bool /* forFileMode */, bool programMenu)
-{
- {
- CMenu srcMenu;
- srcMenu.Attach(::GetSubMenu(::GetMenu(g_HWND), 0));
- if ((HMENU)g_FileMenu == 0)
- {
- g_FileMenu.CreatePopup();
- CopyMenu(srcMenu, g_FileMenu);
- }
- }
-
- CMenu destMenu;
- destMenu.Attach(hMenu);
-
- for (int i = 0; i < g_FileMenu.GetItemCount(); i++)
- {
- CMenuItem item;
-
- item.fMask = MIIM_STATE | MIIM_ID | Get_fMaskForFTypeAndString();
- item.fType = MFT_STRING;
- if (g_FileMenu.GetItem(i, true, item))
- {
- if (!programMenu)
- if (item.wID == IDCLOSE)
- continue;
- /*
- bool createItem = (item.wID == IDM_CREATE_FOLDER || item.wID == IDM_CREATE_FILE);
- if (forFileMode)
- {
- if (createItem)
- continue;
- }
- else
- {
- if (!createItem)
- continue;
- }
- */
- if (destMenu.InsertItem(startPos, true, item))
- startPos++;
- }
- }
- while (destMenu.GetItemCount() > 0)
- {
- CMenuItem item;
- item.fMask = MIIM_TYPE;
- item.fType = 0;
- // item.dwTypeData = 0;
- int lastIndex = destMenu.GetItemCount() - 1;
- if (!destMenu.GetItem(lastIndex, true, item))
- break;
- if(item.fType != MFT_SEPARATOR)
- break;
- if (!destMenu.RemoveItem(lastIndex, MF_BYPOSITION))
- break;
- }
-}
-
-bool ExecuteFileCommand(int id)
-{
- if (id >= kPluginMenuStartID)
- {
- g_App.GetFocusedPanel().InvokePluginCommand(id);
- g_App.GetFocusedPanel()._sevenZipContextMenu.Release();
- g_App.GetFocusedPanel()._systemContextMenu.Release();
- return true;
- }
-
- switch (id)
- {
- // File
- case IDM_FILE_OPEN:
- g_App.OpenItem();
- break;
- case IDM_FILE_OPEN_INSIDE:
- g_App.OpenItemInside();
- break;
- case IDM_FILE_OPEN_OUTSIDE:
- g_App.OpenItemOutside();
- break;
- case IDM_FILE_VIEW:
- break;
- case IDM_FILE_EDIT:
- g_App.EditItem();
- break;
- case IDM_RENAME:
- g_App.Rename();
- break;
- case IDM_COPY_TO:
- g_App.CopyTo();
- break;
- case IDM_MOVE_TO:
- g_App.MoveTo();
- break;
- case IDM_DELETE:
- {
- bool shift = (::GetKeyState(VK_SHIFT) & 0x8000) != 0;
- g_App.Delete(!shift);
- break;
- }
- case IDM_FILE_CRC:
- g_App.CalculateCrc();
- break;
- case IDM_FILE_SPLIT:
- g_App.Split();
- break;
- case IDM_FILE_COMBINE:
- g_App.Combine();
- break;
- case IDM_FILE_PROPERTIES:
- g_App.Properties();
- break;
- case IDM_FILE_COMMENT:
- g_App.Comment();
- break;
-
- case IDM_CREATE_FOLDER:
- g_App.CreateFolder();
- break;
- case IDM_CREATE_FILE:
- g_App.CreateFile();
- break;
- default:
- return false;
- }
- return true;
-}
-
-bool OnMenuCommand(HWND hWnd, int id)
-{
- if (ExecuteFileCommand(id))
- return true;
-
- switch (id)
- {
- // File
- case IDCLOSE:
- SendMessage(hWnd, WM_ACTIVATE, MAKEWPARAM(WA_INACTIVE, 0), (LPARAM)hWnd);
- SendMessage (hWnd, WM_CLOSE, 0, 0);
- break;
-
- // Edit
- case IDM_EDIT_COPY:
- g_App.EditCopy();
- break;
- case IDM_EDIT_PASTE:
- g_App.EditPaste();
- break;
- case IDM_SELECT_ALL:
- g_App.SelectAll(true);
- g_App.RefreshStatusBar();
- break;
- case IDM_DESELECT_ALL:
- g_App.SelectAll(false);
- g_App.RefreshStatusBar();
- break;
- case IDM_INVERT_SELECTION:
- g_App.InvertSelection();
- g_App.RefreshStatusBar();
- break;
- case IDM_SELECT:
- g_App.SelectSpec(true);
- g_App.RefreshStatusBar();
- break;
- case IDM_DESELECT:
- g_App.SelectSpec(false);
- g_App.RefreshStatusBar();
- break;
- case IDM_SELECT_BY_TYPE:
- g_App.SelectByType(true);
- g_App.RefreshStatusBar();
- break;
- case IDM_DESELECT_BY_TYPE:
- g_App.SelectByType(false);
- g_App.RefreshStatusBar();
- break;
-
- //View
- case IDM_VIEW_LARGE_ICONS:
- case IDM_VIEW_SMALL_ICONS:
- case IDM_VIEW_LIST:
- case IDM_VIEW_DETAILS:
- {
- UINT index = id - IDM_VIEW_LARGE_ICONS;
- if (index < 4)
- {
- g_App.SetListViewMode(index);
- /*
- CMenu menu;
- menu.Attach(::GetSubMenu(::GetMenu(hWnd), kViewMenuIndex));
- menu.CheckRadioItem(IDM_VIEW_LARGE_ICONS, IDM_VIEW_DETAILS,
- id, MF_BYCOMMAND);
- */
- }
- break;
- }
- case IDM_VIEW_ARANGE_BY_NAME:
- {
- g_App.SortItemsWithPropID(kpidName);
- break;
- }
- case IDM_VIEW_ARANGE_BY_TYPE:
- {
- g_App.SortItemsWithPropID(kpidExtension);
- break;
- }
- case IDM_VIEW_ARANGE_BY_DATE:
- {
- g_App.SortItemsWithPropID(kpidLastWriteTime);
- break;
- }
- case IDM_VIEW_ARANGE_BY_SIZE:
- {
- g_App.SortItemsWithPropID(kpidSize);
- break;
- }
- case IDM_VIEW_ARANGE_NO_SORT:
- {
- g_App.SortItemsWithPropID(kpidNoProperty);
- break;
- }
-
- case IDM_OPEN_ROOT_FOLDER:
- g_App.OpenRootFolder();
- break;
- case IDM_OPEN_PARENT_FOLDER:
- g_App.OpenParentFolder();
- break;
- case IDM_FOLDERS_HISTORY:
- g_App.FoldersHistory();
- break;
- case IDM_VIEW_REFRESH:
- g_App.RefreshView();
- break;
- case IDM_VIEW_FLAT_VIEW:
- g_App.ChangeFlatMode();
- break;
- case IDM_VIEW_TWO_PANELS:
- g_App.SwitchOnOffOnePanel();
- break;
- case IDM_VIEW_STANDARD_TOOLBAR:
- g_App.SwitchStandardToolbar();
- break;
- case IDM_VIEW_ARCHIVE_TOOLBAR:
- g_App.SwitchArchiveToolbar();
- break;
- case IDM_VIEW_TOOLBARS_SHOW_BUTTONS_TEXT:
- g_App.SwitchButtonsLables();
- break;
- case IDM_VIEW_TOOLBARS_LARGE_BUTTONS:
- g_App.SwitchLargeButtons();
- break;
-
- // Tools
- case IDM_OPTIONS:
- OptionsDialog(hWnd, g_hInstance);
- break;
-
- case IDM_BENCHMARK:
- Benchmark(hWnd);
- break;
- // Help
- case IDM_HELP_CONTENTS:
- ShowHelpWindow(NULL, kFMHelpTopic);
- break;
- case IDM_ABOUT:
- {
- CAboutDialog dialog;
- dialog.Create(hWnd);
- break;
- }
- default:
- {
- if (id >= kOpenBookmarkMenuID && id <= kOpenBookmarkMenuID + 9)
- {
- g_App.OpenBookmark(id - kOpenBookmarkMenuID);
- return true;
- }
- else if (id >= kSetBookmarkMenuID && id <= kSetBookmarkMenuID + 9)
- {
- g_App.SetBookmark(id - kSetBookmarkMenuID);
- return true;
- }
- return false;
- }
- }
- return true;
-}
-