void enkf_tui_ranking_menu(void * arg) { enkf_main_type * enkf_main = enkf_main_safe_cast( arg ); { menu_type * menu = menu_alloc("Ranking of results" , "Back" , "bB"); menu_item_type * obs_item; { arg_pack_type * arg_pack = arg_pack_alloc(); arg_pack_append_ptr( arg_pack , enkf_main ); menu_add_item(menu , "Create/update misfit table" , "cC" , enkf_tui_ranking_make_misfit_ensemble , arg_pack , arg_pack_free__); menu_add_separator( menu ); obs_item = menu_add_item(menu , "New observation based ranking" , "nN" , enkf_tui_ranking_create_obs , enkf_main , NULL); arg_pack_append_ptr( arg_pack , obs_item ); } menu_add_item(menu , "New data based ranking (Sort: increasing)" , "iI" , enkf_tui_ranking_create_data_increasing , enkf_main , NULL); menu_add_item(menu , "New data based ranking (Sort: decreasing)" , "dD" , enkf_tui_ranking_create_data_decreasing , enkf_main , NULL); menu_add_item(menu , "Show ranking" , "sS" , enkf_tui_ranking_display , enkf_main , NULL); { enkf_fs_type * fs = enkf_main_get_fs( enkf_main ); misfit_ensemble_type * misfit_ensemble = enkf_fs_get_misfit_ensemble( fs ); if (!misfit_ensemble_initialized( misfit_ensemble )) menu_item_disable( obs_item ); } menu_add_item(menu , "Help" , "hH" , enkf_tui_help_menu_rank , enkf_main , NULL); menu_run(menu); menu_free(menu); } }
void enkf_tui_simple_menu(void * arg) { enkf_main_type * enkf_main = enkf_main_safe_cast(arg); menu_type * menu = menu_alloc("Simple menu" , "Quit" , "qQ"); menu_add_item(menu , "Sensitivity run: No data conditioning" , "sS" , enkf_tui_run_exp , enkf_main , NULL); const model_config_type * model_config = enkf_main_get_model_config( enkf_main ); menu_item_type * ES_item = menu_add_item(menu , "Assimilation run: Smoother update" , "aA" , enkf_tui_run_smoother , enkf_main , NULL); menu_item_type * it_ES_item = menu_add_item(menu , "Assimilation run: Iterated smoother [RML-EnKF]" , "iI" , enkf_tui_run_iterated_ES , enkf_main , NULL); if (!model_config_has_history( model_config )) { menu_item_disable( it_ES_item ); menu_item_disable( ES_item ); } menu_add_separator( menu ); menu_add_item(menu , "Help" , "hH" , enkf_tui_help_menu_simple , enkf_main , NULL); menu_add_item(menu , "Advanced menu" , "dD" , enkf_tui_main_menu , enkf_main , NULL); menu_run(menu); menu_free(menu); }
static void anchor_member(struct member_data *member_data) { if (member_data->anchored) return; member_data->anchored = 1; menu_item_disable(member_data->positioning); struct menu_item *watch = menu_userwatch_watch(member_data->userwatch); watch->x = 13; watch->y = 0; watch->pxoffset = 0; watch->pyoffset = 0; menu_item_transfer(watch, member_data->userwatch->imenu); }
static void watchfile_view(struct menu *menu) { /* initialize menus */ watchfile_menu_init(); watchfile_scroll = 0; /* configure menus */ for (int i = 0; i < WATCHFILE_VIEW_ROWS; ++i) { if (i < watchfile_entries.size) menu_item_enable(watchfile_items[i]); else menu_item_disable(watchfile_items[i]); } if (watchfile_entries.size > 0) menu_select(&watchfile_menu, watchfile_items[0]); else menu_select(&watchfile_menu, watchfile_return); menu_enter(menu, &watchfile_menu); }
static int add_member(struct item_data *data, uint32_t address, enum watch_type type, int position, _Bool anchored, int x, int y, _Bool position_set) { if (data->members.size >= SETTINGS_WATCHES_MAX || position < 0 || position > data->members.size) return 0; ++data->add_button->y; #ifndef WIIVC ++data->import_button->y; #endif for (int i = position; i < data->members.size; ++i) { struct member_data *member_data = get_member(data, i); ++member_data->index; ++member_data->member->y; } struct menu *imenu; struct member_data *member_data = malloc(sizeof(*member_data)); member_data->data = data; member_data->index = position; member_data->member = menu_add_imenu(data->imenu, 0, position, &imenu); member_data->anchor_button = menu_item_add(imenu, 2, 0, NULL, 0xFFFFFF); member_data->anchor_button->enter_proc = anchor_button_enter_proc; member_data->anchor_button->draw_proc = anchor_button_draw_proc; member_data->anchor_button->activate_proc = anchor_button_activate_proc; member_data->anchor_button->data = member_data; member_data->positioning = menu_add_positioning(imenu, 4, 0, position_proc, member_data); member_data->userwatch = menu_add_userwatch(imenu, 6, 0, address, type); member_data->anchored = 1; member_data->anchor_anim_state = 0; member_data->x = x; member_data->y = y; member_data->position_set = 1; menu_add_button_icon(imenu, 0, 0, list_icons, 1, 0xFF0000, remove_button_proc, member_data); if (anchored) menu_item_disable(member_data->positioning); else release_member(member_data); member_data->position_set = position_set; vector_insert(&data->members, position, 1, &member_data); return 1; }
void enkf_tui_run_menu(void * arg) { enkf_main_type * enkf_main = enkf_main_safe_cast( arg ); model_config_type * model_config = enkf_main_get_model_config( enkf_main ); path_fmt_type * runpath_fmt = model_config_get_runpath_fmt( model_config ); menu_type * menu; { char * title = util_alloc_sprintf("Run menu [case:%s Runpath:%s]" , enkf_main_get_current_fs( enkf_main ) , path_fmt_get_fmt ( runpath_fmt )); menu = menu_alloc(title , "Back" , "bB"); free(title); } menu_add_item(menu , "Ensemble run: history" , "xX" , enkf_tui_run_exp , enkf_main , NULL); menu_add_separator( menu ); { const ecl_config_type * ecl_config = enkf_main_get_ecl_config( enkf_main ); const model_config_type * model_config = enkf_main_get_model_config( enkf_main ); const analysis_config_type * analysis_config = enkf_main_get_analysis_config(enkf_main); menu_item_type * enkf_item = menu_add_item(menu , "Start EnKF run from beginning" , "sS" , enkf_tui_run_start , enkf_main , NULL); menu_item_type * restart_enkf_item = menu_add_item(menu , "Restart EnKF run from arbitrary state" , "rR" , enkf_tui_run_restart__ , enkf_main , NULL); menu_item_type * ES_item = menu_add_item(menu , "Integrated smoother update" , "iI" , enkf_tui_run_smoother , enkf_main , NULL); menu_item_type * it_ES_item = menu_add_item(menu , "Iterated smoother [RML-EnKF]" , "tT" , enkf_tui_run_iterated_ES , enkf_main , NULL); menu_item_type * one_more_item = menu_add_item(menu , "One more iteration (disabled)" , "mM" , enkf_tui_run_one_more_iteration , enkf_main , NULL); if (!ecl_config_has_schedule( ecl_config )) { menu_item_disable( enkf_item ); menu_item_disable( restart_enkf_item ); } if (!ecl_config_has_init_section( ecl_config )) menu_item_disable( enkf_item ); menu_item_disable( one_more_item ); if (!analysis_config_get_module_option(analysis_config , ANALYSIS_ITERABLE)) { menu_item_disable( it_ES_item ); menu_item_disable( one_more_item ); } else { menu_item_disable( enkf_item ); menu_item_disable( restart_enkf_item ); menu_item_disable( ES_item ); } if (!model_config_has_history( model_config )) { menu_item_disable( it_ES_item ); menu_item_disable( ES_item ); menu_item_disable( one_more_item ); } } menu_add_separator(menu); menu_add_item(menu , "Create runpath directories - NO simulation" , "cC" , enkf_tui_run_create_runpath__ , enkf_main , NULL ); menu_add_item(menu , "Load results manually" , "lL" , enkf_tui_run_manual_load__ , enkf_main , NULL); menu_add_separator(menu); { menu_item_type * analysis_item = menu_add_item(menu , "Analysis menu" , "aA" , enkf_tui_analysis_menu , enkf_main , NULL); if (!enkf_main_have_obs( enkf_main )) menu_item_disable( analysis_item ); } /* Option to set runpath runtime - currently dismantled. menu_add_separator(menu); { model_config_type * model_config = enkf_main_get_model_config( enkf_main ); path_fmt_type * runpath_fmt = model_config_get_runpath_fmt( model_config ); arg_pack_type * arg_pack = arg_pack_alloc(); char * runpath_label = util_alloc_sprintf("Set new value for RUNPATH:%s" , path_fmt_get_fmt ( runpath_fmt )); arg_pack_append_ptr(arg_pack , model_config); arg_pack_append_ptr(arg_pack , menu_add_item(menu , runpath_label , "dD" , enkf_tui_run_set_runpath , arg_pack , arg_pack_free__)); free(runpath_label); } */ menu_add_item(menu , "Help" , "hH" , enkf_tui_help_menu_run , enkf_main , NULL); menu_run(menu); menu_free(menu); }