added a menu to sort tracks by name, author, score and version

This commit is contained in:
Faraphel 2021-09-30 23:42:32 +02:00
parent 15510eacd6
commit 69f4e7872b
3 changed files with 18 additions and 12 deletions

View file

@ -57,9 +57,10 @@ class CT_Config:
self.all_version.add(track.since_version)
self.all_tracks.append(track)
def create_ctfile(self, directory: str = "./file/", highlight_version: str = None) -> None:
def create_ctfile(self, directory: str = "./file/", highlight_version: str = None, sort_track_by: str = None) -> None:
"""
create a ctfile configuration in a directory
:param sort_track_by: by which property will track be sorted
:param highlight_version: highlight a specific version in light blue
:param directory: create CTFILE.txt and RCTFILE.txt in this directory
"""
@ -83,6 +84,8 @@ class CT_Config:
track_list = self.search_tracks(not_value=True, values_list=True,
only_unordered_track=True, score=star_value)
if sort_track_by:
track_list.sort(key=lambda track: track.get(sort_track_by))
for i, track in enumerate(track_list):
if i % 4 == 0:

View file

@ -366,7 +366,10 @@ class Game:
self.gui.progress(show=True, indeter=False, statut=self.gui.translate("Converting files"),
max=max_step, step=0)
self.gui.progress(statut=self.gui.translate("Configurating LE-CODE"), add=1)
self.ctconfig.create_ctfile(highlight_version=self.gui.stringvar_mark_track_from_version.get())
self.ctconfig.create_ctfile(
highlight_version=self.gui.stringvar_mark_track_from_version.get(),
sort_track_by=self.gui.stringvar_sort_track_by.get()
)
self.gui.progress(statut=self.gui.translate("Creating ct_icon.png"), add=1)
ct_icon = self.ctconfig.get_cticon()

View file

@ -1,3 +1,4 @@
from distutils.version import StrictVersion
from tkinter import filedialog, ttk, messagebox
from tkinter import *
import traceback
@ -8,7 +9,7 @@ import os
from source.Game import Game, RomAlreadyPatched, InvalidGamePath, InvalidFormat, in_thread, VERSION_FILE_URL
from source.Option import Option
from source.definition import get_version_from_string
with open("./translation.json", encoding="utf-8") as f:
translation_dict = json.load(f)
@ -25,8 +26,6 @@ class Gui:
self.option.load_from_file("./option.json")
self.game = Game(gui=self)
self.game.ctconfig.load_ctconfig_file("./ct_config.json")
self.game.ctconfig.all_version.sort(key=get_version_from_string)
latest_version: str = self.game.ctconfig.all_version[-1]
self.is_dev_version = False # Is this installer version a dev ?
self.stringvar_language = StringVar(value=self.option.language)
@ -38,7 +37,7 @@ class Gui:
self.boolvar_use_1star_track = BooleanVar(value=True)
self.boolvar_use_2star_track = BooleanVar(value=True)
self.boolvar_use_3star_track = BooleanVar(value=True)
self.stringvar_mark_track_from_version = StringVar(value=latest_version)
self.stringvar_mark_track_from_version = StringVar(value="None")
self.root.title(self.translate("MKWFaraphel Installer"))
self.root.resizable(False, False)
@ -80,10 +79,11 @@ class Gui:
self.menu_advanced.add_checkbutton(label=self.translate("Don't check for update"), variable=self.boolvar_dont_check_for_update, command=lambda: self.option.edit("dont_check_for_update", self.boolvar_dont_check_for_update))
self.menu_advanced.add_separator()
self.menu_trackconvprocess = Menu(self.menu_advanced, tearoff=0)
self.menu_advanced.add_cascade(label=self.translate("Number of track conversion process"), menu=self.menu_trackconvprocess)
for cpu in range(1, 9):
self.menu_trackconvprocess.add_radiobutton(label=self.translate(str(cpu), " ", "process"), variable=self.intvar_process_track, value=cpu, command=lambda: self.option.edit("process_track", self.intvar_process_track))
self.menu_advanced.add_command(label=self.translate("Number of track conversion process", " :"))
self.menu_advanced.add_radiobutton(label=self.translate("1 ", "process"), variable=self.intvar_process_track, value=1, command=lambda: self.option.edit("process_track", 1))
self.menu_advanced.add_radiobutton(label=self.translate("2 ", "process"), variable=self.intvar_process_track, value=2, command=lambda: self.option.edit("process_track", 2))
self.menu_advanced.add_radiobutton(label=self.translate("4 ", "process"), variable=self.intvar_process_track, value=4, command=lambda: self.option.edit("process_track", 4))
self.menu_advanced.add_radiobutton(label=self.translate("8 ", "process"), variable=self.intvar_process_track, value=8, command=lambda: self.option.edit("process_track", 8))
self.frame_language = Frame(self.root)
self.frame_language.grid(row=1, column=1, sticky="E")
@ -163,8 +163,8 @@ class Gui:
github_version_data = requests.get(VERSION_FILE_URL, allow_redirects=True).json()
with open("./version", "rb") as f: local_version_data = json.load(f)
local_version = get_version_from_string(f"{local_version_data['version']}.{local_version_data['subversion']}")
github_version = get_version_from_string(f"{github_version_data['version']}.{github_version_data['subversion']}")
local_version = StrictVersion(f"{local_version_data['version']}.{local_version_data['subversion']}")
github_version = StrictVersion(f"{github_version_data['version']}.{github_version_data['subversion']}")
if github_version > local_version: # if github version is newer than local version
if messagebox.askyesno(