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))
def refresh(self, event): tracks = jam.get_tracks(self.game.audio_dir) self.track_list.SetObjects(tracks)
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))
def game_select(self, event): self.game = self.games[self.profile.GetSelection()] self.track_list.SetObjects(jam.get_tracks(self.game.audio_dir))