def create_properties_for_action(ac, previous=None): ans = PropDict() if ac.isSeparator(): ans['type'] = 'separator' if not ac.isVisible(): ans['visible'] = False return ans text = ac.text() or ac.iconText() if text: ans['label'] = swap_mnemonic_char(text) if not ac.isEnabled(): ans['enabled'] = False if not ac.isVisible() or ac.property('blocked') is True: ans['visible'] = False if ac.menu() is not None: ans['children-display'] = 'submenu' if ac.isCheckable(): exclusive = ac.actionGroup() is not None and ac.actionGroup( ).isExclusive() ans['toggle-type'] = 'radio' if exclusive else 'checkmark' ans['toggle-state'] = int(ac.isChecked()) shortcuts = ac.shortcuts() if shortcuts: sc = dbus.Array(signature='as') for s in shortcuts: if not s.isEmpty(): for x in key_sequence_to_dbus_shortcut(s): sc.append(dbus.Array(x, signature='s')) if sc: ans['shortcut'] = sc[: 1] # Unity fails to display the shortcuts at all if more than one is specified if ac.isIconVisibleInMenu(): icon = ac.icon() if previous and previous.get('x-qt-icon-cache-key') == icon.cacheKey(): for x in 'icon-data x-qt-icon-cache-key'.split(): ans[x] = previous[x] else: data = icon_to_dbus_menu_icon(ac.icon()) if data is not None: ans['icon-data'] = data ans['x-qt-icon-cache-key'] = icon.cacheKey() return ans
def create_properties_for_action(ac, previous=None): ans = PropDict() if ac.isSeparator(): ans['type'] = 'separator' if not ac.isVisible(): ans['visible'] = False return ans text = ac.text() or ac.iconText() if text: ans['label'] = swap_mnemonic_char(text) if not ac.isEnabled(): ans['enabled'] = False if not ac.isVisible() or ac.property('blocked') is True: ans['visible'] = False if ac.menu() is not None: ans['children-display'] = 'submenu' if ac.isCheckable(): exclusive = ac.actionGroup() is not None and ac.actionGroup().isExclusive() ans['toggle-type'] = 'radio' if exclusive else 'checkmark' ans['toggle-state'] = int(ac.isChecked()) shortcuts = ac.shortcuts() if shortcuts: sc = dbus.Array(signature='as') for s in shortcuts: if not s.isEmpty(): for x in key_sequence_to_dbus_shortcut(s): sc.append(dbus.Array(x, signature='s')) if sc: ans['shortcut'] = sc[:1] # Unity fails to display the shortcuts at all if more than one is specified if ac.isIconVisibleInMenu(): icon = ac.icon() if previous and previous.get('x-qt-icon-cache-key') == icon.cacheKey(): for x in 'icon-data x-qt-icon-cache-key'.split(): ans[x] = previous[x] else: data = icon_to_dbus_menu_icon(ac.icon()) if data is not None: ans['icon-data'] = data ans['x-qt-icon-cache-key'] = icon.cacheKey() return ans