|
Pokered Save Editor 2
Pokemon Red & Blue save file editor - Qt 6 C++/QML
|
The Pokémon analogue of the Bag View All. Footer became an AppFooterBtn3 (View All / Re-Roll / Boxes Setup); View All slides in the same hand-rolled left panel + scrim holding a 2-D table: rows = species (alphabetized by species name), columns = Party first then only NON-EMPTY boxes (a design decision — empty boxes omitted). Each cell is the per-box count, 0 hidden; a per-cell hover tooltip lists the differing nicknames + an "…and ×N others" tail + a caught/traded split (traded = hasTradeStatus, nicknamed = hasNickname), precomputed in C++. Backed by a new read-only PokemonOverviewModel (mvc/pokemonoverviewmodel.*, brg.pokemonOverviewModel). Test: tst_storage_model pokemonOverview_columnsCountsTooltips. Convention: ../../reference/ui-patterns.md → "View All overview drawer (Pokémon screen)".
Polish pass: (1) zebra rows + columns + whole-row hover; faint header bar. (2) species names no longer clip — wider name column + a QML fixName() mirroring the Pokedex markup mapping (Nidoran<f>→Nidoran ♀). (3) Sort control — cycles the same orders as the Pokedex screen (Dex/Alphabetical/Internal) via PokemonOverviewModel::sortCycle(). (4) tooltip refined — the caught/traded line shows only when something is traded.
Sort icons + condensed columns: the header sort button now shows the CURRENT order's icon and has no tooltip; three PNGs (sort-alphabetical/internal/pokedex) added to app.qrc, exposed via a new sortIcon Q_PROPERTY; the control is a hand-rolled Item (square hover highlight + Image PreserveAspectFit). Columns condensed ~half (nameColW 110 / partyColW 46 / boxColW 30 via a colW(i) helper); box headers show just the number.
(1) Grid cell labels now render <m>/<f> — PokemonBoxView::getMonNickname runs a generic marker replace (fixMonName: <m>/<M>→♂, <f>/<F>→♀, Mr.Mime→Mr. Mime). The earlier exact-match version missed it because the grid shows the mon's nickname, which for un-nicknamed mons is the game's UPPERCASE default (NIDORAN<m>). (2) Footer "Boxes Setup" → a "Tools" menu (wrench); "Boxes Setup" is now the menu item "Boxes Formatted • On/Off". (3) Clicking it opens a direction-aware modal confirm: formatting warns all boxes but the current are erased then opened; unformatting warns it's a recoverable soft delete but the freed space can be overwritten → permanent loss. Proceeding only flips boxesFormatted — the engine already replicates the game's load/save from that one bit; no extra save bytes touched. QML-only. Convention: ../../reference/ui-patterns.md → "Tools menu + Boxes Formatted confirm". (Related: the Unformat warning copy was softened — data is effectively gone unless recovered before an editor/game destroys it; box-format triggers are box-switch / new-file only — see ../../reference/gen1-knowledge.md.)
A sequence of follow-ups, newest first: