Index: trunk/src/layer_grp.c =================================================================== --- trunk/src/layer_grp.c (revision 28255) +++ trunk/src/layer_grp.c (revision 28256) @@ -1143,7 +1143,7 @@ grp->valid = 1; } -void pcb_layergrp_upgrade_by_map(pcb_board_t *pcb, const pcb_dflgmap_t *map) +static void pcb_layergrp_upgrade_by_map_(pcb_board_t *pcb, const pcb_dflgmap_t *map, int force) { const pcb_dflgmap_t *m; pcb_layergrp_t *grp; @@ -1151,12 +1151,15 @@ inhibit_notify++; for(m = map; m->name != NULL; m++) { - int found; - if (m->purpose == NULL) - found = pcb_layergrp_list(pcb, m->lyt, &gid, 1); - else - found = pcb_layergrp_listp(pcb, m->lyt, &gid, 1, 0, m->purpose); - + int found = 0; + + if (!force) { + if (m->purpose == NULL) + found = pcb_layergrp_list(pcb, m->lyt, &gid, 1); + else + found = pcb_layergrp_listp(pcb, m->lyt, &gid, 1, 0, m->purpose); + } + if (found == 1) { grp = &pcb->LayerGroups.grp[gid]; free(grp->name); @@ -1171,6 +1174,17 @@ NOTIFY(pcb); } +void pcb_layergrp_upgrade_by_map(pcb_board_t *pcb, const pcb_dflgmap_t *map) +{ + pcb_layergrp_upgrade_by_map_(pcb, map, 0); +} + +void pcb_layergrp_create_by_map(pcb_board_t *pcb, const pcb_dflgmap_t *map) +{ + pcb_layergrp_upgrade_by_map_(pcb, map, 1); +} + + void pcb_layergrp_upgrade_to_pstk(pcb_board_t *pcb) { pcb_layergrp_upgrade_by_map(pcb, pcb_dflgmap); Index: trunk/src/layer_grp.h =================================================================== --- trunk/src/layer_grp.h (revision 28255) +++ trunk/src/layer_grp.h (revision 28256) @@ -284,6 +284,9 @@ /* Overwrite or create all groups from a map */ void pcb_layergrp_upgrade_by_map(pcb_board_t *pcb, const pcb_dflgmap_t *map); +/* Create all groups from a map (even if duplicate to existing) */ +void pcb_layergrp_create_by_map(pcb_board_t *pcb, const pcb_dflgmap_t *map); + /* Overwrite an existing group from a default layer group map entry and create a layer in the group */ void pcb_layergrp_set_dflgly(pcb_board_t *pcb, pcb_layergrp_t *grp, const pcb_dflgmap_t *src, const char *grname, const char *lyname);