void build_menu_from_glist (GList *list, gpointer menu, gpointer callback) { if (! list) return; GList *p = g_list_first (list); while (p) { if (strlen (p->data) >= 1) mni_temp = new_menu_item (p->data, menu, callback); p = g_list_next (p); } }
static void list_popup_cb (GdauiRawGrid *grid, GtkMenu *menu, gpointer user_data) { GtkWidget *item_delete; gboolean ok; GArray *selection; item_delete = new_menu_item (_("_Delete"), G_CALLBACK (list_popup_delete_cb), user_data); selection = gdaui_data_selector_get_selected_rows (GDAUI_DATA_SELECTOR (grid)); ok = (selection != NULL); if (selection) g_array_free (selection, TRUE); gtk_widget_set_sensitive (item_delete, ok); gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), gtk_separator_menu_item_new ()); gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item_delete); }
static GtkWidget * CreateMenuBar(void) { GtkWidget *menubar; GtkWidget *game_item, *game_menu; GtkWidget *info_item, *info_menu; GtkWidget *tearoff; menubar = gtk_menu_bar_new(); game_item = gtk_menu_item_new_with_label("Game"); game_menu = gtk_menu_new(); tearoff = gtk_tearoff_menu_item_new(); gtk_menu_append(GTK_MENU(game_menu), tearoff); new_menu_item(game_menu, DIALOG_NEWGAME); pausebutton = new_menu_item(game_menu, DIALOG_PAUSEGAME); new_menu_item(game_menu, DIALOG_WARPLEVEL); new_menu_item(game_menu, DIALOG_HIGHSCORE); new_menu_item(game_menu, DIALOG_QUITGAME); gtk_menu_bar_append(GTK_MENU_BAR(menubar), game_item); gtk_menu_item_set_submenu(GTK_MENU_ITEM(game_item), game_menu); info_item = gtk_menu_item_new_with_label("Info"); info_menu = gtk_menu_new(); tearoff = gtk_tearoff_menu_item_new(); gtk_menu_append(GTK_MENU(info_menu), tearoff); new_menu_item(info_menu, DIALOG_STORY); new_menu_item(info_menu, DIALOG_RULES); new_menu_item(info_menu, DIALOG_ABOUT); gtk_menu_bar_append(GTK_MENU_BAR(menubar), info_item); gtk_menu_item_set_submenu(GTK_MENU_ITEM(info_item), info_menu); return menubar; }
void build_menu_from_ht_cb (gpointer key,gpointer user_data) { t_ppair *t = user_data; new_menu_item (key, t->a, t->b); }
void init_menu(void){ int i=0; MENU_ITEM *item; char tmpbuf[255]; /* init all the icon */ arrow_down=img2surface(img_arrow_down); arrow_up=img2surface(img_arrow_up); radio_on=img2surface(img_radio_on); radio_off=img2surface(img_radio_off); toggle_on=img2surface(img_toggle_on); toggle_off=img2surface(img_toggle_off); SDL_SetColors(arrow_down,buttonpal,0,5); SDL_SetColors(arrow_up,buttonpal,0,5); SDL_SetColors(radio_off,buttonpal,0,5); SDL_SetColors(radio_on,buttonpal,0,5); SDL_SetColors(toggle_off,buttonpal,0,5); SDL_SetColors(toggle_on,buttonpal,0,5); SDL_SetColorKey(radio_off,SDL_SRCCOLORKEY|SDL_RLEACCEL,5); SDL_SetColorKey(radio_on,SDL_SRCCOLORKEY|SDL_RLEACCEL,5); /* Main Menu creation */ /* load state */ item=new_menu_item("Load state ...",ACTION); item->user_data=(void*)&load_state_menu; item->func=action_loop_menu; menu_push_back_item(&main_menu,item); /*save state */ item=new_menu_item("Save state ...",ACTION); item->user_data=(void*)&save_state_menu; item->func=action_loop_menu; menu_push_back_item(&main_menu,item); /*video */ item=new_menu_item("Video ...",ACTION); item->user_data=(void*)&video_menu; item->func=action_loop_menu; menu_push_back_item(&main_menu,item); /*Framskip&co */ item=new_menu_item("Framskip ...",ACTION); item->user_data=(void*)&fskip_menu; item->func=action_loop_menu; menu_push_back_item(&main_menu,item); item=new_menu_item("Sound",TOGGLE); item->state=conf.sound; item->func=toggle_sound; menu_push_back_item(&main_menu,item); item=new_menu_item("Reset",ACTION); item->func=action_reset; menu_push_back_item(&main_menu,item); /* Load state */ for (i=0;i<8;i++) { snprintf(tmpbuf,254,"Slot %d",i+1); item=new_menu_item(tmpbuf,ACTION); item->func=action_load_state; item->draw_info=menu_draw_state; item->draw_type=DRAW_WHEN_ACTIVE; item->user_data=(void*)i; menu_push_back_item(&load_state_menu,item); } /* Save state */ for (i=0;i<8;i++) { snprintf(tmpbuf,254,"Slot %d",i+1); item=new_menu_item(tmpbuf,ACTION); item->func=action_save_state; item->draw_info=menu_draw_state; item->draw_type=DRAW_WHEN_ACTIVE; item->user_data=(void*)i; menu_push_back_item(&save_state_menu,item); } /* Filter Menu */ item=new_menu_item("None",RADIO); item->group=1; item->radio=0; item->user_data=(void*)0; item->func=action_set_filter; item->draw_type=DRAW_ALWAYS; menu_push_back_item(&filter_menu,item); for (i=1;i<=5;i++) { snprintf(tmpbuf,254,"Filter %d",i); item=new_menu_item(tmpbuf,RADIO); item->group=1; item->radio=i; item->user_data=(void*)i; item->func=action_set_filter; item->draw_type=DRAW_ALWAYS; menu_push_back_item(&filter_menu,item); } /* video menu */ item=new_menu_item("Fullscreen",TOGGLE); item->state=conf.fs; item->func=toggle_fullscreen; menu_push_back_item(&video_menu,item); if (conf.gb_type&COLOR_GAMEBOY) { item=new_menu_item("Color filter",TOGGLE); item->state=conf.color_filter; item->func=toggle_filter; menu_push_back_item(&video_menu,item); } else if (conf.gb_type&NORMAL_GAMEBOY) { for (i=0;i<5;i++) { snprintf(tmpbuf,254,"Palette %d",i+1); item=new_menu_item(tmpbuf,RADIO); item->group=0; item->radio=i; item->user_data=(void*)i; item->func=action_setpal; item->draw_type=DRAW_ALWAYS; item->draw_info=menu_draw_pal; menu_push_back_item(&video_menu,item); } } item=new_menu_item("Filter ...",ACTION); item->user_data=(void*)&filter_menu; item->func=action_loop_menu; menu_push_back_item(&video_menu,item); /* frameskip menu */ item=new_menu_item("Auto frameskip",TOGGLE); item->state=conf.autoframeskip; item->func=toggle_autofskip; menu_push_back_item(&fskip_menu,item); item=new_menu_item("Sleep idle",TOGGLE); item->state=conf.sleep_idle; item->func=toggle_sleepidle; menu_push_back_item(&fskip_menu,item); item=new_menu_item("Show FPS",TOGGLE); item->state=conf.show_fps; item->func=toggle_fps; menu_push_back_item(&fskip_menu,item); }
static void do_html_select(unsigned char *attr, unsigned char *html, unsigned char *eof, unsigned char **end, struct html_context *html_context) { struct conv_table *ct = (struct conv_table *)html_context->special_f(html_context, SP_TABLE, NULL); struct form_control *fc; struct string lbl = NULL_STRING, orig_lbl = NULL_STRING; unsigned char **values = NULL; unsigned char **labels; unsigned char *name, *t_attr, *en; int namelen; int nnmi = 0; int order = 0; int preselect = -1; int group = 0; int i, max_width; int closing_tag; html_focusable(html_context, attr); init_menu(&lnk_menu); se: en = html; see: html = en; while (html < eof && *html != '<') html++; if (html >= eof) { abort: *end = html; if (lbl.source) done_string(&lbl); if (orig_lbl.source) done_string(&orig_lbl); if (values) { int j; for (j = 0; j < order; j++) mem_free_if(values[j]); mem_free(values); } destroy_menu(&lnk_menu); *end = en; return; } if (lbl.source) { unsigned char *q, *s = en; int l = html - en; while (l && isspace(s[0])) s++, l--; while (l && isspace(s[l-1])) l--; q = convert_string(ct, s, l, html_context->options->cp, CSM_DEFAULT, NULL, NULL, NULL); if (q) add_to_string(&lbl, q), mem_free(q); add_bytes_to_string(&orig_lbl, s, l); } if (html + 2 <= eof && (html[1] == '!' || html[1] == '?')) { html = skip_comment(html, eof); goto se; } if (parse_element(html, eof, &name, &namelen, &t_attr, &en)) { html++; goto se; } if (!namelen) goto see; if (name[0] == '/') { namelen--; if (!namelen) goto see; name++; closing_tag = 1; } else { closing_tag = 0; } if (closing_tag && !c_strlcasecmp(name, namelen, (const unsigned char *)"SELECT", 6)) { add_select_item(&lnk_menu, &lbl, &orig_lbl, values, order, nnmi); goto end_parse; } if (!c_strlcasecmp(name, namelen, (const unsigned char *)"OPTION", 6)) { add_select_item(&lnk_menu, &lbl, &orig_lbl, values, order, nnmi); if (!closing_tag) { unsigned char *value, *label; if (has_attr(t_attr, (unsigned char *)"disabled", html_context->doc_cp)) goto see; if (preselect == -1 && has_attr(t_attr, (unsigned char *)"selected", html_context->doc_cp)) preselect = order; value = get_attr_val(t_attr, (unsigned char *)"value", html_context->doc_cp); if (!mem_align_alloc(&values, order, order + 1, 0xFF)) goto abort; values[order++] = value; label = get_attr_val(t_attr, (unsigned char *)"label", html_context->doc_cp); if (label) new_menu_item(&lnk_menu, label, order - 1, 0); if (!value || !label) { init_string(&lbl); init_string(&orig_lbl); nnmi = !!label; } } goto see; } if (!c_strlcasecmp(name, namelen, (const unsigned char *)"OPTGROUP", 8)) { add_select_item(&lnk_menu, &lbl, &orig_lbl, values, order, nnmi); if (group) new_menu_item(&lnk_menu, NULL, -1, 0), group = 0; if (!closing_tag) { unsigned char *label; label = get_attr_val(t_attr, (unsigned char *)"label", html_context->doc_cp); if (!label) { label = stracpy((const unsigned char *)""); if (!label) goto see; } new_menu_item(&lnk_menu, label, -1, 0); group = 1; } } goto see; end_parse: *end = en; if (!order) goto abort; labels = (unsigned char **)mem_calloc(order, sizeof(unsigned char *)); if (!labels) goto abort; fc = init_form_control(FC_SELECT, attr, html_context); if (!fc) { mem_free(labels); goto abort; } fc->id = get_attr_val(attr, (unsigned char *)"id", html_context->doc_cp); fc->name = get_attr_val(attr, (unsigned char *)"name", html_context->doc_cp); fc->default_state = preselect < 0 ? 0 : preselect; fc->default_value = order ? stracpy(values[fc->default_state]) : stracpy((const unsigned char *)""); fc->nvalues = order; fc->values = values; fc->menu = detach_menu(&lnk_menu); fc->labels = labels; menu_labels(fc->menu, (unsigned char *)"", labels); put_chrs(html_context, (unsigned char *)"[", 1); html_stack_dup(html_context, ELEMENT_KILLABLE); format.form = fc; format.style.attr |= AT_BOLD; max_width = 0; for (i = 0; i < order; i++) { if (!labels[i]) continue; #ifdef CONFIG_UTF8 if (html_context->options->utf8) int_lower_bound(&max_width, utf8_ptr2cells(labels[i], NULL)); else #endif /* CONFIG_UTF8 */ int_lower_bound(&max_width, strlen((const char *)labels[i])); } for (i = 0; i < max_width; i++) put_chrs(html_context, (unsigned char *)"_", 1); pop_html_element(html_context); put_chrs(html_context, (unsigned char *)"]", 1); html_context->special_f(html_context, SP_CONTROL, fc); }