add key shortcut to open history and information window. fixes #3233
This commit is contained in:
parent
bf6c87b888
commit
29cc2d0939
|
@ -392,6 +392,7 @@ class ChatControlBase(MessageControl):
|
|||
event.keyval == gtk.keysyms.Page_Up:
|
||||
self.parent_win.notebook.emit('key_press_event', event)
|
||||
return True
|
||||
|
||||
elif event.keyval == gtk.keysyms.m and \
|
||||
(event.state & gtk.gdk.MOD1_MASK): # alt + m opens emoticons menu
|
||||
if gajim.config.get('emoticons_theme'):
|
||||
|
@ -966,6 +967,12 @@ class ChatControl(ChatControlBase):
|
|||
id = widget.connect('clicked', self.on_actions_button_clicked)
|
||||
self.handlers[id] = widget
|
||||
|
||||
ag = gtk.accel_groups_from_object(self.parent_win.window)[0]
|
||||
key, mod = gtk.accelerator_parse("<Control>h")
|
||||
ag.connect_group(key, mod, gtk.ACCEL_VISIBLE, self.accel_group_func)
|
||||
key, mod = gtk.accelerator_parse("<Control>i")
|
||||
ag.connect_group(key, mod, gtk.ACCEL_VISIBLE, self.accel_group_func)
|
||||
|
||||
compact_view = gajim.config.get('compact_view')
|
||||
self.chat_buttons_set_visible(compact_view)
|
||||
self.widget_set_visible(self.xml.get_widget('banner_eventbox'),
|
||||
|
@ -1570,7 +1577,7 @@ class ChatControl(ChatControlBase):
|
|||
'''
|
||||
xml = gtkgui_helpers.get_glade('chat_control_popup_menu.glade')
|
||||
menu = xml.get_widget('chat_control_popup_menu')
|
||||
|
||||
|
||||
history_menuitem = xml.get_widget('history_menuitem')
|
||||
toggle_gpg_menuitem = xml.get_widget('toggle_gpg_menuitem')
|
||||
toggle_e2e_menuitem = xml.get_widget('toggle_e2e_menuitem')
|
||||
|
@ -1578,14 +1585,16 @@ class ChatControl(ChatControlBase):
|
|||
send_file_menuitem = xml.get_widget('send_file_menuitem')
|
||||
information_menuitem = xml.get_widget('information_menuitem')
|
||||
convert_to_gc_menuitem = xml.get_widget('convert_to_groupchat')
|
||||
|
||||
|
||||
ag = gtk.accel_groups_from_object(self.parent_win.window)[0]
|
||||
history_menuitem.add_accelerator('activate', ag, gtk.keysyms.h, gtk.gdk.CONTROL_MASK,
|
||||
gtk.ACCEL_VISIBLE)
|
||||
information_menuitem.add_accelerator('activate', ag, gtk.keysyms.i,
|
||||
gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
|
||||
|
||||
contact = self.parent_win.get_active_contact()
|
||||
jid = contact.jid
|
||||
|
||||
# history_menuitem
|
||||
if gajim.jid_is_transport(jid):
|
||||
history_menuitem.set_sensitive(False)
|
||||
|
||||
|
||||
# check if gpg capabitlies or else make gpg toggle insensitive
|
||||
gpg_btn = self.xml.get_widget('gpg_togglebutton')
|
||||
isactive = gpg_btn.get_active()
|
||||
|
@ -1643,9 +1652,25 @@ class ChatControl(ChatControlBase):
|
|||
id = convert_to_gc_menuitem.connect('activate',
|
||||
self._on_convert_to_gc_menuitem_activate)
|
||||
self.handlers[id] = convert_to_gc_menuitem
|
||||
menu.connect('selection-done', lambda w:w.destroy())
|
||||
menu.connect('selection-done', self.destroy_menu, history_menuitem,
|
||||
information_menuitem)
|
||||
return menu
|
||||
|
||||
def destroy_menu(self, menu, history_menuitem, information_menuitem):
|
||||
# destroy accelerators
|
||||
ag = gtk.accel_groups_from_object(self.parent_win.window)[0]
|
||||
history_menuitem.remove_accelerator(ag, gtk.keysyms.h, gtk.gdk.CONTROL_MASK)
|
||||
information_menuitem.remove_accelerator(ag, gtk.keysyms.i, gtk.gdk.CONTROL_MASK)
|
||||
# destroy menu
|
||||
menu.destroy()
|
||||
|
||||
def accel_group_func(self, accel_group, acceleratable, keyval, modifier):
|
||||
if modifier & gtk.gdk.CONTROL_MASK:
|
||||
if keyval == gtk.keysyms.h:
|
||||
self._on_history_menuitem_activate()
|
||||
if keyval == gtk.keysyms.i:
|
||||
self._on_contact_information_menuitem_activate(None)
|
||||
|
||||
def send_chatstate(self, state, contact = None):
|
||||
''' sends OUR chatstate as STANDLONE chat state message (eg. no body)
|
||||
to contact only if new chatstate is different from the previous one
|
||||
|
|
|
@ -722,11 +722,10 @@ def get_os_info():
|
|||
full_path_to_executable = is_in_path(executable, return_abs_path = True)
|
||||
if full_path_to_executable:
|
||||
command = executable + params
|
||||
child_stdin, child_stdout = os.popen2(command)
|
||||
output = temp_failure_retry(child_stdout.readline).strip()
|
||||
child_stdout.close()
|
||||
child_stdin.close()
|
||||
os.wait()
|
||||
p = Popen([command], shell=True, stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE, close_fds=True)
|
||||
p.wait()
|
||||
output = temp_failure_retry(p.stdout.readline).strip()
|
||||
# some distros put n/a in places, so remove those
|
||||
output = output.replace('n/a', '').replace('N/A', '')
|
||||
return output
|
||||
|
|
|
@ -193,6 +193,10 @@ class GroupchatControl(ChatControlBase):
|
|||
self.on_list_treeview_leave_notify_event)
|
||||
self.handlers[id] = widget
|
||||
|
||||
ag = gtk.accel_groups_from_object(self.parent_win.window)[0]
|
||||
key, mod = gtk.accelerator_parse("<Control>h")
|
||||
ag.connect_group(key, mod, gtk.ACCEL_VISIBLE, self.accel_group_func)
|
||||
|
||||
self.room_jid = self.contact.jid
|
||||
self.nick = contact.name
|
||||
self.name = self.room_jid.split('@')[0]
|
||||
|
@ -250,9 +254,9 @@ class GroupchatControl(ChatControlBase):
|
|||
self._on_change_subject_menuitem_activate)
|
||||
self.handlers[id] = self.change_subject_menuitem
|
||||
|
||||
widget = xm.get_widget('history_menuitem')
|
||||
id = widget.connect('activate', self._on_history_menuitem_activate)
|
||||
self.handlers[id] = widget
|
||||
self.history_menuitem = xm.get_widget('history_menuitem')
|
||||
id = self.history_menuitem.connect('activate', self._on_history_menuitem_activate)
|
||||
self.handlers[id] = self.history_menuitem
|
||||
|
||||
self.minimize_menuitem = xm.get_widget('minimize_menuitem')
|
||||
id = self.minimize_menuitem.connect('toggled',
|
||||
|
@ -507,6 +511,9 @@ class GroupchatControl(ChatControlBase):
|
|||
|
||||
def prepare_context_menu(self):
|
||||
'''sets sensitivity state for configure_room'''
|
||||
ag = gtk.accel_groups_from_object(self.parent_win.window)[0]
|
||||
self.history_menuitem.add_accelerator('activate', ag, gtk.keysyms.h,
|
||||
gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
|
||||
if self.contact.jid in gajim.config.get_per('accounts', self.account,
|
||||
'minimized_gc').split(' '):
|
||||
self.minimize_menuitem.set_active(True)
|
||||
|
@ -533,6 +540,11 @@ class GroupchatControl(ChatControlBase):
|
|||
self.change_nick_menuitem.set_sensitive(False)
|
||||
return self.gc_popup_menu
|
||||
|
||||
def accel_group_func(self, accel_group, acceleratable, keyval, modifier):
|
||||
if modifier & gtk.gdk.CONTROL_MASK:
|
||||
if keyval == gtk.keysyms.h:
|
||||
self._on_history_menuitem_activate()
|
||||
|
||||
def on_message(self, nick, msg, tim, has_timestamp = False, xhtml = None,
|
||||
status_code = []):
|
||||
if '100' in status_code:
|
||||
|
|
|
@ -70,6 +70,9 @@ class MessageWindow:
|
|||
id = self.window.connect('focus-in-event', self._on_window_focus)
|
||||
self.handlers[id] = self.window
|
||||
|
||||
accel_group = gtk.AccelGroup()
|
||||
self.window.add_accel_group(accel_group)
|
||||
|
||||
# gtk+ doesn't make use of the motion notify on gtkwindow by default
|
||||
# so this line adds that
|
||||
self.window.add_events(gtk.gdk.POINTER_MOTION_MASK)
|
||||
|
|
Loading…
Reference in New Issue