@@ -407,19 +407,56 @@ void show_controller_slot(iris::instance* iris, int slot) {
407407 if (BeginChild (label, ImVec2 (GetContentRegionAvail ().x / (slot ? 1.0 : 2.0 ) - 10.0 , 0 ))) {
408408 std::string& path = slot ? iris->mcd1_path : iris->mcd0_path ;
409409
410+ float avail_width = GetContentRegionAvail ().x ;
411+
410412 ImVec4 col = GetStyleColorVec4 (iris->ds [slot] ? ImGuiCol_Text : ImGuiCol_TextDisabled);
411413
412414 col.w = 1.0 ;
413415
416+ PushFont (iris->font_heading );
417+ Text (" Slot %d" , slot+1 );
418+ PopFont ();
419+
420+ Text (" Controller" );
421+
422+ std::string controller_name = " None" ;
423+
424+ if (iris->ds [slot]) {
425+ controller_name = " DualShock 2" ;
426+ }
427+
428+ SetNextItemWidth (avail_width);
429+
430+ if (BeginCombo (" ##controller" , controller_name.c_str ())) {
431+ if (Selectable (" None" )) {
432+ if (iris->ds [slot]) {
433+ ps2_sio2_detach_device (iris->ps2 ->sio2 , slot);
434+
435+ iris->ds [slot] = nullptr ;
436+ }
437+ }
438+
439+ if (Selectable (" DualShock 2" )) {
440+ if (!iris->ds [slot]) {
441+ iris->ds [slot] = ds_attach (iris->ps2 ->sio2 , slot);
442+ }
443+ }
444+
445+ EndCombo ();
446+ }
447+
414448 InvisibleButton (" ##slot0" , ImVec2 (10 , 10 ));
415449
416- texture* tex = &iris->ps2_memory_card_icon ;
450+ texture* tex = &iris->dualshock2_icon ;
417451
418- SetCursorPosX ((GetContentRegionAvail ().x / 2.0 ) - (tex->width / 2.0 ));
452+ float width = 225 .0f ;
453+ float height = (tex->height * width) / tex->width ;
454+
455+ SetCursorPosX ((GetContentRegionAvail ().x / 2.0 ) - (width / 2.0 ));
419456
420457 Image (
421458 (ImTextureID)(intptr_t )tex->descriptor_set ,
422- ImVec2 (tex-> width , tex-> height ),
459+ ImVec2 (width, height),
423460 ImVec2 (0 , 0 ), ImVec2 (1 , 1 ),
424461 col,
425462 ImVec4 (0.0 , 0.0 , 0.0 , 0.0 )
@@ -429,10 +466,6 @@ void show_controller_slot(iris::instance* iris, int slot) {
429466
430467 BeginDisabled (!iris->ds [slot]);
431468
432- PushFont (iris->font_heading );
433- Text (" Slot %d" , slot+1 );
434- PopFont ();
435-
436469 Text (" Input device" );
437470
438471 std::string name = " None" ;
@@ -447,6 +480,8 @@ void show_controller_slot(iris::instance* iris, int slot) {
447480 name = SDL_GetGamepadNameForID (gp->get_id ());
448481 }
449482
483+ SetNextItemWidth (avail_width);
484+
450485 if (BeginCombo (" ##devicetype" , name.c_str ())) {
451486 if (Selectable (" Keyboard" )) {
452487 if (iris->input_devices [slot]) {
@@ -456,6 +491,7 @@ void show_controller_slot(iris::instance* iris, int slot) {
456491 }
457492
458493 iris->input_devices [slot] = new keyboard_device ();
494+ iris->input_devices [slot]->set_slot (slot);
459495 }
460496
461497 for (auto gamepad : iris->gamepads ) {
@@ -467,6 +503,7 @@ void show_controller_slot(iris::instance* iris, int slot) {
467503 }
468504
469505 iris->input_devices [slot] = new gamepad_device (gamepad.first );
506+ iris->input_devices [slot]->set_slot (slot);
470507 }
471508 }
472509
@@ -1174,8 +1211,8 @@ void show_settings(iris::instance* iris) {
11741211 ImGuiWindowFlags_NoCollapse |
11751212 ImGuiWindowFlags_NoDocking;
11761213
1177- SetNextWindowSize (ImVec2 (650 , 560 ), ImGuiCond_FirstUseEver);
1178- PushStyleVar (ImGuiStyleVar_WindowMinSize, ImVec2 (650 , 560 ));
1214+ SetNextWindowSize (ImVec2 (675 , 560 ), ImGuiCond_FirstUseEver);
1215+ PushStyleVar (ImGuiStyleVar_WindowMinSize, ImVec2 (675 , 560 ));
11791216
11801217 if (GetIO ().ConfigFlags & ImGuiConfigFlags_ViewportsEnable && !GetIO ().ConfigViewportsNoDecoration )
11811218 flags |= ImGuiWindowFlags_NoTitleBar;
0 commit comments