def __init__(self, heading, st_data, st):
     """
     st_data is the statistics data we want displayled
     st is the statistics object the statistics are collected from.
     """
     gtk.VBox.__init__(self)
     label = gtk.Label(heading)
     label.set_name("StatisticsH2")
     label.set_alignment(0.0, 0.0)
     self.pack_start(label, False)
     hbox = gu.bHBox(self, False)
     frame = gtk.Frame()
     hbox.pack_start(frame, False)
     t = gtk.Table()
     frame.add(t)
     keys = st.get_keys(True)
     for x in range(len(keys)):
         t.attach(gtk.VSeparator(), x*2+1, x*2+2, 0, len(keys)*2)
     for x in range(len(keys)-1):
         t.attach(gtk.HSeparator(), 0, len(keys)*2+1, x*2+1, x*2+2)
     for y, key in enumerate(keys):
         l = lessonfilegui.new_labelobject(st.key_to_pretty_name(key))
         l.set_alignment(0.0, 0.5)
         t.attach(l, 0, 1, y*2, y*2+1, xpadding=gu.PAD)
         for x, skey in enumerate(keys):
             try:
                 s = st_data[key][skey]
             except KeyError:
                 s = '-'
             l = gtk.Label(s)
             if x == y:
                 l.set_name('BoldText')
             t.attach(l, x*2+2, x*2+3, y*2, y*2+1, xpadding=gu.PAD)
     self.show_all()
Exemple #2
0
 def display(self, txt, **kwargs):
     self.empty()
     r = re.compile("(\{\w+\})")  # Unicode??
     self.set_size_request(-1, -1)
     for child in r.split(txt):
         m = r.match(child)
         if m:
             varname = child[1:][:-1]
             from solfege import lessonfilegui
             if isinstance(kwargs[varname], basestring):
                 w = gtk.Label(kwargs[varname])
                 w.set_name("FlashBarLabel")
             else:
                 w = lessonfilegui.new_labelobject(kwargs[varname])
         elif child:  # don't create label for empty string
             w = gtk.Label(child)
             w.set_name("FlashBarLabel")
         self.__content.pack_start(w, False)
         w.show()
     sx, sy = self.size_request()
     self.m_sx = max(sx, self.m_sx)
     self.m_sy = max(sy, self.m_sy)
     self.set_size_request(self.m_sx, self.m_sy)
     if self.__timeout:
         gobject.source_remove(self.__timeout)
         self.__timeout = None
Exemple #3
0
 def display(self, txt, **kwargs):
     self.empty()
     r = re.compile("(\{\w+\})") # Unicode??
     self.set_size_request(-1, -1)
     for child in r.split(txt):
         m = r.match(child)
         if m:
             varname = child[1:][:-1]
             from solfege import lessonfilegui
             if isinstance(kwargs[varname], basestring):
                 w = Gtk.Label(label=kwargs[varname])
                 w.set_name("FlashBarLabel")
             else:
                 w = lessonfilegui.new_labelobject(kwargs[varname])
         elif child: # don't create label for empty string
             w = Gtk.Label(label=child)
             w.set_name("FlashBarLabel")
         self.__content.pack_start(w, False, False, 0)
         w.show()
     self.m_sx = max(self.size_request().width, self.m_sx)
     self.m_sy = max(self.size_request().height, self.m_sy)
     self.set_size_request(self.m_sx, self.m_sy)
     if self.__timeout:
         GObject.source_remove(self.__timeout)
         self.__timeout = None
Exemple #4
0
 def add(self, question, callback):
     """add a button and set up callback function.
     there should not be created more than one button with the same
     (c locale) name.
     return the button created.
     """
     if 'newline' in question and question.newline:
         self.newline()
     b = Gtk.Button()
     if question.name.cval in self.m_button_dict:
         print(
             "Warning: The lessonfile contain several questions with the same name:",
             question.name.cval,
             file=sys.stderr)
         print("         This is a bug in the lesson file.",
               file=sys.stderr)
     self.m_button_dict[question.name.cval] = b
     self.m_name_list.append(question.name.cval)
     b.m_cname = question.name.cval
     b.set_sensitive(question.active)
     b.add(lessonfilegui.new_labelobject(question.name))
     b.show_all()
     self.attach(b, self.m_x, self.m_x + 1, self.m_y, self.m_y + 1)
     b.connect('clicked', callback)
     b.connect('button_release_event', callback)
     self.conditional_newline()
     return b
Exemple #5
0
 def add(self, question):
     """add a button and set up callback function.
     there should not be created more than one button with the same
     (c locale) name.
     return the button created.
     """
     if 'newline' in question and question.newline:
         self.newline()
     b = Gtk.CheckButton()
     if question.name.cval in self.m_button_dict:
         print(
             "Warning: The lessonfile contain several questions with the same name:",
             question.name.cval,
             file=sys.stderr)
         print("         Things will not work as normal after this.",
               file=sys.stderr)
     self.m_button_dict[question.name.cval] = b
     self.m_name_list.append(question.name.cval)
     b.set_active(question.active)
     b.connect('toggled', self.on_checkbutton_toggled)
     b.m_cname = question.name.cval
     b.add(lessonfilegui.new_labelobject(question.name))
     b.show_all()
     self.attach(b, self.m_x, self.m_x + 1, self.m_y, self.m_y + 1)
     self.conditional_newline()
     return b
def label_from_key(statistics, key):
    try:
        v = eval(key)
    except Exception:
        v = key
    else:
        if isinstance(v, (int, float, long)):
            v = key
    if not v:
        l = gtk.Label(key)
    elif hasattr(statistics, 'm_key_is_list'):
        l = lessonfilegui.LabelObjectBox(statistics.m_t.m_P, v)
    else:
        l = lessonfilegui.new_labelobject(statistics.key_to_pretty_name(v))
    l.set_alignment(0.0, 0.5)
    return l
def label_from_key(statistics, key):
    try:
        v = eval(key)
    except Exception:
        v = key
    else:
        if isinstance(v, (int, float)):
            v = key
    if not v:
        l = Gtk.Label(label=key)
    elif hasattr(statistics, 'm_key_is_list'):
        l = lessonfilegui.LabelObjectBox(statistics.m_t.m_P, v)
    else:
        l = lessonfilegui.new_labelobject(statistics.key_to_pretty_name(v))
    l.set_alignment(0.0, 0.5)
    return l
 def add(self, question):
     """add a button and set up callback function.
     there should not be created more than one button with the same
     (c locale) name.
     return the button created.
     """
     if 'newline' in question and question.newline:
         self.newline()
     b = gtk.CheckButton()
     if question.name.cval in self.m_button_dict:
         print >> sys.stderr, "Warning: The lessonfile contain several questions with the same name:", question.name.cval
         print >> sys.stderr, "         Things will not work as normal after this."
     self.m_button_dict[question.name.cval] = b
     self.m_name_list.append(question.name.cval)
     b.set_active(question.active)
     b.connect('toggled', self.on_checkbutton_toggled)
     b.set_data('cname', question.name.cval)
     b.add(lessonfilegui.new_labelobject(question.name))
     b.show_all()
     self.attach(b, self.m_x, self.m_x+1, self.m_y, self.m_y+1)
     self.conditional_newline()
     return b
    def update(self, statistics):
        for box in self.boxdict.values():
            for o in box.get_children():
                o.destroy()
        for k in statistics.get_keys(True):
            l = lessonfilegui.new_labelobject(statistics.key_to_pretty_name(k))
            l.set_alignment(0.0, 0.5)
            self.boxdict['keys'].pack_start(l)
            for sk, seconds in (('session', 0),
                       ('today', 60*60*24),
                       ('last7', 60*60*24*7),
                       ('total', -1)):

                percentage = statistics.get_percentage_correct_for_key(seconds, k)
                if percentage == 0.0:
                    self.boxdict[sk+'percent'].pack_start(gtk.Label("-"))
                else:
                    self.boxdict[sk+'percent'].pack_start(
                        gtk.Label("%.0f" % percentage))
                self.boxdict[sk+'count'].pack_start(
                    gtk.Label(str(statistics.get_num_guess_for_key(seconds, k))))
        self.show_all()
 def add(self, question, callback):
     """add a button and set up callback function.
     there should not be created more than one button with the same
     (c locale) name.
     return the button created.
     """
     if 'newline' in question and question.newline:
         self.newline()
     b = gtk.Button()
     if question.name.cval in self.m_button_dict:
         print >> sys.stderr, "Warning: The lessonfile contain several questions with the same name:", question.name.cval
         print >> sys.stderr, "         This is a bug in the lesson file."
     self.m_button_dict[question.name.cval] = b
     self.m_name_list.append(question.name.cval)
     b.set_data('cname', question.name.cval)
     b.set_sensitive(question.active)
     b.add(lessonfilegui.new_labelobject(question.name))
     b.show_all()
     self.attach(b, self.m_x, self.m_x+1, self.m_y, self.m_y+1)
     b.connect('clicked', callback)
     b.connect('button_release_event', callback)
     self.conditional_newline()
     return b
Exemple #11
0
 def __init__(self, label):
     Gtk.Button.__init__(self)
     l = lessonfilegui.new_labelobject(label)
     self.add(l)
     self.m_marked_wrong = False