Cxbx-reloaded: Design a GUI [v1.0 milestone]

Created on 22 Aug 2017  路  5Comments  路  Source: Cxbx-Reloaded/Cxbx-Reloaded

Separate from which visual component library we'll be using, we must first have a solid design for our user-interface, before we can even consider implementing it.
A quick search shows there exist many user-interfaces, from which we can learn what to do, and what not to do.

In this issue, discuss all considerations, reach consensus, create a mock-up, and prepare all other things required for building a suitable, modern, fast, user-friendly user-interface for Cxbx-Reloaded.


Any work should go into https://github.com/literalmente-game/CxBx-Reloaded-QT-GUI until it is deem ready to go with v0.2 milestone. Special thanks to @literalmente-game, and any other contributors work on it, for working on GUI with QT cross-platform library.

Current ideas for new GUI v2:

  • List of titles (including homebrews)

    • Only time it gets add to the list is when user add a title via load xbe file manually or drag'n'drop

    • Show icon if xbe's header has one.

  • Filtering the list

    • Filtering attributes for: title, id, region, xbe size, etc (keep it simple by the way, no need to overwhelm extra features)

  • Chose their preferred directory as a central directory for EmuDisk, HLE Cache, EEPROM, etc.
  • Select location to save user configure and data directory at. (Pull request #1280 has simple support for v0.1 release.)

    • AppData (default)

    • Current emulator's directory

    • Custom user path

  • Use existing UI layout to maintenance easy accessible.

    • Except in a cross-platform UI library instead of Windows' APIs.

enhancement help wanted needs-developer-discussion question user interface

Most helpful comment

The title database itself could be scanned each time from scratch.
Or stored in a MySQL database or something.

If this were to be a local database, it would probably be better to use SQLite.

All 5 comments

If I may, here my thoughts on this:

  • Cxbx-Reloaded in it's current form, cannot be run via 3rd-party launcher (nor via RetroArch)
  • It would be handy if new user-interface offers quick-access to a "most recently used" list of executables
  • Filtering on a few attributes would be nice too (not necessarily in the main window).
    ** Among the filtering attributes could be things like : title, id, region, status, type, xbe size, folder size, rating, etc (some might be hard to come by)
  • It'd be nice if the same GUI-overhaul would also re-design the entire menu and configuration window(s)
  • Game icon's could be shown in a grid, but even a small amount would already fill up the window (requiring a scrollbar or the above mentioned filtering capabilities)
  • Hence, showing all added entries in a list could be preferable.
  • Implementing a lot of features might cost a lot of time and effort, so to facilitate a smooth implementation, the first draft of the design should probably be 'lean and mean'

https://github.com/ocornut/imgui seems like The library to use for adding a GUI on top of the Xbox output...

Ideas from @PatrickvL about the new GUI:

If you're going to display titles in a list, you could make the column order, width and visibility configurable.
Via right mouse button popup menu
Only on header row of course. A secondary view would be like Windows explorer : a grid of logos with subscript title, and a bottom panel with details on selected title. Possibly updated when hovering.

Double click would execute default action on a title. Make default action configurable (launch, show single title page view, goto internet URL, or whatever other actions there are per title)
The single title page view should hide the filter bar, which should be on top of the list and grid views
In list view, the filter bar could look much like in excel, offering drop-down filter options per column
In grid view, the filter be could be just a free text field
The single title page view could show additional details, not available in list columns or grid cells, like: all xdk library versions, total size on disc, number of xbe's, all embedded logos, timestamp previous launch, duration previous emulation, total sum of all emulation durations, statistics, and whatever else we might think up. For configuration, allow choosing between variants. Offer at least one default (and a reset to default option).

Allow copy, rename and delete of configurations.
The config view should replace the title views.
Close config should ask to save when changes aren't saved yet.

The title database itself could be scanned each time from scratch.
Or stored in a MySQL database or something.

Technically, we want to support archive formats too: XISO, bin+cue, rar, zip, 7z to name a few

Database could cache all scanned title properties, and store additional gathered emulation data
At some point we might also want screenshot and or movie recording feature. Also, a GUI overlay during emulation, for a debugging console, trainer activation, statistics, etc - also in full-screen mode.

Also possible could be ripping tools, extracting models, samples, etc

The title database itself could be scanned each time from scratch.
Or stored in a MySQL database or something.

If this were to be a local database, it would probably be better to use SQLite.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

PatrickvL picture PatrickvL  路  4Comments

LukeUsher picture LukeUsher  路  4Comments

gandalfthewhite19890404 picture gandalfthewhite19890404  路  3Comments

gandalfthewhite19890404 picture gandalfthewhite19890404  路  3Comments

PatrickvL picture PatrickvL  路  3Comments