mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
scrolling of environments view start when you scroll to bottom of widget
This commit is contained in:
parent
b5df50f4bc
commit
0183ac73b2
1 changed files with 50 additions and 2 deletions
|
|
@ -28,6 +28,8 @@ class EnvironmentsView(QtWidgets.QTreeView):
|
|||
def __init__(self, parent=None):
|
||||
super(EnvironmentsView, self).__init__(parent)
|
||||
|
||||
self._scroll_enabled = False
|
||||
|
||||
model = QtGui.QStandardItemModel()
|
||||
|
||||
env = os.environ.copy()
|
||||
|
|
@ -112,8 +114,11 @@ class EnvironmentsView(QtWidgets.QTreeView):
|
|||
else:
|
||||
return super(EnvironmentsView, self).keyPressEvent(event)
|
||||
|
||||
def set_scroll_enabled(self, value):
|
||||
self._scroll_enabled = value
|
||||
|
||||
def wheelEvent(self, event):
|
||||
if not self.hasFocus():
|
||||
if not self._scroll_enabled:
|
||||
event.ignore()
|
||||
return
|
||||
return super(EnvironmentsView, self).wheelEvent(event)
|
||||
|
|
@ -200,9 +205,13 @@ class CollapsibleWidget(QtWidgets.QWidget):
|
|||
|
||||
|
||||
class PypeInfoWidget(QtWidgets.QWidget):
|
||||
_resized = QtCore.Signal()
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super(PypeInfoWidget, self).__init__(parent)
|
||||
|
||||
self._scroll_at_bottom = False
|
||||
|
||||
self.setStyleSheet(style.load_stylesheet())
|
||||
|
||||
icon = QtGui.QIcon(resources.pype_icon_filepath())
|
||||
|
|
@ -219,11 +228,39 @@ class PypeInfoWidget(QtWidgets.QWidget):
|
|||
main_layout.addWidget(scroll_area, 1)
|
||||
main_layout.addWidget(self._create_btns_section(), 0)
|
||||
|
||||
scroll_area.verticalScrollBar().valueChanged.connect(
|
||||
self._on_area_scroll
|
||||
)
|
||||
self._resized.connect(self._on_resize)
|
||||
self.resize(740, 540)
|
||||
|
||||
self.scroll_area = scroll_area
|
||||
self.info_widget = info_widget
|
||||
|
||||
def _on_area_scroll(self, value):
|
||||
vertical_bar = self.scroll_area.verticalScrollBar()
|
||||
self._scroll_at_bottom = vertical_bar.maximum() == vertical_bar.value()
|
||||
self.info_widget.set_scroll_enabled(self._scroll_at_bottom)
|
||||
|
||||
def _on_resize(self):
|
||||
if not self._scroll_at_bottom:
|
||||
return
|
||||
vertical_bar = self.scroll_area.verticalScrollBar()
|
||||
vertical_bar.setValue(vertical_bar.maximum())
|
||||
|
||||
def resizeEvent(self, event):
|
||||
super(PypeInfoWidget, self).resizeEvent(event)
|
||||
self._resized.emit()
|
||||
self.info_widget.set_content_height(
|
||||
self.scroll_area.height()
|
||||
)
|
||||
|
||||
def showEvent(self, event):
|
||||
super(PypeInfoWidget, self).showEvent(event)
|
||||
self.info_widget.set_content_height(
|
||||
self.scroll_area.height()
|
||||
)
|
||||
|
||||
def _create_btns_section(self):
|
||||
btns_widget = QtWidgets.QWidget(self)
|
||||
btns_layout = QtWidgets.QHBoxLayout(btns_widget)
|
||||
|
|
@ -282,6 +319,8 @@ class PypeInfoSubWidget(QtWidgets.QWidget):
|
|||
def __init__(self, parent=None):
|
||||
super(PypeInfoSubWidget, self).__init__(parent)
|
||||
|
||||
self.env_view = None
|
||||
|
||||
main_layout = QtWidgets.QVBoxLayout(self)
|
||||
main_layout.setContentsMargins(0, 0, 0, 0)
|
||||
main_layout.setAlignment(QtCore.Qt.AlignTop)
|
||||
|
|
@ -293,6 +332,14 @@ class PypeInfoSubWidget(QtWidgets.QWidget):
|
|||
main_layout.addWidget(self._create_separator(), 0)
|
||||
main_layout.addWidget(self._create_environ_widget(), 1)
|
||||
|
||||
def set_content_height(self, height):
|
||||
if self.env_view:
|
||||
self.env_view.setMinimumHeight(height)
|
||||
|
||||
def set_scroll_enabled(self, value):
|
||||
if self.env_view:
|
||||
self.env_view.set_scroll_enabled(value)
|
||||
|
||||
def _create_separator(self):
|
||||
separator_widget = QtWidgets.QWidget(self)
|
||||
separator_widget.setObjectName("Separator")
|
||||
|
|
@ -369,9 +416,10 @@ class PypeInfoSubWidget(QtWidgets.QWidget):
|
|||
|
||||
env_view = EnvironmentsView(env_widget)
|
||||
env_view.setMinimumHeight(300)
|
||||
|
||||
env_widget.set_content_widget(env_view)
|
||||
|
||||
self.env_view = env_view
|
||||
|
||||
return env_widget
|
||||
|
||||
def _create_openpype_info_widget(self):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue