Skip to content
This repository has been archived by the owner on Sep 20, 2024. It is now read-only.

Removed artist view from pyblish gui #717

Merged
merged 3 commits into from
Nov 17, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions pype/tools/pyblish_pype/app.css
Original file line number Diff line number Diff line change
Expand Up @@ -222,10 +222,6 @@ QToolButton {
background: #444;
}

#Header #ArtistTab {
background-image: url("img/tab-home.png");
}

#Header #TerminalTab {
background-image: url("img/tab-terminal.png");
}
Expand Down
162 changes: 0 additions & 162 deletions pype/tools/pyblish_pype/delegate.py
Original file line number Diff line number Diff line change
Expand Up @@ -522,168 +522,6 @@ def sizeHint(self, option, index):
return QtCore.QSize(option.rect.width(), 20)


class ArtistDelegate(QtWidgets.QStyledItemDelegate):
"""Delegate used on Artist page"""

def paint(self, painter, option, index):
"""Paint checkbox and text
_______________________________________________
| | label | duration |arrow|
|toggle |_____________________| | to |
| | families | |persp|
|_______|_____________________|___________|_____|
"""

# Layout
spacing = 10

body_rect = QtCore.QRectF(option.rect).adjusted(2, 2, -8, -2)
content_rect = body_rect.adjusted(5, 5, -5, -5)

perspective_rect = QtCore.QRectF(body_rect)
perspective_rect.setWidth(35)
perspective_rect.setHeight(35)
perspective_rect.translate(
content_rect.width() - (perspective_rect.width() / 2) + 10,
(content_rect.height() / 2) - (perspective_rect.height() / 2)
)

toggle_rect = QtCore.QRectF(body_rect)
toggle_rect.setWidth(7)
toggle_rect.adjust(1, 1, 0, -1)

icon_rect = QtCore.QRectF(content_rect)
icon_rect.translate(toggle_rect.width() + spacing, 3)
icon_rect.setWidth(35)
icon_rect.setHeight(35)

duration_rect = QtCore.QRectF(content_rect)
duration_rect.translate(content_rect.width() - 50, 0)

# Colors
check_color = colors["idle"]

publish_states = index.data(Roles.PublishFlagsRole)
if publish_states is None:
return
if publish_states & InstanceStates.InProgress:
check_color = colors["active"]

elif publish_states & InstanceStates.HasError:
check_color = colors["error"]

elif publish_states & InstanceStates.HasWarning:
check_color = colors["warning"]

elif publish_states & InstanceStates.HasFinished:
check_color = colors["ok"]

elif not index.data(Roles.IsEnabledRole):
check_color = colors["inactive"]

perspective_icon = icons["angle-right"]

if not index.data(QtCore.Qt.CheckStateRole):
font_color = colors["inactive"]
else:
font_color = colors["idle"]

if (
option.state
& (
QtWidgets.QStyle.State_MouseOver
or QtWidgets.QStyle.State_Selected
)
):
perspective_color = colors["idle"]
else:
perspective_color = colors["inactive"]
# Maintan reference to state, so we can restore it once we're done
painter.save()

# Draw background
painter.fillRect(body_rect, colors["hover"])

# Draw icon
icon = index.data(QtCore.Qt.DecorationRole)

painter.setFont(fonts["largeAwesome"])
painter.setPen(QtGui.QPen(font_color))
painter.drawText(icon_rect, icon)

# Draw label
painter.setFont(fonts["h3"])
label_rect = QtCore.QRectF(content_rect)
label_x_offset = icon_rect.width() + spacing
label_rect.translate(
label_x_offset,
0
)
metrics = painter.fontMetrics()
label_rect.setHeight(metrics.lineSpacing())
label_rect.setWidth(
content_rect.width()
- label_x_offset
- perspective_rect.width()
)
# Elide label
label = index.data(QtCore.Qt.DisplayRole)
label = metrics.elidedText(
label, QtCore.Qt.ElideRight, label_rect.width()
)
painter.drawText(label_rect, label)

# Draw families
painter.setFont(fonts["h5"])
painter.setPen(QtGui.QPen(colors["inactive"]))

families = ", ".join(index.data(Roles.FamiliesRole))
families = painter.fontMetrics().elidedText(
families, QtCore.Qt.ElideRight, label_rect.width()
)

families_rect = QtCore.QRectF(label_rect)
families_rect.translate(0, label_rect.height() + spacing)

painter.drawText(families_rect, families)

painter.setFont(fonts["largeAwesome"])
painter.setPen(QtGui.QPen(perspective_color))
painter.drawText(perspective_rect, perspective_icon)

# Draw checkbox
pen = QtGui.QPen(check_color, 1)
painter.setPen(pen)

if index.data(Roles.IsOptionalRole):
painter.drawRect(toggle_rect)

if index.data(QtCore.Qt.CheckStateRole):
painter.fillRect(toggle_rect, check_color)

elif (
index.data(QtCore.Qt.CheckStateRole)
):
painter.fillRect(toggle_rect, check_color)

if option.state & QtWidgets.QStyle.State_MouseOver:
painter.fillRect(body_rect, colors["hover"])

if option.state & QtWidgets.QStyle.State_Selected:
painter.fillRect(body_rect, colors["selected"])

painter.setPen(colors["outline"])
painter.drawRect(body_rect)

# Ok, we're done, tidy up.
painter.restore()

def sizeHint(self, option, index):
return QtCore.QSize(option.rect.width(), 80)


class TerminalItem(QtWidgets.QStyledItemDelegate):
"""Delegate used exclusively for the Terminal"""

Expand Down
Binary file removed pype/tools/pyblish_pype/img/tab-home.png
Binary file not shown.
158 changes: 0 additions & 158 deletions pype/tools/pyblish_pype/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -842,164 +842,6 @@ def update_compatibility(self, context, instances):
)


class ArtistProxy(QtCore.QAbstractProxyModel):
def __init__(self, *args, **kwargs):
self.mapping_from = []
self.mapping_to = []
super(ArtistProxy, self).__init__(*args, **kwargs)

def on_rows_inserted(self, parent_index, from_row, to_row):
if not parent_index.isValid():
return

parent_row = parent_index.row()
if parent_row >= len(self.mapping_from):
self.mapping_from.append(list())

new_from = None
new_to = None
for row_num in range(from_row, to_row + 1):
new_row = len(self.mapping_to)
new_to = new_row
if new_from is None:
new_from = new_row

self.mapping_from[parent_row].insert(row_num, new_row)
self.mapping_to.insert(new_row, [parent_row, row_num])

self.rowsInserted.emit(self.parent(), new_from, new_to + 1)

def _remove_rows(self, parent_row, from_row, to_row):
increment_num = self.mapping_from[parent_row][from_row]

to_end_index = len(self.mapping_from[parent_row]) - 1
for _idx in range(0, parent_row):
to_end_index += len(self.mapping_from[_idx])

removed_rows = 0
_emit_last = None
for row_num in reversed(range(from_row, to_row + 1)):
row = self.mapping_from[parent_row].pop(row_num)
_emit_last = row
removed_rows += 1

_emit_first = int(increment_num)
mapping_from_len = len(self.mapping_from)
mapping_from_parent_len = len(self.mapping_from[parent_row])
if parent_row < mapping_from_len:
for idx in range(from_row, mapping_from_parent_len):
self.mapping_from[parent_row][idx] = increment_num
increment_num += 1

if parent_row < mapping_from_len - 1:
for idx_i in range(parent_row + 1, mapping_from_len):
sub_values = self.mapping_from[idx_i]
if not sub_values:
continue

for idx_j in range(0, len(sub_values)):
self.mapping_from[idx_i][idx_j] = increment_num
increment_num += 1

for idx in range(removed_rows):
self.mapping_to.pop(to_end_index - idx)

return (_emit_first, _emit_last)

def on_rows_removed(self, parent_index, from_row, to_row):
if parent_index.isValid():
parent_row = parent_index.row()
_emit_first, _emit_last = self._remove_rows(
parent_row, from_row, to_row
)
self.rowsRemoved.emit(self.parent(), _emit_first, _emit_last)

else:
removed_rows = False
emit_first = None
emit_last = None
for row_num in reversed(range(from_row, to_row + 1)):
remaining_rows = self.mapping_from[row_num]
if remaining_rows:
removed_rows = True
_emit_first, _emit_last = self._remove_rows(
row_num, 0, len(remaining_rows) - 1
)
if emit_first is None:
emit_first = _emit_first
emit_last = _emit_last

self.mapping_from.pop(row_num)

diff = to_row - from_row + 1
mapping_to_len = len(self.mapping_to)
if from_row < mapping_to_len:
for idx in range(from_row, mapping_to_len):
self.mapping_to[idx][0] -= diff

if removed_rows:
self.rowsRemoved.emit(self.parent(), emit_first, emit_last)

def on_reset(self):
self.modelReset.emit()
self.mapping_from = []
self.mapping_to = []

def setSourceModel(self, source_model):
super(ArtistProxy, self).setSourceModel(source_model)
source_model.rowsInserted.connect(self.on_rows_inserted)
source_model.rowsRemoved.connect(self.on_rows_removed)
source_model.modelReset.connect(self.on_reset)
source_model.dataChanged.connect(self.on_data_changed)

def on_data_changed(self, from_index, to_index, roles=None):
proxy_from_index = self.mapFromSource(from_index)
if from_index == to_index:
proxy_to_index = proxy_from_index
else:
proxy_to_index = self.mapFromSource(to_index)

args = [proxy_from_index, proxy_to_index]
if Qt.__binding__ not in ("PyQt4", "PySide"):
args.append(roles or [])
self.dataChanged.emit(*args)

def columnCount(self, parent=QtCore.QModelIndex()):
# This is not right for global proxy, but in this case it is enough
return self.sourceModel().columnCount()

def rowCount(self, parent=QtCore.QModelIndex()):
if parent.isValid():
return 0
return len(self.mapping_to)

def mapFromSource(self, index):
if not index.isValid():
return QtCore.QModelIndex()

parent_index = index.parent()
if not parent_index.isValid():
return QtCore.QModelIndex()

parent_idx = self.mapping_from[parent_index.row()]
my_row = parent_idx[index.row()]
return self.index(my_row, index.column())

def mapToSource(self, index):
if not index.isValid() or index.row() > len(self.mapping_to):
return self.sourceModel().index(index.row(), index.column())

parent_row, item_row = self.mapping_to[index.row()]
parent_index = self.sourceModel().index(parent_row, 0)
return self.sourceModel().index(item_row, 0, parent_index)

def index(self, row, column, parent=QtCore.QModelIndex()):
return self.createIndex(row, column, QtCore.QModelIndex())

def parent(self, index=None):
return QtCore.QModelIndex()


class TerminalDetailItem(QtGui.QStandardItem):
key_label_record_map = (
("instance", "Instance"),
Expand Down
2 changes: 1 addition & 1 deletion pype/tools/pyblish_pype/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

# Customize which tab to start on. Possible choices are: "artist", "overview"
# and "terminal".
InitialTab = "artist"
InitialTab = "overview"

# Customize the window size.
WindowSize = (430, 600)
Expand Down
Loading