summaryrefslogtreecommitdiff
path: root/src/main/python/utils/canvas.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/python/utils/canvas.py')
-rw-r--r--src/main/python/utils/canvas.py45
1 files changed, 39 insertions, 6 deletions
diff --git a/src/main/python/utils/canvas.py b/src/main/python/utils/canvas.py
index a01092c..c101422 100644
--- a/src/main/python/utils/canvas.py
+++ b/src/main/python/utils/canvas.py
@@ -1,18 +1,24 @@
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QBrush
-from PyQt5.QtWidgets import QWidget, QGraphicsScene, QGraphicsView, QHBoxLayout
-from .sizes import paperSizes, sheetDimensionList, ppiList
+from PyQt5.QtWidgets import QGraphicsScene, QGraphicsView, QHBoxLayout, QWidget
+
+import graphics
+from .sizes import paperSizes, ppiList, sheetDimensionList
+
+
class canvas(QWidget):
def __init__(self, parent=None, size= 0, ppi= 1):
super(canvas, self).__init__(parent)
self._ppi = ppiList[ppi]
- self._canvasSize = sheetDimensionList[size]
- self.resize(1280, 720)
-
+ self._canvasSize = sheetDimensionList[size]
self.painter = QGraphicsScene(0, 0, *paperSizes[self.canvasSize][self.ppi])
+ self.painter.setSceneRect(0, 0, *paperSizes[self.canvasSize][self.ppi])
+ self.setMaximumSize(*paperSizes[self.canvasSize][self.ppi])
+ self.resize(*paperSizes[self.canvasSize][self.ppi])
self.painter.setBackgroundBrush(QBrush(Qt.white))
self.view = QGraphicsView(self.painter)
+ self.view.setMaximumSize(794, 1123)
self.layout = QHBoxLayout(self)
self.layout.addWidget(self.view)
self.setLayout(self.layout)
@@ -35,9 +41,36 @@ class canvas(QWidget):
self._canvasSize = size
if self.painter:
self.painter.setSceneRect(0, 0, *paperSizes[self.canvasSize][self.ppi])
+ self.setMaximumSize(*paperSizes[self.canvasSize][self.ppi])
+ self.resize(*paperSizes[self.canvasSize][self.ppi])
+
@ppi.setter
def ppi(self, ppi):
self._ppi = ppi
if self.painter:
- self.painter.setSceneRect(0, 0, *paperSizes[self.canvasSize][self.ppi]) \ No newline at end of file
+ self.painter.setSceneRect(0, 0, *paperSizes[self.canvasSize][self.ppi])
+ self.setMaximumSize(*paperSizes[self.canvasSize][self.ppi])
+ self.resize(*paperSizes[self.canvasSize][self.ppi])
+
+ @property
+ def dimensions(self):
+ return self.painter.sceneRect().width(), self.painter.sceneRect().height()
+
+ def __getstate__(self) -> dict:
+ return {
+ "_classname_": self.__class__.__name__,
+ "ppi": self._ppi,
+ "canvasSize": self._canvasSize,
+ "ObjectName": self.objectName(),
+ "items": [i.__getState__() for i in self.painter.items()]
+ }
+
+ def __setstate__(self, dict):
+ self.__init__()
+ self._ppi = dict['ppi']
+ self._canvasSize = dict['canvasSize']
+ self.setObjectName(dict['ObjectName'])
+ for item in dict['items']:
+ graphic = getattr(graphics, dict['_classname_'])
+ self.painter.addItem(item)