示例#1
0
 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)
示例#2
0
文件: card_type.py 项目: wojas/pomni
 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
示例#3
0
    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)
示例#4
0
 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)
示例#5
0
    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)
示例#6
0
文件: test.py 项目: wojas/pomni

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")