OSDN Git Service

Tidy up create branch/tag dialog
authorColin Law <colin@clanlaw.org.uk>
Mon, 2 Feb 2009 09:04:13 +0000 (09:04 +0000)
committerFrank Li <lznuaa@gmail.com>
Mon, 2 Feb 2009 09:22:56 +0000 (17:22 +0800)
Add 'Switch to new branch' option when creating new branch
Add current branch indication beside HEAD text
Display error if branch/tag name is empty or contains spaces

src/Resources/TortoiseProcENG.rc
src/TortoiseProc/AppUtils.cpp
src/TortoiseProc/CreateBranchTagDlg.cpp
src/TortoiseProc/CreateBranchTagDlg.h
src/TortoiseProc/GitSwitchDlg.cpp
src/TortoiseProc/resource.h

index 4414cf7..8e682f0 100644 (file)
Binary files a/src/Resources/TortoiseProcENG.rc and b/src/Resources/TortoiseProcENG.rc differ
index 063ef21..b616560 100644 (file)
@@ -1106,6 +1106,14 @@ bool CAppUtils::CreateBranchTag(bool IsTag,CString *CommitHash)
                {\r
                        CMessageBox::Show(NULL,out,_T("TortoiseGit"),MB_OK);\r
                }\r
                {\r
                        CMessageBox::Show(NULL,out,_T("TortoiseGit"),MB_OK);\r
                }\r
+               if( !IsTag  &&  dlg.m_bSwitch )\r
+               {\r
+                       // it is a new branch and the user has requested to switch to it\r
+                       cmd.Format(_T("git.exe checkout %s"), dlg.m_BranchTagName);\r
+                       g_Git.Run(cmd,&out,CP_UTF8);\r
+                       CMessageBox::Show(NULL,out,_T("TortoiseGit"),MB_OK);\r
+               }\r
+               \r
                return TRUE;\r
                \r
        }\r
                return TRUE;\r
                \r
        }\r
index 7a7ac57..b99e545 100644 (file)
@@ -17,6 +17,7 @@ CCreateBranchTagDlg::CCreateBranchTagDlg(CWnd* pParent /*=NULL*/)
        CChooseVersion(this)\r
 {\r
        m_bIsTag=0;\r
        CChooseVersion(this)\r
 {\r
        m_bIsTag=0;\r
+       m_bSwitch = 1;  // default switch to checkbox selected\r
 }\r
 \r
 CCreateBranchTagDlg::~CCreateBranchTagDlg()\r
 }\r
 \r
 CCreateBranchTagDlg::~CCreateBranchTagDlg()\r
@@ -32,6 +33,7 @@ void CCreateBranchTagDlg::DoDataExchange(CDataExchange* pDX)
        DDX_Text(pDX, IDC_BRANCH_TAG, this->m_BranchTagName);\r
        DDX_Check(pDX,IDC_CHECK_FORCE,this->m_bForce);\r
        DDX_Check(pDX,IDC_CHECK_TRACK,this->m_bTrack);\r
        DDX_Text(pDX, IDC_BRANCH_TAG, this->m_BranchTagName);\r
        DDX_Check(pDX,IDC_CHECK_FORCE,this->m_bForce);\r
        DDX_Check(pDX,IDC_CHECK_TRACK,this->m_bTrack);\r
+       DDX_Check(pDX,IDC_CHECK_SWITCH,this->m_bSwitch);\r
 \r
 }\r
 \r
 \r
 }\r
 \r
@@ -79,6 +81,12 @@ BOOL CCreateBranchTagDlg::OnInitDialog()
                this->SetWindowTextW(_T("Create Branch"));\r
                this->GetDlgItem(IDC_LABEL_BRANCH)->SetWindowTextW(_T("Branch"));\r
        }\r
                this->SetWindowTextW(_T("Create Branch"));\r
                this->GetDlgItem(IDC_LABEL_BRANCH)->SetWindowTextW(_T("Branch"));\r
        }\r
+       // show the switch checkbox if we are a create branch dialog\r
+       this->GetDlgItem(IDC_CHECK_SWITCH)->ShowWindow( !m_bIsTag );\r
+       CWnd* pHead = GetDlgItem(IDC_RADIO_HEAD);\r
+       CString HeadText;\r
+       pHead->GetWindowText( HeadText ); \r
+       pHead->SetWindowText( HeadText + " (" + g_Git.GetCurrentBranch() + ")");\r
        EnableSaveRestore(_T("BranchTagDlg"));\r
        return TRUE;\r
 \r
        EnableSaveRestore(_T("BranchTagDlg"));\r
        return TRUE;\r
 \r
@@ -91,9 +99,10 @@ void CCreateBranchTagDlg::OnBnClickedOk()
        // TODO: Add your control notification handler code here\r
        this->UpdateData(TRUE);\r
 \r
        // TODO: Add your control notification handler code here\r
        this->UpdateData(TRUE);\r
 \r
-       if(this->m_BranchTagName.Trim().IsEmpty())\r
+       this->m_BranchTagName.Trim();\r
+       if(this->m_BranchTagName.IsEmpty()  ||  this->m_BranchTagName.Find(' ') >= 0 )\r
        {\r
        {\r
-               CMessageBox::Show(NULL,_T("Branch\\Tag name can't empty"),_T("TortiseGit"),MB_OK);\r
+               CMessageBox::Show(NULL, IDS_B_T_NOTEMPTY, IDS_TORTOISEGIT, MB_OK);\r
                return;\r
        }\r
        this->UpdateRevsionName();\r
                return;\r
        }\r
        this->UpdateRevsionName();\r
index 9bf42ff..10b802a 100644 (file)
@@ -19,6 +19,7 @@ public:
        BOOL m_bForce;\r
        BOOL m_bTrack;\r
        BOOL m_bIsTag;\r
        BOOL m_bForce;\r
        BOOL m_bTrack;\r
        BOOL m_bIsTag;\r
+       BOOL m_bSwitch;\r
 \r
        CString m_Base;\r
        CString m_BranchTagName;\r
 \r
        CString m_Base;\r
        CString m_BranchTagName;\r
index d52b869..e11f849 100644 (file)
@@ -90,13 +90,20 @@ void CGitSwitchDlg::OnBnClickedChooseRadioHost()
 \r
 void CGitSwitchDlg::OnBnClickedOk()\r
 {\r
 \r
 void CGitSwitchDlg::OnBnClickedOk()\r
 {\r
-       // TODO: Add your control notification handler code here\r
        this->UpdateData(TRUE);\r
        \r
        this->UpdateData(TRUE);\r
        \r
-       UpdateRevsionName();\r
-       //this->m_Version.SaveHistory();\r
-\r
-       OnOK();\r
+       // make sure a valid branch has been entered if a new branch is required\r
+       if ( m_bBranch  &&  ( m_NewBranch.Trim().IsEmpty() ||  m_NewBranch.Find(' ') >= 0 ) )\r
+       {\r
+               // new branch requested but name is empty or contains spaces\r
+               CMessageBox::Show(NULL, IDS_B_T_NOTEMPTY, IDS_TORTOISEGIT, MB_OK);\r
+       }\r
+       else\r
+       {\r
+               UpdateRevsionName();\r
+               //this->m_Version.SaveHistory();\r
+               OnOK();\r
+       }\r
 }\r
 void CGitSwitchDlg::OnBnClickedCheckBranch()\r
 {\r
 }\r
 void CGitSwitchDlg::OnBnClickedCheckBranch()\r
 {\r
index ff878fb..af989ee 100644 (file)
Binary files a/src/TortoiseProc/resource.h and b/src/TortoiseProc/resource.h differ