def __init__(self, url: QUrl) -> None: super().__init__() self.setupUi(self) self.m_cookies = [] self.m_urlLineEdit.setText(url.toString()) self.m_layout = QVBoxLayout() self.m_layout.addItem( QSpacerItem(0, 0, QSizePolicy.Minimum, QSizePolicy.Expanding)) self.m_layout.setContentsMargins(0, 0, 0, 0) self.m_layout.setSpacing(0) w = QWidget() p = w.palette() p.setColor(self.widget.backgroundRole(), Qt.white) w.setPalette(p) w.setLayout(self.m_layout) self.m_scrollArea.setWidget(w) self.m_scrollArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.m_scrollArea.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) self.m_urlButton.clicked.connect(self.handleUrlClicked) self.m_deleteAllButton.clicked.connect(self.handleDeleteAllClicked) self.m_newButton.clicked.connect(self.handleNewClicked) self.m_store: QWebEngineCookieStore = self.m_webview.page().profile( ).cookieStore() self.m_store.cookieAdded.connect(self.handleCookieAdded) self.m_store.loadAllCookies() self.m_webview.load(url)
class ExpandablePanel(base.BaseWidget, object): def __init__(self, header_text, min_height=30, max_height=1000, show_header_text=True, is_opened=False, parent=None): self._header_text = header_text self._show_header_text = show_header_text self._min_height = min_height self._max_height = max_height if is_opened: self._panel_state = PanelState.OPEN else: self._panel_state = PanelState.CLOSED self._collapse_icon = QIcon() self._icon = QPushButton() self._icon.setMaximumSize(20, 20) self._icon.setIcon(self._collapse_icon) super(ExpandablePanel, self).__init__(parent=parent) self.setObjectName('ExpandablePanel') self.update_size() self.update_icon() def ui(self): super(ExpandablePanel, self).ui() widget_palette = QPalette() widget_palette.setColor(QPalette.Background, QColor.fromRgb(60, 60, 60)) self.setAutoFillBackground(True) self.setPalette(widget_palette) frame = QFrame() frame.setFrameShape(QFrame.StyledPanel) frame.setFrameShadow(QFrame.Sunken) self.main_layout.addWidget(frame) main_layout = layouts.VerticalLayout(spacing=0, margins=(2, 2, 2, 2), parent=frame) main_layout.setAlignment(Qt.AlignTop) self._header_area = QWidget() self._header_area.setMinimumHeight(20) self._widget_area = QWidget() self._widget_area.setAutoFillBackground(True) self._widget_area.setPalette(widget_palette) self._header_text_label = dividers.Divider(self._header_text) self._widget_layout = layouts.VerticalLayout(spacing=5) self._widget_layout.setMargin(5) self._widget_area.setLayout(self._widget_layout) header_layout = layouts.HorizontalLayout(margins=(0, 0, 0, 0)) header_layout.addWidget(self._icon) header_layout.addWidget(self._header_text_label) self._header_area.setLayout(header_layout) main_layout.addWidget(self._header_area) main_layout.addWidget(self._widget_area) self._icon.clicked.connect(self.change_state) def update_icon(self): if self._panel_state == PanelState.OPEN: self._icon.setStyleSheet( 'QLabel {image: url(:/icons/open_hover_collapsible_panel) no-repeat;} ' 'QLabel:hover {image:url(:/icons/open_hover_collapsible_panel) no-repeat;}') self._icon.setToolTip('Close') self._widget_area.show() else: self._icon.setStyleSheet( 'QLabel {image: url(:/icons/closed_collapsible_panel) no-repeat;} ' 'QLabel:hover {image:url(:/icons/closed_hover_collapsible_panel) no-repeat;}') self._icon.setToolTip('Open') self._widget_area.hide() def update_size(self): if self._panel_state == PanelState.OPEN: self.setMaximumHeight(self._max_height) self.setMinimumHeight(self._min_height) else: self.setMaximumHeight(self._min_height) self.setMinimumHeight(self._min_height) def change_state(self): if not self._show_header_text: self._header_text_label.setVisible(False) if self._panel_state == PanelState.OPEN: self._panel_state = PanelState.CLOSED # self._header_text_label.setText('Closed') self._widget_area.hide() else: self._panel_state = PanelState.OPEN # self._header_text_label.setText('Open') self._widget_area.show() self.update_icon() self.update_size() def add_widget(self, widget): self._widget_layout.addWidget(widget) def add_layout(self, layout): self._widget_layout.addLayout(layout)