def accept_category(self):
     if self._category is None:
         self._category = Filter()
     self._category.set_description(self.description_entry.text())
     self._category.set_enabled(self.enabled_check.isChecked())
     self._category.set_selected_by_default(self.default_check.isChecked())
     self.accept()
class EditCategoryDialog(QDialog):
    def __init__(self, category=None):
        QDialog.__init__(self, None, Qt.WindowTitleHint)

        self._category = category
        description_label = QLabel("Description")
        self.description_entry = QLineEdit()
        self.description_entry.setMinimumWidth(60)
        self.enabled_check = QCheckBox("Enabled")
        self.default_check = QCheckBox("Selected as Default")
        if category is not None:
            self.description_entry.setText(self._category.get_description())
            self.enabled_check.setChecked(self._category.get_enabled())
            self.default_check.setChecked(self._category.get_selected_by_default())

        layout = QGridLayout()
        layout.addWidget(description_label, 0, 0, 1, 1, Qt.AlignRight)
        layout.addWidget(self.description_entry, 0, 1, 1, 2)
        layout.addWidget(self.enabled_check, 1, 1)
        layout.addWidget(self.default_check, 2, 1)

        accept_text = "Edit Category" if category is not None else "Add Category"
        self.setWindowTitle(accept_text)
        accept_button = QPushButton(accept_text)
        accept_button.clicked.connect(self.accept_category)
        reject_button = QPushButton("Cancel")
        reject_button.clicked.connect(self.reject)
        button_layout = QHBoxLayout()
        button_layout.addStretch(1)
        button_layout.addWidget(accept_button)
        button_layout.addWidget(reject_button)

        layout.addLayout(button_layout, 3, 0, 1, 3)

        self.setFixedWidth(250)
        self.setFixedHeight(130)
        self.setLayout(layout)

    def accept_category(self):
        if self._category is None:
            self._category = Filter()
        self._category.set_description(self.description_entry.text())
        self._category.set_enabled(self.enabled_check.isChecked())
        self._category.set_selected_by_default(self.default_check.isChecked())
        self.accept()

    def get_category(self):
        return self._category