Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • software_public/passoft/sohstationviewer
1 result
Show changes
Showing
with 152 additions and 112 deletions
...@@ -24,8 +24,8 @@ class PlotTypeDialog(UiDBInfoDialog): ...@@ -24,8 +24,8 @@ class PlotTypeDialog(UiDBInfoDialog):
so it's needed to set to True to prevent the row to be deleted so it's needed to set to True to prevent the row to be deleted
""" """
self.add_widget(None, row_idx, 0) # No. self.add_widget(None, row_idx, 0) # No.
self.add_widget(self.data_list, row_idx, 1, foreign_key=True) self.add_widget(self.database_rows, row_idx, 1, foreign_key=True)
self.add_widget(self.data_list, row_idx, 2, foreign_key=True, self.add_widget(self.database_rows, row_idx, 2, foreign_key=True,
field_name='description') field_name='description')
def get_data_list(self): def get_data_list(self):
......
from PySide2 import QtWidgets, QtGui from PySide6 import QtWidgets, QtGui
from PySide2.QtWidgets import QWidget, QDialog from PySide6.QtWidgets import QWidget, QDialog
def display_color(color_label: QtWidgets.QLabel, color: str): def display_color(color_label: QtWidgets.QLabel, color: str):
...@@ -10,7 +10,7 @@ def display_color(color_label: QtWidgets.QLabel, color: str): ...@@ -10,7 +10,7 @@ def display_color(color_label: QtWidgets.QLabel, color: str):
:param color: the color that is given to update the color_label :param color: the color that is given to update the color_label
""" """
palette = color_label.palette() palette = color_label.palette()
palette.setColor(QtGui.QPalette.Background, QtGui.QColor(color)) palette.setColor(QtGui.QPalette.ColorRole.Window, QtGui.QColor(color))
color_label.setPalette(palette) color_label.setPalette(palette)
......
...@@ -2,8 +2,8 @@ import sys ...@@ -2,8 +2,8 @@ import sys
import platform import platform
import os import os
from PySide2 import QtWidgets from PySide6 import QtWidgets
from PySide2.QtWidgets import QWidget from PySide6.QtWidgets import QWidget
from sohstationviewer.view.db_config.value_color_helper.\ from sohstationviewer.view.db_config.value_color_helper.\
edit_value_color_dialog.edit_value_color_dialog_super_class import \ edit_value_color_dialog.edit_value_color_dialog_super_class import \
......
...@@ -3,8 +3,8 @@ import platform ...@@ -3,8 +3,8 @@ import platform
import os import os
from typing import List, Dict, Optional from typing import List, Dict, Optional
from PySide2 import QtWidgets, QtCore, QtGui from PySide6 import QtWidgets, QtCore, QtGui
from PySide2.QtWidgets import QWidget from PySide6.QtWidgets import QWidget
from sohstationviewer.view.db_config.value_color_helper.\ from sohstationviewer.view.db_config.value_color_helper.\
edit_value_color_dialog.edit_value_color_dialog_super_class import \ edit_value_color_dialog.edit_value_color_dialog_super_class import \
...@@ -25,15 +25,15 @@ class BoundValidator(QtGui.QValidator): ...@@ -25,15 +25,15 @@ class BoundValidator(QtGui.QValidator):
""" """
def validate(self, input_val, pos): def validate(self, input_val, pos):
if input_val in ['', '-']: if input_val in ['', '-']:
return QtGui.QValidator.Acceptable return QtGui.QValidator.State.Acceptable
try: try:
input_val = float(input_val) input_val = float(input_val)
except ValueError: except ValueError:
return QtGui.QValidator.Invalid return QtGui.QValidator.State.Invalid
if -10 <= input_val <= 10: if -10 <= input_val <= 10:
return QtGui.QValidator.Acceptable return QtGui.QValidator.State.Acceptable
else: else:
return QtGui.QValidator.Invalid return QtGui.QValidator.State.Invalid
class MultiColorDotDialog(EditValueColorDialog): class MultiColorDotDialog(EditValueColorDialog):
...@@ -84,8 +84,8 @@ class MultiColorDotDialog(EditValueColorDialog): ...@@ -84,8 +84,8 @@ class MultiColorDotDialog(EditValueColorDialog):
self.setWindowTitle("Edit Multi Color Dot Plotting") self.setWindowTitle("Edit Multi Color Dot Plotting")
# set focus policy to not be clicked by hitting enter in higher bound # set focus policy to not be clicked by hitting enter in higher bound
self.cancel_btn.setFocusPolicy(QtCore.Qt.NoFocus) self.cancel_btn.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
self.save_colors_btn.setFocusPolicy(QtCore.Qt.NoFocus) self.save_colors_btn.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
self.set_value_row_id_dict() self.set_value_row_id_dict()
...@@ -156,7 +156,7 @@ class MultiColorDotDialog(EditValueColorDialog): ...@@ -156,7 +156,7 @@ class MultiColorDotDialog(EditValueColorDialog):
select_color_btn.clicked.connect( select_color_btn.clicked.connect(
lambda: self.on_select_color(row_id)) lambda: self.on_select_color(row_id))
# set focus policy to not be clicked by hitting enter in higher bound # set focus policy to not be clicked by hitting enter in higher bound
select_color_btn.setFocusPolicy(QtCore.Qt.NoFocus) select_color_btn.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
color_label = QtWidgets.QLabel() color_label = QtWidgets.QLabel()
color_label.setFixedWidth(30) color_label.setFixedWidth(30)
......
...@@ -2,8 +2,8 @@ import sys ...@@ -2,8 +2,8 @@ import sys
import platform import platform
import os import os
from PySide2 import QtWidgets from PySide6 import QtWidgets
from PySide2.QtWidgets import QWidget from PySide6.QtWidgets import QWidget
from sohstationviewer.view.db_config.value_color_helper.\ from sohstationviewer.view.db_config.value_color_helper.\
edit_value_color_dialog.edit_value_color_dialog_super_class import \ edit_value_color_dialog.edit_value_color_dialog_super_class import \
......
...@@ -2,8 +2,8 @@ import sys ...@@ -2,8 +2,8 @@ import sys
import platform import platform
import os import os
from PySide2 import QtWidgets from PySide6 import QtWidgets
from PySide2.QtWidgets import QWidget from PySide6.QtWidgets import QWidget
from sohstationviewer.view.db_config.value_color_helper.\ from sohstationviewer.view.db_config.value_color_helper.\
edit_value_color_dialog.edit_value_color_dialog_super_class import \ edit_value_color_dialog.edit_value_color_dialog_super_class import \
......
...@@ -4,9 +4,9 @@ import os ...@@ -4,9 +4,9 @@ import os
from pathlib import Path from pathlib import Path
from typing import Optional from typing import Optional
from PySide2 import QtWidgets, QtGui, QtCore from PySide6 import QtWidgets, QtGui, QtCore
from PySide2.QtCore import Qt from PySide6.QtCore import Qt
from PySide2.QtWidgets import QWidget, QDialog, QTextEdit from PySide6.QtWidgets import QWidget, QDialog, QTextEdit
from sohstationviewer.view.db_config.value_color_helper.functions import \ from sohstationviewer.view.db_config.value_color_helper.functions import \
convert_value_color_str, prepare_value_color_html convert_value_color_str, prepare_value_color_html
...@@ -31,7 +31,9 @@ class ValueColorWidget(QTextEdit): ...@@ -31,7 +31,9 @@ class ValueColorWidget(QTextEdit):
self.setReadOnly(True) self.setReadOnly(True)
# change cursor to Arrow so user know they can't edit directly # change cursor to Arrow so user know they can't edit directly
self.viewport().setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) self.viewport().setCursor(
QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor)
)
# to see all info # to see all info
self.setFixedHeight(28) self.setFixedHeight(28)
self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
...@@ -55,7 +57,7 @@ class ValueColorWidget(QTextEdit): ...@@ -55,7 +57,7 @@ class ValueColorWidget(QTextEdit):
layout.addWidget(self.edit_button, 0, Qt.AlignRight) layout.addWidget(self.edit_button, 0, Qt.AlignRight)
layout.setSpacing(0) layout.setSpacing(0)
layout.setMargin(5) layout.setContentsMargins(5, 5, 5, 5)
def set_background(self, background: str): def set_background(self, background: str):
""" """
...@@ -66,9 +68,10 @@ class ValueColorWidget(QTextEdit): ...@@ -66,9 +68,10 @@ class ValueColorWidget(QTextEdit):
""" """
palette = self.palette() palette = self.palette()
if background == 'B': if background == 'B':
palette.setColor(QtGui.QPalette.Text, Qt.white) palette.setColor(QtGui.QPalette.ColorRole.Text, Qt.white)
palette.setColor(QtGui.QPalette.Base, Qt.black) palette.setColor(QtGui.QPalette.ColorRole.Base, Qt.black)
palette.setColor(QtGui.QPalette.PlaceholderText, Qt.lightGray) palette.setColor(QtGui.QPalette.ColorRole.PlaceholderText,
Qt.lightGray)
self.setPalette(palette) self.setPalette(palette)
def set_value_color(self, plot_type: str, value_color_str: str) \ def set_value_color(self, plot_type: str, value_color_str: str) \
......
from PySide2 import QtCore from PySide6 import QtCore
from PySide2.QtGui import ( from PySide6.QtGui import (
QContextMenuEvent, QGuiApplication, QKeySequence, QContextMenuEvent, QGuiApplication, QKeySequence,
QKeyEvent QKeyEvent, QAction,
) )
from PySide2.QtWidgets import QListWidget, QMenu, QAction from PySide6.QtWidgets import QListWidget, QMenu
class FileInfoWidget(QListWidget): class FileInfoWidget(QListWidget):
def __init__(self, parent): def __init__(self, parent):
super().__init__(parent) super().__init__(parent)
self.parent = parent self.parent = parent
self.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu) self.setContextMenuPolicy(
QtCore.Qt.ContextMenuPolicy.DefaultContextMenu
)
def contextMenuEvent(self, event: QContextMenuEvent): def contextMenuEvent(self, event: QContextMenuEvent):
if not self.count(): if not self.count():
......
from PySide2 import QtWidgets from PySide6 import QtWidgets
class FileListItem(QtWidgets.QListWidgetItem): class FileListItem(QtWidgets.QListWidgetItem):
...@@ -12,5 +12,5 @@ class FileListItem(QtWidgets.QListWidgetItem): ...@@ -12,5 +12,5 @@ class FileListItem(QtWidgets.QListWidgetItem):
except AttributeError: except AttributeError:
path = file_path path = file_path
super().__init__(path, parent, super().__init__(path, parent,
type=QtWidgets.QListWidgetItem.UserType) type=QtWidgets.QListWidgetItem.ItemType.UserType)
self.file_path = path self.file_path = path
...@@ -2,8 +2,8 @@ import sys ...@@ -2,8 +2,8 @@ import sys
from pathlib import Path from pathlib import Path
from typing import Tuple, Callable, Union, List, Dict from typing import Tuple, Callable, Union, List, Dict
from PySide2 import QtCore, QtGui, QtWidgets from PySide6 import QtCore, QtGui, QtWidgets
from PySide2.QtWidgets import QStyle from PySide6.QtWidgets import QStyle
from sohstationviewer.view.util.functions import ( from sohstationviewer.view.util.functions import (
create_search_results_file, create_table_of_content_file) create_search_results_file, create_table_of_content_file)
...@@ -271,11 +271,13 @@ class HelpBrowser(QtWidgets.QWidget): ...@@ -271,11 +271,13 @@ class HelpBrowser(QtWidgets.QWidget):
'Recreate Table of Contents', self.recreate_table_contents) 'Recreate Table of Contents', self.recreate_table_contents)
self.add_nav_button( self.add_nav_button(
nav_bar, self.style().standardIcon(QStyle.SP_ArrowBack), nav_bar,
self.style().standardIcon(QStyle.StandardPixmap.SP_ArrowBack),
'Search Backward', self.search_backward) 'Search Backward', self.search_backward)
self.add_nav_button( self.add_nav_button(
nav_bar, self.style().standardIcon(QStyle.SP_ArrowForward), nav_bar,
self.style().standardIcon(QStyle.StandardPixmap.SP_ArrowForward),
'Search Forward', self.search_forward) 'Search Forward', self.search_forward)
self.go_to_search_results_button = self.add_nav_button( self.go_to_search_results_button = self.add_nav_button(
...@@ -332,7 +334,7 @@ class HelpBrowser(QtWidgets.QWidget): ...@@ -332,7 +334,7 @@ class HelpBrowser(QtWidgets.QWidget):
index = file_system_model.setRootPath(self.docdir_path.as_posix()) index = file_system_model.setRootPath(self.docdir_path.as_posix())
file_system_model.setFilter( file_system_model.setFilter(
QtCore.QDir.NoDotAndDotDot | QtCore.QDir.Files) QtCore.QDir.Filter.NoDotAndDotDot | QtCore.QDir.Filter.Files)
file_system_model.setNameFilters(['*.help.md']) file_system_model.setNameFilters(['*.help.md'])
file_system_model.setNameFilterDisables(False) # hide inactive file_system_model.setNameFilterDisables(False) # hide inactive
...@@ -517,7 +519,9 @@ class HelpBrowser(QtWidgets.QWidget): ...@@ -517,7 +519,9 @@ class HelpBrowser(QtWidgets.QWidget):
""" """
self.tree_view.setCurrentIndex(self.file_system_model.index( self.tree_view.setCurrentIndex(self.file_system_model.index(
filepath.as_posix(), 0, 0)) filepath.as_posix(), 0, 0))
self.tree_view.update() # pyside2 need the following line to update tree_view
# but it causes bug in pyside6
# self.tree_view.update()
self.help_view.setSource(QtCore.QUrl(filepath.as_posix())) self.help_view.setSource(QtCore.QUrl(filepath.as_posix()))
......
...@@ -5,10 +5,10 @@ from datetime import datetime, date ...@@ -5,10 +5,10 @@ from datetime import datetime, date
from typing import List, Tuple, Union, Dict from typing import List, Tuple, Union, Dict
from pathlib import Path from pathlib import Path
from PySide2 import QtCore, QtWidgets, QtGui from PySide6 import QtCore, QtWidgets, QtGui
from PySide2.QtCore import QSize from PySide6.QtCore import QSize
from PySide2.QtGui import QFont, QPalette, QColor from PySide6.QtGui import QFont, QPalette, QColor
from PySide2.QtWidgets import QFrame, QListWidgetItem, QMessageBox from PySide6.QtWidgets import QFrame, QListWidgetItem, QMessageBox
from sohstationviewer.conf import constants from sohstationviewer.conf import constants
from sohstationviewer.model.data_loader import DataLoader from sohstationviewer.model.data_loader import DataLoader
...@@ -289,8 +289,9 @@ class MainWindow(QtWidgets.QMainWindow, UIMainWindow): ...@@ -289,8 +289,9 @@ class MainWindow(QtWidgets.QMainWindow, UIMainWindow):
msg = f"{str(e)}!!!\n\nDo you want to continue?" msg = f"{str(e)}!!!\n\nDo you want to continue?"
result = QtWidgets.QMessageBox.question( result = QtWidgets.QMessageBox.question(
self, "Confirmation", msg, self, "Confirmation", msg,
QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) QtWidgets.QMessageBox.StandardButton.Yes |
if result == QtWidgets.QMessageBox.No: QtWidgets.QMessageBox.StandardButton.No)
if result == QtWidgets.QMessageBox.StandardButton.No:
return return
try: try:
win = ChannelPreferDialog(self, self.list_of_dir) win = ChannelPreferDialog(self, self.list_of_dir)
...@@ -410,7 +411,7 @@ class MainWindow(QtWidgets.QMainWindow, UIMainWindow): ...@@ -410,7 +411,7 @@ class MainWindow(QtWidgets.QMainWindow, UIMainWindow):
curr_dir_line_edit. curr_dir_line_edit.
""" """
fd = QtWidgets.QFileDialog(self) fd = QtWidgets.QFileDialog(self)
fd.setFileMode(QtWidgets.QFileDialog.Directory) fd.setFileMode(QtWidgets.QFileDialog.FileMode.Directory)
fd.setDirectory(self.curr_dir_line_edit.text()) fd.setDirectory(self.curr_dir_line_edit.text())
fd.exec() fd.exec()
try: try:
...@@ -486,8 +487,9 @@ class MainWindow(QtWidgets.QMainWindow, UIMainWindow): ...@@ -486,8 +487,9 @@ class MainWindow(QtWidgets.QMainWindow, UIMainWindow):
f"Do you want to continue?") f"Do you want to continue?")
result = QtWidgets.QMessageBox.question( result = QtWidgets.QMessageBox.question(
self, "Confirmation", msg, self, "Confirmation", msg,
QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) QtWidgets.QMessageBox.StandardButton.Yes |
if result == QtWidgets.QMessageBox.No: QtWidgets.QMessageBox.StandardButton.No)
if result == QtWidgets.QMessageBox.StandardButton.No:
return return
self.all_soh_chans_check_box.setChecked(True) self.all_soh_chans_check_box.setChecked(True)
self.curr_pref_soh_list_name_txtbox.setText('') self.curr_pref_soh_list_name_txtbox.setText('')
...@@ -609,8 +611,11 @@ class MainWindow(QtWidgets.QMainWindow, UIMainWindow): ...@@ -609,8 +611,11 @@ class MainWindow(QtWidgets.QMainWindow, UIMainWindow):
LogType.INFO) LogType.INFO)
self.clear_plots() self.clear_plots()
start_tm_str = self.time_from_date_edit.date().toString( start_tm_str = self.time_from_date_edit.date().toString(
QtCore.Qt.ISODate) QtCore.Qt.DateFormat.ISODate
end_tm_str = self.time_to_date_edit.date().toString(QtCore.Qt.ISODate) )
end_tm_str = self.time_to_date_edit.date().toString(
QtCore.Qt.DateFormat.ISODate
)
self.start_tm = datetime.strptime(start_tm_str, TM_FORMAT).timestamp() self.start_tm = datetime.strptime(start_tm_str, TM_FORMAT).timestamp()
self.end_tm = datetime.strptime(end_tm_str, TM_FORMAT).timestamp() self.end_tm = datetime.strptime(end_tm_str, TM_FORMAT).timestamp()
if self.end_tm <= self.start_tm: if self.end_tm <= self.start_tm:
...@@ -672,10 +677,12 @@ class MainWindow(QtWidgets.QMainWindow, UIMainWindow): ...@@ -672,10 +677,12 @@ class MainWindow(QtWidgets.QMainWindow, UIMainWindow):
msgbox = QtWidgets.QMessageBox() msgbox = QtWidgets.QMessageBox()
msgbox.setWindowTitle('Do you want to continue?') msgbox.setWindowTitle('Do you want to continue?')
msgbox.setText(str(e)) msgbox.setText(str(e))
msgbox.addButton(QtWidgets.QMessageBox.Cancel) msgbox.addButton(QtWidgets.QMessageBox.StandardButton.Cancel)
msgbox.addButton('Continue', QtWidgets.QMessageBox.YesRole) msgbox.addButton(
'Continue', QtWidgets.QMessageBox.ButtonRole.YesRole
)
result = msgbox.exec() result = msgbox.exec()
if result == QtWidgets.QMessageBox.Cancel: if result == QtWidgets.QMessageBox.StandardButton.Cancel:
self.cancel_loading() self.cancel_loading()
return return
self.data_type == 'Unknown' self.data_type == 'Unknown'
...@@ -701,8 +708,11 @@ class MainWindow(QtWidgets.QMainWindow, UIMainWindow): ...@@ -701,8 +708,11 @@ class MainWindow(QtWidgets.QMainWindow, UIMainWindow):
return return
start_tm_str = self.time_from_date_edit.date().toString( start_tm_str = self.time_from_date_edit.date().toString(
QtCore.Qt.ISODate) QtCore.Qt.DateFormat.ISODate
end_tm_str = self.time_to_date_edit.date().toString(QtCore.Qt.ISODate) )
end_tm_str = self.time_to_date_edit.date().toString(
QtCore.Qt.DateFormat.ISODate
)
self.start_tm = datetime.strptime(start_tm_str, TM_FORMAT).timestamp() self.start_tm = datetime.strptime(start_tm_str, TM_FORMAT).timestamp()
self.end_tm = datetime.strptime(end_tm_str, TM_FORMAT).timestamp() self.end_tm = datetime.strptime(end_tm_str, TM_FORMAT).timestamp()
...@@ -1208,7 +1218,7 @@ class MainWindow(QtWidgets.QMainWindow, UIMainWindow): ...@@ -1208,7 +1218,7 @@ class MainWindow(QtWidgets.QMainWindow, UIMainWindow):
print(f"DEVELOPING ERROR: Type of form must be 'QWidget' instead " print(f"DEVELOPING ERROR: Type of form must be 'QWidget' instead "
f"of '{form.__class__.__name__}'") f"of '{form.__class__.__name__}'")
if form not in self.forms_in_forms_menu: if form not in self.forms_in_forms_menu:
action = QtWidgets.QAction(form_name, self) action = QtGui.QAction(form_name, self)
self.forms_menu.addAction(action) self.forms_menu.addAction(action)
action.triggered.connect(lambda: self.raise_form(form)) action.triggered.connect(lambda: self.raise_form(form))
self.forms_in_forms_menu.append(form) self.forms_in_forms_menu.append(form)
...@@ -1284,13 +1294,13 @@ class MainWindow(QtWidgets.QMainWindow, UIMainWindow): ...@@ -1284,13 +1294,13 @@ class MainWindow(QtWidgets.QMainWindow, UIMainWindow):
# Create a line that separate filtered list of directories and list of # Create a line that separate filtered list of directories and list of
# directories. # directories.
separator_list_item = QListWidgetItem() separator_list_item = QListWidgetItem()
separator_list_item.setFlags(QtCore.Qt.NoItemFlags) separator_list_item.setFlags(QtCore.Qt.ItemFlag.NoItemFlags)
separator_list_item.setSizeHint( separator_list_item.setSizeHint(
QSize(separator_list_item.sizeHint().width(), 10) # noqa QSize(separator_list_item.sizeHint().width(), 10) # noqa
) )
self.open_files_list.insertItem(0, separator_list_item) self.open_files_list.insertItem(0, separator_list_item)
line = QFrame() line = QFrame()
line.setFrameShape(QFrame.HLine) line.setFrameShape(QFrame.Shape.HLine)
self.open_files_list.setItemWidget(separator_list_item, line) self.open_files_list.setItemWidget(separator_list_item, line)
for path in reversed(filtered_file_paths): for path in reversed(filtered_file_paths):
...@@ -1301,6 +1311,6 @@ class MainWindow(QtWidgets.QMainWindow, UIMainWindow): ...@@ -1301,6 +1311,6 @@ class MainWindow(QtWidgets.QMainWindow, UIMainWindow):
bold_font = QFont() bold_font = QFont()
bold_font.setBold(True) bold_font.setBold(True)
found_files_list_item.setFont(bold_font) found_files_list_item.setFont(bold_font)
found_files_list_item.setFlags(QtCore.Qt.NoItemFlags) found_files_list_item.setFlags(QtCore.Qt.ItemFlag.NoItemFlags)
found_files_list_item.setForeground(QtCore.Qt.black) found_files_list_item.setForeground(QtCore.Qt.GlobalColor.black)
self.open_files_list.insertItem(0, found_files_list_item) self.open_files_list.insertItem(0, found_files_list_item)
...@@ -5,7 +5,7 @@ import traceback ...@@ -5,7 +5,7 @@ import traceback
from pathlib import Path from pathlib import Path
from typing import List, Optional, Literal, Iterable, Any from typing import List, Optional, Literal, Iterable, Any
from PySide2 import QtWidgets, QtCore from PySide6 import QtWidgets, QtCore
from matplotlib.axes import Axes from matplotlib.axes import Axes
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as Canvas from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as Canvas
from matplotlib.figure import Figure from matplotlib.figure import Figure
...@@ -226,7 +226,7 @@ class GPSDialog(QtWidgets.QWidget): ...@@ -226,7 +226,7 @@ class GPSDialog(QtWidgets.QWidget):
export_dir_layout.addWidget(self.export_dir_button) export_dir_layout.addWidget(self.export_dir_button)
export_dir_layout.addWidget(self.export_dir_textbox) export_dir_layout.addWidget(self.export_dir_textbox)
# self.export_dir_textbox.setReadOnly(True) # self.export_dir_textbox.setReadOnly(True)
self.export_dir_textbox.setCursor(QtCore.Qt.IBeamCursor) self.export_dir_textbox.setCursor(QtCore.Qt.CursorShape.IBeamCursor)
export_dir_layout.setContentsMargins(5, 7, 5, 0) export_dir_layout.setContentsMargins(5, 7, 5, 0)
export_dir_layout.setStretch(1, 3) export_dir_layout.setStretch(1, 3)
export_dir_layout.setSpacing(5) export_dir_layout.setSpacing(5)
...@@ -324,7 +324,7 @@ class GPSDialog(QtWidgets.QWidget): ...@@ -324,7 +324,7 @@ class GPSDialog(QtWidgets.QWidget):
based on the folder selected by the user. based on the folder selected by the user.
""" """
fd = QtWidgets.QFileDialog(self) fd = QtWidgets.QFileDialog(self)
fd.setFileMode(QtWidgets.QFileDialog.Directory) fd.setFileMode(QtWidgets.QFileDialog.FileMode.Directory)
fd.setDirectory(self.export_dir_textbox.text()) fd.setDirectory(self.export_dir_textbox.text())
fd.exec() fd.exec()
new_path = fd.selectedFiles()[0] new_path = fd.selectedFiles()[0]
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
from typing import Tuple, Union, Dict, List from typing import Tuple, Union, Dict, List
from PySide2 import QtCore from PySide6 import QtCore
from sohstationviewer.model.general_data.general_data import GeneralData from sohstationviewer.model.general_data.general_data import GeneralData
......
from PySide2 import QtCore from PySide6 import QtCore
from sohstationviewer.conf import constants as const from sohstationviewer.conf import constants as const
from sohstationviewer.view.plotting.plotting_widget.plotting_processor_helper\ from sohstationviewer.view.plotting.plotting_widget.plotting_processor_helper\
......
...@@ -6,10 +6,10 @@ import numpy as np ...@@ -6,10 +6,10 @@ import numpy as np
import matplotlib.text import matplotlib.text
from matplotlib import pyplot as pl from matplotlib import pyplot as pl
from matplotlib.transforms import Bbox from matplotlib.transforms import Bbox
from PySide2.QtCore import QTimer, Qt, QSize from PySide6.QtCore import QTimer, QSize
from PySide2.QtGui import QResizeEvent from PySide6.QtGui import QResizeEvent
from PySide2 import QtCore, QtWidgets from PySide6 import QtCore, QtWidgets
from PySide2.QtWidgets import QWidget, QApplication, QTextBrowser from PySide6.QtWidgets import QWidget, QApplication, QTextBrowser
from sohstationviewer.conf import constants from sohstationviewer.conf import constants
from sohstationviewer.view.util.color import set_color_mode from sohstationviewer.view.util.color import set_color_mode
...@@ -396,7 +396,7 @@ class PlottingWidget(QtWidgets.QScrollArea): ...@@ -396,7 +396,7 @@ class PlottingWidget(QtWidgets.QScrollArea):
if self.plotting_data1 == {}: if self.plotting_data1 == {}:
return return
if self.name == 'TPS': if self.name == 'TPS':
if modifiers == QtCore.Qt.ShiftModifier: if modifiers == QtCore.Qt.KeyboardModifier.ShiftModifier:
# not start zooming from TPS Widget # not start zooming from TPS Widget
return return
# on_button_press_event() take place after on_pick_event where # on_button_press_event() take place after on_pick_event where
...@@ -407,8 +407,9 @@ class PlottingWidget(QtWidgets.QScrollArea): ...@@ -407,8 +407,9 @@ class PlottingWidget(QtWidgets.QScrollArea):
# We only want to remove the text on the ruler when we start zooming in # We only want to remove the text on the ruler when we start zooming in
# or move the ruler to another location. # or move the ruler to another location.
if modifiers in [QtCore.Qt.ControlModifier, QtCore.Qt.MetaModifier, if modifiers in [QtCore.Qt.KeyboardModifier.ControlModifier,
Qt.ShiftModifier]: QtCore.Qt.KeyboardModifier.MetaModifier,
QtCore.Qt.KeyboardModifier.ShiftModifier]:
try: try:
self.ruler_text.remove() self.ruler_text.remove()
self.ruler_text = None self.ruler_text = None
...@@ -416,22 +417,23 @@ class PlottingWidget(QtWidgets.QScrollArea): ...@@ -416,22 +417,23 @@ class PlottingWidget(QtWidgets.QScrollArea):
pass pass
for w in self.peer_plotting_widgets: for w in self.peer_plotting_widgets:
if modifiers in [QtCore.Qt.ControlModifier, QtCore.Qt.MetaModifier, if modifiers in [QtCore.Qt.KeyboardModifier.ControlModifier,
Qt.ShiftModifier]: QtCore.Qt.KeyboardModifier.MetaModifier,
QtCore.Qt.KeyboardModifier.ShiftModifier]:
try: try:
w.ruler_text.remove() w.ruler_text.remove()
w.ruler_text = None w.ruler_text = None
except AttributeError: except AttributeError:
pass pass
if modifiers == QtCore.Qt.ShiftModifier: if modifiers == QtCore.Qt.KeyboardModifier.ShiftModifier:
w.on_shift_click(xdata) w.on_shift_click(xdata)
elif modifiers in [QtCore.Qt.ControlModifier, elif modifiers in [QtCore.Qt.KeyboardModifier.ControlModifier,
QtCore.Qt.MetaModifier]: QtCore.Qt.KeyboardModifier.MetaModifier]:
w.on_ctrl_cmd_click(xdata) w.on_ctrl_cmd_click(xdata)
w.draw() w.draw()
if (not self.is_button_press_event_triggered_pick_event or if (not self.is_button_press_event_triggered_pick_event or
modifiers == QtCore.Qt.ShiftModifier): modifiers == QtCore.Qt.KeyboardModifier.ShiftModifier):
# Bring the main window to the front only if no point was picked. # Bring the main window to the front only if no point was picked.
# In logpeek and qpeek, zooming is always done, event if a point is # In logpeek and qpeek, zooming is always done, event if a point is
# picked, so we replicate that here. # picked, so we replicate that here.
...@@ -518,7 +520,7 @@ class PlottingWidget(QtWidgets.QScrollArea): ...@@ -518,7 +520,7 @@ class PlottingWidget(QtWidgets.QScrollArea):
:param event: QKeyEvent - event to know what key is pressed :param event: QKeyEvent - event to know what key is pressed
""" """
if event.key() == QtCore.Qt.Key_Escape: if event.key() == QtCore.Qt.Key.Key_Escape:
try: try:
self.ruler_text.remove() self.ruler_text.remove()
self.ruler_text = None self.ruler_text = None
...@@ -690,10 +692,11 @@ class PlottingWidget(QtWidgets.QScrollArea): ...@@ -690,10 +692,11 @@ class PlottingWidget(QtWidgets.QScrollArea):
msgbox = QtWidgets.QMessageBox() msgbox = QtWidgets.QMessageBox()
msgbox.setWindowTitle("Color Mode Conflict") msgbox.setWindowTitle("Color Mode Conflict")
msgbox.setText(msg) msgbox.setText(msg)
msgbox.addButton(QtWidgets.QMessageBox.Cancel) msgbox.addButton(QtWidgets.QMessageBox.StandardButton.Cancel)
msgbox.addButton('Continue', QtWidgets.QMessageBox.YesRole) msgbox.addButton('Continue',
QtWidgets.QMessageBox.ButtonRole.YesRole)
result = msgbox.exec() result = msgbox.exec()
if result == QtWidgets.QMessageBox.Cancel: if result == QtWidgets.QMessageBox.StandardButton.Cancel:
return return
self.main_window.color_mode = self.c_mode self.main_window.color_mode = self.c_mode
if self.c_mode == 'B': if self.c_mode == 'B':
...@@ -707,10 +710,11 @@ class PlottingWidget(QtWidgets.QScrollArea): ...@@ -707,10 +710,11 @@ class PlottingWidget(QtWidgets.QScrollArea):
msgbox = QtWidgets.QMessageBox() msgbox = QtWidgets.QMessageBox()
msgbox.setWindowTitle("Background Mode Confirmation") msgbox.setWindowTitle("Background Mode Confirmation")
msgbox.setText(msg) msgbox.setText(msg)
msgbox.addButton(QtWidgets.QMessageBox.Cancel) msgbox.addButton(QtWidgets.QMessageBox.StandardButton.Cancel)
msgbox.addButton('Continue', QtWidgets.QMessageBox.YesRole) msgbox.addButton('Continue',
QtWidgets.QMessageBox.ButtonRole.YesRole)
result = msgbox.exec() result = msgbox.exec()
if result == QtWidgets.QMessageBox.Cancel: if result == QtWidgets.QMessageBox.StandardButton.Cancel:
return return
save_plot_dlg = SavePlotDialog( save_plot_dlg = SavePlotDialog(
self.parent, self.main_window, default_name) self.parent, self.main_window, default_name)
......
# Display time-power-squared values for waveform data # Display time-power-squared values for waveform data
from typing import Union, Tuple, Dict, List from typing import Union, Tuple, Dict, List
from PySide2 import QtWidgets, QtCore from PySide6 import QtWidgets, QtCore
from PySide2.QtCore import QEventLoop, Qt from PySide6.QtCore import QEventLoop, Qt
from PySide2.QtGui import QCursor from PySide6.QtGui import QCursor
from PySide2.QtWidgets import QApplication, QTabWidget from PySide6.QtWidgets import QApplication, QTabWidget
from sohstationviewer.database.extract_data import ( from sohstationviewer.database.extract_data import (
get_color_def, get_color_ranges get_color_def, get_color_ranges
......
from typing import Dict, Optional, List from typing import Dict, Optional, List
import numpy as np import numpy as np
from PySide2 import QtCore from PySide6 import QtCore
from sohstationviewer.view.plotting.time_power_square.\ from sohstationviewer.view.plotting.time_power_square.\
time_power_squared_helper import get_tps_for_discontinuous_data time_power_squared_helper import get_tps_for_discontinuous_data
...@@ -14,7 +14,19 @@ class TimePowerSquaredProcessorSignal(QtCore.QObject): ...@@ -14,7 +14,19 @@ class TimePowerSquaredProcessorSignal(QtCore.QObject):
class TimePowerSquaredProcessor(QtCore.QRunnable): class TimePowerSquaredProcessor(QtCore.QRunnable):
def __init__(self, channel_id: str, channel_data: dict, start_time: float, def __init__(self, channel_id: str, channel_data: dict, start_time: float,
end_time: float, start_5mins_of_diff_days: np.ndarray): end_time: float, start_5mins_of_diff_days: np.ndarray,
tps_data: Optional[Dict]):
"""
:param channel_id: name of channel
:param channel_data: data of channel
:param start_time: start epoch time of data
:param end_time: end epoch time of data
:param start_5mins_of_diff_days: [[288 of floats], ] - the list of
start of all five minutes of days specified by start_tm and end_tm in
which each day has 288 of 5 minutes.
:param tps_data: calculated tps_data from the first plot or None for
the first plot
"""
super().__init__() super().__init__()
self.channel_id = channel_id self.channel_id = channel_id
self.channel_data = channel_data self.channel_data = channel_data
...@@ -22,6 +34,7 @@ class TimePowerSquaredProcessor(QtCore.QRunnable): ...@@ -22,6 +34,7 @@ class TimePowerSquaredProcessor(QtCore.QRunnable):
self.end_time = end_time self.end_time = end_time
self.start_5mins_of_diff_days = start_5mins_of_diff_days self.start_5mins_of_diff_days = start_5mins_of_diff_days
self.signals = TimePowerSquaredProcessorSignal() self.signals = TimePowerSquaredProcessorSignal()
self.tps_data = tps_data
# Flag to indicate whether the processor should stop running and clean # Flag to indicate whether the processor should stop running and clean
# up. # up.
self.stop = False self.stop = False
...@@ -77,8 +90,11 @@ class TimePowerSquaredProcessor(QtCore.QRunnable): ...@@ -77,8 +90,11 @@ class TimePowerSquaredProcessor(QtCore.QRunnable):
saved in channel_data['tps-data']: np.mean(np.square(5m data)) saved in channel_data['tps-data']: np.mean(np.square(5m data))
""" """
self.channel_data['tps_data'] = get_tps_for_discontinuous_data( if self.tps_data is None:
self.channel_data, self.start_5mins_of_diff_days) self.channel_data['tps_data'] = get_tps_for_discontinuous_data(
self.channel_data, self.start_5mins_of_diff_days)
else:
self.channel_data['tps_data'] = self.tps_data
self.signals.finished.emit(self.channel_id) self.signals.finished.emit(self.channel_id)
......
...@@ -2,7 +2,7 @@ from math import sqrt ...@@ -2,7 +2,7 @@ from math import sqrt
from typing import List, Tuple, Union, Dict from typing import List, Tuple, Union, Dict
import numpy as np import numpy as np
from PySide2 import QtCore from PySide6 import QtCore
from matplotlib.axes import Axes from matplotlib.axes import Axes
from matplotlib.lines import Line2D from matplotlib.lines import Line2D
...@@ -131,15 +131,17 @@ class TimePowerSquaredWidget(plotting_widget.PlottingWidget): ...@@ -131,15 +131,17 @@ class TimePowerSquaredWidget(plotting_widget.PlottingWidget):
for chan_id in self.plotting_data1: for chan_id in self.plotting_data1:
c_data = self.plotting_data1[chan_id] c_data = self.plotting_data1[chan_id]
if 'tps_data' not in c_data: tps_data = None
self.channels.append(chan_id) if 'tps_data' in c_data:
channel_processor = TimePowerSquaredProcessor( tps_data = c_data['tps_data']
chan_id, c_data, self.min_x, self.max_x, self.channels.append(chan_id)
self.start_5mins_of_diff_days channel_processor = TimePowerSquaredProcessor(
) chan_id, c_data, self.min_x, self.max_x,
channel_processor.signals.finished.connect(self.channel_done) self.start_5mins_of_diff_days, tps_data
channel_processor.signals.stopped.connect(self.channel_done) )
self.tps_processors.append(channel_processor) channel_processor.signals.finished.connect(self.channel_done)
channel_processor.signals.stopped.connect(self.channel_done)
self.tps_processors.append(channel_processor)
# Because the widget determine if processing is done by comparing the # Because the widget determine if processing is done by comparing the
# lists of scheduled and finished channels, if a channel runs fast # lists of scheduled and finished channels, if a channel runs fast
...@@ -183,7 +185,6 @@ class TimePowerSquaredWidget(plotting_widget.PlottingWidget): ...@@ -183,7 +185,6 @@ class TimePowerSquaredWidget(plotting_widget.PlottingWidget):
Add finishing touches to the plot Add finishing touches to the plot
Emit the stopped signal of the widget Emit the stopped signal of the widget
""" """
if chan_id == '': if chan_id == '':
msg = f'{self.get_plot_name()} stopped.' msg = f'{self.get_plot_name()} stopped.'
else: else:
...@@ -192,6 +193,7 @@ class TimePowerSquaredWidget(plotting_widget.PlottingWidget): ...@@ -192,6 +193,7 @@ class TimePowerSquaredWidget(plotting_widget.PlottingWidget):
self.done() self.done()
display_tracking_info(self.tracking_box, msg) display_tracking_info(self.tracking_box, msg)
self.is_working = False
self.stopped.emit() self.stopped.emit()
def done(self): def done(self):
...@@ -202,7 +204,6 @@ class TimePowerSquaredWidget(plotting_widget.PlottingWidget): ...@@ -202,7 +204,6 @@ class TimePowerSquaredWidget(plotting_widget.PlottingWidget):
self.main_widget.setFixedHeight(self.plotting_bot_pixel) self.main_widget.setFixedHeight(self.plotting_bot_pixel)
self.set_lim_markers() self.set_lim_markers()
self.draw() self.draw()
self.is_working = False
def plot_channel(self, c_data: str, chan_id: str) -> Axes: def plot_channel(self, c_data: str, chan_id: str) -> Axes:
""" """
......
# Drawing waveform and mass position # Drawing waveform and mass position
from typing import Tuple, Union, Dict from typing import Tuple, Union, Dict
from PySide2 import QtCore, QtWidgets from PySide6 import QtCore, QtWidgets
from sohstationviewer.model.general_data.general_data import GeneralData from sohstationviewer.model.general_data.general_data import GeneralData
......
...@@ -4,8 +4,8 @@ import os ...@@ -4,8 +4,8 @@ import os
from pathlib import Path from pathlib import Path
from typing import Union, Optional from typing import Union, Optional
from PySide2 import QtWidgets, QtCore, QtGui from PySide6 import QtWidgets, QtCore, QtGui
from PySide2.QtWidgets import QApplication, QWidget, QDialog from PySide6.QtWidgets import QApplication, QWidget, QDialog
from sohstationviewer.conf import constants from sohstationviewer.conf import constants
...@@ -67,7 +67,7 @@ class SavePlotDialog(QDialog): ...@@ -67,7 +67,7 @@ class SavePlotDialog(QDialog):
main_layout.addWidget(self.save_filename_textbox, 1, 1, 1, 5) main_layout.addWidget(self.save_filename_textbox, 1, 1, 1, 5)
main_layout.addWidget(QtWidgets.QLabel('DPI'), main_layout.addWidget(QtWidgets.QLabel('DPI'),
2, 2, 1, 1, QtGui.Qt.AlignRight) 2, 2, 1, 1, QtGui.Qt.AlignmentFlag.AlignRight)
self.dpi_line_edit.setRange(50, 300) self.dpi_line_edit.setRange(50, 300)
self.dpi_line_edit.setValue(100) self.dpi_line_edit.setValue(100)
main_layout.addWidget(self.dpi_line_edit, 2, 3, 1, 1) main_layout.addWidget(self.dpi_line_edit, 2, 3, 1, 1)
...@@ -91,7 +91,7 @@ class SavePlotDialog(QDialog): ...@@ -91,7 +91,7 @@ class SavePlotDialog(QDialog):
based on the folder selected by the user. based on the folder selected by the user.
""" """
fd = QtWidgets.QFileDialog(self) fd = QtWidgets.QFileDialog(self)
fd.setFileMode(QtWidgets.QFileDialog.Directory) fd.setFileMode(QtWidgets.QFileDialog.FileMode.Directory)
fd.setDirectory(self.save_dir_textbox.text()) fd.setDirectory(self.save_dir_textbox.text())
fd.exec() fd.exec()
new_path = fd.selectedFiles()[0] new_path = fd.selectedFiles()[0]
......