static void phidias_items_geo_set_model (PhidiasItemsViewer *self, GtkTreeModel *items) { ChamplainView *view; PhidiasItemsGeo *geo; geo = PHIDIAS_ITEMS_GEO (self); if (geo->priv->tree_model != NULL) { g_signal_handler_disconnect (geo->priv->tree_model, geo->priv->signals [0]); g_signal_handler_disconnect (geo->priv->tree_model, geo->priv->signals [1]); } view = gtk_champlain_embed_get_view (GTK_CHAMPLAIN_EMBED (geo)); g_hash_table_foreach_remove (geo->priv->markers, remove_marker, geo->priv->current_layer); if (items == NULL) return; /** TODO This has to be done in a idle() callback */ gtk_tree_model_foreach (items, add_marker, geo); clutter_actor_show (CLUTTER_ACTOR (geo->priv->current_layer)); champlain_marker_layer_show_all_markers (geo->priv->current_layer); champlain_marker_layer_animate_in_all_markers (geo->priv->current_layer); geo->priv->tree_model = items; geo->priv->signals [0] = g_signal_connect (items, "row-deleted", G_CALLBACK (item_deleted_cb), geo); geo->priv->signals [1] = g_signal_connect (items, "row-inserted", G_CALLBACK (item_added_cb), geo); }
static void toggle_layer (GtkToggleButton *widget, ClutterActor *layer) { if (gtk_toggle_button_get_active (widget)) { champlain_path_layer_set_visible (path_layer, TRUE); champlain_path_layer_set_visible (path, TRUE); champlain_marker_layer_animate_in_all_markers (CHAMPLAIN_MARKER_LAYER (layer)); } else { champlain_path_layer_set_visible (path_layer, FALSE); champlain_path_layer_set_visible (path, FALSE); champlain_marker_layer_animate_out_all_markers (CHAMPLAIN_MARKER_LAYER (layer)); } }