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)
示例#2
0
 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)