From 625a4307d0118a326a92503dd2f87f12e258f5d3 Mon Sep 17 00:00:00 2001 From: Jakub Melka Date: Wed, 26 Jun 2024 18:49:31 +0200 Subject: [PATCH] Issue #182: PDF4QT Document Diff command line cmd line arguments ignored --- Pdf4QtDiff/main.cpp | 36 ++++++++++++++++++++ Pdf4QtDiff/mainwindow.cpp | 72 ++++++++++++++++++++++----------------- Pdf4QtDiff/mainwindow.h | 12 ++++--- RELEASES.txt | 4 +++ 4 files changed, 88 insertions(+), 36 deletions(-) diff --git a/Pdf4QtDiff/main.cpp b/Pdf4QtDiff/main.cpp index 3f2c94c..4e505fd 100644 --- a/Pdf4QtDiff/main.cpp +++ b/Pdf4QtDiff/main.cpp @@ -16,6 +16,7 @@ // along with PDF4QT. If not, see . #include "pdfconstants.h" +#include "pdfdocumentreader.h" #include "mainwindow.h" #include @@ -44,5 +45,40 @@ int main(int argc, char *argv[]) pdfdiff::MainWindow mainWindow(nullptr); mainWindow.show(); + QStringList positionalArguments = parser.positionalArguments(); + + if (positionalArguments.size() >= 1) + { + bool leftDocumentIsOK = false; + bool rightDocumentIsOk = false; + + pdf::PDFDocumentReader reader(nullptr, [](bool* ok) { *ok = false; return QString(); }, true, false); + pdf::PDFDocument documentLeft = reader.readFromFile(positionalArguments.front()); + + if (reader.getReadingResult() == pdf::PDFDocumentReader::Result::OK) + { + leftDocumentIsOK = true; + mainWindow.setLeftDocument(std::move(documentLeft)); + } + + if (positionalArguments.size() >= 2) + { + pdf::PDFDocument documentRight = reader.readFromFile(positionalArguments[1]); + + if (reader.getReadingResult() == pdf::PDFDocumentReader::Result::OK) + { + rightDocumentIsOk = true; + mainWindow.setRightDocument(std::move(documentRight)); + } + } + + mainWindow.updateViewDocument(); + + if (leftDocumentIsOK && rightDocumentIsOk && mainWindow.canPerformOperation(pdfdiff::MainWindow::Operation::Compare)) + { + mainWindow.performOperation(pdfdiff::MainWindow::Operation::Compare); + } + } + return application.exec(); } diff --git a/Pdf4QtDiff/mainwindow.cpp b/Pdf4QtDiff/mainwindow.cpp index 41b3517..d3061a9 100644 --- a/Pdf4QtDiff/mainwindow.cpp +++ b/Pdf4QtDiff/mainwindow.cpp @@ -458,22 +458,7 @@ void MainWindow::performOperation(Operation operation) if (document) { clear(true, false); - m_leftDocument = std::move(*document); - - const size_t pageCount = m_leftDocument.getCatalog()->getPageCount(); - if (pageCount > 1) - { - m_settingsDockWidget->getLeftPageSelectionEdit()->setText(QString("1-%2").arg(pageCount)); - } - else if (pageCount == 1) - { - m_settingsDockWidget->getLeftPageSelectionEdit()->setText("1"); - } - else - { - m_settingsDockWidget->getLeftPageSelectionEdit()->clear(); - } - + setLeftDocument(std::move(*document)); updateViewDocument(); } @@ -489,22 +474,7 @@ void MainWindow::performOperation(Operation operation) if (document) { clear(false, true); - m_rightDocument = std::move(*document); - - const size_t pageCount = m_rightDocument.getCatalog()->getPageCount(); - if (pageCount > 1) - { - m_settingsDockWidget->getRightPageSelectionEdit()->setText(QString("1-%2").arg(pageCount)); - } - else if (pageCount == 1) - { - m_settingsDockWidget->getRightPageSelectionEdit()->setText("1"); - } - else - { - m_settingsDockWidget->getRightPageSelectionEdit()->clear(); - } - + setRightDocument(std::move(*document)); updateViewDocument(); } @@ -863,6 +833,44 @@ std::optional MainWindow::openDocument() return pdf::PDFDocument(); } +void MainWindow::setRightDocument(pdf::PDFDocument&& newRightDocument) +{ + m_rightDocument = newRightDocument; + + const size_t pageCount = m_rightDocument.getCatalog()->getPageCount(); + if (pageCount > 1) + { + m_settingsDockWidget->getRightPageSelectionEdit()->setText(QString("1-%2").arg(pageCount)); + } + else if (pageCount == 1) + { + m_settingsDockWidget->getRightPageSelectionEdit()->setText("1"); + } + else + { + m_settingsDockWidget->getRightPageSelectionEdit()->clear(); + } +} + +void MainWindow::setLeftDocument(pdf::PDFDocument&& newLeftDocument) +{ + m_leftDocument = newLeftDocument; + + const size_t pageCount = m_leftDocument.getCatalog()->getPageCount(); + if (pageCount > 1) + { + m_settingsDockWidget->getLeftPageSelectionEdit()->setText(QString("1-%2").arg(pageCount)); + } + else if (pageCount == 1) + { + m_settingsDockWidget->getLeftPageSelectionEdit()->setText("1"); + } + else + { + m_settingsDockWidget->getLeftPageSelectionEdit()->clear(); + } +} + void MainWindow::onProgressStarted(pdf::ProgressStartupInfo info) { #ifdef WIN_TASKBAR_BUTTON diff --git a/Pdf4QtDiff/mainwindow.h b/Pdf4QtDiff/mainwindow.h index 02ef950..21dd3e7 100644 --- a/Pdf4QtDiff/mainwindow.h +++ b/Pdf4QtDiff/mainwindow.h @@ -84,6 +84,14 @@ public: virtual void showEvent(QShowEvent* event) override; virtual void closeEvent(QCloseEvent* event) override; + void setLeftDocument(pdf::PDFDocument&& newLeftDocument); + void setRightDocument(pdf::PDFDocument&& newRightDocument); + + void updateViewDocument(); + + bool canPerformOperation(Operation operation) const; + void performOperation(Operation operation); + private slots: void updateActions(); void onSelectionChanged(size_t currentIndex); @@ -100,9 +108,6 @@ private: void loadSettings(); void saveSettings(); - bool canPerformOperation(Operation operation) const; - void performOperation(Operation operation); - void setViewDocument(pdf::PDFDocument* document, bool updateCustomPageLayout); ComparedDocumentMapper::Mode getDocumentViewMode() const; @@ -115,7 +120,6 @@ private: void updateAll(bool resetFilters); void updateFilteredResult(); - void updateViewDocument(); void updateCustomPageLayout(); void updateOverlayTransparency(); diff --git a/RELEASES.txt b/RELEASES.txt index 9668c84..890f68d 100644 --- a/RELEASES.txt +++ b/RELEASES.txt @@ -1,12 +1,16 @@ CURRENT: + - Issue #182: PDF4QT Document Diff command line cmd line arguments ignored - Issue #173: errors loading file Echoplex.pdf - Issue #172: access keys are missing from most menu items/action text strings - Issue #168: When opening a PDF file or merging some PDF files, stamp will disappear. + - Issue #166: Adding images to PDF? - Issue #164: Taskbar icon not shown in linux mint. - Issue #163: Unable to render probably valid PDF - Issue #161: Can it be possible to trust a certificate like in acrobat? - Issue #159: Offer 4 AppImage one for each App [enhancement] - Issue #123: Alternative software rendering backend (Blend2D) + - Issue #42: Is REAL pdf text editing planned ? + - Issue #26: Add pictures in PDF files V: 1.3.7 10.1.2024 - Issue #142: Cannot reach the top