コード例 #1
0
ファイル: menu.c プロジェクト: MotoHoss/mate-panel
static GtkWidget *
populate_menu_from_directory (GtkWidget          *menu,
			      MateMenuTreeDirectory *directory)
{
	GList    *children;
	GSList   *l;
	GSList   *items;
	gboolean  add_separator;

	children = gtk_container_get_children (GTK_CONTAINER (menu));
	add_separator = (children != NULL);
	g_list_free (children);

	items = matemenu_tree_directory_get_contents (directory);

	for (l = items; l; l = l->next) {
		MateMenuTreeItem *item = l->data;

		if (add_separator ||
		    matemenu_tree_item_get_type (item) == MATEMENU_TREE_ITEM_SEPARATOR) {
			add_menu_separator (menu);
			add_separator = FALSE;
		}

		switch (matemenu_tree_item_get_type (item)) {
		case MATEMENU_TREE_ITEM_DIRECTORY:
			create_submenu (menu, MATEMENU_TREE_DIRECTORY (item), NULL);
			break;

		case MATEMENU_TREE_ITEM_ENTRY:
			create_menuitem (menu, MATEMENU_TREE_ENTRY (item), NULL);
			break;

		case MATEMENU_TREE_ITEM_SEPARATOR :
			/* already added */
			break;

		case MATEMENU_TREE_ITEM_ALIAS:
			create_menuitem_from_alias (menu, MATEMENU_TREE_ALIAS (item));
			break;

		case MATEMENU_TREE_ITEM_HEADER:
			create_header (menu, MATEMENU_TREE_HEADER (item));
			break;

		default:
			break;
		}

		matemenu_tree_item_unref (item);
	}

	g_slist_free (items);

	return menu;
}
コード例 #2
0
ファイル: menu.c プロジェクト: sunnynarayan/gnome-panel
static GtkWidget *
populate_menu_from_directory (GtkWidget          *menu,
			      GMenuTreeDirectory *directory)
{	
	GList    *children;
	gboolean  add_separator;
	GMenuTreeIter *iter;
	GMenuTreeItemType next_type;

	children = gtk_container_get_children (GTK_CONTAINER (menu));
	add_separator = (children != NULL);
	g_list_free (children);

	iter = gmenu_tree_directory_iter (directory);

	while ((next_type = gmenu_tree_iter_next (iter)) != GMENU_TREE_ITEM_INVALID) {
		gpointer item = NULL;

		if (add_separator ||
		    next_type == GMENU_TREE_ITEM_SEPARATOR) {
			add_menu_separator (menu);
			add_separator = FALSE;
		}

		switch (next_type) {
		case GMENU_TREE_ITEM_DIRECTORY:
			item = gmenu_tree_iter_get_directory (iter);
			create_submenu (menu, item, NULL);
			break;

		case GMENU_TREE_ITEM_ENTRY:
			item = gmenu_tree_iter_get_entry (iter);
			create_menuitem (menu, item, NULL);
			break;

		case GMENU_TREE_ITEM_SEPARATOR :
			/* already added */
			break;

		case GMENU_TREE_ITEM_ALIAS:
			item = gmenu_tree_iter_get_alias (iter);
			create_menuitem_from_alias (menu, item);
			break;

		case GMENU_TREE_ITEM_HEADER:
			item = gmenu_tree_iter_get_header (iter);
			create_header (menu, item);
			break;

		default:
			break;
		}

		if (item)
			gmenu_tree_item_unref (item);
	}

	gmenu_tree_iter_unref (iter);

	return menu;
}