Key binding fixes
This commit is contained in:
parent
2726e33172
commit
9058126e73
2 changed files with 27 additions and 16 deletions
|
@ -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
|
||||||
|
|
|
@ -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 \
|
||||||
|
|
Loading…
Add table
Reference in a new issue