Skip to content

Commit

Permalink
EMSUSD-1997 adjust collection UI spacing
Browse files Browse the repository at this point in the history
- Adjust the spacing in the include/exclude header buttons.
- Add a themeMenuButton function to the Theme class.
- Call it to adjust the menu indicator for buttons with menus.
  • Loading branch information
pierrebai-adsk committed Jan 20, 2025
1 parent 6c28564 commit 7693149
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -48,43 +48,52 @@ def __init__(
self._expressionMenu = ExpressionMenu(data, self)
menuButton = MenuButton(self._expressionMenu, self)

spacer = QWidget()
spacer.setMinimumWidth(0)
spacer.setSizePolicy(
QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed
)

self._filterWidget = QLineEdit()
self._filterWidget.setSizePolicy(
QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed
)
self._filterWidget.setMaximumWidth(Theme.instance().uiScaled(165))
self._filterWidget.setPlaceholderText(SEARCH_PLACEHOLDER_LABEL)
self._filterWidget.setClearButtonEnabled(True)

separator = QFrame()
separator.setFrameShape(QFrame.VLine)
separator.setMaximumHeight(Theme.instance().uiScaled(20))

headerWidget = QWidget(self)
headerLayout = QHBoxLayout(headerWidget)
topMargin = Theme.instance().uiScaled(4)
margin = Theme.instance().uiScaled(2)
headerLayout.setContentsMargins(margin, topMargin, margin, margin)

addBtn = QToolButton(headerWidget)
addBtn.setToolTip(ADD_OBJECTS_TOOLTIP)
addBtn.setIcon(Theme.instance().icon("add"))
addBtn.setPopupMode(QToolButton.InstantPopup)
Theme.instance().themeMenuButton(addBtn, True)

self._addBtnMenu = QMenu(addBtn)

if Host.instance().canPick:
self._addBtnMenu.addAction(INCLUDE_OBJECTS_LABEL, self.onAddToIncludePrimClicked)
self._addBtnMenu.addAction(EXCLUDE_OBJECTS_LABEL, self.onAddToExcludePrimClicked)
self._addBtnMenu.addSeparator()

self._addBtnMenu.addAction(ADD_SELECTION_TO_INCLUDE_LABEL, self._onAddSelectionToInclude)
self._addBtnMenu.addAction(ADD_SELECTION_TO_EXCLUDE_LABEL, self._onAddSelectionToExclude)

self._addBtnMenu.aboutToShow.connect(self._onAboutToShowAddMenu)

addBtn.setMenu(self._addBtnMenu)
headerLayout.addWidget(addBtn)

self._deleteBtn = QToolButton(headerWidget)
self._deleteBtn.setToolTip(REMOVE_OBJECTS_TOOLTIP)
self._deleteBtn.setIcon(Theme.instance().icon("delete"))
self._deleteBtn.setPopupMode(QToolButton.InstantPopup)
self._deleteBtn.setEnabled(False)

self._deleteBtnMenu = QMenu(self._deleteBtn)
self._deleteBtnMenu.addAction(
REMOVE_FROM_INCLUDES_LABEL, self.onRemoveSelectionFromInclude
Expand All @@ -93,13 +102,14 @@ def __init__(
REMOVE_FROM_EXCLUDES_LABEL, self.onRemoveSelectionFromExclude
)
self._deleteBtn.setMenu(self._deleteBtnMenu)
headerLayout.addWidget(self._deleteBtn)

self._deleteBtn.setEnabled(False)

headerLayout.addWidget(addBtn)
headerLayout.addWidget(self._deleteBtn)
headerLayout.addWidget(spacer)
headerLayout.addWidget(self._filterWidget)
headerLayout.addWidget(separator)
headerLayout.addWidget(menuButton)

mainLayout.addWidget(headerWidget)

self._include = StringListPanel(data.getIncludeData(), True, INCLUDE_LABEL, self)
Expand Down Expand Up @@ -226,7 +236,7 @@ def onListSelectionChanged(self):
if includesSelected and excludeSelected:
self._deleteBtn.setToolTip(REMOVE_OBJECTS_TOOLTIP)
self._deleteBtn.setPopupMode(QToolButton.InstantPopup)
self._deleteBtn.setStyleSheet("")
Theme.instance().themeMenuButton(self._deleteBtn, True)
else:
if includesSelected:
self._deleteBtn.setToolTip(REMOVE_FROM_INCLUDE_TOOLTIP)
Expand All @@ -235,9 +245,7 @@ def onListSelectionChanged(self):
self._deleteBtn.setToolTip(REMOVE_FROM_EXCLUDE_TOOLTIP)
self._deleteBtn.pressed.connect(self.onRemoveSelectionFromExclude)
self._deleteBtn.setPopupMode(QToolButton.DelayedPopup)
self._deleteBtn.setStyleSheet(
"""QToolButton::menu-indicator { width: 0px; }"""
)
Theme.instance().themeMenuButton(self._deleteBtn, False)

def onIncludeAllToggle(self, _: Qt.CheckState):
incAll = self._include.cbIncludeAll.isChecked()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,8 @@ def __init__(self, menu: QMenu, parent: QWidget = None):
super(MenuButton, self).__init__(parent)
self.setIcon(Theme.instance().icon("menu"))
self.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
self.setMaximumWidth(Theme.instance().uiScaled(16))
self.setArrowType(Qt.NoArrow)
self.setPopupMode(QToolButton.InstantPopup)
self.setStyleSheet("""
QToolButton::menu-indicator { width: 0px; }
""")
Theme.instance().themeMenuButton(self, False)
self.setMenu(menu)
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@
from PySide6 import QtSvg
from PySide6.QtCore import QRect, Qt # type: ignore
from PySide6.QtGui import QImage, QPixmap, QPalette, QPainter, QColor, QPen, QIcon # type: ignore
from PySide6.QtWidgets import QWidget, QTabWidget # type: ignore
from PySide6.QtWidgets import QWidget, QTabWidget, QToolButton # type: ignore
except:
from PySide2 import QtSvg # type: ignore
from PySide2.QtCore import QRect, Qt # type: ignore
from PySide2.QtGui import QImage, QPixmap, QPalette, QPainter, QColor, QPen, QIcon # type: ignore
from PySide2.QtWidgets import QWidget, QTabWidget # type: ignore
from PySide2.QtWidgets import QWidget, QTabWidget, QToolButton # type: ignore

from enum import Flag, auto
from typing import Union
Expand Down Expand Up @@ -107,6 +107,23 @@ def themeTab(self, tab: QTabWidget):
tab.setDocumentMode(True)
tab.tabBar().setCursor(Qt.ArrowCursor)

def themeMenuButton(self, menuButton: QToolButton, showMenuIndicator: bool):
if showMenuIndicator:
menuButton.setStyleSheet("""
QToolButton { border: 0px; }
QToolButton::menu-indicator {
subcontrol-position: right bottom;
subcontrol-origin: border;
top: 4px;
left: 4px;
}""")
else:
menuButton.setStyleSheet("""
QToolButton { border: 0px; }
QToolButton::menu-indicator {
width: 0px;
}""")

@property
def palette(self) -> Palette:
if self._palette is None:
Expand Down

0 comments on commit 7693149

Please sign in to comment.