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)
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])
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)
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)
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])
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")
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")