def update_review_widget(self): w = self.centralWidget() if w: w.close() del w ui_controller_review().widget = \ component_manager.get_current("review_widget")(parent=self) self.setCentralWidget(ui_controller_review().widget)
def get_renderer(self): if self.renderer: return self.renderer else: self.renderer = component_manager.\ get_current("renderer", used_for=self.__class__.__name__) if not self.renderer: self.renderer = component_manager.get_current("renderer") return self.renderer
def update_related_cards(self, fact, new_fact_data, new_card_type, \ new_cat_names): # Allow this function to be overridden by a function hook. f = component_manager.get_current("function_hook", "update_related_cards") if f: return f.run() # Partial implementation. Still to do: change card type, duplicate checking. db = database() new_cards, updated_cards = fact.card_type.update_related_cards(\ new_fact_data, new_cat_names) db.update_fact(fact) for card in new_cards: db.add_card(card) for card in updated_cards: db.update_card(card) return if db.has_fact_with_data(fact_data): self.widget.information_box(\ _("Card is already in database.\nDuplicate not added."), _("OK")) return fact = Fact(fact_data, card_type) duplicates = db.duplicates_for_fact(fact) if len(duplicates) != 0: answer = self.widget.question_box(\ _("There is already data present for:\n\n") + "".join(fact[k] for k in card_type.required_fields()), _("&Merge and edit"), _("&Add as is"), _("&Do not add")) if answer == 0: # Merge and edit. merged_fact_data = copy.copy(fact.data) for duplicate in duplicates: for key in fact_data: if key not in card_type.required_fields(): merged_fact_data[key] += "/" + duplicate[key] db.delete_fact_and_related_data(duplicate) print merged_fact_data # TODO: edit merged data. #dlg = EditItemDlg(new_item, self) #dlg.exec_loop() #get fact from that if answer == 2: # Don't add. return db.add_fact(fact) for card in card_type.create_related_cards(fact, grade): db.add_card(card)
def update_card_widget(self): prefill_data = None if self.card_widget: prefill_data = self.card_widget.get_data(check_for_required=False) self.vboxlayout.removeWidget(self.card_widget) self.card_widget.close() del self.card_widget card_type_name = unicode(self.card_types.currentText()) card_type = self.card_type_by_name[card_type_name] try: card_type.widget = component_manager.get_current("card_type_widget", used_for=card_type.__class__.__name__)( parent=self, prefill_data=prefill_data ) except: card_type.widget = GenericCardTypeWdgt(card_type, parent=self, prefill_data=prefill_data) self.card_widget = card_type.widget self.card_widget.show() self.verticalLayout.insertWidget(1, self.card_widget)
def create_new_cards(self, fact_data, card_type, grade, cat_names): """Create a new set of related cards.""" # Allow this function to be overridden by a function hook. f = component_manager.get_current("function_hook", "create_new_cards") if f: return f.run() db = database() if db.has_fact_with_data(fact_data): self.widget.information_box(\ _("Card is already in database.\nDuplicate not added."), _("OK")) return fact = Fact(fact_data, card_type) for cat_name in cat_names: fact.cat.append(db.get_or_create_category_with_name(cat_name)) duplicates = db.duplicates_for_fact(fact) if len(duplicates) != 0: answer = self.widget.question_box(\ _("There is already data present for:\n\n") + "".join(fact[k] for k in card_type.required_fields()), _("&Merge and edit"), _("&Add as is"), _("&Do not add")) if answer == 0: # Merge and edit. merged_fact_data = copy.copy(fact.data) for duplicate in duplicates: for key in fact_data: if key not in card_type.required_fields(): merged_fact_data[key] += "/" + duplicate[key] db.delete_fact_and_related_data(duplicate) print merged_fact_data # TODO: edit merged data. #dlg = EditItemDlg(new_item, self) #dlg.exec_loop() #get fact from that if answer == 2: # Don't add. return db.add_fact(fact) for card in card_type.create_related_cards(fact, grade): db.add_card(card)
cfg.initialise("\dev\\null") cfg["path"] = "\dev\\null" from mnemosyne.libmnemosyne import * #initialise_system_components() #config.initialise(basedir) #initialise_lockfile() #initialise_new_empty_database() from mnemosyne.libmnemosyne.databases.pickle import Pickle cm.register("database", Pickle()) from mnemosyne.libmnemosyne.schedulers.SM2_mnemosyne \ import SM2Mnemosyne cm.register("scheduler", SM2Mnemosyne()) db = cm.get_current("database") db.new("\dev\null") def test_add_cards(): data = {"q" : "question", "a" : "answer"} t1.create_new_cards(data, grade=0, cat_names=["default"]) db.save("\dev\\null")