mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 16:34:53 +01:00
feature/AY-3430_revert_to_default_context_menu_option
This commit is contained in:
parent
d3d359663e
commit
c36121f924
1 changed files with 77 additions and 1 deletions
|
|
@ -313,7 +313,10 @@ class NumberAttrWidget(_BaseAttrDefWidget):
|
||||||
self.main_layout.addWidget(multisel_widget, 0)
|
self.main_layout.addWidget(multisel_widget, 0)
|
||||||
|
|
||||||
def eventFilter(self, obj, event):
|
def eventFilter(self, obj, event):
|
||||||
if (
|
if event.type() == QtCore.QEvent.Type.ContextMenu:
|
||||||
|
QtCore.QTimer.singleShot(0, self._on_menu_timeout)
|
||||||
|
super(NumberAttrWidget, self).contextMenuEvent(event)
|
||||||
|
elif (
|
||||||
self._multivalue
|
self._multivalue
|
||||||
and obj is self._input_widget
|
and obj is self._input_widget
|
||||||
and event.type() == QtCore.QEvent.FocusOut
|
and event.type() == QtCore.QEvent.FocusOut
|
||||||
|
|
@ -321,6 +324,18 @@ class NumberAttrWidget(_BaseAttrDefWidget):
|
||||||
self._set_multiselection_visible(True)
|
self._set_multiselection_visible(True)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def _on_menu_timeout(self):
|
||||||
|
menu = self.findChild(QtWidgets.QMenu, "qt_edit_menu")
|
||||||
|
if menu is not None:
|
||||||
|
first_action = menu.actionAt(QtCore.QPoint())
|
||||||
|
action = QtWidgets.QAction(menu)
|
||||||
|
action.setText("Reset to default")
|
||||||
|
action.triggered.connect(self.reset_to_default_requested)
|
||||||
|
menu.insertAction(first_action, action)
|
||||||
|
|
||||||
|
def reset_to_default_requested(self):
|
||||||
|
self.set_value(self.attr_def.default)
|
||||||
|
|
||||||
def current_value(self):
|
def current_value(self):
|
||||||
return self._input_widget.value()
|
return self._input_widget.value()
|
||||||
|
|
||||||
|
|
@ -403,10 +418,30 @@ class TextAttrWidget(_BaseAttrDefWidget):
|
||||||
|
|
||||||
input_widget.textChanged.connect(self._on_value_change)
|
input_widget.textChanged.connect(self._on_value_change)
|
||||||
|
|
||||||
|
input_widget.installEventFilter(self)
|
||||||
|
|
||||||
self._input_widget = input_widget
|
self._input_widget = input_widget
|
||||||
|
|
||||||
self.main_layout.addWidget(input_widget, 0)
|
self.main_layout.addWidget(input_widget, 0)
|
||||||
|
|
||||||
|
def eventFilter(self, obj, event):
|
||||||
|
if event.type() == QtCore.QEvent.Type.ContextMenu:
|
||||||
|
QtCore.QTimer.singleShot(0, self._on_menu_timeout)
|
||||||
|
super(TextAttrWidget, self).contextMenuEvent(event)
|
||||||
|
return False
|
||||||
|
|
||||||
|
def _on_menu_timeout(self):
|
||||||
|
menu = self.findChild(QtWidgets.QMenu, "qt_edit_menu")
|
||||||
|
if menu is not None:
|
||||||
|
first_action = menu.actionAt(QtCore.QPoint())
|
||||||
|
action = QtWidgets.QAction(menu)
|
||||||
|
action.setText("Reset to default")
|
||||||
|
action.triggered.connect(self.reset_to_default_requested)
|
||||||
|
menu.insertAction(first_action, action)
|
||||||
|
|
||||||
|
def reset_to_default_requested(self):
|
||||||
|
self.set_value(self.attr_def.default)
|
||||||
|
|
||||||
def _on_value_change(self):
|
def _on_value_change(self):
|
||||||
if self.multiline:
|
if self.multiline:
|
||||||
new_value = self._input_widget.toPlainText()
|
new_value = self._input_widget.toPlainText()
|
||||||
|
|
@ -459,6 +494,24 @@ class BoolAttrWidget(_BaseAttrDefWidget):
|
||||||
self.main_layout.addWidget(input_widget, 0)
|
self.main_layout.addWidget(input_widget, 0)
|
||||||
self.main_layout.addStretch(1)
|
self.main_layout.addStretch(1)
|
||||||
|
|
||||||
|
self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
|
||||||
|
self.customContextMenuRequested.connect(self._on_context_menu)
|
||||||
|
|
||||||
|
def _on_context_menu(self, pos):
|
||||||
|
print("_on_context_menu", pos)
|
||||||
|
self._menu = QtWidgets.QMenu(self)
|
||||||
|
|
||||||
|
action = QtWidgets.QAction(self._menu)
|
||||||
|
action.setText("Reset to default")
|
||||||
|
action.triggered.connect(self.reset_to_default_requested)
|
||||||
|
self._menu.addAction(action)
|
||||||
|
|
||||||
|
global_pos = self.mapToGlobal(pos)
|
||||||
|
self._menu.exec_(global_pos)
|
||||||
|
|
||||||
|
def reset_to_default_requested(self):
|
||||||
|
self.set_value(self.attr_def.default)
|
||||||
|
|
||||||
def _on_value_change(self):
|
def _on_value_change(self):
|
||||||
new_value = self._input_widget.isChecked()
|
new_value = self._input_widget.isChecked()
|
||||||
self.value_changed.emit(new_value, self.attr_def.id)
|
self.value_changed.emit(new_value, self.attr_def.id)
|
||||||
|
|
@ -489,6 +542,29 @@ class EnumAttrWidget(_BaseAttrDefWidget):
|
||||||
self._multivalue = False
|
self._multivalue = False
|
||||||
super(EnumAttrWidget, self).__init__(*args, **kwargs)
|
super(EnumAttrWidget, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
self._input_widget.installEventFilter(self)
|
||||||
|
|
||||||
|
def eventFilter(self, obj, event):
|
||||||
|
if event.type() == QtCore.QEvent.Type.ContextMenu:
|
||||||
|
print("eventFilter QtCore.QEvent.Type.ContextMenu")
|
||||||
|
self._on_context_menu(event.pos())
|
||||||
|
return False
|
||||||
|
|
||||||
|
def _on_context_menu(self, pos):
|
||||||
|
print("_on_context_menu", pos)
|
||||||
|
self._menu = QtWidgets.QMenu(self)
|
||||||
|
|
||||||
|
self._action = QtWidgets.QAction(self._menu)
|
||||||
|
self._action.setText("Reset to default")
|
||||||
|
self._action.triggered.connect(self.reset_to_default_requested)
|
||||||
|
self._menu.addAction(self._action)
|
||||||
|
|
||||||
|
global_pos = self.mapToGlobal(pos)
|
||||||
|
self._menu.exec_(global_pos)
|
||||||
|
|
||||||
|
def reset_to_default_requested(self):
|
||||||
|
self.set_value(self.attr_def.default)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def multiselection(self):
|
def multiselection(self):
|
||||||
return self.attr_def.multiselection
|
return self.attr_def.multiselection
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue