mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-02 08:54:53 +01:00
different way how to define delegates with more abilities
This commit is contained in:
parent
558ca50ed1
commit
e771d4b887
2 changed files with 42 additions and 11 deletions
|
|
@ -2,10 +2,21 @@ from Qt import QtWidgets, QtCore
|
|||
|
||||
|
||||
class NumberDelegate(QtWidgets.QStyledItemDelegate):
|
||||
def __init__(self, minimum, maximum, decimals, *args, **kwargs):
|
||||
super(NumberDelegate, self).__init__(*args, **kwargs)
|
||||
self.minimum = minimum
|
||||
self.maximum = maximum
|
||||
self.decimals = decimals
|
||||
|
||||
def createEditor(self, parent, option, index):
|
||||
editor = QtWidgets.QSpinBox(parent)
|
||||
editor.setMaximum(999999)
|
||||
editor.setMinimum(0)
|
||||
print(option.rect)
|
||||
if self.decimals > 0:
|
||||
editor = QtWidgets.QDoubleSpinBox(parent)
|
||||
else:
|
||||
editor = QtWidgets.QSpinBox(parent)
|
||||
editor.setMinimum(self.minimum)
|
||||
editor.setMaximum(self.maximum)
|
||||
|
||||
value = index.data(QtCore.Qt.DisplayRole)
|
||||
if value is not None:
|
||||
editor.setValue(value)
|
||||
|
|
|
|||
|
|
@ -3,15 +3,27 @@ from Qt import QtWidgets, QtCore
|
|||
from .delegates import NumberDelegate, StringDelegate
|
||||
|
||||
|
||||
class StringDef:
|
||||
def __init__(self, regex=None):
|
||||
self.regex = regex
|
||||
|
||||
|
||||
class NumberDef:
|
||||
def __init__(self, minimum=None, maximum=None, decimals=None):
|
||||
self.minimum = 0 if minimum is None else minimum
|
||||
self.maximum = 999999 if maximum is None else maximum
|
||||
self.decimals = 0 if decimals is None else decimals
|
||||
|
||||
|
||||
class HierarchyView(QtWidgets.QTreeView):
|
||||
"""A tree view that deselects on clicking on an empty area in the view"""
|
||||
column_delegate_defs = {
|
||||
"name": StringDelegate,
|
||||
"frameStart": NumberDelegate,
|
||||
"frameEnd": NumberDelegate,
|
||||
"fps": NumberDelegate,
|
||||
"resolutionWidth": NumberDelegate,
|
||||
"resolutionHeight": NumberDelegate
|
||||
"name": StringDef(),
|
||||
"frameStart": NumberDef(1),
|
||||
"frameEnd": NumberDef(1),
|
||||
"fps": NumberDef(1, decimals=2),
|
||||
"resolutionWidth": NumberDef(0),
|
||||
"resolutionHeight": NumberDef(0)
|
||||
}
|
||||
persistent_columns = [
|
||||
"frameStart",
|
||||
|
|
@ -32,8 +44,16 @@ class HierarchyView(QtWidgets.QTreeView):
|
|||
|
||||
column_delegates = {}
|
||||
column_key_to_index = {}
|
||||
for key, delegate_klass in self.column_delegate_defs.items():
|
||||
delegate = delegate_klass()
|
||||
for key, item_type in self.column_delegate_defs.items():
|
||||
if isinstance(item_type, StringDef):
|
||||
delegate = StringDelegate()
|
||||
elif isinstance(item_type, NumberDef):
|
||||
delegate = NumberDelegate(
|
||||
item_type.minimum,
|
||||
item_type.maximum,
|
||||
item_type.decimals
|
||||
)
|
||||
|
||||
column = self._source_model.columns.index(key)
|
||||
self.setItemDelegateForColumn(column, delegate)
|
||||
column_delegates[key] = delegate
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue