Key binding fixes

This commit is contained in:
Travis Shirk 2006-01-03 03:55:11 +00:00
parent 2726e33172
commit 9058126e73
2 changed files with 27 additions and 16 deletions

View file

@ -161,7 +161,6 @@ class ChatControlBase(MessageControl):
return False return False
def _on_message_textview_key_press_event(self, widget, event): def _on_message_textview_key_press_event(self, widget, event):
print "_on_message_textview_key_press_event"
if event.state & gtk.gdk.SHIFT_MASK: if event.state & gtk.gdk.SHIFT_MASK:
# SHIFT + PAGE_[UP|DOWN]: send to conv_textview # SHIFT + PAGE_[UP|DOWN]: send to conv_textview
if event.keyval == gtk.keysyms.Page_Down or \ if event.keyval == gtk.keysyms.Page_Down or \
@ -182,7 +181,6 @@ class ChatControlBase(MessageControl):
'''When a key is pressed: '''When a key is pressed:
if enter is pressed without the shift key, message (if not empty) is sent if enter is pressed without the shift key, message (if not empty) is sent
and printed in the conversation''' and printed in the conversation'''
print "ChatControlBase._on_message_textview_mykeypress_event"
# NOTE: handles mykeypress which is custom signal connected to this # NOTE: handles mykeypress which is custom signal connected to this
# CB in new_tab(). for this singal see message_textview.py # CB in new_tab(). for this singal see message_textview.py
@ -632,6 +630,7 @@ class ChatControl(ChatControlBase):
def _on_window_motion_notify(self, widget, event): def _on_window_motion_notify(self, widget, event):
'''it gets called no matter if it is the active window or not''' '''it gets called no matter if it is the active window or not'''
# FIXME NOT WORKING
print "_on_window_motion_notify" print "_on_window_motion_notify"
if widget.get_property('has-toplevel-focus'): if widget.get_property('has-toplevel-focus'):
# change chatstate only if window is the active one # change chatstate only if window is the active one

View file

@ -148,9 +148,9 @@ class MessageWindow:
self.alignment.set_property('top-padding', 2) self.alignment.set_property('top-padding', 2)
# Connect to keyboard events # Connect to keyboard events
if isinstance(control, ChatControlBase): #if isinstance(control, ChatControlBase):
control.msg_textview.connect('mykeypress', # control.msg_textview.connect('mykeypress',
self._on_message_textview_mykeypress_event) # self._on_message_textview_mykeypress_event)
# Add notebook page and connect up to the tab's close button # Add notebook page and connect up to the tab's close button
xml = gtk.glade.XML(GTKGUI_GLADE, 'chat_tab_ebox', APP) xml = gtk.glade.XML(GTKGUI_GLADE, 'chat_tab_ebox', APP)
@ -432,14 +432,33 @@ class MessageWindow:
new_ctl.set_control_active(True) new_ctl.set_control_active(True)
def _on_notebook_key_press(self, widget, event): def _on_notebook_key_press(self, widget, event):
print "MessageWindow._on_notebook_key_press event"
st = '1234567890' # alt+1 means the first tab (tab 0) st = '1234567890' # alt+1 means the first tab (tab 0)
ctl = self.get_active_control() ctl = self.get_active_control()
contact = ctl.contact contact = ctl.contact
jid = ctl.contact.jid jid = ctl.contact.jid
# CTRL mask
if event.state & gtk.gdk.CONTROL_MASK:
# Tab switch bindings
if event.keyval == gtk.keysyms.ISO_Left_Tab: # CTRL + SHIFT + TAB
self.move_to_next_unread_tab(False)
elif event.keyval == gtk.keysyms.Tab: # CTRL + TAB
self.move_to_next_unread_tab(True)
elif event.keyval == gtk.keysyms.Page_Down or\
event.keyval == gtk.keysyms.Page_Up: # CTRL + PAGE UP|DOWN
# construct event instance from binding
event = gtk.gdk.Event(gtk.gdk.KEY_PRESS)
event.keyval = event_keyval
event.state = event_keymod
event.time = 0 # assign current time
self.notebook.emit('key_press_event', event)
elif event.keyval == gtk.keysyms.F4: # CTRL + F4
self.remove_tab(contact)
elif event.keyval == gtk.keysyms.w: # CTRL + W
self.remove_tab(contact)
# MOD1 (ALT) mask # MOD1 (ALT) mask
if event.state & gtk.gdk.MOD1_MASK: elif event.state & gtk.gdk.MOD1_MASK:
# Tab switch bindings # Tab switch bindings
if event.keyval == gtk.keysyms.Right: # ALT + RIGHT if event.keyval == gtk.keysyms.Right: # ALT + RIGHT
new = self.notebook.get_current_page() + 1 new = self.notebook.get_current_page() + 1
@ -454,19 +473,12 @@ class MessageWindow:
elif event.string and event.string in st and \ elif event.string and event.string in st and \
(event.state & gtk.gdk.MOD1_MASK): # ALT + 1,2,3.. (event.state & gtk.gdk.MOD1_MASK): # ALT + 1,2,3..
self.notebook.set_current_page(st.index(event.string)) self.notebook.set_current_page(st.index(event.string))
elif event.keyval == gtk.keysyms.c: # ALT + C toggles compact view
ctl.set_compact_view(not ctl.compact_view_current)
# Close tab bindings # Close tab bindings
elif event.keyval == gtk.keysyms.Escape: # ESCAPE elif event.keyval == gtk.keysyms.Escape: # ESCAPE
if ctl.type_id == message_control.TYPE_CHAT: if ctl.type_id == message_control.TYPE_CHAT:
self.remove_tab(contact) self.remove_tab(contact)
elif event.keyval == gtk.keysyms.F4 and \
(event.state & gtk.gdk.CONTROL_MASK): # CTRL + F4
self.remove_tab(contact)
elif event.keyval == gtk.keysyms.w and \
(event.state & gtk.gdk.CONTROL_MASK): # CTRL + W
self.remove_tab(contact)
elif event.keyval == gtk.keysyms.c and \
(event.state & gtk.gdk.MOD1_MASK): # alt + C toggles compact view
ctl.set_compact_view(not ctl.compact_view_current)
# FIXME: Move this to ChatControlBase # FIXME: Move this to ChatControlBase
elif event.keyval == gtk.keysyms.e and \ elif event.keyval == gtk.keysyms.e and \