GTK3 status: Difference between revisions
Jump to navigation
Jump to search
Line 20: | Line 20: | ||
* TODO: various dialogs | * TODO: various dialogs | ||
:: <s>A lot of this can be implemented using the GtkBuilder 'class'. Research needed.</s> (not flexible enough) | :: <s>A lot of this can be implemented using the GtkBuilder 'class'. Research needed.</s> (not flexible enough) | ||
* <s>TODO: figure out a way to be able to load UI description files from either the source tree during development, or the VICE lib dir when installed.<s | * <s>TODO: figure out a way to be able to load UI description files from either the source tree during development, or the VICE lib dir when installed.</s> | ||
:: No longer required, all UI's/dialogs are built via code | |||
Revision as of 17:33, 20 May 2018
This is a temporary page to collect some notes on the status of the GTK3 port
Status of the GTK3 UI
- TODO: Forcing display size to 1x/2x/3x/4x
- TODO: respect "true aspect ratio" option (currently always off)
- TODO: respect "keep aspect ratio" option (currently always on)
TODO: fullscreen mode- TODO: save/restore window(s) size(s) and position(s) from vice.ini
TODO: make all of: video/audio/mouse/joystick/keyboard work- TODO: hotkeys - preferably user configureable (like SDL)
- TODO: reasonable defaults are needed, eg to go to monitor :)
- TODO: monitor window (
using VTEVTE is Linux only, so we need a custom built Gtk3 widget)
- monitor in terminal works, use sth like ./src/x64 -initbreak 0xfce2 to get into the monitor
- TODO: statusbar (see uistatusbar.c for some comments)
- TODO: mixer and CRT-emu control
- like the existing widget with the sliders in the gtk2 port, put split into two separate widgets of which one only has the audio related (mixer) and the other the video related (CRT) stuff (CRT sliders are done).
TODO: menubar / menus
Some of this can be implemented using the GtkUIManager 'class'. Research needed.
- TODO: various dialogs
A lot of this can be implemented using the GtkBuilder 'class'. Research needed.(not flexible enough)
TODO: figure out a way to be able to load UI description files from either the source tree during development, or the VICE lib dir when installed.
- No longer required, all UI's/dialogs are built via code
- NOTE: The Unix port uses the XDG specification for the vice configuration files, so now `vicerc` is located in `$HOME/.config/vice`, not `$HOME/.vice`. Right now the 'autostart-${emu}.d64' files are also stored there, which is not quite correct.
Status of the arch specific parts
Unix
./configure --enable-native-gtk3ui
- starts up, video and audio is working
- keyboard is working
- TODO: make joystick input work
- TODO: make mouse input work
Windows
./configure --enable-native-gtk3ui --without-resid
- starts up, video is working
- keyboard is working
- TODO: fix "make bindist"
- right now start like "./src/x64 -directory alldata" with ALL roms (drive and computer) in the respective directory
- TODO: fix "undefined reference to reSID::build_dac_table" when reSID is enabled
- Temporary fix: run `make LDFLAGS="-Lsrc/resid"`. configure.proto should be updated to reflect this
- TODO: make audio work
- TODO: fix configure.proto - sound drivers are not being selected correctly (should be like native win32)
- TODO: sound-wmm is disabled in sound.c
- TODO: make joystick input work
- TODO: some stuff is commented out in joy-win32.c and joy-win32-dinput-handle.c
- TODO: make mouse input work
MacOS
- untested
./configure --enable-native-gtk3ui
- TODO: make it compile and start up
- TODO: make video and audio work
- TODO: make keyboard work
- TODO: make joystick input work
- TODO: make mouse input work
Gtk3 coding guidelines
(Work (very much) In Progress)
Gtk3 has changed a lot since Gtk2, so please don't copy Gtk2 code directly into the new Gtk3 codebase. At least first check the Gtk3 docs to see if any deprecated objects, functions or constants are used (there's a lot of deprecation of things in Gtk3, and will continue to be so).
Things like `GtkHBox`, `GtkVBox` and even `GtkBox` are all deprecated in favour of `GtkGrid`, so if you need a `GtkHBox`, use a `GtkGrid` with a single row.