Gtk3 Threaded UI
Introduction
This page is meant to track our work on refactoring the Gtk3 UI to properly work with the awesome work done by DQH, solving a lot of issues with rendering and sound synchronisation (the infamous "ruckeln") by using threading to have the emulation take precedence over the UI. The main dialogs (attach disk, open and use the setting dialog, etc) have already been refactored, but a lot of dialogs/popup menus and statusbar widgets remain.
Using the new threaded code
- Best filled in by DQH, I think :)
UI elements to to check and refactor
This table contains a list of menu actions/dialogs reachable via the main menu. Unless otherwise noted, the "source file" column contains the filename with src/arch/gtk3
stripped off. The keyboard shortcuts are taken from the Linux port, so they might be off for at least MacOS.
These table are being built from running x64sc, so some items may be missing in some emulators, or some items may not show up here yet. I'll deal with that later.
menu item | shortcut | source file | function | status | remarks |
---|---|---|---|---|---|
File → Smart attach disk/tape/cartridge | Alt+A | uismartattach.c | ui_smart_attach_dialog_show() | OK | |
File → Attach disk image → Drive #[8-11] | Alt+[8-11] | uidiskattach.c | ui_disk_attach_dialog_show() | OK | |
File → Create and attach an empty disk image | uidiskcreate.c | ui_disk_create_dialog_show() | needs checking | ||
File → Detach disk image → Drive #[8:0 .. 11:1] | Crtl+Alt+[8-11] | uidiskattach.c | ui_disk_detach_callback() | needs checking | No shortcuts for second drive, perhaps Ctrl+Alt+Shift+[8-11]? |
File → Detach disk image → Detach all | uidiskattach.c | ui_disk_detach_all_callback() | needs checking | ||
File → Flip list → Add current image (Unit #8) | Alt+I | uifliplist.c | ui_fliplist_add_current_cb() | needs checking | |
File → Flip list → Remove current image (Unit #8) | Alt+K | uifliplist.c | ui_fliplist_remove_current_cb() | needs checking | |
File → Flip list → Attach next image (Unit #8) | Alt+N | uifliplist.c | ui_fliplist_next_cb() | needs checking | |
File → Flip list → Attach previous image (Unit #8) | Alt+Shift+N | uifliplist.c | ui_fliplist_remove_prev_cb() | needs checking | |
File → Flip list → Load flip list file | uifliplist.c | ui_fliplist_load_callback() | needs checking | ||
File → Flip list → Save flip list file | uifliplist.c | ui_fliplist_save_callback() | needs checking | ||
File → Attach tape image | Alt+T | uitapeattach.c | ui_tape_attach_callback() | needs checking | |
File → Create and attach an empty tape image | uitapecreate.c | ui_tape_create_dialog_show() | needs checking | ||
File → Detach tape image | uitapeattach.c | ui_tape_detach_callback() | needs checking | ||
File → Datasette controls → Stop | uidatasette.c | ui_datasette_tape_action_cb() | needs checking | ||
File → Datasette controls → Start | uidatasette.c | ui_datasette_tape_action_cb() | needs checking | ||
File → Datasette controls → Forward | uidatasette.c | ui_datasette_tape_action_cb() | needs checking | ||
File → Datasette controls → Rewind | uidatasette.c | ui_datasette_tape_action_cb() | needs checking | ||
File → Datasette controls → Record | uidatasette.c | ui_datasette_tape_action_cb() | needs checking | ||
File → Datasette controls → Reset | uidatasette.c | ui_datasette_tape_action_cb() | needs checking | ||
File → Datasette controls → Reset Counter | uidatasette.c | ui_datasette_tape_action_cb() | needs checking | ||
File → Attach cartridge image | Alt+C | uicart.c | ui_cart_show_dialog() | needs checking | |
File → Detach cartridge image(s) | Alt+Shift+C | uicart.c | ui_cart_detach() | needs checking | |
File → Cartridge freeze | Alt+Z | uicart.c | ui_cart_trigger_freeze() | needs checking | |
File → Activate monitor | Alt+H | uimon.c | ui_monitor_activate_callback() | needs checking | |
File → Netplay | uinetplay_new.c | ui_netplay_dialog_new() | needs checking | ||
File → Reset → Soft Reset | Alt+F9 | uicommands.c | ui_machine_reset_callback() | needs checking | |
File → Reset → Hard Reset | Alt+F12 | uicommands.c | ui_machine_reset_callback() | needs checking | |
File → Reset → Reset drive #8 | uicommands.c | ui_drive_reset_callback() | needs checking | ||
File → Reset → Reset drive #9 | uicommands.c | ui_drive_reset_callback() | needs checking | ||
File → Reset → Reset drive #10 | uicommands.c | ui_drive_reset_callback() | needs checking | ||
File → Reset → Reset drive #11 | uicommands.c | ui_drive_reset_callback() | needs checking | ||
File → Exit emulator | Alt+Q | uicommands.c | ui_close_callback() | OK |
menu item | shortcut | source file | function | status | remarks |
---|---|---|---|---|---|
Edit → Copy | Alt+Delete | uiedit.c | ui_copy_callback() | needs checking | |
Edit → Paste | Alt+Insert | uiedit.c | ui_paste_callback() | needs checking |
menu item | shortcut | source file | function | status | remarks |
---|---|---|---|---|---|
Snapshot → Load snapshot file | Alt+L | uisnapshot.c | ui_snapshot_open_file() | needs checking | |
Snapshot → Save snapshot file | Alt+S | uisnapshot.c | ui_snapshot_save_file() | needs checking | |
Snapshot → Quickload snapshot | Alt+L | uisnapshot.c | ui_snapshot_quickload_snapshot() | needs checking | |
Snapshot → Quicksave snapshot | Alt+S | uisnapshot.c | ui_snapshot_quicksave_snapshot() | needs checking | |
Snapshot → Start recording events | uisnapshot.c | ui_snapshot_history_record_start() | needs checking | ||
Snapshot → Stop recording events | uisnapshot.c | ui_snapshot_history_record_end() | needs checking | ||
Snapshot → Start playing back events | uisnapshot.c | ui_snapshot_history_playback_start() | needs checking | ||
Snapshot → Stop playing back events | uisnapshot.c | ui_snapshot_history_playback_end() | needs checking | ||
Snapshot → Set recording milestone | Alt+E | uisnapshot.c | ui_snapshot_history_milestone_set() | needs checking | |
Snapshot → Return to milestone | Alt+U | uisnapshot.c | ui_snapshot_history_milestone_reset_() | needs checking | |
Snapshot → Save media file | Alt+Shift+R | uimedia.c | ui_media_dialog_show() | Should be fixed | |
Snapshot → Stop media recording | Alt+Shift+S | uimedia.c | ui_media_stop_recording() | needs checking |
menu item | shortcut | source file | function | status | remarks |
---|---|---|---|---|---|
Settings → Toggle fullscreen | Alt+D | ui.c | ui_fullscreen_callback() | needs checking | Can also be activated by double-clicking on the canvas, which needs additional checking |
Settings → Restore display state | Alt+R | uicommands.c | ui_restore_display() | needs checking | |
Settings → Show menu/status in fullscreen | Alt+B | ui.c | ui_fullscreen_decorations_callback() | needs checking | |
Settings → Settings | Alt+O | uisettings.c | ui_settings_dialog_create_and_activate_node_callback() | needs checking | |
Settings → Load settings | uimachinemenu.c | settings_load_callback() | needs checking | ||
Settings → Load settings from | uimachinemenu.c | settings_load_custom_callback() | OK | ||
Settings → Save settings | uimachinemenu.c | settings_save_callback() | needs checking | ||
Settings → Save settings to | uimachinemenu.c | settings_save_custom_callback() | needs checking | ||
Settings → Restore default settings | uicommands.c | ui_restore_default_settings() | needs checking |
The following menu only shows up when passing --enable-debug
to ./configure
menu item | shortcut | source file | function | status | remarks |
---|---|---|---|---|---|
Debug → Trace mode | uidebug.c | ui_debug_trace_mode_dialog_show() | needs checking | ||
Debug → Main CPU trace | uicommands.c | ui_toggle_resource("MainCPU_TRACE") | needs checking | ||
Debug → IEC bus trace | uicommands.c | ui_toggle_resource("IEC_TRACE") | needs checking | ||
Debug → IEEE-488 bus trace | uicommands.c | ui_toggle_resource("IEEE_TRACE") | needs checking | ||
Debug → Drive #8 CPU trace | uicommands.c | ui_toggle_resource("Drive0CPU_TRACE") | needs checking | ||
Debug → Drive #9 CPU trace | uicommands.c | ui_toggle_resource("Drive1CPU_TRACE") | needs checking | ||
Debug → Drive #10 CPU trace | uicommands.c | ui_toggle_resource("Drive2CPU_TRACE") | needs checking | ||
Debug → Drive #11 CPU trace | uicommands.c | ui_toggle_resource("Drive3CPU_TRACE") | needs checking | ||
Debug → Autoplay playback frames | uidebug.c | ui_debug_playback_frames_dialog_show() | needs checking | ||
Debug → Save core dump | uicommands.c | ui_toggle_resource("DoCoreDump") | needs checking |
menu item | shortcut | source file | function | status | remarks |
---|---|---|---|---|---|
Help → Browse manual | uicommands.c | ui_open_manual_callback() | needs checking | ||
Help → Command line options | uicmdline.c | uicmdline_dialog_show() | needs checking | ||
Help → Compile time features | uicompiletimefeatures.c | uicompiletimefeatures_dialog_show() | needs checking | Filename is ridiculous and so is the function call. | |
Help → Hotkeys | uihotkeys.c | uihotkeys_dialog_show() | needs checking | ||
Help → Aboot | uiaboot.c | ui_about_dialog_show() | OK |