Пример #1
0
static char* create_menu(char* menu_file) {
	GtkWidget *menuitem;
	char init_file[PATH_MAX];
	char icon[PATH_MAX];
	char title[MAX_LINE_LENGTH];

	strcpy(init_file,fluxbox_init_file());
	strcpy(menu_file,fluxbox_menu_file(init_file,menu_file));
	g_print("Fluxbox init file: %s\n",init_file);
	g_print("Fluxbox menu file: %s\n",menu_file);

	menu[0] = gtk_menu_new();

	menu_title(menu_file,title);

	menuitem = gtk_menu_item_new_with_label(title==NULL? "Fluxbox menu" : title);
	gtk_menu_shell_append(GTK_MENU_SHELL(menu[0]), menuitem);
	gtk_menu_shell_append(GTK_MENU_SHELL(menu[0]), gtk_separator_menu_item_new());

	proc_lines(menu_file);

	gtk_menu_shell_append(GTK_MENU_SHELL(menu[0]), gtk_separator_menu_item_new());
	menuitem = gtk_menu_item_new_with_label("About");
	gtk_menu_shell_append(GTK_MENU_SHELL(menu[0]), menuitem);
	g_signal_connect(G_OBJECT(menuitem),"activate",G_CALLBACK(menu_about),0);
	
	menuitem = gtk_menu_item_new_with_label("Exit");
	gtk_menu_shell_append(GTK_MENU_SHELL(menu[0]), menuitem);
	g_signal_connect(G_OBJECT(menuitem),"activate",G_CALLBACK(gtk_main_quit),0);

	gtk_widget_show_all(menu[0]);
}
Пример #2
0
wimp_menu *menu_create(const char *title_token)
{
  const char *entry_token;
  char       *wildcarded_token;
  int         index;
  int         entries;
  wimp_menu  *menu_base;
  wimp_menu  *menu_ptr;

  /* construct a wildcarded version of the token for use when enumerating */

  wildcarded_token = malloc(strlen(title_token) + 3);
  if (wildcarded_token == NULL)
    goto oom;

  strcpy(wildcarded_token, title_token);
  strcat(wildcarded_token, ".*");

  /* enumerate tokens, working out the required memory */

  entries     = 0;
  index       = 0;
  entry_token = messages_enumerate(wildcarded_token, &index);
  while (entry_token)
  {
    entries++;
    entry_token = messages_enumerate(wildcarded_token, &index);
  };

  /* allocate space for the menu structure */

  menu_base = malloc(sizeof(wimp_menu) + sizeof(wimp_menu_entry) * (entries - 1));
  if (menu_base == NULL)
    goto oom;

  /* build menu */

  menu_ptr = menu_base;

  /* title */

  menu_title(&menu_ptr, title_token);

  /* enumerate tokens, adding menu entries */

  index = 0;
  entry_token = messages_enumerate(wildcarded_token, &index);
  while (entry_token)
  {
    menu_entry(&menu_ptr, entry_token);
    entry_token = messages_enumerate(wildcarded_token, &index);
  };

  /* terminate structure (set last entry's flags to finish) */

  menu_set_menu_flags(menu_base, entries - 1, wimp_MENU_LAST, wimp_MENU_LAST);

  free(wildcarded_token);

  return menu_base;


oom:

  error_fatal_oom();

  return NULL; /* never reached */
}