static VALUE rbclt_model_get_n_rows (VALUE self) { ClutterModel *model = CLUTTER_MODEL (RVAL2GOBJ (self)); return UINT2NUM (clutter_model_get_n_rows (model)); }
static gboolean start_search (MnpWorldClock *area) { MnpWorldClockPrivate *priv = GET_PRIVATE (area); priv->completion_timeout = 0; if (!priv->completion_inited) { priv->completion_inited = TRUE; construct_completion (area); } priv->search_text = mx_entry_get_text (priv->search_location); if (!priv->search_text || (strlen(priv->search_text) < 3)) clutter_actor_hide(priv->completion); if (priv->search_text && (strlen(priv->search_text) > 2)) g_signal_emit_by_name (priv->zones_model, "filter-changed"); if (priv->search_text && (strlen(priv->search_text) > 2) && (clutter_model_get_n_rows(priv->zones_model) > 0)) { clutter_actor_show(priv->completion); clutter_actor_raise_top (priv->completion); } else { clutter_actor_hide(priv->completion); } return FALSE; }
/* 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 _active_model_bulk_change_end_cb (AnerleyFeedModel *model, gpointer userdata) { MnbPeoplePanelPrivate *priv = GET_PRIVATE (userdata); gint number_active_people; gchar *tooltip; if (clutter_model_get_first_iter ((ClutterModel *)model)) { // mx_table_set_row_spacing (MX_TABLE (priv->content_table), 6); if (priv->panel_client) { mpl_panel_client_request_button_style (priv->panel_client, "people-button-active"); number_active_people = clutter_model_get_n_rows (CLUTTER_MODEL (priv->active_model)); if (number_active_people > 1) { tooltip = g_strdup_printf (_("people - you are chatting with %d people"), number_active_people); mpl_panel_client_request_tooltip (priv->panel_client, tooltip); g_free (tooltip); } else { mpl_panel_client_request_tooltip (priv->panel_client, _("people - you are chatting with someone")); } } } else { // mx_table_set_row_spacing (MX_TABLE (priv->content_table), 0); if (priv->panel_client) { mpl_panel_client_request_button_style (priv->panel_client, "people-button"); mpl_panel_client_request_tooltip (priv->panel_client, _("people")); } } /* Workaround for MB#6690 */ clutter_actor_queue_relayout (CLUTTER_ACTOR (priv->content_table)); }
static ClutterModelIter * gmc_video_model_iter_next (ClutterModelIter *iter) { ClutterModel *model; guint row, n_rows; model = clutter_model_iter_get_model (iter); row = clutter_model_iter_get_row (iter); n_rows = clutter_model_get_n_rows (model); g_object_unref (iter); if (row == (n_rows - 1)) { return NULL; } iter = g_object_new (GMC_TYPE_VIDEO_MODEL_ITER, "model", model, "row", row + 1, NULL); return iter; }
static ClutterModelIter * gmc_video_model_insert_row (ClutterModel *model, gint index) { GmcVideoModelIter *iter; GmcVideoModelPrivate *priv; sqlite3_stmt *statement; guint n_rows; gint error_code; gchar *query; priv = GMC_VIDEO_MODEL_GET_PRIVATE (model); n_rows = clutter_model_get_n_rows (model); query = g_strdup_printf ("INSERT INTO %s (Title) VALUES ('_')", TABLE); error_code = sqlite3_prepare_v2 (priv->sql, query, strlen (query), &statement, NULL); g_free (query); if (error_code != SQLITE_OK) { g_critical ("%s [prepare] : %d - %s", G_STRFUNC, error_code, sqlite3_errmsg (priv->sql)); return 0; } error_code = sqlite3_step (statement); if (error_code != SQLITE_DONE) { g_critical ("%s [step] : %d - %s", G_STRFUNC, error_code, sqlite3_errmsg (priv->sql)); return 0; } sqlite3_finalize (statement); iter = g_object_new (GMC_TYPE_VIDEO_MODEL_ITER, "model", model, "row", n_rows, NULL); return CLUTTER_MODEL_ITER (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 (); }
/* model monitors */ static void model_changed_cb (ClutterModel *model, MxListView *list_view) { GSList *p; GList *l, *children; MxListViewPrivate *priv = list_view->priv; ClutterModelIter *iter = NULL; gint model_n = 0, child_n = 0; /* bail out if we don't yet have an item type or a factory */ if (!priv->item_type && !priv->factory) return; if (priv->is_frozen) return; if (priv->item_type) { /* check the item-type is an descendant of ClutterActor */ if (!g_type_is_a (priv->item_type, CLUTTER_TYPE_ACTOR)) { g_warning ("%s is not a subclass of ClutterActor and therefore" " cannot be used as items in an MxListView", g_type_name (priv->item_type)); return; } } children = clutter_actor_get_children (CLUTTER_ACTOR (list_view)); child_n = g_list_length (children); if (model) model_n = clutter_model_get_n_rows (priv->model); else model_n = 0; /* add children as needed */ while (model_n > child_n) { ClutterActor *new_child; if (priv->item_type) { new_child = g_object_new (priv->item_type, NULL); } else { new_child = mx_item_factory_create (priv->factory); } clutter_actor_add_child (CLUTTER_ACTOR (list_view), new_child); child_n++; } /* remove children as needed */ l = g_list_last (children); while (child_n > model_n) { clutter_actor_remove_child (CLUTTER_ACTOR (list_view), l->data); l = g_list_previous (l); child_n--; } g_list_free (children); if (!priv->model) return; children = clutter_actor_get_children (CLUTTER_ACTOR (list_view)); /* set the properties on the children */ iter = clutter_model_get_first_iter (priv->model); l = children; while (iter && !clutter_model_iter_is_last (iter)) { GObject *child; child = G_OBJECT (l->data); g_object_freeze_notify (child); for (p = priv->attributes; p; p = p->next) { GValue value = { 0, }; AttributeData *attr = p->data; clutter_model_iter_get_value (iter, attr->col, &value); g_object_set_property (child, attr->name, &value); g_value_unset (&value); } g_object_thaw_notify (child); l = g_list_next (l); clutter_model_iter_next (iter); } g_list_free (children); if (iter) g_object_unref (iter); }