From f952879753c46c6401553c70e8adb6f8f8ae4774 Mon Sep 17 00:00:00 2001 From: "Christopher T. Johnson" Date: Wed, 26 Feb 2025 11:00:00 -0500 Subject: [PATCH] Adjust splitter when initially loading PDF Document Closes: #4 After consideration, we don't want to change the size of the dialog which is the only way to make it fit the PDF. But the geometry is saved, so the user can resize and place it. We did set the splitter to give more space to the PDF. --- pdfView.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/pdfView.py b/pdfView.py index 29caaf4..82a355a 100644 --- a/pdfView.py +++ b/pdfView.py @@ -1,7 +1,7 @@ import math -from PySide6.QtCore import QFile, QModelIndex, QPoint, Signal, Slot -from PySide6.QtGui import QCloseEvent +from PySide6.QtCore import QFile, QModelIndex, QPoint, QSize, Signal, Slot +from PySide6.QtGui import QCloseEvent, QGuiApplication from PySide6.QtPdf import QPdfBookmarkModel, QPdfDocument from PySide6.QtPdfWidgets import QPdfView from PySide6.QtWidgets import QComboBox, QDialog, QMenuBar, QSpinBox, QWidget @@ -103,7 +103,7 @@ class PDFViewer(QDialog, Ui_pdfViewer): self.pdfView.setZoomFactor ) self.zoomSelector.reset() - + bookmark_model = QPdfBookmarkModel(self) bookmark_model.setDocument(self.document) @@ -118,16 +118,13 @@ class PDFViewer(QDialog, Ui_pdfViewer): return def closeEvent(self, event: QCloseEvent) -> None: + print("closeEvent") writeGeometry(self) super().closeEvent(event) return @Slot(QFile) # type: ignore def open(self, file: QFile) -> None: - # assert file.exists() - # if not file.isOpen(): - # file.open(QFile.OpenModeFlag.ReadOnly) - # self.document.load(file) self.document.load(file.fileName()) document_title = self.document.metaData( QPdfDocument.MetaDataField.Title @@ -135,6 +132,12 @@ class PDFViewer(QDialog, Ui_pdfViewer): self.setWindowTitle(document_title if document_title else "PDF Viewer") self.page_selected(0) self.pageSelector.setMaximum(self.document.pageCount() - 1) + if self.zoomSelector.currentIndex() == 8: + pageSize = self.document.pagePointSize(0) + dpi = QGuiApplication.primaryScreen().physicalDotsPerInch() + size = QSize(int(pageSize.width()/72*dpi),self.pdfView.height()) + self.pdfView.resize(size) + self.splitter.setSizes([100, size.width()]) return @Slot(QModelIndex) # type: ignore