Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/ReckonPrimer.activity/display.py
diff options
context:
space:
mode:
Diffstat (limited to 'ReckonPrimer.activity/display.py')
-rwxr-xr-xReckonPrimer.activity/display.py191
1 files changed, 123 insertions, 68 deletions
diff --git a/ReckonPrimer.activity/display.py b/ReckonPrimer.activity/display.py
index ac0381e..4e93400 100755
--- a/ReckonPrimer.activity/display.py
+++ b/ReckonPrimer.activity/display.py
@@ -21,10 +21,13 @@ class Display:
def __init__(self, window):
self._permanent_gui_elements(window)
self.errors = 0
- self._ex = None # WN091214 ???
- self._ex_key = None #
+ self._ex = None # needed for feedback_table etc
+ # TODO: imprive information hiding
self._sett = None # setting updated by callbacks during input
- self.running = False # first round of calculations WN091214 ???
+ self.running = False # switch settings_/feedback_table TODO rename
+ self._coll_key = None # semaphore for self.finish_collect_callback
+ # and Collection.select_exerc_callback
+ self._testvar = 'FOUND'
def register(self, sess, co, learner):
"""register _after_ Session and Coach have been instantiated"""
@@ -85,9 +88,9 @@ class Display:
self.scrolled_window.show()
# 3 tables as overlays with same 15 lines and 6 columns
- self.settings_table = gtk.Table(15, 6, True)
- self.collection_table = gtk.Table(15, 6, True)
- self.feedback_table = gtk.Table(15, 6, True)
+ self.settings_table = gtk.Table (14, 9, True)
+ self.collection_table = gtk.Table(14, 9, True)
+ self.feedback_table = gtk.Table (14, 9, True)
# Insert the 3 tables into the right half of the screen
self.table.attach(self.settings_table, 1, 2, 0, 5)
@@ -95,9 +98,9 @@ class Display:
self.table.attach(self.feedback_table, 1, 2, 0, 5)
# show all tables, scrolled_window already shown above
- self.settings_table.show()
- self.collection_table.show()
- self.feedback_table.show()
+ self.settings_table_show() # treat uniformly <>!
+ self.collection_table.show() # treat uniformly !
+ self.feedback_table.show() # treat uniformly !
self.table.show() # since all other tables have been inserted
def update_time(self):
@@ -114,19 +117,46 @@ class Display:
self.stopwatch_label.queue_draw()
return True
+ def settings_table_show(self): # rename to .._permanent
+ """ Initialize all permanent gui-elements in settings_table. """
+ # button releasing settings_table and coach.notify('setting-done',..)
+ self.see_butt = gtk.Button(None, gtk.STOCK_GO_FORWARD)
+ self.see_butt.connect("clicked", self.release_sett_callback)
+ #self.settings_table.attach(self.see_butt, 0, 5, 14, 15)
+ self.settings_table.attach(self.see_butt, 0, 8, 13, 14)
+ self.see_alignment = self.see_butt.get_children()[0]
+ self.see_hbox = self.see_alignment.get_children()[0]
+ self.see_image, self.see_label = self.see_hbox.get_children()
+ self.see_label.set_label("settings_table")
+ self.see_butt.show()
+ # button switching from settings_table to collect_table
+ self.sec_butt = gtk.Button("")
+ self.sec_butt.connect("clicked", self.switch_setts_to_coll_callback)
+ #self.settings_table.attach(self.sec_butt, 5, 6, 14, 15)
+ self.settings_table.attach(self.sec_butt, 8, 9, 13, 14)
+ self.sec_alignment = self.sec_butt.get_children()[0]
+ self.sec_butt.show()
+
+ def switch_setts_to_coll_callback(self, widget):
+ """ Switch from settings_table to collection_table. """
+ self.settings_table.hide()
+ self.collection_table.show()
+
def feedback_table_show(self):
"""RENAME to draw_feedback_screen"""
# Section for stopwatch
self.stopwatch = Timer()
self.stopwatch_label = gtk.Label("00:00")
self.stopwatch_label.modify_font(pango.FontDescription("sans 16"))
- self.feedback_table.attach(self.stopwatch_label, 3, 5, 12, 13)
+ #self.feedback_table.attach(self.stopwatch_label, 3, 5, 12, 13)
+ self.feedback_table.attach(self.stopwatch_label, 4, 6, 12, 13)
# Section for nickname
self.name = profile.get_nick_name()
self.name_label = gtk.Label(self.name)
self.name_label.modify_font(pango.FontDescription("sans 16"))
- self.feedback_table.attach(self.name_label, 0, 6, 13, 14)
+ #self.feedback_table.attach(self.name_label, 0, 6, 13, 14)
+ self.feedback_table.attach(self.name_label, 0, 9, 13, 14)
# Section for progress bar
self.progressbar = gtk.ProgressBar(adjustment=None)
@@ -136,7 +166,7 @@ class Display:
style.bg[gtk.STATE_PRELIGHT] = gtk.gdk.color_parse("green")
self.progressbar.set_style (style)
self.progressbar.set_fraction(0)
- self.feedback_table.attach(self.progressbar, 0, 6, 8, 9)
+ self.feedback_table.attach(self.progressbar, 0, 9, 8, 9)
# Labels for progress bar
self.progress0 = gtk.Label("0")
@@ -154,7 +184,8 @@ class Display:
attr.insert(fg_color)
self.correct_counter.set_attributes(attr)
- self.feedback_table.attach(self.correct_counter, 2, 4, 9, 10 )
+ #self.feedback_table.attach(self.correct_counter, 2, 4, 9, 10 )
+ self.feedback_table.attach(self.correct_counter, 3, 5, 9, 10 )
self.false_count = 0
self.false_counter = gtk.Label(str(self.false_count))
@@ -166,7 +197,8 @@ class Display:
attr.insert(fg_color)
self.false_counter.set_attributes(attr)
- self.feedback_table.attach(self.false_counter, 2, 4, 10, 11 )
+ #self.feedback_table.attach(self.false_counter, 2, 4, 10, 11 )
+ self.feedback_table.attach(self.false_counter, 3, 5, 10, 11 )
self.stopwatch_label.show()
gobject.timeout_add(1000, self.update_time)
@@ -179,9 +211,19 @@ class Display:
self.total_calcs = self._ex.count()
self.progress_total = gtk.Label(str(self.total_calcs))
self.progress_total.modify_font(pango.FontDescription("sans 16"))
- self.feedback_table.attach(self.progress_total, 5, 6, 9, 10 )
+ #self.feedback_table.attach(self.progress_total, 5, 6, 9, 10 )
+ self.feedback_table.attach(self.progress_total, 8, 9, 9, 10 )
self.progress_total.show()
+ self.sfb_butt = gtk.Button(None, gtk.STOCK_STOP)
+ self.sfb_butt.connect("clicked", self.release_feedb_callback)
+ self.feedback_table.attach(self.sfb_butt, 0, 9, 13, 14)
+ self.sfb_alignment = self.sfb_butt.get_children()[0]
+ self.sfb_hbox = self.sfb_alignment.get_children()[0]
+ self.sfb_image, self.sfb_label = self.sfb_hbox.get_children()
+ self.sfb_label.set_label("feedback_table")
+ self.sfb_butt.show()
+
def feedback_table_hide(self):
self.progressbar.set_fraction(0)
self.stopwatch_label.hide()
@@ -191,56 +233,35 @@ class Display:
self.correct_counter.hide()
self.false_counter.hide()
self.progress_total.hide()
+ self.sfb_butt.hide()
def offer_setting(self,ex):
""" Prepare display for update of settings. """
self._ex = ex #WN.LV either drop this or self.current_exercise
self._sett = self._ex.get_setting() #WN.LV make _sett local
- ### START BUTTON BEGIN ###
- self.start_button = gtk.Button(None, gtk.STOCK_GO_FORWARD)
- self.start_button.connect("clicked", self.clicked_start_callback)
- self.feedback_table.attach(self.start_button, 0, 6, 14, 15)
- self.start_alignment = self.start_button.get_children()[0]
- self.start_hbox = self.start_alignment.get_children()[0]
- self.start_image, self.start_label = self.start_hbox.get_children()
- self.start_label.set_label("")
- self.start_button.show()
- ### START BUTTON END ###
-
self.current_exercise = ex #WN.LV either drop this or self._ex
- #print('in display.offer_setting, self._sett=', self._sett)
+ print('in display.offer_setting, topic=', self._sett['topic'])
self.current_exercise.define_buttons()
self.current_exercise.set_buttons(self._sett)
+ self.settings_table.show()
+
+ def release_feedb_callback(self, widget):
+ """ """
+ self.protocol('----------------------------------------', 0, 'OK')
+ print('in display.release_feedb_callback')
+ self.calc_table.destroy()
+ self.feedback_table_hide()
+ self.collection_table.show() # from here the next user-interactions
+
+ def release_sett_callback(self, widget):
+ """ Start calcs with these settings (probably updated). """
+ print('in display.release_sett_callback')
+ self._co.notify(('setting-done', self._ex._sett))
+ self.settings_table.hide()
+ #self.collection_table.hide()
+ self.feedback_table_show()
- def clicked_start_callback(self, widget):
- """ Finish offer_setting, deliver settings (possibly updated)
- and tell the coach to start the calculations of the exercise
- ELIF
- """
- if self.running == False:
- self.running = True
- self.start_button.set_label(gtk.STOCK_STOP) #stop-button
- self.start_alignment = self.start_button.get_children()[0]
- self.start_hbox = self.start_alignment.get_children()[0]
- self.start_image, self.start_label = self.start_hbox.get_children()
- self.start_label.set_label("")
- self._co.notify(('setting-done', self._sett))# difference from here
- self.settings_table.hide()
- self.collection_table.hide()
- self.feedback_table_show()
- elif self.running == True:
- self.protocol('----------------------------------------', 0, 'OK')
- self.running = False
- self.start_button.set_label(gtk.STOCK_GO_FORWARD)# >-button
- self.start_alignment = self.start_button.get_children()[0]
- self.start_hbox = self.start_alignment.get_children()[0]
- self.start_image, self.start_label = self.start_hbox.get_children()
- self.start_label.set_label("")
- self.calc_table.destroy() # difference from here
- self.feedback_table_hide()
- self.settings_table.show()
- self.collection_table.show()
def init_calc(self):
"""
@@ -268,16 +289,6 @@ class Display:
mark = self.log_buffer.create_mark(None, end_iterator, True)
self.log_view.scroll_mark_onscreen(mark)
-# def dis_calc(self, clist, cursor, errs):
-# _i, _calc = 0, ''
-# for _c in clist:
-# _i = _i + 1
-# if (_i == cursor) & (errs > 0):
-# _calc = _calc + '_'
-# else:
-# _calc = _calc + _c
-# return _calc + ' ' + errs * '/'
-
def input_digit(self, widget, dig, proterr, protok):
"""callback: input a digit and give feedback.
The _only_ other active widget is the <stop>-button on the right"""
@@ -364,17 +375,61 @@ class Display:
def offer_coll_to_learner(self, collect):
"""TODO: get the users choice from buttons above the settings"""
collect.define_coll_gui()
- collect.set_coll_gui() # sets callbacks
+ collect.set_coll_gui(collect) # sets callbacks
+ self.set_coll_to_learner() # set finish_learner_coll_butt + callb
def switch_exercise(self):
""" Another exercise has been selected. """
+ #WN091215 DAS IST AB JETZT FALSCH: ex<->sett + ex<->coll moeglich
self.settings_table.destroy()
- self.settings_table = gtk.Table(15, 6, True)
+ self.settings_table = gtk.Table(14, 9, True)
self.table.attach(self.settings_table, 1, 2, 0, 5)
self.settings_table.show()
self.feedback_table.destroy()
- self.feedback_table = gtk.Table(15, 6, True)
+ self.feedback_table = gtk.Table(14, 9, True)
self.table.attach(self.feedback_table, 1, 2, 0, 5)
self.feedback_table.show()
+ def set_select_exerc_semaphore(self, coll_key):
+ """ Sets a semaphore for finish_collect_callback. """
+ print('in display.set_select_exerc_semaphore, coll_key', self._coll_key)
+ self._coll_key = coll_key
+
+ def set_coll_to_learner(self):
+ """ Set the permanent gui-elements for collection_table. """
+ print('in display.set_coll_to_learner')
+ # button switching from collect_table to calcs
+ self.flc_butt = gtk.Button(None, gtk.STOCK_GO_FORWARD)
+ self.flc_butt.connect("clicked", self.finish_learner_coll_callback)
+ self.collection_table.attach(self.flc_butt, 0, 8, 13, 14)
+ self.flc_alignment = self.flc_butt.get_children()[0]
+ self.flc_hbox = self.flc_alignment.get_children()[0]
+ self.flc_image, self.flc_label = self.flc_hbox.get_children()
+ self.flc_label.set_label("to calcs")
+ self.flc_butt.show()
+
+ # button switching from collect_table to settings_table
+ self.sts_butt = gtk.Button("")
+ self.sts_butt.connect("clicked", self.switch_learner_to_setts)
+ self.collection_table.attach(self.sts_butt, 8, 9, 13, 14)
+ self.sts_alignment = self.sts_butt.get_children()[0]
+ self.sts_butt.show()
+
+ def finish_learner_coll_callback(self, widget):
+ """ Callback on flc_butt; uses self._coll_key as semaphore
+ from Collection.select_exerc_callback. """
+ print('in display.finish_learner_coll_callback, _coll_key=', self._coll_key)
+ if not(self._coll_key is None):
+ self._co.notify(('exerc-selected', self._coll_key))
+ self.collection_table.hide()
+ self.feedback_table_show()
+
+ def switch_learner_to_setts(self, widget):
+ """ Callback on sts_butt. asks the Coach if allowed. """
+ self._co.notify(('switch-to-setts', self._coll_key))
+ self.collection_table.hide()
+
+ def set_curr_exerc(self, exerc):
+ """ self._ex is needed for feedback_table etc. """
+ self._ex = exerc