New Gtk3 UI
New Gtk3 UI
This page is meant to keep track of development efforts on the new Gtk3 UI. Once the Gtk3 UI is the de-facto UI standard, this page can be (re)moved. For now, I'd like to keep it here so it can quickly be found.
Rationale
The how and why we go Gtk3 for *nix, Windows and OSX should be clear, but I'll reiterate: since we don't have any Windows or OSX maintainters left and failed to attract new ones, the decision was made to use Gtk3 as the new UI for 'modern' OSes.
Gtk3 is portable and widely supported and has a C interface. So we should be able to write the UI code once and have it run on our major platforms: Linux, Windows and OSX. Using GLib (a dependency of Gtk3) a lot of platform-dependent code in the UI can be avoided and many standard dialogs, such as open/save/select-dir need to written only once, Gtk3/GLib will handle most of the platform-dependent stuff.
Current development state
- All emulators except VSID work, though a lot of UI code still needs to be written or updated to properly support all machines
- Rendering is currently handled by Cairo, meaning we don't have HW rendering yet, which should be handled using GtkGlArea (requires Gtk3 3.16)
- All UI code is hand-written, we tried using Glade/GtkBuilder, but the amount of machines and extra hardware VICE supports is way too much what a static UI can handle
- Though many UI elements look okay, some don't. This isn't lazyness but rather to avoid tweaking the layout only to discover later that it still needs to be changed. So any layout/style issues will eventually get fixed. So don't complain about it, unless there are glaring bugs (such as dialogs that are too large to fit on a decent screen)
- The developers currently working on Gtk3 are:
- compyx - UI, archdep, documentation, bug fixes
- McMartin - rendering backends, UI, archdep, bug fixes
- loggedoubt - testing, bug fixes
- groepaz - testing, monitor code
- blacky startdust - testing, build system
BUGS/TODO
This is a list of things to do and bugs to fix. This is no way an exhaustive list, to get a better understanding of what meeds to be fixed/altered, run this command inside VICE's top dir: grep -n 'FIXME\|TODO\|XXX' `find src/arch/gtk3 -name '*.c'`
, and be amazed.