• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

feeluown / FeelUOwn / 3607006942

pending completion
3607006942

push

github

GitHub
gui: new search page (#627)

155 of 155 new or added lines in 6 files covered. (100.0%)

7619 of 12598 relevant lines covered (60.48%)

0.6 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

30.95
/feeluown/gui/widgets/accordion.py
1
from PyQt5.QtCore import pyqtSignal
1✔
2
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QHBoxLayout
1✔
3

4
from feeluown.gui.widgets.textbtn import TextButton
1✔
5

6

7
class ClickableHeader(QWidget):
1✔
8
    btn_text_fold = '△'
1✔
9
    btn_text_unfold = '▼'
1✔
10

11
    clicked = pyqtSignal()
1✔
12

13
    def __init__(self, header, checked=False, *args, **kwargs):
1✔
14
        super().__init__(*args, **kwargs)
×
15

16
        self.inner_header = header
×
17
        self.btn = TextButton(self._get_btn_text(checked))
×
18
        self.btn.setCheckable(True)
×
19
        self.btn.setChecked(checked)
×
20

21
        self._layout = QHBoxLayout(self)
×
22
        self._layout.setContentsMargins(0, 0, 0, 0)
×
23
        self._layout.setSpacing(0)
×
24
        self._layout.addWidget(self.inner_header)
×
25
        self._layout.addStretch(0)
×
26
        self._layout.addWidget(self.btn)
×
27

28
        self.btn.clicked.connect(self.toggle)
×
29

30
    def toggle(self, checked):
1✔
31
        self.clicked.emit()
×
32
        self.btn.setText(self._get_btn_text(checked))
×
33

34
    def _get_btn_text(self, checked):
1✔
35
        return self.btn_text_unfold if checked else self.btn_text_fold
×
36

37

38
class Accordion(QWidget):
1✔
39
    """
40

41
    TODO: should be able to customize spacing.
42
    TODO: API will be changed.
43
    """
44
    def __init__(self, *args, **kwargs):
1✔
45
        super().__init__(*args, **kwargs)
×
46

47
        self._layout = QVBoxLayout(self)
×
48
        self._layout.setContentsMargins(0, 0, 0, 0)
×
49
        self._layout.setSpacing(0)
×
50

51
    def add_section(self,
1✔
52
                    header: QLabel,
53
                    content: QWidget,
54
                    header_spacing: int,
55
                    section_spacing: int):
56

57
        def toggle_content():
×
58
            if content.isVisible():
×
59
                content.hide()
×
60
            else:
61
                content.show()
×
62

63
        clickable_header = ClickableHeader(header, not content.isVisible())
×
64
        clickable_header.clicked.connect(toggle_content)
×
65

66
        self._layout.addWidget(clickable_header)
×
67
        self._layout.addSpacing(header_spacing)
×
68
        self._layout.addWidget(content)
×
69
        self._layout.addSpacing(section_spacing)
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc