Changeset 10146

Show
Ignore:
Timestamp:
08/07/08 22:05:08 (3 weeks ago)
Author:
roidelapluie
Message:

Add a tooltip to the XEP-0184 warning icon

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/conversation_textview.py

    r10081 r10146  
    269269 
    270270                buffer.create_tag('focus-out-line', justification = gtk.JUSTIFY_CENTER) 
     271                 
     272                tag = buffer.create_tag('xep0184-warning') 
    271273 
    272274                # One mark at the begining then 2 marks between each lines 
     
    279281                self.focus_out_end_mark = None 
    280282 
     283                self.xep0184_warning_tooltip = tooltips.BaseTooltip() 
     284                 
    281285                self.line_tooltip = tooltips.BaseTooltip() 
    282286                # use it for hr too 
     
    417421                        buffer.insert_pixbuf(end_iter, 
    418422                                ConversationTextview.XEP0184_WARNING_PIXBUF) 
     423                        before_img_iter = buffer.get_iter_at_mark( 
     424                                self.xep0184_marks[id]) 
     425                        before_img_iter.forward_char() 
     426                        post_img_iter = before_img_iter.copy() 
     427                        post_img_iter.forward_char() 
     428                        buffer.apply_tag_by_name('xep0184-warning', before_img_iter, 
     429                                post_img_iter) 
    419430 
    420431                        self.xep0184_shown[id] = SHOWN 
     
    512523                        gobject.idle_add(self.scroll_to_end) 
    513524 
     525        def show_xep0184_warning_tooltip(self): 
     526                pointer = self.tv.get_pointer() 
     527                x, y = self.tv.window_to_buffer_coords(gtk.TEXT_WINDOW_TEXT, pointer[0], 
     528                        pointer[1]) 
     529                tags = self.tv.get_iter_at_location(x, y).get_tags() 
     530                tag_table = self.tv.get_buffer().get_tag_table() 
     531                xep0184_warning = False 
     532                for tag in tags: 
     533                        if tag == tag_table.lookup('xep0184-warning'): 
     534                                xep0184_warning = True 
     535                                break 
     536                if xep0184_warning and not self.xep0184_warning_tooltip.win: 
     537                        # check if the current pointer is still over the line 
     538                        position = self.tv.window.get_origin() 
     539                        self.xep0184_warning_tooltip.show_tooltip(_('This message ' 
     540                        'was not delivered'), 
     541                                8, position[1] + pointer[1]) 
     542         
    514543        def show_line_tooltip(self): 
    515544                pointer = self.tv.get_pointer() 
     
    568597                tag_table = self.tv.get_buffer().get_tag_table() 
    569598                over_line = False 
     599                xep0184_warning = False 
    570600                for tag in tags: 
    571601                        if tag in (tag_table.lookup('url'), tag_table.lookup('mail')): 
     
    575605                        elif tag == tag_table.lookup('focus-out-line'): 
    576606                                over_line = True 
     607                        elif tag == tag_table.lookup('xep0184-warning'): 
     608                                xep0184_warning = True 
    577609 
    578610                if self.line_tooltip.timeout != 0: 
     
    583615                        self.line_tooltip.timeout = gobject.timeout_add(500, 
    584616                                self.show_line_tooltip) 
     617                        self.tv.get_window(gtk.TEXT_WINDOW_TEXT).set_cursor( 
     618                                gtk.gdk.Cursor(gtk.gdk.LEFT_PTR)) 
     619                        self.change_cursor = tag 
     620                if xep0184_warning and not self.xep0184_warning_tooltip.win: 
     621                        self.xep0184_warning_tooltip.timeout = \ 
     622                                gobject.timeout_add(500, 
     623                                self.show_xep0184_warning_tooltip) 
    585624                        self.tv.get_window(gtk.TEXT_WINDOW_TEXT).set_cursor( 
    586625                                gtk.gdk.Cursor(gtk.gdk.LEFT_PTR))