OSDN Git Service

Sync Dialog branch select basic work.
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / SyncDlg.cpp
1 // TortoiseGit - a Windows shell extension for easy version control\r
2 \r
3 // Copyright (C) 2008-2009 - TortoiseGit\r
4 \r
5 // This program is free software; you can redistribute it and/or\r
6 // modify it under the terms of the GNU General Public License\r
7 // as published by the Free Software Foundation; either version 2\r
8 // of the License, or (at your option) any later version.\r
9 \r
10 // This program is distributed in the hope that it will be useful,\r
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13 // GNU General Public License for more details.\r
14 \r
15 // You should have received a copy of the GNU General Public License\r
16 // along with this program; if not, write to the Free Software Foundation,\r
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
18 //\r
19 \r
20 // SyncDlg.cpp : implementation file\r
21 //\r
22 \r
23 #include "stdafx.h"\r
24 #include "TortoiseProc.h"\r
25 #include "SyncDlg.h"\r
26 \r
27 \r
28 // CSyncDlg dialog\r
29 \r
30 IMPLEMENT_DYNAMIC(CSyncDlg, CResizableStandAloneDialog)\r
31 \r
32 CSyncDlg::CSyncDlg(CWnd* pParent /*=NULL*/)\r
33         : CResizableStandAloneDialog(CSyncDlg::IDD, pParent)\r
34         , m_bAutoLoadPuttyKey(FALSE)\r
35 {\r
36         m_pTooltip=&this->m_tooltips;\r
37 }\r
38 \r
39 CSyncDlg::~CSyncDlg()\r
40 {\r
41 }\r
42 \r
43 void CSyncDlg::DoDataExchange(CDataExchange* pDX)\r
44 {\r
45         CDialog::DoDataExchange(pDX);\r
46         DDX_Check(pDX, IDC_CHECK_PUTTY_KEY, m_bAutoLoadPuttyKey);\r
47         DDX_Control(pDX, IDC_COMBOBOXEX_URL, m_ctrlURL);\r
48         DDX_Control(pDX, IDC_BUTTON_TABCTRL, m_ctrlDumyButton);\r
49         DDX_Control(pDX, IDC_BUTTON_PULL, m_ctrlPull);\r
50         DDX_Control(pDX, IDC_BUTTON_PUSH, m_ctrlPush);\r
51         DDX_Control(pDX, IDC_STATIC_STATUS, m_ctrlStatus);\r
52         DDX_Control(pDX, IDC_PROGRESS_SYNC, m_ctrlProgress);\r
53         DDX_Control(pDX, IDC_ANIMATE_SYNC, m_ctrlAnimate);\r
54 \r
55         BRANCH_COMBOX_DDX;\r
56 }\r
57 \r
58 \r
59 BEGIN_MESSAGE_MAP(CSyncDlg, CResizableStandAloneDialog)\r
60         ON_BN_CLICKED(IDC_BUTTON_PULL, &CSyncDlg::OnBnClickedButtonPull)\r
61         ON_BN_CLICKED(IDC_BUTTON_PUSH, &CSyncDlg::OnBnClickedButtonPush)\r
62         ON_BN_CLICKED(IDC_BUTTON_APPLY, &CSyncDlg::OnBnClickedButtonApply)\r
63         ON_BN_CLICKED(IDC_BUTTON_EMAIL, &CSyncDlg::OnBnClickedButtonEmail)\r
64         ON_BN_CLICKED(IDC_BUTTON_MANAGE, &CSyncDlg::OnBnClickedButtonManage)\r
65         BRANCH_COMBOX_EVENT\r
66 END_MESSAGE_MAP()\r
67 \r
68 \r
69 // CSyncDlg message handlers\r
70 \r
71 void CSyncDlg::OnBnClickedButtonPull()\r
72 {\r
73         // TODO: Add your control notification handler code here\r
74         this->m_regPullButton =this->m_ctrlPull.GetCurrentEntry();\r
75 }\r
76 \r
77 void CSyncDlg::OnBnClickedButtonPush()\r
78 {\r
79         // TODO: Add your control notification handler code here\r
80         this->m_regPushButton=this->m_ctrlPush.GetCurrentEntry();\r
81 \r
82 }\r
83 \r
84 void CSyncDlg::OnBnClickedButtonApply()\r
85 {\r
86         // TODO: Add your control notification handler code here\r
87 }\r
88 \r
89 void CSyncDlg::OnBnClickedButtonEmail()\r
90 {\r
91         // TODO: Add your control notification handler code here\r
92 }\r
93 \r
94 BOOL CSyncDlg::OnInitDialog()\r
95 {\r
96         CResizableStandAloneDialog::OnInitDialog();\r
97 \r
98         //Create Tabctrl\r
99         CWnd *pwnd=this->GetDlgItem(IDC_BUTTON_TABCTRL);\r
100         CRect rectDummy;\r
101         pwnd->GetWindowRect(&rectDummy);\r
102         this->ScreenToClient(rectDummy);\r
103 \r
104         if (!m_ctrlTabCtrl.Create(CMFCTabCtrl::STYLE_FLAT, rectDummy, this, IDC_SYNC_TAB))\r
105         {\r
106                 TRACE0("Failed to create output tab window\n");\r
107                 return FALSE;      // fail to create\r
108         }\r
109         m_ctrlTabCtrl.SetResizeMode(CMFCTabCtrl::RESIZE_NO);\r
110 \r
111         this->m_tooltips.Create(this);\r
112 \r
113         AddAnchor(IDC_SYNC_TAB,TOP_LEFT,BOTTOM_RIGHT);\r
114 \r
115         AddAnchor(IDC_GROUP_INFO,TOP_LEFT,TOP_RIGHT);\r
116         AddAnchor(IDC_COMBOBOXEX_URL,TOP_LEFT,TOP_RIGHT);\r
117         AddAnchor(IDC_BUTTON_MANAGE,TOP_RIGHT);\r
118         AddAnchor(IDC_BUTTON_PULL,BOTTOM_LEFT);\r
119         AddAnchor(IDC_BUTTON_PUSH,BOTTOM_LEFT);\r
120         AddAnchor(IDC_BUTTON_APPLY,BOTTOM_LEFT);\r
121         AddAnchor(IDC_BUTTON_EMAIL,BOTTOM_LEFT);\r
122         AddAnchor(IDC_PROGRESS_SYNC,BOTTOM_LEFT,BOTTOM_RIGHT);\r
123         AddAnchor(IDOK,BOTTOM_RIGHT);\r
124         AddAnchor(IDHELP,BOTTOM_RIGHT);\r
125         AddAnchor(IDC_STATIC_STATUS,BOTTOM_LEFT);\r
126         AddAnchor(IDC_ANIMATE_SYNC,TOP_RIGHT);\r
127         \r
128         BRANCH_COMBOX_ADD_ANCHOR();\r
129 \r
130         CString WorkingDir=g_Git.m_CurrentDir;\r
131         WorkingDir.Replace(_T(':'),_T('_'));\r
132         m_RegKeyRemoteBranch = CString(_T("Software\\TortoiseGit\\History\\SyncBranch\\"))+WorkingDir;\r
133 \r
134 \r
135         this->AddOthersToAnchor();\r
136         // TODO:  Add extra initialization here\r
137 \r
138         this->m_ctrlPush.AddEntry(CString(_T("Push")));\r
139         this->m_ctrlPush.AddEntry(CString(_T("Push tags")));\r
140         this->m_ctrlPush.AddEntry(CString(_T("Push All")));\r
141 \r
142         this->m_ctrlPull.AddEntry(CString(_T("&Pull")));\r
143         this->m_ctrlPull.AddEntry(CString(_T("&Fetch")));\r
144         this->m_ctrlPull.AddEntry(CString(_T("Fetch&&Rebase")));\r
145 \r
146         \r
147         WorkingDir.Replace(_T(':'),_T('_'));\r
148 \r
149         CString regkey ;\r
150         regkey.Format(_T("Software\\TortoiseGit\\TortoiseProc\\Sync\\%s"),WorkingDir);\r
151 \r
152         this->m_regPullButton = CRegDWORD(regkey+_T("\\Pull"),0);\r
153         this->m_regPushButton = CRegDWORD(regkey+_T("\\Push"),0);\r
154 \r
155         this->m_ctrlPull.SetCurrentEntry(this->m_regPullButton);\r
156         this->m_ctrlPush.SetCurrentEntry(this->m_regPushButton);\r
157 \r
158         CString str;\r
159         this->GetWindowText(str);\r
160         str += _T(" - ") + g_Git.m_CurrentDir;\r
161         this->SetWindowText(str);\r
162 \r
163         EnableSaveRestore(_T("SyncDlg"));\r
164 \r
165         this->LoadBranchInfo();\r
166         return TRUE;  // return TRUE unless you set the focus to a control\r
167         // EXCEPTION: OCX Property Pages should return FALSE\r
168 }\r
169 \r
170 void CSyncDlg::OnBnClickedButtonManage()\r
171 {\r
172         // TODO: Add your control notification handler code here\r
173         CAppUtils::LaunchRemoteSetting();\r
174 }\r
175 \r
176 BOOL CSyncDlg::PreTranslateMessage(MSG* pMsg)\r
177 {\r
178         // TODO: Add your specialized code here and/or call the base class\r
179         m_tooltips.RelayEvent(pMsg);\r
180         return __super::PreTranslateMessage(pMsg);\r
181 }\r