Example #1
0
    def on_steam_game_changed(self, operation, path):
        """Action taken when a Steam AppManifest file is updated"""
        appmanifest = steam.AppManifest(path)
        # if self.running_game and "steam" in self.running_game.runner_name:
        #     self.running_game.notify_steam_game_changed(appmanifest)

        runner_name = appmanifest.get_runner_name()
        games = pga.get_games_where(steamid=appmanifest.steamid)
        if operation == Gio.FileMonitorEvent.DELETED:
            for game in games:
                if game["runner"] == runner_name:
                    steam.mark_as_uninstalled(game)
                    self.game_store.set_uninstalled(Game(game["id"]))
                    break
        elif operation in (Gio.FileMonitorEvent.CHANGED, Gio.FileMonitorEvent.CREATED):
            if not appmanifest.is_installed():
                return
            if runner_name == "winesteam":
                return
            game_info = None
            for game in games:
                if game["installed"] == 0:
                    game_info = game
                else:
                    # Game is already installed, don't do anything
                    return
            if not game_info:
                game_info = {"name": appmanifest.name, "slug": appmanifest.slug}
            if steam in get_services_synced_at_startup():
                game_id = steam.mark_as_installed(
                    appmanifest.steamid, runner_name, game_info
                )
                self.game_store.update_game_by_id(game_id)
Example #2
0
 def on_steam_game_changed(self, operation, path):
     appmanifest = steam.AppManifest(path)
     runner_name = appmanifest.get_runner_name()
     games = pga.get_games_where(steamid=appmanifest.steamid)
     if operation == Gio.FileMonitorEvent.DELETED:
         for game in games:
             if game['runner'] == runner_name:
                 steam.mark_as_uninstalled(game)
                 self.view.set_uninstalled(Game(game['id']))
                 break
     elif operation in (Gio.FileMonitorEvent.CHANGED, Gio.FileMonitorEvent.CREATED):
         if not appmanifest.is_installed():
             return
         if runner_name == 'winesteam':
             return
         game_info = None
         for game in games:
             if game['installed'] == 0:
                 game_info = game
             else:
                 # Game is already installed, don't do anything
                 return
         if not game_info:
             game_info = {
                 'name': appmanifest.name,
                 'slug': appmanifest.slug,
             }
         game_id = steam.mark_as_installed(appmanifest.steamid,
                                           runner_name,
                                           game_info)
         game_ids = [game['id'] for game in self.game_list]
         if game_id not in game_ids:
             self.add_game_to_view(game_id)
         else:
             self.view.set_installed(Game(game_id))