From e5fefd06246f4c52c13aed865cfe058a8f157293 Mon Sep 17 00:00:00 2001 From: Faraphel Date: Wed, 26 Jan 2022 00:11:07 +0100 Subject: [PATCH] optimised get_track_possibilities and fixed some sorting issue ? --- source/CT_Config.py | 22 ++++++++-------------- source/Gui/TrackSelection.py | 9 +++++---- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/source/CT_Config.py b/source/CT_Config.py index 54e335a..3609661 100644 --- a/source/CT_Config.py +++ b/source/CT_Config.py @@ -12,7 +12,7 @@ class CT_Config: game_variant: str = "01", region: int = None, cheat_region: int = None, tags_color: dict = None, prefix_list: list = None, suffix_list: list = None, tag_retro: str = "Retro", default_track: Track = None, pack_path: str = "", - file_process: dict = None, file_structure: dict = None, default_sort: str = "name"): + file_process: dict = None, file_structure: dict = None, default_sort: str = ""): self.version = version self.name = name @@ -195,7 +195,7 @@ class CT_Config: if "name" in ctconfig_json: self.name = ctconfig_json["name"] if "game_variant" in ctconfig_json: self.game_variant = ctconfig_json["game_variant"] - if "default_sort" in ctconfig_json: self.default_sort = ctconfig_json["default_sort"] + if "default_sort" in ctconfig_json: self.sort_track_attr = ctconfig_json["default_sort"] self.nickname = ctconfig_json["nickname"] if "nickname" in ctconfig_json else self.name for param in ["region", "cheat_region", "tags_color", "prefix_list", "suffix_list", "tag_retro"]: @@ -214,17 +214,11 @@ class CT_Config: def get_tracks_count(self) -> int: return sum(1 for _ in self.get_tracks()) - def get_all_track_possibilities(self) -> dict: - possibilities = {} + def get_all_track_possibilities(self) -> list: + possibilities = set() for track in self.get_tracks(): - for key, value in track.__dict__.items(): - if not key in possibilities: possibilities[key] = [] + for key in track.__dict__.keys(): + if key.startswith("_"): continue # if attr start with a _, the attribute is supposed to be hidden + possibilities.add(key) - if type(value) == list: - for value2 in value: possibilities[key].append(value2) - else: possibilities[key].append(value) - - for k, v in possibilities.items(): - possibilities[k] = list(sorted(set(filter(None, v)))) # remove duplicate - - return possibilities + return sorted(possibilities) diff --git a/source/Gui/TrackSelection.py b/source/Gui/TrackSelection.py index db3ba36..9957f86 100644 --- a/source/Gui/TrackSelection.py +++ b/source/Gui/TrackSelection.py @@ -71,7 +71,7 @@ class TrackSelection: Label(self.track_sort, text="Sort track by : ").grid(row=1, column=1) self.combobox_track_sort = ttk.Combobox( self.track_sort, - values=list(self.common.ct_config.get_all_track_possibilities().keys()) + values=list(self.common.ct_config.get_all_track_possibilities()) ) self.combobox_track_sort.grid(row=1, column=2, sticky="NEWS") self.combobox_track_sort.insert(END, self.common.ct_config.sort_track_attr) @@ -187,7 +187,7 @@ class TrackSelection: frame = Frame(root) frame.grid(row=len(frames_filter) + 10, column=1, sticky="NEWS") Label(frame, text="If track's").grid(row=1, column=1) - track_property = ttk.Combobox(frame, values=list(self.common.ct_config.get_all_track_possibilities().keys())) + track_property = ttk.Combobox(frame, values=list(self.common.ct_config.get_all_track_possibilities())) track_property.current(0) track_property.grid(row=1, column=2) @@ -265,6 +265,7 @@ class TrackSelection: def apply_configuration(self): self.common.gui_main.is_track_configuration_edited = True self.common.ct_config.sort_track_attr = self.combobox_track_sort.get() + self.common.ct_config.filter_track_selection = self.get_filter( self.variable_enable_track_filter, self.frames_track_filter @@ -359,7 +360,7 @@ class TrackSelection: filename = filedialog.asksaveasfilename( title="Save track configuration", defaultextension=".mkwf.tc", - filetypes=[("track configuration (*.mkwf.tc)", "*.mkwf.tc")] + filetypes=[("track configuration", "*.mkwf.tc")] ) if filename: self.save_to_file(filename) @@ -396,6 +397,6 @@ class TrackSelection: filename = filedialog.askopenfilename( title="Load track configuration", defaultextension=".mkwf.tc", - filetypes=[("track configuration (*.mkwf.tc)", "*.mkwf.tc")] + filetypes=[("track configuration", "*.mkwf.tc")] ) if filename: self.load_from_file(filename) \ No newline at end of file