Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/view.py
diff options
context:
space:
mode:
Diffstat (limited to 'view.py')
-rw-r--r--view.py115
1 files changed, 115 insertions, 0 deletions
diff --git a/view.py b/view.py
new file mode 100644
index 0000000..7b8bdbb
--- /dev/null
+++ b/view.py
@@ -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))