mirror of
https://anongit.gentoo.org/git/repo/gentoo.git
synced 2025-06-13 00:28:15 +02:00
Patched for Qt6 support and CMake build system, fixed some pkgcheck warnings. Bug: https://bugs.gentoo.org/947239 Signed-off-by: Jaak Ristioja <jaak@ristioja.ee> Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
407 lines
13 KiB
Diff
407 lines
13 KiB
Diff
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
new file mode 100644
|
|
index 0000000..fbaf333
|
|
--- /dev/null
|
|
+++ b/CMakeLists.txt
|
|
@@ -0,0 +1,25 @@
|
|
+cmake_minimum_required(VERSION 3.16)
|
|
+project(diffpdf CXX)
|
|
+
|
|
+find_package(Qt6 REQUIRED COMPONENTS Gui LinguistTools PrintSupport Widgets)
|
|
+find_package(PkgConfig REQUIRED)
|
|
+pkg_search_module(PopplerQt6 REQUIRED IMPORTED_TARGET poppler-qt6>=22.12.0)
|
|
+
|
|
+qt_standard_project_setup(REQUIRES 6.4.2 I18N_TRANSLATED_LANGUAGES cz de es fr)
|
|
+
|
|
+file(GLOB DiffPDF_SOURCES CONFIGURE_DEPENDS
|
|
+ "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp"
|
|
+ "${CMAKE_CURRENT_SOURCE_DIR}/*.hpp"
|
|
+)
|
|
+qt_add_executable(diffpdf ${DiffPDF_SOURCES})
|
|
+target_link_libraries(diffpdf
|
|
+ PRIVATE
|
|
+ PkgConfig::PopplerQt6
|
|
+ Qt6::Core
|
|
+ Qt6::PrintSupport
|
|
+ Qt6::Widgets
|
|
+)
|
|
+qt_add_translations(diffpdf RESOURCE_PREFIX "/")
|
|
+qt_add_binary_resources(diffpdf_resources resources.qrc)
|
|
+add_dependencies(diffpdf diffpdf_resources)
|
|
+install(TARGETS diffpdf)
|
|
diff --git a/diffpdf_cz.ts b/diffpdf_cz.ts
|
|
index 66f718c..36b313f 100644
|
|
--- a/diffpdf_cz.ts
|
|
+++ b/diffpdf_cz.ts
|
|
@@ -1,7 +1,6 @@
|
|
<?xml version="1.0" encoding="utf-8"?>
|
|
<!DOCTYPE TS>
|
|
<TS version="2.0" language="cs_CZ">
|
|
-<defaultcodec>UTF-8</defaultcodec>
|
|
<context>
|
|
<name>AboutForm</name>
|
|
<message>
|
|
diff --git a/diffpdf_de.ts b/diffpdf_de.ts
|
|
index 6b8ee47..3daf0cc 100644
|
|
--- a/diffpdf_de.ts
|
|
+++ b/diffpdf_de.ts
|
|
@@ -1,7 +1,6 @@
|
|
<?xml version="1.0" encoding="utf-8"?>
|
|
<!DOCTYPE TS>
|
|
<TS version="2.0" language="de_DE">
|
|
-<defaultcodec>UTF-8</defaultcodec>
|
|
<context>
|
|
<name>AboutForm</name>
|
|
<message>
|
|
diff --git a/diffpdf_es.ts b/diffpdf_es.ts
|
|
index a35941f..e8c9d8f 100644
|
|
--- a/diffpdf_es.ts
|
|
+++ b/diffpdf_es.ts
|
|
@@ -1,7 +1,6 @@
|
|
<?xml version="1.0" encoding="utf-8"?>
|
|
<!DOCTYPE TS>
|
|
<TS version="2.0" language="es_ES">
|
|
-<defaultcodec>UTF-8</defaultcodec>
|
|
<context>
|
|
<name>AboutForm</name>
|
|
<message>
|
|
diff --git a/diffpdf_fr.ts b/diffpdf_fr.ts
|
|
index 815e9c4..3e3d5e7 100644
|
|
--- a/diffpdf_fr.ts
|
|
+++ b/diffpdf_fr.ts
|
|
@@ -1,7 +1,6 @@
|
|
<?xml version="1.0" encoding="utf-8"?>
|
|
<!DOCTYPE TS>
|
|
<TS version="2.0">
|
|
-<defaultcodec>UTF-8</defaultcodec>
|
|
<context>
|
|
<name>AboutForm</name>
|
|
<message>
|
|
diff --git a/generic.cpp b/generic.cpp
|
|
index 13603e3..ba4ea7a 100644
|
|
--- a/generic.cpp
|
|
+++ b/generic.cpp
|
|
@@ -17,6 +17,7 @@
|
|
#include <QPen>
|
|
#include <QPixmapCache>
|
|
#include <QUrl>
|
|
+#include <utility>
|
|
|
|
const QSize SwatchSize(24, 24);
|
|
|
|
@@ -149,8 +150,8 @@ QPixmap penStyleSwatch(const Qt::PenStyle style, const QColor &color)
|
|
const TextBoxList getTextBoxes(PdfPage page, const QRectF &rect)
|
|
{
|
|
TextBoxList boxes;
|
|
- foreach (Poppler::TextBox *box, page->textList()) {
|
|
- PdfTextBox box_ptr(box);
|
|
+ for (auto & box : page->textList()) {
|
|
+ PdfTextBox box_ptr(std::move(box));
|
|
if (rect.isEmpty() || rect.contains(box_ptr->boundingBox()))
|
|
boxes.append(box_ptr);
|
|
}
|
|
diff --git a/generic.hpp b/generic.hpp
|
|
index 1e9afce..fd48163 100644
|
|
--- a/generic.hpp
|
|
+++ b/generic.hpp
|
|
@@ -12,7 +12,8 @@
|
|
for more details.
|
|
*/
|
|
|
|
-#include <poppler-qt5.h>
|
|
+#include <poppler-qt6.h>
|
|
+#include <memory>
|
|
#include <QMetaType>
|
|
#include <QPair>
|
|
#include <QPixmap>
|
|
@@ -22,15 +23,9 @@ class QColor;
|
|
class QMimeData;
|
|
class QRectF;
|
|
|
|
-#if QT_VERSION >= 0x040600
|
|
-typedef QSharedPointer<Poppler::Document> PdfDocument;
|
|
-typedef QSharedPointer<Poppler::Page> PdfPage;
|
|
-typedef QSharedPointer<Poppler::TextBox> PdfTextBox;
|
|
-#else
|
|
-typedef std::tr1::shared_ptr<Poppler::Document> PdfDocument;
|
|
-typedef std::tr1::shared_ptr<Poppler::Page> PdfPage;
|
|
-typedef std::tr1::shared_ptr<Poppler::TextBox> PdfTextBox;
|
|
-#endif
|
|
+using PdfDocument = std::shared_ptr<Poppler::Document>;
|
|
+using PdfPage = std::shared_ptr<Poppler::Page>;
|
|
+using PdfTextBox = std::shared_ptr<Poppler::TextBox>;
|
|
typedef QList<PdfTextBox> TextBoxList;
|
|
|
|
enum InitialComparisonMode{CompareAppearance=0, CompareCharacters=1,
|
|
@@ -50,9 +45,9 @@ struct PagePair
|
|
|
|
bool isNull() { return left == -1 || right == -1; }
|
|
|
|
- const int left;
|
|
- const int right;
|
|
- const bool hasVisualDifference;
|
|
+ int left;
|
|
+ int right;
|
|
+ bool hasVisualDifference;
|
|
};
|
|
Q_DECLARE_METATYPE(PagePair)
|
|
|
|
diff --git a/helpform.cpp b/helpform.cpp
|
|
index 7a8269f..6354ee4 100644
|
|
--- a/helpform.cpp
|
|
+++ b/helpform.cpp
|
|
@@ -16,6 +16,7 @@
|
|
#include <QKeySequence>
|
|
#include <QSettings>
|
|
#include <QShortcut>
|
|
+#include <QStringConverter>
|
|
#include <QTextBrowser>
|
|
#include <QTextStream>
|
|
|
|
@@ -31,7 +32,7 @@ HelpForm::HelpForm(const QString &language, QWidget *parent)
|
|
QFile file(filename);
|
|
file.open(QIODevice::ReadOnly|QIODevice::Text);
|
|
QTextStream in(&file);
|
|
- in.setCodec("UTF-8");
|
|
+ in.setEncoding(QStringConverter::Utf8);
|
|
viewer->setHtml(in.readAll());
|
|
viewer->setReadOnly(true);
|
|
setCentralWidget(viewer);
|
|
diff --git a/main.cpp b/main.cpp
|
|
index 321ecc4..a6063d3 100644
|
|
--- a/main.cpp
|
|
+++ b/main.cpp
|
|
@@ -16,7 +16,6 @@
|
|
#include <QLibraryInfo>
|
|
#include <QLocale>
|
|
#include <QSettings>
|
|
-#include <QTextCodec>
|
|
#include <QTextStream>
|
|
#include <QTranslator>
|
|
|
|
@@ -101,12 +100,12 @@ int main(int argc, char *argv[])
|
|
}
|
|
|
|
QTranslator qtTranslator;
|
|
- qtTranslator.load("qt_" + language,
|
|
- QLibraryInfo::location(QLibraryInfo::TranslationsPath));
|
|
- app.installTranslator(&qtTranslator);
|
|
+ if (qtTranslator.load("qt_" + language,
|
|
+ QLibraryInfo::path(QLibraryInfo::TranslationsPath)))
|
|
+ app.installTranslator(&qtTranslator);
|
|
QTranslator appTranslator;
|
|
- appTranslator.load("diffpdf_" + language, ":/");
|
|
- app.installTranslator(&appTranslator);
|
|
+ if (appTranslator.load("diffpdf_" + language, ":/"))
|
|
+ app.installTranslator(&appTranslator);
|
|
|
|
MainWindow window(debug, comparisonMode, filename1, filename2,
|
|
language.left(2)); // We want de not de_DE etc.
|
|
diff --git a/mainwindow.cpp b/mainwindow.cpp
|
|
index c9dac53..bcdc390 100644
|
|
--- a/mainwindow.cpp
|
|
+++ b/mainwindow.cpp
|
|
@@ -27,18 +27,21 @@
|
|
#include <QComboBox>
|
|
#include <QDir>
|
|
#include <QDockWidget>
|
|
+#include <QElapsedTimer>
|
|
#include <QEvent>
|
|
#include <QFileDialog>
|
|
#include <QGroupBox>
|
|
#include <QLabel>
|
|
#include <QLineEdit>
|
|
#include <QMessageBox>
|
|
+#include <QPageLayout>
|
|
#include <QPainter>
|
|
#include <QPixmapCache>
|
|
#include <QPlainTextEdit>
|
|
#include <QPrinter>
|
|
#include <QPushButton>
|
|
#include <QRadioButton>
|
|
+#include <QRegularExpression>
|
|
#include <QScrollArea>
|
|
#include <QScrollBar>
|
|
#include <QSettings>
|
|
@@ -1249,11 +1252,7 @@ PdfDocument MainWindow::getPdf(const QString &filename)
|
|
else if (pdf->isLocked()) {
|
|
QMessageBox::warning(this, tr("DiffPDF — Error"),
|
|
tr("Cannot read a locked PDF ('%1').").arg(filename));
|
|
-#if QT_VERSION >= 0x040600
|
|
- pdf.clear();
|
|
-#else
|
|
- pdf.reset();
|
|
-#endif
|
|
+ return {};
|
|
}
|
|
return pdf;
|
|
}
|
|
@@ -1319,7 +1318,8 @@ QList<int> MainWindow::getPageList(int which, PdfDocument pdf)
|
|
bool error = false;
|
|
QList<int> pages;
|
|
QString page_string = pagesEdit->text();
|
|
- page_string = page_string.replace(QRegExp("\\s+"), "");
|
|
+ static QRegularExpression const spaces("\\s+");
|
|
+ page_string = page_string.replace(spaces, "");
|
|
QStringList page_list = page_string.split(",");
|
|
bool ok;
|
|
foreach (const QString &page, page_list) {
|
|
@@ -1387,7 +1387,7 @@ void MainWindow::compare()
|
|
}
|
|
|
|
comparePrepareUi();
|
|
- QTime time;
|
|
+ QElapsedTimer time;
|
|
time.start();
|
|
const QPair<int, int> pair = comparePages(filename1, pdf1, filename2,
|
|
pdf2);
|
|
@@ -1685,8 +1685,8 @@ void MainWindow::saveAsPdf(const int start, const int end,
|
|
printer.setOutputFormat(QPrinter::PdfFormat);
|
|
printer.setColorMode(QPrinter::Color);
|
|
printer.setCreator(tr("DiffPDF"));
|
|
- printer.setOrientation(savePages == SaveBothPages
|
|
- ? QPrinter::Landscape : QPrinter::Portrait);
|
|
+ printer.setPageOrientation(savePages == SaveBothPages
|
|
+ ? QPageLayout::Landscape : QPageLayout::Portrait);
|
|
QPainter painter(&printer);
|
|
painter.setRenderHints(QPainter::Antialiasing|
|
|
QPainter::TextAntialiasing|QPainter::SmoothPixmapTransform);
|
|
@@ -1802,7 +1802,7 @@ void MainWindow::showZones()
|
|
void MainWindow::showZones(const int Width, const TextBoxList &list,
|
|
QLabel *label)
|
|
{
|
|
- if (!label || !label->pixmap() || label->pixmap()->isNull())
|
|
+ if (!label || label->pixmap().isNull())
|
|
return;
|
|
const bool ComparingWords = compareComboBox->currentIndex() ==
|
|
CompareWords;
|
|
@@ -1815,7 +1815,7 @@ void MainWindow::showZones(const int Width, const TextBoxList &list,
|
|
columnsSpinBox->value());
|
|
const int DPI = static_cast<int>(POINTS_PER_INCH *
|
|
(zoomSpinBox->value() / 100.0));
|
|
- QPixmap pixmap = label->pixmap()->copy();
|
|
+ QPixmap pixmap = label->pixmap().copy();
|
|
QPainter painter(&pixmap);
|
|
painter.setPen(Qt::green);
|
|
for (int i = 0; i < paths.count(); ++i) {
|
|
@@ -1844,11 +1844,11 @@ void MainWindow::showMargins()
|
|
|
|
void MainWindow::showMargins(QLabel *label)
|
|
{
|
|
- if (!label || !label->pixmap() || label->pixmap()->isNull())
|
|
+ if (!label || label->pixmap().isNull())
|
|
return;
|
|
const int DPI = static_cast<int>(POINTS_PER_INCH *
|
|
(zoomSpinBox->value() / 100.0));
|
|
- QPixmap pixmap = label->pixmap()->copy();
|
|
+ QPixmap pixmap = label->pixmap().copy();
|
|
QPainter painter(&pixmap);
|
|
painter.setPen(Qt::cyan);
|
|
int left = leftMarginSpinBox->value();
|
|
@@ -1880,12 +1880,11 @@ void MainWindow::showMargins(QLabel *label)
|
|
|
|
void MainWindow::setAMargin(const QPoint &pos)
|
|
{
|
|
- if (!marginsGroupBox->isChecked() || !page1Label->pixmap() ||
|
|
- page1Label->pixmap()->isNull())
|
|
+ if (!marginsGroupBox->isChecked() || page1Label->pixmap().isNull())
|
|
return;
|
|
const int DPI = static_cast<int>(POINTS_PER_INCH *
|
|
(zoomSpinBox->value() / 100.0));
|
|
- const QSize &size = page1Label->pixmap()->size();
|
|
+ const QSize &size = page1Label->pixmap().size();
|
|
int x = pos.x();
|
|
int y = pos.y();
|
|
const int HorizontalMiddle = size.width() / 2;
|
|
diff --git a/mainwindow.hpp b/mainwindow.hpp
|
|
index 448d21c..6a04179 100644
|
|
--- a/mainwindow.hpp
|
|
+++ b/mainwindow.hpp
|
|
@@ -14,12 +14,7 @@
|
|
|
|
#include "generic.hpp"
|
|
#include "saveform.hpp"
|
|
-#if QT_VERSION >= 0x040600
|
|
-#include <QSharedPointer>
|
|
-#else
|
|
-#include <tr1/memory>
|
|
-#endif
|
|
-#include <poppler-qt5.h>
|
|
+#include <poppler-qt6.h>
|
|
#include <QBrush>
|
|
#include <QList>
|
|
#include <QMainWindow>
|
|
diff --git a/resources.qrc b/resources.qrc
|
|
index 5464869..aa0f6be 100644
|
|
--- a/resources.qrc
|
|
+++ b/resources.qrc
|
|
@@ -3,9 +3,6 @@
|
|
<file alias="icon.png">images/icon.png</file>
|
|
<file alias="left.png">images/left.png</file>
|
|
<file alias="right.png">images/right.png</file>
|
|
-<file>diffpdf_cz.qm</file>
|
|
-<file>diffpdf_de.qm</file>
|
|
-<file>diffpdf_fr.qm</file>
|
|
<file>help.html</file>
|
|
<file>help_cz.html</file>
|
|
<file>help_de.html</file>
|
|
diff --git a/sequence_matcher.cpp b/sequence_matcher.cpp
|
|
index cc65425..9dc5d98 100644
|
|
--- a/sequence_matcher.cpp
|
|
+++ b/sequence_matcher.cpp
|
|
@@ -11,6 +11,7 @@
|
|
*/
|
|
|
|
#include "sequence_matcher.hpp"
|
|
+#include <algorithm>
|
|
#include <QSet>
|
|
|
|
|
|
@@ -136,7 +137,7 @@ QList<Match> SequenceMatcher::get_matching_blocks()
|
|
offsets.append(Offsets(i + k, a_high, j + k, b_high));
|
|
}
|
|
}
|
|
- qSort(matching_blocks.begin(), matching_blocks.end(), matchLessThan);
|
|
+ std::sort(matching_blocks.begin(), matching_blocks.end(), matchLessThan);
|
|
|
|
int i1 = 0;
|
|
int j1 = 0;
|
|
diff --git a/textitem.cpp b/textitem.cpp
|
|
index f7ce133..728cbb3 100644
|
|
--- a/textitem.cpp
|
|
+++ b/textitem.cpp
|
|
@@ -14,6 +14,7 @@
|
|
|
|
#include <QDir>
|
|
#include <QFile>
|
|
+#include <QStringConverter>
|
|
#include <QTextStream>
|
|
|
|
|
|
@@ -130,7 +131,7 @@ const QList<QPainterPath> TextItems::generateZones(const int Width,
|
|
const int Column = ((Columns == 1) ? 0
|
|
: (rect.width() > Span) ? Columns : rect.right() / Span);
|
|
const int y = normalizedY(static_cast<int>(rect.y()), ToleranceY);
|
|
- zonesForColumn.insertMulti(Key(Column, y, rect.x()), zone);
|
|
+ zonesForColumn.insert(Key(Column, y, rect.x()), zone);
|
|
}
|
|
return zonesForColumn.values();
|
|
}
|
|
@@ -152,7 +153,7 @@ void TextItems::debug(const int page, const int ToleranceY,
|
|
.arg(file.errorString())));
|
|
}
|
|
QTextStream out(&file);
|
|
- out.setCodec("UTF-8");
|
|
+ out.setEncoding(QStringConverter::Utf8);
|
|
out << "Page #" << page << ": "
|
|
<< (ComparingWords ? "Words" : "Characters") << " mode\n";
|
|
for (int i = 0; i < items.count(); ++i) {
|
|
@@ -202,7 +203,7 @@ const TextItems getCharacters(const TextBoxList &list)
|
|
TextItems items;
|
|
foreach (const PdfTextBox &box, list) {
|
|
const QString word = box->text();
|
|
- int limit = word.count() - 1;
|
|
+ int limit = word.size() - 1;
|
|
for (int i = limit; i >= 0; --i)
|
|
if (!word[i].isSpace())
|
|
break;
|