def __init__(self, **kwds): super().__init__(**kwds) self.parent = kwds["parent"] component_manager = kwds["component_manager"] self.setupUi(self) self.card_type_tree_wdgt = CardTypesTreeWdgt(\ component_manager=component_manager, parent=self) # Bug in Qt: need to explicitly reset the text of this label. self.label.setText(_("Activate cards from these card types:")) self.gridLayout.addWidget(self.card_type_tree_wdgt, 1, 0) self.tag_tree_wdgt = TagsTreeWdgt(\ component_manager=component_manager, parent=self) self.gridLayout.addWidget(self.tag_tree_wdgt, 1, 1) criterion = DefaultCriterion(component_manager=self.component_manager) for tag in self.database().tags(): criterion._tag_ids_active.add(tag._id) self.display_criterion(criterion) self.card_type_tree_wdgt.tree_wdgt.\ itemChanged.connect(self.criterion_changed) self.tag_tree_wdgt.tree_wdgt.\ itemChanged.connect(self.criterion_changed) self.card_type_tree_wdgt.tree_wdgt.\ itemClicked.connect(self.criterion_clicked) self.tag_tree_wdgt.tree_wdgt.\ itemClicked.connect(self.criterion_clicked)
def __init__(self, **kwds): super().__init__(**kwds) self.show_tip_after_starting_n_times() self.setupUi(self) self.setWindowFlags(self.windowFlags() \ | QtCore.Qt.WindowMinMaxButtonsHint) self.setWindowFlags(self.windowFlags() \ & ~ QtCore.Qt.WindowContextHelpButtonHint) self.saved_index = None self.card_model = None # Set up card type tree. self.container_1 = QtWidgets.QWidget(self.splitter_1) self.layout_1 = QtWidgets.QVBoxLayout(self.container_1) self.label_1 = QtWidgets.QLabel(_("Show cards from these card types:"), self.container_1) self.layout_1.addWidget(self.label_1) self.card_type_tree_wdgt = \ CardTypesTreeWdgt(acquire_database=self.unload_qt_database, component_manager=kwds["component_manager"], parent=self.container_1) self.card_type_tree_wdgt.card_types_changed_signal.\ connect(self.reload_database_and_redraw) self.layout_1.addWidget(self.card_type_tree_wdgt) self.splitter_1.insertWidget(0, self.container_1) # Set up tag tree plus search box. self.container_2 = QtWidgets.QWidget(self.splitter_1) self.layout_2 = QtWidgets.QVBoxLayout(self.container_2) self.label_2 = QtWidgets.QLabel(_("having any of these tags:"), self.container_2) self.layout_2.addWidget(self.label_2) self.tag_tree_wdgt = \ TagsTreeWdgt(acquire_database=self.unload_qt_database, component_manager=kwds["component_manager"], parent=self.container_2) self.tag_tree_wdgt.tags_changed_signal.\ connect(self.reload_database_and_redraw) self.layout_2.addWidget(self.tag_tree_wdgt) self.label_3 = QtWidgets.QLabel( _("containing this text in the cards:"), self.container_2) self.layout_2.addWidget(self.label_3) self.search_box = QtWidgets.QLineEdit(self.container_2) self.search_box.textChanged.connect(self.search_text_changed) self.timer = QtCore.QTimer(self) self.timer.setSingleShot(True) self.timer.timeout.connect(self.update_filter) self.search_box.setFocus() self.layout_2.addWidget(self.search_box) self.splitter_1.insertWidget(1, self.container_2) # Fill tree widgets. criterion = self.database().current_criterion() self.card_type_tree_wdgt.display(criterion) self.tag_tree_wdgt.display(criterion) # When starting the widget, we default with the current criterion # as filter. In this case, we can make a shortcut simply by selecting # on 'active=1' self.load_qt_database() self.display_card_table(run_filter=False) self.card_model.setFilter("cards.active=1") self.card_model.select() self.update_card_counters() self.card_type_tree_wdgt.tree_wdgt.\ itemClicked.connect(self.update_filter) self.tag_tree_wdgt.tree_wdgt.\ itemClicked.connect(self.update_filter) # Context menu. self.table.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.table.customContextMenuRequested.connect(self.context_menu) # Restore state. state = self.config()["browse_cards_dlg_state"] if state: self.restoreGeometry(state) splitter_1_state = self.config()["browse_cards_dlg_splitter_1_state"] if not splitter_1_state: self.splitter_1.setSizes([230, 320]) else: self.splitter_1.restoreState(splitter_1_state) splitter_2_state = self.config()["browse_cards_dlg_splitter_2_state"] if not splitter_2_state: self.splitter_2.setSizes([333, 630]) else: self.splitter_2.restoreState(splitter_2_state) for column in (_ID, ID, CARD_TYPE_ID, _FACT_ID, FACT_VIEW_ID, ACQ_REPS_SINCE_LAPSE, RET_REPS_SINCE_LAPSE, EXTRA_DATA, ACTIVE, SCHEDULER_DATA): self.table.setColumnHidden(column, True)