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, 31 insertions, 14 deletions
diff --git a/src/main/python/utils/canvas.py b/src/main/python/utils/canvas.py
index 2332087..dee0745 100644
--- a/src/main/python/utils/canvas.py
+++ b/src/main/python/utils/canvas.py
@@ -1,6 +1,6 @@
-import pickle
+import json
-from PyQt5.QtCore import Qt
+from PyQt5.QtCore import Qt, QPointF
from PyQt5.QtGui import QBrush, QPalette
from PyQt5.QtWidgets import (QFileDialog, QApplication, QHBoxLayout, QMenu,
QTabWidget, QWidget, QSpacerItem, QStyle)
@@ -9,13 +9,15 @@ from . import dialogs
from .graphics import customView, customScene
from .data import paperSizes, ppiList, sheetDimensionList
+import shapes
+
class canvas(QWidget):
"""
Defines the work area for a single sheet. Contains a QGraphicScene along with necessary properties
for context menu and dialogs.
"""
- def __init__(self, parent=None, size= 'A4', ppi= '72'):
+ def __init__(self, parent=None, size= 'A4', ppi= '72' , parentMdiArea = None, parentFileWindow = None):
super(canvas, self).__init__(parent)
#Store values for the canvas dimensions for ease of access, these are here just to be
@@ -27,7 +29,7 @@ class canvas(QWidget):
# when we will draw items on this, this might be changed if QGraphicScene is subclassed.
#set layout and background color
- self.painter = customScene()
+ self.painter = customScene()
self.painter.setBackgroundBrush(QBrush(Qt.white)) #set white background
self.view = customView(self.painter, self) #create a viewport for the canvas board
@@ -38,11 +40,9 @@ class canvas(QWidget):
self.setLayout(self.layout)
#set initial paper size for the scene
- self.painter.setSceneRect(0, 0, *paperSizes[self.canvasSize][self.ppi])
-
- #set pointers to necessary parents for ease of reference
- self.parentMdiArea = self.parent().parentWidget().parentWidget().parentWidget().parentWidget()
- self.parentFileWindow = self.parent().parentWidget().parentWidget()
+ self.painter.setSceneRect(0, 0, *paperSizes[self._canvasSize][self._ppi])
+ self.parentMdiArea = parentMdiArea
+ self.parentFileWindow = parentFileWindow
def resizeView(self, w, h):
#helper function to resize canvas
@@ -95,6 +95,7 @@ class canvas(QWidget):
def dimensions(self):
#returns the dimension of the current scene
return self.painter.sceneRect().width(), self.painter.sceneRect().height()
+
@property
def items(self):
# generator to filter out certain items
@@ -128,17 +129,33 @@ class canvas(QWidget):
"ppi": self._ppi,
"canvasSize": self._canvasSize,
"ObjectName": self.objectName(),
- "items": [i.__getState__() for i in self.painter.items()]
+ "symbols": [i.__getstate__() for i in self.painter.items() if isinstance(i, shapes.NodeItem)],
+ "lines": [i.__getstate__() for i in self.painter.items() if isinstance(i, shapes.Line)],
+ # "lineLabels": [i.__getstate__() for i in self.painter.items() if isinstance(i, shapes.LineLabel)],
+ # "itemLabels": [i.__getstate__() for i in self.painter.items() if isinstance(i, shapes.itemLabel)]
}
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_'])
- graphic.__setstate__(item)
+
+ for item in dict['symbols']:
+ graphic = getattr(shapes, item['_classname_'])()
+ graphic.__setstate__(dict = item)
self.painter.addItem(graphic)
+ graphic.setPos(*item['pos'])
+
+ for item in dict['lines']:
+ line = shapes.Line(QPointF(*item['startPoint']), QPointF(*item['endPoint']))
+ line.__setstate__(dict = item)
+ self.painter.addItem(line)
+
+ self.painter.advance()
+
+ # for item in dict['lineLabels']:
+ # pass
+ # for item in dict['itemLabels']:
+ # pass
\ No newline at end of file