Provide (experimental) clang-format file
[TortoiseGit.git] / src / TortoiseProc / ResetDlg.cpp
blob56009a489e3c1d24c0e9e13c30f1dec90e9cc510
1 // TortoiseGit - a Windows shell extension for easy version control
3 // Copyright (C) 2008-2017 - TortoiseGit
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License
7 // as published by the Free Software Foundation; either version 2
8 // of the License, or (at your option) any later version.
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software Foundation,
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 // ResetDlg.cpp : implementation file
22 #include "stdafx.h"
23 #include "TortoiseProc.h"
24 #include "ResetDlg.h"
25 #include "Git.h"
26 #include "FileDiffDlg.h"
27 #include "AppUtils.h"
29 // CResetDlg dialog
31 IMPLEMENT_DYNAMIC(CResetDlg, CHorizontalResizableStandAloneDialog)
33 CResetDlg::CResetDlg(CWnd* pParent /*=nullptr*/)
34 : CHorizontalResizableStandAloneDialog(CResetDlg::IDD, pParent)
35 , CChooseVersion(this)
36 , m_ResetType(1)
40 CResetDlg::~CResetDlg()
44 void CResetDlg::DoDataExchange(CDataExchange* pDX)
46 CDialog::DoDataExchange(pDX);
47 CHOOSE_VERSION_DDX;
50 BEGIN_MESSAGE_MAP(CResetDlg, CHorizontalResizableStandAloneDialog)
51 CHOOSE_VERSION_EVENT
52 ON_BN_CLICKED(IDC_SHOW_MODIFIED_FILES, &CResetDlg::OnBnClickedShowModifiedFiles)
53 ON_WM_DESTROY()
54 END_MESSAGE_MAP()
56 // CResetDlg message handlers
57 BOOL CResetDlg::OnInitDialog()
59 CHorizontalResizableStandAloneDialog::OnInitDialog();
60 CAppUtils::MarkWindowAsUnpinnable(m_hWnd);
62 AdjustControlSize(IDC_RADIO_BRANCH);
63 AdjustControlSize(IDC_RADIO_TAGS);
64 AdjustControlSize(IDC_RADIO_VERSION);
65 AdjustControlSize(IDC_RADIO_RESET_SOFT);
66 AdjustControlSize(IDC_RADIO_RESET_MIXED);
67 AdjustControlSize(IDC_RADIO_RESET_HARD);
69 AddAnchor(IDC_SHOW_MODIFIED_FILES, TOP_LEFT, TOP_RIGHT);
70 AddAnchor(IDC_GROUP_RESET_TYPE, TOP_LEFT, TOP_RIGHT);
71 AddAnchor(IDOK, BOTTOM_RIGHT);
72 AddAnchor(IDCANCEL, BOTTOM_RIGHT);
73 AddAnchor(IDHELP, BOTTOM_RIGHT);
75 CHOOSE_VERSION_ADDANCHOR;
76 this->AddOthersToAnchor();
78 EnableSaveRestore(L"ResetDlg");
80 CString resetTo;
81 CString currentBranch = g_Git.GetCurrentBranch();
82 resetTo.Format(IDS_PROC_RESETBRANCH, (LPCTSTR)currentBranch);
83 GetDlgItem(IDC_GROUP_BASEON)->SetWindowTextW(resetTo);
85 if (GitAdminDir::IsBareRepo(g_Git.m_CurrentDir))
87 m_ResetType = 0;
88 DialogEnableWindow(IDC_RADIO_RESET_MIXED, FALSE);
89 DialogEnableWindow(IDC_RADIO_RESET_HARD, FALSE);
91 this->CheckRadioButton(IDC_RADIO_RESET_SOFT,IDC_RADIO_RESET_HARD,IDC_RADIO_RESET_SOFT+m_ResetType);
93 InitChooseVersion();
94 SetDefaultChoose(IDC_RADIO_BRANCH);
95 GetDlgItem(IDC_RADIO_RESET_SOFT + m_ResetType)->SetFocus();
97 return FALSE;
100 void CResetDlg::OnBnClickedChooseRadioHost()
102 OnBnClickedChooseRadio();
105 void CResetDlg::OnBnClickedShow()
107 OnBnClickedChooseVersion();
110 void CResetDlg::OnVersionChanged()
112 UpdateData(TRUE);
113 UpdateRevsionName();
114 UpdateData(FALSE);
117 void CResetDlg::OnOK()
119 this->UpdateData(TRUE);
120 UpdateRevsionName();
121 m_ResetToVersion = m_VersionName;
122 m_ResetType=this->GetCheckedRadioButton(IDC_RADIO_RESET_SOFT,IDC_RADIO_RESET_HARD)-IDC_RADIO_RESET_SOFT;
123 return CHorizontalResizableStandAloneDialog::OnOK();
126 void CResetDlg::OnBnClickedShowModifiedFiles()
128 CFileDiffDlg dlg;
130 dlg.m_strRev1 = L"HEAD";
131 dlg.m_strRev2 = GIT_REV_ZERO;
133 dlg.DoModal();
136 void CResetDlg::OnDestroy()
138 WaitForFinishLoading();
139 __super::OnDestroy();