Example #1
0
class SideBar(QWidget):
    def __init__(self, manager, window):
        super().__init__(window)
        self._window = window  # BrowserWindow
        self._layout = None  # QVBoxLayout
        self._titleBar = None  # DockTitleBarWidget
        self._manager = manager  # SideBarManager

        self.setObjectName('sidebar')
        self.setAttribute(Qt.WA_DeleteOnClose)

        self._layout = QVBoxLayout(self)
        self._layout.setContentsMargins(0, 0, 0, 0)
        self._layout.setSpacing(0)
        self.setLayout(self._layout)

        self._titleBar = DockTitleBarWidget('', self)
        self._layout.addWidget(self._titleBar)

    def showBookmarks(self):
        self._titleBar.setTitle(_('Bookmarks'))
        bar = BookmarksSideBar(self._window)
        self.setWidget(bar)

    def showHistory(self):
        self._titleBar.setTitle(_('History'))
        bar = HistorySideBar(self._window)
        self.setWidget(bar)

    def setTitle(self, title):
        self._titleBar.setTitle(title)

    def setWidget(self, widget):
        if self._layout.count() == 2:
            self._layout.removeItem(self._layout.itemAt(1))

        if widget:
            self._layout.addWidget(widget)

    # Q_SLOTS
    def close(self):
        self._manager.closeSideBar()

        p = self.parentWidget()
        if p:
            p.setFocus()

        super().close()