def add_to_composition(self, from_widget, to_widget): current_items = from_widget.selectedItems() for item in current_items: contents = item.statusTip(0) if not contents: return contents = ast.literal_eval(contents) exists_subfields = self.get_parent_items(to_widget) subfield = contents['subfield'] if subfield in exists_subfields: children = exists_subfields[subfield]['child'] if item.text(0) in children: message = '%s already exists!..' % item.text(0) QtWidgets.QMessageBox.warning( self, 'Warning', message, QtWidgets.QMessageBox.Ok) continue subfield_item = exists_subfields[subfield]['widget'] else: subfield_item = swidgets.add_treewidget_item(to_widget, subfield, icon=subfield) version_item = swidgets.add_treewidget_item(subfield_item, item.text(0), icon='version') self.input_items.setdefault(version_item, item) version_item.setStatusTip(0, str(contents)) brush = QtGui.QBrush(QtGui.QColor(255, 0, 255)) item.setForeground(0, brush) item.setDisabled(True) to_widget.setItemExpanded(subfield_item, 1) from_widget.clearSelection()
def load_captions(self, input_data=None): self.treewidget.clear() if not input_data: input_data = self.spipe.get() valid_subfields = self.spipe.pipe_inputs['subfield']['values'] for caption, contents in input_data.items(): caption_item = swidgets.add_treewidget_item(self.treewidget, caption, icon=None) self.treewidget.setItemExpanded(caption_item, 1) for subfield in valid_subfields: if subfield not in contents: continue subfield_item = swidgets.add_treewidget_item(caption_item, subfield, icon=subfield) versions = common.set_version_order(contents[subfield].keys()) for each in versions: cuttrent_tag = contents[subfield][each]['tag'] version_item = swidgets.add_treewidget_item( subfield_item, each, icon=cuttrent_tag) more_contents = self.spipe.get_more_data( caption, subfield, each) ver_contents = copy.deepcopy(contents[subfield][each]) ver_contents.update(more_contents) version_item.setStatusTip(0, str(ver_contents)) # update root item icon with pipe tag(character, prop, etc) swidgets.update_treewidget_item_icon( caption_item, cuttrent_tag)
def setup_assets(self): self.treewidget_assets.clear() contents = self.spipe.get() # print json.dumps(contents, indent=4) captions = sorted(contents.keys()) valid_subfields = self.spipe.get_casting_subfields() for caption in captions: caption_item = swidgets.add_treewidget_item( self.treewidget_assets, caption, icon=caption) self.treewidget_assets.setItemExpanded(caption_item, 1) for subfield in valid_subfields: if subfield not in contents[caption]: continue subfield_item = swidgets.add_treewidget_item( caption_item, subfield, icon=subfield) self.treewidget_assets.setItemExpanded(subfield_item, 1) versions = common.set_version_order(contents[caption][subfield].keys()) for version in versions: cuttrent_tag = contents[caption][subfield][version]['tag'] version_item = swidgets.add_treewidget_item( subfield_item, version, icon=cuttrent_tag, foreground=(192, 0, 0)) more_contents = self.spipe.get_more_data(caption, subfield, version) ver_contents = copy.deepcopy(contents[caption][subfield][version]) ver_contents.update(more_contents) version_item.setStatusTip(0, str(ver_contents)) # update root item icon with pipe tag(character, prop, etc) swidgets.update_treewidget_item_icon(caption_item, cuttrent_tag)
def parent_item(self): current_assets = self.find_children_items(self.treewidget_assets) current_shots = self.find_children_items(self.treewidget_shots, tag=True) if not current_assets: QtWidgets.QMessageBox.critical( self, 'critical', 'please select any item from assets', QtWidgets.QMessageBox.Ok ) return if not current_shots: QtWidgets.QMessageBox.critical( self, 'critical', 'please select any item from shots', QtWidgets.QMessageBox.Ok ) return for current_shot in current_shots: for current_asset in current_assets: contents = ast.literal_eval(current_asset.statusTip(0)) location = '%s|%s|%s' % ( contents['caption'], contents['subfield'], contents['version'] ) current_item = swidgets.add_treewidget_item( current_shot, location, icon='asset', foreground=None) current_item.setStatusTip(0, location)
def add_instance(self, treewidget): if not treewidget.selectedItems(): QtWidgets.QMessageBox.warning( self, 'warning', 'please select any item', QtWidgets.QMessageBox.Ok) return None number_copies, ok = QtWidgets.QInputDialog.getInt( self, 'input', 'number of copies:', QtWidgets.QLineEdit.Normal) if not ok: print '\n#warnings abort the rename' return current_item = treewidget.selectedItems()[-1] if current_item.parent(): parent_item = current_item.parent() else: parent_item = treewidget icon = 'toplevel' if isinstance(parent_item, QtWidgets.QTreeWidgetItem): icon = 'sublevel' for index in range(number_copies): next_item_name = self.find_next_item_name(parent_item, current_item) current_item = swidgets.add_treewidget_item( parent_item, next_item_name, icon=icon, foreground=None)
def setup_shots(self): castingsheet_path = self.get_castingsheet_path() if not os.path.isfile(self.get_castingsheet_path()): return casting_data = resource.getInputData(castingsheet_path) self.treewidget_shots.clear() toplevels = sorted(casting_data.keys()) for toplevel in toplevels: toplevel_item = swidgets.add_treewidget_item( self.treewidget_shots, toplevel, icon='toplevel') sublevels = sorted(casting_data[toplevel].keys()) for sublevel in sublevels: sublevel_item = swidgets.add_treewidget_item(toplevel_item, sublevel, icon='sublevel') for asset in casting_data[toplevel][sublevel]: asset_item = swidgets.add_treewidget_item(sublevel_item, asset, icon='asset') asset_item.setStatusTip(0, asset)
def load_current_caption(self, caption): self.treewidget_composition.clear() self.treewidget_input.clear() contents = self.spipe.get_subfields(caption) valid_subfields = self.spipe.get_composition_subfields() for subfield in valid_subfields: if subfield not in contents: continue subfield_item = swidgets.add_treewidget_item(self.treewidget_input, subfield, icon=subfield) self.treewidget_input.setItemExpanded(subfield_item, 1) versions = common.set_version_order(contents[subfield].keys()) for version in versions: cuttrent_tag = contents[subfield][version]['tag'] version_item = swidgets.add_treewidget_item( subfield_item, version, icon=cuttrent_tag, foreground=(192, 0, 0)) more_contents = self.spipe.get_more_data(caption, subfield, version) ver_contents = copy.deepcopy(contents[subfield][version]) ver_contents.update(more_contents) version_item.setStatusTip(0, str(ver_contents)) # update root item icon with pipe tag(character, prop, etc) swidgets.update_treewidget_item_icon(subfield_item, cuttrent_tag)
def set_current_tag(self): current_type = self.combobox_type.currentText() current_tag = self.combobox_tag.currentText() self.treewidget.clear() if current_tag not in self.casting_data[current_type]: return for asset in self.casting_data[current_type][current_tag]: current_item = swidgets.add_treewidget_item(self.treewidget, asset, icon='asset', foreground=None) caption, subfield, version = asset.split('|') version_data = self.spipe.get_version_data(caption, subfield, version) current_item.setStatusTip(0, str(version_data))
def add_item(self, treewidget): item_name, ok = QtWidgets.QInputDialog.getText( self, 'input', 'enter the item name:', QtWidgets.QLineEdit.Normal) if not ok: print '\n#warnings abort the name' return parent_item = self.find_parent_item(treewidget) if self.has_item_exists(parent_item, item_name): QtWidgets.QMessageBox.critical( self, 'critical', 'already found <%s>' % item_name, QtWidgets.QMessageBox.Ok) return icon = 'toplevel' if isinstance(parent_item, QtWidgets.QTreeWidgetItem): icon = 'sublevel' current_item = swidgets.add_treewidget_item( parent_item, item_name, icon=icon, foreground=None)