mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
added name and parent inputs, parent is filling based on selected asset
This commit is contained in:
parent
db9c07a32a
commit
81fd4283aa
1 changed files with 39 additions and 55 deletions
|
|
@ -21,6 +21,9 @@ class Window(QtWidgets.QDialog):
|
|||
self.setFocusPolicy(QtCore.Qt.StrongFocus)
|
||||
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
|
||||
|
||||
# Validators
|
||||
self.valid_parent = False
|
||||
|
||||
# assets
|
||||
assets_widgets = QtWidgets.QWidget()
|
||||
assets_widgets.setContentsMargins(0, 0, 0, 0)
|
||||
|
|
@ -30,21 +33,31 @@ class Window(QtWidgets.QDialog):
|
|||
assets_layout.addWidget(assets)
|
||||
|
||||
# info
|
||||
widget_name = QtWidgets.QWidget()
|
||||
widget_name.setContentsMargins(0, 0, 0, 0)
|
||||
layout_name = QtWidgets.QHBoxLayout(widget_name)
|
||||
label_name = QtWidgets.QLabel("Name:")
|
||||
input_name = QtWidgets.QLineEdit()
|
||||
input_name.setPlaceholderText("<asset name>")
|
||||
layout_name.addWidget(label_name)
|
||||
layout_name.addWidget(input_name)
|
||||
|
||||
# Parent
|
||||
widget_parent = QtWidgets.QWidget()
|
||||
widget_parent.setContentsMargins(0, 0, 0, 0)
|
||||
layout_parent = QtWidgets.QHBoxLayout(widget_parent)
|
||||
label_parent = QtWidgets.QLabel("Parent:")
|
||||
input_parent = QtWidgets.QLineEdit()
|
||||
input_parent.setReadOnly(True)
|
||||
input_parent.setStyleSheet("background-color: #333333;") # greyed out
|
||||
layout_parent.addWidget(label_parent)
|
||||
layout_parent.addWidget(input_parent)
|
||||
|
||||
layout = QtWidgets.QVBoxLayout(self)
|
||||
layout.addWidget(label_name)
|
||||
layout.addWidget(input_name)
|
||||
layout.addWidget(label_parent)
|
||||
layout.addWidget(input_parent)
|
||||
info_widget = QtWidgets.QWidget()
|
||||
info_widget.setContentsMargins(0, 0, 0, 0)
|
||||
info_layout = QtWidgets.QVBoxLayout(info_widget)
|
||||
info_layout.addWidget(widget_parent)
|
||||
info_layout.addWidget(widget_name)
|
||||
|
||||
body = QtWidgets.QSplitter()
|
||||
body.setContentsMargins(0, 0, 0, 0)
|
||||
|
|
@ -52,9 +65,9 @@ class Window(QtWidgets.QDialog):
|
|||
QtWidgets.QSizePolicy.Expanding)
|
||||
body.setOrientation(QtCore.Qt.Horizontal)
|
||||
body.addWidget(assets_widgets)
|
||||
body.addWidget(layout)
|
||||
body.addWidget(info_widget)
|
||||
body.setStretchFactor(0, 100)
|
||||
body.setStretchFactor(1, 65)
|
||||
body.setStretchFactor(1, 200)
|
||||
|
||||
# statusbar
|
||||
message = QtWidgets.QLabel()
|
||||
|
|
@ -76,6 +89,10 @@ class Window(QtWidgets.QDialog):
|
|||
"model": {
|
||||
"assets": assets
|
||||
},
|
||||
"inputs": {
|
||||
"parent": input_parent,
|
||||
"name": input_name
|
||||
},
|
||||
"buttons": {
|
||||
|
||||
}
|
||||
|
|
@ -83,18 +100,14 @@ class Window(QtWidgets.QDialog):
|
|||
|
||||
# signals
|
||||
assets.selection_changed.connect(self.on_asset_changed)
|
||||
assets.silo_changed.connect(self.on_silo_changed)
|
||||
|
||||
# on start
|
||||
self.on_asset_changed()
|
||||
self.resize(800, 500)
|
||||
|
||||
self.echo("Connected to project: {0}".format(project_name))
|
||||
|
||||
def refresh(self):
|
||||
self.data["model"]["assets"].refresh()
|
||||
# set silo on start so tasks for silo are shown
|
||||
current_silo = self.data["model"]["assets"].get_current_silo()
|
||||
if current_silo != "":
|
||||
self.on_asset_changed()
|
||||
|
||||
def echo(self, message):
|
||||
widget = self.data["label"]["message"]
|
||||
|
|
@ -104,54 +117,25 @@ class Window(QtWidgets.QDialog):
|
|||
|
||||
print(message)
|
||||
|
||||
def on_add_asset(self):
|
||||
"""Show add asset dialog"""
|
||||
|
||||
# Get parent asset (active index in selection)
|
||||
model = self.data["model"]["assets"]
|
||||
parent_id = model.get_active_asset()
|
||||
|
||||
# Get active silo
|
||||
silo = model.get_current_silo()
|
||||
if not silo:
|
||||
QtWidgets.QMessageBox.critical(self, "Missing silo",
|
||||
"Please create a silo first.\n"
|
||||
"Use the + tab at the top left.")
|
||||
return
|
||||
|
||||
def _on_current_asset_changed():
|
||||
"""Callback on current asset changed in item widget.
|
||||
|
||||
Whenever the current index changes in the item widget we want to
|
||||
update under which asset we're creating *to be created* asset.
|
||||
|
||||
"""
|
||||
|
||||
parent = model.get_active_asset()
|
||||
|
||||
# Signals
|
||||
model.current_changed.connect(_on_current_asset_changed)
|
||||
|
||||
def on_asset_changed(self):
|
||||
"""Callback on asset selection changed
|
||||
|
||||
This updates the task view.
|
||||
|
||||
"""
|
||||
|
||||
model = self.data["model"]["assets"]
|
||||
selected = model.get_selected_assets()
|
||||
# Show task of silo if nothing selected
|
||||
if len(selected) < 1:
|
||||
silo = model.get_silo_object()
|
||||
if silo:
|
||||
selected = [silo['_id']]
|
||||
self.data['model']['tasks'].set_assets(selected)
|
||||
|
||||
def on_silo_changed(self, silo):
|
||||
"""Callback on asset silo changed"""
|
||||
if silo:
|
||||
self.echo("Silo changed to: {0}".format(silo))
|
||||
assets_model = self.data["model"]["assets"]
|
||||
parent_input = self.data['inputs']['parent']
|
||||
selected = assets_model.get_selected_assets()
|
||||
if len(selected) > 1:
|
||||
self.valid_parent = False
|
||||
parent_input.setText('< Please select only one asset! >')
|
||||
elif len(selected) == 1:
|
||||
self.valid_parent = True
|
||||
asset = io.find_one({"_id": selected[0], "type": "asset"})
|
||||
parent_input.setText(asset['name'])
|
||||
else:
|
||||
self.valid_parent = False
|
||||
parent_input.setText('< Nothing is selected >')
|
||||
|
||||
|
||||
def show(root=None, debug=False, parent=None):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue