示例#1
0
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);
        }
}
示例#2
0
文件: dsn-config.c 项目: GNOME/libgda
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);
}
示例#3
0
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;
}
示例#4
0
void build_menu_from_ht_cb (gpointer key,gpointer user_data)
{
  t_ppair *t = user_data;
  new_menu_item (key, t->a, t->b);
}
示例#5
0
文件: menu.c 项目: pepone42/gngb
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);

}
示例#6
0
文件: forms.c 项目: rkd77/elinks-tv
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);
}