Fixed search
This commit is contained in:
@@ -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.
|
||||
|
||||
9
main.cpp
9
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();
|
||||
|
||||
@@ -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,29 +552,32 @@ 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;
|
||||
}
|
||||
}
|
||||
searchInTree(childItem, query);
|
||||
if (currentItem == line) {
|
||||
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) {
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
|
||||
@@ -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">
|
||||
|
||||
Reference in New Issue
Block a user