Fixed search
This commit is contained in:
@@ -6,11 +6,11 @@ set(CMAKE_AUTOUIC ON)
|
|||||||
set(CMAKE_AUTOMOC ON)
|
set(CMAKE_AUTOMOC ON)
|
||||||
set(CMAKE_AUTORCC ON)
|
set(CMAKE_AUTORCC ON)
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 20)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets LinguistTools)
|
find_package(QT NAMES Qt6 REQUIRED COMPONENTS Widgets)
|
||||||
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets LinguistTools)
|
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
|
||||||
|
|
||||||
set(TS_FILES RenpyTranslationHelper_en_GB.ts)
|
set(TS_FILES RenpyTranslationHelper_en_GB.ts)
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
|
|||||||
# ${CMAKE_CURRENT_SOURCE_DIR}/android)
|
# ${CMAKE_CURRENT_SOURCE_DIR}/android)
|
||||||
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
|
# 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()
|
else()
|
||||||
if(ANDROID)
|
if(ANDROID)
|
||||||
add_library(RenpyTranslationHelper SHARED
|
add_library(RenpyTranslationHelper SHARED
|
||||||
@@ -51,7 +51,7 @@ endif()
|
|||||||
|
|
||||||
target_link_libraries(RenpyTranslationHelper PRIVATE
|
target_link_libraries(RenpyTranslationHelper PRIVATE
|
||||||
Qt${QT_VERSION_MAJOR}::Widgets
|
Qt${QT_VERSION_MAJOR}::Widgets
|
||||||
Qt5Network
|
Qt6Network
|
||||||
)
|
)
|
||||||
|
|
||||||
# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
|
# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
|
||||||
|
|||||||
9
main.cpp
9
main.cpp
@@ -8,15 +8,6 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
QApplication a(argc, 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;
|
MainWindow w;
|
||||||
w.show();
|
w.show();
|
||||||
return a.exec();
|
return a.exec();
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
#include "mainwindow.h"
|
#include "mainwindow.h"
|
||||||
#include "./ui_mainwindow.h"
|
#include "./ui_mainwindow.h"
|
||||||
|
#include <utility>
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
@@ -43,15 +44,7 @@ MainWindow::MainWindow(QWidget *parent)
|
|||||||
if (configuration.contains("last-dir") && (QDir()).exists(configuration["last-dir"].toString())) {
|
if (configuration.contains("last-dir") && (QDir()).exists(configuration["last-dir"].toString())) {
|
||||||
ui->projectDir->setText(configuration["last-dir"].toString());
|
ui->projectDir->setText(configuration["last-dir"].toString());
|
||||||
crawlProject();
|
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) {
|
if (configuration.contains("last-language") && ui->languageCombo->findText(configuration["last-language"].toString()) >= 0) {
|
||||||
qDebug() << "language crawl";
|
|
||||||
ui->languageCombo->setCurrentText(configuration["last-language"].toString());
|
ui->languageCombo->setCurrentText(configuration["last-language"].toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -99,15 +92,8 @@ void MainWindow::crawlProject() {
|
|||||||
ui->languageCombo->setCurrentIndex(-1);
|
ui->languageCombo->setCurrentIndex(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_reloadButton_clicked()
|
|
||||||
{
|
|
||||||
crawlProject();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void MainWindow::on_languageCombo_currentTextChanged(const QString &selectedLanguage)
|
void MainWindow::on_languageCombo_currentTextChanged(const QString &selectedLanguage)
|
||||||
{
|
{
|
||||||
qDebug() << "language selected";
|
|
||||||
setConfigValue("last-language", selectedLanguage);
|
setConfigValue("last-language", selectedLanguage);
|
||||||
fileContentsMap.clear();
|
fileContentsMap.clear();
|
||||||
ui->treeWidget->clear();
|
ui->treeWidget->clear();
|
||||||
@@ -138,7 +124,7 @@ void MainWindow::populateTreeWidgetFromMap() {
|
|||||||
fileItem->setText(0, fileName);
|
fileItem->setText(0, fileName);
|
||||||
fileItem->setData(0, Qt::UserRole, false);
|
fileItem->setData(0, Qt::UserRole, false);
|
||||||
auto parsedBlocks = parseTextBlock(pair.second);
|
auto parsedBlocks = parseTextBlock(pair.second);
|
||||||
for (const auto& block : qAsConst(parsedBlocks)) {
|
for (const auto& block : std::as_const(parsedBlocks)) {
|
||||||
QTreeWidgetItem *blockItem = new QTreeWidgetItem(fileItem);
|
QTreeWidgetItem *blockItem = new QTreeWidgetItem(fileItem);
|
||||||
blockItem->setText(0, QString::number(block.line));
|
blockItem->setText(0, QString::number(block.line));
|
||||||
blockItem->setText(1, block.oldText);
|
blockItem->setText(1, block.oldText);
|
||||||
@@ -163,9 +149,10 @@ QVector<MainWindow::TranslationItem> MainWindow::parseTextBlock(const QString& i
|
|||||||
QString identifier, originalText, translatedText;
|
QString identifier, originalText, translatedText;
|
||||||
for (const QString& line : std::as_const(lines)) {
|
for (const QString& line : std::as_const(lines)) {
|
||||||
if (line.contains("# game/")) {
|
if (line.contains("# game/")) {
|
||||||
QRegExp regExp("# game/.+:(\\d+)");
|
QRegularExpression regExp("# game/.+:(\\d+)");
|
||||||
if (regExp.indexIn(line.trimmed()) != -1) {
|
QRegularExpressionMatch match = regExp.match(line.trimmed());
|
||||||
lineNumber = regExp.cap(1).toInt();
|
if (match.hasMatch()) {
|
||||||
|
lineNumber = match.captured(1).toInt();
|
||||||
}
|
}
|
||||||
} else if (line.startsWith(" # ") || line.startsWith(" old ")) {
|
} else if (line.startsWith(" # ") || line.startsWith(" old ")) {
|
||||||
originalText = line.mid(line.indexOf("\"") + 1).trimmed();
|
originalText = line.mid(line.indexOf("\"") + 1).trimmed();
|
||||||
@@ -565,29 +552,32 @@ void MainWindow::on_searchButton_clicked() {
|
|||||||
searchNext();
|
searchNext();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_searchNextButton_clicked() {
|
void MainWindow::on_searchNextButton_clicked() {
|
||||||
|
if (searchQuery.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
qDebug() << "clicked";
|
||||||
searchNext();
|
searchNext();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::searchInTree(QTreeWidgetItem *item, const QString &query) {
|
void MainWindow::searchNext() {
|
||||||
for (int i = 0; i < item->childCount(); ++i) {
|
auto currentItem = ui->treeWidget->currentItem();
|
||||||
QTreeWidgetItem *childItem = item->child(i);
|
for (int fileItemPos = 0; fileItemPos < ui->treeWidget->invisibleRootItem()->childCount(); ++fileItemPos) {
|
||||||
for (int column = 1; column <= 2; ++column) {
|
auto fileItem {ui->treeWidget->invisibleRootItem()->child(fileItemPos)};
|
||||||
if (childItem->text(column).contains(query, Qt::CaseInsensitive)) {
|
for (int linePos = 0; linePos < fileItem->childCount(); ++linePos) {
|
||||||
ui->treeWidget->setCurrentItem(childItem);
|
auto line {fileItem->child(linePos)};
|
||||||
ui->treeWidget->scrollToItem(childItem);
|
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;
|
return;
|
||||||
}
|
}
|
||||||
}
|
if (currentItem == line) {
|
||||||
searchInTree(childItem, query);
|
currentItem = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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) {
|
void MainWindow::setConfigValue(const QString &key, const QString &value) {
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ public:
|
|||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void on_selectProjectDirButton_clicked();
|
void on_selectProjectDirButton_clicked();
|
||||||
void on_reloadButton_clicked();
|
// void on_reloadButton_clicked();
|
||||||
void on_languageCombo_currentTextChanged(const QString &selectedLanguage);
|
void on_languageCombo_currentTextChanged(const QString &selectedLanguage);
|
||||||
void on_reloadTranslationsButton_clicked();
|
void on_reloadTranslationsButton_clicked();
|
||||||
void on_reloadFilesButton_clicked();
|
void on_reloadFilesButton_clicked();
|
||||||
@@ -74,7 +74,6 @@ private:
|
|||||||
void translationRequestFinished(QNetworkReply *reply);
|
void translationRequestFinished(QNetworkReply *reply);
|
||||||
void countAndShowUntranslated();
|
void countAndShowUntranslated();
|
||||||
void searchNext();
|
void searchNext();
|
||||||
void searchInTree(QTreeWidgetItem *item, const QString &query);
|
|
||||||
QVector<TranslationItem> parseTextBlock(const QString &block);
|
QVector<TranslationItem> parseTextBlock(const QString &block);
|
||||||
void setConfigValue(const QString &key, const QString &value);
|
void setConfigValue(const QString &key, const QString &value);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -6,8 +6,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>1260</width>
|
<width>1266</width>
|
||||||
<height>719</height>
|
<height>774</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
|
|||||||
Reference in New Issue
Block a user