Philipp Hörist pushed to branch master at gajim / gajim
Commits: 1d604b72 by lovetox at 2022-01-11T22:36:51+01:00 Menus: Refactor account menu
- - - - - ec6c6cc6 by lovetox at 2022-01-11T22:36:51+01:00 Menu: Fix passing string values
- - - - -
2 changed files:
- gajim/gtk/menus.py - gajim/gtk/util.py
Changes:
===================================== gajim/gtk/menus.py ===================================== @@ -156,7 +156,7 @@ def get_groupchat_menu(control_id: str, account: str, jid: JID) -> Gio.Menu: (_('Rename Chat…'), f'win.rename-groupchat-{control_id}', None), (_('Change Nickname…'), f'win.change-nickname-{control_id}', None), (_('Request Voice'), f'win.request-voice-{control_id}', None), - (_('Execute Command…'), f'win.execute-command-{control_id}', 's("")'), + (_('Execute Command…'), f'win.execute-command-{control_id}', '""'), (_('Search…'), 'win.search-history', None), (_('Remove History'), 'app.remove-history', params) ] @@ -165,52 +165,41 @@ def get_groupchat_menu(control_id: str, account: str, jid: JID) -> Gio.Menu:
def get_account_menu(account: str) -> Gio.Menu: - ''' - [(action, label/sub_menu)] - action: string - label: string - sub menu: list - ''' - account_menu: list[tuple[str, Union[str, list[tuple[str, str]]]]] = [ - ('-profile', _('Profile')), - ('-start-single-chat', _('Send Single Message…')), - ('-services', _('Discover Services…')), - ('-server-info', _('Server Info')), - (_('Advanced'), [ - ('-archive', _('Archiving Preferences')), - ('-blocking', _('Blocking List')), - ('-pep-config', _('PEP Configuration')), - ('-sync-history', _('Synchronise History…')), - ]), - (_('Admin'), [ - ('-send-server-message', _('Send Server Message…')), - ('-set-motd', _('Set MOTD…')), - ('-update-motd', _('Update MOTD…')), - ('-delete-motd', _('Delete MOTD…')) - ]), + + val = f'"{account}"' + + menuitems: MenuItemListT = [ + (_('Profile'), f'app.{account}-profile', val), + (_('Send Single Message…'), f'app.{account}-start-single-chat', val), + (_('Discover Services…'), f'app.{account}-services', val), + (_('Server Info'), f'app.{account}-server-info', val), + ] + + menu = make_menu(menuitems) + + advanced_menuitems: MenuItemListT = [ + (_('Archiving Preferences'), f'app.{account}-archive', val), + (_('Blocking List'), f'app.{account}-blocking', val), + (_('PEP Configuration'), f'app.{account}-pep-config', val), + (_('Synchronise History…'), f'app.{account}-sync-history', val), ]
if app.settings.get('developer_modus'): - account_menu[5][1].append(('-bookmarks', _('Bookmarks'))) + advanced_menuitems.append( + (_('Bookmarks'), f'app.{account}-bookmarks', val))
- def build_menu(preset: list[tuple[str, Union[str, list[tuple[str, str]]]]]): - menu = Gio.Menu() - for item in preset: - if isinstance(item[1], str): - action, label = item - action = f'app.{account}{action}' - menuitem = Gio.MenuItem.new(label, action) - variant = GLib.Variant('s', account) - menuitem.set_action_and_target_value(action, variant) - menu.append_item(menuitem) - else: - label, sub_menu = item - # This is a submenu - submenu = build_menu(sub_menu) - menu.append_submenu(label, submenu) - return menu + menu.append_submenu(_('Advanced'), make_menu(advanced_menuitems))
- return build_menu(account_menu) + admin_menuitems: MenuItemListT = [ + (_('Send Server Message…'), f'app.{account}-send-server-message', val), + (_('Set MOTD…'), f'app.{account}-set-motd', val), + (_('Update MOTD…'), f'app.{account}-update-motd', val), + (_('Delete MOTD…'), f'app.{account}-delete-motd', val) + ] + + menu.append_submenu(_('Admin'), make_menu(admin_menuitems)) + + return menu
def build_accounts_menu() -> None: @@ -448,7 +437,7 @@ def get_subscription_menu(account: str, jid: JID) -> Gio.Menu: jid=jid, type='contact', select=True) - value = f's("{jid}")' + value = f'"{jid}"' menuitems: MenuItemListT = [ (_('Start Chat'), 'win.add-chat', params), (_('Information'), f'win.contact-info-{account}', value),
===================================== gajim/gtk/util.py ===================================== @@ -919,7 +919,7 @@ def make_menu_item(label: str,
item = Gio.MenuItem.new(label) if isinstance(value, str): - item.set_detailed_action(f'{action}::value') + item.set_detailed_action(f'{action}({value})') elif isinstance(value, VariantMixin): item.set_action_and_target_value(action, value.to_variant()) else:
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/compare/1c8ed6bb6232727a7b957ae366959ffa...