diff --git a/README.md b/README.md index ea1e82e..75e2c83 100755 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Read installation instructions: The general approach is simple: -1. Install PyQt5 for Python 3 using your OS' package manager (e.g. APT). +1. Install PyQt6 for Python 3 using your OS' package manager (e.g. APT). 2. Install the application itself from Git via PIP: `pip3 install git+https://github.com/DroneCAN/gui_tool@master` (it is not necessary to clone this repository manually). @@ -39,7 +39,7 @@ but it may come in handy when using the embedded IPython console. ```bash sudo apt-get install -y python3-pip python3-setuptools python3-wheel -sudo apt-get install -y python3-numpy python3-pyqt5 python3-pyqt5.qtsvg git-core +sudo apt-get install -y python3-numpy python3-pyqt6 python3-pyqt6.qtsvg git-core python3 -m pip install git+https://github.com/DroneCAN/gui_tool@master ``` @@ -58,7 +58,7 @@ If you're still unable to install the package, please open a ticket. #### Fedora 29+ ```bash -sudo dnf install python3-PyQt5 +sudo dnf install python3-PyQt6 python3 -m pip install git+https://github.com/DroneCAN/gui_tool@master ``` @@ -87,7 +87,7 @@ as these ports are supported much better at the moment. ```bash brew install python3 brew postinstall python3 -pip3 install PyQt5 +pip3 install PyQt6 pip3 install git+https://github.com/DroneCAN/gui_tool@master dronecan_gui_tool ``` @@ -100,7 +100,7 @@ If you're prompted to install Command Line Developer Tools, agree. ```bash sudo port selfupdate -sudo port install curl-ca-bundle py35-pip py35-pyqt5 py35-numpy +sudo port install curl-ca-bundle py35-pip py35-pyqt6 py35-numpy python3.5 -m pip install git+https://github.com/DroneCAN/gui_tool@master ``` diff --git a/dronecan_gui_tool/active_data_type_detector.py b/dronecan_gui_tool/active_data_type_detector.py index 66f59da..0d2786c 100644 --- a/dronecan_gui_tool/active_data_type_detector.py +++ b/dronecan_gui_tool/active_data_type_detector.py @@ -8,7 +8,7 @@ import logging import dronecan -from PyQt5.QtCore import pyqtSignal, QObject +from PyQt6.QtCore import pyqtSignal, QObject logger = logging.getLogger(__name__) diff --git a/dronecan_gui_tool/main.py b/dronecan_gui_tool/main.py index f135fe7..01dcd78 100644 --- a/dronecan_gui_tool/main.py +++ b/dronecan_gui_tool/main.py @@ -79,9 +79,9 @@ import dronecan -from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QSplitter, QAction -from PyQt5.QtGui import QKeySequence, QDesktopServices -from PyQt5.QtCore import QTimer, Qt, QUrl +from PyQt6.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QSplitter +from PyQt6.QtGui import QKeySequence, QDesktopServices, QAction +from PyQt6.QtCore import QTimer, Qt, QUrl from .setup_window import run_setup_window from .active_data_type_detector import ActiveDataTypeDetector diff --git a/dronecan_gui_tool/panels/RTK_panel.py b/dronecan_gui_tool/panels/RTK_panel.py index 7e4aab9..5499607 100644 --- a/dronecan_gui_tool/panels/RTK_panel.py +++ b/dronecan_gui_tool/panels/RTK_panel.py @@ -8,9 +8,9 @@ import dronecan from functools import partial -from PyQt5.QtWidgets import QGridLayout, QWidget, QLabel, QDialog, \ +from PyQt6.QtWidgets import QGridLayout, QWidget, QLabel, QDialog, \ QVBoxLayout, QGroupBox -from PyQt5.QtCore import Qt, QTimer +from PyQt6.QtCore import Qt, QTimer from ..widgets import get_icon from ..widgets import table_display from . import rtcm3 diff --git a/dronecan_gui_tool/panels/RemoteID_panel.py b/dronecan_gui_tool/panels/RemoteID_panel.py index 935eb5e..662c32a 100644 --- a/dronecan_gui_tool/panels/RemoteID_panel.py +++ b/dronecan_gui_tool/panels/RemoteID_panel.py @@ -8,9 +8,9 @@ import dronecan from functools import partial -from PyQt5.QtWidgets import QVBoxLayout, QWidget, QLabel, QDialog, \ +from PyQt6.QtWidgets import QVBoxLayout, QWidget, QLabel, QDialog, \ QPlainTextEdit, QPushButton, QLineEdit, QFileDialog, QComboBox, QHBoxLayout -from PyQt5.QtCore import QTimer, Qt +from PyQt6.QtCore import QTimer, Qt from logging import getLogger from ..widgets import make_icon_button, get_icon, get_monospace_font, directory_selection import random diff --git a/dronecan_gui_tool/panels/actuator_panel.py b/dronecan_gui_tool/panels/actuator_panel.py index 7265dd1..fb03941 100644 --- a/dronecan_gui_tool/panels/actuator_panel.py +++ b/dronecan_gui_tool/panels/actuator_panel.py @@ -8,9 +8,9 @@ import dronecan from functools import partial -from PyQt5.QtWidgets import QVBoxLayout, QHBoxLayout, QWidget, QLabel, QDialog, QSlider, QSpinBox, QDoubleSpinBox, QCheckBox, \ +from PyQt6.QtWidgets import QVBoxLayout, QHBoxLayout, QWidget, QLabel, QDialog, QSlider, QSpinBox, QDoubleSpinBox, QCheckBox, \ QPlainTextEdit -from PyQt5.QtCore import QTimer, Qt +from PyQt6.QtCore import QTimer, Qt from logging import getLogger from ..widgets import make_icon_button, get_icon, get_monospace_font diff --git a/dronecan_gui_tool/panels/esc_panel.py b/dronecan_gui_tool/panels/esc_panel.py index 5056b99..b558da0 100644 --- a/dronecan_gui_tool/panels/esc_panel.py +++ b/dronecan_gui_tool/panels/esc_panel.py @@ -8,12 +8,12 @@ import dronecan from functools import partial -from PyQt5.QtWidgets import QVBoxLayout, QHBoxLayout, QWidget, QLabel, QDialog, QSlider, QSpinBox, QDoubleSpinBox, \ +from PyQt6.QtWidgets import QVBoxLayout, QHBoxLayout, QWidget, QLabel, QDialog, QSlider, QSpinBox, QDoubleSpinBox, \ QPlainTextEdit, QCheckBox -from PyQt5.QtCore import QTimer, Qt +from PyQt6.QtCore import QTimer, Qt from logging import getLogger from ..widgets import make_icon_button, get_icon, get_monospace_font -import sip +from PyQt6 import sip import time import math diff --git a/dronecan_gui_tool/panels/hobbywing_esc.py b/dronecan_gui_tool/panels/hobbywing_esc.py index c51ef97..bbeb795 100644 --- a/dronecan_gui_tool/panels/hobbywing_esc.py +++ b/dronecan_gui_tool/panels/hobbywing_esc.py @@ -8,9 +8,9 @@ import dronecan from functools import partial -from PyQt5.QtWidgets import QVBoxLayout, QWidget, QLabel, QDialog, \ +from PyQt6.QtWidgets import QVBoxLayout, QWidget, QLabel, QDialog, \ QPlainTextEdit, QPushButton, QLineEdit, QFileDialog, QComboBox, QHBoxLayout, QSpinBox -from PyQt5.QtCore import QTimer, Qt +from PyQt6.QtCore import QTimer, Qt from logging import getLogger from ..widgets import make_icon_button, get_icon, get_monospace_font from ..widgets import table_display diff --git a/dronecan_gui_tool/panels/rc_panel.py b/dronecan_gui_tool/panels/rc_panel.py index 91f878a..2f3df95 100644 --- a/dronecan_gui_tool/panels/rc_panel.py +++ b/dronecan_gui_tool/panels/rc_panel.py @@ -8,11 +8,11 @@ import dronecan from functools import partial -from PyQt5.QtWidgets import QWidget, QLabel, QDialog, \ +from PyQt6.QtWidgets import QWidget, QLabel, QDialog, \ QVBoxLayout, QHBoxLayout, QSlider, QSpinBox, QPushButton -from PyQt5.QtGui import QPainter, QPen, QColor, QFont -from PyQt5.QtCore import Qt, pyqtSignal, QPointF, QRectF -from PyQt5 import sip +from PyQt6.QtGui import QPainter, QPen, QColor, QFont +from PyQt6.QtCore import Qt, pyqtSignal, QPointF, QRectF +from PyQt6 import sip from ..widgets import get_icon __all__ = 'PANEL_NAME', 'spawn', 'get_icon' diff --git a/dronecan_gui_tool/panels/serial_panel.py b/dronecan_gui_tool/panels/serial_panel.py index 4a8c68a..fca89eb 100644 --- a/dronecan_gui_tool/panels/serial_panel.py +++ b/dronecan_gui_tool/panels/serial_panel.py @@ -8,10 +8,10 @@ import dronecan from functools import partial -from PyQt5.QtWidgets import QGridLayout, QWidget, QLabel, QDialog, \ +from PyQt6.QtWidgets import QGridLayout, QWidget, QLabel, QDialog, \ QTableWidget, QVBoxLayout, QGroupBox, QTableWidgetItem, QLineEdit, \ QComboBox, QHBoxLayout, QSpinBox, QCheckBox -from PyQt5.QtCore import Qt, QTimer +from PyQt6.QtCore import Qt, QTimer from ..widgets import get_icon from . import rtcm3 import time diff --git a/dronecan_gui_tool/panels/stats_panel.py b/dronecan_gui_tool/panels/stats_panel.py index 587e302..5f9f1f2 100644 --- a/dronecan_gui_tool/panels/stats_panel.py +++ b/dronecan_gui_tool/panels/stats_panel.py @@ -8,9 +8,9 @@ import dronecan from functools import partial -from PyQt5.QtWidgets import QGridLayout, QWidget, QLabel, QDialog, \ +from PyQt6.QtWidgets import QGridLayout, QWidget, QLabel, QDialog, \ QVBoxLayout, QGroupBox, QLineEdit, QPushButton -from PyQt5.QtCore import Qt, QTimer +from PyQt6.QtCore import Qt, QTimer from ..widgets import get_icon from ..widgets import table_display from . import rtcm3 diff --git a/dronecan_gui_tool/setup_window.py b/dronecan_gui_tool/setup_window.py index 1cd6049..4c7b830 100644 --- a/dronecan_gui_tool/setup_window.py +++ b/dronecan_gui_tool/setup_window.py @@ -12,10 +12,10 @@ import threading import copy from .widgets import show_error, get_monospace_font, directory_selection -from PyQt5.QtWidgets import QComboBox, QCompleter, QDialog, QDirModel, QFileDialog, QGroupBox, QHBoxLayout, QLabel, \ +from PyQt6.QtWidgets import QComboBox, QCompleter, QDialog, QFileDialog, QGroupBox, QHBoxLayout, QLabel, \ QLineEdit, QPushButton, QSpinBox, QVBoxLayout, QGridLayout, QCheckBox, QWidget -from PyQt5.QtCore import Qt, QTimer -from PyQt5.QtGui import QIntValidator +from PyQt6.QtCore import Qt, QTimer +from PyQt6.QtGui import QIntValidator from logging import getLogger from collections import OrderedDict from itertools import count @@ -95,7 +95,7 @@ def list_ifaces(): return out else: # Windows, Mac, whatever - from PyQt5 import QtSerialPort + from PyQt6 import QtSerialPort out = OrderedDict() for port in QtSerialPort.QSerialPortInfo.availablePorts(): diff --git a/dronecan_gui_tool/widgets/__init__.py b/dronecan_gui_tool/widgets/__init__.py index bc319a4..62bbeaf 100644 --- a/dronecan_gui_tool/widgets/__init__.py +++ b/dronecan_gui_tool/widgets/__init__.py @@ -10,10 +10,10 @@ import re import queue import importlib.resources -from PyQt5.QtWidgets import QTableWidget, QTableWidgetItem, QAbstractItemView, QHeaderView, QApplication, QWidget, \ +from PyQt6.QtWidgets import QTableWidget, QTableWidgetItem, QAbstractItemView, QHeaderView, QApplication, QWidget, \ QComboBox, QCompleter, QPushButton, QHBoxLayout, QVBoxLayout, QMessageBox, QLineEdit -from PyQt5.QtCore import Qt, QTimer, QStringListModel -from PyQt5.QtGui import QColor, QKeySequence, QFont, QFontInfo, QIcon +from PyQt6.QtCore import Qt, QTimer, QStringListModel +from PyQt6.QtGui import QColor, QKeySequence, QFont, QFontInfo, QIcon from logging import getLogger import qtawesome from functools import partial diff --git a/dronecan_gui_tool/widgets/about_window.py b/dronecan_gui_tool/widgets/about_window.py index 1a3b065..4ae739a 100644 --- a/dronecan_gui_tool/widgets/about_window.py +++ b/dronecan_gui_tool/widgets/about_window.py @@ -9,10 +9,10 @@ import dronecan from ..version import __version__ from . import get_icon, get_app_icon -from PyQt5.QtWidgets import QDialog, QTableWidget, QVBoxLayout, QHBoxLayout, QPushButton, QLabel, \ +from PyQt6.QtWidgets import QDialog, QTableWidget, QVBoxLayout, QHBoxLayout, QPushButton, QLabel, \ QTableWidgetItem, QHeaderView -from PyQt5.QtGui import QIcon -from PyQt5.QtCore import Qt, PYQT_VERSION_STR, QSize +from PyQt6.QtGui import QIcon +from PyQt6.QtCore import Qt, PYQT_VERSION_STR, QSize ABOUT_TEXT = (''' @@ -41,7 +41,7 @@ def _list_3rd_party(): return [ ('PyDroneCAN', dronecan.__version__, 'MIT', 'http://dronecan.org/Implementations/Pydronecan'), - ('PyQt5', PYQT_VERSION_STR, 'GPLv3', 'https://www.riverbankcomputing.com/software/pyqt/intro'), + ('PyQt6', PYQT_VERSION_STR, 'GPLv3', 'https://www.riverbankcomputing.com/software/pyqt/intro'), ('PyQtGraph', pyqtgraph.__version__, 'MIT', 'http://www.pyqtgraph.org/'), ('QtAwesome', qtawesome.__version__, 'MIT', 'https://github.com/spyder-ide/qtawesome'), ('QtConsole', qtconsole_version, 'BSD', 'http://jupyter.org'), diff --git a/dronecan_gui_tool/widgets/bus_monitor/__init__.py b/dronecan_gui_tool/widgets/bus_monitor/__init__.py index b21be17..0bf1db2 100644 --- a/dronecan_gui_tool/widgets/bus_monitor/__init__.py +++ b/dronecan_gui_tool/widgets/bus_monitor/__init__.py @@ -11,8 +11,8 @@ import queue import logging import multiprocessing -from PyQt5.QtWidgets import QApplication -from PyQt5.QtCore import QTimer +from PyQt6.QtWidgets import QApplication +from PyQt6.QtCore import QTimer from .window import BusMonitorWindow logger = logging.getLogger(__name__) diff --git a/dronecan_gui_tool/widgets/bus_monitor/window.py b/dronecan_gui_tool/widgets/bus_monitor/window.py index 8e11366..889f88d 100644 --- a/dronecan_gui_tool/widgets/bus_monitor/window.py +++ b/dronecan_gui_tool/widgets/bus_monitor/window.py @@ -12,10 +12,10 @@ from functools import partial import dronecan from dronecan.driver import CANFrame -from PyQt5.QtWidgets import QMainWindow, QHeaderView, QLabel, QSplitter, QSizePolicy, QWidget, QHBoxLayout, \ - QPlainTextEdit, QDialog, QVBoxLayout, QMenu, QAction -from PyQt5.QtGui import QColor, QIcon, QTextOption -from PyQt5.QtCore import Qt, QTimer +from PyQt6.QtWidgets import QMainWindow, QHeaderView, QLabel, QSplitter, QSizePolicy, QWidget, QHBoxLayout, \ + QPlainTextEdit, QDialog, QVBoxLayout, QMenu +from PyQt6.QtGui import QColor, QIcon, QTextOption, QAction +from PyQt6.QtCore import Qt, QTimer from pyqtgraph import PlotWidget, mkPen from logging import getLogger from .. import BasicTable, map_7bit_to_color, RealtimeLogWidget, get_monospace_font, get_icon, flash, get_app_icon, \ diff --git a/dronecan_gui_tool/widgets/can_adapter_control_panel/__init__.py b/dronecan_gui_tool/widgets/can_adapter_control_panel/__init__.py index 1d55cd1..c2ab31b 100644 --- a/dronecan_gui_tool/widgets/can_adapter_control_panel/__init__.py +++ b/dronecan_gui_tool/widgets/can_adapter_control_panel/__init__.py @@ -6,7 +6,7 @@ # Author: Pavel Kirienko # -from PyQt5.QtWidgets import QProgressDialog, QMessageBox +from PyQt6.QtWidgets import QProgressDialog, QMessageBox from . import slcan_cli diff --git a/dronecan_gui_tool/widgets/can_adapter_control_panel/slcan_cli.py b/dronecan_gui_tool/widgets/can_adapter_control_panel/slcan_cli.py index bc81a27..08ed043 100644 --- a/dronecan_gui_tool/widgets/can_adapter_control_panel/slcan_cli.py +++ b/dronecan_gui_tool/widgets/can_adapter_control_panel/slcan_cli.py @@ -8,9 +8,9 @@ import re import os -from PyQt5.QtWidgets import QLabel, QDoubleSpinBox, QHBoxLayout, QVBoxLayout, QDialog, QTabWidget, QWidget, \ +from PyQt6.QtWidgets import QLabel, QDoubleSpinBox, QHBoxLayout, QVBoxLayout, QDialog, QTabWidget, QWidget, \ QCheckBox, QStatusBar, QHeaderView, QTableWidgetItem, QSpinBox, QLineEdit, QComboBox, QCompleter, QPlainTextEdit -from PyQt5.QtCore import QTimer, Qt +from PyQt6.QtCore import QTimer, Qt from logging import getLogger import yaml diff --git a/dronecan_gui_tool/widgets/console.py b/dronecan_gui_tool/widgets/console.py index 4abb986..3910174 100644 --- a/dronecan_gui_tool/widgets/console.py +++ b/dronecan_gui_tool/widgets/console.py @@ -8,8 +8,8 @@ import sys import logging -from PyQt5.QtWidgets import QDialog, QVBoxLayout, QHBoxLayout, QComboBox, QLabel, QCheckBox -from PyQt5.QtCore import QTimer, Qt +from PyQt6.QtWidgets import QDialog, QVBoxLayout, QHBoxLayout, QComboBox, QLabel, QCheckBox +from PyQt6.QtCore import QTimer, Qt logger = logging.getLogger(__name__) diff --git a/dronecan_gui_tool/widgets/directory_selection.py b/dronecan_gui_tool/widgets/directory_selection.py index a1ebaf2..6de303f 100644 --- a/dronecan_gui_tool/widgets/directory_selection.py +++ b/dronecan_gui_tool/widgets/directory_selection.py @@ -1,5 +1,6 @@ -from PyQt5.QtWidgets import QGroupBox, QLineEdit, QCompleter, QPushButton, QDirModel, QHBoxLayout, QFileDialog -from PyQt5.QtCore import Qt +from PyQt6.QtWidgets import QGroupBox, QLineEdit, QCompleter, QPushButton, QHBoxLayout, QFileDialog +from PyQt6.QtCore import Qt, QDir +from PyQt6.QtGui import QFileSystemModel class DirectorySelectionWidget(QGroupBox): def __init__(self, parent, label, path=None, directory_only=False): @@ -9,8 +10,10 @@ def __init__(self, parent, label, path=None, directory_only=False): dir_textbox.setText(self._selection) dir_text_completer = QCompleter(self) + model = QFileSystemModel(dir_text_completer) + model.setRootPath(QDir.rootPath()) dir_text_completer.setCaseSensitivity(Qt.CaseSensitive) - dir_text_completer.setModel(QDirModel(self)) + dir_text_completer.setModel(model) dir_textbox.setCompleter(dir_text_completer) def on_edit(): diff --git a/dronecan_gui_tool/widgets/dynamic_node_id_allocator.py b/dronecan_gui_tool/widgets/dynamic_node_id_allocator.py index 92fba2a..e371382 100644 --- a/dronecan_gui_tool/widgets/dynamic_node_id_allocator.py +++ b/dronecan_gui_tool/widgets/dynamic_node_id_allocator.py @@ -7,9 +7,10 @@ # import dronecan -from PyQt5.QtWidgets import QGroupBox, QVBoxLayout, QHBoxLayout, QHeaderView, QPushButton, QFileDialog, \ - QCompleter, QDirModel -from PyQt5.QtCore import QTimer +from PyQt6.QtWidgets import QGroupBox, QVBoxLayout, QHBoxLayout, QHeaderView, QPushButton, QFileDialog, \ + QCompleter +from PyQt6.QtCore import QTimer, QDir +from PyQt6.QtGui import QFileSystemModel from logging import getLogger from . import BasicTable, get_monospace_font, get_icon, show_error, CommitableComboBoxWithHistory, make_icon_button @@ -62,7 +63,9 @@ def __init__(self, parent, node, node_monitor): on_clicked=self._on_select_database_file) db_file_completer = QCompleter() - db_file_completer.setModel(QDirModel(db_file_completer)) + model = QFileSystemModel(db_file_completer) + model.setRootPath(QDir.rootPath()) + db_file_completer.setModel(model) self._database_file.setCompleter(db_file_completer) self._sync_gui() diff --git a/dronecan_gui_tool/widgets/file_server.py b/dronecan_gui_tool/widgets/file_server.py index cd133c7..2382741 100644 --- a/dronecan_gui_tool/widgets/file_server.py +++ b/dronecan_gui_tool/widgets/file_server.py @@ -13,8 +13,9 @@ import zlib import base64 import struct -from PyQt5.QtWidgets import QGroupBox, QVBoxLayout, QHBoxLayout, QWidget, QDirModel, QCompleter, QFileDialog, QLabel -from PyQt5.QtCore import QTimer +from PyQt6.QtWidgets import QGroupBox, QVBoxLayout, QHBoxLayout, QWidget, QCompleter, QFileDialog, QLabel +from PyQt6.QtCore import QTimer, QDir +from PyQt6.QtGui import QFileSystemModel from logging import getLogger from . import make_icon_button, CommitableComboBoxWithHistory, get_icon, flash, LabelWithIcon @@ -42,7 +43,9 @@ def __init__(self, parent, default=None): on_clicked=lambda: self.on_remove(self)) completer = QCompleter(self) - completer.setModel(QDirModel(completer)) + model = QFileSystemModel(completer) + model.setRootPath(QDir.rootPath()) + completer.setModel(model) self._path_bar = CommitableComboBoxWithHistory(self) if default: diff --git a/dronecan_gui_tool/widgets/local_node.py b/dronecan_gui_tool/widgets/local_node.py index 73078c2..73a73d8 100644 --- a/dronecan_gui_tool/widgets/local_node.py +++ b/dronecan_gui_tool/widgets/local_node.py @@ -7,8 +7,8 @@ # import dronecan -from PyQt5.QtWidgets import QGroupBox, QLabel, QSpinBox, QHBoxLayout, QCheckBox -from PyQt5.QtCore import QTimer +from PyQt6.QtWidgets import QGroupBox, QLabel, QSpinBox, QHBoxLayout, QCheckBox +from PyQt6.QtCore import QTimer from logging import getLogger from . import make_icon_button, flash diff --git a/dronecan_gui_tool/widgets/log_message_display.py b/dronecan_gui_tool/widgets/log_message_display.py index 8cb2341..b66b7b2 100644 --- a/dronecan_gui_tool/widgets/log_message_display.py +++ b/dronecan_gui_tool/widgets/log_message_display.py @@ -8,8 +8,8 @@ import dronecan import datetime -from PyQt5.QtWidgets import QGroupBox, QVBoxLayout, QHBoxLayout, QHeaderView, QPushButton, QLabel -from PyQt5.QtCore import Qt +from PyQt6.QtWidgets import QGroupBox, QVBoxLayout, QHBoxLayout, QHeaderView, QPushButton, QLabel +from PyQt6.QtCore import Qt from logging import getLogger from . import BasicTable, RealtimeLogWidget diff --git a/dronecan_gui_tool/widgets/node_monitor.py b/dronecan_gui_tool/widgets/node_monitor.py index 64cf43f..7c5806e 100644 --- a/dronecan_gui_tool/widgets/node_monitor.py +++ b/dronecan_gui_tool/widgets/node_monitor.py @@ -9,8 +9,8 @@ import datetime import dronecan from . import BasicTable, get_monospace_font -from PyQt5.QtWidgets import QGroupBox, QVBoxLayout, QHeaderView, QLabel -from PyQt5.QtCore import Qt, QTimer, pyqtSignal +from PyQt6.QtWidgets import QGroupBox, QVBoxLayout, QHeaderView, QLabel +from PyQt6.QtCore import Qt, QTimer, pyqtSignal from logging import getLogger diff --git a/dronecan_gui_tool/widgets/node_properties.py b/dronecan_gui_tool/widgets/node_properties.py index 6fa8d0e..d3e09e3 100644 --- a/dronecan_gui_tool/widgets/node_properties.py +++ b/dronecan_gui_tool/widgets/node_properties.py @@ -10,10 +10,10 @@ import os import datetime from functools import partial -from PyQt5.QtWidgets import QDialog, QGridLayout, QLabel, QLineEdit, QGroupBox, QVBoxLayout, QHBoxLayout, QStatusBar,\ +from PyQt6.QtWidgets import QDialog, QGridLayout, QLabel, QLineEdit, QGroupBox, QVBoxLayout, QHBoxLayout, QStatusBar,\ QHeaderView, QSpinBox, QCheckBox, QFileDialog, QApplication, QPlainTextEdit -from PyQt5.QtCore import QTimer, Qt -from PyQt5.QtGui import QPalette +from PyQt6.QtCore import QTimer, Qt +from PyQt6.QtGui import QPalette from logging import getLogger from . import get_monospace_font, make_icon_button, BasicTable, show_error, request_confirmation from .node_monitor import node_health_to_color, node_mode_to_color diff --git a/dronecan_gui_tool/widgets/plotter/__init__.py b/dronecan_gui_tool/widgets/plotter/__init__.py index 330d0bb..1df2fda 100644 --- a/dronecan_gui_tool/widgets/plotter/__init__.py +++ b/dronecan_gui_tool/widgets/plotter/__init__.py @@ -12,8 +12,8 @@ import dronecan import logging import multiprocessing -from PyQt5.QtWidgets import QApplication -from PyQt5.QtCore import QTimer +from PyQt6.QtWidgets import QApplication +from PyQt6.QtCore import QTimer from .window import PlotterWindow logger = logging.getLogger(__name__) diff --git a/dronecan_gui_tool/widgets/plotter/plot_areas/__init__.py b/dronecan_gui_tool/widgets/plotter/plot_areas/__init__.py index 83d8ec4..dac1ded 100644 --- a/dronecan_gui_tool/widgets/plotter/plot_areas/__init__.py +++ b/dronecan_gui_tool/widgets/plotter/plot_areas/__init__.py @@ -7,8 +7,8 @@ # from collections import OrderedDict -from PyQt5.QtGui import QColor -from PyQt5.QtCore import Qt +from PyQt6.QtGui import QColor +from PyQt6.QtCore import Qt from pyqtgraph import mkPen, InfiniteLine diff --git a/dronecan_gui_tool/widgets/plotter/plot_areas/xy.py b/dronecan_gui_tool/widgets/plotter/plot_areas/xy.py index 931cb34..e8a65ec 100644 --- a/dronecan_gui_tool/widgets/plotter/plot_areas/xy.py +++ b/dronecan_gui_tool/widgets/plotter/plot_areas/xy.py @@ -8,9 +8,9 @@ import math import logging -from PyQt5.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QSpinBox, QComboBox, QLabel, QCheckBox, QDoubleSpinBox -from PyQt5.QtGui import QColor -from PyQt5.QtCore import Qt +from PyQt6.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QSpinBox, QComboBox, QLabel, QCheckBox, QDoubleSpinBox +from PyQt6.QtGui import QColor +from PyQt6.QtCore import Qt from pyqtgraph import PlotWidget, mkPen from . import AbstractPlotArea, add_crosshair from ... import make_icon_button diff --git a/dronecan_gui_tool/widgets/plotter/plot_areas/yt.py b/dronecan_gui_tool/widgets/plotter/plot_areas/yt.py index 43e280d..51da7ba 100644 --- a/dronecan_gui_tool/widgets/plotter/plot_areas/yt.py +++ b/dronecan_gui_tool/widgets/plotter/plot_areas/yt.py @@ -7,9 +7,9 @@ # import logging -from PyQt5.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout -from PyQt5.QtGui import QColor -from PyQt5.QtCore import Qt +from PyQt6.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout +from PyQt6.QtGui import QColor +from PyQt6.QtCore import Qt from pyqtgraph import PlotWidget, mkPen from . import AbstractPlotArea, add_crosshair from ... import make_icon_button diff --git a/dronecan_gui_tool/widgets/plotter/plot_container.py b/dronecan_gui_tool/widgets/plotter/plot_container.py index 1b2f208..ad15b39 100644 --- a/dronecan_gui_tool/widgets/plotter/plot_container.py +++ b/dronecan_gui_tool/widgets/plotter/plot_container.py @@ -7,8 +7,8 @@ # import logging -from PyQt5.QtWidgets import QDockWidget, QVBoxLayout, QHBoxLayout, QWidget, QLabel -from PyQt5.QtCore import Qt +from PyQt6.QtWidgets import QDockWidget, QVBoxLayout, QHBoxLayout, QWidget, QLabel +from PyQt6.QtCore import Qt from .. import make_icon_button from .value_extractor_views import NewValueExtractorWindow, ExtractorWidget diff --git a/dronecan_gui_tool/widgets/plotter/value_extractor_views.py b/dronecan_gui_tool/widgets/plotter/value_extractor_views.py index 607971e..1cb5dbb 100644 --- a/dronecan_gui_tool/widgets/plotter/value_extractor_views.py +++ b/dronecan_gui_tool/widgets/plotter/value_extractor_views.py @@ -7,10 +7,10 @@ # import dronecan -from PyQt5.QtWidgets import QDialog, QWidget, QLabel, QHBoxLayout, QGroupBox, QVBoxLayout, QLineEdit, QSpinBox, \ +from PyQt6.QtWidgets import QDialog, QWidget, QLabel, QHBoxLayout, QGroupBox, QVBoxLayout, QLineEdit, QSpinBox, \ QColorDialog, QComboBox, QCompleter, QCheckBox, QApplication -from PyQt5.QtGui import QColor, QPalette, QFontMetrics -from PyQt5.QtCore import Qt, QStringListModel, QTimer +from PyQt6.QtGui import QColor, QPalette, QFontMetrics +from PyQt6.QtCore import Qt, QStringListModel, QTimer from .. import make_icon_button, get_monospace_font, CommitableComboBoxWithHistory, show_error from ...active_data_type_detector import ActiveDataTypeDetector from .value_extractor import EXPRESSION_VARIABLE_FOR_MESSAGE, EXPRESSION_VARIABLE_FOR_SRC_NODE_ID, Expression, \ diff --git a/dronecan_gui_tool/widgets/plotter/window.py b/dronecan_gui_tool/widgets/plotter/window.py index 420f7cc..b69b97d 100644 --- a/dronecan_gui_tool/widgets/plotter/window.py +++ b/dronecan_gui_tool/widgets/plotter/window.py @@ -9,9 +9,9 @@ import time import logging from functools import partial -from PyQt5.QtWidgets import QMainWindow, QWidget, QVBoxLayout, QAction -from PyQt5.QtCore import QTimer, Qt -from PyQt5.QtGui import QKeySequence +from PyQt6.QtWidgets import QMainWindow, QWidget, QVBoxLayout +from PyQt6.QtCore import QTimer, Qt +from PyQt6.QtGui import QKeySequence, QAction from .. import get_app_icon, get_icon from .plot_areas import PLOT_AREAS from .plot_container import PlotContainerWidget diff --git a/dronecan_gui_tool/widgets/subscriber.py b/dronecan_gui_tool/widgets/subscriber.py index 05af22d..47a95e3 100644 --- a/dronecan_gui_tool/widgets/subscriber.py +++ b/dronecan_gui_tool/widgets/subscriber.py @@ -10,9 +10,9 @@ import dronecan import logging import queue -from PyQt5.QtWidgets import QWidget, QDialog, QPlainTextEdit, QSpinBox, QHBoxLayout, QVBoxLayout, QComboBox, \ +from PyQt6.QtWidgets import QWidget, QDialog, QPlainTextEdit, QSpinBox, QHBoxLayout, QVBoxLayout, QComboBox, \ QCompleter, QLabel -from PyQt5.QtCore import Qt, QTimer +from PyQt6.QtCore import Qt, QTimer from . import CommitableComboBoxWithHistory, make_icon_button, get_monospace_font, show_error, FilterBar diff --git a/dronecan_gui_tool/widgets/table_display.py b/dronecan_gui_tool/widgets/table_display.py index 8c9506f..dd52f0d 100644 --- a/dronecan_gui_tool/widgets/table_display.py +++ b/dronecan_gui_tool/widgets/table_display.py @@ -2,8 +2,8 @@ a table display widget that takes a key to detemine table row ''' import dronecan -from PyQt5.QtWidgets import QTableWidget, QTableWidgetItem -from PyQt5.QtCore import Qt, QTimer +from PyQt6.QtWidgets import QTableWidget, QTableWidgetItem +from PyQt6.QtCore import Qt, QTimer import time diff --git a/setup.py b/setup.py index 7e0f7b7..e003177 100755 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ 'easywebdav>=1.2', 'pymonocypher', 'numpy', - 'pyqt5', + 'pyqt6', 'traitlets', 'jupyter-client', 'ipykernel', @@ -139,7 +139,7 @@ import qtawesome import qtconsole - import PyQt5 + import PyQt6 import zmq import pygments import IPython @@ -165,7 +165,7 @@ 'include_files': [ PACKAGE_NAME, # These packages don't work properly when packed in .zip, so here we have another bunch of ugly hacks - os.path.join(unpacked_eggs_dir, os.path.dirname(PyQt5.__file__)), + os.path.join(unpacked_eggs_dir, os.path.dirname(PyQt6.__file__)), os.path.join(unpacked_eggs_dir, os.path.dirname(qtawesome.__file__)), os.path.join(unpacked_eggs_dir, os.path.dirname(qtconsole.__file__)), os.path.join(unpacked_eggs_dir, os.path.dirname(zmq.__file__)), diff --git a/setup_mac.py b/setup_mac.py index 482b71d..8998e59 100644 --- a/setup_mac.py +++ b/setup_mac.py @@ -17,7 +17,6 @@ 'packages': [ PACKAGE_NAME, 'dronecan', - 'qtwidgets', 'pyqtgraph', 'qtawesome', 'qtconsole', @@ -28,13 +27,13 @@ 'traitlets', ], 'includes': [ - 'PyQt5', - 'PyQt5.QtCore', - 'PyQt5.QtGui', - 'PyQt5.QtWidgets', - 'PyQt5.QtSvg', - 'PyQt5.QtPrintSupport', - 'PyQt5.QtSerialPort', + 'PyQt6', + 'PyQt6.QtCore', + 'PyQt6.QtGui', + 'PyQt6.QtWidgets', + 'PyQt6.QtSvg', + 'PyQt6.QtPrintSupport', + 'PyQt6.QtSerialPort', ], 'resources': [dsdl_specs], 'iconfile': 'icons/logo.icns',