mirror of
https://github.com/azure-rtos/guix.git
synced 2025-02-04 07:13:17 +08:00
356 lines
9.9 KiB
C++
356 lines
9.9 KiB
C++
// string_export_dlg.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
|
|
#include "studiox_includes.h"
|
|
#include "string_export_dlg.h"
|
|
#include "config_languages_dlg.h"
|
|
#include "afxdialogex.h"
|
|
|
|
enum xliff_export_dlg_test_commands{
|
|
TEST_SET_STRING_EXPORT_SRC_LANGUAGE = 1,
|
|
TEST_SET_STRING_EXPORT_TARGET_LANGUAGE,
|
|
TEST_SET_XLIFF_VERSION,
|
|
TEST_SET_STRING_EXPORT_FILENAME,
|
|
TEST_SET_STRING_EXPORT_PATH,
|
|
TEST_SELECT_STRING_EXPORT_FORMAT,
|
|
TEST_SAVE_STRING_EXPORT,
|
|
TEST_CANCEL_STRING_EXPORT
|
|
};
|
|
|
|
STRING_VAL_PAIR string_export_type_list[]={
|
|
{ _T("STRING_EXPORT_TYPE_XLIFF"), STRING_EXPORT_TYPE_XLIFF },
|
|
{ _T("STRING_EXPORT_TYPE_CSV"), STRING_EXPORT_TYPE_CSV },
|
|
{ _T(""), 0 }
|
|
};
|
|
|
|
BEGIN_MESSAGE_MAP(string_export_dlg, express_dialog)
|
|
ON_BN_CLICKED(IDC_BROWSE, &string_export_dlg::OnBnClickedBrowse)
|
|
ON_BN_CLICKED(IDOK, &string_export_dlg::OnBnClickedOk)
|
|
ON_MESSAGE(STUDIO_TEST, &string_export_dlg::OnTestMessage)
|
|
ON_BN_CLICKED(IDC_XLIFF_FORMAT, &string_export_dlg::OnSelectXLIFF)
|
|
ON_BN_CLICKED(IDC_CSV_FORMAT, &string_export_dlg::OnSelectCSV)
|
|
END_MESSAGE_MAP()
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
string_export_dlg::string_export_dlg(CWnd* pParent /*=NULL*/)
|
|
: express_dialog(string_export_dlg::IDD, pParent)
|
|
{
|
|
IconId = IDB_EXPORT;
|
|
SetTitleText("XLIFF/CSV Export Control");
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
string_export_dlg::~string_export_dlg()
|
|
{
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
void string_export_dlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Control(pDX, IDC_SRC_LANGUAGE, mSrcLanguageCombo);
|
|
DDX_Control(pDX, IDC_TARGET_LANGUAGE, mTargetLanguageCombo);
|
|
DDX_Control(pDX, IDC_XLIFF_VERSION, xliff_version_combo);
|
|
|
|
int index = 0;
|
|
|
|
while(1)
|
|
{
|
|
CString lang_name;
|
|
lang_name = config_languages_dlg::BuildCombinedLanguageName(index);
|
|
if (lang_name.IsEmpty())
|
|
{
|
|
break;
|
|
}
|
|
mSrcLanguageCombo.AddString(lang_name);
|
|
mTargetLanguageCombo.AddString(lang_name);
|
|
index++;
|
|
}
|
|
xliff_version_combo.AddString(_T("version 1.2"));
|
|
xliff_version_combo.AddString(_T("version 2.0"));
|
|
|
|
CRect size;
|
|
|
|
studiox_project *project = GetOpenProject();
|
|
|
|
if (!project)
|
|
{
|
|
return;
|
|
}
|
|
|
|
// Set the drop-down list size for each of the combo-boxes.
|
|
// There doesn't seem to be any way to do it in resource editor.
|
|
mTargetLanguageCombo.GetWindowRect(&size);
|
|
size.bottom = size.top + 200;
|
|
ScreenToClient(&size);
|
|
mTargetLanguageCombo.MoveWindow(&size);
|
|
mTargetLanguageCombo.SetCurSel(project->mHeader.string_export_target);
|
|
|
|
mSrcLanguageCombo.GetWindowRect(&size);
|
|
size.bottom = size.top + 200;
|
|
ScreenToClient(&size);
|
|
mSrcLanguageCombo.MoveWindow(&size);
|
|
mSrcLanguageCombo.SetCurSel(project->mHeader.string_export_src);
|
|
|
|
xliff_version_combo.GetWindowRect(&size);
|
|
size.bottom = size.top + 60;
|
|
ScreenToClient(&size);
|
|
xliff_version_combo.MoveWindow(&size);
|
|
|
|
if (project->mHeader.string_export_version == 2)
|
|
{
|
|
xliff_version_combo.SetCurSel(1);
|
|
}
|
|
else
|
|
{
|
|
xliff_version_combo.SetCurSel(0);
|
|
}
|
|
|
|
if (!pDX->m_bSaveAndValidate)
|
|
{
|
|
SetDlgItemText(IDC_FILENAME, project->mHeader.string_export_filename);
|
|
SetDlgItemText(IDC_PATH, project->mHeader.string_export_path);
|
|
|
|
if (project->mHeader.string_export_filetype == STRING_EXPORT_TYPE_XLIFF)
|
|
{
|
|
((CButton *)GetDlgItem(IDC_XLIFF_FORMAT))->SetCheck(TRUE);
|
|
}
|
|
else
|
|
{
|
|
((CButton *)GetDlgItem(IDC_CSV_FORMAT))->SetCheck(TRUE);
|
|
}
|
|
|
|
ShowHideXliffVersion();
|
|
}
|
|
else
|
|
{
|
|
int check = ((CButton *)GetDlgItem(IDC_XLIFF_FORMAT))->GetCheck();
|
|
if (check)
|
|
{
|
|
project->mHeader.string_export_filetype = STRING_EXPORT_TYPE_XLIFF;
|
|
}
|
|
else
|
|
{
|
|
project->mHeader.string_export_filetype = STRING_EXPORT_TYPE_CSV;
|
|
}
|
|
}
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
void string_export_dlg::OnBnClickedBrowse()
|
|
{
|
|
TCHAR path[MAX_PATH];
|
|
CString current_path;
|
|
GetDlgItemText(IDC_PATH, current_path);
|
|
|
|
// TODO: Add your control notification handler code here
|
|
if (BrowseForFolder(m_hWnd, _T("Select output folder..."), current_path, path) == TRUE)
|
|
{
|
|
current_path = path;
|
|
ConvertToProjectRelativePath(current_path);
|
|
SetDlgItemText(IDC_PATH, current_path);
|
|
}
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
void string_export_dlg::OnBnClickedOk()
|
|
{
|
|
int src_index = mSrcLanguageCombo.GetCurSel();
|
|
int target_index = mTargetLanguageCombo.GetCurSel();
|
|
CString test_name;
|
|
studiox_project *pProject = GetOpenProject();
|
|
|
|
if (!pProject)
|
|
{
|
|
CDialog::OnOK();
|
|
return;
|
|
}
|
|
|
|
if (src_index == target_index)
|
|
{
|
|
ErrorMsg("Source and Target languages cannot be the same", this);
|
|
return;
|
|
}
|
|
|
|
int project_index = config_languages_dlg::GetStringTableIndexFromLanguageIndex(GetOpenProject(), src_index);
|
|
|
|
if (project_index == -1)
|
|
{
|
|
ErrorMsg("The specified source language is not included in this project.", this);
|
|
return;
|
|
}
|
|
|
|
GetDlgItemText(IDC_FILENAME, test_name);
|
|
|
|
if (test_name.IsEmpty())
|
|
{
|
|
ErrorMsg("Please enter a valid filename", this);
|
|
return;
|
|
}
|
|
|
|
GetDlgItemText(IDC_PATH, test_name);
|
|
|
|
if (test_name.IsEmpty())
|
|
{
|
|
SetDlgItemText(IDC_PATH, _T(".\\"));
|
|
}
|
|
|
|
// save the information to the project header:
|
|
|
|
pProject->mHeader.string_export_src = src_index;
|
|
pProject->mHeader.string_export_target = target_index;
|
|
if (xliff_version_combo.GetCurSel() == 1)
|
|
{
|
|
pProject->mHeader.string_export_version = 2;
|
|
}
|
|
else
|
|
{
|
|
pProject->mHeader.string_export_version = 1;
|
|
}
|
|
GetDlgItemText(IDC_FILENAME, pProject->mHeader.string_export_filename);
|
|
GetDlgItemText(IDC_PATH, pProject->mHeader.string_export_path);
|
|
pProject->SetModified();
|
|
|
|
// TODO: Add your control notification handler code here
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
int string_export_dlg::GetSrcLanguage()
|
|
{
|
|
return mSrcLanguageCombo.GetCurSel();
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
int string_export_dlg::GetTargetLanguage()
|
|
{
|
|
return mTargetLanguageCombo.GetCurSel();
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
int string_export_dlg::GetXliffVersion()
|
|
{
|
|
if (xliff_version_combo.GetCurSel())
|
|
{
|
|
return 2;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
CString string_export_dlg::GetPathname()
|
|
{
|
|
CString pathname;
|
|
CString filename;
|
|
GetDlgItemText(IDC_PATH, pathname);
|
|
GetDlgItemText(IDC_FILENAME, filename);
|
|
pathname += "\\";
|
|
pathname += filename;
|
|
return pathname;
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
int string_export_dlg::GetStringExportType(CString type_name)
|
|
{
|
|
return FindPairVal(string_export_type_list, type_name);
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
CString string_export_dlg::GetStringExportTypeName(int type)
|
|
{
|
|
return FindPairString(string_export_type_list, type);
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
BOOL string_export_dlg::OnInitDialog()
|
|
{
|
|
express_dialog::OnInitDialog();
|
|
|
|
// TODO: Add extra initialization here
|
|
AddCancelButton();
|
|
AddSaveButton();
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
void string_export_dlg::OnSelectXLIFF()
|
|
{
|
|
ShowHideXliffVersion();
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
void string_export_dlg::OnSelectCSV()
|
|
{
|
|
ShowHideXliffVersion();
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
void string_export_dlg::ShowHideXliffVersion()
|
|
{
|
|
int check = ((CButton *)GetDlgItem(IDC_XLIFF_FORMAT))->GetCheck();
|
|
|
|
GetDlgItem(IDC_XLIFF_VERSION_LABEL)->ShowWindow(check);
|
|
GetDlgItem(IDC_XLIFF_VERSION)->ShowWindow(check);
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
afx_msg LRESULT string_export_dlg::OnTestMessage(WPARAM wParam, LPARAM lParam)
|
|
{
|
|
int language_index;
|
|
int ctrl_id;
|
|
|
|
switch (wParam)
|
|
{
|
|
case TEST_SET_STRING_EXPORT_SRC_LANGUAGE:
|
|
language_index = config_languages_dlg::GetLanguageNameIndex(GetTestingParam(0));
|
|
mSrcLanguageCombo.SetCurSel(language_index);
|
|
break;
|
|
|
|
case TEST_SET_STRING_EXPORT_TARGET_LANGUAGE:
|
|
language_index = config_languages_dlg::GetLanguageNameIndex(GetTestingParam(0));
|
|
mTargetLanguageCombo.SetCurSel(language_index);
|
|
break;
|
|
|
|
case TEST_SET_XLIFF_VERSION:
|
|
xliff_version_combo.SetCurSel(lParam);
|
|
break;
|
|
|
|
case TEST_SET_STRING_EXPORT_FILENAME:
|
|
SetDlgItemText(IDC_FILENAME, GetTestingParam(0));
|
|
break;
|
|
|
|
case TEST_SET_STRING_EXPORT_PATH:
|
|
SetDlgItemText(IDC_PATH, GetTestingParam(0));
|
|
break;
|
|
|
|
case TEST_SELECT_STRING_EXPORT_FORMAT:
|
|
if (lParam == STRING_EXPORT_TYPE_CSV)
|
|
{
|
|
ctrl_id = IDC_CSV_FORMAT;
|
|
|
|
}
|
|
else
|
|
{
|
|
ctrl_id = IDC_XLIFF_FORMAT;
|
|
}
|
|
|
|
CheckRadioButton(IDC_XLIFF_FORMAT, IDC_CSV_FORMAT, ctrl_id);
|
|
SendMessage(WM_COMMAND, MAKEWPARAM(ctrl_id, BN_CLICKED), 0);
|
|
break;
|
|
|
|
case TEST_SAVE_STRING_EXPORT:
|
|
OnBnClickedOk();
|
|
break;
|
|
|
|
case TEST_CANCEL_STRING_EXPORT:
|
|
OnCancel();
|
|
break;
|
|
}
|
|
|
|
return 0;
|
|
}
|