diff --git a/gajim/application.py b/gajim/application.py index 60b622c797c944c48bacb808de87f837bd31364c..b30b61a3d84348a9dbab3c508d58038895ed2d54 100644 --- a/gajim/application.py +++ b/gajim/application.py @@ -236,6 +236,7 @@ def _activate(self, application): self.interface = Interface() self.interface.run(self) self.add_actions() + self._set_shortcuts() from gajim import gui_menu_builder gui_menu_builder.build_accounts_menu() @@ -427,57 +428,44 @@ def add_actions(self): act.connect('change-state', app_actions.on_merge_accounts) self.add_action(act) - # General Actions - - general_actions = [ - ('quit', app_actions.on_quit, ['<Primary>Q']), - ('add-account', app_actions.on_add_account, None), - ('manage-proxies', app_actions.on_manage_proxies, None), - ('history-manager', app_actions.on_history_manager, None), - ('preferences', app_actions.on_preferences, ['<Primary>P']), - ('plugins', app_actions.on_plugins, ['<Primary>E']), - ('xml-console', app_actions.on_xml_console, ['<Primary><Shift>X']), - ('file-transfer', app_actions.on_file_transfers, ['<Primary>T']), - ('history', app_actions.on_history, ['<Primary>H']), - ('shortcuts', app_actions.on_keyboard_shortcuts, None), - ('features', app_actions.on_features, None), - ('content', app_actions.on_contents, None), - ('about', app_actions.on_about, None), - ('faq', app_actions.on_faq, None), - ('ipython', app_actions.toggle_ipython, ['<Primary><Alt>I']), - ('show-next-pending-event', app_actions.show_next_pending_event, - None), + actions = [ + ('quit', app_actions.on_quit), + ('add-account', app_actions.on_add_account), + ('manage-proxies', app_actions.on_manage_proxies), + ('history-manager', app_actions.on_history_manager), + ('preferences', app_actions.on_preferences), + ('plugins', app_actions.on_plugins), + ('xml-console', app_actions.on_xml_console), + ('file-transfer', app_actions.on_file_transfers), + ('history', app_actions.on_history), + ('shortcuts', app_actions.on_keyboard_shortcuts), + ('features', app_actions.on_features), + ('content', app_actions.on_contents), + ('about', app_actions.on_about), + ('faq', app_actions.on_faq), + ('ipython', app_actions.toggle_ipython), + ('show-next-pending-event', app_actions.show_next_pending_event), + ('start-chat', 's', app_actions.on_new_chat), + ('accounts', 's', app_actions.on_accounts), + ('add-contact', 's', app_actions.on_add_contact_jid), + ('copy-text', 's', app_actions.copy_text), + ('open-link', 'as', app_actions.open_link), + ('open-mail', 's', app_actions.open_mail), + ('create-groupchat', 's', app_actions.on_create_gc), + ('browse-history', 'a{sv}', app_actions.on_browse_history), + ('groupchat-join', 'as', app_actions.on_groupchat_join), ] - additional_actions = [ - ('start-chat', 's', app_actions.on_new_chat, ['<Primary>N']), - ('accounts', 's', app_actions.on_accounts, ['<Alt>A']), - ('add-contact', 's', app_actions.on_add_contact_jid, None), - ('copy-text', 's', app_actions.copy_text, None), - ('open-link', 'as', app_actions.open_link, None), - ('open-mail', 's', app_actions.open_mail, None), - ('create-groupchat', 's', app_actions.on_create_gc, ['<Primary>G']), - ('browse-history', 'a{sv}', app_actions.on_browse_history, None), - ('groupchat-join', 'as', app_actions.on_groupchat_join, None), - ] - - for action in general_actions: - action_name, func, accel = action - act = Gio.SimpleAction.new(action_name, None) - act.connect('activate', func) - if accel: - full_action_name = 'app.%s' % action_name - self.set_accels_for_action(full_action_name, accel) - self.add_action(act) + for action in actions: + if len(action) == 2: + action_name, func = action + variant = None + else: + action_name, variant, func = action + variant = GLib.VariantType.new(variant) - for action in additional_actions: - action_name, variant, func, accel = action - act = Gio.SimpleAction.new( - action_name, GLib.VariantType.new(variant)) + act = Gio.SimpleAction.new(action_name, variant) act.connect('activate', func) - if accel: - full_action_name = 'app.%s::' % action_name - self.set_accels_for_action(full_action_name, accel) self.add_action(act) accounts_list = sorted(app.config.get_per('accounts')) @@ -545,6 +533,54 @@ def set_account_actions_state(self, account, new_state=False): # We go online self.lookup_action(account + action_name).set_enabled(True) + def _set_shortcuts(self): + shortcuts = { + 'app.quit': ['<Primary>Q'], + 'app.preferences': ['<Primary>P'], + 'app.plugins': ['<Primary>E'], + 'app.xml-console': ['<Primary><Shift>X'], + 'app.file-transfer': ['<Primary>T'], + 'app.history': ['<Primary>H'], + 'app.ipython': ['<Primary><Alt>I'], + 'app.start-chat::': ['<Primary>N'], + 'app.accounts::': ['<Alt>A'], + 'app.create-groupchat::': ['<Primary>G'], + 'win.show-roster': ['<Primary>R'], + 'win.show-offline': ['<Primary>O'], + 'win.show-active': ['<Primary>Y'], + 'win.change-nickname': ['<Control><Shift>n'], + 'win.change-subject': ['<Alt>t'], + 'win.escape': ['Escape'], + 'win.browse-history': ['<Control>h'], + 'win.send-file': ['<Control>f'], + 'win.show-contact-info': ['<Control>i'], + 'win.show-emoji-chooser': ['<Alt>m'], + 'win.clear-chat': ['<Control>l'], + 'win.delete-line': ['<Control>u'], + 'win.close-tab': ['<Control>w'], + 'win.move-tab-up': ['<Control><Shift>Page_Up'], + 'win.move-tab-down': ['<Control><Shift>Page_Down'], + 'win.switch-next-tab': ['<Alt>Right'], + 'win.switch-prev-tab': ['<Alt>Left'], + 'win.switch-next-unread-tab-right': ['<Control>Tab', + '<Control>Page_Down'], + 'win.switch-next-unread-tab-left': ['<Control>ISO_Left_Tab', + '<Control>Page_Up'], + 'win.switch-tab-1': ['<Alt>1', '<Alt>KP_1'], + 'win.switch-tab-2': ['<Alt>2', '<Alt>KP_2'], + 'win.switch-tab-3': ['<Alt>3', '<Alt>KP_3'], + 'win.switch-tab-4': ['<Alt>4', '<Alt>KP_4'], + 'win.switch-tab-5': ['<Alt>5', '<Alt>KP_5'], + 'win.switch-tab-6': ['<Alt>6', '<Alt>KP_6'], + 'win.switch-tab-7': ['<Alt>7', '<Alt>KP_7'], + 'win.switch-tab-8': ['<Alt>8', '<Alt>KP_8'], + 'win.switch-tab-9': ['<Alt>9', '<Alt>KP_9'], + 'win.copy-text': ['<Control><Shift>c'], + } + + for action, accels in shortcuts.items(): + self.set_accels_for_action(action, accels) + def _on_feature_discovered(self, event): if event.feature == nbxmpp.NS_VCARD: action = '%s-profile' % event.account diff --git a/gajim/message_window.py b/gajim/message_window.py index 0b242e0c69a429bc0d6eb553a7f298700ccc4ddd..b942cc32e68c0cedf38525858a1f0c32370f67a8 100644 --- a/gajim/message_window.py +++ b/gajim/message_window.py @@ -162,34 +162,32 @@ def __init__(self, acct, type_, parent_window=None, parent_paned=None): def _add_actions(self): actions = [ - ('change-nickname', ['<Control><Shift>n']), - ('change-subject', ['<Alt>t']), - ('escape', ['Escape']), - ('browse-history', ['<Control>h']), - ('send-file', ['<Control>f']), - ('show-contact-info', ['<Control>i']), - ('show-emoji-chooser', ['<Alt>m']), - ('clear-chat', ['<Control>l']), - ('delete-line', ['<Control>u']), - ('close-tab', ['<Control>w']), - ('move-tab-up', ['<Control><Shift>Page_Up']), - ('move-tab-down', ['<Control><Shift>Page_Down']), - ('switch-next-tab', ['<Alt>Right']), - ('switch-prev-tab', ['<Alt>Left']), - ('switch-next-unread-tab-right', ['<Control>Tab', - '<Control>Page_Down']), - ('switch-next-unread-tab-left', ['<Control>ISO_Left_Tab', - '<Control>Page_Up']), - ('switch-tab-1', ['<Alt>1', '<Alt>KP_1']), - ('switch-tab-2', ['<Alt>2', '<Alt>KP_2']), - ('switch-tab-3', ['<Alt>3', '<Alt>KP_3']), - ('switch-tab-4', ['<Alt>4', '<Alt>KP_4']), - ('switch-tab-5', ['<Alt>5', '<Alt>KP_5']), - ('switch-tab-6', ['<Alt>6', '<Alt>KP_6']), - ('switch-tab-7', ['<Alt>7', '<Alt>KP_7']), - ('switch-tab-8', ['<Alt>8', '<Alt>KP_8']), - ('switch-tab-9', ['<Alt>9', '<Alt>KP_9']), - ('copy-text', ['<Control><Shift>c']), + 'change-nickname', + 'change-subject', + 'escape', + 'browse-history', + 'send-file', + 'show-contact-info', + 'show-emoji-chooser', + 'clear-chat', + 'delete-line', + 'close-tab', + 'move-tab-up', + 'move-tab-down', + 'switch-next-tab', + 'switch-prev-tab', + 'switch-next-unread-tab-right' + 'switch-next-unread-tab-left', + 'switch-tab-1', + 'switch-tab-2', + 'switch-tab-3', + 'switch-tab-4', + 'switch-tab-5', + 'switch-tab-6', + 'switch-tab-7', + 'switch-tab-8', + 'switch-tab-9', + 'copy-text', ] disabled_for_emacs = ( @@ -201,13 +199,12 @@ def _add_actions(self): key_theme = Gtk.Settings.get_default().get_property( 'gtk-key-theme-name') - for action, keys in actions: + for action in actions: if key_theme == 'Emacs' and action in disabled_for_emacs: continue act = Gio.SimpleAction.new(action, None) act.connect('activate', self._on_action) self.window.add_action(act) - app.app.set_accels_for_action('win.%s' % action, keys) def _on_action(self, action, _param): control = self.get_active_control() diff --git a/gajim/roster_window.py b/gajim/roster_window.py index 886980a525c42ec7f2568eac1f1f80578d759e74..953af05ad7e1b6f0fdc314d50153dacfea3c80e3 100644 --- a/gajim/roster_window.py +++ b/gajim/roster_window.py @@ -5370,33 +5370,26 @@ def add_actions(self): actions = [ ('show-roster', not self.xml.get_object('roster_vbox2').get_no_show_all(), - self.on_show_roster_action, - ['<Primary>R']), + self.on_show_roster_action), ('show-offline', app.config.get('showoffline'), - self.on_show_offline_contacts_action, - ['<Primary>O']), + self.on_show_offline_contacts_action), ('show-active', app.config.get('show_only_chat_and_online'), - self.on_show_active_contacts_action, - ['<Primary>Y']), + self.on_show_active_contacts_action), ('show-transports', app.config.get('show_transports_group'), - self.on_show_transports_action, - None), + self.on_show_transports_action), ] for action in actions: - action_name, variant, func, accel = action + action_name, variant, func = action act = Gio.SimpleAction.new_stateful( action_name, None, GLib.Variant.new_boolean(variant)) act.connect('change-state', func) - if accel: - full_action_name = 'win.%s' % action_name - app.app.set_accels_for_action(full_action_name, accel) self.window.add_action(act) ################################################################################