OSDN Git Service

CreateBranchTag: Enable track option when creating a branch based on a remote
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / CreateBranchTagDlg.cpp
index 082a52b..ea8cbc8 100644 (file)
@@ -2,18 +2,22 @@
 //\r
 \r
 #include "stdafx.h"\r
+#include "Git.h"\r
 #include "TortoiseProc.h"\r
 #include "CreateBranchTagDlg.h"\r
 \r
+#include "Messagebox.h"\r
 \r
 // CCreateBranchTagDlg dialog\r
 \r
 IMPLEMENT_DYNAMIC(CCreateBranchTagDlg, CResizableStandAloneDialog)\r
 \r
 CCreateBranchTagDlg::CCreateBranchTagDlg(CWnd* pParent /*=NULL*/)\r
-       : CResizableStandAloneDialog(CCreateBranchTagDlg::IDD, pParent)\r
+       : CResizableStandAloneDialog(CCreateBranchTagDlg::IDD, pParent),\r
+       CChooseVersion(this)\r
 {\r
-\r
+       m_bIsTag=0;\r
+       m_bSwitch = 0;  // default switch to checkbox not selected\r
 }\r
 \r
 CCreateBranchTagDlg::~CCreateBranchTagDlg()\r
@@ -23,37 +27,101 @@ CCreateBranchTagDlg::~CCreateBranchTagDlg()
 void CCreateBranchTagDlg::DoDataExchange(CDataExchange* pDX)\r
 {\r
        CDialog::DoDataExchange(pDX);\r
-       DDX_Control(pDX, IDC_COMBOBOXEX_BRANCH, this->m_Branch);\r
-       DDX_Control(pDX, IDC_COMBOBOXEX_TAGS, this->m_Tags);\r
-       DDX_Control(pDX, IDC_COMBOBOXEX_VERSION, this->m_Version);\r
-                               \r
+\r
+       CHOOSE_VERSION_DDX;\r
+\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
 BEGIN_MESSAGE_MAP(CCreateBranchTagDlg, CResizableStandAloneDialog)\r
+       CHOOSE_VERSION_EVENT\r
+       ON_BN_CLICKED(IDOK, &CCreateBranchTagDlg::OnBnClickedOk)\r
+       ON_CBN_SELCHANGE(IDC_COMBOBOXEX_BRANCH, &CCreateBranchTagDlg::OnCbnSelchangeComboboxexBranch)\r
 END_MESSAGE_MAP()\r
 \r
 BOOL CCreateBranchTagDlg::OnInitDialog()\r
 {\r
        CResizableStandAloneDialog::OnInitDialog();\r
 \r
-       AddAnchor(IDC_COMBOBOXEX_BRANCH, TOP_LEFT, TOP_RIGHT);\r
-       AddAnchor(IDC_COMBOBOXEX_TAGS, TOP_LEFT, TOP_RIGHT);\r
-       AddAnchor(IDC_COMBOBOXEX_VERSION, TOP_LEFT, TOP_RIGHT);\r
+       CHOOSE_VERSION_ADDANCHOR;\r
 \r
        AddAnchor(IDC_GROUP_BRANCH, TOP_LEFT, TOP_RIGHT);\r
-       AddAnchor(IDC_GROUP_BASEON, TOP_LEFT, TOP_RIGHT);\r
+       \r
        AddAnchor(IDC_GROUP_OPTION, TOP_LEFT, TOP_RIGHT);\r
 \r
        AddAnchor(IDOK,BOTTOM_RIGHT);\r
        AddAnchor(IDCANCEL,BOTTOM_RIGHT);\r
 \r
+       this->AddOthersToAnchor();\r
+\r
+       if(m_Base.IsEmpty())\r
+       {\r
+               this->SetDefaultChoose(IDC_RADIO_HEAD);\r
+       \r
+       }else\r
+       {\r
+               this->SetDefaultChoose(IDC_RADIO_VERSION);\r
+               this->GetDlgItem(IDC_COMBOBOXEX_VERSION)->SetWindowTextW(m_Base);\r
+       }\r
+\r
+       Init();\r
+\r
+       this->GetDlgItem(IDC_CHECK_TRACK)->EnableWindow(FALSE);\r
+\r
+       if(this->m_bIsTag)\r
+       {\r
+               this->SetWindowTextW(_T("Create Tag"));\r
+               this->GetDlgItem(IDC_LABEL_BRANCH)->SetWindowTextW(_T("Tag"));\r
+       }\r
+       else\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
+\r
+       OnCbnSelchangeComboboxexBranch();\r
        return TRUE;\r
 \r
 \r
 }\r
 // CCreateBranchTagDlg message handlers\r
+\r
+void CCreateBranchTagDlg::OnBnClickedOk()\r
+{\r
+       // TODO: Add your control notification handler code here\r
+       this->UpdateData(TRUE);\r
+\r
+       this->m_BranchTagName.Trim();\r
+       if(this->m_BranchTagName.IsEmpty()  ||  this->m_BranchTagName.Find(' ') >= 0 )\r
+       {\r
+               CMessageBox::Show(NULL, IDS_B_T_NOTEMPTY, IDS_TORTOISEGIT, MB_OK);\r
+               return;\r
+       }\r
+       this->UpdateRevsionName();\r
+       OnOK();\r
+}\r
+\r
+void CCreateBranchTagDlg::OnCbnSelchangeComboboxexBranch()\r
+{\r
+       // TODO: Add your control notification handler code here\r
+       \r
+       if(this->m_ChooseVersioinBranch.GetString().Left(8)==_T("remotes/"))\r
+               this->GetDlgItem(IDC_CHECK_TRACK)->EnableWindow(TRUE);\r
+       else\r
+               this->GetDlgItem(IDC_CHECK_TRACK)->EnableWindow(FALSE);\r
+\r
+       if(this->m_bIsTag)\r
+               this->GetDlgItem(IDC_CHECK_TRACK)->EnableWindow(FALSE);\r
+}\r