Exemple #1
0
    def write_track_data(self, key, data):
        # type (str, object) -> None
        track_obj = self.track_list.GetObjects()[self.selected_track]

        data_path = os.path.join(self.game.audio_dir, 'track_data.json')
        logger.info("Writing track data to {path}".format(path=data_path))
        try:
            with open(data_path) as f:
                track_data = json.load(f)
        except FileNotFoundError:
            track_data = {}
        except ValueError:
            track_data = {}
            logger.exception("Invalid track data for {path}".format(path=data_path))

        # Remove duplicate track data.
        # This only really works for binds, because they're strings. Unless somehow your aliases are the exact same.
        for track, values in track_data.items():
            try:
                if key in values and data in values[key]:
                    del values[key]
            except TypeError:
                pass

        if track_obj.name not in track_data:
            track_data[track_obj.name] = {}

        track_data[track_obj.name][key] = data

        with open(os.path.join(self.game.audio_dir, 'track_data.json'), 'w') as f:
            json.dump(track_data, f, sort_keys=True)

        self.track_list.SetObjects(jam.get_tracks(self.game.audio_dir))
Exemple #2
0
 def refresh(self, event):
     tracks = jam.get_tracks(self.game.audio_dir)
     self.track_list.SetObjects(tracks)
Exemple #3
0
 def clear_all(self, event):
     with open(os.path.join(self.game.audio_dir, 'track_data.json'), 'w') as f:
         f.write(json.dumps({}))
     self.track_list.SetObjects(jam.get_tracks(self.game.audio_dir))
Exemple #4
0
 def game_select(self, event):
     self.game = self.games[self.profile.GetSelection()]
     self.track_list.SetObjects(jam.get_tracks(self.game.audio_dir))