scientific-programming-exer.../exam/ex03/callbacks.py

79 lines
2.5 KiB
Python

from gi.repository import Gtk
from settings import load_words_from_file, manually_add_question, save_questions_to_file
from exercise import Question
class CallbackHandler(object):
def __init__(self, gtk_builder):
self.builder = gtk_builder
self.question = None
def on_manually_add_submit_button_clicked(self, widget):
question_view = self.builder.get_object("add_question_question_view")
answer_view = self.builder.get_object("add_question_answer_view")
question = question_view.get_text()
answer = answer_view.get_text()
try:
manually_add_question(question, answer)
except:
return
question_view.set_text("")
answer_view.set_text("")
def on_load_from_file_chooser_file_set(self, widget):
file_chooser = self.builder.get_object("load_from_file_chooser")
file_name = file_chooser.get_filename()
load_words_from_file(file_name)
def on_save_questions_to_file_button_clicked(self, widget):
dialog = Gtk.FileChooserDialog("Please choose a file", None
, Gtk.FileChooserAction.SAVE
, (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL
, Gtk.STOCK_OPEN, Gtk.ResponseType.OK))
response = dialog.run()
if(response == Gtk.ResponseType.CANCEL):
dialog.destroy()
return
file_name = dialog.get_filename()
dialog.destroy()
save_questions_to_file(file_name)
def on_submit_answer_button_clicked(self, widget):
answer_view = self.builder.get_object("answer_view")
correct_answer_view = self.builder.get_object("correct_answer_view")
answer_was_correct_view = self.builder.get_object("answer_was_correct_view")
dispatch_answer_was_correct = {True: "That is correct:"
, False: "Wrong, correct was:"}
submit_answer_button = widget
submit_answer_button.set_sensitive(False)
answer = answer_view.get_text()
was_correct = self.question.submit_answer(answer)
correct_answer_view.set_text(self.question.answer)
answer_was_correct_view.set_text(dispatch_answer_was_correct[was_correct])
def on_next_question_button_clicked(self, widget):
answer_view = self.builder.get_object("answer_view")
correct_answer_view = self.builder.get_object("correct_answer_view")
answer_was_correct_view = self.builder.get_object("answer_was_correct_view")
submit_answer_button = self.builder.get_object("submit_answer_button")
question_view = self.builder.get_object("question_view")
submit_answer_button.set_sensitive(True)
answer_view.set_text("")
correct_answer_view.set_text("")
answer_was_correct_view.set_text("")
self.question = Question.fetch()
question_view.set_text(self.question.question)