Philipp Hörist pushed to branch master at gajim / gajim
Commits: 61828eb7 by Daniel Brötzmann at 2019-11-14T21:33:08Z Move accelerators from Glade file into code
- Light refactoring for adding actions
- - - - -
3 changed files:
- gajim/application.py - gajim/data/gui/application_menu.ui - gajim/roster_window.py
Changes:
===================================== gajim/application.py ===================================== @@ -430,67 +430,54 @@ class GajimApplication(Gtk.Application): # General Actions
general_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), + ('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), ]
- act = Gio.SimpleAction.new('start-chat', GLib.VariantType.new('s')) - act.connect("activate", app_actions.on_new_chat) - self.add_action(act) - - act = Gio.SimpleAction.new('accounts', GLib.VariantType.new('s')) - act.connect("activate", app_actions.on_accounts) - self.add_action(act) - self.set_accels_for_action('app.accounts::', ['<Alt>A']) - - act = Gio.SimpleAction.new('add-contact', GLib.VariantType.new('s')) - act.connect("activate", app_actions.on_add_contact_jid) - self.add_action(act) - - act = Gio.SimpleAction.new('copy-text', GLib.VariantType.new('s')) - act.connect("activate", app_actions.copy_text) - self.add_action(act) - - act = Gio.SimpleAction.new('open-link', GLib.VariantType.new('as')) - act.connect("activate", app_actions.open_link) - self.add_action(act) - - act = Gio.SimpleAction.new('open-mail', GLib.VariantType.new('s')) - act.connect("activate", app_actions.open_mail) - self.add_action(act) - - act = Gio.SimpleAction.new('create-groupchat', GLib.VariantType.new('s')) - act.connect("activate", app_actions.on_create_gc) - self.add_action(act) - - act = Gio.SimpleAction.new('browse-history', - GLib.VariantType.new('a{sv}')) - act.connect("activate", app_actions.on_browse_history) - self.add_action(act) - - act = Gio.SimpleAction.new('groupchat-join', - GLib.VariantType.new('as')) - act.connect("activate", app_actions.on_groupchat_join) - self.add_action(act) + 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 = action + action_name, func, accel = action act = Gio.SimpleAction.new(action_name, None) - act.connect("activate", func) + 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 additional_actions: + action_name, variant, func, accel = action + act = Gio.SimpleAction.new( + action_name, GLib.VariantType.new(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'))
===================================== gajim/data/gui/application_menu.ui ===================================== @@ -10,17 +10,14 @@ <item> <attribute name="label" translatable="yes">Show Contact List</attribute> <attribute name="action">win.show-roster</attribute> - <attribute name="accel"><Primary>R</attribute> </item> <item> <attribute name="label" translatable="yes">Show Offline Contacts</attribute> <attribute name="action">win.show-offline</attribute> - <attribute name="accel"><Primary>O</attribute> </item> <item> <attribute name="label" translatable="yes">Show Active Contacts</attribute> <attribute name="action">win.show-active</attribute> - <attribute name="accel"><Primary>Y</attribute> </item> <item> <attribute name="label" translatable="yes">Show Transports</attribute> @@ -31,12 +28,10 @@ <item> <attribute name="label" translatable="yes">XML Console</attribute> <attribute name="action">app.xml-console</attribute> - <attribute name="accel"><Primary><Shift>X</attribute> </item> <item> <attribute name="label" translatable="yes">File Transfer</attribute> <attribute name="action">app.file-transfer</attribute> - <attribute name="accel"><Primary>T</attribute> </item> <item> <attribute name="label" translatable="yes">History</attribute> @@ -75,13 +70,11 @@ <item> <attribute name="label" translatable="yes">Start Chat</attribute> <attribute name="action">app.start-chat</attribute> - <attribute name="accel"><Primary>N</attribute> <attribute name="target"></attribute> </item> <item> <attribute name="label" translatable="yes">Create Group Chat</attribute> <attribute name="action">app.create-groupchat</attribute> - <attribute name="accel"><Primary>G</attribute> <attribute name="target"></attribute> </item> <item> @@ -95,12 +88,10 @@ <item> <attribute name="label" translatable="yes">Preferences</attribute> <attribute name="action">app.preferences</attribute> - <attribute name="accel"><Primary>P</attribute> </item> <item> <attribute name="label" translatable="yes">Quit</attribute> <attribute name="action">app.quit</attribute> - <attribute name="accel"><Primary>Q</attribute> </item> </section> </menu>
===================================== gajim/roster_window.py ===================================== @@ -5366,34 +5366,38 @@ class RosterWindow: return value
def add_actions(self): - action = Gio.SimpleAction.new_stateful( - "show-roster", None, - GLib.Variant.new_boolean( - not self.xml.get_object('roster_vbox2').get_no_show_all())) - action.connect("change-state", - self.on_show_roster_action) - self.window.add_action(action) - - action = Gio.SimpleAction.new_stateful( - "show-offline", None, - GLib.Variant.new_boolean(app.config.get('showoffline'))) - action.connect("change-state", - self.on_show_offline_contacts_action) - self.window.add_action(action) - - action = Gio.SimpleAction.new_stateful( - "show-active", None, - GLib.Variant.new_boolean( - app.config.get('show_only_chat_and_online'))) - action.connect("change-state", - self.on_show_active_contacts_action) - self.window.add_action(action) - - action = Gio.SimpleAction.new_stateful( - "show-transports", None, - GLib.Variant.new_boolean(app.config.get('show_transports_group'))) - action.connect("change-state", self.on_show_transports_action) - self.window.add_action(action) + + actions = [ + ('show-roster', + not self.xml.get_object('roster_vbox2').get_no_show_all(), + self.on_show_roster_action, + ['<Primary>R']), + + ('show-offline', + app.config.get('showoffline'), + self.on_show_offline_contacts_action, + ['<Primary>O']), + + ('show-active', + app.config.get('show_only_chat_and_online'), + self.on_show_active_contacts_action, + ['<Primary>Y']), + + ('show-transports', + app.config.get('show_transports_group'), + self.on_show_transports_action, + None), + ] + + for action in actions: + action_name, variant, func, accel = 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/61828eb7ff6f229da9fab1b924f3f8c0717...