Skip to content
Snippets Groups Projects

Add scheduler GUI

Merged Oscar Gustafsson requested to merge scheduler-gui into master
Files
3
@@ -2,7 +2,8 @@
# -*- coding: utf-8 -*-
"""B-ASIC Scheduler-gui Graphics Axes Item Module.
Contains the scheduler-gui GraphicsAxesItem class for drawing and maintain the axes in a graph.
Contains the scheduler-gui GraphicsAxesItem class for drawing and maintain the
axes in a graph.
"""
from typing import Union, Optional, List
from math import sin, pi
@@ -44,10 +45,15 @@ class GraphicsAxesItem(QGraphicsItemGroup):
def __init__(self, width: int, height: int,
width_indent: Optional[float] = 0.2, height_indent: Optional[float] = 0.2,
width_padding: Optional[float] = 0.6, height_padding: Optional[float] = 0.5,
width_indent: Optional[float] = 0.2,
height_indent: Optional[float] = 0.2,
width_padding: Optional[float] = 0.6,
height_padding: Optional[float] = 0.5,
parent: Optional[QGraphicsItem] = None):
"""Constructs a GraphicsAxesItem. 'parent' is passed to QGraphicsItemGroup's constructor."""
"""
Constructs a GraphicsAxesItem.
*parent* is passed to QGraphicsItemGroup's constructor.
"""
super().__init__(parent=parent)
assert width >= 0, f"'width' greater or equal to 0 expected, got: {width}."
assert height >= 0, f"'height' greater or equal to 0 expected, got: {height}."
@@ -198,19 +204,23 @@ class GraphicsAxesItem(QGraphicsItemGroup):
self._x_scale_labels.insert(index, QGraphicsSimpleTextItem(str(index)))
self._x_scale_labels[index].setScale(1 / self._scale)
x_pos = self._width_indent + index
x_pos -= self.mapRectFromItem(self._x_scale_labels[index], self._x_scale_labels[index].boundingRect()).width()/2
x_pos -= self.mapRectFromItem(
self._x_scale_labels[index],
self._x_scale_labels[index].boundingRect()).width()/2
pos = self.mapToScene(QPointF(x_pos, self._x_label_offset))
self._x_scale_labels[index].setPos(pos)
self.addToGroup(self._x_scale_labels[index])
self._x_ledger.insert(
index, GraphicsTimelineItem(0, 0, 0, -(self._height_indent +
self._height +
self._height_padding)))
# x-axis vertical ledger
if is_timeline: # last line is a timeline
self._x_ledger.insert(index, GraphicsTimelineItem(0, 0, 0, -(self._height_indent + self._height + self._height_padding)))
if is_timeline: # last line is a timeline
self._x_ledger[index].setPen(self._timeline_pen)
self._x_ledger[index].set_text_scale(1.05/self._scale)
self._register_event_item(self._x_ledger[index])
else:
self._x_ledger.insert(index, QGraphicsLineItem(0, 0, 0, -(self._height_indent + self._height + self._height_padding)))
self._x_ledger[index].setPen(self._ledger_pen)
pos = self.mapToScene(QPointF(self._width_indent + index, 0))
self._x_ledger[index].setPos(pos)
@@ -238,10 +248,10 @@ class GraphicsAxesItem(QGraphicsItemGroup):
# x-axis arrow
arrow_size = 8/self._scale
p0 = QPointF(0, sin(pi/6) * arrow_size)
p1 = QPointF(arrow_size, 0)
p2 = QPointF(0, -sin(pi/6) * arrow_size)
polygon = QPolygonF([p0, p1, p2])
point_0 = QPointF(0, sin(pi/6) * arrow_size)
point_1 = QPointF(arrow_size, 0)
point_2 = QPointF(0, -sin(pi/6) * arrow_size)
polygon = QPolygonF([point_0, point_1, point_2])
self._x_arrow.setPolygon(polygon)
self._x_arrow.setPen(self._base_pen)
self._x_arrow.setBrush(QBrush(Qt.SolidPattern))
@@ -251,9 +261,11 @@ class GraphicsAxesItem(QGraphicsItemGroup):
# x-axis label
self._x_label.setText('time')
self._x_label.setScale(1 / self._scale)
x_pos = self._width_indent + 0 + self._width_padding # end of x-axis
x_pos += self.mapRectFromItem(self._x_arrow, self._x_arrow.boundingRect()).width()/2 # + half arrow width
x_pos -= self.mapRectFromItem(self._x_label, self._x_label.boundingRect()).width()/2 # - center of label
x_pos = self._width_indent + 0 + self._width_padding # end of x-axis
x_pos += self.mapRectFromItem(self._x_arrow,
self._x_arrow.boundingRect()).width()/2 # + half arrow width
x_pos -= self.mapRectFromItem(self._x_label,
self._x_label.boundingRect()).width()/2 # - center of label
self._x_label.setPos(x_pos, self._x_label_offset)
self.addToGroup(self._x_label)
@@ -265,6 +277,8 @@ class GraphicsAxesItem(QGraphicsItemGroup):
self._x_ledger[-1].setPos(pos + QPoint(self._width, 0)) # move timeline
# y-axis
self._y_axis.setLine(0, 0, 0, -(self._height_indent + self._height + self._height_padding + 0.05))
self._y_axis.setLine(0, 0, 0,
-(self._height_indent + self._height +
self._height_padding + 0.05))
self._y_axis.setPen(self._base_pen)
self.addToGroup(self._y_axis)
Loading