28 C4ConsoleQtLocalizeOverviewDlg::C4ConsoleQtLocalizeOverviewDlg(
class QMainWindow *parent_window)
29 : QDialog(parent_window, Qt::WindowSystemMenuHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint)
34 setMinimumSize(size());
37 int32_t C4ConsoleQtLocalizeOverviewDlg::GetColumnByLanguage(
const char *lang)
const
40 auto iter = lang2col.find(QString(lang));
41 if (iter != lang2col.end())
49 int32_t C4ConsoleQtLocalizeOverviewDlg::AddLanguageColumn(
const char *lang_id,
const char *lang_name)
52 int32_t col = ui.translationTable->columnCount();
53 ui.translationTable->setColumnCount(col + 1);
54 ui.translationTable->horizontalHeader()->setSectionResizeMode(col, QHeaderView::Stretch);
56 QString
text(lang_id);
59 text.append(
" - ").append(lang_name);
61 SetTableItem(0, col, TIT_Header,
text);
63 lang2col[QString(lang_id)] = col;
64 col2lang.emplace_back(QString(lang_id));
68 void C4ConsoleQtLocalizeOverviewDlg::SetTableItem(int32_t row, int32_t col, TableItemType item_type,
const QString &
text)
71 auto item =
new QTableWidgetItem(QString(
text));
73 if (item_type != TIT_Entry)
75 item->setFlags(item->flags() & ~(Qt::ItemIsEditable));
78 if (item_type == TIT_Header)
80 ui.translationTable->setHorizontalHeaderItem(col, item);
84 ui.translationTable->setItem(row, col, item);
88 void C4ConsoleQtLocalizeOverviewDlg::reject()
95 void C4ConsoleQtLocalizeOverviewDlg::ClearTable()
97 ui.translationTable->clearContents();
103 void C4ConsoleQtLocalizeOverviewDlg::Refresh()
106 is_refreshing =
true;
108 QProgressDialog progress(QString(
LoadResStr(
"IDS_CNS_COLLECTINGLOCALIZATIONS")), QString(), 0, 0,
this);
109 progress.setCancelButton(
nullptr);
110 progress.setWindowModality(Qt::WindowModal);
118 lang_strings = lang_string_collector.
GetEntries();
121 ui.translationTable->setRowCount(lang_strings.size());
122 ui.translationTable->setColumnCount(2);
123 SetTableItem(0, 0, TIT_Header, QString(
LoadResStr(
"IDS_CNS_OBJECT")));
124 SetTableItem(0, 1, TIT_Header, QString(
LoadResStr(
"IDS_CNS_PATH")));
125 ui.translationTable->setColumnWidth(0, 100);
126 ui.translationTable->setColumnWidth(1, 200);
130 int32_t lang_index = 0;
134 AddLanguageColumn(lang_info->
Code, lang_info->
Name);
139 for (
auto &entry : lang_strings)
142 C4PropList *translations_proplist = entry.value._getPropList();
143 assert(translations_proplist);
146 SetTableItem(row, 0, TIT_Info, QString(entry.name.getData()));
147 SetTableItem(row, 1, TIT_Info, QString(entry.path.GetGetPath()));
152 if (lang_str->GetData().getLength() == 2)
160 int32_t col = GetColumnByLanguage(lang_str->GetCStr());
164 col = AddLanguageColumn(lang_str->GetCStr(),
nullptr);
167 SetTableItem(row, col, TIT_Entry, QString(
text->GetCStr()));
177 is_refreshing =
false;
180 void C4ConsoleQtLocalizeOverviewDlg::OnTableItemChanged(QTableWidgetItem *item)
190 QString lang_id = col2lang[item->column()];
192 QString new_value = item->text();
193 if (new_value.length())
196 new_value = new_value.replace(R
"(\)", R"(\\)").replace(R"(")", R"(\")");
199 set_path.SetProperty((R
"(")" + new_value + R"(")").toUtf8().data());
const char * LoadResStr(const char *id)
C4Value C4VString(C4String *pStr)
StdStrBuf FormatString(const char *szFmt,...)
C4LanguageInfo * GetInfo(int iIndex)
char Name[C4MaxLanguageInfo+1]
virtual bool GetPropertyByS(const C4String *k, C4Value *pResult) const
std::vector< C4String * > GetSortedLocalProperties(bool add_prototype=true) const
const std::vector< Entry > & GetEntries() const
void DoCall(const char *call_string) const
C4String * getStr() const
const char * getData() const