Skip to content
Snippets Groups Projects
Commit 71ba6a2f authored by Lan Dam's avatar Lan Dam
Browse files

dialog to edit valueColors for triColorLines

parent ae2c5406
No related branches found
No related tags found
2 merge requests!217Implement dialogs to edit valueColors for 2 multiColorDots plot types,!214Implement dialogs to edit valueColors for different plot types
import sys
import platform
import os
from PySide2 import QtWidgets
from PySide2.QtWidgets import QWidget
from sohstationviewer.view.db_config.value_color_helper.\
edit_value_color_dialog.edit_value_color_dialog_super_class import \
EditValueColorDialog, display_color
class TriColorLinesDialog(EditValueColorDialog):
def __init__(self, parent: QWidget, value_color_str: str):
"""
Dialog to edit color for Up/Down Plot
:param parent: the parent widget
:param value_color_str: string for value color to be saved in DB
"""
# Widget that allow user to add/edit value positive one's color
self.select_pos_one_color_btn = QtWidgets.QPushButton("Select Color")
# Widget to display positive one's color
self.pos_one_color_label = QtWidgets.QLabel()
self.pos_one_color_label.setFixedWidth(30)
self.pos_one_color_label.setAutoFillBackground(True)
# Widget that allow user to add/edit value zero's color
self.select_zero_color_btn = QtWidgets.QPushButton("Select Color")
# Widget to display down's color
self.zero_color_label = QtWidgets.QLabel()
self.zero_color_label.setFixedWidth(30)
self.zero_color_label.setAutoFillBackground(True)
# Widget that allow user to add/edit value positive one's color
self.select_neg_one_color_btn = QtWidgets.QPushButton("Select Color")
# Widget to display positive one's color
self.neg_one_color_label = QtWidgets.QLabel()
self.neg_one_color_label.setFixedWidth(30)
self.neg_one_color_label.setAutoFillBackground(True)
super(TriColorLinesDialog, self).__init__(parent, value_color_str)
self.setWindowTitle("Edit TriColor Plotting's Colors")
def setup_ui(self) -> None:
self.main_layout.addWidget(QtWidgets.QLabel('" 1" Color'), 0, 0, 1, 1)
self.main_layout.addWidget(self.pos_one_color_label, 0, 1, 1, 1)
self.main_layout.addWidget(self.select_pos_one_color_btn, 0, 2, 1, 1)
self.main_layout.addWidget(QtWidgets.QLabel('" 0" Color'), 1, 0, 1, 1)
self.main_layout.addWidget(self.zero_color_label, 1, 1, 1, 1)
self.main_layout.addWidget(self.select_zero_color_btn, 1, 2, 1, 1)
self.main_layout.addWidget(QtWidgets.QLabel('"-1" Color'), 2, 0, 1, 1)
self.main_layout.addWidget(self.neg_one_color_label, 2, 1, 1, 1)
self.main_layout.addWidget(self.select_neg_one_color_btn, 2, 2, 1, 1)
self.setup_complete_buttons(3)
def connect_signals(self) -> None:
self.select_pos_one_color_btn.clicked.connect(
lambda: self.on_select_color(self.pos_one_color_label))
self.select_zero_color_btn.clicked.connect(
lambda: self.on_select_color(self.zero_color_label))
self.select_neg_one_color_btn.clicked.connect(
lambda: self.on_select_color(self.neg_one_color_label))
super().connect_signals()
def set_value(self):
"""
Change the corresponding color_labels's color according to the color
from value_color_str.
"""
if self.value_color_str == "":
return
vc_parts = self.value_color_str.split('|')
for vc_str in vc_parts:
val, color = vc_str.split(':')
if val == '1':
display_color(self.pos_one_color_label, color)
if val == '0':
display_color(self.zero_color_label, color)
if val == '-1':
display_color(self.neg_one_color_label, color)
def on_save_color(self):
"""
Create value_color_str from GUI's info and close the GUI with color
is the hex color got from color_labels' color
"""
pos_one_color = self.pos_one_color_label.palette()\
.window().color().name()
zero_color = self.zero_color_label.palette().window().color().name()
neg_one_color = self.neg_one_color_label.palette() \
.window().color().name()
self.value_color_str = (f"-1:{neg_one_color}|0:{zero_color}"
f"|1:{pos_one_color}")
self.close()
if __name__ == '__main__':
os_name, version, *_ = platform.platform().split('-')
if os_name == 'macOS':
os.environ['QT_MAC_WANTS_LAYER'] = '1'
app = QtWidgets.QApplication(sys.argv)
test = TriColorLinesDialog(None, '-1:#FF00FF|0:#FF0000|1:#00FF00')
test.exec_()
sys.exit(app.exec_())
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment