def migrate(): for game in [Game(pga_game['id']) for pga_game in pga.get_games()]: if xdg.desktop_launcher_exists(game.slug, game.id): xdg.create_launcher(game.slug, game.id, game.name, desktop=True) if xdg.menu_launcher_exists(game.slug, game.id): xdg.create_launcher(game.slug, game.id, game.name, menu=True)
def popup(self, event, game_row=None, game=None): if game_row: game_id = game_row[COL_ID] game_slug = game_row[COL_SLUG] runner_slug = game_row[COL_RUNNER] is_installed = game_row[COL_INSTALLED] elif game: game_id = game.id game_slug = game.slug runner_slug = game.runner_name is_installed = game.is_installed # Clear existing menu for item in self.get_children(): self.remove(item) # Main items self.add_menuitems(self.main_entries) # Runner specific items runner_entries = None if runner_slug: game = game or Game(game_id) try: runner = runners.import_runner(runner_slug)(game.config) except runners.InvalidRunner: runner_entries = None else: runner_entries = runner.context_menu_entries if runner_entries: self.append(Gtk.SeparatorMenuItem()) self.add_menuitems(runner_entries) self.show_all() # Hide some items hiding_condition = { 'add': is_installed, 'install': is_installed, 'install_more': not is_installed, 'play': not is_installed, 'configure': not is_installed, 'desktop-shortcut': (not is_installed or xdg.desktop_launcher_exists(game_slug, game_id)), 'menu-shortcut': (not is_installed or xdg.menu_launcher_exists(game_slug, game_id)), 'rm-desktop-shortcut': (not is_installed or not xdg.desktop_launcher_exists(game_slug, game_id)), 'rm-menu-shortcut': (not is_installed or not xdg.menu_launcher_exists(game_slug, game_id)), 'browse': not is_installed or runner_slug == 'browser', } for menuitem in self.get_children(): if type(menuitem) is not Gtk.ImageMenuItem: continue action = menuitem.action_id visible = not hiding_condition.get(action) menuitem.set_visible(visible) super(ContextualMenu, self).popup(None, None, None, None, event.button, event.time)
def popup(self, event, game_row=None, game=None): if game_row: game_id = game_row[COL_ID] game_slug = game_row[COL_SLUG] runner_slug = game_row[COL_RUNNER] is_installed = game_row[COL_INSTALLED] elif game: game_id = game.id game_slug = game.slug runner_slug = game.runner_name is_installed = game.is_installed # Clear existing menu for item in self.get_children(): self.remove(item) # Main items self.add_menuitems(self.main_entries) # Runner specific items runner_entries = None if runner_slug: game = game or Game(game_id) try: runner = runners.import_runner(runner_slug)(game.config) except runners.InvalidRunner: runner_entries = None else: runner_entries = runner.context_menu_entries if runner_entries: self.append(Gtk.SeparatorMenuItem()) self.add_menuitems(runner_entries) self.show_all() # Hide some items hiding_condition = { 'add': is_installed, 'install': is_installed, 'install_more': not is_installed, 'play': not is_installed, 'configure': not is_installed, 'desktop-shortcut': ( not is_installed or xdg.desktop_launcher_exists(game_slug, game_id) ), 'menu-shortcut': ( not is_installed or xdg.menu_launcher_exists(game_slug, game_id) ), 'rm-desktop-shortcut': ( not is_installed or not xdg.desktop_launcher_exists(game_slug, game_id) ), 'rm-menu-shortcut': ( not is_installed or not xdg.menu_launcher_exists(game_slug, game_id) ), 'browse': not is_installed or runner_slug == 'browser', } for menuitem in self.get_children(): if type(menuitem) is not Gtk.ImageMenuItem: continue action = menuitem.action_id visible = not hiding_condition.get(action) menuitem.set_visible(visible) super(ContextualMenu, self).popup(None, None, None, None, event.button, event.time)