From 6788c5f97042500972bd8169a1cca3c98dbbd32f Mon Sep 17 00:00:00 2001
From: Oscar Gustafsson <oscar.gustafsson@gmail.com>
Date: Mon, 30 Jan 2023 21:57:21 +0100
Subject: [PATCH] Add testing with pyqt5

---
 .gitlab-ci.yml                         | 51 ++++++++++++++++++++++++--
 b_asic/GUI/main_window.py              |  3 +-
 b_asic/scheduler_gui/axes_item.py      |  4 +-
 b_asic/scheduler_gui/main_window.ui    |  2 +-
 b_asic/scheduler_gui/ui_main_window.py |  3 +-
 pyproject.toml                         |  2 +-
 6 files changed, 55 insertions(+), 10 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 5da3c2d7..01bd4f81 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -8,6 +8,9 @@ before_script:
   - python -m pip install --upgrade pip
   - python --version
   - pip install pytest pytest-cov sphinx furo numpydoc pytest-xvfb pytest-qt setuptools_scm sphinx-qt-documentation pytest-xdist pytest-mpl
+  - pip install $QT_API
+  - export PYTEST_QT_API=$QT_API
+  - export QT_API=$QT_API
   # - export CXXFLAGS='--coverage'
   - pip install -ve .
   # Move file, but should be handled by installation
@@ -30,19 +33,59 @@ before_script:
   coverage: /(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/
 
 
-run-test-3.8:
+run-test-3.8-pyside2:
+  variables:
+    QT_API: pyside2
   image: python:3.8
   extends: ".run-test"
 
-run-test-3.9:
+run-test-3.8-pyqt5:
+  variables:
+    QT_API: pyqt5
+  image: python:3.8
+  extends: ".run-test"
+
+run-test-3.9-pyside2:
+  variables:
+    QT_API: pyside2
+  image: python:3.9
+  extends: ".run-test"
+
+run-test-3.9-pyqt5:
+  variables:
+    QT_API: pyqt5
   image: python:3.9
   extends: ".run-test"
 
-run-test-3.10:
+run-test-3.10-pyside2:
+  variables:
+    QT_API: pyside2
+  image: python:3.10
+  extends: ".run-test"
+
+run-test-3.10-pyqt5:
+  variables:
+    QT_API: pyqt5
+  image: python:3.10
+  extends: ".run-test"
+
+run-test-3.10-pyside6:
+  variables:
+    QT_API: pyside6
+  image: python:3.10
+  extends: ".run-test"
+  allow_failure: true
+
+run-test-3.10-pyqt6:
+  variables:
+    QT_API: pyqt6
   image: python:3.10
   extends: ".run-test"
+  allow_failure: true
 
 run-doc-test:
+  variables:
+    QT_API: pyside2
   image: python:3.10
   stage: test
   script:
@@ -53,6 +96,8 @@ run-doc-test:
 #  extends: ".run-test"
 
 pages:
+  variables:
+    QT_API: pyqt5
   stage: deploy
   image: python:3.10
   script:
diff --git a/b_asic/GUI/main_window.py b/b_asic/GUI/main_window.py
index 0a9cc982..942bcd5b 100644
--- a/b_asic/GUI/main_window.py
+++ b/b_asic/GUI/main_window.py
@@ -16,6 +16,7 @@ from qtpy.QtWidgets import (
     QAction,
     QApplication,
     QFileDialog,
+    QGraphicsItem,
     QGraphicsScene,
     QGraphicsTextItem,
     QGraphicsView,
@@ -527,7 +528,7 @@ class MainWindow(QMainWindow):
                 attr_button_scene.moveBy(
                     int(self.scene.width() / 4), int(self.scene.height() / 4)
                 )
-            attr_button_scene.setFlag(attr_button_scene.ItemIsSelectable, True)
+            attr_button_scene.setFlag(QGraphicsItem.ItemIsSelectable, True)
             operation_label = QGraphicsTextItem(op.name, attr_button_scene)
             if not self.is_show_names:
                 operation_label.setOpacity(0)
diff --git a/b_asic/scheduler_gui/axes_item.py b/b_asic/scheduler_gui/axes_item.py
index 39bb40a0..adea4568 100644
--- a/b_asic/scheduler_gui/axes_item.py
+++ b/b_asic/scheduler_gui/axes_item.py
@@ -9,7 +9,7 @@ from math import pi, sin
 from typing import List, Optional, Union
 
 # QGraphics and QPainter imports
-from qtpy.QtCore import QPoint, QPointF, Qt
+from qtpy.QtCore import QPointF, Qt
 from qtpy.QtGui import QBrush, QPen, QPolygonF
 from qtpy.QtWidgets import (
     QGraphicsItem,
@@ -318,7 +318,7 @@ class AxesItem(QGraphicsItemGroup):
             self._append_x_tick()
         pos = self._x_ledger[-1].pos()
         self._x_ledger[-1].setPos(
-            pos + QPoint(self._width, 0)
+            pos + QPointF(self._width, 0)
         )  # move timeline
 
         # y-axis
diff --git a/b_asic/scheduler_gui/main_window.ui b/b_asic/scheduler_gui/main_window.ui
index ca6fcd2c..abec5863 100644
--- a/b_asic/scheduler_gui/main_window.ui
+++ b/b_asic/scheduler_gui/main_window.ui
@@ -57,7 +57,7 @@
         <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
        </property>
        <property name="renderHints">
-        <set>QPainter::HighQualityAntialiasing|QPainter::TextAntialiasing</set>
+        <set>QPainter::Antialiasing|QPainter::TextAntialiasing</set>
        </property>
        <property name="viewportUpdateMode">
         <enum>QGraphicsView::FullViewportUpdate</enum>
diff --git a/b_asic/scheduler_gui/ui_main_window.py b/b_asic/scheduler_gui/ui_main_window.py
index f197afcd..17ff17f7 100644
--- a/b_asic/scheduler_gui/ui_main_window.py
+++ b/b_asic/scheduler_gui/ui_main_window.py
@@ -55,8 +55,7 @@ class Ui_MainWindow(object):
             QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop
         )
         self.view.setRenderHints(
-            QtGui.QPainter.HighQualityAntialiasing
-            | QtGui.QPainter.TextAntialiasing
+            QtGui.QPainter.Antialiasing | QtGui.QPainter.TextAntialiasing
         )
         self.view.setViewportUpdateMode(
             QtWidgets.QGraphicsView.FullViewportUpdate
diff --git a/pyproject.toml b/pyproject.toml
index 32b7026b..180be81b 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -10,7 +10,7 @@ requires-python = ">=3.8"
 dependencies = [
     "numpy",
     "pybind11>=2.3.0",
-    "pyside2",
+    # "pyside2",
     "qtpy",
     "graphviz>=0.19",
     "matplotlib",
-- 
GitLab