Ticket #67: im.diff

File im.diff, 3.1 kB (added by kanru, 17 months ago)

patch update

  • Widgets.py

     
    187187gobject.type_register( avatarHolder ) 
    188188 
    189189 
     190class inputBox( gtk.TextView ): 
     191    __gsignals__ = { 
     192        'message-send':(gobject.SIGNAL_RUN_LAST|gobject.SIGNAL_ACTION, 
     193                        gobject.TYPE_NONE, ()), 
     194        'escape-pressed':(gobject.SIGNAL_RUN_LAST|gobject.SIGNAL_ACTION, 
     195                          gobject.TYPE_NONE, ()) 
     196    } 
     197    def __init__(self): 
     198        gobject.GObject.__init__(self) 
     199        gtk.binding_entry_add_signal(self, gtk.keysyms.KP_Enter, 0, 'message-send') 
     200        gtk.binding_entry_add_signal(self, gtk.keysyms.Return, 0, 'message-send') 
     201        gtk.binding_entry_add_signal(self, gtk.keysyms.Escape, 0, 'escape-pressed') 
     202         
     203gobject.type_register( inputBox ) 
  • ConversationUI.py

     
    553553 
    554554        self.pack_end(self.hboxFrame, False, False, 2) 
    555555             
    556         self.input = gtk.TextView() 
     556        self.input = Widgets.inputBox() 
    557557        self.input.set_left_margin( 6 ) 
    558558        self.input.set_right_margin( 6 ) 
    559559        self.input.set_wrap_mode(gtk.WRAP_WORD) 
     
    568568        frameInput.add(self.scrollInput) 
    569569         
    570570        self.pack_start(frameInput, True, True, 0) 
    571          
     571 
    572572        self.inputBuffer.connect( 'changed', self.on_changed_event ) 
    573573        self.input.connect( 'key-press-event' , self.on_key_press_event ) 
     574        self.input.connect_after( 'message-send', self.message_send) 
     575        self.input.connect_after( 'escape-pressed', self.on_escape_pressed_event) 
    574576         
    575577        self.input.connect_after( 'map-event', self.on_input_map_event ) 
    576578        self.input.grab_focus() 
     
    749751                                        self.inputBuffer.get_start_iter(), 
    750752                                        self.inputBuffer.get_end_iter() ) 
    751753         
    752     def on_key_press_event( self , widget, event ): 
    753         if not( event.state & gtk.gdk.SHIFT_MASK ) and \ 
    754             not( event.state & gtk.gdk.CONTROL_MASK ) and \ 
    755             not( event.state & gtk.gdk.MOD1_MASK ) and \ 
    756             ( event.keyval == gtk.keysyms.Return or 
    757                 event.keyval == gtk.keysyms.KP_Enter ): 
    758                      
     754    def message_send(self, widget): 
    759755            if self.id_timeout != None: 
    760756                gobject.source_remove( self.id_timeout ) 
    761757                self.id_timeout = None 
    762758 
    763759            return self.sendMessage() 
    764          
    765         elif event.keyval == gtk.keysyms.Escape: 
    766             self.parentUI.getParentConversation().close() 
    767          
    768         elif event.keyval == gtk.keysyms.space: 
     760 
     761    def on_escape_pressed_event( self, widget ): 
     762        self.parentUI.getParentConversation().close() 
     763 
     764    def on_key_press_event( self , widget, event ): 
     765        if event.keyval == gtk.keysyms.space: 
    769766            if self.id_timeout != None: 
    770767                gobject.source_remove( self.id_timeout ) 
    771768                self.id_timeout = None