1 // string_export_dlg.cpp : implementation file
2 //
3
4 #include "stdafx.h"
5
6 #include "studiox_includes.h"
7 #include "string_export_dlg.h"
8 #include "config_languages_dlg.h"
9 #include "afxdialogex.h"
10
11 enum xliff_export_dlg_test_commands{
12 TEST_SET_STRING_EXPORT_SRC_LANGUAGE = 1,
13 TEST_SET_STRING_EXPORT_TARGET_LANGUAGE,
14 TEST_SET_XLIFF_VERSION,
15 TEST_SET_STRING_EXPORT_FILENAME,
16 TEST_SET_STRING_EXPORT_PATH,
17 TEST_SELECT_STRING_EXPORT_FORMAT,
18 TEST_SAVE_STRING_EXPORT,
19 TEST_CANCEL_STRING_EXPORT
20 };
21
22 STRING_VAL_PAIR string_export_type_list[]={
23 { _T("STRING_EXPORT_TYPE_XLIFF"), STRING_EXPORT_TYPE_XLIFF },
24 { _T("STRING_EXPORT_TYPE_CSV"), STRING_EXPORT_TYPE_CSV },
25 { _T(""), 0 }
26 };
27
BEGIN_MESSAGE_MAP(string_export_dlg,express_dialog)28 BEGIN_MESSAGE_MAP(string_export_dlg, express_dialog)
29 ON_BN_CLICKED(IDC_BROWSE, &string_export_dlg::OnBnClickedBrowse)
30 ON_BN_CLICKED(IDOK, &string_export_dlg::OnBnClickedOk)
31 ON_MESSAGE(STUDIO_TEST, &string_export_dlg::OnTestMessage)
32 ON_BN_CLICKED(IDC_XLIFF_FORMAT, &string_export_dlg::OnSelectXLIFF)
33 ON_BN_CLICKED(IDC_CSV_FORMAT, &string_export_dlg::OnSelectCSV)
34 END_MESSAGE_MAP()
35
36 ///////////////////////////////////////////////////////////////////////////////
37 string_export_dlg::string_export_dlg(CWnd* pParent /*=NULL*/)
38 : express_dialog(string_export_dlg::IDD, pParent)
39 {
40 IconId = IDB_EXPORT;
41 SetTitleText("XLIFF/CSV Export Control");
42 }
43
44 ///////////////////////////////////////////////////////////////////////////////
~string_export_dlg()45 string_export_dlg::~string_export_dlg()
46 {
47 }
48
49 ///////////////////////////////////////////////////////////////////////////////
DoDataExchange(CDataExchange * pDX)50 void string_export_dlg::DoDataExchange(CDataExchange* pDX)
51 {
52 CDialog::DoDataExchange(pDX);
53 DDX_Control(pDX, IDC_SRC_LANGUAGE, mSrcLanguageCombo);
54 DDX_Control(pDX, IDC_TARGET_LANGUAGE, mTargetLanguageCombo);
55 DDX_Control(pDX, IDC_XLIFF_VERSION, xliff_version_combo);
56
57 int index = 0;
58
59 while(1)
60 {
61 CString lang_name;
62 lang_name = config_languages_dlg::BuildCombinedLanguageName(index);
63 if (lang_name.IsEmpty())
64 {
65 break;
66 }
67 mSrcLanguageCombo.AddString(lang_name);
68 mTargetLanguageCombo.AddString(lang_name);
69 index++;
70 }
71 xliff_version_combo.AddString(_T("version 1.2"));
72 xliff_version_combo.AddString(_T("version 2.0"));
73
74 CRect size;
75
76 studiox_project *project = GetOpenProject();
77
78 if (!project)
79 {
80 return;
81 }
82
83 // Set the drop-down list size for each of the combo-boxes.
84 // There doesn't seem to be any way to do it in resource editor.
85 mTargetLanguageCombo.GetWindowRect(&size);
86 size.bottom = size.top + 200;
87 ScreenToClient(&size);
88 mTargetLanguageCombo.MoveWindow(&size);
89 mTargetLanguageCombo.SetCurSel(project->mHeader.string_export_target);
90
91 mSrcLanguageCombo.GetWindowRect(&size);
92 size.bottom = size.top + 200;
93 ScreenToClient(&size);
94 mSrcLanguageCombo.MoveWindow(&size);
95 mSrcLanguageCombo.SetCurSel(project->mHeader.string_export_src);
96
97 xliff_version_combo.GetWindowRect(&size);
98 size.bottom = size.top + 60;
99 ScreenToClient(&size);
100 xliff_version_combo.MoveWindow(&size);
101
102 if (project->mHeader.string_export_version == 2)
103 {
104 xliff_version_combo.SetCurSel(1);
105 }
106 else
107 {
108 xliff_version_combo.SetCurSel(0);
109 }
110
111 if (!pDX->m_bSaveAndValidate)
112 {
113 SetDlgItemText(IDC_FILENAME, project->mHeader.string_export_filename);
114 SetDlgItemText(IDC_PATH, project->mHeader.string_export_path);
115
116 if (project->mHeader.string_export_filetype == STRING_EXPORT_TYPE_XLIFF)
117 {
118 ((CButton *)GetDlgItem(IDC_XLIFF_FORMAT))->SetCheck(TRUE);
119 }
120 else
121 {
122 ((CButton *)GetDlgItem(IDC_CSV_FORMAT))->SetCheck(TRUE);
123 }
124
125 ShowHideXliffVersion();
126 }
127 else
128 {
129 int check = ((CButton *)GetDlgItem(IDC_XLIFF_FORMAT))->GetCheck();
130 if (check)
131 {
132 project->mHeader.string_export_filetype = STRING_EXPORT_TYPE_XLIFF;
133 }
134 else
135 {
136 project->mHeader.string_export_filetype = STRING_EXPORT_TYPE_CSV;
137 }
138 }
139 }
140
141 ///////////////////////////////////////////////////////////////////////////////
OnBnClickedBrowse()142 void string_export_dlg::OnBnClickedBrowse()
143 {
144 TCHAR path[MAX_PATH];
145 CString current_path;
146 GetDlgItemText(IDC_PATH, current_path);
147
148 // TODO: Add your control notification handler code here
149 if (BrowseForFolder(m_hWnd, _T("Select output folder..."), current_path, path) == TRUE)
150 {
151 current_path = path;
152 ConvertToProjectRelativePath(current_path);
153 SetDlgItemText(IDC_PATH, current_path);
154 }
155 }
156
157 ///////////////////////////////////////////////////////////////////////////////
OnBnClickedOk()158 void string_export_dlg::OnBnClickedOk()
159 {
160 int src_index = mSrcLanguageCombo.GetCurSel();
161 int target_index = mTargetLanguageCombo.GetCurSel();
162 CString test_name;
163 studiox_project *pProject = GetOpenProject();
164
165 if (!pProject)
166 {
167 CDialog::OnOK();
168 return;
169 }
170
171 if (src_index == target_index)
172 {
173 ErrorMsg("Source and Target languages cannot be the same", this);
174 return;
175 }
176
177 int project_index = config_languages_dlg::GetStringTableIndexFromLanguageIndex(GetOpenProject(), src_index);
178
179 if (project_index == -1)
180 {
181 ErrorMsg("The specified source language is not included in this project.", this);
182 return;
183 }
184
185 GetDlgItemText(IDC_FILENAME, test_name);
186
187 if (test_name.IsEmpty())
188 {
189 ErrorMsg("Please enter a valid filename", this);
190 return;
191 }
192
193 GetDlgItemText(IDC_PATH, test_name);
194
195 if (test_name.IsEmpty())
196 {
197 SetDlgItemText(IDC_PATH, _T(".\\"));
198 }
199
200 // save the information to the project header:
201
202 pProject->mHeader.string_export_src = src_index;
203 pProject->mHeader.string_export_target = target_index;
204 if (xliff_version_combo.GetCurSel() == 1)
205 {
206 pProject->mHeader.string_export_version = 2;
207 }
208 else
209 {
210 pProject->mHeader.string_export_version = 1;
211 }
212 GetDlgItemText(IDC_FILENAME, pProject->mHeader.string_export_filename);
213 GetDlgItemText(IDC_PATH, pProject->mHeader.string_export_path);
214 pProject->SetModified();
215
216 // TODO: Add your control notification handler code here
217 CDialog::OnOK();
218 }
219
220 ///////////////////////////////////////////////////////////////////////////////
GetSrcLanguage()221 int string_export_dlg::GetSrcLanguage()
222 {
223 return mSrcLanguageCombo.GetCurSel();
224 }
225
226 ///////////////////////////////////////////////////////////////////////////////
GetTargetLanguage()227 int string_export_dlg::GetTargetLanguage()
228 {
229 return mTargetLanguageCombo.GetCurSel();
230 }
231
232 ///////////////////////////////////////////////////////////////////////////////
GetXliffVersion()233 int string_export_dlg::GetXliffVersion()
234 {
235 if (xliff_version_combo.GetCurSel())
236 {
237 return 2;
238 }
239 return 1;
240 }
241
242 ///////////////////////////////////////////////////////////////////////////////
GetPathname()243 CString string_export_dlg::GetPathname()
244 {
245 CString pathname;
246 CString filename;
247 GetDlgItemText(IDC_PATH, pathname);
248 GetDlgItemText(IDC_FILENAME, filename);
249 pathname += "\\";
250 pathname += filename;
251 return pathname;
252 }
253
254 ///////////////////////////////////////////////////////////////////////////////
GetStringExportType(CString type_name)255 int string_export_dlg::GetStringExportType(CString type_name)
256 {
257 return FindPairVal(string_export_type_list, type_name);
258 }
259
260 ///////////////////////////////////////////////////////////////////////////////
GetStringExportTypeName(int type)261 CString string_export_dlg::GetStringExportTypeName(int type)
262 {
263 return FindPairString(string_export_type_list, type);
264 }
265
266 ///////////////////////////////////////////////////////////////////////////////
OnInitDialog()267 BOOL string_export_dlg::OnInitDialog()
268 {
269 express_dialog::OnInitDialog();
270
271 // TODO: Add extra initialization here
272 AddCancelButton();
273 AddSaveButton();
274
275 return TRUE; // return TRUE unless you set the focus to a control
276 // EXCEPTION: OCX Property Pages should return FALSE
277 }
278
279 ///////////////////////////////////////////////////////////////////////////////
OnSelectXLIFF()280 void string_export_dlg::OnSelectXLIFF()
281 {
282 ShowHideXliffVersion();
283 }
284
285 ///////////////////////////////////////////////////////////////////////////////
OnSelectCSV()286 void string_export_dlg::OnSelectCSV()
287 {
288 ShowHideXliffVersion();
289 }
290
291 ///////////////////////////////////////////////////////////////////////////////
ShowHideXliffVersion()292 void string_export_dlg::ShowHideXliffVersion()
293 {
294 int check = ((CButton *)GetDlgItem(IDC_XLIFF_FORMAT))->GetCheck();
295
296 GetDlgItem(IDC_XLIFF_VERSION_LABEL)->ShowWindow(check);
297 GetDlgItem(IDC_XLIFF_VERSION)->ShowWindow(check);
298 }
299
300 ///////////////////////////////////////////////////////////////////////////////
OnTestMessage(WPARAM wParam,LPARAM lParam)301 afx_msg LRESULT string_export_dlg::OnTestMessage(WPARAM wParam, LPARAM lParam)
302 {
303 int language_index;
304 int ctrl_id;
305
306 switch (wParam)
307 {
308 case TEST_SET_STRING_EXPORT_SRC_LANGUAGE:
309 language_index = config_languages_dlg::GetLanguageNameIndex(GetTestingParam(0));
310 mSrcLanguageCombo.SetCurSel(language_index);
311 break;
312
313 case TEST_SET_STRING_EXPORT_TARGET_LANGUAGE:
314 language_index = config_languages_dlg::GetLanguageNameIndex(GetTestingParam(0));
315 mTargetLanguageCombo.SetCurSel(language_index);
316 break;
317
318 case TEST_SET_XLIFF_VERSION:
319 xliff_version_combo.SetCurSel(lParam);
320 break;
321
322 case TEST_SET_STRING_EXPORT_FILENAME:
323 SetDlgItemText(IDC_FILENAME, GetTestingParam(0));
324 break;
325
326 case TEST_SET_STRING_EXPORT_PATH:
327 SetDlgItemText(IDC_PATH, GetTestingParam(0));
328 break;
329
330 case TEST_SELECT_STRING_EXPORT_FORMAT:
331 if (lParam == STRING_EXPORT_TYPE_CSV)
332 {
333 ctrl_id = IDC_CSV_FORMAT;
334
335 }
336 else
337 {
338 ctrl_id = IDC_XLIFF_FORMAT;
339 }
340
341 CheckRadioButton(IDC_XLIFF_FORMAT, IDC_CSV_FORMAT, ctrl_id);
342 SendMessage(WM_COMMAND, MAKEWPARAM(ctrl_id, BN_CLICKED), 0);
343 break;
344
345 case TEST_SAVE_STRING_EXPORT:
346 OnBnClickedOk();
347 break;
348
349 case TEST_CANCEL_STRING_EXPORT:
350 OnCancel();
351 break;
352 }
353
354 return 0;
355 }
356