28 C4ConsoleQtLocalizeStringDlg::C4ConsoleQtLocalizeStringDlg(
class QMainWindow *parent_window,
const C4Value &translations)
29 : QDialog(parent_window, Qt::WindowSystemMenuHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint)
30 , translations(translations)
34 int32_t lang_index = 0;
38 AddEditor(lang_info->
Code, lang_info->
Name);
42 assert(translations_proplist);
45 if (lang_str->GetData().getLength() == 2)
53 QLineEdit *editor = GetEditorByLanguage(lang_str->GetCStr());
57 editor = AddEditor(lang_str->GetCStr(),
nullptr);
59 editor->setText(QString(
text->GetCStr()));
66 setMinimumSize(size());
68 if (edited_languages.size())
70 edited_languages.front().value_editor->setFocus();
71 for (
const auto & langs : edited_languages)
73 if (!langs.value_editor->text().length())
75 langs.value_editor->setFocus();
82 void C4ConsoleQtLocalizeStringDlg::DoError(
const char *msg)
84 QMessageBox::critical(
this, ::
LoadResStr(
"IDS_ERR_TITLE"), QString(msg));
87 QLineEdit *C4ConsoleQtLocalizeStringDlg::AddEditor(
const char *language,
const char *language_name)
89 assert(!GetEditorByLanguage(language));
91 int32_t row = edited_languages.size();
92 QString language_label_text(language);
93 if (language_name) language_label_text.append(
FormatString(
" (%s)", language_name).getData());
94 QLabel *language_label =
new QLabel(language_label_text,
this);
95 ui.mainGrid->addWidget(language_label, row, 0);
96 QLineEdit *value_editor =
new QLineEdit(
this);
97 ui.mainGrid->addWidget(value_editor, row, 1);
99 EditedLanguage new_editor;
100 SCopy(language, new_editor.language, 2);
101 new_editor.value_editor = value_editor;
102 edited_languages.push_back(new_editor);
106 QLineEdit *C4ConsoleQtLocalizeStringDlg::GetEditorByLanguage(
const char *language)
109 for (
const auto & langs : edited_languages)
111 if (!strcmp(langs.language, language))
113 return langs.value_editor;
120 void C4ConsoleQtLocalizeStringDlg::done(
int r)
122 if (QDialog::Accepted == r)
125 assert(translations_proplist);
127 for (
const auto & langs : edited_languages)
130 QString
text = langs.value_editor->text();
146 void C4ConsoleQtLocalizeStringDlg::AddLanguagePressed()
148 bool lang_ok =
false;
149 QRegExpValidator validator(QRegExp(
"^[a-zA-Z][a-zA-Z]$"),
this);
154 lang_id = QInputDialog::getText(
this,
LoadResStr(
"IDS_CNS_ADDLANGUAGE"),
LoadResStr(
"IDS_CNS_ADDLANGUAGEID"), QLineEdit::Normal, QString(), &ok);
156 lang_ok = (validator.validate(lang_id, q) == QValidator::Acceptable);
159 DoError(
LoadResStr(
"IDS_ERR_INVALIDLANGUAGEID"));
163 QLineEdit *editor = GetEditorByLanguage(lang_id.toUtf8());
166 editor = AddEditor(lang_id.toUtf8(),
nullptr);
168 setMinimumSize(size());
const char * LoadResStr(const char *id)
C4Value C4VString(C4String *pStr)
void SCopy(const char *szSource, char *sTarget, size_t iMaxL)
StdStrBuf FormatString(const char *szFmt,...)
C4LanguageInfo * GetInfo(int iIndex)
char Name[C4MaxLanguageInfo+1]
virtual bool GetPropertyByS(const C4String *k, C4Value *pResult) const
virtual void ResetProperty(C4String *k)
std::vector< C4String * > GetSortedLocalProperties(bool add_prototype=true) const
virtual void SetPropertyByS(C4String *k, const C4Value &to)
C4String * RegString(StdStrBuf String)
C4String * getStr() const
C4PropList * getPropList() const