diff --git a/pype/tools/assetcreator/app.py b/pype/tools/assetcreator/app.py index 2797b1164e..9e4f50bbdb 100644 --- a/pype/tools/assetcreator/app.py +++ b/pype/tools/assetcreator/app.py @@ -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("") + 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):