GTK3 status: Difference between revisions

From vice-emu
Jump to navigation Jump to search
No edit summary
Line 6: Line 6:
* TODO: respect "true aspect ratio" option (currently always off)
* TODO: respect "true aspect ratio" option (currently always off)
* TODO: respect "keep aspect ratio" option (currently always on)
* TODO: respect "keep aspect ratio" option (currently always on)
* TODO: fullscreen mode
* <s>TODO: fullscreen mode</s>
* TODO: save/restore window(s) size(s) and position(s) from vice.ini
* TODO: save/restore window(s) size(s) and position(s) from vice.ini
* TODO: make all of: video/audio/mouse/joystick/keyboard work
* <s>TODO: make all of: video/audio/mouse/joystick/keyboard work</s>
* TODO: hotkeys - preferably user configureable (like SDL)
* TODO: hotkeys - preferably user configureable (like SDL)
: TODO: reasonable defaults are needed, eg to go to monitor :)
: TODO: reasonable defaults are needed, eg to go to monitor :)
* TODO: monitor window (using VTE)
* TODO: monitor window (<s>using VTE<s/> VTE 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
: 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: statusbar (see uistatusbar.c for some comments)
* TODO: mixer and CRT-emu control
* TODO: mixer and CRT-emu control
: like the existing widget with the sliders in the gtk2 port, put splitted into two seperate widgets of which one only has the audio related (mixer) and the other the video related (CRT) stuff.
: 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
* <s>TODO: menubar / menus
:: Some of this can be implemented using the GtkUIManager 'class'. Research needed.
:: Some of this can be implemented using the GtkUIManager 'class'. Research needed.</s>
* TODO: various dialogs
* TODO: various dialogs
:: A lot of this can be implemented using the GtkBuilder 'class'. Research needed.
:: <s>A lot of this can be implemented using the GtkBuilder 'class'. Research needed.</s> (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.
* <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:31, 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 VTE VTE 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.