コード例 #1
0
class SelectionScreen(QWidget):
    """
    Screen for showing and modifying current selections
    """
    def __init__(self, parent, selection_manager):
        super().__init__(parent)
        self.selection_manager = selection_manager

        layout = QGridLayout(self)
        layout.setColumnMinimumWidth(0, 0)
        layout.setColumnMinimumWidth(1, 0)
        layout.setColumnMinimumWidth(2, 0)
        layout.setColumnMinimumWidth(3, 400)
        layout.setSpacing(5)
        label_size = 200

        self.date_label = QLabel('Date ', self)
        self.date_label.setAlignment(Qt.AlignRight)

        self.date_widget = QDateTimeEdit(self)
        self.date_widget.setDisplayFormat("dd-MM-yyyy")
        self.date_widget.setCalendarPopup(True)
        self.date_widget.setAlignment(Qt.AlignLeft)
        self.date_widget.setFixedWidth(label_size)
        self.date_widget.dateChanged.connect(self.handleSelectDate)
        self.date_widget.setEnabled(False)

        self.enable_date_button = QPushButton('Enable', self)
        self.enable_date_button.clicked.connect(self.enableSelectDate)
        self.enabled = False

        self.clear_all_button = QPushButton('Clear', self)
        self.clear_all_button.clicked.connect(self.clearAllSelections)

        self.selected_label = QLabel('Selected: ', self)
        self.selected_label.setAlignment(Qt.AlignRight)

        self.selected_field = QLabel('None', self)
        self.selected_field.setAlignment(Qt.AlignLeft)

        empty_widget = QWidget()
        empty_widget.setSizePolicy(QSizePolicy.Expanding,
                                   QSizePolicy.Preferred)

        layout.addWidget(
            self.date_label,
            0,
            0,
        )
        layout.addWidget(self.date_widget, 0, 1)
        layout.addWidget(self.enable_date_button, 0, 2)
        layout.addWidget(self.selected_label, 1, 0)
        layout.addWidget(self.selected_field, 1, 1)
        layout.addWidget(self.clear_all_button, 1, 2)
        layout.addWidget(empty_widget, 2, 0)
        self.setLayout(layout)

    def clearAllSelections(self):
        """
        Function for clearing all selections
        """
        self.parent().parent().clearSelections()

    def updateViews(self):
        """
        Function for updating all views
        """
        self.parent().parent().updateDataViewWidget()

    def enableSelectDate(self):
        """
        Function for clearing date selection
        """
        if self.enabled:
            self.date_widget.setEnabled(False)
            self.selection_manager.clearDate()
            self.enabled = False
            self.enable_date_button.setText('Enable')
        else:
            self.date_widget.setEnabled(True)
            self.selection_manager.selectDate(
                self.date_widget.date().toPyDate())
            self.enabled = True
            self.enable_date_button.setText('Disable')

        self.updateViews()

    def handleSelectDate(self, new_date):
        """
        Function that handles select date changes
        """
        self.selection_manager.selectDate(new_date.toPyDate())

    def changeSelectedFieldLabel(self, new_text):
        """
        Function for changing the label text
        """
        self.selected_field.setText(new_text)