Add Setting Dialog
[TortoiseGit.git] / src / TortoiseProc / Settings / SetHooksAdv.cpp
blob12f34abf0e4be8120f0d85abb5273a2fad403de9
1 // TortoiseSVN - a Windows shell extension for easy version control
3 // Copyright (C) 2003-2008 - TortoiseSVN
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 #include "stdafx.h"
20 #include "TortoiseProc.h"
21 #include "SetHooksAdv.h"
22 #include "BrowseFolder.h"
23 #include "AppUtils.h"
26 IMPLEMENT_DYNAMIC(CSetHooksAdv, CResizableStandAloneDialog)
28 CSetHooksAdv::CSetHooksAdv(CWnd* pParent /*=NULL*/)
29 : CResizableStandAloneDialog(CSetHooksAdv::IDD, pParent)
30 , m_sPath(_T(""))
31 , m_sCommandLine(_T(""))
32 , m_bWait(FALSE)
33 , m_bHide(FALSE)
37 CSetHooksAdv::~CSetHooksAdv()
41 void CSetHooksAdv::DoDataExchange(CDataExchange* pDX)
43 CResizableStandAloneDialog::DoDataExchange(pDX);
44 DDX_Text(pDX, IDC_HOOKPATH, m_sPath);
45 DDX_Text(pDX, IDC_HOOKCOMMANDLINE, m_sCommandLine);
46 DDX_Check(pDX, IDC_WAITCHECK, m_bWait);
47 DDX_Check(pDX, IDC_HIDECHECK, m_bHide);
48 DDX_Control(pDX, IDC_HOOKTYPECOMBO, m_cHookTypeCombo);
52 BEGIN_MESSAGE_MAP(CSetHooksAdv, CResizableStandAloneDialog)
53 ON_BN_CLICKED(IDC_HOOKBROWSE, &CSetHooksAdv::OnBnClickedHookbrowse)
54 ON_BN_CLICKED(IDC_HOOKCOMMANDBROWSE, &CSetHooksAdv::OnBnClickedHookcommandbrowse)
55 ON_BN_CLICKED(IDHELP, &CSetHooksAdv::OnBnClickedHelp)
56 END_MESSAGE_MAP()
58 BOOL CSetHooksAdv::OnInitDialog()
60 CResizableStandAloneDialog::OnInitDialog();
62 // initialize the combo box with all the hook types we have
63 int index = m_cHookTypeCombo.AddString(CString(MAKEINTRESOURCE(IDS_HOOKTYPE_STARTCOMMIT)));
64 m_cHookTypeCombo.SetItemData(index, start_commit_hook);
65 index = m_cHookTypeCombo.AddString(CString(MAKEINTRESOURCE(IDS_HOOKTYPE_PRECOMMIT)));
66 m_cHookTypeCombo.SetItemData(index, pre_commit_hook);
67 index = m_cHookTypeCombo.AddString(CString(MAKEINTRESOURCE(IDS_HOOKTYPE_POSTCOMMIT)));
68 m_cHookTypeCombo.SetItemData(index, post_commit_hook);
69 index = m_cHookTypeCombo.AddString(CString(MAKEINTRESOURCE(IDS_HOOKTYPE_STARTUPDATE)));
70 m_cHookTypeCombo.SetItemData(index, start_update_hook);
71 index = m_cHookTypeCombo.AddString(CString(MAKEINTRESOURCE(IDS_HOOKTYPE_PREUPDATE)));
72 m_cHookTypeCombo.SetItemData(index, pre_update_hook);
73 index = m_cHookTypeCombo.AddString(CString(MAKEINTRESOURCE(IDS_HOOKTYPE_POSTUPDATE)));
74 m_cHookTypeCombo.SetItemData(index, post_update_hook);
75 // preselect the right hook type in the combobox
76 for (int i=0; i<m_cHookTypeCombo.GetCount(); ++i)
78 hooktype ht = (hooktype)m_cHookTypeCombo.GetItemData(i);
79 if (ht == key.htype)
81 CString str;
82 m_cHookTypeCombo.GetLBText(i, str);
83 m_cHookTypeCombo.SelectString(i, str);
84 break;
88 m_sPath = key.path.GetWinPathString();
89 m_sCommandLine = cmd.commandline;
90 m_bWait = cmd.bWait;
91 m_bHide = !cmd.bShow;
92 UpdateData(FALSE);
94 AddAnchor(IDC_HOOKTYPELABEL, TOP_LEFT, TOP_RIGHT);
95 AddAnchor(IDC_HOOKTYPECOMBO, TOP_RIGHT);
96 AddAnchor(IDC_HOOKWCPATHLABEL, TOP_LEFT, TOP_RIGHT);
97 AddAnchor(IDC_HOOKPATH, TOP_LEFT, TOP_RIGHT);
98 AddAnchor(IDC_HOOKBROWSE, TOP_RIGHT);
99 AddAnchor(IDC_HOOKCMLABEL, TOP_LEFT, TOP_RIGHT);
100 AddAnchor(IDC_HOOKCOMMANDLINE, TOP_LEFT, TOP_RIGHT);
101 AddAnchor(IDC_HOOKCOMMANDBROWSE, TOP_RIGHT);
102 AddAnchor(IDC_WAITCHECK, BOTTOM_LEFT, BOTTOM_RIGHT);
103 AddAnchor(IDC_HIDECHECK, BOTTOM_LEFT, BOTTOM_RIGHT);
104 AddAnchor(IDOK, BOTTOM_RIGHT);
105 AddAnchor(IDCANCEL, BOTTOM_RIGHT);
106 AddAnchor(IDHELP, BOTTOM_RIGHT);
107 EnableSaveRestore(_T("SetHooksAdvDlg"));
108 return TRUE;
111 void CSetHooksAdv::OnOK()
113 #if 0
114 UpdateData();
115 int cursel = m_cHookTypeCombo.GetCurSel();
116 key.htype = unknown_hook;
117 if (cursel != CB_ERR)
119 key.htype = (hooktype)m_cHookTypeCombo.GetItemData(cursel);
120 key.path = CTSVNPath(m_sPath);
121 cmd.commandline = m_sCommandLine;
122 cmd.bWait = !!m_bWait;
123 cmd.bShow = !m_bHide;
125 if (key.htype == unknown_hook)
127 ShowBalloon(IDC_HOOKTYPECOMBO, IDS_ERR_NOHOOKTYPESPECIFIED);
128 return;
130 if (key.path.IsEmpty())
132 ShowBalloon(IDC_HOOKPATH, IDS_ERR_NOHOOKPATHSPECIFIED);
133 return;
135 if (cmd.commandline.IsEmpty())
137 ShowBalloon(IDC_HOOKCOMMANDLINE, IDS_ERR_NOHOOKCOMMANDPECIFIED);
138 return;
140 #endif
141 CResizableStandAloneDialog::OnOK();
144 void CSetHooksAdv::OnBnClickedHookbrowse()
146 #if 0
147 UpdateData();
148 CBrowseFolder browser;
149 CString sPath;
150 browser.SetInfo(CString(MAKEINTRESOURCE(IDS_SETTINGS_HOOKS_SELECTFOLDERPATH)));
151 browser.m_style = BIF_EDITBOX | BIF_NEWDIALOGSTYLE | BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;
152 if (browser.Show(m_hWnd, sPath) == CBrowseFolder::OK)
154 m_sPath = sPath;
155 UpdateData(FALSE);
157 #endif
160 void CSetHooksAdv::OnBnClickedHookcommandbrowse()
162 UpdateData();
163 CString sCmdLine = m_sCommandLine;
164 if (!PathFileExists(sCmdLine))
165 sCmdLine.Empty();
166 // Display the Open dialog box.
167 if (CAppUtils::FileOpenSave(sCmdLine, NULL, IDS_SETTINGS_HOOKS_SELECTSCRIPTFILE, IDS_COMMONFILEFILTER, true, m_hWnd))
169 m_sCommandLine = sCmdLine;
170 UpdateData(FALSE);
174 void CSetHooksAdv::OnBnClickedHelp()
176 OnHelp();