Show
Ignore:
Timestamp:
07/19/08 13:57:03 (5 months ago)
Author:
js
Message:

Only show the XEP-0184 warning if the message has not been received
in 2 seconds.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/conversation_textview.py

    r9953 r9957  
    4444from common.exceptions import GajimGeneralException 
    4545 
     46NOT_SHOWN = 0 
     47ALREADY_RECEIVED = 1 
     48SHOWN = 2 
    4649 
    4750def is_selection_modified(mark): 
     
    179182                self.image_cache = {} 
    180183                self.xep0184_marks = {} 
     184                self.xep0184_shown = {} 
    181185 
    182186                # It's True when we scroll in the code, so we can detect scroll from user 
     
    401405 
    402406                buffer = self.tv.get_buffer() 
    403  
    404407                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(); 
    416408 
    417409                self.xep0184_marks[id] = buffer.create_mark(None, 
    418410                        buffer.get_end_iter(), left_gravity=True) 
     411                self.xep0184_shown[id] = NOT_SHOWN 
     412 
     413                def show_it(): 
     414                        if self.xep0184_shown[id] == ALREADY_RECEIVED: 
     415                                return False 
     416 
     417                        end_iter = buffer.get_iter_at_mark( 
     418                                self.xep0184_marks[id]) 
     419                        buffer.insert(end_iter, ' ') 
     420                        buffer.insert_pixbuf(end_iter, 
     421                                ConversationTextview.XEP0184_WARNING_PIXBUF) 
     422 
     423                        self.xep0184_shown[id] = SHOWN 
     424                        return False 
     425                gobject.timeout_add(2000, show_it) 
    419426 
    420427                buffer.end_user_action() 
     
    427434                        return 
    428435 
    429                 buffer = self.tv.get_buffer() 
    430  
     436                if self.xep0184_shown[id] == NOT_SHOWN: 
     437                        self.xep0184_shown[id] = ALREADY_RECEIVED 
     438                        return 
     439 
     440                buffer = self.tv.get_buffer() 
    431441                buffer.begin_user_action() 
    432442 
    433                 end_iter = buffer.get_iter_at_mark(self.xep0184_marks[id]) 
    434  
    435                 begin_iter = end_iter.copy() 
     443                begin_iter = buffer.get_iter_at_mark(self.xep0184_marks[id]) 
     444 
     445                end_iter = begin_iter.copy() 
    436446                # XXX: Is there a nicer way? 
    437                 begin_iter.backward_char(); 
    438                 begin_iter.backward_char(); 
     447                end_iter.forward_char(); 
     448                end_iter.forward_char(); 
    439449 
    440450                buffer.delete(begin_iter, end_iter) 
     
    444454 
    445455                self.xep0184_marks[id] = None 
     456                del self.xep0184_shown[id] 
    446457 
    447458        def show_focus_out_line(self):