HRESULT CRetroArchFileBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandled ) { char path[MAX_PATH_LENGTH]; if(hObjPressed == m_romlist) { int index = m_romlist.GetCurSel(); if(browser.cur[index].d_type != FILE_ATTRIBUTE_DIRECTORY) { struct retro_system_info info; retro_get_system_info(&info); bool block_zip_extract = info.block_extract; memset(strbuffer, 0, sizeof(strbuffer)); wcstombs(strbuffer, (const wchar_t *)m_romlist.GetText(index), sizeof(strbuffer)); if((strstr(strbuffer, ".zip") || strstr(strbuffer, ".ZIP")) && !block_zip_extract) { char path_tmp[1024]; sprintf(path_tmp, "%s\\%s", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(browser), strbuffer); rarch_extract_zipfile(path_tmp); } else { memset(g_console.rom_path, 0, sizeof(g_console.rom_path)); sprintf(g_console.rom_path, "%s\\%s", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(browser), strbuffer); return_to_game(); g_console.initialize_rarch_enable = 1; } } else if(browser.cur[index].d_type == FILE_ATTRIBUTE_DIRECTORY) { memset(strbuffer, 0, sizeof(strbuffer)); wcstombs(strbuffer, (const wchar_t *)m_romlist.GetText(index), sizeof(strbuffer)); snprintf(path, sizeof(path), "%s\\%s", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(browser), strbuffer); filebrowser_fetch_directory_entries(path, &browser, &m_romlist, &m_rompathtitle); } } else if (hObjPressed == m_dir_game) { filebrowser_new(&browser, g_console.default_rom_startup_dir, rarch_console_get_rom_ext()); filebrowser_fetch_directory_entries(g_console.default_rom_startup_dir, &browser, &m_romlist, &m_rompathtitle); } else if (hObjPressed == m_dir_cache) { filebrowser_new(&browser, "cache:", rarch_console_get_rom_ext()); filebrowser_fetch_directory_entries("cache:", &browser, &m_romlist, &m_rompathtitle); } else if(hObjPressed == m_back) NavigateBack(app.hMainScene); bHandled = TRUE; return S_OK; }
void golgotha_app::receive_event(i4_event * ev) { switch (ev->type()) { case i4_event::DISPLAY_CHANGE: { CAST_PTR(dev, i4_display_change_event_class, ev); if (dev->change==i4_display_change_event_class::SIZE_CHANGE) { get_root_window()->resize(get_display()->width(),get_display()->height()); } } break; case i4_event::DO_COMMAND: { fo_sym.get(); g1_cwin_man->receive_event(ev); char * cmd=((i4_do_command_event_class *)ev)->command; li_symbol * s=li_get_symbol(cmd); if (li_get_fun(s,0)) { li_call(s); } g1_input.receive_event(ev); } break; case i4_event::END_COMMAND: { g1_cwin_man->receive_event(ev); char cmd[200]; sprintf(cmd, "-%s",((i4_do_command_event_class *)ev)->command); li_symbol * s=li_get_symbol(cmd); if (li_get_fun(s,0)) { li_call(cmd); } g1_input.receive_event(ev); } break; case i4_event::USER_MESSAGE: { CAST_PTR(uev,i4_user_message_event_class,ev); switch (uev->sub_type) { case G1_MAIN_MENU: do_main_menu(); break; case G1_NETWORK_MENU: network_menu(); break; case G1_SERVER_MENU: server_menu(); break; case G1_CLIENT_JOINED_MENU: client_wait_menu(); break; case G1_YOU_LOSE: help_screen("youlose_screen", G1_MAIN_MENU); break; case G1_YOU_WIN: { CAST_PTR(fptr,i4_file_open_message_class,uev); win_screen("youwin_screen", fptr->filename); } break; case G1_HELP_SCREEN: help_screen("help_screen", G1_RETURN_TO_GAME); break; case G1_START_HELP_SCREEN: help_screen("help_screen", G1_START_NEW_GAME); break; case G1_PLOT_SCREEN: plot_screen(); break; case G1_START_NEW_GAME: start_new_game(); break; case G1_RETURN_TO_GAME: return_to_game(); break; case G1_SAVEGAME_SAVE: save_savegame(); break; case G1_SAVEGAME_SAVE_OK: save_savegame_ok(uev); //Saving a savegame must not change //the map's filename. break; case G1_SAVEGAME_LOAD_OK: start_saved_game(uev); break; case G1_SAVEGAME_LOAD: open_savegame(); break; case G1_OPTIONS: do_options(); break; case G1_QUIT: quit(); break; case G1_ESCAPE: do_main_menu(); break; case G1_MAP_CHANGED: map_changed(); break; case G1_GET_ROOT_IMAGE: { CAST_PTR(get, g1_get_root_image_event, ev); get->result=display->get_screen(); } break; case G1_REDRAW_LATER: { redraw_later.waiting=i4_F; li_call("redraw_all"); } break; case G1_PLAY_MOVIE: if (g1_map_is_loaded()) { pre_play_save(); if (g1_get_map()->start_movie()) { playing_movie=i4_T; g1_resources.paused=i4_F; } } break; case G1_STOP_MOVIE: { if (playing_movie) { if (g1_map_is_loaded()) { g1_get_map()->stop_movie(); post_play_load(); } playing_movie=i4_F; if (g1_current_controller.get() && g1_current_controller->view.get_view_mode()==G1_CAMERA_MODE) { g1_current_controller->view.suggest_camera_mode(G1_ACTION_MODE); } } } break; case G1_GET_CURRENT_MOVIE: { if (g1_map_is_loaded()) { CAST_PTR(mev, g1_get_current_movie_event, ev); mev->mflow=g1_get_map()->current_movie; } } break; case G1_INTERLACE_PIXEL: { g1_cwin_man->destroy_views(); g1_resources.render_window_expand_mode = R1_COPY_1x1_SCANLINE_SKIP; g1_cwin_man->create_views(); } break; case G1_DOUBLE_PIXEL: { g1_cwin_man->destroy_views(); g1_resources.render_window_expand_mode = R1_COPY_2x2; g1_cwin_man->create_views(); } break; case G1_NORMAL_PIXEL: { g1_cwin_man->destroy_views(); g1_resources.render_window_expand_mode = R1_COPY_1x1; g1_cwin_man->create_views(); } break; } } break; default: i4_application_class::receive_event(ev); } }
HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) { int current_index; if ( hObjPressed == m_quickmenulist) { current_index = m_quickmenulist.GetCurSel(); switch(current_index) { case MENU_ITEM_LOAD_STATE: if (g_console.emulator_initialized) { rarch_load_state(); return_to_game(); } break; case MENU_ITEM_SAVE_STATE: if (g_console.emulator_initialized) { rarch_save_state(); return_to_game(); } break; case MENU_ITEM_HARDWARE_FILTERING: g_settings.video.smooth = !g_settings.video.smooth; m_quickmenulist.SetText(MENU_ITEM_HARDWARE_FILTERING, set_filter_element(g_settings.video.smooth)); break; case MENU_ITEM_KEEP_ASPECT_RATIO: { if(g_console.aspect_ratio_index < ASPECT_RATIO_END) g_console.aspect_ratio_index++; else g_console.aspect_ratio_index = 0; video_xdk360.set_aspect_ratio(NULL, g_console.aspect_ratio_index); char aspectratio_label[32]; sprintf(aspectratio_label, "Aspect Ratio: %s", aspectratio_lut[g_console.aspect_ratio_index].name); unsigned long dwNum = MultiByteToWideChar(CP_ACP, 0, aspectratio_label, -1, NULL, 0); wchar_t * aspectratio_label_w = new wchar_t[dwNum]; MultiByteToWideChar(CP_ACP, 0, aspectratio_label, -1, aspectratio_label_w, dwNum); m_quickmenulist.SetText(MENU_ITEM_KEEP_ASPECT_RATIO, aspectratio_label_w); delete[] aspectratio_label_w; } break; case MENU_ITEM_OVERSCAN_AMOUNT: break; case MENU_ITEM_ORIENTATION: switch(g_console.screen_orientation) { case ORIENTATION_NORMAL: g_console.screen_orientation = ORIENTATION_VERTICAL; m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Vertical"); break; case ORIENTATION_VERTICAL: g_console.screen_orientation = ORIENTATION_FLIPPED; m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Flipped"); break; case ORIENTATION_FLIPPED: g_console.screen_orientation = ORIENTATION_FLIPPED_ROTATED; m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Flipped Rotated"); break; case ORIENTATION_FLIPPED_ROTATED: g_console.screen_orientation = ORIENTATION_NORMAL; m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Normal"); break; } video_xdk360.set_rotation(NULL, g_console.screen_orientation); break; case MENU_ITEM_RESIZE_MODE: break; case MENU_ITEM_FRAME_ADVANCE: if (g_console.emulator_initialized) { g_console.frame_advance_enable = true; g_console.menu_enable = false; g_console.mode_switch = MODE_EMULATION; } break; case MENU_ITEM_SCREENSHOT_MODE: break; case MENU_ITEM_RESET: if (g_console.emulator_initialized) { return_to_game(); rarch_game_reset(); } break; case MENU_ITEM_RETURN_TO_GAME: if (g_console.emulator_initialized) return_to_game(); break; case MENU_ITEM_RETURN_TO_DASHBOARD: return_to_dashboard(); break; } } if ( hObjPressed == m_back ) NavigateBack(app.hMainScene); bHandled = TRUE; return S_OK; }