#include "MessageBox.h"\r
#include "XPTheme.h"\r
#include "MenuInfo.h"\r
+#include "ShellCache.h"\r
\r
extern MenuInfo menuInfo[];\r
\r
: ISettingsPropPage(CSetLookAndFeelPage::IDD)\r
, m_bBlock(false)\r
{\r
- m_regTopmenu = CRegDWORD(_T("Software\\TortoiseGit\\ContextMenuEntries"), MENUSYNC|MENUCREATEREPOS|MENUCLONE|MENUCOMMIT);\r
- m_regTopmenuhigh = CRegDWORD(_T("Software\\TortoiseGit\\ContextMenuEntrieshigh"), (MENUSYNC|MENUCREATEREPOS|MENUCLONE|MENUCOMMIT)>>32);\r
+ ShellCache cache;\r
+ m_regTopmenu = cache.menulayoutlow;\r
+ m_regTopmenuhigh = cache.menulayouthigh;\r
\r
m_topmenu = unsigned __int64(DWORD(m_regTopmenuhigh))<<32;\r
m_topmenu |= unsigned __int64(DWORD(m_regTopmenu));\r
BOOL CSetLookAndFeelPage::OnApply()\r
{\r
UpdateData();\r
- Store ((DWORD)(m_topmenu & 0xFFFFFFFF), m_regTopmenu);\r
- Store ((DWORD)(m_topmenu >> 32), m_regTopmenuhigh);\r
\r
+ m_regTopmenu = m_topmenu & 0xFFFFFFFF;\r
+ m_regTopmenuhigh = (m_topmenu >> 32);\r
+ \r
+ m_regTopmenu.getErrorString();\r
m_sNoContextPaths.Replace(_T("\r"), _T(""));\r
if (m_sNoContextPaths.Right(1).Compare(_T("\n"))!=0)\r
m_sNoContextPaths += _T("\n");\r
return ISettingsPropPage::OnApply();\r
}\r
\r
-void CSetLookAndFeelPage::InsertItem(UINT nTextID, UINT nIconID, unsigned __int64 dwFlags)\r
-{\r
- HICON hIcon = reinterpret_cast<HICON>(::LoadImage(AfxGetResourceHandle(),\r
- MAKEINTRESOURCE(nIconID),\r
- IMAGE_ICON, 16, 16, LR_LOADTRANSPARENT ));\r
- int nImage = m_imgList.Add(hIcon);\r
- CString temp;\r
- temp.LoadString(nTextID);\r
- CStringUtils::RemoveAccelerators(temp);\r
- int nIndex = m_cMenuList.GetItemCount();\r
- m_cMenuList.InsertItem(nIndex, temp, nImage);\r
- m_cMenuList.SetCheck(nIndex, !!(m_topmenu & dwFlags));\r
-}\r
-\r
void CSetLookAndFeelPage::OnLvnItemchangedMenulist(NMHDR * /*pNMHDR*/, LRESULT *pResult)\r
{\r
if (m_bBlock)\r
SetModified();\r
}\r
\r
+\r
+\r
+// Set Extmenu class\r
+#include "SetExtMenu.h"\r
+\r
+IMPLEMENT_DYNAMIC(CSetExtMenu, ISettingsPropPage)\r
+CSetExtMenu::CSetExtMenu()\r
+ : ISettingsPropPage(CSetExtMenu::IDD)\r
+{\r
+ ShellCache shell;\r
+\r
+ m_regExtmenu = shell.menuextlow;\r
+ m_regExtmenuhigh = shell.menuexthigh;\r
+\r
+ m_extmenu = unsigned __int64(DWORD(m_regExtmenuhigh))<<32;\r
+ m_extmenu |= unsigned __int64(DWORD(m_regExtmenu));\r
+\r
+}\r
+\r
+CSetExtMenu::~CSetExtMenu()\r
+{\r
+}\r
+\r
+void CSetExtMenu::DoDataExchange(CDataExchange* pDX)\r
+{\r
+ ISettingsPropPage::DoDataExchange(pDX);\r
+ DDX_Control(pDX, IDC_MENULIST, m_cMenuList);\r
+}\r
+\r
+\r
+BEGIN_MESSAGE_MAP(CSetExtMenu, ISettingsPropPage)\r
+ ON_NOTIFY(LVN_ITEMCHANGED, IDC_MENULIST, OnLvnItemchangedMenulist)\r
+ ON_BN_CLICKED(IDC_GETLOCKTOP, OnChange)\r
+END_MESSAGE_MAP()\r
+\r
+\r
+BOOL CSetExtMenu::OnInitDialog()\r
+{\r
+ ISettingsPropPage::OnInitDialog();\r
+\r
+ m_tooltips.Create(this);\r
+ m_tooltips.AddTool(IDC_MENULIST, IDS_SETTINGS_MENULAYOUT_TT);\r
+ //m_tooltips.AddTool(IDC_GETLOCKTOP, IDS_SETTINGS_GETLOCKTOP_TT);\r
+ //m_tooltips.AddTool(IDC_NOCONTEXTPATHS, IDS_SETTINGS_EXCLUDECONTEXTLIST_TT);\r
+\r
+ m_cMenuList.SetExtendedStyle(LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER);\r
+\r
+ m_cMenuList.DeleteAllItems();\r
+ int c = ((CHeaderCtrl*)(m_cMenuList.GetDlgItem(0)))->GetItemCount()-1;\r
+ while (c>=0)\r
+ m_cMenuList.DeleteColumn(c--);\r
+ m_cMenuList.InsertColumn(0, _T(""));\r
+\r
+ CXPTheme theme;\r
+ theme.SetWindowTheme(m_cMenuList.GetSafeHwnd(), L"Explorer", NULL);\r
+\r
+ m_cMenuList.SetRedraw(false);\r
+\r
+ m_imgList.Create(16, 16, ILC_COLOR16 | ILC_MASK, 4, 1);\r
+\r
+ m_bBlock = true;\r
+\r
+ InsertMenuItemToList(&m_cMenuList,&m_imgList);\r
+ SetMenuItemCheck(&m_cMenuList,m_extmenu);\r
+\r
+ m_bBlock = false;\r
+\r
+ m_cMenuList.SetImageList(&m_imgList, LVSIL_SMALL);\r
+ int mincol = 0;\r
+ int maxcol = ((CHeaderCtrl*)(m_cMenuList.GetDlgItem(0)))->GetItemCount()-1;\r
+ int col;\r
+ for (col = mincol; col <= maxcol; col++)\r
+ {\r
+ m_cMenuList.SetColumnWidth(col,LVSCW_AUTOSIZE_USEHEADER);\r
+ }\r
+ m_cMenuList.SetRedraw(true);\r
+\r
+ UpdateData(FALSE);\r
+\r
+ return TRUE;\r
+}\r
+\r
+BOOL CSetExtMenu::PreTranslateMessage(MSG* pMsg)\r
+{\r
+ m_tooltips.RelayEvent(pMsg);\r
+ return ISettingsPropPage::PreTranslateMessage(pMsg);\r
+}\r
+\r
+BOOL CSetExtMenu::OnApply()\r
+{\r
+ UpdateData();\r
+\r
+ m_regExtmenu = (DWORD)(m_extmenu & 0xFFFFFFFF);\r
+ m_regExtmenuhigh = (DWORD)(m_extmenu >> 32);\r
+\r
+ SetModified(FALSE);\r
+ return ISettingsPropPage::OnApply();\r
+}\r
+\r
+void CSetExtMenu::OnLvnItemchangedMenulist(NMHDR * /*pNMHDR*/, LRESULT *pResult)\r
+{\r
+ if( m_bBlock )\r
+ return;\r
+\r
+ SetModified(TRUE);\r
+ if (m_cMenuList.GetItemCount() > 0)\r
+ {\r
+ m_extmenu = GetMenuListMask(&m_cMenuList);\r
+ }\r
+ *pResult = 0;\r
+}\r
+\r
+void CSetExtMenu::OnChange()\r
+{\r
+ SetModified();\r
+}\r