summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorpravindalve2020-06-12 12:49:53 +0530
committerGitHub2020-06-12 12:49:53 +0530
commit7d2d686209e3c0cf7e869088f14678ce309fe7dd (patch)
treefeb418bd92e1da5f6caf0dbe8a1fe93439813e70 /src/main
parentb70d765b41d9de58cbe9411b8420a44a7e1f10e2 (diff)
parentd3bb58bc5d77b02d2102c6a59151cff6beee662f (diff)
downloadChemical-PFD-7d2d686209e3c0cf7e869088f14678ce309fe7dd.tar.gz
Chemical-PFD-7d2d686209e3c0cf7e869088f14678ce309fe7dd.tar.bz2
Chemical-PFD-7d2d686209e3c0cf7e869088f14678ce309fe7dd.zip
Merge pull request #18 from Blakeinstein/master
side view + canvas overhaul
Diffstat (limited to 'src/main')
-rw-r--r--src/main/python/shapes/shapes.py6
-rw-r--r--src/main/python/utils/canvas.py49
-rw-r--r--src/main/python/utils/fileWindow.py42
-rw-r--r--src/main/resources/base/app.qss11
4 files changed, 51 insertions, 57 deletions
diff --git a/src/main/python/shapes/shapes.py b/src/main/python/shapes/shapes.py
index e0263ab..6d06cba 100644
--- a/src/main/python/shapes/shapes.py
+++ b/src/main/python/shapes/shapes.py
@@ -525,10 +525,10 @@ class NodeItem(QGraphicsSvgItem):
:return:
"""
contextMenu = QMenu()
- addLableAction = contextMenu.addAction("add Label")
- # addLableAction.triggered.connect(self.addLabel)
+ addLabelAction = contextMenu.addAction("add Label")
+ # addLabelAction.triggered.connect(self.addLabel)
action = contextMenu.exec_(event.screenPos())
- if action == addLableAction:
+ if action == addLabelAction:
self.label = ItemLabel(event.scenePos(), self)
def __getstate__(self):
diff --git a/src/main/python/utils/canvas.py b/src/main/python/utils/canvas.py
index f37d1f8..480a2e1 100644
--- a/src/main/python/utils/canvas.py
+++ b/src/main/python/utils/canvas.py
@@ -1,7 +1,7 @@
from PyQt5.QtCore import Qt, QPointF
from PyQt5.QtGui import QBrush, QPalette
from PyQt5.QtWidgets import (QFileDialog, QApplication, QHBoxLayout, QMenu,
- QTabWidget, QWidget, QSpacerItem, QStyle)
+ QTabWidget, QWidget, QSpacerItem, QStyle,)
from . import dialogs
from .graphics import customView, customScene
@@ -10,14 +10,14 @@ from .app import shapeGrips, lines
import shapes
-class canvas(QWidget):
+class canvas(customView):
"""
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= 'A0', ppi= '72' , parentMdiArea = None, parentFileWindow = None, landscape=True):
- super(canvas, self).__init__(parent)
+ super(canvas, self).__init__(parent=parent)
#Store values for the canvas dimensions for ease of access, these are here just to be
# manipulated by the setters and getters
@@ -31,53 +31,32 @@ class canvas(QWidget):
#set layout and background color
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
-
- self.layout = QHBoxLayout(self) #create the layout of the canvas, the canvas could just subclass QGView instead
- self.layout.addWidget(self.view, alignment=Qt.AlignCenter)
- self.layout.setContentsMargins(0, 0, 0, 0)
- self.setLayout(self.layout)
+ self.setScene(self.painter)
#set initial paper size for the scene
self.painter.setSceneRect(0, 0, *paperSizes[self._canvasSize][self._ppi])
self.parentMdiArea = parentMdiArea
self.parentFileWindow = parentFileWindow
+ self.customContextMenuRequested.connect(self.sideViewContextMenu)
+ def sideViewContextMenu(self, pos):
+ self.parentFileWindow.sideViewContextMenu(self.mapTo(self.parentFileWindow, pos))
+
def resizeView(self, w, h):
#helper function to resize canvas
self.painter.setSceneRect(0, 0, w, h)
-
+
def adjustView(self):
#utitily to adjust current diagram view
width, height = self.dimensions
- frameWidth = self.view.frameWidth()
+ frameWidth = self.frameWidth()
#update view size
- self.view.setSceneRect(0, 0, width - frameWidth*2, height)
-
- # use the available mdi area, also add padding
- prect = self.parentMdiArea.rect()
- width = width + 20
- height = height + 60
-
- # add scrollbar size to width and height if they are visible, avoids clipping
- if self.view.verticalScrollBar().isVisible():
- width += self.style().pixelMetric(QStyle.PM_ScrollBarExtent)
- if self.view.horizontalScrollBar().isVisible():
- height += self.style().pixelMetric(QStyle.PM_ScrollBarExtent)
-
- #if view is visible use half of available width
- factor = 2 if self.parentFileWindow.sideViewTab is not None else 1
- #use minimum width required to fit the view
- width = min((prect.width() - 60)//factor, width)
- height = min(prect.height() - 120, height)
- #set view dims
- self.view.setFixedWidth(width)
- self.view.setFixedHeight(height)
-
+ self.setSceneRect(0, 0, width - frameWidth*2, height)
+
def resizeEvent(self, event):
#overloaded function to also view size on window update
- self.adjustView()
+ # self.adjustView()
+ pass
def setCanvasSize(self, size):
"""
diff --git a/src/main/python/utils/fileWindow.py b/src/main/python/utils/fileWindow.py
index 28a576e..6d35437 100644
--- a/src/main/python/utils/fileWindow.py
+++ b/src/main/python/utils/fileWindow.py
@@ -2,7 +2,7 @@ from PyQt5.QtCore import Qt, pyqtSignal, QPoint
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import (QFileDialog, QHBoxLayout,
QMdiSubWindow, QMenu, QPushButton, QSizePolicy,
- QSplitter, QWidget, QStyle)
+ QSplitter, QWidget, QStyle, QSizePolicy)
from os import path
from . import dialogs
from .graphics import customView
@@ -38,8 +38,17 @@ class fileWindow(QMdiSubWindow):
self.mainWidget = QWidget(self)
layout = QHBoxLayout(self.mainWidget)
self.createSideViewArea() #create the side view objects
+
+ left = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)
+ left.setHorizontalStretch(1)
+ self.tabber.setSizePolicy(left)
+
+ right = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)
+ right.setHorizontalStretch(1)
+ self.sideView.setSizePolicy(right)
+
layout.addWidget(self.tabber)
- layout.addWidget(self.splitter)
+ # layout.addWidget(self.splitter)
layout.addWidget(self.sideView)
self.mainWidget.setLayout(layout)
self.setWidget(self.mainWidget)
@@ -57,7 +66,7 @@ class fileWindow(QMdiSubWindow):
def createSideViewArea(self):
#creates the side view widgets and sets them to invisible
- self.splitter = QSplitter(Qt.Vertical ,self)
+ # self.splitter = QSplitter(Qt.Vertical ,self)
self.sideView = customView(parent = self)
self.sideView.setInteractive(False)
self.sideViewCloseButton = QPushButton('×', self.sideView)
@@ -66,10 +75,11 @@ class fileWindow(QMdiSubWindow):
self.sideViewCloseButton.setFixedSize(20, 20)
self.moveSideViewCloseButton()
self.sideViewCloseButton.clicked.connect(lambda: setattr(self, 'sideViewTab', None))
- self.splitter.setVisible(False)
+ # self.splitter.setVisible(False)
self.sideView.setVisible(False)
self.sideView.setContextMenuPolicy(Qt.CustomContextMenu)
self.sideView.customContextMenuRequested.connect(self.sideViewContextMenu)
+ self.sideView.resize(self.width()//2 - self.sideView.frameWidth(), self.height())
def resizeHandler(self):
# resize Handler to handle resize cases.
@@ -77,23 +87,20 @@ class fileWindow(QMdiSubWindow):
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()
- self.moveSideViewCloseButton()
-
+ width2, height2 = self.sideViewTab.dimensions
+ width = min(parentRect.width(), width + width2)
+ height = min(parentRect.height(), height + height2)
else:
width = min(parentRect.width(), width + 100)
- height = min(parentRect.height(), height + 200)
+ height = min(parentRect.height(), height + 150)
if len(self.parent().parent().subWindowList()) > 1:
height -= 20
- # set element dimensions
+ # set element dimensions
self.setFixedSize(width, height)
- self.tabber.resize(width, height)
- self.tabber.currentWidget().adjustView()
+ current.adjustView()
def contextMenu(self, point):
#function to display the right click menu at point of right click
@@ -118,16 +125,15 @@ class fileWindow(QMdiSubWindow):
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.splitter.setVisible(True)
self.sideView.setVisible(True)
self.sideView.setScene(self.tabber.currentWidget().painter)
- self.moveSideViewCloseButton()
self.resizeHandler()
return True
else:
- self.splitter.setVisible(False)
- self.sideView.setVisible(False)
- self.resizeHandler()
+ # self.splitter.setVisible(False)
+ self.sideView.setVisible(False)
+ self.resizeHandler()
return False
def moveSideViewCloseButton(self):
diff --git a/src/main/resources/base/app.qss b/src/main/resources/base/app.qss
index a733a50..e0b5140 100644
--- a/src/main/resources/base/app.qss
+++ b/src/main/resources/base/app.qss
@@ -211,7 +211,7 @@ QToolButton:checked {
}
sectionLabel{
- border-color: #BBD0E9;
+ border-color: #00B8B8;
border-style: solid;
border-width: 0px 0px 2px 0px;
padding-bottom: 3px;
@@ -256,3 +256,12 @@ customTabWidget::pane {
padding: 1px;
background-color: #E6E6E3;
}
+canvas{
+ bottom: -20px;
+}
+
+customTabWidget customView {
+ border-width: 0px;
+ padding: 5px;
+ border-radius: 2px;
+} \ No newline at end of file