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

Commit

Permalink
Merge pull request #717 from pypeclub/feature/remove_artist_view_pybl…
Browse files Browse the repository at this point in the history
…ish_gui

Removed artist view from pyblish gui
  • Loading branch information
mkolar authored Nov 17, 2020
2 parents 9ec415d + 9c1343f commit 371f305
Show file tree
Hide file tree
Showing 7 changed files with 4 additions and 423 deletions.
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

0 comments on commit 371f305

Please sign in to comment.