728 lines
18 KiB
C++
728 lines
18 KiB
C++
// MyLoadMenu
|
|
|
|
#include "StdAfx.h"
|
|
|
|
// For compilers that support precompilation, includes "wx/wx.h".
|
|
#include "wx/wxprec.h"
|
|
|
|
#ifdef __BORLANDC__
|
|
#pragma hdrstop
|
|
#endif
|
|
|
|
#ifndef WX_PRECOMP
|
|
#include "wx/wx.h"
|
|
#endif
|
|
|
|
#undef _WIN32
|
|
|
|
#include <wx/aboutdlg.h>
|
|
|
|
#include "../../../../C/CpuArch.h"
|
|
#include "PropertyNameRes.h"
|
|
|
|
typedef wxMenuBar * HMENU;
|
|
|
|
#include "Common/StringConvert.h"
|
|
|
|
#include "Windows/Menu.h"
|
|
#include "Windows/ErrorMsg.h"
|
|
// FIXME #include "Windows/Clipboard.h"
|
|
|
|
#include "../../PropID.h"
|
|
|
|
#include "resource.h"
|
|
#include "App.h"
|
|
// FIXME #include "AboutDialog.h"
|
|
#include "../Common/CompressCall.h"
|
|
|
|
#include "HelpUtils.h"
|
|
#include "LangUtils.h"
|
|
#include "PluginInterface.h"
|
|
|
|
#include "../../MyVersion.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;
|
|
|
|
enum
|
|
{
|
|
kMenuIndex_File = 0,
|
|
kMenuIndex_Edit,
|
|
kMenuIndex_View,
|
|
kMenuIndex_Bookmarks
|
|
};
|
|
|
|
struct CStringLangPair
|
|
{
|
|
const 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 CIDLangPair kIDLangPairs[] =
|
|
{
|
|
// File
|
|
{ IDM_OPEN, 0x03000210 },
|
|
{ IDM_OPEN_INSIDE, 0x03000211 },
|
|
{ IDM_OPEN_OUTSIDE, 0x03000212 },
|
|
// { IDM_FILE_VIEW, 0x03000220 }, // FIXME : does not exist !
|
|
{ IDM_FILE_EDIT, 0x03000221 },
|
|
{ IDM_RENAME, 0x03000230 },
|
|
{ IDM_COPY_TO, 0x03000231 },
|
|
{ IDM_MOVE_TO, 0x03000232 },
|
|
{ IDM_DELETE, 0x03000233 },
|
|
{ IDM_PROPERTIES, 0x03000240 },
|
|
{ IDM_COMMENT, 0x03000241 },
|
|
{ IDM_CRC32, 0x03000242 },
|
|
{ IDM_DIFF, 0x03000243 },
|
|
{ IDM_SPLIT, 0x03000270 },
|
|
{ IDM_COMBINE, 0x03000271 },
|
|
{ IDM_CREATE_FOLDER, 0x03000250 },
|
|
{ IDM_CREATE_FILE, 0x03000251 },
|
|
// FIXME { IDCLOSE, 0x03000260 },
|
|
|
|
// Edit
|
|
/* FIXME
|
|
{ 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 },
|
|
|
|
{ 12111 , 0x03000710 }, // FIXME kAddToFavoritesLangID
|
|
{ 12112 , 0x03000451 } // FIXME kToolbarsLangID
|
|
};
|
|
|
|
|
|
#ifdef _WIN32
|
|
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;
|
|
}
|
|
#endif
|
|
|
|
|
|
/*
|
|
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;
|
|
}
|
|
*/
|
|
|
|
#ifdef _WIN32
|
|
static UINT Get_fMaskForString()
|
|
{
|
|
return MIIM_TYPE;
|
|
}
|
|
|
|
static UINT Get_fMaskForFTypeAndString()
|
|
{
|
|
return MIIM_TYPE;
|
|
}
|
|
#endif
|
|
|
|
|
|
static void MyChangeItem(wxMenuItem * mi,int LangID)
|
|
{
|
|
UString newString = LangString(LangID);
|
|
if (newString.IsEmpty())
|
|
return;
|
|
wxString ss = mi->GetItemLabel();
|
|
UString shorcutString((const wchar_t *)ss); // = item.StringValue;
|
|
int tabPos = shorcutString.ReverseFind(wchar_t('\t'));
|
|
if (tabPos >= 0)
|
|
newString += shorcutString.Ptr(tabPos);
|
|
// printf("Change Menu : %ls => %ls\n",(const wchar_t *)ss,(const wchar_t *)newString);
|
|
mi->SetItemLabel((const wchar_t *)newString);
|
|
|
|
}
|
|
|
|
static void MyChangeMenu(HMENU menuLoc, int level, int menuIndex)
|
|
{
|
|
// Sets the label of the top-level menus
|
|
for (int i1= 0; i1< sizeof(kStringLangPairs) / sizeof(kStringLangPairs[0]); i1++)
|
|
{
|
|
UString newString = LangString(kStringLangPairs[i1].LangID);
|
|
if (! newString.IsEmpty()) menuLoc->SetMenuLabel(i1, (const TCHAR *)newString);
|
|
}
|
|
|
|
// sub-menu items
|
|
for (int i = 0; i < sizeof(kIDLangPairs) / sizeof(kIDLangPairs[0]); i++)
|
|
{
|
|
wxMenuItem * mi = menuLoc->FindItem(kIDLangPairs[i].ControlID);
|
|
if (mi)
|
|
{
|
|
MyChangeItem(mi,kIDLangPairs[i].LangID);
|
|
}
|
|
// else
|
|
// printf("Change Menu : id=%d index=%d<>\n",kIDLangPairs[i].ControlID,i);
|
|
}
|
|
}
|
|
|
|
#ifdef _WIN32
|
|
CMenu g_FileMenu;
|
|
|
|
class CFileMenuDestroyer
|
|
{
|
|
public:
|
|
~CFileMenuDestroyer()
|
|
{
|
|
if ((HMENU)g_FileMenu != 0)
|
|
g_FileMenu.Destroy();
|
|
}
|
|
} g_FileMenuDestroyer;
|
|
#endif
|
|
|
|
|
|
void MyLoadMenu(HWND hWnd)
|
|
{
|
|
#ifdef _WIN32
|
|
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);
|
|
#else
|
|
extern void rc_MyLoadMenu(HWND hWnd);
|
|
rc_MyLoadMenu(hWnd);
|
|
if (!g_LangID.IsEmpty())
|
|
{
|
|
HMENU menuOld = ((wxFrame *)hWnd)->GetMenuBar(); // ::GetMenu(hWnd);
|
|
MyChangeMenu(menuOld, 0, 0);
|
|
}
|
|
#endif
|
|
}
|
|
|
|
extern HWND g_HWND;
|
|
void MyLoadMenu()
|
|
{
|
|
MyLoadMenu(g_HWND);
|
|
}
|
|
|
|
#ifdef _WIN32
|
|
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 == kEditMenuIndex)
|
|
{
|
|
/*
|
|
CMenu menu;
|
|
menu.Attach(hMenu);
|
|
menu.EnableItem(IDM_EDIT_CUT, MF_ENABLED);
|
|
menu.EnableItem(IDM_EDIT_COPY, MF_ENABLED);
|
|
menu.EnableItem(IDM_EDIT_PASTE, IsClipboardFormatAvailableHDROP() ? MF_ENABLED : MF_GRAYED);
|
|
*/
|
|
}
|
|
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;
|
|
}
|
|
}
|
|
#endif
|
|
|
|
bool ExecuteFileCommand(int id)
|
|
{
|
|
if (id >= kMenuCmdID_Plugin_Start)
|
|
{
|
|
printf("DEBUG : ExecuteFileCommand(id=%d)-0\n",id);
|
|
#ifdef _WIN32
|
|
g_App.GetFocusedPanel().InvokePluginCommand(id);
|
|
g_App.GetFocusedPanel()._sevenZipContextMenu.Release();
|
|
g_App.GetFocusedPanel()._systemContextMenu.Release();
|
|
#endif
|
|
return true;
|
|
}
|
|
|
|
printf("DEBUG : ExecuteFileCommand(id=%d)-1\n",id);
|
|
switch (id)
|
|
{
|
|
// File
|
|
case IDM_OPEN: g_App.OpenItem(); break;
|
|
case IDM_OPEN_INSIDE: g_App.OpenItemInside(NULL); break;
|
|
case IDM_OPEN_INSIDE_ONE: g_App.OpenItemInside(L"*"); break;
|
|
case IDM_OPEN_INSIDE_PARSER: g_App.OpenItemInside(L"#"); break;
|
|
case IDM_OPEN_OUTSIDE: g_App.OpenItemOutside(); break;
|
|
case IDM_FILE_VIEW: g_App.EditItem(false); break;
|
|
case IDM_FILE_EDIT: g_App.EditItem(true); break;
|
|
case IDM_RENAME: g_App.Rename(); break;
|
|
case IDM_COPY_TO: g_App.CopyTo(); break;
|
|
case IDM_MOVE_TO: g_App.MoveTo(); break;
|
|
#ifdef _WIN32 // FIXME
|
|
case IDM_DELETE: g_App.Delete(!IsKeyDown(VK_SHIFT)); break;
|
|
#else
|
|
case IDM_DELETE: g_App.Delete(true); break; // FIXME
|
|
#endif
|
|
|
|
case IDM_HASH_ALL: g_App.CalculateCrc(L"*"); break;
|
|
case IDM_CRC32: g_App.CalculateCrc(L"CRC32"); break;
|
|
case IDM_CRC64: g_App.CalculateCrc(L"CRC64"); break;
|
|
case IDM_SHA1: g_App.CalculateCrc(L"SHA1"); break;
|
|
case IDM_SHA256: g_App.CalculateCrc(L"SHA256"); break;
|
|
|
|
case IDM_DIFF: g_App.DiffFiles(); break;
|
|
case IDM_SPLIT: g_App.Split(); break;
|
|
case IDM_COMBINE: g_App.Combine(); break;
|
|
case IDM_PROPERTIES: g_App.Properties(); break;
|
|
case IDM_COMMENT: g_App.Comment(); break;
|
|
case IDM_CREATE_FOLDER: g_App.CreateFolder(); break;
|
|
case IDM_CREATE_FILE: g_App.CreateFile(); break;
|
|
#if 0 // FIXME #ifndef UNDER_CE
|
|
case IDM_LINK: g_App.Link(); break;
|
|
#endif
|
|
default: return false;
|
|
}
|
|
printf("DEBUG : ExecuteFileCommand(id=%d)-2\n",id);
|
|
return true;
|
|
}
|
|
|
|
#define LLL_(quote) L##quote
|
|
#define LLL(quote) LLL_(quote)
|
|
|
|
void createAboutDialog(void)
|
|
{
|
|
wxAboutDialogInfo info;
|
|
|
|
UString msg;
|
|
|
|
msg = L"7-Zip is free software";
|
|
info.SetDescription((const wchar_t *)msg);
|
|
|
|
|
|
UString version = LLL(MY_VERSION);
|
|
#ifdef MY_CPU_64BIT
|
|
version += L" [";
|
|
version += LangString(IDS_PROP_BIT64);
|
|
version += L']';
|
|
#endif
|
|
|
|
info.SetName(_("P7ZIP"));
|
|
// info.SetVersion(wxString(MY_VERSION, wxConvUTF8));
|
|
info.SetVersion((const wchar_t *)version);
|
|
info.SetCopyright(wxString(MY_COPYRIGHT, wxConvUTF8));
|
|
info.SetWebSite(_T("www.7-zip.org"));
|
|
|
|
wxAboutBox(info);
|
|
}
|
|
|
|
static void MyBenchmark(bool totalMode)
|
|
{
|
|
CPanel::CDisableTimerProcessing disableTimerProcessing1(g_App.Panels[0]);
|
|
CPanel::CDisableTimerProcessing disableTimerProcessing2(g_App.Panels[1]);
|
|
Benchmark(totalMode);
|
|
}
|
|
|
|
bool OnMenuCommand(HWND hWnd, int id)
|
|
{
|
|
printf("DEBUG : OnMenuCommand(%p,id=%d)-0\n",hWnd,id);
|
|
|
|
if (ExecuteFileCommand(id))
|
|
return true;
|
|
|
|
printf("DEBUG : OnMenuCommand(%p,id=%d)-1\n",hWnd,id);
|
|
|
|
switch (id)
|
|
{
|
|
// File
|
|
case IDCLOSE:
|
|
/* FIXME
|
|
SendMessage(hWnd, WM_ACTIVATE, MAKEWPARAM(WA_INACTIVE, 0), (LPARAM)hWnd);
|
|
SendMessage (hWnd, WM_CLOSE, 0, 0);
|
|
*/
|
|
hWnd->Close(true);
|
|
break;
|
|
|
|
// Edit
|
|
/*
|
|
case IDM_EDIT_CUT:
|
|
g_App.EditCut();
|
|
break;
|
|
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.Refresh_StatusBar();
|
|
break;
|
|
case IDM_DESELECT_ALL:
|
|
g_App.SelectAll(false);
|
|
g_App.Refresh_StatusBar();
|
|
break;
|
|
case IDM_INVERT_SELECTION:
|
|
g_App.InvertSelection();
|
|
g_App.Refresh_StatusBar();
|
|
break;
|
|
case IDM_SELECT:
|
|
g_App.SelectSpec(true);
|
|
g_App.Refresh_StatusBar();
|
|
break;
|
|
case IDM_DESELECT:
|
|
g_App.SelectSpec(false);
|
|
g_App.Refresh_StatusBar();
|
|
break;
|
|
case IDM_SELECT_BY_TYPE:
|
|
g_App.SelectByType(true);
|
|
g_App.Refresh_StatusBar();
|
|
break;
|
|
case IDM_DESELECT_BY_TYPE:
|
|
g_App.SelectByType(false);
|
|
g_App.Refresh_StatusBar();
|
|
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), kMenuIndex_View));
|
|
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(kpidMTime); 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_FLAT_VIEW: g_App.ChangeFlatMode(); break;
|
|
case IDM_VIEW_REFRESH: g_App.RefreshView(); break;
|
|
case IDM_VIEW_AUTO_REFRESH: g_App.Change_AutoRefresh_Mode(); break;
|
|
|
|
// case IDM_VIEW_SHOW_STREAMS: g_App.Change_ShowNtfsStrems_Mode(); break;
|
|
/*
|
|
case IDM_VIEW_SHOW_DELETED:
|
|
{
|
|
g_App.Change_ShowDeleted();
|
|
bool isChecked = g_App.ShowDeletedFiles;
|
|
Save_ShowDeleted(isChecked);
|
|
}
|
|
*/
|
|
|
|
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
|
|
// FIXME case IDM_OPTIONS: OptionsDialog(hWnd, g_hInstance); break;
|
|
|
|
case IDM_BENCHMARK: MyBenchmark(false); break;
|
|
case IDM_BENCHMARK2: MyBenchmark(true); break;
|
|
|
|
// Help
|
|
case IDM_HELP_CONTENTS:
|
|
ShowHelpWindow(NULL, kFMHelpTopic);
|
|
break;
|
|
case IDM_ABOUT:
|
|
{
|
|
/* FIXME
|
|
CAboutDialog dialog;
|
|
dialog.Create(hWnd);
|
|
*/
|
|
createAboutDialog();
|
|
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;
|
|
}
|
|
|