OSDN Git Service

Add Setting Dialog for Setup MSysGit
authorFrank Li <lznuaa@gmail.com>
Wed, 21 Jan 2009 15:21:43 +0000 (23:21 +0800)
committerFrank Li <lznuaa@gmail.com>
Wed, 21 Jan 2009 15:21:43 +0000 (23:21 +0800)
Signed-off-by: Frank Li <lznuaa@gmail.com>
src/Git/Git.cpp
src/Git/GitConfig.h
src/Resources/TortoiseProcENG.rc
src/TortoiseProc/Settings/SetMainPage.cpp
src/TortoiseProc/Settings/SetMainPage.h
src/TortoiseProc/TortoiseProc.cpp
src/TortoiseProc/resource.h

index 6ad1097..2666f6f 100644 (file)
@@ -3,6 +3,7 @@
 #include "atlconv.h"\r
 #include "GitRev.h"\r
 #include "registry.h"\r
+#include "GitConfig.h"\r
 \r
 #define MAX_DIRBUFFER 1000\r
 CGit g_Git;\r
@@ -128,7 +129,12 @@ int CGit::Run(CString cmd,BYTE_VECTOR *vector)
 int CGit::Run(CString cmd, CString* output,int code)\r
 {\r
        BYTE_VECTOR vector;\r
-       Run(cmd,&vector);\r
+       int ret;\r
+       ret=Run(cmd,&vector);\r
+\r
+       if(ret)\r
+               return ret;\r
+\r
        StringAppend(output,&(vector[0]),code);\r
        return 0;\r
 }\r
@@ -480,11 +486,11 @@ int CGit::GetMapHashToFriendName(MAP_HASH_NAME &map)
 \r
 BOOL CGit::CheckMsysGitDir()\r
 {\r
-       CRegString msysdir=CRegString(_T("Software\\TortoiseGit\\MSysGit"),_T(""),FALSE,HKEY_LOCAL_MACHINE);\r
+       CRegString msysdir=CRegString(REG_MSYSGIT_PATH,_T(""),FALSE,HKEY_LOCAL_MACHINE);\r
        CString str=msysdir;\r
        if(str.IsEmpty())\r
        {\r
-               CRegString msysinstalldir=CRegString(_T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Git_is1\\InstallLocation"),_T(""),FALSE,HKEY_LOCAL_MACHINE);\r
+               CRegString msysinstalldir=CRegString(REG_MSYSGIT_INSTALL,_T(""),FALSE,HKEY_LOCAL_MACHINE);\r
                str=msysinstalldir;\r
                str+="\\bin";\r
                msysdir=str;\r
index 85d5d70..9abfd54 100644 (file)
@@ -6,3 +6,6 @@ public:
        GitConfig(void);\r
        ~GitConfig(void);\r
 };\r
+\r
+#define REG_MSYSGIT_PATH _T("Software\\TortoiseGit\\MSysGit")\r
+#define REG_MSYSGIT_INSTALL _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Git_is1\\InstallLocation")
\ No newline at end of file
index e903e7c..307341d 100644 (file)
Binary files a/src/Resources/TortoiseProcENG.rc and b/src/Resources/TortoiseProcENG.rc differ
index e59d116..8c4529f 100644 (file)
 #include "Git.h"\r
 #include "MessageBox.h"\r
 #include "CommonResource.h"\r
+#include "GitConfig.h"\r
+#include "BrowseFolder.h"\r
 \r
 IMPLEMENT_DYNAMIC(CSetMainPage, ISettingsPropPage)\r
 CSetMainPage::CSetMainPage()\r
        : ISettingsPropPage(CSetMainPage::IDD)\r
-       , m_sTempExtensions(_T(""))\r
+       , m_sMsysGitPath(_T(""))\r
        , m_bCheckNewer(TRUE)\r
        , m_bLastCommitTime(FALSE)\r
        , m_bUseDotNetHack(FALSE)\r
 {\r
        m_regLanguage = CRegDWORD(_T("Software\\TortoiseGit\\LanguageID"), 1033);\r
-//     CString temp(SVN_CONFIG_DEFAULT_GLOBAL_IGNORES);\r
-//     m_regExtensions = CRegString(_T("Software\\Tigris.org\\Subversion\\Config\\miscellany\\global-ignores"), temp);\r
+       CString temp=CRegString(REG_MSYSGIT_INSTALL,_T(""),FALSE,HKEY_LOCAL_MACHINE);;\r
+       if(!temp.IsEmpty())\r
+               temp+=_T("bin");\r
+       m_regMsysGitPath = CRegString(REG_MSYSGIT_PATH,temp,FALSE,HKEY_LOCAL_MACHINE);\r
        m_regCheckNewer = CRegDWORD(_T("Software\\TortoiseGit\\CheckNewer"), TRUE);\r
        m_regLastCommitTime = CRegString(_T("Software\\Tigris.org\\Subversion\\Config\\miscellany\\use-commit-times"), _T(""));\r
        if ((GetEnvironmentVariable(_T("SVN_ASP_DOT_NET_HACK"), NULL, 0)==0)&&(GetLastError()==ERROR_ENVVAR_NOT_FOUND))\r
@@ -57,22 +61,24 @@ void CSetMainPage::DoDataExchange(CDataExchange* pDX)
        ISettingsPropPage::DoDataExchange(pDX);\r
        DDX_Control(pDX, IDC_LANGUAGECOMBO, m_LanguageCombo);\r
        m_dwLanguage = (DWORD)m_LanguageCombo.GetItemData(m_LanguageCombo.GetCurSel());\r
-       DDX_Text(pDX, IDC_TEMPEXTENSIONS, m_sTempExtensions);\r
-       DDX_Check(pDX, IDC_CHECKNEWERVERSION, m_bCheckNewer);\r
-       DDX_Check(pDX, IDC_COMMITFILETIMES, m_bLastCommitTime);\r
-       DDX_Check(pDX, IDC_ASPDOTNETHACK, m_bUseDotNetHack);\r
+       DDX_Text(pDX, IDC_MSYSGIT_PATH, m_sMsysGitPath);\r
+//     DDX_Check(pDX, IDC_CHECKNEWERVERSION, m_bCheckNewer);\r
+//     DDX_Check(pDX, IDC_COMMITFILETIMES, m_bLastCommitTime);\r
+//     DDX_Check(pDX, IDC_ASPDOTNETHACK, m_bUseDotNetHack);\r
 }\r
 \r
 \r
 BEGIN_MESSAGE_MAP(CSetMainPage, ISettingsPropPage)\r
        ON_CBN_SELCHANGE(IDC_LANGUAGECOMBO, OnModified)\r
-       ON_EN_CHANGE(IDC_TEMPEXTENSIONS, OnModified)\r
+//     ON_EN_CHANGE(IDC_TEMPEXTENSIONS, OnModified)\r
        ON_BN_CLICKED(IDC_EDITCONFIG, OnBnClickedEditconfig)\r
        ON_BN_CLICKED(IDC_CHECKNEWERVERSION, OnModified)\r
        ON_BN_CLICKED(IDC_CHECKNEWERBUTTON, OnBnClickedChecknewerbutton)\r
        ON_BN_CLICKED(IDC_COMMITFILETIMES, OnModified)\r
        ON_BN_CLICKED(IDC_SOUNDS, OnBnClickedSounds)\r
        ON_BN_CLICKED(IDC_ASPDOTNETHACK, OnASPHACK)\r
+       ON_BN_CLICKED(IDC_MSYSGIT_BROWSE,OnBrowseDir)\r
+       ON_BN_CLICKED(IDC_MSYSGIT_CHECK,OnCheck)\r
 END_MESSAGE_MAP()\r
 \r
 BOOL CSetMainPage::OnInitDialog()\r
@@ -81,7 +87,7 @@ BOOL CSetMainPage::OnInitDialog()
 \r
        EnableToolTips();\r
 \r
-       m_sTempExtensions = m_regExtensions;\r
+       m_sMsysGitPath = m_regMsysGitPath;\r
        m_dwLanguage = m_regLanguage;\r
        m_bCheckNewer = m_regCheckNewer;\r
 \r
@@ -90,12 +96,14 @@ BOOL CSetMainPage::OnInitDialog()
        m_bLastCommitTime = (temp.CompareNoCase(_T("yes"))==0);\r
 \r
        m_tooltips.Create(this);\r
-       m_tooltips.AddTool(IDC_TEMPEXTENSIONS, IDS_SETTINGS_TEMPEXTENSIONS_TT);\r
-       m_tooltips.AddTool(IDC_CHECKNEWERVERSION, IDS_SETTINGS_CHECKNEWER_TT);\r
-       m_tooltips.AddTool(IDC_COMMITFILETIMES, IDS_SETTINGS_COMMITFILETIMES_TT);\r
-       m_tooltips.AddTool(IDC_ASPDOTNETHACK, IDS_SETTINGS_DOTNETHACK_TT);\r
+       m_tooltips.AddTool(IDC_MSYSGIT_PATH,IDS_MSYSGIT_PATH_TT);\r
+       //m_tooltips.AddTool(IDC_CHECKNEWERVERSION, IDS_SETTINGS_CHECKNEWER_TT);\r
+       //m_tooltips.AddTool(IDC_COMMITFILETIMES, IDS_SETTINGS_COMMITFILETIMES_TT);\r
+       //m_tooltips.AddTool(IDC_ASPDOTNETHACK, IDS_SETTINGS_DOTNETHACK_TT);\r
 \r
        // set up the language selecting combobox\r
+       SHAutoComplete(GetDlgItem(IDC_MSYSGIT_PATH)->m_hWnd, SHACF_FILESYSTEM);\r
+\r
        TCHAR buf[MAX_PATH];\r
        GetLocaleInfo(1033, LOCALE_SNATIVELANGNAME, buf, sizeof(buf)/sizeof(TCHAR));\r
        m_LanguageCombo.AddString(buf);\r
@@ -163,9 +171,9 @@ BOOL CSetMainPage::OnApply()
 {\r
        UpdateData();\r
        Store (m_dwLanguage, m_regLanguage);\r
-       if (m_sTempExtensions.Compare(CString(m_regExtensions)))\r
+       if (m_sMsysGitPath.Compare(CString(m_regMsysGitPath)))\r
        {\r
-               Store (m_sTempExtensions, m_regExtensions);\r
+               Store (m_sMsysGitPath, m_regMsysGitPath);\r
                m_restart = Restart_Cache;\r
        }\r
        Store (m_bCheckNewer, m_regCheckNewer);\r
@@ -235,9 +243,35 @@ void CSetMainPage::OnBnClickedSounds()
                CAppUtils::LaunchApplication(_T("RUNDLL32 Shell32,Control_RunDLL mmsys.cpl,,1"), NULL, false);\r
 }\r
 \r
+void CSetMainPage::OnBrowseDir()\r
+{\r
+       CBrowseFolder browseFolder;\r
+       browseFolder.m_style = BIF_EDITBOX | BIF_NEWDIALOGSTYLE | BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;\r
+       CString dir;\r
+       this->UpdateData(TRUE);\r
+       dir=this->m_sMsysGitPath;\r
+       if (browseFolder.Show(GetSafeHwnd(), dir) == CBrowseFolder::OK) \r
+       {\r
+               m_sMsysGitPath=dir;\r
+               Store (m_sMsysGitPath, m_regMsysGitPath);\r
+               this->UpdateData(FALSE);\r
+       }\r
+       SetModified(TRUE);\r
+}\r
 \r
-\r
-\r
-\r
+void CSetMainPage::OnCheck()\r
+{\r
+       if(g_Git.CheckMsysGitDir())\r
+       {\r
+               CString cmd;\r
+               CString out;\r
+               cmd=_T("git.exe --version");\r
+               g_Git.Run(cmd,&out,CP_UTF8);\r
+               this->GetDlgItem(IDC_MSYSGIT_VER)->SetWindowText(out);\r
+       }else\r
+       {\r
+               CMessageBox::Show(NULL,_T("Msys Git Install Path Error"),_T("TortoiseGit"),MB_OK|MB_ICONERROR);\r
+       }\r
+}\r
 \r
 \r
index 868efc2..c553823 100644 (file)
@@ -47,8 +47,8 @@ protected:
        CString GetVersionFromFile(const CString & p_strDateiname);\r
 \r
 private:\r
-       CRegString              m_regExtensions;\r
-       CString                 m_sTempExtensions;\r
+       CRegString              m_regMsysGitPath;\r
+       CString                 m_sMsysGitPath;\r
        CToolTips               m_tooltips;\r
        CComboBox               m_LanguageCombo;\r
        CRegDWORD               m_regLanguage;\r
@@ -69,4 +69,6 @@ public:
        afx_msg void OnBnClickedEditconfig();\r
        afx_msg void OnBnClickedChecknewerbutton();\r
        afx_msg void OnBnClickedSounds();\r
+       afx_msg void OnBrowseDir();\r
+       afx_msg void OnCheck();\r
 };\r
index cc28df0..d2bc778 100644 (file)
@@ -42,6 +42,8 @@
 #include "Commands\Command.h"\r
 #include "CommonResource.h"\r
 #include "..\version.h"\r
+#include "..\Settings\Settings.h"\r
+\r
 #define STRUCT_IOVEC_DEFINED\r
 //#include "sasl.h"\r
 \r
@@ -126,6 +128,13 @@ Click Yes to open setting dialog to setup MSysGit Path"),
                                                        _T("TortoiseGit"),MB_YESNO|MB_ICONERROR)==IDYES);\r
                {\r
                        //todo open setting\r
+                               CSettings dlg(IDS_PROC_SETTINGS_TITLE);\r
+                               dlg.SetTreeViewMode(TRUE, TRUE, TRUE);\r
+                               dlg.SetTreeWidth(220);\r
+\r
+                               dlg.DoModal();\r
+                               dlg.HandleRestart();\r
+                               return TRUE;\r
                }\r
                return FALSE;   \r
        }\r
index 688e76a..c8ff9ad 100644 (file)
Binary files a/src/TortoiseProc/resource.h and b/src/TortoiseProc/resource.h differ