Show
Ignore:
Timestamp:
07/18/08 22:24:34 (5 months ago)
Author:
js
Message:

Support for displaying XEP-0184 receipts.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/conversation_textview.py

    r9898 r9953  
    149149        for chat/groupchat windows''' 
    150150 
    151         path_to_file = os.path.join(gajim.DATA_DIR, 'pixmaps', 'muc_separator.png') 
    152         FOCUS_OUT_LINE_PIXBUF = gtk.gdk.pixbuf_new_from_file(path_to_file) 
     151        FOCUS_OUT_LINE_PIXBUF = gtk.gdk.pixbuf_new_from_file(os.path.join( 
     152                gajim.DATA_DIR, 'pixmaps', 'muc_separator.png')) 
     153        XEP0184_WARNING_PIXBUF = gtk.gdk.pixbuf_new_from_file(os.path.join( 
     154                gajim.DATA_DIR, 'pixmaps', 'xep0184.png')) 
    153155 
    154156        # smooth scroll constants 
     
    176178                self.images = [] 
    177179                self.image_cache = {} 
     180                self.xep0184_marks = {} 
    178181 
    179182                # It's True when we scroll in the code, so we can detect scroll from user 
     
    389392                        self.smooth_id = None 
    390393                        self.smooth_scroll_timer.cancel() 
     394 
     395        def show_xep0184_warning(self, id): 
     396                try: 
     397                        if self.xep0184_marks[id] is not None: 
     398                                return 
     399                except KeyError: 
     400                        pass 
     401 
     402                buffer = self.tv.get_buffer() 
     403 
     404                buffer.begin_user_action() 
     405 
     406                end_iter = buffer.get_end_iter() 
     407                buffer.insert(end_iter, ' ') 
     408                buffer.insert_pixbuf(end_iter, 
     409                        ConversationTextview.XEP0184_WARNING_PIXBUF) 
     410 
     411                end_iter = buffer.get_end_iter(); 
     412                before_img_iter = end_iter.copy() 
     413                # XXX: Is there a nicer way? 
     414                before_img_iter.backward_char(); 
     415                before_img_iter.backward_char(); 
     416 
     417                self.xep0184_marks[id] = buffer.create_mark(None, 
     418                        buffer.get_end_iter(), left_gravity=True) 
     419 
     420                buffer.end_user_action() 
     421 
     422        def hide_xep0184_warning(self, id): 
     423                try: 
     424                        if self.xep0184_marks[id] is None: 
     425                                return 
     426                except KeyError: 
     427                        return 
     428 
     429                buffer = self.tv.get_buffer() 
     430 
     431                buffer.begin_user_action() 
     432 
     433                end_iter = buffer.get_iter_at_mark(self.xep0184_marks[id]) 
     434 
     435                begin_iter = end_iter.copy() 
     436                # XXX: Is there a nicer way? 
     437                begin_iter.backward_char(); 
     438                begin_iter.backward_char(); 
     439 
     440                buffer.delete(begin_iter, end_iter) 
     441                buffer.delete_mark(self.xep0184_marks[id]) 
     442 
     443                buffer.end_user_action() 
     444 
     445                self.xep0184_marks[id] = None 
    391446 
    392447        def show_focus_out_line(self):