X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/941aa6e9dcad8baa3952be9fc50c7635be8eaab4..46e4fa54e7da3e4d0c0ba448a3ab9b16b5077664:/src/vikaggregatelayer.c?ds=inline diff --git a/src/vikaggregatelayer.c b/src/vikaggregatelayer.c index be4b2889..2edf282a 100644 --- a/src/vikaggregatelayer.c +++ b/src/vikaggregatelayer.c @@ -44,6 +44,8 @@ VikLayerInterface vik_aggregate_layer_interface = { NULL, 0, + VIK_MENU_ITEM_ALL, + (VikLayerFuncCreate) vik_aggregate_layer_create, (VikLayerFuncRealize) vik_aggregate_layer_realize, (VikLayerFuncPostRead) NULL, @@ -52,6 +54,9 @@ VikLayerInterface vik_aggregate_layer_interface = { (VikLayerFuncProperties) NULL, (VikLayerFuncDraw) vik_aggregate_layer_draw, (VikLayerFuncChangeCoordMode) aggregate_layer_change_coord_mode, + + (VikLayerFuncSetMenuItemsSelection) NULL, + (VikLayerFuncGetMenuItemsSelection) NULL, (VikLayerFuncAddMenuItems) NULL, (VikLayerFuncSublayerAddMenuItems) NULL, @@ -69,6 +74,7 @@ VikLayerInterface vik_aggregate_layer_interface = { (VikLayerFuncReadFileData) NULL, (VikLayerFuncWriteFileData) NULL, + (VikLayerFuncDeleteItem) NULL, (VikLayerFuncCopyItem) NULL, (VikLayerFuncPasteItem) NULL, (VikLayerFuncFreeCopiedItem) NULL, @@ -394,6 +400,22 @@ VikLayer *vik_aggregate_layer_get_top_visible_layer_of_type ( VikAggregateLayer return NULL; } +GList *vik_aggregate_layer_get_all_layers_of_type(VikAggregateLayer *val, GList *layers, gint type) +{ + GList *l = layers; + GList *children = val->children; + if (!children) + return layers; + while (children) { + if (VIK_LAYER(children->data)->type == VIK_LAYER_AGGREGATE) + l = vik_aggregate_layer_get_all_layers_of_type(VIK_AGGREGATE_LAYER(children->data), l, type); + else if (VIK_LAYER(children->data)->type == type) + l = g_list_prepend(l, children->data); /* now in top down order */ + children = children->next; + } + return l; +} + void vik_aggregate_layer_realize ( VikAggregateLayer *val, VikTreeview *vt, GtkTreeIter *layer_iter ) { GList *i = val->children;