diff options
Diffstat (limited to 'src/main/python/utils/fileWindow.py')
-rw-r--r-- | src/main/python/utils/fileWindow.py | 83 |
1 files changed, 45 insertions, 38 deletions
diff --git a/src/main/python/utils/fileWindow.py b/src/main/python/utils/fileWindow.py index f9b3ac5..c850b27 100644 --- a/src/main/python/utils/fileWindow.py +++ b/src/main/python/utils/fileWindow.py @@ -13,7 +13,7 @@ class fileWindow(QMdiSubWindow): canvases. Pre-Defined so that a file can be instantly created without defining the structure again. """ fileCloseEvent = pyqtSignal(int) - fileMinimized = pyqtSignal(QMdiSubWindow) + def __init__(self, parent = None, title = 'New Project', size = 'A4', ppi = '72'): super(fileWindow, self).__init__(parent) self._sideViewTab = None @@ -53,61 +53,49 @@ class fileWindow(QMdiSubWindow): self.splitter.setVisible(False) self.sideView.setVisible(False) - def changeTab(self, currentIndex): - #placeholder function to detect tab change - self.resizeHandler() - - def closeTab(self, currentIndex): - #show save alert on tab close - if dialogs.saveEvent(self): - self.tabber.widget(currentIndex).deleteLater() - self.tabber.removeTab(currentIndex) - - def newDiagram(self): - # helper function to add a new tab on pressing new tab button, using the add tab method on QTabWidget - diagram = canvas(self.tabber) - diagram.setObjectName("New") - index = self.tabber.addTab(diagram, "New") - self.tabber.setCurrentIndex(index) - def resizeHandler(self): - # experimental resize Handler to handle resize on parent resize. + # resize Handler to handle resize cases. parentRect = self.mdiArea().size() current = self.tabber.currentWidget() width, height = current.dimensions + + # if side view is visible, set width to maximum possible, else use minimum requirement if self.sideViewTab: width = parentRect.width() height = parentRect.height() else: width = min(parentRect.width(), width + 100) height = min(parentRect.height(), height + 200) - # width = parentRect.width() - # height = parentRect.height() + + # set element dimensions self.setFixedSize(width, height) self.tabber.resize(width, height) self.tabber.currentWidget().adjustView() - - def adjustCanvasDialog(self): - #helper function to the context menu dialog box - currentTab = self.tabber.currentWidget() - result = dialogs.paperDims(self, currentTab._canvasSize, currentTab._ppi, currentTab.objectName()).exec_() - if result is not None: - currentTab.canvasSize, currentTab.ppi = result - return self.resizeHandler() - else: - return None def contextMenu(self, point): #function to display the right click menu at point of right click menu = QMenu("Context Menu", self) menu.addAction("Adjust Canvas", self.adjustCanvasDialog) - menu.addAction("View Side-By-Side", self.sideViewMode) + menu.addAction("Remove Side View" if self.sideViewTab == self.tabber.currentWidget() else "View Side-By-Side", + self.sideViewMode) menu.exec_(self.mapToGlobal(point)) - def sideViewMode(self): + def sideViewMode(self): + #helper context menu function to toggle side view self.sideViewTab = self.tabber.currentWidget() + def adjustCanvasDialog(self): + #helper context menu function to the context menu dialog box + currentTab = self.tabber.currentWidget() + result = dialogs.paperDims(self, currentTab._canvasSize, currentTab._ppi, currentTab.objectName()).exec_() + if result is not None: + currentTab.canvasSize, currentTab.ppi = result + return self.resizeHandler() + else: + return None + def sideViewToggle(self): + #Function checks if current side view tab is set, and toggles view as required if self.sideViewTab: self.splitter.setVisible(True) self.sideView.setVisible(True) @@ -122,13 +110,9 @@ class fileWindow(QMdiSubWindow): @property def sideViewTab(self): + #returns current active if sideViewTab otherwise None return self._sideViewTab - @sideViewTab.setter - def sideViewTab(self, tab): - self._sideViewTab = None if tab == self.sideViewTab else tab - return self.sideViewToggle() - @property def tabList(self): #returns a list of tabs in the given window @@ -139,6 +123,29 @@ class fileWindow(QMdiSubWindow): #returns the number of tabs in the given window only return self.tabber.count() + @sideViewTab.setter + def sideViewTab(self, tab): + #setter for side view. Also toggles view as necessary + self._sideViewTab = None if tab == self.sideViewTab else tab + return self.sideViewToggle() + + def changeTab(self, currentIndex): + #placeholder function to detect tab change + self.resizeHandler() + + def closeTab(self, currentIndex): + #show save alert on tab close + if dialogs.saveEvent(self): + self.tabber.widget(currentIndex).deleteLater() + self.tabber.removeTab(currentIndex) + + def newDiagram(self): + # helper function to add a new tab on pressing new tab button, using the add tab method on QTabWidget + diagram = canvas(self.tabber) + diagram.setObjectName("New") + index = self.tabber.addTab(diagram, "New") + self.tabber.setCurrentIndex(index) + def saveProject(self, name = None): # called by dialog.saveEvent, saves the current file name = QFileDialog.getSaveFileName(self, 'Save File', f'New Diagram', 'Process Flow Diagram (*.pfd)') if not name else name |