static VALUE rbclt_model_remove (VALUE self, VALUE row) { ClutterModel *model = CLUTTER_MODEL (RVAL2GOBJ (self)); clutter_model_remove (model, NUM2UINT (row)); return self; }
static void _update_clicked (MxButton *button, ObjectStoreTest *app) { char const *input; input = mx_entry_get_text (app->entry); if (input == NULL || input[0] == '\0') { g_warning ("Please enter text"); return; } else if (input[0] == '-') { /* Remove item */ int index = g_ascii_isdigit (input[1]) ? atoi (&input[1]) : -1; if (index < 0) { g_warning ("Invalid number, can not remove"); return; } clutter_model_remove (app->store, index); } else if (g_ascii_isdigit (input[0])) { /* Update item */ unsigned index = atoi (input); char **tokens = g_strsplit (input, ":", 2); char const *text = tokens[1]; FooTestObject *object = store_get_object (app->store, index); if (object == NULL) { g_warning ("Failed to find object"); return; } foo_test_object_set_text (FOO_TEST_OBJECT (object), text); g_object_unref (object); } else { /* Add item */ store_add_object (app->store, input); } mx_entry_set_text (app->entry, ""); }
/* Clear all data in model and also release all allocated resources needed for this model */ static void _xfdashboard_applications_menu_model_clear(XfdashboardApplicationsMenuModel *self) { XfdashboardApplicationsMenuModelPrivate *priv; ClutterModelIter *iterator; GarconMenuElement *menuElement; g_return_if_fail(XFDASHBOARD_IS_APPLICATIONS_MENU_MODEL(self)); priv=self->priv; /* Unset filter (forces all rows being accessible and not being skipped/filtered) */ clutter_model_set_filter(CLUTTER_MODEL(self), NULL, NULL, NULL); /* Clean up and remove all rows */ while(clutter_model_get_n_rows(CLUTTER_MODEL(self))) { /* Get data from model for clean up */ menuElement=NULL; iterator=clutter_model_get_iter_at_row(CLUTTER_MODEL(self), 0); clutter_model_iter_get(iterator, XFDASHBOARD_APPLICATIONS_MENU_MODEL_COLUMN_MENU_ELEMENT, &menuElement, -1); /* Remove signal handler from menu element */ if(menuElement) { g_signal_handlers_disconnect_by_func(menuElement, G_CALLBACK(_xfdashboard_applications_menu_model_on_reload_required), self); } /* Remove row */ clutter_model_remove(CLUTTER_MODEL(self), 0); /* Release iterator */ if(menuElement) g_object_unref(menuElement); g_object_unref(iterator); } /* Destroy root menu */ if(priv->rootMenu) { g_object_unref(priv->rootMenu); priv->rootMenu=NULL; } }
static void mtn_service_model_update (MtnServiceModel *model, GVariant *services) { ClutterModelIter *model_iter; GVariantIter *iter; char *path; guint index; if (services) { index = 0; g_variant_get (services, "ao", &iter); while (g_variant_iter_next (iter, "&o", &path)) { mtn_service_model_add_or_update (model, path, index); index++; } } /* remove the rows that were not present in the Services list */ index = 0; while ((model_iter = clutter_model_get_iter_at_row (CLUTTER_MODEL (model), index))) { gboolean present, hidden; clutter_model_iter_get (model_iter, MTN_SERVICE_MODEL_COL_PRESENT, &present, MTN_SERVICE_MODEL_COL_HIDDEN, &hidden, -1); if (present) { /* initialize to present=FALSE for next _services_changed() call */ if (!hidden) { clutter_model_iter_set (model_iter, MTN_SERVICE_MODEL_COL_PRESENT, FALSE, -1); } index++; } else { clutter_model_remove (CLUTTER_MODEL (model), index); } g_object_unref (model_iter); } }
static void filter_model (ClutterModel *model) { ClutterModelIter *iter; g_print ("\n* Filter function: even rows\n"); clutter_model_set_filter (model, filter_func, NULL, NULL); iter = clutter_model_get_first_iter (model); while (!clutter_model_iter_is_last (iter)) { print_iter (iter, "Filtered Forward Iteration"); iter = clutter_model_iter_next (iter); } g_object_unref (iter); g_print ("\n* Sorting function: reverse alpha\n"); clutter_model_set_sort (model, COLUMN_BAR, sort_func, NULL, NULL); g_signal_connect (model, "row-changed", G_CALLBACK (on_row_changed), NULL); iter = clutter_model_get_iter_at_row (model, 0); clutter_model_iter_set (iter, COLUMN_BAR, "Changed string of 0th row, " "automatically gets sorted", -1); g_object_unref (iter); clutter_model_foreach (model, foreach_func, NULL); g_print ("\n* Unset filter\n"); clutter_model_set_filter (model, NULL, NULL, NULL); while (clutter_model_get_n_rows (model)) clutter_model_remove (model, 0); clutter_main_quit (); }