import json
from PyQt5 import QtWidgets
from ..widgets.Ui_Camera_params import Ui_Dialog
[docs]
class CameraParameters(Ui_Dialog):
def __init__(self, Parent, RecentWindow):
"""
Create class controller open camera with inheritance from Ui Dialog Class.
Args:
Parent (): the main class of this application
RecentWindow (): The windows displayed now
"""
super(CameraParameters, self).__init__()
self.parent = Parent
self.recent = RecentWindow
self.setupUi(self.recent)
self.data = None
self.a_dict = None
self.list_cam_available()
self.connect_event()
[docs]
def connect_event(self):
"""
Connect a push button to each function
"""
self.List_Parameter.activated.connect(self.handle_combo_box)
self.btn_exit.clicked.connect(self.close_dialog)
self.btn_delete.clicked.connect(self.delete_camera_param)
self.btn_clean_all.clicked.connect(self.clear_all)
self.btn_new.clicked.connect(self.add_new_params)
self.btn_update.clicked.connect(self.update_params)
[docs]
def list_cam_available(self):
"""
Provides information about parameters that have been save in the application
"""
with open(self.parent.camera_parameter) as f:
self.data = json.load(f)
new_list = []
for key in self.data.keys():
new_list.append(key)
self.List_Parameter.addItems(new_list)
[docs]
def handle_combo_box(self):
"""
Displays the selected parameter
"""
camera = self.List_Parameter.currentText()
if camera in self.data.keys():
self.camera_name.setText(self.data[camera]["cameraName"])
self.cam_sensor_width.setText(str(self.data[camera]['cameraSensorWidth']))
self.cam_sensor_height.setText(str(self.data[camera]['cameraSensorHeight']))
self.image_center_X.setText(str(self.data[camera]['iCx']))
self.image_center_Y.setText(str(self.data[camera]['iCy']))
self.ratio.setText(str(self.data[camera]['ratio']))
self.image_width.setText(str(self.data[camera]['imageWidth']))
self.image_height.setText(str(self.data[camera]['imageHeight']))
self.calib_ratio.setText(str(self.data[camera]['calibrationRatio']))
self.parameter0.setText(str(self.data[camera]['parameter0']))
self.parameter1.setText(str(self.data[camera]['parameter1']))
self.parameter2.setText(str(self.data[camera]['parameter2']))
self.parameter3.setText(str(self.data[camera]['parameter3']))
self.parameter4.setText(str(self.data[camera]['parameter4']))
self.parameter5.setText(str(self.data[camera]['parameter5']))
[docs]
def delete_camera_param(self):
"""
Delete parameters that have been save in the application
"""
camera = self.List_Parameter.currentText()
if camera in self.data.keys():
reply = QtWidgets.QMessageBox.question(
self.recent,
'Message',
"Are you want to delete?",
QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No,
QtWidgets.QMessageBox.No)
if reply == QtWidgets.QMessageBox.Yes:
self.data.pop(camera)
with open(self.parent.camera_parameter, 'w') as f:
json.dump(self.data, f)
self.clear_all()
self.List_Parameter.clear()
self.list_cam_available()
QtWidgets.QMessageBox.information(
self.recent,
"Information!!",
"The parameter has been Deleted!!")
else:
pass
[docs]
def update_params(self):
"""
Update parameters that have been save in the application
(Update existing parameter)
"""
self.get_params_from_form()
if self.camera_name.text() in self.data.keys():
reply = QtWidgets.QMessageBox.question(
self.recent,
'Message',
"Are you want to Update?",
QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No,
QtWidgets.QMessageBox.No)
if reply == QtWidgets.QMessageBox.Yes:
self.data.update(self.a_dict)
with open(self.parent.camera_parameter, 'w') as f:
json.dump(self.data, f)
self.handle_combo_box()
QtWidgets.QMessageBox.information(
self.recent,
"Information!!",
"The parameter has been updated!!")
else:
pass
[docs]
def add_new_params(self):
"""
add new parameters to the application
"""
self.get_params_from_form()
if self.camera_name.text() in self.data.keys():
QtWidgets.QMessageBox.information(
self.recent,
"Information!!",
"The parameter already exist!!")
else:
reply = QtWidgets.QMessageBox.question(
self.recent,
'Message',
"Are you want to Add Parameter?",
QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No,
QtWidgets.QMessageBox.No)
if reply == QtWidgets.QMessageBox.Yes:
self.data.update(self.a_dict)
with open(self.parent.camera_parameter, 'w') as f:
json.dump(self.data, f)
self.List_Parameter.clear()
self.list_cam_available()
QtWidgets.QMessageBox.information(
self.recent,
"Information!!",
"The new parameter added!!")
[docs]
def clear_all(self):
"""
Clear all input parameter box (LineEdit)
"""
self.camera_name.setText("")
self.cam_sensor_width.setText("")
self.cam_sensor_height.setText("")
self.image_center_X.setText("")
self.image_center_Y.setText("")
self.ratio.setText("")
self.image_width.setText("")
self.image_height.setText("")
self.calib_ratio.setText("")
self.parameter0.setText("")
self.parameter1.setText("")
self.parameter2.setText("")
self.parameter3.setText("")
self.parameter4.setText("")
self.parameter5.setText("")
[docs]
def close_dialog(self):
"""
Closes the parameter dialog frame and returns to the application
"""
self.recent.reject()