Skip to content
Snippets Groups Projects

Add scheduler GUI

Merged Oscar Gustafsson requested to merge scheduler-gui into master
6 files
+ 268
106
Compare changes
  • Side-by-side
  • Inline
Files
6
@@ -30,29 +30,30 @@ from qtpy.QtCore import (
# B-ASIC
import logger
from graphics_graph_event import GraphicsGraphEvent
class GraphicsAxis(QGraphicsItemGroup):
class GraphicsAxisItem(QGraphicsItemGroup, GraphicsGraphEvent):
_scale: float = 1.0
_width: float
_height: float
_x_indent: float
_axis: dict[str: Any]
Type: int
_scale: float = 1.0 # static, changed from MainWindow
_width: float
_height: float
_dy_height: float
_x_indent: float
_axis: dict[str, QGraphicsItemGroup|QGraphicsLineItem]
def __init__(self, width: float = 10.0, height: float = 10.0, x_indent: float = 2.0, parent: QGraphicsItem = None):
super().__init__(parent)
self._dy_height = 5/self._scale
self._axis = {}
self.Type = 10 # QGraphicsItemGroup.Type == 10
self.setFlag(QGraphicsItem.ItemIsMovable)
self.setFlag(QGraphicsItem.ItemIsSelectable)
self.setAcceptHoverEvents(True)
self.update(width, height, x_indent)
def type(self) -> int:
return self.Type
@property
def width(self) -> float:
@@ -89,7 +90,12 @@ class GraphicsAxis(QGraphicsItemGroup):
self._axis[key].setParentItem(None)
del self._axis[key]
pen = QPen(Qt.SolidPattern, 2/self._scale, j = Qt.MiterJoin)
# define pencils
pen = QPen()
pen.setWidthF(2/self._scale)
pen.setJoinStyle(Qt.MiterJoin)
ledger_pen = QPen(Qt.lightGray)
ledger_pen.setWidthF(0) # 0 = cosmetic pen 1px width
# x-axis
self._axis['x'] = QGraphicsItemGroup()
@@ -104,15 +110,17 @@ class GraphicsAxis(QGraphicsItemGroup):
polygon = QPolygonF([p0, p1, p2])
arrow = QGraphicsPolygonItem(polygon)
arrow.setPen(pen)
arrow.setBrush(Qt.SolidPattern)
arrow.setBrush(QBrush(Qt.SolidPattern))
arrow.setPos(self._width, 0)
self._axis['x'].addToGroup(arrow)
# x-axis scale
x_scale = []
x_scale_labels = []
x_ledger = []
self._axis['x_ledger'] = QGraphicsItemGroup()
for i in range(int(self._width/10) + 1):
# vertical x-scale
x_scale.append(QGraphicsLineItem(0, -0.5, 0, 0.5))
x_scale.append(QGraphicsLineItem(0, 0, 0, 0.5))
x_scale[i].setPen(pen)
x_scale[i].setPos(self._x_indent + i*10, 0)
self._axis['x'].addToGroup(x_scale[i])
@@ -122,6 +130,15 @@ class GraphicsAxis(QGraphicsItemGroup):
half_width = x_scale_labels[i].boundingRect().width()/(2*self._scale)
x_scale_labels[i].setPos(self._x_indent + i*10 - half_width, 0.8)
self._axis['x'].addToGroup(x_scale_labels[i])
# vertical x-ledger
x_ledger.append(QGraphicsLineItem(0, 0, 0, self._height))
if i == int(self._width/10):
ledger_pen.setWidthF(2/self._scale)
ledger_pen.setStyle(Qt.DashLine)
ledger_pen.setColor(Qt.black)
x_ledger[i].setPen(ledger_pen)
x_ledger[i].setPos(self._x_indent + i*10, 0)
self._axis['x_ledger'].addToGroup(x_ledger[i])
# x-axis label
label = QGraphicsSimpleTextItem('time')
label.setScale(label.scale() / self._scale)
@@ -130,13 +147,15 @@ class GraphicsAxis(QGraphicsItemGroup):
label.setPos(self._width - half_width + arrow_half_width, 0.8)
self._axis['x'].addToGroup(label)
self._axis['x'].boundingRect()
# add x-axis
self._axis['x'].setPos(0, self._height)
self.addToGroup(self._axis['x'])
# y-axis
self._axis['y'] = QGraphicsLineItem(0, 0, 0, self._height)
self._axis['y'] = QGraphicsLineItem(0, 0, 0, self._height + self._dy_height)
self._axis['y'].setPen(pen)
# add y-axis
# put it all together
self._axis['x'].setPos(0, self._height + self._dy_height)
self._axis['x_ledger'].setPos(0, self._dy_height)
self.addToGroup(self._axis['x_ledger'])
self.addToGroup(self._axis['x'])
self.addToGroup(self._axis['y'])
\ No newline at end of file
Loading