diff --git a/CMakeLists.txt b/CMakeLists.txt index 55cf361..792ca3e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,11 +6,11 @@ set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) -find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets LinguistTools) -find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets LinguistTools) +find_package(QT NAMES Qt6 REQUIRED COMPONENTS Widgets) +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets) set(TS_FILES RenpyTranslationHelper_en_GB.ts) @@ -32,7 +32,7 @@ if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) # ${CMAKE_CURRENT_SOURCE_DIR}/android) # For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation - qt_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES}) +# qt_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES}) else() if(ANDROID) add_library(RenpyTranslationHelper SHARED @@ -51,7 +51,7 @@ endif() target_link_libraries(RenpyTranslationHelper PRIVATE Qt${QT_VERSION_MAJOR}::Widgets - Qt5Network + Qt6Network ) # Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1. diff --git a/main.cpp b/main.cpp index c2d5bae..8a59ba0 100644 --- a/main.cpp +++ b/main.cpp @@ -8,15 +8,6 @@ int main(int argc, char *argv[]) { QApplication a(argc, argv); - QTranslator translator; - const QStringList uiLanguages = QLocale::system().uiLanguages(); - for (const QString &locale : uiLanguages) { - const QString baseName = "RenpyTranslationHelper_" + QLocale(locale).name(); - if (translator.load(":/i18n/" + baseName)) { - a.installTranslator(&translator); - break; - } - } MainWindow w; w.show(); return a.exec(); diff --git a/mainwindow.cpp b/mainwindow.cpp index 1fce3fe..4f4efb6 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -1,5 +1,6 @@ #include "mainwindow.h" #include "./ui_mainwindow.h" +#include #include #include #include @@ -43,15 +44,7 @@ MainWindow::MainWindow(QWidget *parent) if (configuration.contains("last-dir") && (QDir()).exists(configuration["last-dir"].toString())) { ui->projectDir->setText(configuration["last-dir"].toString()); crawlProject(); - qDebug() << "project crawled"; - qDebug() << configuration["last-language"].toString(); - qDebug() << ui->languageCombo->count(); - for (int i=0; i < ui->languageCombo->count(); ++i) { - qDebug() << ui->languageCombo->itemText(i); - } - qDebug() << ui->languageCombo->findText(configuration["last-language"].toString()); if (configuration.contains("last-language") && ui->languageCombo->findText(configuration["last-language"].toString()) >= 0) { - qDebug() << "language crawl"; ui->languageCombo->setCurrentText(configuration["last-language"].toString()); } } @@ -99,15 +92,8 @@ void MainWindow::crawlProject() { ui->languageCombo->setCurrentIndex(-1); } -void MainWindow::on_reloadButton_clicked() -{ - crawlProject(); -} - - void MainWindow::on_languageCombo_currentTextChanged(const QString &selectedLanguage) { - qDebug() << "language selected"; setConfigValue("last-language", selectedLanguage); fileContentsMap.clear(); ui->treeWidget->clear(); @@ -138,7 +124,7 @@ void MainWindow::populateTreeWidgetFromMap() { fileItem->setText(0, fileName); fileItem->setData(0, Qt::UserRole, false); auto parsedBlocks = parseTextBlock(pair.second); - for (const auto& block : qAsConst(parsedBlocks)) { + for (const auto& block : std::as_const(parsedBlocks)) { QTreeWidgetItem *blockItem = new QTreeWidgetItem(fileItem); blockItem->setText(0, QString::number(block.line)); blockItem->setText(1, block.oldText); @@ -163,9 +149,10 @@ QVector MainWindow::parseTextBlock(const QString& i QString identifier, originalText, translatedText; for (const QString& line : std::as_const(lines)) { if (line.contains("# game/")) { - QRegExp regExp("# game/.+:(\\d+)"); - if (regExp.indexIn(line.trimmed()) != -1) { - lineNumber = regExp.cap(1).toInt(); + QRegularExpression regExp("# game/.+:(\\d+)"); + QRegularExpressionMatch match = regExp.match(line.trimmed()); + if (match.hasMatch()) { + lineNumber = match.captured(1).toInt(); } } else if (line.startsWith(" # ") || line.startsWith(" old ")) { originalText = line.mid(line.indexOf("\"") + 1).trimmed(); @@ -565,31 +552,34 @@ void MainWindow::on_searchButton_clicked() { searchNext(); } } + void MainWindow::on_searchNextButton_clicked() { + if (searchQuery.isEmpty()) { + return; + } + qDebug() << "clicked"; searchNext(); } -void MainWindow::searchInTree(QTreeWidgetItem *item, const QString &query) { - for (int i = 0; i < item->childCount(); ++i) { - QTreeWidgetItem *childItem = item->child(i); - for (int column = 1; column <= 2; ++column) { - if (childItem->text(column).contains(query, Qt::CaseInsensitive)) { - ui->treeWidget->setCurrentItem(childItem); - ui->treeWidget->scrollToItem(childItem); +void MainWindow::searchNext() { + auto currentItem = ui->treeWidget->currentItem(); + for (int fileItemPos = 0; fileItemPos < ui->treeWidget->invisibleRootItem()->childCount(); ++fileItemPos) { + auto fileItem {ui->treeWidget->invisibleRootItem()->child(fileItemPos)}; + for (int linePos = 0; linePos < fileItem->childCount(); ++linePos) { + auto line {fileItem->child(linePos)}; + if (currentItem == NULL && (line->text(1).contains(searchQuery, Qt::CaseInsensitive) + || line->text(2).contains(searchQuery, Qt::CaseInsensitive))) { + ui->treeWidget->setCurrentItem(line); + ui->treeWidget->scrollToItem(line); return; } + if (currentItem == line) { + currentItem = NULL; + } } - searchInTree(childItem, query); } } -void MainWindow::searchNext() { - if (searchQuery.isEmpty()) return; - QTreeWidgetItem *startItem = ui->treeWidget->currentItem(); - if (!startItem) startItem = ui->treeWidget->topLevelItem(0); - searchInTree(startItem, searchQuery); -} - void MainWindow::setConfigValue(const QString &key, const QString &value) { if (noConfigChange) { return; diff --git a/mainwindow.h b/mainwindow.h index 8699bba..4bd72ba 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -22,7 +22,7 @@ public: private slots: void on_selectProjectDirButton_clicked(); - void on_reloadButton_clicked(); +// void on_reloadButton_clicked(); void on_languageCombo_currentTextChanged(const QString &selectedLanguage); void on_reloadTranslationsButton_clicked(); void on_reloadFilesButton_clicked(); @@ -74,7 +74,6 @@ private: void translationRequestFinished(QNetworkReply *reply); void countAndShowUntranslated(); void searchNext(); - void searchInTree(QTreeWidgetItem *item, const QString &query); QVector parseTextBlock(const QString &block); void setConfigValue(const QString &key, const QString &value); }; diff --git a/mainwindow.ui b/mainwindow.ui index 7f8c4b9..bd00149 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -6,8 +6,8 @@ 0 0 - 1260 - 719 + 1266 + 774