static void panel_addto_populate_application_model (GtkTreeStore *store, GtkTreeIter *parent, GSList *app_list) { PanelAddtoAppList *data; GtkTreeIter iter; char *text; GSList *app; for (app = app_list; app != NULL; app = app->next) { data = app->data; gtk_tree_store_append (store, &iter, parent); text = panel_addto_make_text (data->item_info.name, data->item_info.description); gtk_tree_store_set (store, &iter, COLUMN_ICON_NAME, data->item_info.icon, COLUMN_TEXT, text, COLUMN_DATA, &(data->item_info), COLUMN_SEARCH, data->item_info.name, -1); g_free (text); if (data->children != NULL) panel_addto_populate_application_model (store, &iter, data->children); } }
static void panel_addto_make_application_model(PanelAddtoDialog* dialog) { GtkTreeStore* store; MateMenuTree* tree; MateMenuTreeDirectory* root; if (dialog->filter_application_model != NULL) return; store = gtk_tree_store_new(NUMBER_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_STRING); tree = matemenu_tree_lookup("mate-applications.menu", MATEMENU_TREE_FLAGS_NONE); matemenu_tree_set_sort_key(tree, MATEMENU_TREE_SORT_DISPLAY_NAME); if ((root = matemenu_tree_get_root_directory (tree))) { panel_addto_make_application_list(&dialog->application_list, root, "mate-applications.menu"); panel_addto_populate_application_model(store, NULL, dialog->application_list); matemenu_tree_item_unref(root); } matemenu_tree_unref(tree); tree = matemenu_tree_lookup("mate-settings.menu", MATEMENU_TREE_FLAGS_NONE); matemenu_tree_set_sort_key(tree, MATEMENU_TREE_SORT_DISPLAY_NAME); if ((root = matemenu_tree_get_root_directory(tree))) { GtkTreeIter iter; gtk_tree_store_append(store, &iter, NULL); gtk_tree_store_set(store, &iter, COLUMN_ICON, NULL, COLUMN_TEXT, NULL, COLUMN_DATA, NULL, COLUMN_SEARCH, NULL, -1); panel_addto_make_application_list(&dialog->settings_list, root, "mate-settings.menu"); panel_addto_populate_application_model(store, NULL, dialog->settings_list); matemenu_tree_item_unref(root); } matemenu_tree_unref(tree); dialog->application_model = GTK_TREE_MODEL(store); dialog->filter_application_model = gtk_tree_model_filter_new(GTK_TREE_MODEL(dialog->application_model), NULL); gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(dialog->filter_application_model), panel_addto_filter_func, dialog, NULL); }