Index: trunk/src_plugins/import_mucs/mucs.c =================================================================== --- trunk/src_plugins/import_mucs/mucs.c (revision 6808) +++ trunk/src_plugins/import_mucs/mucs.c (revision 6809) @@ -43,6 +43,8 @@ #include "action_helper.h" #include "hid_actions.h" #include "plugins.h" +#include "layer.h" +#include "conf_core.h" static const char *mucs_cookie = "mucs importer"; @@ -55,19 +57,18 @@ FILE *fi; int c, c2; pcb_coord_t x1, y1, x2, y2, r; -/* - pcb_layer_id_t *layer_list; - int layer_list_length; - - pcb_layer_list(PCB_LYT_COPPER, layer_list, layer_list_length); -*/ fname = argc ? argv[0] : 0; + if (!(pcb_layer_flags(INDEXOFCURRENT) & PCB_LYT_COPPER)) { + pcb_message(PCB_MSG_ERROR, "The currently active layer is not a copper layer.\n"); + } + + if (!fname || !*fname) { fname = pcb_gui->fileselect("Load mucs routing session Resource File...", "Picks a mucs session resource file to load.\n" "This file could be generated by mucs-pcb\n", - default_file, ".pl", "unixplot", HID_FILESELECT_READ); + default_file, ".l1", "unixplot", HID_FILESELECT_READ); if (fname == NULL) PCB_ACT_FAIL(LoadMucsFrom); if (default_file != NULL) { @@ -102,7 +103,7 @@ y2 = (getc(fi) + (getc(fi) * 256)); pcb_trace("Line(%d %d %d %d 20 \" \")\n", x1, y1, x2, y2); /* consider a bounds checking function to censor absurd coord sizes */ - pcb_line_new(&PCB->Data->Layer[0], PCB_MIL_TO_COORD(x1), PCB_MIL_TO_COORD(y1), PCB_MIL_TO_COORD(x2), PCB_MIL_TO_COORD(y2), PCB_MIL_TO_COORD(10), PCB_MIL_TO_COORD(10), pcb_flag_make(PCB_FLAG_AUTO)); + pcb_line_new(CURRENT, PCB_MIL_TO_COORD(x1), PCB_MIL_TO_COORD(y1), PCB_MIL_TO_COORD(x2), PCB_MIL_TO_COORD(y2), PCB_MIL_TO_COORD(10), PCB_MIL_TO_COORD(10), pcb_flag_make(PCB_FLAG_AUTO)); break; case 'c': x1 = (getc(fi) + (getc(fi) * 256)); @@ -115,7 +116,7 @@ x1 = (getc(fi) + (getc(fi) * 256)); y1 = (getc(fi) + (getc(fi) * 256)); pcb_trace("Line(%d %d %d %d 20 \" \")\n", x1, y1, x2, y2); - pcb_line_new(&PCB->Data->Layer[0], PCB_MIL_TO_COORD(x1), PCB_MIL_TO_COORD(y1), PCB_MIL_TO_COORD(x2), PCB_MIL_TO_COORD(y2), PCB_MIL_TO_COORD(10), PCB_MIL_TO_COORD(10), pcb_flag_make(PCB_FLAG_AUTO)); + pcb_line_new(CURRENT, PCB_MIL_TO_COORD(x1), PCB_MIL_TO_COORD(y1), PCB_MIL_TO_COORD(x2), PCB_MIL_TO_COORD(y2), PCB_MIL_TO_COORD(10), PCB_MIL_TO_COORD(10), pcb_flag_make(PCB_FLAG_AUTO)); x2 = x1; y2 = y1; break;