(nw) updated debug media menu to latest version

This commit is contained in:
Robbbert 2019-07-13 22:00:34 +10:00
parent 32c11865b7
commit 5d0a3f2f40
2 changed files with 34 additions and 13 deletions

View File

@ -50,7 +50,7 @@ consolewin_info::consolewin_info(debugger_windows_interface &debugger) :
osd::text::tstring tc_buf = osd::text::to_tstring(string_format("%s : %s", img.device().name(), img.exists() ? img.filename() : "[no image]")); osd::text::tstring tc_buf = osd::text::to_tstring(string_format("%s : %s", img.device().name(), img.exists() ? img.filename() : "[no image]"));
AppendMenu(m_devices_menu, MF_ENABLED, 0, tc_buf.c_str()); AppendMenu(m_devices_menu, MF_ENABLED, 0, tc_buf.c_str());
} }
AppendMenu(GetMenu(window()), MF_ENABLED | MF_POPUP, (UINT_PTR)m_devices_menu, TEXT("Images")); AppendMenu(GetMenu(window()), MF_ENABLED | MF_POPUP, (UINT_PTR)m_devices_menu, TEXT("Media"));
} }
// get the work bounds // get the work bounds
@ -192,17 +192,27 @@ void consolewin_info::update_menu()
if (img.is_creatable()) if (img.is_creatable())
AppendMenu(devicesubmenu, MF_STRING, new_item + DEVOPTION_CREATE, TEXT("Create...")); AppendMenu(devicesubmenu, MF_STRING, new_item + DEVOPTION_CREATE, TEXT("Create..."));
AppendMenu(devicesubmenu, flags_for_exists, new_item + DEVOPTION_CLOSE, TEXT("Unmount"));
if (img.device().type() == CASSETTE) if (img.exists())
{ {
cassette_state const state = (cassette_state)(img.exists() ? (downcast<cassette_image_device *>(&img.device())->get_state() & CASSETTE_MASK_UISTATE) : CASSETTE_STOPPED); AppendMenu(devicesubmenu, flags_for_exists, new_item + DEVOPTION_CLOSE, TEXT("Unmount"));
AppendMenu(devicesubmenu, MF_SEPARATOR, 0, nullptr);
AppendMenu(devicesubmenu, flags_for_exists | ((state == CASSETTE_STOPPED) ? MF_CHECKED : 0), new_item + DEVOPTION_CASSETTE_STOPPAUSE, TEXT("Pause/Stop")); if (img.device().type() == CASSETTE)
AppendMenu(devicesubmenu, flags_for_exists | ((state == CASSETTE_PLAY) ? MF_CHECKED : 0), new_item + DEVOPTION_CASSETTE_PLAY, TEXT("Play")); {
AppendMenu(devicesubmenu, flags_for_writing | ((state == CASSETTE_RECORD) ? MF_CHECKED : 0), new_item + DEVOPTION_CASSETTE_RECORD, TEXT("Record")); cassette_state const state = cassette_state(downcast<cassette_image_device *>(&img.device())->get_state() & CASSETTE_MASK_UISTATE);
AppendMenu(devicesubmenu, flags_for_exists, new_item + DEVOPTION_CASSETTE_REWIND, TEXT("Rewind")); AppendMenu(devicesubmenu, MF_SEPARATOR, 0, nullptr);
AppendMenu(devicesubmenu, flags_for_exists, new_item + DEVOPTION_CASSETTE_FASTFORWARD, TEXT("Fast Forward")); AppendMenu(devicesubmenu, flags_for_exists | ((state == CASSETTE_STOPPED) ? MF_CHECKED : 0), new_item + DEVOPTION_CASSETTE_STOPPAUSE, TEXT("Pause/Stop"));
AppendMenu(devicesubmenu, flags_for_exists | ((state == CASSETTE_PLAY) ? MF_CHECKED : 0), new_item + DEVOPTION_CASSETTE_PLAY, TEXT("Play"));
AppendMenu(devicesubmenu, flags_for_writing | ((state == CASSETTE_RECORD) ? MF_CHECKED : 0), new_item + DEVOPTION_CASSETTE_RECORD, TEXT("Record"));
AppendMenu(devicesubmenu, flags_for_exists, new_item + DEVOPTION_CASSETTE_REWIND, TEXT("Rewind"));
AppendMenu(devicesubmenu, flags_for_exists, new_item + DEVOPTION_CASSETTE_FASTFORWARD, TEXT("Fast Forward"));
AppendMenu(devicesubmenu, MF_SEPARATOR, 0, nullptr);
// Motor state can be overriden by the driver
cassette_state const motor_state = cassette_state(downcast<cassette_image_device *>(&img.device())->get_state() & CASSETTE_MASK_MOTOR);
AppendMenu(devicesubmenu, flags_for_exists | ((motor_state == CASSETTE_MOTOR_ENABLED) ? MF_CHECKED : 0), new_item + DEVOPTION_CASSETTE_MOTOR, TEXT("Motor"));
cassette_state const speaker_state = cassette_state(downcast<cassette_image_device *>(&img.device())->get_state() & CASSETTE_MASK_SPEAKER);
AppendMenu(devicesubmenu, flags_for_exists | ((speaker_state == CASSETTE_SPEAKER_ENABLED) ? MF_CHECKED : 0), new_item + DEVOPTION_CASSETTE_SOUND, TEXT("Audio while Loading"));
}
} }
std::string filename; std::string filename;
@ -434,6 +444,7 @@ bool consolewin_info::handle_command(WPARAM wparam, LPARAM lparam)
if (img->device().type() == CASSETTE) if (img->device().type() == CASSETTE)
{ {
cassette_image_device *const cassette = downcast<cassette_image_device *>(&img->device()); cassette_image_device *const cassette = downcast<cassette_image_device *>(&img->device());
bool s;
switch ((LOWORD(wparam) - ID_DEVICE_OPTIONS) % DEVOPTION_MAX) switch ((LOWORD(wparam) - ID_DEVICE_OPTIONS) % DEVOPTION_MAX)
{ {
case DEVOPTION_CASSETTE_STOPPAUSE: case DEVOPTION_CASSETTE_STOPPAUSE:
@ -446,11 +457,19 @@ bool consolewin_info::handle_command(WPARAM wparam, LPARAM lparam)
cassette->change_state(CASSETTE_RECORD, CASSETTE_MASK_UISTATE); cassette->change_state(CASSETTE_RECORD, CASSETTE_MASK_UISTATE);
return true; return true;
case DEVOPTION_CASSETTE_REWIND: case DEVOPTION_CASSETTE_REWIND:
cassette->seek(-60.0, SEEK_CUR); cassette->seek(0.0, SEEK_SET); // to start
return true; return true;
case DEVOPTION_CASSETTE_FASTFORWARD: case DEVOPTION_CASSETTE_FASTFORWARD:
cassette->seek(+60.0, SEEK_CUR); cassette->seek(+300.0, SEEK_CUR); // 5 minutes forward or end, whichever comes first
return true; break;
case DEVOPTION_CASSETTE_MOTOR:
s =((cassette->get_state() & CASSETTE_MASK_MOTOR) == CASSETTE_MOTOR_DISABLED);
cassette->change_state(s ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED, CASSETTE_MASK_MOTOR);
break;
case DEVOPTION_CASSETTE_SOUND:
s =((cassette->get_state() & CASSETTE_MASK_SPEAKER) == CASSETTE_SPEAKER_MUTED);
cassette->change_state(s ? CASSETTE_SPEAKER_ENABLED : CASSETTE_SPEAKER_MUTED, CASSETTE_MASK_SPEAKER);
break;
} }
} }
} }

View File

@ -39,6 +39,8 @@ private:
DEVOPTION_CASSETTE_RECORD, DEVOPTION_CASSETTE_RECORD,
DEVOPTION_CASSETTE_REWIND, DEVOPTION_CASSETTE_REWIND,
DEVOPTION_CASSETTE_FASTFORWARD, DEVOPTION_CASSETTE_FASTFORWARD,
DEVOPTION_CASSETTE_MOTOR,
DEVOPTION_CASSETTE_SOUND,
DEVOPTION_MAX DEVOPTION_MAX
}; };