def do_input(line): """ Input mode """ print("=== Input mode ===") card = ui_controller_main() card_type_by_id = dict([(card_type.id, card_type) \ for card_type in card_types()]) category_names_by_id = dict([(i, name) for (i, name) in \ enumerate(database().category_names())]) while True: # Select Card Type by user: print "Select Card Type:" print '\n'.join(["%s %s" % \ (type_id, card_type_by_id[type_id].name)\ for type_id in sorted(card_type_by_id.keys())]) while True: inp = \ raw_input(_("Enter number of Card Type or 'q' to quit ... ")) if inp in ("q", "Q"): return if inp in card_type_by_id: card_type = card_type_by_id[inp] break print(_("Input error, try again")) # Select the exist or Add the new Category print '\n'.join(["%s %s" % (cat_id, category_names_by_id[cat_id]) \ for cat_id in sorted(category_names_by_id.keys())]) inp = raw_input(_("Enter number of Category or "\ "enter new category or 'q' to quit ... ")) if inp in ("q", "Q"): return category_name = inp if inp in category_names_by_id: category_name = category_names_by_id[inp] # Enter all fields for the current type fact = {} for key, name in card_type.fields: print _("Enter field"), name inp = raw_input() if inp: fact[key] = inp # Check necesary fields and create new card for required in card_type.required_fields(): if required not in fact: print(_("Error.This card is not saved in a database !!!")) print(_("You didn't enter all necesary field(s) !!!")) break else: # Create new card card.create_new_cards(fact, card_type, 0, [category_name]) database().save(config()['path']) if raw_input(_("Do you want to add a new record? y/n ")) != "y": break
def __init__(self, datadir=None, category=None, records=None): if datadir: datadir = os.path.abspath(datadir) elif os.path.exists(os.path.join(os.getcwdu(), ".mnemosyne")): datadir = os.path.abspath(os.path.join(os.getcwdu(), ".mnemosyne")) else: datadir = os.path.abspath(os.path.join(os.path.expanduser("~"), ".mnemosyne")) print 'datadir=', datadir libmnemosyne.initialise(datadir) self.card_type = FrontToBack() self.database = database() self.saved = False if records: self.records = records else: self.records = -1 if not category: category = "English-Russian" self.category = category #Category(category) self.controller = ui_controller_main()
def accept(self): try: fact_data = self.card_widget.get_data() except ValueError: return # Let the user try again to fill out the missing data. cat_names = [c.strip() for c in unicode(self.categories.currentText()).split(",")] card_type_name = unicode(self.card_types.currentText()) card_type = self.card_type_by_name[card_type_name] c = ui_controller_main() c.update_related_cards(self.fact, fact_data, card_type, cat_names)
def __init__(self, extrasignals=None): """ Iniitialization """ signals = ["review", "input", "configure"] if extrasignals: signals.extend(extrasignals) HildonBaseUi.__init__(self, signals) UiControllerMain.__init__(self, name="Hildon UI Main Controller") ui_controller_main().widget = self
def __init__(self, filename, parent=None): QMainWindow.__init__(self, parent) self.setupUi(self) ui_controller_main().widget = self self.sched = QLabel("", self.statusbar) self.notmem = QLabel("", self.statusbar) self.all = QLabel("", self.statusbar) self.statusbar.addPermanentWidget(self.sched) self.statusbar.addPermanentWidget(self.notmem) self.statusbar.addPermanentWidget(self.all) self.statusbar.setSizeGripEnabled(0) try: initialise_user_plugins() except MnemosyneError, e: self.error_box(e)
def new_cards(self, grade): """Note that we don't rebuild revision queue afterwards, as this can cause corruption for the current card. The new cards will show up after the old queue is empty.""" try: fact_data = self.card_widget.get_data() except ValueError: return # Let the user try again to fill out the missing data. cat_names = [c.strip() for c in \ unicode(self.categories.currentText()).split(',')] card_type_name = unicode(self.card_types.currentText()) card_type = self.card_type_by_name[card_type_name] c = ui_controller_main() c.create_new_cards(fact_data, card_type, grade, cat_names) self.update_combobox(', '.join(cat_names)) database().save(config()['path']) self.card_widget.clear()
def __init__(self): cmd.Cmd.__init__(self) self.prompt = '====== Main =======\nPomni: ' ui_controller_main().widget = self
def update_dialog(self, redraw_all=False): w = self.widget # Update title. database_name = os.path.basename(config()["path"])[:-4] title = _("Mnemosyne") + " - " + database_name w.set_window_title(title) # Update menu bar. if config()["only_editable_when_answer_shown"] == True: if self.card != None and self.state == "SELECT GRADE": w.enable_edit_current_card(True) else: w.enable_edit_current_card(False) else: if self.card != None: w.enable_edit_current_card(True) else: w.enable_edit_current_card(False) w.enable_delete_current_card(self.card != None) w.enable_edit_deck(database().card_count() > 0) # Hide/show the question and answer boxes. if self.state == "SELECT SHOW": w.question_box_visible(True) if self.card.fact_view.a_on_top_of_q: w.answer_box_visible(False) elif self.state == "SELECT GRADE": w.answer_box_visible(True) if self.card.fact_view.a_on_top_of_q: w.question_box_visible(False) else: w.question_box_visible(True) w.answer_box_visible(True) # Update question label. question_label_text = _("Question:") if self.card != None and self.card.fact.cat[0].name != _("<default>"): for c in self.card.fact.cat: question_label_text += " " + c.name w.set_question_label(question_label_text) # Update question content. if self.card == None: w.clear_question() elif self.state == "SELECT SHOW" or redraw_all == True: w.set_question(self.card.question()) # Update answer content. if self.card == None or self.state == "SELECT SHOW": w.clear_answer() else: w.set_answer(self.card.answer()) # Update 'Show answer' button. if self.state == "EMPTY": show_enabled, default, text = False, True, _("Show answer") grades_enabled = False elif self.state == "SELECT SHOW": show_enabled, default, text = True, True, _("Show answer") grades_enabled = False elif self.state == "SELECT GRADE": show_enabled, default, text = False, True, _("Show answer") grades_enabled = True elif self.state == "SELECT AHEAD": show_enabled, default, text = True, False, \ _("Learn ahead of schedule") grades_enabled = False w.update_show_button(text, default, show_enabled) # Update grade buttons. if self.card != None and self.card.grade in [0,1]: i = 0 # Acquisition phase. default_4 = False else: i = 1 # Retention phase. default_4 = True w.enable_grades(grades_enabled) if grades_enabled: w.grade_4_default(default_4) # Tooltips and texts for the grade buttons. for grade in range(0,6): # Tooltip. if self.state == "SELECT GRADE" and \ config()["show_intervals"] == "tooltips": w.set_grade_tooltip(grade, tooltip[i][grade] +\ self.next_rep_string(scheduler().process_answer(self.card, \ grade, dry_run=True))) else: w.set_grade_tooltip(grade, tooltip[i][grade]) # Button text. if self.state == "SELECT GRADE" and \ config()["show_intervals"] == "buttons": w.set_grade_text(grade, str(scheduler().process_answer(\ self.card, grade, dry_run=True))) w.set_grades_title(_("Pick days until next repetition:")) else: w.set_grade_text(grade, str(grade)) w.set_grades_title(_("Grade your answer:")) # TODO: accelerator update needed? #self.grade_buttons[grade].setAccel(QKeySequence(str(grade))) # Update status bar. ui_controller_main().widget.update_status_bar() # Run possible update code that independent of the controller state. # TODO: remove when migration is complete. w.update_dialog()
def add_cards(self): ui_controller_main().add_cards()
def file_save_as(self): ui_controller_main().file_save_as()
def file_open(self): ui_controller_main().file_open()
def file_new(self): ui_controller_main().file_new()
def edit_current_card(self): ui_controller_main().edit_current_card()
self.statusbar.addPermanentWidget(self.notmem) self.statusbar.addPermanentWidget(self.all) self.statusbar.setSizeGripEnabled(0) try: initialise_user_plugins() except MnemosyneError, e: self.error_box(e) if filename == None: filename = config()["path"] try: database().load(filename) except MnemosyneError, e: self.error_box(e) filename = os.path.join(os.path.split(filename)[0],"___TMP___.mem") database().new(filename) ui_controller_main().widget = self self.update_review_widget() ui_controller_review().new_question() def information_box(self, message, OK_string): QMessageBox.information(None, _("Mnemosyne"), message, OK_string) def question_box(self, question, option0, option1, option2): return QMessageBox.question(None, _("Mnemosyne"), question, option0, option1, option2, 0, -1) def error_box(self, event): if event.info: event.msg += "\n" + event.info QMessageBox.critical(None, _("Mnemosyne"), event.msg, _("&OK"), "", "", 0, -1)