mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-25 05:14:40 +01:00
settings ui can catch exceptions
This commit is contained in:
parent
9bfaa841a9
commit
0197eaa5d7
2 changed files with 51 additions and 7 deletions
|
|
@ -54,6 +54,7 @@ print(system_settings["general"]["studio_name"].value)
|
|||
"""
|
||||
|
||||
from .exceptions import (
|
||||
SchemaError,
|
||||
DefaultsNotDefined,
|
||||
StudioDefaultsNotDefined,
|
||||
InvalidValueType,
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
import os
|
||||
import sys
|
||||
import traceback
|
||||
from enum import Enum
|
||||
from Qt import QtWidgets, QtCore, QtGui
|
||||
|
||||
|
|
@ -21,7 +23,8 @@ from pype.settings.entities import (
|
|||
RawJsonEntity,
|
||||
|
||||
DefaultsNotDefined,
|
||||
StudioDefaultsNotDefined
|
||||
StudioDefaultsNotDefined,
|
||||
SchemaError
|
||||
)
|
||||
|
||||
from pype.settings.lib import get_system_settings
|
||||
|
|
@ -199,6 +202,7 @@ class SettingsCategoryWidget(QtWidgets.QWidget):
|
|||
|
||||
save_btn.clicked.connect(self._save)
|
||||
|
||||
self.save_btn = save_btn
|
||||
self.scroll_widget = scroll_widget
|
||||
self.content_layout = content_layout
|
||||
self.content_widget = content_widget
|
||||
|
|
@ -280,19 +284,49 @@ class SettingsCategoryWidget(QtWidgets.QWidget):
|
|||
self.content_layout.removeWidget(widget)
|
||||
widget.deleteLater()
|
||||
|
||||
self._create_root_entity()
|
||||
dialog = None
|
||||
try:
|
||||
self._create_root_entity()
|
||||
|
||||
self.add_children_gui()
|
||||
self.add_children_gui()
|
||||
|
||||
self.ignore_input_changes.set_ignore(True)
|
||||
self.ignore_input_changes.set_ignore(True)
|
||||
|
||||
for input_field in self.input_fields:
|
||||
input_field.set_entity_value()
|
||||
for input_field in self.input_fields:
|
||||
input_field.set_entity_value()
|
||||
|
||||
self.ignore_input_changes.set_ignore(False)
|
||||
self.ignore_input_changes.set_ignore(False)
|
||||
|
||||
except SchemaError as exc:
|
||||
dialog = QtWidgets.QMessageBox(self)
|
||||
dialog.setWindowTitle("Schema error")
|
||||
msg = "Implementation bug!\n\nError: {}".format(str(exc))
|
||||
dialog.setText(msg)
|
||||
dialog.setIcon(QtWidgets.QMessageBox.Warning)
|
||||
|
||||
except Exception as exc:
|
||||
formatted_traceback = traceback.format_exception(*sys.exc_info())
|
||||
dialog = QtWidgets.QMessageBox(self)
|
||||
msg = "Unexpected error happened!\n\nError: {}".format(str(exc))
|
||||
dialog.setText(msg)
|
||||
dialog.setDetailedText(formatted_traceback)
|
||||
dialog.setIcon(QtWidgets.QMessageBox.Critical)
|
||||
|
||||
self.set_state(CategoryState.Idle)
|
||||
|
||||
if dialog:
|
||||
dialog.exec_()
|
||||
self._on_reset_crash()
|
||||
else:
|
||||
self._on_reset_success()
|
||||
|
||||
def _on_reset_crash(self):
|
||||
self.save_btn.setEnabled(False)
|
||||
|
||||
def _on_reset_success(self):
|
||||
if not self.save_btn.isEnabled():
|
||||
self.save_btn.setEnabled(True)
|
||||
|
||||
def add_children_gui(self):
|
||||
for child_obj in self.entity.children:
|
||||
item = self.create_ui_for_entity(self, child_obj, self)
|
||||
|
|
@ -404,6 +438,15 @@ class ProjectWidget(SettingsCategoryWidget):
|
|||
if self is saved_tab_widget:
|
||||
return
|
||||
|
||||
def _on_reset_crash(self):
|
||||
self.project_list_widget.setEnabled(False)
|
||||
super(ProjectWidget, self)._on_reset_crash()
|
||||
|
||||
def _on_reset_success(self):
|
||||
if not self.project_list_widget.isEnabled():
|
||||
self.project_list_widget.setEnabled(True)
|
||||
super(ProjectWidget, self)._on_reset_success()
|
||||
|
||||
def _create_root_entity(self):
|
||||
self.entity = ProjectSettings(change_state=False)
|
||||
self.entity.on_change_callbacks.append(self._on_entity_change)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue