diff options
Diffstat (limited to 'view.py')
-rw-r--r-- | view.py | 115 |
1 files changed, 115 insertions, 0 deletions
@@ -0,0 +1,115 @@ +import gtk, random +import locale + +class Views(): + def __init__(self): + locale.setlocale(locale.LC_ALL,"") + self.user_interaction = gtk.HBox() + self.user_input = gtk.VBox() + self.user_interaction.pack_start(self.user_input, False, False, 10) + self.rounding_phrase = gtk.Label("rounding phrase") + self.user_input.pack_start(self.rounding_phrase, False, False, 10) + #create the notebook + self.tabber = gtk.Notebook() + self.tabber.set_show_tabs(False) + self.user_input.pack_start(self.tabber, False, False, 10) + #create the slider tab + self.slider_tab = gtk.VButtonBox() + self.slider_instruction = gtk.Label("Move the slider to choose the correct answer") + self.slider_tab.pack_start(self.slider_instruction, False, False, 10) + self.slider_adjustment = gtk.Adjustment() + self.slider_tool = gtk.HScale(self.slider_adjustment) + self.slider_tool.set_digits(0) + self.slider_tab.pack_start(self.slider_tool, False, False, 10) + self.slider_click = gtk.Button("OK") + self.slider_tab.pack_start(self.slider_click, False, False, 10) + self.tabber.append_page(self.slider_tab) + #create the multiple choice tab + self.mult_tab = gtk.VBox() + self.mult_instruction = gtk.Label("Choose one of the answers below") + self.mult_tab.pack_start(self.mult_instruction, False, False, 10) + self.mult_1 = gtk.Button() + self.mult_tab.pack_start(self.mult_1, False, False, 10) + self.mult_2 = gtk.Button() + self.mult_tab.pack_start(self.mult_2, False, False, 10) + self.mult_3 = gtk.Button() + self.mult_tab.pack_start(self.mult_3, False, False, 10) + self.mult_4 = gtk.Button() + self.mult_tab.pack_start(self.mult_4, False, False, 10) + self.tabber.append_page(self.mult_tab) + #create the entry tab + self.entry_tab = gtk.VButtonBox() + self.entry_instruction = gtk.Label("Type your answer below and click 'OK'") + self.entry_tab.pack_start(self.entry_instruction, False, False, 10) + self.entry_tool = gtk.Entry() + self.entry_tab.pack_start(self.entry_tool, False, False, 10) + self.entry_click = gtk.Button("OK") + self.entry_tab.pack_start(self.entry_click, False, False, 10) + self.tabber.append_page(self.entry_tab) + #create the output + self.user_output = gtk.VBox() + self.user_interaction.pack_start(self.user_output, False, False, 10) + self.output = gtk.Label("") + self.output.set_alignment(0.1, 0.5) + self.user_output.pack_start(self.output, False, False, 10) + self.image_output = gtk.Image() + self.user_output.pack_start(self.image_output, False, False, 10) + self.image_correct_answer = gtk.gdk.pixbuf_new_from_file("hoppy-right.svg") + self.image_incorrect_answer = gtk.gdk.pixbuf_new_from_file("hoppy-wrong.svg") + + def get_user_interaction(self): + return self.user_interaction + + def set_rounding_phrase(self, data): + text = "Round the number <b>" + text += self.locl(data.random_number) + text += "</b> to the nearest <b>" + text += self.locl(data.answer_decade) + "</b>" + self.rounding_phrase.set_markup(text) + + def set_choices(self, number, choices): + self.slider_adjustment.set_all(number, choices[0], choices[1], 1) + # shuffle around the possibilities + random.shuffle(choices) + self.mult_1.set_label(self.locl(choices[0])) + self.mult_2.set_label(self.locl(choices[1])) + self.mult_3.set_label(self.locl(choices[2])) + self.mult_4.set_label(self.locl(choices[3])) + self.entry_tool.set_text("") + + def answer_correct(self, data): + text = "<span foreground=\"dark green\"><b>That's Right!!! =8-) </b></span> \n\n" + text += self.locl(data.random_number) + " rounded to the nearest " + text += self.locl(data.answer_decade) + " is " + self.locl(data.correct_answer) + if data.level_change: + text += "\n\n<span foreground=\"dark green\"><b>You made it to the next level! =8^P</b></span>" + text += "\n" #+ data.show_game_data() + self.output.set_markup(text) + self.image_output.set_from_pixbuf(self.image_correct_answer) + + def answer_incorrect(self, data): + text = "<span foreground=\"red\"><b>Sorry Charlie >:( </b></span> \n\n" + text += self.locl(data.random_number) + " rounded to the nearest " + text += self.locl(data.answer_decade) + " is " + self.locl(data.correct_answer) + if data.level_change: + text += "\n\n<span foreground=\"red\"><b>You dropped a level. Concentrate! >8^|</b></span>" + text += "\n" #+ data.show_game_data() + self.output.set_markup(text) + self.image_output.set_from_pixbuf(self.image_incorrect_answer) + + def answer_nan(self): + text = "<span foreground=\"blue\"><b>Please enter only numbers.</b></span> \n\n" + self.output.set_markup(text) + + def set_tab(self, data): + if data.question_count > data.thresh_entry: + self.tabber.set_current_page(2) + self.entry_tool.grab_focus() + elif data.question_count > data.thresh_mult: + self.tabber.set_current_page(1) + elif data.question_count > data.thresh_slider: + self.tabber.set_current_page(0) + self.slider_tool.grab_focus() + + def locl(self, characters): + return str(locale.format("%d", characters, True)) |