示例#1
0
static VALUE
rbclt_model_remove (VALUE self, VALUE row)
{
    ClutterModel *model = CLUTTER_MODEL (RVAL2GOBJ (self));

    clutter_model_remove (model, NUM2UINT (row));

    return self;
}
示例#2
0
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;
	}
}
示例#4
0
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);
    }
}
示例#5
0
文件: test-model.c 项目: rib/clutter
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 ();
}