Commit Graph
80 Commits
Author SHA1 Message Date
Henrik RydgårdandClaude Opus 5.5 b91bd6af86 Settings: Build the settings screen from pages described as data
Each tab is now a SettingsPage: a list of items (headers, settings, buttons,
hints, links to other pages) that a function builds and views are created
from. Settings are added with page->Setting(&g_Config.x), which takes
the label, the kind of view, the range or choices, units, labels for special
values and the default from the config. The pages keep what depends on the
UI (which settings to show and when, enable rules, and behavior that needs the
screen), and reach the screen through the page's SettingsPageHost.

A page can link to other pages, which open on top of it in the same tab,
under a bar showing where you are, like Tools > Developer tools > Graphics,
where the earlier pages can be clicked to go back to them. The bar has back,
search and help buttons, and the back key also goes back a page (or out of a
search) before leaving the screen. Each page remembers its scroll position.
In portrait there's no tab strip: a page links to the tabs, and the bar shows
just the current page's title. Rotating keeps showing the same page. Moving
between pages only focuses an item when navigating with a keyboard or
controller.

The developer tools are now pages linked from the Tools tab, instead of a
screen of their own. The in-game developer menu and
--start-screen=developertools open the settings on that page. The toggles of
live state (the remote debugger and the MIPS tracer) show and change it
through functions, and pretending to be in-game for the notification tests is
a flag on the OSD. The memory map and memstick tests, only reachable from
commented-out code, are removed.

Search lists the matching settings from all tabs and the pages they link to,
grouped by where they are. Each result goes to the setting on its page,
scrolled to and highlighted (outlined, when picked with a mouse or touch), or
for a page, opens it. This replaces the search tab and the old filter that
hid the views that didn't match, and with them ShowSearchControls. Changing
tabs leaves the search.

The pages, the bar and search are in SettingsPagesDialogScreen, between the
tabbed dialog screen and the settings screen, so the other tabbed screens
keep plain tabs.

Other visible changes:
- Reset buttons that went to the wrong value now go to the real default: the
  touch control auto-hide delay (was 20 seconds instead of 8), the mouse
  wheel delay (1 ms, below its own range, instead of 80) and the UI size (0
  instead of -1 on desktop). The alternative speeds get a reset button.
- Units are shown on more sliders (frames, MHz, seconds, Hz), and popups no
  longer spell out what 0 means in the units, since the zero label does.
  Units of up to three characters (%, x, ms, MHz) aren't translated.
- The Android HW scaler hides the scales the display is too small for,
  instead of cutting the list short.
- Choices are translated in the setting's own section.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-25 15:26:58 +01:00
Henrik RydgårdandClaude Opus 5.5 58fa522d48 UI: Limit the width of dialog screens, and keep content off the edges of large screens
Dialog screens (tabbed, two-pane, simple and the others built on
UIBaseDialogScreen) center their content at up to 1400 wide, instead of
stretching settings rows and buttons across very wide windows.

On large screens, those screens and the main screen also get an inset on all
sides, since controls right at the edge are hard to see there. It grows with
the screen's smaller dimension, from nothing at 600 to the full inset at
1000, and is always full on TVs. The game, popups, and the screens that
position things to match the game's screen (display layout, touch control
layout and tests, custom button and visual mapping) are left as they were.

The root's bounds are computed by UIScreen::GetContentBounds, since
UI::Margins can't hold widths this large.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-24 16:12:01 +02:00
Henrik Rydgård aab24e67e4 Add a crude pipeline difference analyzer, to see what shaders it may payoff to merge. 2026-07-10 12:11:17 +02:00
Henrik Rydgård 1a35a42b2d Minor code modernization 2026-07-08 18:25:08 +02:00
Henrik Rydgård 72ee82844d Doesn't yet work 2026-06-24 23:04:17 +02:00
Henrik Rydgård a722139bd9 Don't CancelAll downloads on StoreScreen close 2026-06-13 15:13:29 +02:00
Henrik Rydgård 75453632f9 Handle inset adjustements on the C++ side, handle them better in the UI. 2026-03-14 18:13:37 +01:00
Henrik Rydgård 1a2e32d451 Fix some untranslatable strings, thanks TotalCaesar569 2026-02-18 18:39:44 +01:00
Henrik Rydgård e9afd51f34 New layout for log channel chooser 2025-11-23 01:15:07 +01:00
oltolm 14e1d183c7 fix compiler warning 2025-11-15 15:26:06 +01:00
Henrik Rydgård 0453fb5449 Move PopupScreen base class into PopupScreens.cpp/h 2025-11-10 10:26:38 +01:00
Henrik Rydgård 7d23626f28 Convert FrameDumpTestScreen to use a TabbedDialog 2025-11-09 09:27:37 +01:00
Henrik Rydgård 2b9f2672bb UI screens header cleanup 2025-10-29 00:15:41 +01:00
Henrik Rydgård 7ffd72b32e Rename some screen classes 2025-10-29 00:02:43 +01:00
Henrik Rydgård 28b9bc2fb3 Make more dev screens usable in portrait by converting them to TabbedDialogScreen 2025-10-23 15:33:09 +02:00
Henrik Rydgård 9ac80460d2 Break out the SystemInfoScreen from DevScreens.cpp 2025-09-23 11:21:32 -06:00
Henrik Rydgård 58456ae950 Remove the UI::EventReturn return values. Makes editing the UI nicer. 2025-09-15 11:09:00 -06:00
oltolm 4372721d0c fix 2 compiler warnings 2025-07-25 21:57:32 +02:00
Henrik Rydgård 06a75fa8cb Recreate the system info screen when the window is resized 2025-07-20 13:03:48 +02:00
Henrik Rydgård f8475e50b1 Add a slider test to the internals tab in system info. It's not quite working right... 2025-04-30 15:53:55 +02:00
Henrik Rydgård 14b43e1496 Make the development tools screen tabbed 2025-04-09 18:38:38 +02:00
Henrik Rydgård f168aa3aee Some cleanup, make the DevTools LogView work slightly better. Though, it needs more work. 2025-04-09 11:58:31 +02:00
Henrik Rydgård 6efb758893 CHange the TabbedDialog create-tab API to allow for future lazy-loading 2025-03-23 22:48:57 +01:00
Henrik Rydgård a78ce8dfd6 Add easy way to copy build number, add way to copy system information to clipboard.
Fixes #18375, although more info could be added.
2025-02-20 10:57:10 -06:00
Henrik Rydgård 87c56aed03 Split of the JitCompareScreen into its own files 2024-06-05 12:38:52 +02:00
Henrik Rydgård 5b566d5807 Crashfix, add Copy ability to ShaderViewScreen 2024-06-02 10:25:05 +02:00
Henrik Rydgård a059750f5a Add basic checkbox UI for GPI switched, add display of GPO LEDs
Try it with Parappa.
2024-05-12 18:01:25 +02:00
Henrik Rydgård 8397fd6791 Also disable the GPU JIT tests on ARM64, not applicable 2024-04-29 11:13:35 +02:00
Henrik Rydgård c5791764d8 Make the i18n T function use std::string_view
Buildfixes, crashfixes

One more

Android buildfix

Buildfix Qt
2024-02-12 18:44:39 +01:00
Henrik Rydgård 812b1024f0 Move TouchTestScreen to DevScreens 2023-12-14 19:01:19 +01:00
Henrik Rydgård 980b2158ba Hide the "System Information / Internals" tab in release builds 2023-09-02 15:42:47 +02:00
Henrik Rydgård fc6879674e Refactor overlays into an enum 2023-08-02 13:03:04 +02:00
Henrik Rydgård 48d577014a Refactor the on-screen display to be more customizable 2023-08-01 00:28:54 +02:00
Henrik Rydgård 93bb113009 Common: Rename Download to Request, and the old Request to ServerRequest. 2023-07-21 22:12:00 +02:00
Henrik Rydgård c442d1de86 Implement rendering of unlocked achievements. Not final design. 2023-06-26 10:01:42 +02:00
Henrik Rydgård 90085522ef System information screen: Re-use the TabbedDialogScreen logic
Want to do this before adding any more tabs here.
2023-06-18 12:22:36 +02:00
Henrik Rydgård ee6234ecb6 I18N: Switch to getting categories by index instead of by string lookup
Also gets rid of the shared_ptr usage, and generally makes things nicer.

Needed for later config refactorings, good to get in early.
2023-04-07 10:35:01 +02:00
Henrik Rydgård 48993f4f4b Control: Add debug display, do assorted fixes. 2023-03-31 20:12:48 +02:00
Henrik Rydgård c27689910e Break out ScrollView from ViewGroup.h, and PopupScreens from UIScreen.h 2023-01-11 10:56:31 +01:00
Henrik Rydgård 474999c462 Minor code cleanup / warning fix 2023-01-01 22:00:53 +01:00
Henrik Rydgård 360de9a372 RemoteISO screens: Make them dialogs so ESC works to exit them on PC.
Also fix the background on the main one, and in savedata manager.

See #16605
2023-01-01 21:55:02 +01:00
Henrik Rydgård 575560f679 Enable game backgrounds on more screens 2022-11-22 22:53:54 +01:00
Henrik Rydgård 85d1f28997 Throw in assorted warning fixes 2022-09-20 18:04:08 +02:00
Henrik Rydgård 9f3851678e Add tags to all our UI screens. Useful to debug UI problems. 2022-09-16 10:14:00 +02:00
Unknown W. Brackets 2479d52202 Global: Reduce includes of common headers.
In many places, string, map, or Common.h were included but not needed.
2022-01-30 16:35:33 -08:00
Henrik Rydgård ae50534918 Add a new command in developer tools to list and load framedumps from framedump.ppsspp.org/repro/
Useful to make it easy to test GPU driver bugs etc, without having to
use real games or copying files around.
2021-01-31 14:42:40 +01:00
Henrik Rydgård e15064b2fc Framedump test screen. Downloads a list of framedumps. 2021-01-31 13:13:42 +01:00
Henrik Rydgård 1a78328e32 Add an option to the in-game dev menu to reset counts on limited logging
(making it start logging such things again, until it hits the limits yet again).
2020-10-10 15:10:46 +02:00
Henrik Rydgård 4f43cff5ca Move fileutil, net, image loaders, ui to Common. (#13506)
* Move and rename file_util/fd_util to Common/File/FileUtil and DirListing

Let's also move net while we're at it.

Move the ZIM/PNG loaders over to Common.

Move the UI framework into Common

iOS buildfix

* Buildfix

* Buildfixes

* Apple buildfix

* This typo again..

* UWP buildfix

* Fix build of PPSSPPQt, such as it is (it's not in good condition...)

* Guess what? Another buildfix.
2020-10-04 20:48:47 +02:00
Henrik Rydgård ff8148dd92 Move native/util, native/data and native/i18 to Common/Data.
Also move colorutil.cpp/h

linking build fix experiment

Delete a bunch of unused CMakeLists.txt files

CMakeLists.txt linking fix

Don't include NativeApp.h from any headers.

Android.mk buildfix

Half of the UWP fix

Buildfix

Minor project file cleanup

Buildfixes

Guess what? More buildfixes!
2020-10-04 07:28:29 +02:00