39
36
def do_event_connect(self, event_man, event):
40
37
self._browser = event_man.get_widget_by_name('browser')
38
self.get_toplevel().connect('focus-out-event', self._focus_out)
42
40
def _init_hyperlinks(self):
43
41
hyperlink_tag = self._buffer.create_tag('hyperlink', foreground='#0000ff',
44
42
underline=pango.UNDERLINE_SINGLE)
45
43
self._buffer.connect('mark-set', self._mark_set, hyperlink_tag)
46
44
self._textview.connect('motion-notify-event', self._motion_notify, hyperlink_tag)
45
self._textview.connect('expose-event', self._draw_red_line)
47
self._red_line_mark = self._buffer.create_mark(None, self._buffer.get_end_iter(), True)
48
self._visited_since_last_update = False
48
50
def _append_to_buffer(self, text, sender=None, msgtype=None):
49
51
iend = self._buffer.get_end_iter()
52
if self._visited_since_last_update and not self.get_toplevel().is_active():
53
self._buffer.move_mark(self._red_line_mark, iend)
54
self._textview.queue_draw()
55
self._visited_since_last_update = False
50
56
if Preferences.get('show_irc_time'):
51
57
self._buffer.insert(iend, '\n[{0}] '.format(time.strftime(_('%H:%M'))))
65
71
self._buffer.insert_with_tags_by_name(iend, text, 'highlight')
67
73
self._buffer.insert(iend, text)
68
75
for url in re.finditer(r"https?://\S+", unicode(text, 'utf-8')):
69
76
self._buffer.apply_tag_by_name('hyperlink',
70
77
self._buffer.get_iter_at_offset(start_pos + url.start()),
71
78
self._buffer.get_iter_at_offset(start_pos + url.end()))
72
80
self._at_bottom = (self._adjust.value == self._adjust.upper -
73
81
self._adjust.page_size)
89
97
text_view.get_window(gtk.TEXT_WINDOW_TEXT).set_cursor(self.regular_cursor)
100
def _focus_out(self, widget, event):
101
self._visited_since_last_update = True
104
def _draw_red_line(self, widget, event):
105
if self._buffer.get_char_count() > 0:
106
iter = self._buffer.get_iter_at_mark(self._red_line_mark)
107
if (iter.get_offset() > 0):
108
top, h = self._textview.get_line_yrange(iter)
109
w_x, w_y = self._textview.buffer_to_window_coords(gtk.TEXT_WINDOW_TEXT, 0, top + h)
110
win = self._textview.get_window(gtk.TEXT_WINDOW_TEXT)
112
gc.set_rgb_fg_color(gtk.gdk.Color('darkred'))
113
win.draw_line(gc, 0, w_y, (win.get_size())[0], w_y)