Philipp Hörist pushed to branch master at gajim / gajim
Commits: 173f5a06 by Philipp Hörist at 2019-11-15T05:20:50Z Add dedicated method for setting shortcuts
- - - - -
3 changed files:
- gajim/application.py - gajim/message_window.py - gajim/roster_window.py
Changes:
===================================== gajim/application.py ===================================== @@ -236,6 +236,7 @@ class GajimApplication(Gtk.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 @@ class GajimApplication(Gtk.Application): 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 @@ class GajimApplication(Gtk.Application): # 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
===================================== gajim/message_window.py ===================================== @@ -162,34 +162,32 @@ class MessageWindow(EventHelper):
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 @@ class MessageWindow(EventHelper): 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()
===================================== gajim/roster_window.py ===================================== @@ -5370,33 +5370,26 @@ class RosterWindow: 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)
################################################################################
View it on GitLab: https://dev.gajim.org/gajim/gajim/commit/173f5a064afc803b204090ac04a1f8eccb5...