diff options
author | Blaine | 2020-04-22 16:05:50 +0530 |
---|---|---|
committer | Blaine | 2020-04-22 16:05:50 +0530 |
commit | 8713e4293b7297e2f0d96c9439e870fbd934e975 (patch) | |
tree | b8f232f96688355f070b3efe06f4556d7b0a2382 /src | |
parent | 52aa615649d6cefa438fc1d1e813deadb197dac4 (diff) | |
download | Chemical-PFD-8713e4293b7297e2f0d96c9439e870fbd934e975.tar.gz Chemical-PFD-8713e4293b7297e2f0d96c9439e870fbd934e975.tar.bz2 Chemical-PFD-8713e4293b7297e2f0d96c9439e870fbd934e975.zip |
Add save and load feature
Diffstat (limited to 'src')
-rw-r--r-- | src/main/python/main.py | 47 | ||||
-rw-r--r-- | src/main/python/utils/canvas.py | 45 | ||||
-rw-r--r-- | src/main/python/utils/graphics.py | 1 |
3 files changed, 74 insertions, 19 deletions
diff --git a/src/main/python/main.py b/src/main/python/main.py index 41eafb0..7f7c44a 100644 --- a/src/main/python/main.py +++ b/src/main/python/main.py @@ -32,26 +32,35 @@ class appWindow(QMainWindow): self.menuGenerate.addAction("Image", self.saveImage) self.menuGenerate.addAction("Report", self.generateReport) - mainLayout = QGridLayout(self.mainWidget) + # mainLayout = QGridLayout(self.mainWidget) + mainLayout = QHBoxLayout(self.mainWidget) mainLayout.setObjectName("Main Layout") + #Implement tabs self.tabber = QTabWidget(self.mainWidget) self.tabber.setObjectName("Tab windows") self.tabber.setTabsClosable(True) self.tabber.tabCloseRequested.connect(self.closeTab) self.tabber.currentChanged.connect(self.changeTab) # add close action to tabs - self.createToolbar() - mainLayout.addWidget(self.toolbar, 0, 0, -1, 1) - mainLayout.addWidget(self.tabber, 0, 2, -1, 10) + + self.createToolbar() + # mainLayout.addWidget(self.toolbar, 0, 0, -1, 1) + # mainLayout.addWidget(self.tabber, 0, 2, -1, 6) + mainLayout.addWidget(self.toolbar) + mainLayout.addWidget(self.tabber) + #declare main window layout self.mainWidget.setLayout(mainLayout) self.setCentralWidget(self.mainWidget) def changeTab(self, currentIndex): activeTab = self.tabber.widget(currentIndex) - self.sizeComboBox.setCurrentIndex(int(activeTab._canvasSize[1])) - self.ppiComboBox.setCurrentIndex(ppiList.index(str(activeTab._ppi))) + if activeTab: + self.sizeComboBox.setCurrentIndex(sheetDimensionList.index(activeTab._canvasSize)) + self.ppiComboBox.setCurrentIndex(ppiList.index(str(activeTab._ppi))) + print(activeTab.dimensions) + self.tabber.resize(*activeTab.dimensions) def closeTab(self, currentIndex): #todo add save alert @@ -61,6 +70,7 @@ class appWindow(QMainWindow): def createToolbar(self): self.toolbar = QWidget(self.mainWidget) self.toolbar.setObjectName("Toolbar") + self.toolbar.setFixedWidth(200) toolbarLayout = QFormLayout(self.toolbar) self.sizeComboBox = QComboBox() self.sizeComboBox.addItems(sheetDimensionList) @@ -84,31 +94,42 @@ class appWindow(QMainWindow): activeCanvas = self.tabber.currentWidget() if activeCanvas: activeCanvas.canvasSize = size + self.tabber.resize(*activeCanvas.dimensions) def setCanvasPPI(self, ppi): self._defaultPPI = ppi activeCanvas = self.tabber.currentWidget() if activeCanvas: activeCanvas.ppi = ppi + self.tabber.resize(*activeCanvas.dimensions) def newDiagram(self): diagram = canvas(size = self.sizeComboBox.currentIndex(), ppi = self.ppiComboBox.currentIndex()) diagram.setObjectName("New") + self.tabber.resize(*diagram.dimensions) self.tabber.addTab(diagram, "New") def openDiagram(self): - pass + name = QFileDialog.getOpenFileNames(self, 'Open File(s)', '', 'Process Flow Diagram (*pfd)') + if name: + tabs = [] + for files in name[0]: + with open(files,'rb') as file: + tabs += pickle.load(file) + for i in tabs: + self.tabber.addTab(i, i.objectName()) def saveDiagram(self): name = QFileDialog.getSaveFileName(self, 'Save File', 'New Diagram', 'Process Flow Diagram (*.pfd)') - with open(name[0],'w') as file: - for i in range(self.tabber.count()): - file.write(self.tabber.widget(i)) + if name: + with open(name[0],'wb') as file: + tabs = [] + for i in range(self.tabber.count()): + tabs.append(self.tabber.widget(i)) + pickle.dump(tabs, file) def saveImage(self): - # activeDiagram = QGraphicsScene() - activeDiagram = self.tabber.currentWidget() - activeDiagram.painter.addEllipse(10, 10, 100, 100) + pass def generateReport(self): pass 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) diff --git a/src/main/python/utils/graphics.py b/src/main/python/utils/graphics.py new file mode 100644 index 0000000..fc80254 --- /dev/null +++ b/src/main/python/utils/graphics.py @@ -0,0 +1 @@ +pass
\ No newline at end of file |