mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-02 08:54:53 +01:00
component item buttons are working now
This commit is contained in:
parent
cfacb279d7
commit
fe3d94c203
2 changed files with 62 additions and 29 deletions
|
|
@ -1,3 +1,4 @@
|
|||
import os
|
||||
from . import QtCore, QtGui, QtWidgets
|
||||
from . import SvgButton
|
||||
from . import get_resource
|
||||
|
|
@ -9,6 +10,8 @@ class ComponentWidget(QtWidgets.QFrame):
|
|||
C_ACTIVE = '#4BB543'
|
||||
C_ACTIVE_HOVER = '#4BF543'
|
||||
signal_remove = QtCore.Signal(object)
|
||||
signal_thumbnail = QtCore.Signal(object)
|
||||
signal_preview = QtCore.Signal(object)
|
||||
|
||||
def __init__(self, parent):
|
||||
super().__init__()
|
||||
|
|
@ -162,8 +165,9 @@ class ComponentWidget(QtWidgets.QFrame):
|
|||
# self.frame.setStyleSheet("border: 1px solid black;")
|
||||
|
||||
def set_context(self, data):
|
||||
|
||||
self.remove.clicked.connect(self._remove)
|
||||
self.thumbnail.clicked.connect(self._thumbnail_clicked)
|
||||
self.preview.clicked.connect(self._preview_clicked)
|
||||
name = data['name']
|
||||
representation = data['representation']
|
||||
ext = data['ext']
|
||||
|
|
@ -194,8 +198,14 @@ class ComponentWidget(QtWidgets.QFrame):
|
|||
else:
|
||||
self.file_info.setText('[{}]'.format(file_info))
|
||||
|
||||
# self.thumbnail.setVisible(thumb)
|
||||
# self.preview.setVisible(prev)
|
||||
self.thumbnail.setVisible(thumb)
|
||||
self.preview.setVisible(prev)
|
||||
|
||||
def _remove(self):
|
||||
self.signal_remove.emit(self.parent_item)
|
||||
|
||||
def _thumbnail_clicked(self):
|
||||
self.signal_thumbnail.emit(self.parent_item)
|
||||
|
||||
def _preview_clicked(self):
|
||||
self.signal_preview.emit(self.parent_item)
|
||||
|
|
|
|||
|
|
@ -1,20 +1,19 @@
|
|||
import os
|
||||
import clique
|
||||
from pypeapp import config
|
||||
from . import QtWidgets, QtCore
|
||||
from . import ComponentItem, TreeComponents, DropDataWidget
|
||||
|
||||
|
||||
class DropDataFrame(QtWidgets.QFrame):
|
||||
# signal_dropped = QtCore.Signal(object)
|
||||
|
||||
def __init__(self, parent):
|
||||
super().__init__()
|
||||
|
||||
self.parent_widget = parent
|
||||
self.items = []
|
||||
self.presets = config.get_presets()['tools']['standalone_publish']
|
||||
|
||||
self.setAcceptDrops(True)
|
||||
layout = QtWidgets.QVBoxLayout(self)
|
||||
|
||||
self.tree_widget = TreeComponents(self)
|
||||
layout.addWidget(self.tree_widget)
|
||||
|
||||
|
|
@ -63,13 +62,43 @@ class DropDataFrame(QtWidgets.QFrame):
|
|||
# Assign to self so garbage collector wont remove the component
|
||||
# during initialization
|
||||
self.new_component = ComponentItem(self.tree_widget, data)
|
||||
self.new_component._widget.signal_remove.connect(self._remove_item)
|
||||
self.tree_widget.addTopLevelItem(self.new_component)
|
||||
self.new_component.set_context()
|
||||
|
||||
self.new_component._widget.signal_remove.connect(self._remove_item)
|
||||
self.new_component._widget.signal_preview.connect(self._set_preview)
|
||||
self.new_component._widget.signal_thumbnail.connect(
|
||||
self._set_thumbnail
|
||||
)
|
||||
self.items.append(self.new_component)
|
||||
self.new_component = None
|
||||
|
||||
self._refresh_view()
|
||||
|
||||
def _set_thumbnail(self, in_item):
|
||||
checked_item = None
|
||||
for item in self.items:
|
||||
if item.is_thumbnail():
|
||||
checked_item = item
|
||||
break
|
||||
if checked_item is None or checked_item == in_item:
|
||||
in_item.change_thumbnail()
|
||||
else:
|
||||
checked_item.change_thumbnail(False)
|
||||
in_item.change_thumbnail()
|
||||
|
||||
def _set_preview(self, in_item):
|
||||
checked_item = None
|
||||
for item in self.items:
|
||||
if item.is_preview():
|
||||
checked_item = item
|
||||
break
|
||||
if checked_item is None or checked_item == in_item:
|
||||
in_item.change_preview()
|
||||
else:
|
||||
checked_item.change_preview(False)
|
||||
in_item.change_preview()
|
||||
|
||||
def _remove_item(self, item):
|
||||
root = self.tree_widget.invisibleRootItem()
|
||||
(item.parent() or root).removeChild(item)
|
||||
|
|
@ -78,10 +107,11 @@ class DropDataFrame(QtWidgets.QFrame):
|
|||
|
||||
def _refresh_view(self):
|
||||
_bool = len(self.items) == 0
|
||||
|
||||
self.tree_widget.setVisible(not _bool)
|
||||
self.drop_widget.setVisible(_bool)
|
||||
|
||||
self.parent_widget.set_valid_components(not _bool)
|
||||
|
||||
def _process_paths(self, in_paths):
|
||||
paths = self._get_all_paths(in_paths)
|
||||
collections, remainders = clique.assemble(paths)
|
||||
|
|
@ -114,13 +144,6 @@ class DropDataFrame(QtWidgets.QFrame):
|
|||
file_ext = collection.tail
|
||||
repr_name = file_ext.replace('.', '')
|
||||
range = self._get_ranges(collection.indexes)
|
||||
thumb = False
|
||||
if file_ext in ['.jpeg']:
|
||||
thumb = True
|
||||
|
||||
prev = False
|
||||
if file_ext in ['.jpeg']:
|
||||
prev = True
|
||||
|
||||
files = []
|
||||
for file in os.listdir(folder_path):
|
||||
|
|
@ -135,9 +158,6 @@ class DropDataFrame(QtWidgets.QFrame):
|
|||
'file_info': range,
|
||||
'representation': repr_name,
|
||||
'folder_path': folder_path,
|
||||
'icon': 'sequence',
|
||||
'thumb': thumb,
|
||||
'prev': prev,
|
||||
'is_sequence': True,
|
||||
'info': info
|
||||
}
|
||||
|
|
@ -176,13 +196,6 @@ class DropDataFrame(QtWidgets.QFrame):
|
|||
file_base, file_ext = os.path.splitext(filename)
|
||||
repr_name = file_ext.replace('.', '')
|
||||
file_info = None
|
||||
thumb = False
|
||||
if file_ext in ['.jpeg']:
|
||||
thumb = True
|
||||
|
||||
prev = False
|
||||
if file_ext in ['.jpeg']:
|
||||
prev = True
|
||||
|
||||
files = []
|
||||
files.append(remainder)
|
||||
|
|
@ -196,9 +209,6 @@ class DropDataFrame(QtWidgets.QFrame):
|
|||
'file_info': file_info,
|
||||
'representation': repr_name,
|
||||
'folder_path': folder_path,
|
||||
'icon': 'sequence',
|
||||
'thumb': thumb,
|
||||
'prev': prev,
|
||||
'is_sequence': False,
|
||||
'info': info
|
||||
}
|
||||
|
|
@ -206,6 +216,19 @@ class DropDataFrame(QtWidgets.QFrame):
|
|||
self._process_data(data)
|
||||
|
||||
def _process_data(self, data):
|
||||
ext = data['ext']
|
||||
icon = 'default'
|
||||
for ico, exts in self.presets['extensions'].items():
|
||||
if ext in exts:
|
||||
icon = ico
|
||||
break
|
||||
# Add 's' to icon_name if is sequence (image -> images)
|
||||
if data['is_sequence']:
|
||||
icon += 's'
|
||||
data['icon'] = icon
|
||||
data['thumb'] = ext in self.presets['thumbnailable']
|
||||
data['prev'] = ext in self.presets['extensions']['video_file']
|
||||
|
||||
found = False
|
||||
for item in self.items:
|
||||
if data['ext'] != item.in_data['ext']:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue