This commit is contained in:
Christopher T. Johnson
2025-02-14 12:17:43 -05:00
parent bc639c1a95
commit 7c6ffea018
5 changed files with 113 additions and 37 deletions

View File

@@ -1,10 +1,49 @@
from typing import cast
from PySide6.QtCore import QAbstractItemModel, QDir, QEvent, QFile, QModelIndex, QObject, QPersistentModelIndex, QPoint, QRect, QSize, QUrl, Signal, Qt, Slot
from PySide6.QtGui import QColor, QFont, QMouseEvent, QPainter, QPalette, QShowEvent, QTextDocument
from PySide6.QtWidgets import QApplication, QSizePolicy, QStyle, QStyleOptionViewItem, QStyledItemDelegate, QTableView, QTextEdit, QWidget
from PySide6.QtNetwork import QNetworkAccessManager, QNetworkReply, QNetworkRequest
from typing import Any, cast
from PySide6.QtCore import (
QAbstractItemModel,
QDir,
QEvent,
QFile,
QModelIndex,
QObject,
QPersistentModelIndex,
QPoint,
QRect,
QSize,
Qt,
QUrl,
Signal,
Slot,
)
from PySide6.QtGui import (
QColor,
QFont,
QMouseEvent,
QPainter,
QPalette,
QShowEvent,
QTextDocument,
)
from PySide6.QtNetwork import (
QNetworkAccessManager,
QNetworkReply,
QNetworkRequest,
)
from PySide6.QtWidgets import (
QApplication,
QSizePolicy,
QStyle,
QStyledItemDelegate,
QStyleOptionViewItem,
QTableView,
QTextEdit,
QWidget,
)
from pdfView import PDFViewer
class QStyleOptionViewItemInit(QStyleOptionViewItem):
backgroundBrush: QColor
rect: QRect
@@ -12,6 +51,7 @@ class QStyleOptionViewItemInit(QStyleOptionViewItem):
font: QFont
text: str
class documentDelegate(QStyledItemDelegate):
def initStyleOption(
self,
@@ -71,14 +111,14 @@ class docketEntry(QTextEdit):
print(f"self.size(): {self.size()}")
if anchor:
print(f"Anchors away: {anchor}")
obj = self
obj = cast(QObject, self)
while not isinstance(obj, docketTableView) and obj is not None:
obj = obj.parent()
assert obj is not None
index = obj.indexAt(obj.mapFromGlobal(self.mapToGlobal(e.pos())))
obj.anchorSignal.emit(index, anchor)
return
def sizeHint(self) -> QSize:
size = self.size()
doc = QTextDocument()
@@ -94,21 +134,22 @@ class docketTableView(QTableView):
clickedEvent = Signal(QPoint)
anchorSignal = Signal(QModelIndex, str)
def __init__(self, parent: QWidget|None = None) -> None:
super(docketTableView,self).__init__(parent)
def __init__(self, parent: QWidget | None = None) -> None:
super(docketTableView, self).__init__(parent)
self.anchorSignal.connect(self.doAnchor)
self.manager.finished.connect(self.getDone)
return
def setModel(self, model: QAbstractItemModel | None) -> None:
assert model is not None
super().setModel(model)
self.model().modelReset.connect(self.modelReset)
print("Setting Model")
return
@Slot(QNetworkReply) # type: ignore
def getDone(self, reply:QNetworkReply) -> None:
dest = QFile('.'+reply.url().path())
@Slot(QNetworkReply) # type: ignore
def getDone(self, reply: QNetworkReply) -> None:
dest = QFile("." + reply.url().path())
dest.open(QFile.OpenModeFlag.WriteOnly)
dest.write(reply.readAll())
dest.close()
@@ -117,33 +158,34 @@ class docketTableView(QTableView):
self.pdf.load_pdf(dest)
self.pdf.show()
return
@Slot(QModelIndex, str) # type: ignore
@Slot(QModelIndex, str) # type: ignore
def doAnchor(self, index: QModelIndex, anchor: str) -> None:
url = QUrl(anchor)
print(f"{index.row()}, {index.column()} -> {url.path()}")
dirs = url.path().split('/')
dirs = url.path().split("/")
dirs.pop()
dirs.pop(0)
currentDir = QDir()
path = '/'.join(dirs)
path = "/".join(dirs)
currentDir.mkpath(path)
if QDir('.'+url.path()).exists():
file = QFile('.'+url.path())
if QDir("." + url.path()).exists():
file = QFile("." + url.path())
self.pdf = PDFViewer(self)
self.pdf.load_pdf(file)
self.pdf.show()
else:
self.manager.get(QNetworkRequest(url))
return
def modelReset(self) -> None:
model = self.model()
red = QPalette()
red.setColor(QPalette.ColorRole.Base, Qt.GlobalColor.red)
for row in range(0, model.rowCount()):
index = model.index(row,1)
index = model.index(row, 1)
widget = docketEntry()
widget.setHtml(model.data(index,Qt.ItemDataRole.DisplayRole))
widget.setHtml(model.data(index, Qt.ItemDataRole.DisplayRole))
widget.setAutoFillBackground(False)
widget.setReadOnly(True)
widget.setPalette(red)