Fixed search

This commit is contained in:
Torsten Schulz
2024-04-05 13:42:10 +02:00
parent b90d26d886
commit c9bf7db38c
5 changed files with 32 additions and 52 deletions

View File

@@ -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.

View File

@@ -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();

View File

@@ -1,5 +1,6 @@
#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include <utility>
#include <QFileDialog>
#include <QMessageBox>
#include <QDir>
@@ -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::TranslationItem> 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;

View File

@@ -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<TranslationItem> parseTextBlock(const QString &block);
void setConfigValue(const QString &key, const QString &value);
};

View File

@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>1260</width>
<height>719</height>
<width>1266</width>
<height>774</height>
</rect>
</property>
<property name="windowTitle">