diff --git a/openpype/style/style.css b/openpype/style/style.css index 2d1c471bb9..c1f4bd437e 100644 --- a/openpype/style/style.css +++ b/openpype/style/style.css @@ -547,7 +547,9 @@ QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { background: {color:bg-menu-separator}; } -#IconBtn {} +#IconButton { + padding: 4px 4px 4px 4px; +} /* Password dialog*/ #PasswordBtn { diff --git a/openpype/tools/new_publisher/widgets/__init__.py b/openpype/tools/new_publisher/widgets/__init__.py index 6d0c6f724c..55afc349ff 100644 --- a/openpype/tools/new_publisher/widgets/__init__.py +++ b/openpype/tools/new_publisher/widgets/__init__.py @@ -2,16 +2,21 @@ from .icons import ( get_icon_path, get_pixmap, get_icon +) from .border_label_widget import ( BorderedLabelWidget ) from .widgets import ( SubsetAttributesWidget, - IconBtn, + StopBtn, ResetBtn, ValidateBtn, - PublishBtn + PublishBtn, + + CreateInstanceBtn, + RemoveInstanceBtn, + ChangeViewBtn ) from .publish_widget import ( PublishFrame @@ -36,12 +41,16 @@ __all__ = ( "SubsetAttributesWidget", "BorderedLabelWidget", - "IconBtn", + "StopBtn", "ResetBtn", "ValidateBtn", "PublishBtn", + "CreateInstanceBtn", + "RemoveInstanceBtn", + "ChangeViewBtn", + "PublishFrame", "CreateDialog", diff --git a/openpype/tools/new_publisher/widgets/images/add.png b/openpype/tools/new_publisher/widgets/images/add.png new file mode 100644 index 0000000000..7fece2f3c6 Binary files /dev/null and b/openpype/tools/new_publisher/widgets/images/add.png differ diff --git a/openpype/tools/new_publisher/widgets/images/change_view.png b/openpype/tools/new_publisher/widgets/images/change_view.png new file mode 100644 index 0000000000..bda0ef1689 Binary files /dev/null and b/openpype/tools/new_publisher/widgets/images/change_view.png differ diff --git a/openpype/tools/new_publisher/widgets/images/delete.png b/openpype/tools/new_publisher/widgets/images/delete.png new file mode 100644 index 0000000000..ab02768ba3 Binary files /dev/null and b/openpype/tools/new_publisher/widgets/images/delete.png differ diff --git a/openpype/tools/new_publisher/widgets/widgets.py b/openpype/tools/new_publisher/widgets/widgets.py index 158e69eefa..8a7ed8332b 100644 --- a/openpype/tools/new_publisher/widgets/widgets.py +++ b/openpype/tools/new_publisher/widgets/widgets.py @@ -17,24 +17,30 @@ from ..constants import ( ) -class IconBtn(QtWidgets.QPushButton): +class IconButton(QtWidgets.QPushButton): """PushButton with icon and size of font. Using font metrics height as icon size reference. """ + + def __init__(self, *args, **kwargs): + super(IconButton, self).__init__(*args, **kwargs) + self.setObjectName("IconButton") + def sizeHint(self): - result = super().sizeHint() - if not self.text(): - new_height = ( - result.height() - - self.iconSize().height() - + self.fontMetrics().height() - ) - result.setHeight(new_height) + result = super(IconButton, self).sizeHint() + icon_h = self.iconSize().height() + font_height = self.fontMetrics().height() + text_set = bool(self.text()) + if not text_set and icon_h < font_height: + new_size = result.height() - icon_h + font_height + result.setHeight(new_size) + result.setWidth(new_size) + return result -class PublishIconBtn(IconBtn): +class PublishIconBtn(IconButton): def __init__(self, pixmap_path, *args, **kwargs): super(PublishIconBtn, self).__init__(*args, **kwargs) @@ -124,6 +130,27 @@ class PublishBtn(PublishIconBtn): self.setToolTip("Publish") +class CreateInstanceBtn(PublishIconBtn): + def __init__(self, parent=None): + icon_path = get_icon_path("add") + super(CreateInstanceBtn, self).__init__(icon_path, parent) + self.setToolTip("Create new instance") + + +class RemoveInstanceBtn(PublishIconBtn): + def __init__(self, parent=None): + icon_path = get_icon_path("delete") + super(RemoveInstanceBtn, self).__init__(icon_path, parent) + self.setToolTip("Remove selected instances") + + +class ChangeViewBtn(PublishIconBtn): + def __init__(self, parent=None): + icon_path = get_icon_path("change_view") + super(ChangeViewBtn, self).__init__(icon_path, parent) + self.setToolTip("Swap between views") + + class AbstractInstanceView(QtWidgets.QWidget): selection_changed = QtCore.Signal() active_changed = QtCore.Signal() diff --git a/openpype/tools/new_publisher/window.py b/openpype/tools/new_publisher/window.py index ff682f11ab..b1f745e63a 100644 --- a/openpype/tools/new_publisher/window.py +++ b/openpype/tools/new_publisher/window.py @@ -13,11 +13,15 @@ from .widgets import ( InstanceCardView, InstanceListView, CreateDialog, - IconBtn, + StopBtn, ResetBtn, ValidateBtn, PublishBtn, + + CreateInstanceBtn, + RemoveInstanceBtn, + ChangeViewBtn ) @@ -80,9 +84,9 @@ class PublisherWindow(QtWidgets.QDialog): subset_views_layout.addWidget(subset_list_view) # Buttons at the bottom of subset view - create_btn = QtWidgets.QPushButton("+", subset_frame) - delete_btn = QtWidgets.QPushButton("-", subset_frame) - change_view_btn = QtWidgets.QPushButton("=", subset_frame) + create_btn = CreateInstanceBtn(subset_frame) + delete_btn = RemoveInstanceBtn(subset_frame) + change_view_btn = ChangeViewBtn(subset_frame) # Subset details widget subset_attributes_wrap = BorderedLabelWidget(