示例#1
0
        def onFingeringFinished(self, fm, finger, playername):
            if not isinstance(self.get_child(), Gtk.Label) or \
                    finger.getName().lower() != playername.lower():
                return
            self.fm.disconnect(self.handle_id)

            label = Gtk.Label()
            label.set_markup("<b>%s</b>" % playername)
            widget = Gtk.Frame()
            widget.set_label_widget(label)
            widget.set_shadow_type(Gtk.ShadowType.NONE)

            alignment = Gtk.Alignment.new(0, 0, 1, 1)
            alignment.set_padding(3, 0, 12, 0)
            widget.add(alignment)

            text_view = Gtk.TextView()
            text_view.set_editable(False)
            text_view.set_cursor_visible(False)
            text_view.props.wrap_mode = Gtk.WrapMode.WORD

            tb_iter = text_view.get_buffer().get_end_iter()
            for i, note in enumerate(finger.getNotes()):
                if note:
                    insert_formatted(text_view, tb_iter, "%s\n" % note)
            text_view.show_all()
            scroll_win = Gtk.ScrolledWindow()
            scroll_win.set_policy(Gtk.PolicyType.AUTOMATIC,
                                  Gtk.PolicyType.AUTOMATIC)
            scroll_win.add(text_view)
            alignment.add(scroll_win)

            self.remove(self.get_child())
            self.add(widget)
            widget.show_all()
示例#2
0
        def onFingeringFinished(self, fm, finger, playername):
            if not isinstance(self.get_child(), Gtk.Label) or \
                    finger.getName().lower() != playername.lower():
                return
            self.fm.disconnect(self.handle_id)

            label = Gtk.Label()
            label.set_markup("<b>%s</b>" % playername)
            widget = Gtk.Frame()
            widget.set_label_widget(label)
            widget.set_shadow_type(Gtk.ShadowType.NONE)

            alignment = Gtk.Alignment.new(0, 0, 1, 1)
            alignment.set_padding(3, 0, 12, 0)
            widget.add(alignment)

            text_view = Gtk.TextView()
            text_view.set_editable(False)
            text_view.set_cursor_visible(False)
            text_view.props.wrap_mode = Gtk.WrapMode.WORD

            tb_iter = text_view.get_buffer().get_end_iter()
            for i, note in enumerate(finger.getNotes()):
                if note:
                    insert_formatted(text_view, tb_iter, "%s\n" % note)
            text_view.show_all()
            scroll_win = Gtk.ScrolledWindow()
            scroll_win.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
            scroll_win.add(text_view)
            alignment.add(scroll_win)

            self.remove(self.get_child())
            self.add(widget)
            widget.show_all()
    def onNewsItem(self, nm, news):
        weekday, month, day, title, details = news

        dtitle = "%s, %s %s: %s" % (weekday, month, day, title)
        label = Gtk.Label(label=dtitle)
        label.props.width_request = 300
        label.props.xalign = 0
        label.set_ellipsize(Pango.EllipsizeMode.END)
        expander = Gtk.Expander()
        expander.set_label_widget(label)
        expander.set_tooltip_text(title)
        textview = Gtk.TextView()
        textview.set_wrap_mode(Gtk.WrapMode.WORD)
        textview.set_editable(False)
        textview.set_cursor_visible(False)
        textview.props.pixels_above_lines = 4
        textview.props.pixels_below_lines = 4
        textview.props.right_margin = 2
        textview.props.left_margin = 6

        tb_iter = textview.get_buffer().get_end_iter()
        insert_formatted(textview, tb_iter, details)

        alignment = Gtk.Alignment()
        alignment.set_padding(3, 6, 12, 0)
        alignment.props.xscale = 1
        alignment.add(textview)

        expander.add(alignment)
        expander.show_all()
        self.widgets["newsVBox"].pack_start(expander, False, False, 0)
示例#4
0
    def onNewsItem(self, nm, news):
        weekday, month, day, title, details = news

        dtitle = "%s, %s %s: %s" % (weekday, month, day, title)
        label = Gtk.Label(label=dtitle)
        label.props.width_request = 300
        label.props.xalign = 0
        label.set_ellipsize(Pango.EllipsizeMode.END)
        expander = Gtk.Expander()
        expander.set_label_widget(label)
        expander.set_tooltip_text(title)
        textview = Gtk.TextView()
        textview.set_wrap_mode(Gtk.WrapMode.WORD)
        textview.set_editable(False)
        textview.set_cursor_visible(False)
        textview.props.pixels_above_lines = 4
        textview.props.pixels_below_lines = 4
        textview.props.right_margin = 2
        textview.props.left_margin = 6

        tb_iter = textview.get_buffer().get_end_iter()
        insert_formatted(textview, tb_iter, details)

        alignment = Gtk.Alignment()
        alignment.set_padding(3, 6, 12, 0)
        alignment.props.xscale = 1
        alignment.add(textview)

        expander.add(alignment)
        expander.show_all()
        self.widgets["newsVBox"].pack_start(expander, False, False, 0)
示例#5
0
 def __addMessage (self, iter, time, sender, text):
     pref = sender.lower()
     tb = self.readView.get_buffer()
     # Calculate a color for the sender
     self._ensureColor(pref)
     # Insert time, name and text with different stylesd
     tb.insert_with_tags_by_name(iter, "(%s) "%time, pref+"_normal")
     tb.insert_with_tags_by_name(iter, sender+": ", pref+"_bold")
     insert_formatted(self.readView, iter, text)
     # This is used to buzz the user and add senders to a list of active participants
     self.emit("messageAdded", sender, text, self.colors[pref])
示例#6
0
 def addMessage(self, text, my):
     tag = "mytext" if my else "text"
     text_buffer = self.readView.get_buffer()
     tb_iter = text_buffer.get_end_iter()
     # Messages have linebreak before the text. This is opposite to log
     # messages
     if text_buffer.props.text:
         text_buffer.insert(tb_iter, "\n")
     time = strftime("%H:%M:%S")
     text_buffer.insert_with_tags_by_name(tb_iter, "(%s) " % time, tag)
     insert_formatted(self.readView, tb_iter, text, tag=tag)
示例#7
0
 def __addMessage (self, iter, time, sender, text):
     pref = sender.lower()
     tb = self.readView.get_buffer()
     # Calculate a color for the sender
     self._ensureColor(pref)
     # Insert time, name and text with different stylesd
     tb.insert_with_tags_by_name(iter, "(%s) "%time, pref+"_normal")
     tb.insert_with_tags_by_name(iter, sender+": ", pref+"_bold")
     insert_formatted(self.readView, iter, text)
     # This is used to buzz the user and add senders to a list of active participants
     self.emit("messageAdded", sender, text, self.colors[pref])
示例#8
0
 def addMessage(self, text, my):
     tag = "mytext" if my else "text"
     text_buffer = self.readView.get_buffer()
     tb_iter = text_buffer.get_end_iter()
     # Messages have linebreak before the text. This is opposite to log
     # messages
     if text_buffer.props.text:
         text_buffer.insert(tb_iter, "\n")
     time = strftime("%H:%M:%S")
     text_buffer.insert_with_tags_by_name(tb_iter, "(%s) " % time, tag)
     insert_formatted(self.readView, tb_iter, text, tag=tag)
示例#9
0
    def addMessage(self, text, my):
        text_buffer = self.readView.get_buffer()
        tb_iter = text_buffer.get_end_iter()
        # Messages have linebreak before the text. This is opposite to log
        # messages
        if text_buffer.props.text:
            text_buffer.insert(tb_iter, "\n")
        tag = "mytext" if my else "text"
        insert_formatted(self.readView, tb_iter, text, tag=tag)

        # scroll to the bottom but only if we are not scrolled up to read back
        adj = self.sw.get_vadjustment()
        if adj.get_value() >= adj.get_upper() - adj.get_page_size() - 1e-12:
            tb_iter = text_buffer.get_end_iter()
            self.readView.scroll_to_iter(tb_iter, 0.00, False, 1.00, 1.00)
示例#10
0
    def addMessage(self, text, my):
        text_buffer = self.readView.get_buffer()
        tb_iter = text_buffer.get_end_iter()
        # Messages have linebreak before the text. This is opposite to log
        # messages
        if text_buffer.props.text:
            text_buffer.insert(tb_iter, "\n")
        tag = "mytext" if my else "text"
        insert_formatted(self.readView, tb_iter, text, tag=tag)

        # scroll to the bottom but only if we are not scrolled up to read back
        adj = self.sw.get_vadjustment()
        if adj.get_value() >= adj.get_upper() - adj.get_page_size() - 1e-12:
            tb_iter = text_buffer.get_end_iter()
            self.readView.scroll_to_iter(tb_iter, 0.00, False, 1.00, 1.00)
示例#11
0
    def __addMessage(self, iter, time, sender, text):
        pref = sender.lower()
        text_buffer = self.readView.get_buffer()
        iter = text_buffer.get_end_iter()
        text_buffer.create_mark("end", iter, False)
        if text_buffer.props.text:
            text_buffer.insert(iter, "\n")

        # Calculate a color for the sender
        self._ensureColor(pref)
        # Insert time, name and text with different stylesd
        text_buffer.insert_with_tags_by_name(iter, "(%s) " % time, pref + "_normal")
        text_buffer.insert_with_tags_by_name(iter, sender + ": ", pref + "_bold")
        insert_formatted(self.readView, iter, text)

        # Scroll the mark onscreen.
        mark = text_buffer.get_mark("end")
        text_buffer.move_mark(mark, iter)
        self.readView.scroll_mark_onscreen(mark)

        # This is used to buzz the user and add senders to a list of active participants
        self.emit("messageAdded", sender, text, self.colors[pref])
示例#12
0
    def insert_header(self, gm):
        end_iter = self.textbuffer.get_end_iter

        if gm.info is not None:
            insert_formatted(self.textview, end_iter(), gm.info)
            self.textbuffer.insert(end_iter(), "\n")

        if gm.players:
            text = repr(gm.players[0])
        else:
            return

        self.textbuffer.insert_with_tags_by_name(end_iter(), text, "head2")
        white_elo = gm.tags.get('WhiteElo')
        if white_elo:
            self.textbuffer.insert_with_tags_by_name(end_iter(),
                                                     " %s" % white_elo,
                                                     "head1")

        self.textbuffer.insert_with_tags_by_name(end_iter(), " - ", "head1")

        # text = gm.tags['Black']
        text = repr(gm.players[1])
        self.textbuffer.insert_with_tags_by_name(end_iter(), text, "head2")
        black_elo = gm.tags.get('BlackElo')
        if black_elo:
            self.textbuffer.insert_with_tags_by_name(end_iter(),
                                                     " %s" % black_elo,
                                                     "head1")

        status = reprResult[gm.status]
        if status != '*':
            result = status
        else:
            result = gm.tags['Result']
        self.textbuffer.insert_with_tags_by_name(end_iter(),
                                                 ' ' + result + '\n', "head2")

        text = ""
        time_control = gm.tags.get('TimeControl')
        if time_control:
            if "+" in time_control:
                mins, inc = time_control.split('+')
                mins = int(mins) / 60
                mins = "{:.0f}".format(mins)
                if inc != '0':
                    text += mins + ' mins + ' + inc + ' secs '
                else:
                    text += mins + ' mins '
            else:
                text += time_control + ' '

        event = gm.tags['Event']
        if event and event != "?":
            text += event

        site = gm.tags['Site']
        if site and site != "?":
            if len(text) > 0:
                text += ', '
            text += site

        round = gm.tags['Round']
        if round and round != "?":
            if len(text) > 0:
                text += ', '
            text += _('round %s') % round

        game_date = gm.tags.get('Date')
        if game_date is None:
            game_date = "%02d.%02d.%02d" % (gm.tags['Year'], gm.tags['Month'],
                                            gm.tags['Day'])
        if ('?' not in game_date) and game_date.count('.') == 2:
            y, m, d = map(int, game_date.split('.'))
            # strftime() is limited to > 1900 dates
            try:
                text += ', ' + datetime.date(y, m, d).strftime('%x')
            except ValueError:
                text += ', ' + game_date
        elif '?' not in game_date[:4]:
            text += ', ' + game_date[:4]
        self.textbuffer.insert_with_tags_by_name(end_iter(), text, "head1")

        eco = gm.tags.get('ECO')
        if eco:
            self.textbuffer.insert_with_tags_by_name(end_iter(), "\n" + eco,
                                                     "head2")
            opening = gm.tags.get('Opening')
            if opening:
                self.textbuffer.insert_with_tags_by_name(
                    end_iter(), " - ", "head1")
                self.textbuffer.insert_with_tags_by_name(
                    end_iter(), opening, "head2")
            variation = gm.tags.get('Variation')
            if variation:
                self.textbuffer.insert_with_tags_by_name(
                    end_iter(), ", ", "head1")
                self.textbuffer.insert_with_tags_by_name(
                    end_iter(), variation, "head2")

        self.textbuffer.insert(end_iter(), "\n\n")
示例#13
0
    def insert_header(self, gm):
        end_iter = self.textbuffer.get_end_iter

        if gm.info is not None:
            insert_formatted(self.textview, end_iter(), gm.info)
            self.textbuffer.insert(end_iter(), "\n")

        if gm.players:
            text = repr(gm.players[0])
        else:
            return

        self.textbuffer.insert_with_tags_by_name(end_iter(), text, "head2")
        white_elo = gm.tags.get('WhiteElo')
        if white_elo:
            self.textbuffer.insert_with_tags_by_name(end_iter(),
                                                     " %s" % white_elo,
                                                     "head1")

        self.textbuffer.insert_with_tags_by_name(end_iter(), " - ", "head1")

        # text = gm.tags['Black']
        text = repr(gm.players[1])
        self.textbuffer.insert_with_tags_by_name(end_iter(), text, "head2")
        black_elo = gm.tags.get('BlackElo')
        if black_elo:
            self.textbuffer.insert_with_tags_by_name(end_iter(),
                                                     " %s" % black_elo,
                                                     "head1")

        status = reprResult[gm.status]
        if status != '*':
            result = status
        else:
            result = gm.tags['Result']
        self.textbuffer.insert_with_tags_by_name(end_iter(),
                                                 ' ' + result + '\n', "head2")

        text = ""
        time_control = gm.tags.get('TimeControl')
        if time_control:
            if re.match("^[0-9]+\+[0-9]+$", time_control) is None:
                text += time_control
            else:
                mins, inc = time_control.split('+')
                tmin = int(floor(int(mins) / 60))
                tsec = int(mins) - 60 * tmin
                if tmin > 0:
                    text += str(tmin) + " " + (_("mins")
                                               if tmin > 1 else _("min"))
                if tsec > 0:
                    text += " " if text != "" else ""
                    text += str(tsec) + " " + (_("secs")
                                               if tsec > 1 else _("sec"))
                if inc != "" and inc != "0":
                    text += " + " + inc + " " + (_("secs") if int(inc) > 1 else
                                                 _("sec")) + "/" + _("move")

        event = gm.tags['Event']
        if event and event != "?":
            if len(text) > 0:
                text += ', '
            text += event

        site = gm.tags['Site']
        if site and site != "?":
            if len(text) > 0:
                text += ', '
            text += site

        round = gm.tags['Round']
        if round and round != "?":
            if len(text) > 0:
                text += ', '
            text += _('round %s') % round

        game_date = gm.tags.get('Date')
        if game_date is None:
            game_date = "%02d.%02d.%02d" % (gm.tags['Year'], gm.tags['Month'],
                                            gm.tags['Day'])
        if ('?' not in game_date) and game_date.count('.') == 2:
            y, m, d = map(int, game_date.split('.'))
            # strftime() is limited to > 1900 dates
            try:
                text += ', ' + datetime.date(y, m, d).strftime('%x')
            except ValueError:
                text += ', ' + game_date
        elif '?' not in game_date[:4]:
            text += ', ' + game_date[:4]
        self.textbuffer.insert_with_tags_by_name(end_iter(), text, "head1")

        eco = gm.tags.get('ECO')
        if eco:
            self.textbuffer.insert_with_tags_by_name(end_iter(), "\n" + eco,
                                                     "head2")
            opening = gm.tags.get('Opening')
            if opening:
                self.textbuffer.insert_with_tags_by_name(
                    end_iter(), " - ", "head1")
                self.textbuffer.insert_with_tags_by_name(
                    end_iter(), opening, "head2")
            variation = gm.tags.get('Variation')
            if variation:
                self.textbuffer.insert_with_tags_by_name(
                    end_iter(), ", ", "head1")
                self.textbuffer.insert_with_tags_by_name(
                    end_iter(), variation, "head2")

        self.textbuffer.insert(end_iter(), "\n\n")