static void CALLBACK tapedialog_timerproc(HWND dialog, UINT msg, UINT_PTR idevent, DWORD time) { struct tape_dialog *dlg; int id; int curpos, endpos; char tapestatus[32]; mess_image *img; dlg = get_tapedialog(dialog); id = dlg - tape_dialogs; img = image_from_devtype_and_index(IO_CASSETTE, id); tapecontrol_gettime(tapestatus, sizeof(tapestatus) / sizeof(tapestatus[0]), img, &curpos, &endpos); SendMessage(dlg->slider, TBM_SETRANGEMIN, FALSE, 0); SendMessage(dlg->slider, TBM_SETRANGEMAX, FALSE, endpos); SendMessage(dlg->slider, TBM_SETPOS, TRUE, curpos); win_set_window_text_utf8(dlg->status, tapestatus); }
void ui_menu_mess_tape_control::populate() { astring timepos; cassette_state state; int count = cassette_count(); UINT32 flags = 0; if( count > 0 ) { if( index == (count-1) ) flags |= MENU_FLAG_LEFT_ARROW; else flags |= MENU_FLAG_RIGHT_ARROW; } if ((device != NULL) && (device->exists())) { double t0, t1; UINT32 tapeflags = 0; cassette_image_device* cassette = dynamic_cast<cassette_image_device*>(&device->device()); t0 = cassette->get_position(); t1 = cassette->get_length(); if (t1 > 0) { if (t0 > 0) tapeflags |= MENU_FLAG_LEFT_ARROW; if (t0 < t1) tapeflags |= MENU_FLAG_RIGHT_ARROW; } /* name of tape */ item_append(device->device().name(), device->filename(), flags, TAPECMD_SELECT); /* state */ tapecontrol_gettime(timepos, cassette, NULL, NULL); state = cassette->get_state(); item_append( (state & CASSETTE_MASK_UISTATE) == CASSETTE_STOPPED ? "stopped" : ((state & CASSETTE_MASK_UISTATE) == CASSETTE_PLAY ? ((state & CASSETTE_MASK_MOTOR) == CASSETTE_MOTOR_ENABLED ? "playing" : "(playing)") : ((state & CASSETTE_MASK_MOTOR) == CASSETTE_MOTOR_ENABLED ? "recording" : "(recording)") ), timepos, tapeflags, TAPECMD_SLIDER); /* pause or stop */ item_append("Pause/Stop", NULL, 0, TAPECMD_STOP); /* play */ item_append("Play", NULL, 0, TAPECMD_PLAY); /* record */ item_append("Record", NULL, 0, TAPECMD_RECORD); /* rewind */ item_append("Rewind", NULL, 0, TAPECMD_REWIND); /* fast forward */ item_append("Fast Forward", NULL, 0, TAPECMD_FAST_FORWARD); } else { /* no tape loaded */ item_append("No Tape Image loaded", NULL, flags, NULL); } }