OSDN Git Service

Show Ignore Sub Menu
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / Settings / ToolAssocDlg.cpp
1 // TortoiseSVN - a Windows shell extension for easy version control\r
2 \r
3 // Copyright (C) 2003-2007 - TortoiseSVN\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 #include "stdafx.h"\r
20 #include "TortoiseProc.h"\r
21 #include "ToolAssocDlg.h"\r
22 #include "AppUtils.h"\r
23 #include "StringUtils.h"\r
24 \r
25 IMPLEMENT_DYNAMIC(CToolAssocDlg, CDialog)\r
26 CToolAssocDlg::CToolAssocDlg(const CString& type, bool add, CWnd* pParent /*=NULL*/)\r
27         : CDialog(CToolAssocDlg::IDD, pParent)\r
28         , m_sType(type)\r
29         , m_bAdd(add)\r
30         , m_sExtension(_T(""))\r
31         , m_sTool(_T(""))\r
32 {\r
33 }\r
34 \r
35 CToolAssocDlg::~CToolAssocDlg()\r
36 {\r
37 }\r
38 \r
39 void CToolAssocDlg::DoDataExchange(CDataExchange* pDX)\r
40 {\r
41         CDialog::DoDataExchange(pDX);\r
42         DDX_Text(pDX, IDC_EXTEDIT, m_sExtension);\r
43         DDV_MaxChars(pDX, m_sExtension, 20);\r
44         DDX_Text(pDX, IDC_TOOLEDIT, m_sTool);\r
45 \r
46         if (pDX->m_bSaveAndValidate)\r
47         {\r
48                 if (m_sExtension.Find('/')<0)\r
49                 {\r
50                         m_sExtension.TrimLeft(_T("*"));\r
51                         m_sExtension.TrimLeft(_T("."));\r
52                         m_sExtension = _T(".") + m_sExtension;\r
53                 }\r
54         }\r
55 }\r
56 \r
57 \r
58 BEGIN_MESSAGE_MAP(CToolAssocDlg, CDialog)\r
59         ON_BN_CLICKED(IDC_TOOLBROWSE, OnBnClickedToolbrowse)\r
60 END_MESSAGE_MAP()\r
61 \r
62 BOOL CToolAssocDlg::OnInitDialog()\r
63 {\r
64         CDialog::OnInitDialog();\r
65 \r
66         EnableToolTips();\r
67         m_tooltips.Create(this);\r
68 \r
69         CString title;\r
70         if (m_sType == _T("Diff"))\r
71         {\r
72                 title.LoadString(m_bAdd ? IDS_DLGTITLE_ADD_DIFF_TOOL : IDS_DLGTITLE_EDIT_DIFF_TOOL);\r
73                 m_tooltips.AddTool(IDC_TOOLEDIT, IDS_SETTINGS_EXTDIFF_TT);\r
74         }\r
75         else\r
76         {\r
77                 title.LoadString(m_bAdd ? IDS_DLGTITLE_ADD_MERGE_TOOL : IDS_DLGTITLE_EDIT_MERGE_TOOL);\r
78                 m_tooltips.AddTool(IDC_TOOLEDIT, IDS_SETTINGS_EXTMERGE_TT);\r
79         }\r
80 \r
81         SetWindowText(title);\r
82         SHAutoComplete(::GetDlgItem(m_hWnd, IDC_TOOLEDIT), SHACF_FILESYSTEM | SHACF_FILESYS_ONLY);\r
83 \r
84         UpdateData(FALSE);\r
85         return TRUE;\r
86 }\r
87 \r
88 BOOL CToolAssocDlg::PreTranslateMessage(MSG* pMsg)\r
89 {\r
90         m_tooltips.RelayEvent(pMsg);\r
91         return CDialog::PreTranslateMessage(pMsg);\r
92 }\r
93 \r
94 void CToolAssocDlg::OnBnClickedToolbrowse()\r
95 {\r
96         UpdateData(TRUE);\r
97         if (CAppUtils::FileOpenSave(m_sTool, NULL, IDS_SETTINGS_SELECTDIFF, IDS_PROGRAMSFILEFILTER, true, m_hWnd))\r
98         {\r
99                 UpdateData(FALSE);\r
100         }\r
101 }\r