1import weakref
2from fsui.qt import Qt, QScrollArea, QFrame
3from .widget_mixin import WidgetMixin
4
5
6class VerticalScrollArea(QScrollArea, WidgetMixin):
7    def __init__(self, parent):
8        QScrollArea.__init__(self, parent.get_container())
9        self.init_widget(parent)
10        self.__child = None
11        # self.layout = None
12        # self._painter = None
13
14        self.move(0, 2000)
15        # self.setAutoFillBackground(True)
16        self.setFrameShape(QFrame.NoFrame)
17        self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
18
19    @property
20    def size(self):
21        return self.get_size()
22
23    def showEvent(self, event):
24        self.on_resize()
25
26    def resizeEvent(self, event):
27        QScrollArea.resizeEvent(self, event)
28        self.on_resize()
29
30    def get_child(self):
31        # child = self.__child()
32        # return child
33        return self.__child
34
35    def get_min_width(self):
36        return self.get_child().get_min_width()
37
38    def on_resize(self):
39        child = self.get_child()
40        height = child.get_min_height()
41        child.set_size((self.viewport().width(), height))
42
43    def set_widget(self, child):
44        # self.__child = weakref.ref(child)
45        self.__child = child
46        widget = child.widget()
47        self.setWidget(widget)
48        widget.move(0, 0)
49        self.on_resize()
50