Version 3.2.0: fast lists with loading spinners, names from the game files, INT docs and screenshots, cleanup

This commit is contained in:
2026-10-10 14:58:17 +02:00
parent fbde809370
commit 1586abb8e9
40 changed files with 449 additions and 19279 deletions

View File

@@ -19,7 +19,7 @@ from .audioio import Player, find_device, output_devices
from .dialogs import ExportModDialog, ImportModDialog, SettingsDialog, pick_game_dir
from .editor import EditorPanel
from .models import C_FAV, C_NAME, COLS, SoundFilter, SoundModel
from .spinner import Spinner
from .spinner import BusyOverlay, Spinner
from .textpanel import TextPanel
from .userdata import UserData
from .workers import Runner
@@ -181,6 +181,7 @@ class MainWindow(QMainWindow):
self.proxy.setSourceModel(self.model)
self.table = QTableView()
self.table.setModel(self.proxy)
self.table_busy = BusyOverlay(self.table) # while the sound list loads (start, language change)
self.table.setSortingEnabled(True)
self.table.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectRows)
self.table.setSelectionMode(QAbstractItemView.SelectionMode.ExtendedSelection)
@@ -294,6 +295,7 @@ class MainWindow(QMainWindow):
self.loading = True
self.statusBar().showMessage("Loading sound list…")
self.spinner.show()
self.table_busy.start("Loading sounds…")
store = self.settings.get("store_root")
full = self.settings.get("full_backup", True)
@@ -305,6 +307,7 @@ class MainWindow(QMainWindow):
def done(ws):
self.loading = False
self.spinner.hide()
self.table_busy.stop()
self.ws = ws
self.settings["game_dir"] = game.root
self.save_settings()
@@ -327,6 +330,7 @@ class MainWindow(QMainWindow):
def failed(e, tb):
self.loading = False
self.spinner.hide()
self.table_busy.stop()
self.show_no_game("Could not load the game audio: %s" % e)
self.runner.start(work, done, failed, lambda m: self.statusBar().showMessage(m))
@@ -512,8 +516,7 @@ class MainWindow(QMainWindow):
# --- changes ----------------------------------------------------------------------------------
def _after_change(self, key=None):
self.model.refresh_keys(modified=self.ws.modified_keys())
self.proxy.refilter()
self.model.refresh_keys(modified=self.ws.modified_keys()) # the view refilters/re-sorts itself
self._update_count()
def revert_sounds(self, sounds):