def _build_layout()

in client/securedrop_client/gui/conversation/export/export_wizard_page.py [0:0]


    def _build_layout(self) -> QVBoxLayout:
        """
        Create parent layout, draw elements, return parent layout
        """
        self.setObjectName("QWizard_export_page")
        self.setStyleSheet(load_relative_css(__file__, "wizard.css"))

        parent_layout = QVBoxLayout(self)
        parent_layout.setContentsMargins(self.MARGIN, self.MARGIN, self.MARGIN, self.MARGIN)

        # Header for icon and task title
        header_container = QWidget()
        header_container_layout = QHBoxLayout()
        header_container.setLayout(header_container_layout)
        header_container.setContentsMargins(
            self.NO_MARGIN, self.NO_MARGIN, self.NO_MARGIN, self.NO_MARGIN
        )
        self.header_icon = SvgLabel("savetodisk.svg", svg_size=QSize(64, 64))
        self.header_icon.setObjectName("QWizard_header_icon")
        self.header_spinner = QPixmap()
        self.header_spinner_label = QLabel()
        self.header_spinner_label.setObjectName("QWizard_header_spinner")
        self.header_spinner_label.setMinimumSize(64, 64)
        self.header_spinner_label.setVisible(False)
        self.header_spinner_label.setPixmap(self.header_spinner)
        self.header = QLabel()
        self.header.setObjectName("QWizard_header")
        header_container_layout.addWidget(self.header_icon)
        header_container_layout.addWidget(self.header_spinner_label)
        header_container_layout.addWidget(self.header, alignment=Qt.AlignCenter)
        header_container_layout.addStretch()
        self.header_line = QWidget()
        self.header_line.setObjectName("QWizard_header_line")

        # Body to display instructions and forms
        self.body = QLabel()
        self.body.setObjectName("QWizard_body")
        self.body.setWordWrap(True)
        self.body.setScaledContents(True)

        body_container = QWidget()
        self.body_layout = QVBoxLayout()
        self.body_layout.setContentsMargins(
            self.NO_MARGIN, self.NO_MARGIN, self.NO_MARGIN, self.NO_MARGIN
        )
        body_container.setLayout(self.body_layout)
        self.body_layout.addWidget(self.body)

        # Widget for displaying error messages (hidden by default)
        self.error_details = QLabel()
        self.error_details.setObjectName("QWizard_error_details")
        self.error_details.setStyleSheet(load_relative_css(__file__, "wizard_message.css"))
        self.error_details.setContentsMargins(
            self.NO_MARGIN, self.NO_MARGIN, self.NO_MARGIN, self.NO_MARGIN
        )
        self.error_details.setWordWrap(True)
        self.error_details.hide()

        # Header animation
        self.header_animation = load_movie("header_animation.gif")
        self.header_animation.setScaledSize(QSize(64, 64))
        self.header_animation.frameChanged.connect(self.animate_header)

        # Populate text content
        self.header.setText(self.header_text)
        if self.body_text:
            self.body.setText(self.body_text)

        # Add all the layout elements
        parent_layout.addWidget(header_container)
        parent_layout.addWidget(self.header_line)
        parent_layout.addWidget(body_container)
        parent_layout.addWidget(self.error_details)
        parent_layout.addStretch()

        return parent_layout