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]
Esempio n. 3
0
    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))
Esempio n. 5
0
 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
Esempio n. 7
0
    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)