diff --git a/sohstationviewer.py b/sohstationviewer.py index 296d459799da264f4256030e321e90a299ab8a16..19c5de671759c018ca4b0691c5252ec3587b0a4c 100755 --- a/sohstationviewer.py +++ b/sohstationviewer.py @@ -2,7 +2,7 @@ import platform import os import sys -from PySide2 import QtWidgets +from PySide6 import QtWidgets from sohstationviewer.view.main_window import MainWindow diff --git a/sohstationviewer/controller/processing.py b/sohstationviewer/controller/processing.py index b61b1eabcb4c60d2212d9bd31d04ee7556ca6bfc..64c83a98680d6fd4b0585250062b4dccbf1924e0 100644 --- a/sohstationviewer/controller/processing.py +++ b/sohstationviewer/controller/processing.py @@ -9,9 +9,9 @@ import re from pathlib import Path from typing import List, Optional, Dict, Tuple -from PySide2.QtCore import QEventLoop, Qt -from PySide2.QtGui import QCursor -from PySide2.QtWidgets import QTextBrowser, QApplication +from PySide6.QtCore import QEventLoop, Qt +from PySide6.QtGui import QCursor +from PySide6.QtWidgets import QTextBrowser, QApplication from obspy.io import reftek from obspy import UTCDateTime diff --git a/sohstationviewer/controller/util.py b/sohstationviewer/controller/util.py index ae1f35e0ef24ad47d30f6554038d0fe9a6c1c10a..d846fd0085071d27abcc1df70cf6a1db7f712fe3 100644 --- a/sohstationviewer/controller/util.py +++ b/sohstationviewer/controller/util.py @@ -9,10 +9,10 @@ from datetime import datetime from pathlib import Path from typing import List, Dict -from PySide2 import QtCore +from PySide6 import QtCore from typing import Tuple, Union -from PySide2.QtWidgets import QTextBrowser +from PySide6.QtWidgets import QTextBrowser from obspy import UTCDateTime from sohstationviewer.view.util.enums import LogType diff --git a/sohstationviewer/database/soh.db b/sohstationviewer/database/soh.db index 90430cd3be7ab2b25781a5f0d15c3f640e62b3a2..ad3f16f89d639912d745447ffd9203a951ee9e04 100755 Binary files a/sohstationviewer/database/soh.db and b/sohstationviewer/database/soh.db differ diff --git a/sohstationviewer/model/data_loader.py b/sohstationviewer/model/data_loader.py index 00cb6ff54261895fa1a39053da306a21fad3418b..5c92a4e89390046e49f268d69b7c1dbd80793715 100644 --- a/sohstationviewer/model/data_loader.py +++ b/sohstationviewer/model/data_loader.py @@ -5,7 +5,7 @@ import traceback from pathlib import Path from typing import Union, List, Optional -from PySide2 import QtCore, QtWidgets +from PySide6 import QtCore, QtWidgets from sohstationviewer.conf import constants from sohstationviewer.controller.util import display_tracking_info diff --git a/sohstationviewer/model/data_type_model.py b/sohstationviewer/model/data_type_model.py index 2f8c6a5dd21e56315dc7a9c6a6527002d3f5fd75..f10173697d2744ab31d25462da8102aab37c7aa9 100644 --- a/sohstationviewer/model/data_type_model.py +++ b/sohstationviewer/model/data_type_model.py @@ -7,8 +7,8 @@ from typing import Optional, Union, List, Tuple, Dict from obspy import UTCDateTime from obspy.core import Stream -from PySide2 import QtCore -from PySide2 import QtWidgets +from PySide6 import QtCore +from PySide6 import QtWidgets from sohstationviewer.controller.util import display_tracking_info from sohstationviewer.conf import constants diff --git a/sohstationviewer/model/decimator.py b/sohstationviewer/model/decimator.py index 7054bd8b0d1b5ccda4a48c2f575fb4c750a2025f..b9577163a3819def58da953c817eb06448c9bd59 100644 --- a/sohstationviewer/model/decimator.py +++ b/sohstationviewer/model/decimator.py @@ -1,4 +1,4 @@ -from PySide2 import QtCore +from PySide6 import QtCore from obspy import Trace # Global flag that determines whether the user requested to stop processing and diff --git a/sohstationviewer/model/downsampler.py b/sohstationviewer/model/downsampler.py index 3f1e5f139f52d87385dd42bb7b176191854912c8..03bf322454cd569c85bce2f1db97c27ab48e1dff 100644 --- a/sohstationviewer/model/downsampler.py +++ b/sohstationviewer/model/downsampler.py @@ -4,7 +4,7 @@ This module provides access to a class that loads data in a separate thread. import math import numpy as np -from PySide2 import QtCore +from PySide6 import QtCore from sohstationviewer.conf import constants as const diff --git a/sohstationviewer/model/general_data/general_data.py b/sohstationviewer/model/general_data/general_data.py index 101538372e8ed1ce18340b12120130f6d7f6038c..74b25dc74790f93d710d35cdd9e13d22726222a2 100644 --- a/sohstationviewer/model/general_data/general_data.py +++ b/sohstationviewer/model/general_data/general_data.py @@ -7,8 +7,8 @@ import traceback from obspy import UTCDateTime -from PySide2 import QtCore -from PySide2 import QtWidgets +from PySide6 import QtCore +from PySide6 import QtWidgets from sohstationviewer.controller.util import \ display_tracking_info, get_valid_file_count, validate_file, validate_dir diff --git a/sohstationviewer/view/calendar/calendar_dialog.py b/sohstationviewer/view/calendar/calendar_dialog.py index ceb2e9ea16242dcc118b2255bb1c9203b442075a..48a491bbf2af868bd9d7425ab3e9ec2b9e3ab718 100644 --- a/sohstationviewer/view/calendar/calendar_dialog.py +++ b/sohstationviewer/view/calendar/calendar_dialog.py @@ -1,4 +1,4 @@ -from PySide2 import QtWidgets +from PySide6 import QtWidgets from sohstationviewer.view.ui.calendar_ui_qtdesigner import Ui_CalendarDialog diff --git a/sohstationviewer/view/calendar/calendar_widget.py b/sohstationviewer/view/calendar/calendar_widget.py index 07996636a2233d8ca31fe11f1e9408a3b9a20e2f..87e1343688cc661d82e14ebd40d577748a261a57 100644 --- a/sohstationviewer/view/calendar/calendar_widget.py +++ b/sohstationviewer/view/calendar/calendar_widget.py @@ -1,4 +1,4 @@ -from PySide2 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class CalendarWidget(QtWidgets.QCalendarWidget): diff --git a/sohstationviewer/view/channel_prefer_dialog.py b/sohstationviewer/view/channel_prefer_dialog.py index 9775b9bf90e967612fae4ba292d0606129d55249..a79d20961b7806e9294f25fe9e1f0207aa3ad155 100755 --- a/sohstationviewer/view/channel_prefer_dialog.py +++ b/sohstationviewer/view/channel_prefer_dialog.py @@ -1,8 +1,8 @@ from typing import Dict, List, Union from pathlib import Path -from PySide2 import QtWidgets, QtCore -from PySide2.QtWidgets import QDialogButtonBox, QDialog, QPlainTextEdit, \ +from PySide6 import QtWidgets, QtCore +from PySide6.QtWidgets import QDialogButtonBox, QDialog, QPlainTextEdit, \ QMainWindow from sohstationviewer.database.process_db import ( diff --git a/sohstationviewer/view/date_edit_with_doy.py b/sohstationviewer/view/date_edit_with_doy.py index 5fc3ea5bd23128577da8b96d217474e783bb9b4e..ce3248036e3ccf8ba80afe19abb0e6489d96337d 100644 --- a/sohstationviewer/view/date_edit_with_doy.py +++ b/sohstationviewer/view/date_edit_with_doy.py @@ -1,8 +1,8 @@ -from PySide2.QtCore import Qt, QDate -from PySide2.QtGui import ( +from PySide6.QtCore import Qt, QDate +from PySide6.QtGui import ( QKeyEvent, QWheelEvent, QContextMenuEvent, ) -from PySide2.QtWidgets import ( +from PySide6.QtWidgets import ( QDateEdit, QLineEdit, QMenu, QAction, ) diff --git a/sohstationviewer/view/db_config/db_config_dialog.py b/sohstationviewer/view/db_config/db_config_dialog.py index 151fe6bb19897967c8e5bfd4382f975261cf6d0f..027981fb67f0ee32344dcee2d996b80ae9a08b61 100755 --- a/sohstationviewer/view/db_config/db_config_dialog.py +++ b/sohstationviewer/view/db_config/db_config_dialog.py @@ -1,7 +1,7 @@ from __future__ import annotations from typing import Set, Dict -from PySide2 import QtWidgets, QtGui, QtCore +from PySide6 import QtWidgets, QtGui, QtCore from sohstationviewer.database.process_db import execute_db from sohstationviewer.view.util.one_instance_at_a_time import \ diff --git a/sohstationviewer/view/db_config/param_dialog.py b/sohstationviewer/view/db_config/param_dialog.py index 21ecf7bcca7316e30a6b5e7253d7f1ce19ef400b..2a5b6f1312c7aec2efa3f04b3d7d5514bccc2638 100755 --- a/sohstationviewer/view/db_config/param_dialog.py +++ b/sohstationviewer/view/db_config/param_dialog.py @@ -5,9 +5,9 @@ NOTE: Cannot remove or change params that are already used for channels. """ from typing import List -from PySide2 import QtWidgets, QtCore -from PySide2.QtCore import Qt -from PySide2.QtWidgets import QComboBox, QWidget +from PySide6 import QtWidgets, QtCore +from PySide6.QtCore import Qt +from PySide6.QtWidgets import QComboBox, QWidget from sohstationviewer.conf.constants import ColorMode, ALL_COLOR_MODES from sohstationviewer.view.util.plot_func_names import plot_functions diff --git a/sohstationviewer/view/file_information/file_info_widget.py b/sohstationviewer/view/file_information/file_info_widget.py index 8c523ef13b937d0d755884652822cfd42228fa20..1f977dac9d73b78871041421795fc6ea8a3d3f71 100644 --- a/sohstationviewer/view/file_information/file_info_widget.py +++ b/sohstationviewer/view/file_information/file_info_widget.py @@ -1,9 +1,9 @@ -from PySide2 import QtCore -from PySide2.QtGui import ( +from PySide6 import QtCore +from PySide6.QtGui import ( QContextMenuEvent, QGuiApplication, QKeySequence, QKeyEvent, ) -from PySide2.QtWidgets import QListWidget, QMenu, QAction +from PySide6.QtWidgets import QListWidget, QMenu, QAction class FileInfoWidget(QListWidget): diff --git a/sohstationviewer/view/file_list_widget.py b/sohstationviewer/view/file_list_widget.py index 8af3da9fe8c01d1d385ccd8ab12e26a9a52b60f8..37389846888f619fabc8d5822f705d8134e79a6f 100644 --- a/sohstationviewer/view/file_list_widget.py +++ b/sohstationviewer/view/file_list_widget.py @@ -1,4 +1,4 @@ -from PySide2 import QtWidgets +from PySide6 import QtWidgets class FileListItem(QtWidgets.QListWidgetItem): diff --git a/sohstationviewer/view/help_view.py b/sohstationviewer/view/help_view.py index d66da2f13c1b7c5189140afbe6a0e37d5783ff93..5d8fdb77820da53e0ef71adb7462a62a8353d296 100644 --- a/sohstationviewer/view/help_view.py +++ b/sohstationviewer/view/help_view.py @@ -2,8 +2,8 @@ import sys from pathlib import Path from typing import Tuple, Callable, Union, List, Dict -from PySide2 import QtCore, QtGui, QtWidgets -from PySide2.QtWidgets import QStyle +from PySide6 import QtCore, QtGui, QtWidgets +from PySide6.QtWidgets import QStyle from sohstationviewer.view.util.functions import ( create_search_results_file, create_table_of_content_file) diff --git a/sohstationviewer/view/main_window.py b/sohstationviewer/view/main_window.py index ab6de9ff069af13eb8d52b706eaaabd1b91f1085..cd0735e9b9fe3fd28133a3748e9db799a0b35e3d 100755 --- a/sohstationviewer/view/main_window.py +++ b/sohstationviewer/view/main_window.py @@ -5,10 +5,10 @@ from datetime import datetime from typing import List, Tuple, Union, Dict from pathlib import Path -from PySide2 import QtCore, QtWidgets, QtGui -from PySide2.QtCore import QSize -from PySide2.QtGui import QFont, QPalette, QColor -from PySide2.QtWidgets import QFrame, QListWidgetItem, QMessageBox +from PySide6 import QtCore, QtWidgets, QtGui +from PySide6.QtCore import QSize +from PySide6.QtGui import QFont, QPalette, QColor +from PySide6.QtWidgets import QFrame, QListWidgetItem, QMessageBox from sohstationviewer.model.data_loader import DataLoader from sohstationviewer.model.general_data.general_data import \ diff --git a/sohstationviewer/view/plotting/gps_plot/gps_dialog.py b/sohstationviewer/view/plotting/gps_plot/gps_dialog.py index e2221bcf9f8892ec766d28eca8a04244c25a44e7..7526acfff9bc8e11aa805df306fa39ddc61999a8 100644 --- a/sohstationviewer/view/plotting/gps_plot/gps_dialog.py +++ b/sohstationviewer/view/plotting/gps_plot/gps_dialog.py @@ -5,7 +5,7 @@ import traceback from pathlib import Path from typing import List, Optional, Literal, Iterable -from PySide2 import QtWidgets, QtCore +from PySide6 import QtWidgets, QtCore from matplotlib.axes import Axes from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as Canvas from matplotlib.figure import Figure diff --git a/sohstationviewer/view/plotting/plotting_widget/multi_threaded_plotting_widget.py b/sohstationviewer/view/plotting/plotting_widget/multi_threaded_plotting_widget.py index f8cec92810a379ae2c31ed608f884c90b56af1be..c947fb734a42a7f8c7612893f51513ba0251b6e1 100644 --- a/sohstationviewer/view/plotting/plotting_widget/multi_threaded_plotting_widget.py +++ b/sohstationviewer/view/plotting/plotting_widget/multi_threaded_plotting_widget.py @@ -2,7 +2,7 @@ from typing import Tuple, Union, Dict, List -from PySide2 import QtCore +from PySide6 import QtCore from sohstationviewer.model.data_type_model import DataTypeModel diff --git a/sohstationviewer/view/plotting/plotting_widget/plotting_processor.py b/sohstationviewer/view/plotting/plotting_widget/plotting_processor.py index 764369320011cf6b6df691b599b165a937a54d4f..5ca9a6f4be004b137640d0f78f6e574abbab37e2 100644 --- a/sohstationviewer/view/plotting/plotting_widget/plotting_processor.py +++ b/sohstationviewer/view/plotting/plotting_widget/plotting_processor.py @@ -1,4 +1,4 @@ -from PySide2 import QtCore +from PySide6 import QtCore from sohstationviewer.conf import constants as const from sohstationviewer.view.plotting.plotting_widget.plotting_processor_helper\ diff --git a/sohstationviewer/view/plotting/plotting_widget/plotting_widget.py b/sohstationviewer/view/plotting/plotting_widget/plotting_widget.py index 970ba1903f2ba734848ea36cd29d45c6b523006c..a307ee3dcc4ef38b97bd39253f171775de189ecc 100755 --- a/sohstationviewer/view/plotting/plotting_widget/plotting_widget.py +++ b/sohstationviewer/view/plotting/plotting_widget/plotting_widget.py @@ -6,9 +6,9 @@ import numpy as np import matplotlib.text from matplotlib import pyplot as pl from matplotlib.transforms import Bbox -from PySide2.QtCore import QTimer, Qt -from PySide2 import QtCore, QtWidgets -from PySide2.QtWidgets import QWidget, QApplication, QTextBrowser +from PySide6.QtCore import QTimer, Qt +from PySide6 import QtCore, QtWidgets +from PySide6.QtWidgets import QWidget, QApplication, QTextBrowser from sohstationviewer.conf import constants from sohstationviewer.view.util.color import set_color_mode diff --git a/sohstationviewer/view/plotting/time_power_squared_dialog.py b/sohstationviewer/view/plotting/time_power_squared_dialog.py index 5e533b53b591894908a59bca12eb8899c5dde0d3..4812476abc4df8388a8bfdb544ac0e6be9869ea7 100755 --- a/sohstationviewer/view/plotting/time_power_squared_dialog.py +++ b/sohstationviewer/view/plotting/time_power_squared_dialog.py @@ -3,7 +3,7 @@ from math import sqrt from typing import List, Tuple, Union import numpy as np -from PySide2 import QtWidgets, QtCore +from PySide6 import QtWidgets, QtCore from sohstationviewer.conf import constants as const from sohstationviewer.controller.plotting_data import ( diff --git a/sohstationviewer/view/plotting/time_power_squared_processor.py b/sohstationviewer/view/plotting/time_power_squared_processor.py index c554c6867417f25344fcbb5387a1f9c74faccdb9..200ea544cef82ab3c8a608654e6431f38894201a 100644 --- a/sohstationviewer/view/plotting/time_power_squared_processor.py +++ b/sohstationviewer/view/plotting/time_power_squared_processor.py @@ -1,7 +1,7 @@ from typing import Dict, Optional, List import numpy as np -from PySide2 import QtCore +from PySide6 import QtCore from sohstationviewer.view.plotting.time_power_squared_helper import \ get_tps_for_discontinuous_data diff --git a/sohstationviewer/view/plotting/waveform_dialog.py b/sohstationviewer/view/plotting/waveform_dialog.py index 24c9a9a8cfb2256c3f40f1a7ef7bbe7776f4305d..2e9cf40b8325fce4da409f71289663cb07eb378a 100755 --- a/sohstationviewer/view/plotting/waveform_dialog.py +++ b/sohstationviewer/view/plotting/waveform_dialog.py @@ -1,7 +1,7 @@ # Drawing waveform and mass position from typing import Tuple, Union, Dict -from PySide2 import QtCore, QtWidgets +from PySide6 import QtCore, QtWidgets from sohstationviewer.model.data_type_model import DataTypeModel diff --git a/sohstationviewer/view/plotting/waveform_processor.py b/sohstationviewer/view/plotting/waveform_processor.py index 8d6ef39b2ee84c0d9c681be97b936818785b604e..f98727f0eeff08d0a366a7c2532f730713cff4db 100644 --- a/sohstationviewer/view/plotting/waveform_processor.py +++ b/sohstationviewer/view/plotting/waveform_processor.py @@ -1,6 +1,6 @@ from typing import List, Dict -from PySide2 import QtCore +from PySide6 import QtCore from obspy import UTCDateTime from obspy.core import Trace diff --git a/sohstationviewer/view/save_plot_dialog.py b/sohstationviewer/view/save_plot_dialog.py index 77a988f25a6679ac7ecd3bd4f916ca625d6a97d1..0de627299a5dab0944f215ab4d3a0c579c6255ff 100644 --- a/sohstationviewer/view/save_plot_dialog.py +++ b/sohstationviewer/view/save_plot_dialog.py @@ -4,8 +4,8 @@ import os from pathlib import Path from typing import Union, Optional -from PySide2 import QtWidgets, QtCore, QtGui -from PySide2.QtWidgets import QApplication, QWidget, QDialog +from PySide6 import QtWidgets, QtCore, QtGui +from PySide6.QtWidgets import QApplication, QWidget, QDialog from sohstationviewer.conf import constants diff --git a/sohstationviewer/view/search_message/highlight_delegate.py b/sohstationviewer/view/search_message/highlight_delegate.py index cda425ca1c27191f8c0376f048fc36c06ce8d2ef..50f3f86e94cdbe5b762807414ceef50567f9fd32 100644 --- a/sohstationviewer/view/search_message/highlight_delegate.py +++ b/sohstationviewer/view/search_message/highlight_delegate.py @@ -2,8 +2,8 @@ Credit: https://stackoverflow.com/questions/53353450/how-to-highlight-a-words-in-qtablewidget-from-a-searchlist # noqa """ from typing import List, Dict -from PySide2 import QtCore, QtGui, QtWidgets -from PySide2.QtGui import QPen, QTextCursor, QTextCharFormat, QColor +from PySide6 import QtCore, QtGui, QtWidgets +from PySide6.QtGui import QPen, QTextCursor, QTextCharFormat, QColor class HighlightDelegate(QtWidgets.QStyledItemDelegate): diff --git a/sohstationviewer/view/search_message/search_message_dialog.py b/sohstationviewer/view/search_message/search_message_dialog.py index 56b4b2355c120f28e5b2ea81f53b80ba4f10429c..c535f494bac2826b8a9a2bbeee5be7e0b72e40f8 100644 --- a/sohstationviewer/view/search_message/search_message_dialog.py +++ b/sohstationviewer/view/search_message/search_message_dialog.py @@ -3,8 +3,8 @@ import os from pathlib import PosixPath, Path from typing import Dict, List, Tuple, Callable, Union, Optional -from PySide2 import QtGui, QtCore, QtWidgets -from PySide2.QtWidgets import QStyle +from PySide6 import QtGui, QtCore, QtWidgets +from PySide6.QtWidgets import QStyle from sohstationviewer.view.search_message.highlight_delegate import ( HighlightDelegate) diff --git a/sohstationviewer/view/select_buttons_dialog.py b/sohstationviewer/view/select_buttons_dialog.py index e8841fe6d5f98a8168a145604927b8f929de9c92..4cbf11c6f089a9f0ebb7288c8e162d96068f3db7 100644 --- a/sohstationviewer/view/select_buttons_dialog.py +++ b/sohstationviewer/view/select_buttons_dialog.py @@ -2,7 +2,7 @@ import sys import platform import os -from PySide2 import QtWidgets, QtCore +from PySide6 import QtWidgets, QtCore from functools import partial diff --git a/sohstationviewer/view/ui/about_ui_qtdesigner.py b/sohstationviewer/view/ui/about_ui_qtdesigner.py index e1ecbbe2258d2ee9909d583d3ec53d7d548f4af6..8c402dd5ad050f0084e538e6ce1b1d36d2782d72 100644 --- a/sohstationviewer/view/ui/about_ui_qtdesigner.py +++ b/sohstationviewer/view/ui/about_ui_qtdesigner.py @@ -8,7 +8,7 @@ # # WARNING! All changes made in this file will be lost! -from PySide2 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_About(object): def setupUi(self, About): diff --git a/sohstationviewer/view/ui/calendar_ui_qtdesigner.py b/sohstationviewer/view/ui/calendar_ui_qtdesigner.py index 81edc2dd9a6fa013340ce159ef58cd58e61b5b52..4e225c0eafb962bb5748971aa948936558c68d5e 100644 --- a/sohstationviewer/view/ui/calendar_ui_qtdesigner.py +++ b/sohstationviewer/view/ui/calendar_ui_qtdesigner.py @@ -8,7 +8,7 @@ # # WARNING! All changes made in this file will be lost! -from PySide2 import QtCore, QtWidgets +from PySide6 import QtCore, QtWidgets from sohstationviewer.view.calendar.calendar_widget import CalendarWidget diff --git a/sohstationviewer/view/ui/main_ui.py b/sohstationviewer/view/ui/main_ui.py index 4c98291a6cc6a45533b847dc17f65cb2f97544ac..3e4387b6b61199608be96f439ba10982208d0843 100755 --- a/sohstationviewer/view/ui/main_ui.py +++ b/sohstationviewer/view/ui/main_ui.py @@ -3,8 +3,8 @@ import configparser from pathlib import Path from typing import Union, List, Optional -from PySide2 import QtCore, QtGui, QtWidgets -from PySide2.QtWidgets import ( +from PySide6 import QtCore, QtGui, QtWidgets +from PySide6.QtWidgets import ( QMainWindow, QWidget, QTextBrowser, QPushButton, QLineEdit, QDateEdit, QListWidget, QCheckBox, QRadioButton, QMenu, QAction, QLabel, QFrame, QVBoxLayout, QHBoxLayout, QGridLayout, QAbstractItemView, QShortcut, diff --git a/sohstationviewer/view/util/one_instance_at_a_time.py b/sohstationviewer/view/util/one_instance_at_a_time.py index f0bbf7a34e8103287bd7f4bbe3dd0fa988491304..dd6cd416df8a2d4136b166a6c55e301e128c9000 100644 --- a/sohstationviewer/view/util/one_instance_at_a_time.py +++ b/sohstationviewer/view/util/one_instance_at_a_time.py @@ -1,7 +1,7 @@ from __future__ import annotations -from PySide2.QtGui import QCloseEvent -from PySide2.QtWidgets import QWidget +from PySide6.QtGui import QCloseEvent +from PySide6.QtWidgets import QWidget class DialogAlreadyOpenedError(Exception):