class StatusWindow(QWidget): """ The status window which features a log that displays request results and application status. """ def __init__(self, parent=None): super(StatusWindow, self).__init__(parent) self.parent = parent self.set_up_status_layout() def set_up_status_layout(self): status_label = QLabel("Status: ") self.status_condition = QLabel() font = QFont() font.setPointSize(10) font.setBold(True) self.status_condition.setFont(font) self.set_status("Down", "red") info_spacer = QSpacerItem(50, 10, QSizePolicy.Expanding, QSizePolicy.Minimum) self.settings = QPushButton("Settings") self.settings.clicked.connect(self.parent.switch_layout_settings) self.settings.setMaximumHeight(20) info_container = QHBoxLayout() info_container.setContentsMargins(20, 0, 0, 0) info_container.addWidget(status_label) info_container.addWidget(self.status_condition) info_container.addItem(info_spacer) info_container.addWidget(self.settings) requests = self.parent.settings_widget.request_table.requests self.log = LogViewer() self.parent.log = self.log self.log.introduction() self.log.entries(len(requests)) log_container = QVBoxLayout() log_container.addWidget(self.log) self.status_disable_checkbox = QCheckBox("Disable") self.status_disable_checkbox.stateChanged.connect(self.toggle_status) link = "https://github.com/kevin-lam/Posttid" help_link = QLabel('<a href="{}">Help</a>'.format(link)) help_link.setAlignment(Qt.AlignRight) help_link.linkActivated.connect(lambda: self.parent.link(link)) status_bottom_container = QHBoxLayout() status_bottom_container.setContentsMargins(10, 0, 20, 0) status_bottom_container.addWidget(self.status_disable_checkbox) status_bottom_container.addWidget(help_link) status_layout = QVBoxLayout() status_layout.addLayout(info_container) status_layout.addLayout(log_container) status_layout.addLayout(status_bottom_container) self.setLayout(status_layout) def toggle_status(self): """ Called when the checkbox is marked to disable/enable the running program. """ if self.status_disable_checkbox.isChecked(): self.parent.worker.disable = True self.log.disabled() self.set_status("Down", "red") else: self.parent.worker.disable = False self.log.enabled() if self.parent.settings_widget.email_edit.text(): self.set_status("Up", "green") def set_status(self, condition, color): """ Sets the status of the program on the label :param condition: down or up status :param color: red or green :return: """ self.status_condition.setText(condition) style = "QLabel { color : %s; }" % color self.status_condition.setStyleSheet(style)