gui: add im/export json settings menu bar actions
This commit is contained in:
@@ -1 +1,2 @@
|
||||
include pykirdy/ui/*
|
||||
include pykirdy/ui/*
|
||||
include pykirdy/settings.schema.json
|
||||
@@ -707,6 +707,57 @@ class MainWindow(QtWidgets.QMainWindow):
|
||||
self.kirdy_handler.end_session()
|
||||
self.menu_action_hard_reset.triggered.connect(reset_kirdy)
|
||||
|
||||
@asyncSlot(str)
|
||||
async def import_settings(path):
|
||||
success = await self.kirdy.import_settings_from_json(path)
|
||||
if success:
|
||||
msg_box = QtWidgets.QMessageBox(self)
|
||||
msg_box.setWindowTitle("Success")
|
||||
msg_box.setIcon(QtWidgets.QMessageBox.Icon.Information)
|
||||
msg_box.setText("Settings are loaded to Kirdy successfully.")
|
||||
msg_box.show()
|
||||
# Failure message is handled by cmd_warning_sig or cmd_error_sig Pyqt signal
|
||||
|
||||
@pyqtSlot(bool)
|
||||
def import_settings_from_json_file(_):
|
||||
file_dialog = QtWidgets.QFileDialog(self)
|
||||
file_dialog.setWindowTitle("Open File")
|
||||
file_dialog.setNameFilter("All Json files (*.json)")
|
||||
file_dialog.setFileMode(QtWidgets.QFileDialog.FileMode.ExistingFile)
|
||||
file_dialog.setViewMode(QtWidgets.QFileDialog.ViewMode.Detail)
|
||||
file_dialog.fileSelected.connect(import_settings)
|
||||
file_dialog.show()
|
||||
|
||||
@pyqtSlot(bool)
|
||||
def import_settings_warning_msg_box(_):
|
||||
msg_box = QtWidgets.QMessageBox(self)
|
||||
msg_box.setWindowTitle("Warning")
|
||||
msg_box.setText("Laser and Thermostat will be powered off before importing settings. Do you want to continue?")
|
||||
msg_box.setIcon(QtWidgets.QMessageBox.Icon.Warning)
|
||||
msg_box.addButton(QtWidgets.QPushButton("No"), QtWidgets.QMessageBox.ButtonRole.RejectRole)
|
||||
yes_button = QtWidgets.QPushButton("Yes")
|
||||
yes_button.clicked.connect(import_settings_from_json_file)
|
||||
msg_box.addButton(yes_button, QtWidgets.QMessageBox.ButtonRole.AcceptRole)
|
||||
msg_box.show()
|
||||
self.menu_action_import_settings_from_json_file.triggered.connect(import_settings_warning_msg_box)
|
||||
|
||||
@asyncSlot(str)
|
||||
async def export_settings(path):
|
||||
await self.kirdy.export_settings_to_json(path)
|
||||
|
||||
@asyncSlot(bool)
|
||||
async def export_settings_to_json_file(_):
|
||||
file_dialog = QtWidgets.QFileDialog(self)
|
||||
file_dialog.setWindowTitle("Save Json File")
|
||||
file_dialog.selectFile("settings.json")
|
||||
file_dialog.setNameFilter("All Json files (*.json)")
|
||||
file_dialog.setFileMode(QtWidgets.QFileDialog.FileMode.ExistingFile)
|
||||
file_dialog.setAcceptMode(QtWidgets.QFileDialog.AcceptMode.AcceptSave)
|
||||
file_dialog.setViewMode(QtWidgets.QFileDialog.ViewMode.Detail)
|
||||
file_dialog.fileSelected.connect(export_settings)
|
||||
file_dialog.show()
|
||||
self.menu_action_export_settings_to_json_file.triggered.connect(export_settings_to_json_file)
|
||||
|
||||
@pyqtSlot(bool)
|
||||
def save_settings(_):
|
||||
self.kirdy_handler.dispatch_task_to_kirdy(self.kirdy.device.save_current_settings_to_flash())
|
||||
@@ -1060,6 +1111,8 @@ class MainWindow(QtWidgets.QMainWindow):
|
||||
self.menu_action_save.setEnabled(result)
|
||||
self.menu_action_load.setEnabled(result)
|
||||
self.menu_action_update_net_settings.setEnabled(result)
|
||||
self.menu_action_export_settings_to_json_file.setEnabled(result)
|
||||
self.menu_action_import_settings_from_json_file.setEnabled(result)
|
||||
menu_bar_setEnable(result)
|
||||
|
||||
def graph_group_setEnable(result):
|
||||
|
||||
@@ -527,7 +527,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>1280</width>
|
||||
<height>23</height>
|
||||
<height>24</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
@@ -552,7 +552,8 @@
|
||||
<addaction name="menu_action_load"/>
|
||||
<addaction name="menu_action_dfu_mode"/>
|
||||
<addaction name="menu_action_hard_reset"/>
|
||||
<addaction name="menu_action_reconfigure_transconductanc"/>
|
||||
<addaction name="menu_action_import_settings_from_json_file"/>
|
||||
<addaction name="menu_action_export_settings_to_json_file"/>
|
||||
</widget>
|
||||
<widget class="QMenu" name="menuAbout">
|
||||
<property name="styleSheet">
|
||||
@@ -708,12 +709,20 @@
|
||||
<string>Load Settings from Flash</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="menu_action_reconfigure_transconductanc">
|
||||
<property name="enabled">
|
||||
<action name="menu_action_export_settings_to_json_file">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Reconfigure Transconductance</string>
|
||||
<string>Export Settings to Json File</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="menu_action_import_settings_from_json_file">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Import Settings from Json File</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
|
||||
Reference in New Issue
Block a user