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

Merge branch 'i69_edit_valuecolor_dialog_updowndots' into i69_edit_value_color_for_multiColorDots

parents ca93dce4 5ac2e35c
No related branches found
No related tags found
1 merge request!217Implement dialogs to edit valueColors for 2 multiColorDots plot types
Pipeline #3228 passed with stage
in 3 minutes and 33 seconds
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 LineDotDialog(EditValueColorDialog):
def __init__(self, parent: QWidget, value_color_str: str):
"""
Dialog to edit color for Line/Dot 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 line's color
self.select_line_color_btn = QtWidgets.QPushButton("Select Color")
# Widget to display line's color
self.line_color_label = QtWidgets.QLabel()
self.line_color_label.setFixedWidth(30)
self.line_color_label.setAutoFillBackground(True)
# check box to include dot in value_color_str or not
self.dot_include_chkbox = QtWidgets.QCheckBox('Included')
# Widget that allow user to add/edit dot's color
self.select_dot_color_btn = QtWidgets.QPushButton("Select Color")
# Widget to display dot's color
self.dot_color_label = QtWidgets.QLabel()
self.dot_color_label.setFixedWidth(30)
self.dot_color_label.setAutoFillBackground(True)
super(LineDotDialog, self).__init__(parent, value_color_str)
self.setWindowTitle("Edit Line/Dot Plotting's Colors")
self.on_click_include_dot()
def setup_ui(self) -> None:
self.main_layout.addWidget(QtWidgets.QLabel('Line Color'), 0, 1, 1, 1)
self.main_layout.addWidget(self.line_color_label, 0, 2, 1, 1)
self.main_layout.addWidget(self.select_line_color_btn, 0, 3, 1, 1)
self.main_layout.addWidget(self.dot_include_chkbox, 1, 0, 1, 1)
self.main_layout.addWidget(QtWidgets.QLabel('Dot Color'), 1, 1, 1, 1)
self.main_layout.addWidget(self.dot_color_label, 1, 2, 1, 1)
self.main_layout.addWidget(self.select_dot_color_btn, 1, 3, 1, 1)
self.setup_complete_buttons(2)
def connect_signals(self) -> None:
self.select_line_color_btn.clicked.connect(
lambda: self.on_select_color(self.line_color_label))
self.select_dot_color_btn.clicked.connect(
lambda: self.on_select_color(self.dot_color_label))
self.dot_include_chkbox.clicked.connect(self.on_click_include_dot)
super().connect_signals()
def on_click_include_dot(self):
"""
Enable/disable select color and show/hide color label according to
dot_include_chkbox is checked or unchecked.
"""
enabled = self.dot_include_chkbox.isChecked()
self.select_dot_color_btn.setEnabled(enabled)
self.dot_color_label.setHidden(not enabled)
def set_value(self):
"""
Change the corresponding color_labels's color according to the color
from value_color_str.
"""
self.dot_include_chkbox.setChecked(False)
if self.value_color_str == "":
return
vc_parts = self.value_color_str.split('|')
for vc_str in vc_parts:
obj_type, color = vc_str.split(':')
if obj_type == 'Line':
display_color(self.line_color_label, color)
if obj_type == 'Dot':
display_color(self.dot_color_label, color)
self.dot_include_chkbox.setChecked(True)
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
"""
line_color = self.line_color_label.palette().window().color().name()
self.value_color_str = f"Line:{line_color}"
if self.dot_include_chkbox.isChecked():
dot_color = self.dot_color_label.palette().window().color().name()
self.value_color_str += f"|Dot:{dot_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 = LineDotDialog(None, "Line:#00FF00|Dot:#00FF00")
test.exec_()
print("result:", test.value_color_str)
sys.exit(app.exec_())
......@@ -499,4 +499,4 @@ if __name__ == '__main__':
None, '<=0:not plot|<=1:#FFFF00|<=2:#00FF00|2<:#FF00FF')
test.exec_()
print("result:", test.value_color_str)
sys.exit(app.exec_())
\ No newline at end of file
sys.exit(app.exec_())
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_()
print("result:", test.value_color_str)
sys.exit(app.exec_())
......@@ -85,4 +85,5 @@ if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
test = UpDownDialog(None, 'Down:#FF0000|Up:#00FF00')
test.exec_()
print("result:", test.value_color_str)
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