Index: trunk/src/buffer.c =================================================================== --- trunk/src/buffer.c (revision 23713) +++ trunk/src/buffer.c (revision 23714) @@ -858,7 +858,7 @@ if (argc <= 1) { name = pcb_gui->fileselect("Save Paste Buffer As ...", "Choose a file to save the contents of the\n" - "paste buffer to.\n", default_file, ".fp", "footprint", 0, NULL); + "paste buffer to.\n", default_file, ".fp", NULL, "footprint", 0, NULL); if (default_file) { free(default_file); Index: trunk/src/font_act.c =================================================================== --- trunk/src/font_act.c (revision 23713) +++ trunk/src/font_act.c (revision 23714) @@ -66,7 +66,7 @@ if (!fname || !*fname) { fname = pcb_gui->fileselect("Load PCB font file...", "Picks a PCB font file to load.\n", - default_file, ".font", "pcbfont", PCB_HID_FSD_READ, NULL); + default_file, ".font", NULL, "pcbfont", PCB_HID_FSD_READ, NULL); if (fname == NULL) return 0; /* cancel */ if (default_file != NULL) { @@ -138,7 +138,7 @@ if (!fname || !*fname) { fname = pcb_gui->fileselect("Save PCB font file...", "Picks a PCB font file to save.\n", - default_file, ".font", "pcbfont", PCB_HID_FSD_MAY_NOT_EXIST, NULL); + default_file, ".font", NULL, "pcbfont", PCB_HID_FSD_MAY_NOT_EXIST, NULL); if (fname == NULL) PCB_ACT_FAIL(save_font_to); if (default_file != NULL) { Index: trunk/src/hid.h =================================================================== --- trunk/src/hid.h (revision 23713) +++ trunk/src/hid.h (revision 23714) @@ -132,6 +132,14 @@ PCB_HID_FSD_IS_TEMPLATE = 4 } pcb_hid_fsd_flags_t; +typedef struct { + const char *name; + const char *mime; + const char **pat; /* NULL terminated array of file name patterns */ +} pcb_hid_fsd_filter_t; + +extern const pcb_hid_fsd_filter_t *pcb_hid_fsd_filter_any; + /* Optional fields of a menu item; all non-NULL fields are strdup'd in the HID. */ typedef struct pcb_menu_prop_s { const char *action; @@ -363,6 +371,10 @@ * default_ext is the default file extension, like ".pdf". * Ignored if NULL. * + * flt is a NULL terminated array of file filters; HID support is optional. + * Ignored if NULL. If NULL and default_ext is not NULL, the HID may make + * up a minimalistic filter from the default_ext also allowing *.*. + * * history_tag may be used by the GUI to keep track of file * history. Examples would be "board", "vendor", "renumber", * etc. If NULL, no specific history is kept. @@ -374,7 +386,7 @@ * get_path returns the current full paht in res as string * set_file_name replaces the file name portion of the current path from arg[0].d.s */ - char *(*fileselect)(const char *title, const char *descr, const char *default_file, const char *default_ext, const char *history_tag, pcb_hid_fsd_flags_t flags, pcb_hid_dad_subdialog_t *sub); + char *(*fileselect)(const char *title, const char *descr, const char *default_file, const char *default_ext, const pcb_hid_fsd_filter_t *flt, const char *history_tag, pcb_hid_fsd_flags_t flags, pcb_hid_dad_subdialog_t *sub); /* A generic dialog to ask for a set of attributes. If n_attrs_ is zero, attrs_(.name) must be NULL terminated. attr_dlg_run returns Index: trunk/src/hid_nogui.c =================================================================== --- trunk/src/hid_nogui.c (revision 23713) +++ trunk/src/hid_nogui.c (revision 23714) @@ -366,7 +366,7 @@ /* FIXME - this could use some enhancement to actually use the other args */ static char *nogui_fileselect(const char *title, const char *descr, - const char *default_file, const char *default_ext, const char *history_tag, pcb_hid_fsd_flags_t flags, pcb_hid_dad_subdialog_t *sub) + const char *default_file, const char *default_ext, const pcb_hid_fsd_filter_t *flt, const char *history_tag, pcb_hid_fsd_flags_t flags, pcb_hid_dad_subdialog_t *sub) { char *answer; Index: trunk/src/plug_io.c =================================================================== --- trunk/src/plug_io.c (revision 23713) +++ trunk/src/plug_io.c (revision 23714) @@ -645,7 +645,7 @@ /* CheckAndOpenFile deals with the case where fname already exists */ fname = pcb_gui->fileselect("Save Connection Data As ...", - "Choose a file to save all connection data to.", default_file, ".net", "connection_data", 0, NULL); + "Choose a file to save all connection data to.", default_file, ".net", NULL, "connection_data", 0, NULL); if (fname == NULL) return NULL; Index: trunk/src/rats_patch.c =================================================================== --- trunk/src/rats_patch.c (revision 23713) +++ trunk/src/rats_patch.c (revision 23714) @@ -508,7 +508,7 @@ fn = pcb_gui->fileselect("Save netlist patch as ...", "Choose a file to save netlist patch to\n" - "for back annotation\n", default_file, ".bap", "patch", 0, NULL); + "for back annotation\n", default_file, ".bap", NULL, "patch", 0, NULL); free(default_file); } Index: trunk/src_plugins/dialogs/dlg_loadsave.c =================================================================== --- trunk/src_plugins/dialogs/dlg_loadsave.c (revision 23713) +++ trunk/src_plugins/dialogs/dlg_loadsave.c (revision 23714) @@ -62,13 +62,13 @@ PCB_ACT_MAY_CONVARG(1, FGW_STR, Load, function = argv[1].val.str); if (pcb_strcasecmp(function, "Netlist") == 0) - name = pcb_gui->fileselect("Load netlist file", "Import netlist from file", last_netlist, ".net", "netlist", PCB_HID_FSD_READ, NULL); + name = pcb_gui->fileselect("Load netlist file", "Import netlist from file", last_netlist, ".net", NULL, "netlist", PCB_HID_FSD_READ, NULL); else if ((pcb_strcasecmp(function, "FootprintToBuffer") == 0) || (pcb_strcasecmp(function, "ElementToBuffer") == 0)) - name = pcb_gui->fileselect("Load footprint to buffer", "Import footprint from file", last_footprint, NULL, "footprint", PCB_HID_FSD_READ, NULL); + name = pcb_gui->fileselect("Load footprint to buffer", "Import footprint from file", last_footprint, NULL, "footprint", NULL, PCB_HID_FSD_READ, NULL); else if (pcb_strcasecmp(function, "LayoutToBuffer") == 0) - name = pcb_gui->fileselect("Load layout to buffer", "load layout (board) to buffer", last_layout, NULL, "board", PCB_HID_FSD_READ, NULL); + name = pcb_gui->fileselect("Load layout to buffer", "load layout (board) to buffer", last_layout, NULL, "board", NULL, PCB_HID_FSD_READ, NULL); else if (pcb_strcasecmp(function, "Layout") == 0) - name = pcb_gui->fileselect("Load layout file", "load layout (board) as board to edit", last_layout, NULL, "board", PCB_HID_FSD_READ, NULL); + name = pcb_gui->fileselect("Load layout file", "load layout (board) as board to edit", last_layout, NULL, "board", NULL, PCB_HID_FSD_READ, NULL); else { pcb_message(PCB_MSG_ERROR, "Invalid subcommand for Load(): '%s'\n", function); PCB_ACT_IRES(1); Index: trunk/src_plugins/dialogs/dlg_pref_win.c =================================================================== --- trunk/src_plugins/dialogs/dlg_pref_win.c (revision 23713) +++ trunk/src_plugins/dialogs/dlg_pref_win.c (revision 23714) @@ -102,7 +102,7 @@ fname = pcb_gui->fileselect("Save window geometry to...", "Pick a file for saving window geometry to.\n", - "win_geo.lht", ".lht", "wingeo", PCB_HID_FSD_MAY_NOT_EXIST, NULL); + "win_geo.lht", ".lht", NULL, "wingeo", PCB_HID_FSD_MAY_NOT_EXIST, NULL); if (fname == NULL) return; Index: trunk/src_plugins/dialogs/dlg_view.c =================================================================== --- trunk/src_plugins/dialogs/dlg_view.c (revision 23713) +++ trunk/src_plugins/dialogs/dlg_view.c (revision 23714) @@ -439,7 +439,7 @@ char *fn; FILE *f; - fn = pcb_gui->fileselect("Save view list", "Save all views from the list", "view.lht", "lht", "view", 0, NULL); + fn = pcb_gui->fileselect("Save view list", "Save all views from the list", "view.lht", "lht", NULL, "view", 0, NULL); if (fn == NULL) return; @@ -468,7 +468,7 @@ FILE *f; void *load_ctx; - fn = pcb_gui->fileselect("Load view list", "Load all views from the list", "view.lht", "lht", "view", PCB_HID_FSD_READ, NULL); + fn = pcb_gui->fileselect("Load view list", "Load all views from the list", "view.lht", "lht", NULL, "view", PCB_HID_FSD_READ, NULL); if (fn == NULL) return; Index: trunk/src_plugins/export_openems/mesh.c =================================================================== --- trunk/src_plugins/export_openems/mesh.c (revision 23713) +++ trunk/src_plugins/export_openems/mesh.c (revision 23714) @@ -957,7 +957,7 @@ fname = pcb_gui->fileselect("Save mesh settings...", "Picks file for saving mesh settings.\n", - default_file, ".lht", "mesh", PCB_HID_FSD_MAY_NOT_EXIST, NULL); + default_file, ".lht", NULL, "mesh", PCB_HID_FSD_MAY_NOT_EXIST, NULL); if (fname == NULL) return; /* cancel */ @@ -989,7 +989,7 @@ fname = pcb_gui->fileselect("Load mesh settings...", "Picks file for loading mesh settings from.\n", - default_file, ".lht", "mesh", PCB_HID_FSD_READ, NULL); + default_file, ".lht", NULL, "mesh", PCB_HID_FSD_READ, NULL); if (fname == NULL) return; /* cancel */ Index: trunk/src_plugins/hid_lesstif/dlg_fileselect.c =================================================================== --- trunk/src_plugins/hid_lesstif/dlg_fileselect.c (revision 23713) +++ trunk/src_plugins/hid_lesstif/dlg_fileselect.c (revision 23714) @@ -127,7 +127,7 @@ return -1; } -char *pcb_ltf_fileselect(const char *title, const char *descr, const char *default_file, const char *default_ext, const char *history_tag, pcb_hid_fsd_flags_t flags, pcb_hid_dad_subdialog_t *sub) +char *pcb_ltf_fileselect(const char *title, const char *descr, const char *default_file, const char *default_ext, const pcb_hid_fsd_filter_t *flt, const char *history_tag, pcb_hid_fsd_flags_t flags, pcb_hid_dad_subdialog_t *sub) { XmString xms_ext = NULL, xms_load = NULL; pcb_ltf_fsd_t pctx; Index: trunk/src_plugins/hid_lesstif/dlg_fileselect.h =================================================================== --- trunk/src_plugins/hid_lesstif/dlg_fileselect.h (revision 23713) +++ trunk/src_plugins/hid_lesstif/dlg_fileselect.h (revision 23714) @@ -1,2 +1,2 @@ #include "global_typedefs.h" -char *pcb_ltf_fileselect(const char *title, const char *descr, const char *default_file, const char *default_ext, const char *history_tag, pcb_hid_fsd_flags_t flags, pcb_hid_dad_subdialog_t *sub); +char *pcb_ltf_fileselect(const char *title, const char *descr, const char *default_file, const char *default_ext, const pcb_hid_fsd_filter_t *flt, const char *history_tag, pcb_hid_fsd_flags_t flags, pcb_hid_dad_subdialog_t *sub); Index: trunk/src_plugins/hid_lesstif/lesstif.h =================================================================== --- trunk/src_plugins/hid_lesstif/lesstif.h (revision 23713) +++ trunk/src_plugins/hid_lesstif/lesstif.h (revision 23714) @@ -55,10 +55,10 @@ extern void lesstif_styles_update_values(); extern void lesstif_update_layer_groups(); extern void lesstif_update_status_line(); -extern char *lesstif_fileselect(const char *, const char *, const char *, const char *, const char *, pcb_hid_fsd_flags_t); extern void lesstif_log(const char *fmt, ...); extern void lesstif_attributes_dialog(const char *, pcb_attribute_list_t *); void *lesstif_attr_sub_new(Widget parent_box, pcb_hid_attribute_t *attrs, int n_attrs, void *caller_data); +char *pcb_ltf_fileselect(const char *title, const char *descr, const char *default_file, const char *default_ext, const pcb_hid_fsd_filter_t *flt, const char *history_tag, pcb_hid_fsd_flags_t flags, pcb_hid_dad_subdialog_t *sub); extern int pcb_ltf_ok; int pcb_ltf_wait_for_dialog(Widget w); Index: trunk/src_plugins/import_calay/calay.c =================================================================== --- trunk/src_plugins/import_calay/calay.c (revision 23713) +++ trunk/src_plugins/import_calay/calay.c (revision 23714) @@ -201,9 +201,9 @@ PCB_ACT_MAY_CONVARG(1, FGW_STR, LoadCalayFrom, fname_net = argv[1].val.str); if (!fname_net || !*fname_net) { - fname_net = pcb_gui->fileselect("Load calay netlist file...", - "Picks a calay netlist file to load.\n", - default_file, NETEXT, "calay", PCB_HID_FSD_READ, NULL); + fname_net = pcb_gui->fileselect( + "Load calay netlist file...", "Picks a calay netlist file to load.\n", + default_file, NETEXT, NULL, "calay", PCB_HID_FSD_READ, NULL); if (fname_net == NULL) return 1; if (default_file != NULL) { Index: trunk/src_plugins/import_dsn/dsn.c =================================================================== --- trunk/src_plugins/import_dsn/dsn.c (revision 23713) +++ trunk/src_plugins/import_dsn/dsn.c (revision 23714) @@ -223,7 +223,7 @@ "Load a routed dsn or ses file...", "Select dsn or ses file to load.\nThe file could be generated using the tool downloaded from freeroute.net\n", NULL, /* default file name */ - ".dsn", "dsn", PCB_HID_FSD_READ, NULL); + ".dsn", NULL, "dsn", PCB_HID_FSD_READ, NULL); if (fname == NULL) return 1; } Index: trunk/src_plugins/import_fpcb_nl/fpcb_nl.c =================================================================== --- trunk/src_plugins/import_fpcb_nl/fpcb_nl.c (revision 23713) +++ trunk/src_plugins/import_fpcb_nl/fpcb_nl.c (revision 23714) @@ -170,9 +170,9 @@ PCB_ACT_MAY_CONVARG(1, FGW_STR, LoadFpcbnlFrom, fname = argv[1].val.str); if (!fname || !*fname) { - fname = pcb_gui->fileselect("Load freepcb netlist...", - "Picks a freepcb netlist file to load.\n", - default_file, ".net", "freepcb", PCB_HID_FSD_READ, NULL); + fname = pcb_gui->fileselect( + "Load freepcb netlist...", "Picks a freepcb netlist file to load.\n", + default_file, ".net", NULL, "freepcb", PCB_HID_FSD_READ, NULL); if (fname == NULL) return 1; if (default_file != NULL) { Index: trunk/src_plugins/import_hpgl/hpgl.c =================================================================== --- trunk/src_plugins/import_hpgl/hpgl.c (revision 23713) +++ trunk/src_plugins/import_hpgl/hpgl.c (revision 23714) @@ -158,7 +158,7 @@ if (!fname || !*fname) { fname = pcb_gui->fileselect("Load HP-GL file...", "Picks a HP-GL plot file to load.\n", - default_file, ".hpgl", "hpgl", PCB_HID_FSD_READ, NULL); + default_file, ".hpgl", NULL, "hpgl", PCB_HID_FSD_READ, NULL); if (fname == NULL) return 0; /* cancel */ if (default_file != NULL) { Index: trunk/src_plugins/import_ipcd356/ipcd356.c =================================================================== --- trunk/src_plugins/import_ipcd356/ipcd356.c (revision 23713) +++ trunk/src_plugins/import_ipcd356/ipcd356.c (revision 23714) @@ -368,7 +368,7 @@ if ((fname == NULL) || (*fname == '\0')) { fname = pcb_gui->fileselect("Load IPC-D-356 netlist...", "Pick an IPC-D-356 netlist file.\n", - default_file, ".net", "ipcd356", PCB_HID_FSD_READ, NULL); + default_file, ".net", NULL, "ipcd356", PCB_HID_FSD_READ, NULL); if (fname == NULL) { PCB_ACT_IRES(1); return 0; Index: trunk/src_plugins/import_ltspice/ltspice.c =================================================================== --- trunk/src_plugins/import_ltspice/ltspice.c (revision 23713) +++ trunk/src_plugins/import_ltspice/ltspice.c (revision 23714) @@ -277,7 +277,7 @@ if (!fname || !*fname) { fname = pcb_gui->fileselect("Load ltspice net+asc file pair...", "Picks a ltspice mentor net or asc file to load.\n", - default_file, ".asc", "ltspice", PCB_HID_FSD_READ, NULL); + default_file, ".asc", NULL, "ltspice", PCB_HID_FSD_READ, NULL); if (fname == NULL) return 1; if (default_file != NULL) { Index: trunk/src_plugins/import_mentor_sch/mentor_sch.c =================================================================== --- trunk/src_plugins/import_mentor_sch/mentor_sch.c (revision 23713) +++ trunk/src_plugins/import_mentor_sch/mentor_sch.c (revision 23714) @@ -266,7 +266,7 @@ if (!fname || !*fname) { fname = pcb_gui->fileselect("Load mentor edf netlist file...", "Picks a mentor edf file to load.\n", - default_file, ".edf", "mentor_sch", PCB_HID_FSD_READ, NULL); + default_file, ".edf", NULL, "mentor_sch", PCB_HID_FSD_READ, NULL); if (fname == NULL) return 1; if (default_file != NULL) { Index: trunk/src_plugins/import_mucs/mucs.c =================================================================== --- trunk/src_plugins/import_mucs/mucs.c (revision 23713) +++ trunk/src_plugins/import_mucs/mucs.c (revision 23714) @@ -76,7 +76,7 @@ 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, ".l1", "unixplot", PCB_HID_FSD_READ, NULL); + default_file, ".l1", NULL, "unixplot", PCB_HID_FSD_READ, NULL); if (fname == NULL) { PCB_ACT_IRES(1); return 0; Index: trunk/src_plugins/import_tinycad/tinycad.c =================================================================== --- trunk/src_plugins/import_tinycad/tinycad.c (revision 23713) +++ trunk/src_plugins/import_tinycad/tinycad.c (revision 23714) @@ -181,7 +181,7 @@ if (!fname || !*fname) { fname = pcb_gui->fileselect("Load tinycad netlist file...", "Picks a tinycad netlist file to load.\n", - default_file, ".net", "tinycad", PCB_HID_FSD_READ, NULL); + default_file, ".net", NULL, "tinycad", PCB_HID_FSD_READ, NULL); if (fname == NULL) return 1; if (default_file != NULL) { Index: trunk/src_plugins/io_hyp/io_hyp.c =================================================================== --- trunk/src_plugins/io_hyp/io_hyp.c (revision 23713) +++ trunk/src_plugins/io_hyp/io_hyp.c (revision 23714) @@ -77,8 +77,9 @@ PCB_ACT_MAY_CONVARG(1, FGW_STR, LoadhypFrom, fname = argv[1].val.str); if ((fname == NULL) || (*fname == '\0')) { - fname = pcb_gui->fileselect("Load .hyp file...", - "Picks a hyperlynx file to load.\n", "default.hyp", ".hyp", "hyp", PCB_HID_FSD_READ, NULL); + fname = pcb_gui->fileselect( + "Load .hyp file...", "Picks a hyperlynx file to load.\n", "default.hyp", + ".hyp", NULL, "hyp", PCB_HID_FSD_READ, NULL); } if (fname == NULL) { Index: trunk/src_plugins/io_kicad/read_net.c =================================================================== --- trunk/src_plugins/io_kicad/read_net.c (revision 23713) +++ trunk/src_plugins/io_kicad/read_net.c (revision 23714) @@ -225,7 +225,7 @@ if (!fname || !*fname) { fname = pcb_gui->fileselect("Load eeschema netlist file...", "Picks a eeschema netlist file to load.\n", - default_file, ".net", "eeschema", PCB_HID_FSD_READ, NULL); + default_file, ".net", NULL, "eeschema", PCB_HID_FSD_READ, NULL); if (fname == NULL) return 1; if (default_file != NULL) { Index: trunk/src_plugins/io_pcb/parse_l.c =================================================================== --- trunk/src_plugins/io_pcb/parse_l.c (revision 23713) +++ trunk/src_plugins/io_pcb/parse_l.c (revision 23714) @@ -733,7 +733,7 @@ static int Parse(FILE *Pipe, const char *Executable, const char *Path, const char *Filename); -#line 738 "parse_l.c" +#line 737 "parse_l.c" #define INITIAL 0 @@ -920,10 +920,10 @@ register char *yy_cp, *yy_bp; register int yy_act; -#line 109 "parse_l.l" +#line 108 "parse_l.l" -#line 928 "parse_l.c" +#line 927 "parse_l.c" if ( !(yy_init) ) { @@ -1018,227 +1018,227 @@ case 1: YY_RULE_SETUP -#line 111 "parse_l.l" +#line 110 "parse_l.l" { return(T_FILEVERSION); } YY_BREAK case 2: YY_RULE_SETUP -#line 112 "parse_l.l" +#line 111 "parse_l.l" { return(T_PCB); } YY_BREAK case 3: YY_RULE_SETUP -#line 113 "parse_l.l" +#line 112 "parse_l.l" { return(T_GRID); } YY_BREAK case 4: YY_RULE_SETUP -#line 114 "parse_l.l" +#line 113 "parse_l.l" { return(T_CURSOR); } YY_BREAK case 5: YY_RULE_SETUP -#line 115 "parse_l.l" +#line 114 "parse_l.l" { return(T_THERMAL); } YY_BREAK case 6: YY_RULE_SETUP -#line 116 "parse_l.l" +#line 115 "parse_l.l" { return(T_AREA); } YY_BREAK case 7: YY_RULE_SETUP -#line 117 "parse_l.l" +#line 116 "parse_l.l" { return(T_DRC); } YY_BREAK case 8: YY_RULE_SETUP -#line 118 "parse_l.l" +#line 117 "parse_l.l" { return(T_FLAGS); } YY_BREAK case 9: YY_RULE_SETUP -#line 119 "parse_l.l" +#line 118 "parse_l.l" { return(T_LAYER); } YY_BREAK case 10: YY_RULE_SETUP -#line 120 "parse_l.l" +#line 119 "parse_l.l" { return(T_PIN); } YY_BREAK case 11: YY_RULE_SETUP -#line 121 "parse_l.l" +#line 120 "parse_l.l" { return(T_PAD); } YY_BREAK case 12: YY_RULE_SETUP -#line 122 "parse_l.l" +#line 121 "parse_l.l" { return(T_VIA); } YY_BREAK case 13: YY_RULE_SETUP -#line 123 "parse_l.l" +#line 122 "parse_l.l" { return(T_LINE); } YY_BREAK case 14: YY_RULE_SETUP -#line 124 "parse_l.l" +#line 123 "parse_l.l" { return(T_RAT); } YY_BREAK case 15: YY_RULE_SETUP -#line 125 "parse_l.l" +#line 124 "parse_l.l" { return(T_RECTANGLE); } YY_BREAK case 16: YY_RULE_SETUP -#line 126 "parse_l.l" +#line 125 "parse_l.l" { return(T_TEXT); } YY_BREAK case 17: YY_RULE_SETUP -#line 127 "parse_l.l" +#line 126 "parse_l.l" { return(T_ELEMENTLINE); } YY_BREAK case 18: YY_RULE_SETUP -#line 128 "parse_l.l" +#line 127 "parse_l.l" { return(T_ELEMENTARC); } YY_BREAK case 19: YY_RULE_SETUP -#line 129 "parse_l.l" +#line 128 "parse_l.l" { return(T_ELEMENT); } YY_BREAK case 20: YY_RULE_SETUP -#line 130 "parse_l.l" +#line 129 "parse_l.l" { return(T_SYMBOLLINE); } YY_BREAK case 21: YY_RULE_SETUP -#line 131 "parse_l.l" +#line 130 "parse_l.l" { return(T_SYMBOL); } YY_BREAK case 22: YY_RULE_SETUP -#line 132 "parse_l.l" +#line 131 "parse_l.l" { return(T_MARK); } YY_BREAK case 23: YY_RULE_SETUP -#line 133 "parse_l.l" +#line 132 "parse_l.l" { return(T_GROUPS); } YY_BREAK case 24: YY_RULE_SETUP -#line 134 "parse_l.l" +#line 133 "parse_l.l" { return(T_STYLES); } YY_BREAK case 25: YY_RULE_SETUP -#line 135 "parse_l.l" +#line 134 "parse_l.l" { return(T_POLYGON); } YY_BREAK case 26: YY_RULE_SETUP -#line 136 "parse_l.l" +#line 135 "parse_l.l" { return(T_POLYGON_HOLE); } YY_BREAK case 27: YY_RULE_SETUP -#line 137 "parse_l.l" +#line 136 "parse_l.l" { return(T_ARC); } YY_BREAK case 28: YY_RULE_SETUP -#line 138 "parse_l.l" +#line 137 "parse_l.l" { return(T_NETLIST); } YY_BREAK case 29: YY_RULE_SETUP -#line 139 "parse_l.l" +#line 138 "parse_l.l" { return(T_NET); } YY_BREAK case 30: YY_RULE_SETUP -#line 140 "parse_l.l" +#line 139 "parse_l.l" { return(T_CONN); } YY_BREAK case 31: YY_RULE_SETUP -#line 141 "parse_l.l" +#line 140 "parse_l.l" { return(T_NETLISTPATCH); } YY_BREAK case 32: YY_RULE_SETUP -#line 142 "parse_l.l" +#line 141 "parse_l.l" { return(T_ADD_CONN); } YY_BREAK case 33: YY_RULE_SETUP -#line 143 "parse_l.l" +#line 142 "parse_l.l" { return(T_DEL_CONN); } YY_BREAK case 34: YY_RULE_SETUP -#line 144 "parse_l.l" +#line 143 "parse_l.l" { return(T_CHANGE_ATTRIB); } YY_BREAK case 35: YY_RULE_SETUP -#line 145 "parse_l.l" +#line 144 "parse_l.l" { return(T_ATTRIBUTE); } YY_BREAK case 36: YY_RULE_SETUP -#line 147 "parse_l.l" +#line 146 "parse_l.l" { return T_NM; } YY_BREAK case 37: YY_RULE_SETUP -#line 148 "parse_l.l" +#line 147 "parse_l.l" { return T_UM; } YY_BREAK case 38: YY_RULE_SETUP -#line 149 "parse_l.l" +#line 148 "parse_l.l" { return T_MM; } YY_BREAK case 39: YY_RULE_SETUP -#line 150 "parse_l.l" +#line 149 "parse_l.l" { return T_M; } YY_BREAK case 40: YY_RULE_SETUP -#line 151 "parse_l.l" +#line 150 "parse_l.l" { return T_KM; } YY_BREAK case 41: YY_RULE_SETUP -#line 152 "parse_l.l" +#line 151 "parse_l.l" { return T_UMIL; } YY_BREAK case 42: YY_RULE_SETUP -#line 153 "parse_l.l" +#line 152 "parse_l.l" { return T_CMIL; } YY_BREAK case 43: YY_RULE_SETUP -#line 154 "parse_l.l" +#line 153 "parse_l.l" { return T_MIL; } YY_BREAK case 44: YY_RULE_SETUP -#line 155 "parse_l.l" +#line 154 "parse_l.l" { return T_IN; } YY_BREAK case 45: YY_RULE_SETUP -#line 157 "parse_l.l" +#line 156 "parse_l.l" { pcb_lval.integer = (unsigned) *(pcb_text+1); return(CHAR_CONST); @@ -1246,17 +1246,17 @@ YY_BREAK case 46: YY_RULE_SETUP -#line 161 "parse_l.l" +#line 160 "parse_l.l" { return parse_number(); } YY_BREAK case 47: YY_RULE_SETUP -#line 162 "parse_l.l" +#line 161 "parse_l.l" { pcb_lval.integer = pcb_round (strtod (pcb_text, NULL)); return INTEGER; } YY_BREAK case 48: YY_RULE_SETUP -#line 164 "parse_l.l" +#line 163 "parse_l.l" { unsigned n; sscanf((char *) pcb_text, "%x", &n); pcb_lval.integer = n; @@ -1265,7 +1265,7 @@ YY_BREAK case 49: YY_RULE_SETUP -#line 169 "parse_l.l" +#line 168 "parse_l.l" { char *p1, *p2; @@ -1301,23 +1301,23 @@ YY_BREAK case 50: YY_RULE_SETUP -#line 201 "parse_l.l" +#line 200 "parse_l.l" { if (yy_parse_tags) { add_tag(pcb_text); }} YY_BREAK case 51: YY_RULE_SETUP -#line 202 "parse_l.l" +#line 201 "parse_l.l" {} YY_BREAK case 52: YY_RULE_SETUP -#line 203 "parse_l.l" +#line 202 "parse_l.l" {} YY_BREAK case 53: /* rule 53 can match eol */ YY_RULE_SETUP -#line 204 "parse_l.l" +#line 203 "parse_l.l" { #ifndef FLEX_SCANNER pcb_lineno++; @@ -1326,20 +1326,20 @@ YY_BREAK case 54: YY_RULE_SETUP -#line 209 "parse_l.l" +#line 208 "parse_l.l" {} YY_BREAK case 55: YY_RULE_SETUP -#line 210 "parse_l.l" +#line 209 "parse_l.l" { return(*pcb_text); } YY_BREAK case 56: YY_RULE_SETUP -#line 212 "parse_l.l" +#line 211 "parse_l.l" ECHO; YY_BREAK -#line 1344 "parse_l.c" +#line 1343 "parse_l.c" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -2349,7 +2349,7 @@ #define YYTABLES_NAME "yytables" -#line 212 "parse_l.l" +#line 211 "parse_l.l" Index: trunk/src_plugins/io_pcb/parse_l.h =================================================================== --- trunk/src_plugins/io_pcb/parse_l.h (revision 23713) +++ trunk/src_plugins/io_pcb/parse_l.h (revision 23714) @@ -324,7 +324,7 @@ #undef YY_DECL #endif -#line 212 "parse_l.l" +#line 211 "parse_l.l" #line 331 "parse_l.h" Index: trunk/src_plugins/io_tedax/io_tedax.c =================================================================== --- trunk/src_plugins/io_tedax/io_tedax.c (revision 23713) +++ trunk/src_plugins/io_tedax/io_tedax.c (revision 23714) @@ -114,7 +114,7 @@ if ((fname == NULL) || (*fname == '\0')) { \ fname = pcb_gui->fileselect("Load tedax " #type " file...", \ "Picks a tedax " #type " file to load.\n", \ - default_file, ".tdx", "tedax-" #type, PCB_HID_FSD_READ, NULL); \ + default_file, ".tdx", NULL, "tedax-" #type, PCB_HID_FSD_READ, NULL); \ if (fname == NULL) \ return 1; \ if (default_file != NULL) { \ Index: trunk/src_plugins/lib_gtk_common/dlg_fileselect.c =================================================================== --- trunk/src_plugins/lib_gtk_common/dlg_fileselect.c (revision 23713) +++ trunk/src_plugins/lib_gtk_common/dlg_fileselect.c (revision 23714) @@ -112,7 +112,7 @@ return -1; } -char *pcb_gtk_fileselect(pcb_gtk_common_t *com, const char *title, const char *descr, const char *default_file, const char *default_ext, const char *history_tag, pcb_hid_fsd_flags_t flags, pcb_hid_dad_subdialog_t *sub) +char *pcb_gtk_fileselect(pcb_gtk_common_t *com, const char *title, const char *descr, const char *default_file, const char *default_ext, const pcb_hid_fsd_filter_t *flt, const char *history_tag, pcb_hid_fsd_flags_t flags, pcb_hid_dad_subdialog_t *sub) { GtkWidget *top_window = com->top_window; gchar *path = NULL, *base = NULL, *res = NULL; Index: trunk/src_plugins/lib_gtk_common/dlg_fileselect.h =================================================================== --- trunk/src_plugins/lib_gtk_common/dlg_fileselect.h (revision 23713) +++ trunk/src_plugins/lib_gtk_common/dlg_fileselect.h (revision 23714) @@ -1,4 +1,4 @@ #include "global_typedefs.h" #include -char *pcb_gtk_fileselect(pcb_gtk_common_t *com, const char *title, const char *descr, const char *default_file, const char *default_ext, const char *history_tag, pcb_hid_fsd_flags_t flags, pcb_hid_dad_subdialog_t *sub); +char *pcb_gtk_fileselect(pcb_gtk_common_t *com, const char *title, const char *descr, const char *default_file, const char *default_ext, const pcb_hid_fsd_filter_t *flt, const char *history_tag, pcb_hid_fsd_flags_t flags, pcb_hid_dad_subdialog_t *sub); Index: trunk/src_plugins/lib_gtk_hid/glue_hid.c =================================================================== --- trunk/src_plugins/lib_gtk_hid/glue_hid.c (revision 23713) +++ trunk/src_plugins/lib_gtk_hid/glue_hid.c (revision 23714) @@ -333,9 +333,9 @@ pcb_gtk_logv(ghidgui->hid_active, level, fmt, args); } -static char *ghid_fileselect(const char *title, const char *descr, const char *default_file, const char *default_ext, const char *history_tag, pcb_hid_fsd_flags_t flags, pcb_hid_dad_subdialog_t *sub) +static char *ghid_fileselect(const char *title, const char *descr, const char *default_file, const char *default_ext, const pcb_hid_fsd_filter_t *flt, const char *history_tag, pcb_hid_fsd_flags_t flags, pcb_hid_dad_subdialog_t *sub) { - return pcb_gtk_fileselect(&ghidgui->common, title, descr, default_file, default_ext, history_tag, flags, sub); + return pcb_gtk_fileselect(&ghidgui->common, title, descr, default_file, default_ext, flt, history_tag, flags, sub); } static void *ghid_attr_dlg_new_(const char *id, pcb_hid_attribute_t *attrs, int n_attrs, pcb_hid_attr_val_t *results, const char *title, void *caller_data, pcb_bool modal, void (*button_cb)(void *caller_data, pcb_hid_attr_ev_t ev), int defx, int defy) Index: trunk/src_plugins/renumber/renumber.c =================================================================== --- trunk/src_plugins/renumber/renumber.c (revision 23713) +++ trunk/src_plugins/renumber/renumber.c (revision 23714) @@ -92,7 +92,7 @@ name = pcb_gui->fileselect("Save Renumber Annotation File As ...", "Choose a file to record the renumbering to.\n" "This file may be used to back annotate the\n" - "change to the schematics.\n", default_file, ".eco", "eco", 0, NULL); + "change to the schematics.\n", default_file, ".eco", NULL, "eco", 0, NULL); free_name = pcb_true; } Index: trunk/src_plugins/script/script_act.c =================================================================== --- trunk/src_plugins/script/script_act.c (revision 23713) +++ trunk/src_plugins/script/script_act.c (revision 23714) @@ -159,7 +159,7 @@ { script_dlg_t *ctx = caller_data; int failed; - char *tmp, *fn = pcb_gui->fileselect("script to load", "Select a script file to load", NULL, NULL, "script", PCB_HID_FSD_READ, NULL); + char *tmp, *fn = pcb_gui->fileselect("script to load", "Select a script file to load", NULL, NULL, NULL, "script", PCB_HID_FSD_READ, NULL); pcb_hid_dad_buttons_t clbtn[] = {{"Cancel", -1}, {"ok", 0}, {NULL, 0}}; typedef struct { PCB_DAD_DECL_NOINIT(dlg) Index: trunk/src_plugins/vendordrill/vendor.c =================================================================== --- trunk/src_plugins/vendordrill/vendor.c (revision 23713) +++ trunk/src_plugins/vendordrill/vendor.c (revision 23714) @@ -149,7 +149,7 @@ "Picks a vendor resource file to load.\n" "This file can contain drc settings for a\n" "particular vendor as well as a list of\n" - "predefined drills which are allowed.", default_file, ".res", "vendor", PCB_HID_FSD_READ, NULL); + "predefined drills which are allowed.", default_file, ".res", NULL, "vendor", PCB_HID_FSD_READ, NULL); if (fname == NULL) { PCB_ACT_IRES(1); return 0;