1
0
mirror of https://github.com/azure-rtos/guix.git synced 2025-02-04 07:13:17 +08:00
guix/guix_studio/string_export_dlg.cpp

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;
}