1 // TortoiseGit - a Windows shell extension for easy version control
3 // Copyright (C) 2016 - 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.
20 #include "TortoiseProc.h"
21 #include "FirstStartWizard.h"
22 #include "FirstStartWizardUser.h"
25 IMPLEMENT_DYNAMIC(CFirstStartWizardUser
, CFirstStartWizardBasePage
)
27 CFirstStartWizardUser::CFirstStartWizardUser() : CFirstStartWizardBasePage(CFirstStartWizardUser::IDD
)
30 m_psp
.dwFlags
|= PSP_DEFAULT
| PSP_USEHEADERTITLE
;
31 m_psp
.dwFlags
&= ~PSP_HASHELP
;
32 m_psp
.pszHeaderTitle
= MAKEINTRESOURCE(IDS_FIRSTSTART_USERTITLE
);
35 CFirstStartWizardUser::~CFirstStartWizardUser()
39 void CFirstStartWizardUser::DoDataExchange(CDataExchange
* pDX
)
41 CFirstStartWizardBasePage::DoDataExchange(pDX
);
42 DDX_Check(pDX
, IDC_DONTSAVE
, m_bNoSave
);
43 DDX_Text(pDX
, IDC_GIT_USERNAME
, m_sUsername
);
44 DDX_Text(pDX
, IDC_GIT_USEREMAIL
, m_sUseremail
);
47 BEGIN_MESSAGE_MAP(CFirstStartWizardUser
, CFirstStartWizardBasePage
)
48 ON_BN_CLICKED(IDC_DONTSAVE
, OnClickedNoSave
)
51 void CFirstStartWizardUser::OnClickedNoSave()
54 GetDlgItem(IDC_GIT_USERNAME
)->EnableWindow(!m_bNoSave
);
55 GetDlgItem(IDC_GIT_USEREMAIL
)->EnableWindow(!m_bNoSave
);
58 LRESULT
CFirstStartWizardUser::OnWizardNext()
64 if (m_sUsername
.Trim().IsEmpty() || m_sUseremail
.Trim().IsEmpty())
66 MessageBox(L
"Username and email must not be empty.", L
"TortoiseGit", MB_ICONERROR
);
70 CAutoConfig
config(true);
71 int err
= git_config_add_file_ondisk(config
, CGit::GetGitPathStringA(g_Git
.GetGitGlobalXDGConfig()), GIT_CONFIG_LEVEL_XDG
, FALSE
);
72 if (!err
&& (PathFileExists(g_Git
.GetGitGlobalConfig()) || !PathFileExists(g_Git
.GetGitGlobalXDGConfig())))
73 err
= git_config_add_file_ondisk(config
, CGit::GetGitPathStringA(g_Git
.GetGitGlobalConfig()), GIT_CONFIG_LEVEL_GLOBAL
, FALSE
);
76 MessageBox(g_Git
.GetLibGit2LastErr(), L
"TortoiseGit", MB_ICONEXCLAMATION
);
79 if (git_config_set_string(config
, "user.name", CUnicodeUtils::GetUTF8(m_sUsername
)))
81 MessageBox(g_Git
.GetLibGit2LastErr(), L
"TortoiseGit", MB_ICONEXCLAMATION
);
84 if (git_config_set_string(config
, "user.email", CUnicodeUtils::GetUTF8(m_sUseremail
)))
86 MessageBox(g_Git
.GetLibGit2LastErr(), L
"TortoiseGit", MB_ICONEXCLAMATION
);
91 return __super::OnWizardNext();
94 BOOL
CFirstStartWizardUser::OnInitDialog()
96 CFirstStartWizardBasePage::OnInitDialog();
98 AdjustControlSize(IDC_DONTSAVE
);
100 CAutoConfig
config(true);
101 if (git_config_add_file_ondisk(config
, CGit::GetGitPathStringA(g_Git
.GetGitGlobalConfig()), GIT_CONFIG_LEVEL_GLOBAL
, FALSE
))
102 MessageBox(g_Git
.GetLibGit2LastErr(), L
"TortoiseGit", MB_ICONEXCLAMATION
);
105 if (git_config_add_file_ondisk(config
, CGit::GetGitPathStringA(g_Git
.GetGitGlobalXDGConfig()), GIT_CONFIG_LEVEL_XDG
, FALSE
))
106 MessageBox(g_Git
.GetLibGit2LastErr(), L
"TortoiseGit", MB_ICONEXCLAMATION
);
108 if (!g_Git
.ms_bCygwinGit
&& !g_Git
.ms_bMsys2Git
)
110 if (git_config_add_file_ondisk(config
, CGit::GetGitPathStringA(g_Git
.GetGitProgramDataConfig()), GIT_CONFIG_LEVEL_PROGRAMDATA
, FALSE
))
111 MessageBox(g_Git
.GetLibGit2LastErr(), L
"TortoiseGit", MB_ICONEXCLAMATION
);
113 if (git_config_add_file_ondisk(config
, CGit::GetGitPathStringA(g_Git
.GetGitSystemConfig()), GIT_CONFIG_LEVEL_SYSTEM
, FALSE
))
114 MessageBox(g_Git
.GetLibGit2LastErr(), L
"TortoiseGit", MB_ICONEXCLAMATION
);
116 config
.GetString(L
"user.name", m_sUsername
);
117 config
.GetString(L
"user.email", m_sUseremail
);
124 BOOL
CFirstStartWizardUser::OnSetActive()
126 CFirstStartWizard
* wiz
= (CFirstStartWizard
*)GetParent();
128 wiz
->SetWizardButtons(PSWIZB_NEXT
| PSWIZB_BACK
);
130 return CFirstStartWizardBasePage::OnSetActive();