def disp_fields(self): """ Display entities """ sg = self._app.shotgun project = self._app.engine.context.project fld_list_widget = self.ui.fld_listWidget ent_list_widget = self.ui.ent_listWidget item_role = "field" # clear list fld_list_widget.clear() entity_item = ent_list_widget.currentItem() if not entity_item: return entity_name = entity_item.text() fields = sg.schema_field_read(entity_name, None, project) field_names = fields.keys() # print '*' * 40 # print entity_name.center(40) # print '*' * 40 for field_name in sorted(field_names): if self.fld_filter: if not field_name.lower().startswith(self.fld_filter.lower()): continue item = QtGui.QListWidgetItem(field_name) item.setData(QtCore.Qt.UserRole, item_role) fld_list_widget.addItem(item) # print("{} = {}".format(field_name, fields[field_name])) return
def _ensure_widgets_for_entity_type(self, entity_type): """ Ensure widgets for Steps for the given Entity type are build. :param str entity_type: A Shotgun Entity type. """ widgets = self._step_widgets[entity_type] if widgets: return widgets # Not already built, let's do it now for step in self._step_list[entity_type]: widget = QtGui.QCheckBox(step["code"]) if step["color"]: pixmap = QtGui.QPixmap(100, 100) # Get the Step color and add a bit of transparency to the # color otherwise it is too bright. color = [int(x) for x in step["color"].split(",")] + [200] pixmap.fill(QtGui.QColor(*color)) widget.setIcon(pixmap) # Turn it on if it was in the step saved filters # We do this before the toggled signal is connected to not emit # un-wanted signals. if step["id"] in self._current_filter_step_ids: widget.setChecked(True) widget.toggled.connect(lambda value, step_id=step[ "id"]: self._on_step_filter_toggled(step_id, checked=value)) item = QtGui.QListWidgetItem("", self._list_widget) item.setData(QtCore.Qt.UserRole, step) self._list_widget.setItemWidget(item, widget) self._step_widgets[entity_type].append(widget) return self._step_widgets[entity_type]
def __init__(self, parent): super(Attachments, self).__init__(parent) self.setFlow(QtGui.QListView.LeftToRight) self.setViewMode(QtGui.QListView.IconMode) self.setResizeMode(QtGui.QListView.Adjust) self.setGridSize(QtCore.QSize(36, 36)) self.setStyleSheet(self.style) self.setMaximumHeight(36) self.setSelectionMode(self.NoSelection) self.setFocusPolicy(QtCore.Qt.NoFocus) self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.customContextMenuRequested.connect(self._show_context_menu) self._attachments = [] self._default_items = [] # Capture button self.capture_button = QtGui.QToolButton( icon=QtGui.QIcon(res.get_path('camera.png'))) self.capture_button.setToolTip('Grab part of the screen.') self.capture_button.clicked.connect(self._on_capture) item = QtGui.QListWidgetItem() item.setSizeHint(self.gridSize()) self.addItem(item) self.setItemWidget(item, self.capture_button) self._default_items.append(item)
def createItem(self, asset_name, path, current_name): listWidgetItem = QtGui.QListWidgetItem() listWidgetItem.setSizeHint(QtCore.QSize(200, 80)) itemWidget = QtGui.QWidget() vLayout = QtGui.QVBoxLayout(itemWidget) vLayout.setSpacing(3) hLayout = QtGui.QHBoxLayout() hLayout.setSpacing(25) asset_name_label = QtGui.QLabel() asset_name_label.setText(asset_name) asset_name_label.setObjectName('asset_name') asset_name_label.setTextInteractionFlags( QtCore.Qt.TextSelectableByMouse) asset_name_label.setMinimumWidth(260) current_name_le = QtGui.QLineEdit() current_name_le.setFixedHeight(23) current_name_le.setText(current_name) path_label = QtGui.QLabel() path_label.setText(path) path_label.setTextInteractionFlags(QtCore.Qt.TextSelectableByMouse) hLayout.addWidget(asset_name_label) hLayout.addWidget(current_name_le) vLayout.addLayout(hLayout) vLayout.addWidget(path_label) self.listwidget.addItem(listWidgetItem) self.listwidget.setItemWidget(listWidgetItem, itemWidget) widgets = { 'asset_name': asset_name_label, 'current_name': current_name_le, 'path': path_label } listWidgetItem.setData(QtCore.Qt.UserRole, widgets) current_name_le.textChanged.connect( lambda *args: self._update_path(listWidgetItem))
def add_attachment(self, pixmap): size = self.gridSize() item = QtGui.QListWidgetItem() item.attachment = pixmap pixmap = pixmap.scaled( size, QtCore.Qt.KeepAspectRatioByExpanding, ).copy(QtCore.QRect(QtCore.QPoint(), size)) item.setIcon(QtGui.QIcon(pixmap)) item.setSizeHint(size) self.insertItem(0, item) self._attachments.insert(0, item)
def disp_entities(self): """ Display entities """ sg = self._app.shotgun project = self._app.engine.context.project ent_list_widget = self.ui.ent_listWidget item_role = "entity" # clear list ent_list_widget.clear() entities = sg.schema_entity_read(project) entity_names = entities.keys() for entity_name in sorted(entity_names): if self.ent_filter: if not entity_name.lower().startswith(self.ent_filter.lower()): continue item = QtGui.QListWidgetItem(entity_name) item.setData(QtCore.Qt.UserRole, item_role) ent_list_widget.addItem(item) # print("{} = {}".format(entity_name, entities[entity_name])) return
def __init__(self, entity_type, entity_id, parent): """ :param entity_type: Entity type to display tasks for :param entity_id: Entity id to display tasks for :param parent: The model parent. :type parent: :class:`~PySide.QtGui.QObject` """ super(WorkAreaDialog, self).__init__(parent) # now load in the UI that was created in the UI designer self.ui = Ui_WorkAreaDialog() self.ui.setupUi(self) # double clicking an item in the list closes the dialog self.ui.task_list.itemDoubleClicked.connect(self.accept) self._bundle = sgtk.platform.current_bundle() # find information about the main item main_item = self._bundle.shotgun.find_one( entity_type, [["id", "is", entity_id]], ["code", "description"] ) if main_item.get("code"): entity_name = "%s %s" % ( shotgun_globals.get_type_display_name(entity_type), main_item.get("code"), ) else: entity_name = "Unnamed %s" % shotgun_globals.get_type_display_name( entity_type ) # # insert main item # self._main_item = QtGui.QListWidgetItem(entity_name, self.ui.task_list) # self._main_item.setToolTip(main_item.get("description") or "No description found.") # self._main_item.setData(self.ENTITY_TYPE_ROLE, entity_type) # self._main_item.setData(self.ENTITY_ID_ROLE, entity_id) # # # make this selected by default # self._main_item.setSelected(True) # now get all tasks from Shotgun tasks = self._bundle.shotgun.find( "Task", [["entity", "is", {"type": entity_type, "id": entity_id}]], ["content", "step", "sg_status_list", "task_assignees"], ) # insert into list for task in tasks: task_name = "Task %s on %s" % (task["content"], entity_name) # indicate users assigned if task["task_assignees"]: task_name += " (%s)" % ", ".join( [x["name"] for x in task["task_assignees"]] ) task_item = QtGui.QListWidgetItem(task_name, self.ui.task_list) task_item.setData(self.ENTITY_TYPE_ROLE, task["type"]) task_item.setData(self.ENTITY_ID_ROLE, task["id"]) # as the last item, create the "create new task widget" # embedded into a list widget self.new_task = QtGui.QWidget(self) self.new_task.setObjectName("new_task") self.horizontalLayout_2 = QtGui.QHBoxLayout(self.new_task) self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0) self.task_name = QtGui.QLineEdit(self.new_task) self.task_name.setObjectName("task_name") self.horizontalLayout_2.addWidget(self.task_name) self.step_combo = QtGui.QComboBox(self.new_task) self.step_combo.setObjectName("step_combo") self.horizontalLayout_2.addWidget(self.step_combo) self.task_name.setPlaceholderText("Create new task...") self._new_item = QtGui.QListWidgetItem(self.ui.task_list) self.ui.task_list.setItemWidget(self._new_item, self.new_task) # find the steps for this entity type steps = self._bundle.shotgun.find( "Step", [["entity_type", "is", entity_type]], ["code", "id"] ) # populate combo box for step in steps: self.step_combo.addItem(step["code"], step["id"]) # install filter so that when the task name is clicked # the list widget is selected self.task_name.installEventFilter(self)