# -*- coding: utf-8 -*-
"""
This file contains some dialog classes that are created for the CGDAT GUI. These classes inherit from the
QtWidgets.Qdialog Class.
"""
# Set all
__all__ = ["progressDialog", "importDialog", "outputSettingsDialog"]
# Import needed pyqt modules modules
from PyQt5 import QtWidgets, QtCore, QtGui
import os
# Import other classes
from .. import qt_ui
from .qt_extra import MultiSelectMenu
#####################################################################
## Script Media paths ###############################################
#####################################################################
DIRNAME = os.path.dirname(os.path.abspath(__file__)) # Get relative script path
TOGGLE_ICON_ON = os.path.abspath(
os.path.join(DIRNAME, "..", "static/media/toggle_on.png")
).replace(
"\\", "/"
) # Toggle on icon
TOGGLE_ICON_DISABLED = os.path.abspath(
os.path.join(DIRNAME, "..", "static/media/toggle_off_disabled.png")
).replace(
"\\", "/"
) # Toggle on icon
TOGGLE_ICON_OFF = os.path.abspath(
os.path.join(DIRNAME, "..", "static/media/toggle_off.png")
).replace(
"\\", "/"
) # Toggle off icon
#####################################################################
#### Overload custom progress Dialog class ##########################
#####################################################################
[docs]class progressDialog(QtWidgets.QDialog, qt_ui.Ui_ProgressDialog):
"""This class overloads the qt python class that was generated by yQt5.uic.pyuic converter for the
progressDialog so it can be used as a dialog in our main GUI.
Args:
QtWidgets (QtWidgets.QDialog): Main dialog class
Ui_ProgressDialog (object): Custom made dialog class
"""
#################################################
#### Class initializer ####
#################################################
def __init__(self, parent=None):
"""Object initiation.
parent (object, optional): Defaults to None. The partent object the class needs to be applied to.
"""
QtWidgets.QDialog.__init__(
self, parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint
)
self.setupUi(self)
#################################################
#### updateProgressConsole method ####
#################################################
[docs] def updateProgressConsole(self, text, color=None):
"""A function used to append messages to the progress console.
Args:
text (str): The message we want to append.
"""
# Add normal text when no color was given
if not color:
self.progress_console.append(text)
else:
color_txt = '<span style=" color:' + color + ';" >' + text + "</span>"
self.progress_console.append(color_txt)
#################################################
#### updateProgressBar method ####
#################################################
[docs] def updateProgressBar(self, percentage):
"""Function used to update the progress bar.
Args:
int (int): The percentage of the progress bar.
"""
# Set progress bar value
self.progress_bar.setValue(percentage)
# If 100 % change dialog buttons
if percentage == 100.0:
self.buttonBox.removeButton(
self.buttonBox.button(QtWidgets.QDialogButtonBox.Cancel)
) # Remove cancel button
self.buttonBox.addButton("Finish", QtWidgets.QDialogButtonBox.AcceptRole)
#####################################################################
#### Overload custom import Dialog class ####
#####################################################################
[docs]class importDialog(QtWidgets.QDialog, qt_ui.Ui_ImportDialog):
"""This class overloads the qt python class that was generated by yQt5.uic.pyuic converter for the
importDialog so it can be used as a dialog in our main GUI.
Args:
QtWidgets (QtWidgets.QDialog): Main dialog class
Ui_ImportDialog (object): Custom made dialog class
"""
#################################################
#### Class initializer ####
#################################################
def __init__(self, parent=None):
QtWidgets.QDialog.__init__(
self, parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint
)
self.setupUi(self)
#####################################################################
#### Overload custom splash screen Dialog class ####
#####################################################################
class splashDialog(QtWidgets.QDialog, qt_ui.Ui_splash_screen):
"""This class overloads the qt python class that was generated by yQt5.uic.pyuic converter for the
splash screen dialog so it can be used as a dialog in our main GUI.
Args:
QtWidgets (QtWidgets.QDialog): Main dialog class
Ui_ImportDialog (object): Custom made dialog class
"""
#################################################
#### Class initializer ####
#################################################
def __init__(self, parent=None):
QtWidgets.QDialog.__init__(
self, parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint
)
self.setupUi(self)
#####################################################################
#### Overload auto created output settings window class ####
#####################################################################
[docs]class outputSettingsDialog(QtWidgets.QDialog, qt_ui.Ui_OutputSettings):
"""This class overloads the qt python class that was generated by yQt5.uic.pyuic converter for the
output_settings_ui so it can be used as a dialog in our main GUI.
Args:
QtWidgets (QtWidgets.QDialog): Main dialog class
Ui_OutputSettings (object): Custom made dialog class
"""
#################################################
#### Class initializer ####
#################################################
def __init__(self, parent=None):
QtWidgets.QDialog.__init__(
self, parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint
)
self.setupUi(self)
# Create toggle buttons
self.frame_rate_toggle.setStyleSheet(
"QCheckBox::indicator:checked {image: url('"
+ TOGGLE_ICON_ON
+ "');}\n QCheckBox::indicator:unchecked {image: url('"
+ TOGGLE_ICON_OFF
+ "');}\n QCheckBox::indicator:disabled {image: url('"
+ TOGGLE_ICON_DISABLED
+ "');}"
)
self.columns_toggle.setStyleSheet(
"QCheckBox::indicator:checked {image: url('"
+ TOGGLE_ICON_ON
+ "');}\n QCheckBox::indicator:unchecked {image: url('"
+ TOGGLE_ICON_OFF
+ "');}\n QCheckBox::indicator:disabled {image: url('"
+ TOGGLE_ICON_DISABLED
+ "');}"
)
# Create multi checkbox column choicer
self.column_choicer_drop_down_menu = MultiSelectMenu()
font = QtGui.QFont()
font.setPointSize(10)
self.column_choicer_drop_down_menu.setFont(font)
self.column_choicer_drop_down_menu.setObjectName("column_choiser")
sizePolicy = QtWidgets.QSizePolicy(
QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Fixed
)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(
self.column_choicer_drop_down_menu.sizePolicy().hasHeightForWidth()
)
self.column_choicer_drop_down_menu.setSizePolicy(sizePolicy)
# self.column_choicer_drop_down_menu.font(10)
self.additional_output_settings_grid.addWidget(
self.column_choicer_drop_down_menu, 0, 2, 1, 1
)
self.column_choicer_drop_down_menu.setText(
"Please import a data file to see the available columns"
)
self.column_choicer_drop_down_menu.setEnabled(0)
self.columns_toggle.setEnabled(0)