Index: trunk/src/actions.c =================================================================== --- trunk/src/actions.c (revision 28033) +++ trunk/src/actions.c (revision 28034) @@ -251,7 +251,7 @@ return pcb_actionv(name, 0, 0); } -int pcb_actionva(const char *name, ...) +int pcb_actionva(pcb_hidlib_t *hl, const char *name, ...) { const char *argv[20]; int argc = 0; Index: trunk/src/actions.h =================================================================== --- trunk/src/actions.h (revision 28033) +++ trunk/src/actions.h (revision 28034) @@ -76,7 +76,7 @@ void pcb_remove_actions_by_cookie(const char *cookie); int pcb_action(pcb_hidlib_t *hl, const char *action_); -int pcb_actionva(const char *action_, ...); /* NULL terminated */ +int pcb_actionva(pcb_hidlib_t *hl, const char *action_, ...); /* NULL terminated */ int pcb_actionv(const char *action_, int argc_, const char **argv_); fgw_error_t pcb_actionv_(const fgw_func_t *f, fgw_arg_t *res, int argc, fgw_arg_t *argv); Index: trunk/src/buffer.c =================================================================== --- trunk/src/buffer.c (revision 28033) +++ trunk/src/buffer.c (revision 28034) @@ -849,7 +849,7 @@ pcb_message(PCB_MSG_WARNING, "Nothing buffer-movable is selected, nothing moved to the paste buffer\n"); goto error; } - pcb_actionva("RemoveSelected", NULL); + pcb_actionva(argv[0].val.argv0.user_call_ctx, "RemoveSelected", NULL); break; /* converts buffer contents into a subcircuit */ @@ -941,7 +941,7 @@ case F_Save: name = sbufnum; - rv = pcb_actionva("SaveTo", "PasteBuffer", name, fmt, NULL); + rv = pcb_actionva(argv[0].val.argv0.user_call_ctx, "SaveTo", "PasteBuffer", name, fmt, NULL); pcb_notify_crosshair_change(pcb_true); return rv; Index: trunk/src/change_act.c =================================================================== --- trunk/src/change_act.c (revision 28033) +++ trunk/src/change_act.c (revision 28034) @@ -510,7 +510,7 @@ if (pcb_chg_obj_name_query(ptr2)) { pcb_hid_redraw(PCB); pcb_board_set_changed_flag(pcb_true); - pcb_actionva("DeleteRats", "AllRats", NULL); + pcb_actionva(argv[0].val.argv0.user_call_ctx, "DeleteRats", "AllRats", NULL); } } break; Index: trunk/src/file_act.c =================================================================== --- trunk/src/file_act.c (revision 28033) +++ trunk/src/file_act.c (revision 28034) @@ -275,14 +275,14 @@ /* shorthand kept only for compatibility reasons - do not use */ case F_AllConnections: pcb_message(PCB_MSG_WARNING, "Please use action ExportOldConn() instead of SaveTo() for connections.\n"); - return pcb_actionva("ExportOldConn", "AllConnections", name, NULL); + return pcb_actionva(argv[0].val.argv0.user_call_ctx, "ExportOldConn", "AllConnections", name, NULL); case F_AllUnusedPins: pcb_message(PCB_MSG_WARNING, "Please use action ExportOldConn() instead of SaveTo() for connections.\n"); - return pcb_actionva("ExportOldConn", "AllUnusedPins", name, NULL); + return pcb_actionva(argv[0].val.argv0.user_call_ctx, "ExportOldConn", "AllUnusedPins", name, NULL); case F_ElementConnections: case F_SubcConnections: pcb_message(PCB_MSG_WARNING, "Please use action ExportOldConn() instead of SaveTo() for connections.\n"); - return pcb_actionva("ExportOldConn", "SubcConnections", name, NULL); + return pcb_actionva(argv[0].val.argv0.user_call_ctx, "ExportOldConn", "SubcConnections", name, NULL); } PCB_ACT_FAIL(SaveTo); Index: trunk/src/gui_act.c =================================================================== --- trunk/src/gui_act.c (revision 28033) +++ trunk/src/gui_act.c (revision 28034) @@ -305,7 +305,7 @@ /* display the pinout of a subcircuit */ case F_Pinout: - return pcb_actionva("pinout", NULL); + return pcb_actionva(argv[0].val.argv0.user_call_ctx, "pinout", NULL); /* toggle displaying of terminal names */ case F_PinOrPadName: Index: trunk/src/main.c =================================================================== --- trunk/src/main.c (revision 28033) +++ trunk/src/main.c (revision 28034) @@ -476,7 +476,7 @@ if (conf_core.rc.script_filename) { pcb_message(PCB_MSG_INFO, "Executing startup script file %s\n", conf_core.rc.script_filename); - pcb_actionva("ExecuteFile", conf_core.rc.script_filename, NULL); + pcb_actionva(&PCB->hidlib, "ExecuteFile", conf_core.rc.script_filename, NULL); } if (conf_core.rc.action_string) { pcb_message(PCB_MSG_INFO, "Executing startup action %s\n", conf_core.rc.action_string); Index: trunk/src/plug_io.c =================================================================== --- trunk/src/plug_io.c (revision 28033) +++ trunk/src/plug_io.c (revision 28034) @@ -707,7 +707,7 @@ long int len = pcb_view_list_length(&pcb_io_incompat_lst); if (len > 0) { pcb_message(PCB_MSG_ERROR, "There were %ld save incompatibility errors.\nData in memory is not affected, but the file created may be slightly broken.\nSee the popup view listing for detauls.\n", len); - pcb_actionva("IOincompatList", conf_core.editor.io_incomp_style, "auto", NULL); + pcb_actionva(&PCB->hidlib, "IOincompatList", conf_core.editor.io_incomp_style, "auto", NULL); } } Index: trunk/src/tool_buffer.c =================================================================== --- trunk/src/tool_buffer.c (revision 28033) +++ trunk/src/tool_buffer.c (revision 28034) @@ -58,7 +58,7 @@ void pcb_tool_buffer_notify_mode(void) { if (pcb_gui->shift_is_pressed(pcb_gui)) { - pcb_actionva("ReplaceFootprint", "object", "@buffer", "dumb", NULL); + pcb_actionva(&PCB->hidlib, "ReplaceFootprint", "object", "@buffer", "dumb", NULL); return; } Index: trunk/src/tool_lock.c =================================================================== --- trunk/src/tool_lock.c (revision 28033) +++ trunk/src/tool_lock.c (revision 28034) @@ -58,7 +58,7 @@ DrawSubc(subc); pcb_draw(); - pcb_actionva("Report", "Subc", "log", NULL); + pcb_actionva(&PCB->hidlib, "Report", "Subc", "log", NULL); } else if (type != PCB_OBJ_VOID) { pcb_text_t *thing = (pcb_text_t *) ptr3; @@ -70,7 +70,7 @@ pcb_draw_obj((pcb_any_obj_t *)ptr2); pcb_draw(); } - pcb_actionva("Report", "Object", "log", NULL); + pcb_actionva(&PCB->hidlib, "Report", "Object", "log", NULL); } } Index: trunk/src/tool_poly.c =================================================================== --- trunk/src/tool_poly.c (revision 28033) +++ trunk/src/tool_poly.c (revision 28034) @@ -49,6 +49,9 @@ pcb_notify_crosshair_change(pcb_true); } +TODO("remove this when pcb_tool_poly_notify_mode() loses PCB") +#include "board.h" + void pcb_tool_poly_notify_mode(void) { pcb_point_t *points = pcb_crosshair.AttachedPolygon.Points; @@ -64,13 +67,13 @@ /* check if this is the last point of a polygon */ if (n >= 3 && points[0].X == pcb_crosshair.AttachedLine.Point2.X && points[0].Y == pcb_crosshair.AttachedLine.Point2.Y) { - pcb_actionva("Polygon", "Close", NULL); + pcb_actionva(&PCB->hidlib, "Polygon", "Close", NULL); return; } /* Someone clicking twice on the same point ('doubleclick'): close polygon */ if (n >= 3 && points[n - 1].X == pcb_crosshair.AttachedLine.Point2.X && points[n - 1].Y == pcb_crosshair.AttachedLine.Point2.Y) { - pcb_actionva("Polygon", "Close", NULL); + pcb_actionva(&PCB->hidlib, "Polygon", "Close", NULL); return; } Index: trunk/src/tool_polyhole.c =================================================================== --- trunk/src/tool_polyhole.c (revision 28033) +++ trunk/src/tool_polyhole.c (revision 28034) @@ -50,6 +50,9 @@ pcb_notify_crosshair_change(pcb_true); } +TODO("remove this when pcb_tool_polyhole_notify_mode() loses PCB") +#include "board.h" + void pcb_tool_polyhole_notify_mode(void) { switch (pcb_crosshair.AttachedObject.State) { @@ -96,13 +99,13 @@ /* check if this is the last point of a polygon */ if (n >= 3 && points[0].X == pcb_crosshair.AttachedLine.Point2.X && points[0].Y == pcb_crosshair.AttachedLine.Point2.Y) { - pcb_actionva("Polygon", "CloseHole", NULL); + pcb_actionva(&PCB->hidlib, "Polygon", "CloseHole", NULL); break; } /* Someone clicking twice on the same point ('doubleclick'): close polygon hole */ if (n >= 3 && points[n - 1].X == pcb_crosshair.AttachedLine.Point2.X && points[n - 1].Y == pcb_crosshair.AttachedLine.Point2.Y) { - pcb_actionva("Polygon", "CloseHole", NULL); + pcb_actionva(&PCB->hidlib, "Polygon", "CloseHole", NULL); break; } Index: trunk/src_plugins/cam/cam.c =================================================================== --- trunk/src_plugins/cam/cam.c (revision 28033) +++ trunk/src_plugins/cam/cam.c (revision 28034) @@ -177,7 +177,7 @@ } if (pcb_strcasecmp(cmd, "gui") == 0) { - rs = cam_gui(arg); + rs = cam_gui(argv[0].val.argv0.user_call_ctx, arg); } else { if (arg == NULL) { Index: trunk/src_plugins/cam/cam_compile.c =================================================================== --- trunk/src_plugins/cam/cam_compile.c (revision 28033) +++ trunk/src_plugins/cam/cam_compile.c (revision 28034) @@ -81,7 +81,7 @@ case PCB_CAM_PARTIAL: if (code->op.partial.arg != NULL) { ctx->partial = 1; - pcb_actionva("query", "setflag:exportsel", code->op.partial.arg, NULL); + pcb_actionva(&PCB->hidlib, "query", "setflag:exportsel", code->op.partial.arg, NULL); } else { if (ctx->partial) { Index: trunk/src_plugins/cam/cam_compile.h =================================================================== --- trunk/src_plugins/cam/cam_compile.h (revision 28033) +++ trunk/src_plugins/cam/cam_compile.h (revision 28034) @@ -73,6 +73,7 @@ #include typedef struct { + pcb_hidlib_t *hidlib; char *prefix; /* strdup'd file name prefix from the last prefix command */ pcb_hid_t *exporter; unsigned partial:1; /* when 1, there are objects marked with the EXPORTSEL flag */ Index: trunk/src_plugins/cam/cam_gui.c =================================================================== --- trunk/src_plugins/cam/cam_gui.c (revision 28033) +++ trunk/src_plugins/cam/cam_gui.c (revision 28034) @@ -199,7 +199,7 @@ if (row != NULL) { const char *outfile = ctx->dlg[ctx->woutfile].val.str; char *tmp = pcb_strdup_printf("outfile=%s", outfile); - pcb_actionva("cam", "call", row->cell[0], tmp, NULL); + pcb_actionva(ctx->cam.hidlib, "cam", "call", row->cell[0], tmp, NULL); free(tmp); } } @@ -257,7 +257,7 @@ PCB_DAD_END(ctx->dlg); } -static int cam_gui(const char *arg) +static int cam_gui(pcb_hidlib_t *hidlib, const char *arg) { cam_dlg_t *ctx = calloc(sizeof(cam_dlg_t), 1); const char *opt_hdr[] = {"key", "option value", NULL}; @@ -265,6 +265,7 @@ const char *digest_hdr[] = {"file", "plugin", "layer groups", NULL}; pcb_hid_dad_buttons_t clbtn[] = {{"Close", 0}, {NULL, 0}}; + ctx->cam.hidlib = hidlib; ctx->cam.vars = pcb_cam_vars_alloc(); PCB_DAD_BEGIN_VBOX(ctx->dlg); Index: trunk/src_plugins/ddraft/constraint_gui.c =================================================================== --- trunk/src_plugins/ddraft/constraint_gui.c (revision 28033) +++ trunk/src_plugins/ddraft/constraint_gui.c (revision 28034) @@ -158,18 +158,18 @@ static void set_paral(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *attr) { - pcb_actionva("paral", NULL); + pcb_actionva(&PCB->hidlib, "paral", NULL); } static void set_perp(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *attr) { - pcb_actionva("perp", NULL); + pcb_actionva(&PCB->hidlib, "perp", NULL); } static void set_tang(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *attr) { - pcb_actionva("tang", NULL); + pcb_actionva(&PCB->hidlib, "tang", NULL); } void cons_gui_confchg(conf_native_t *cfg, int arr_idx) Index: trunk/src_plugins/dialogs/dlg_fontsel.c =================================================================== --- trunk/src_plugins/dialogs/dlg_fontsel.c (revision 28033) +++ trunk/src_plugins/dialogs/dlg_fontsel.c (revision 28034) @@ -119,7 +119,7 @@ static void btn_load_cb(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *attr) { - pcb_actionva("LoadFontFrom", NULL); /* modal, blocking */ + pcb_actionva(&PCB->hidlib, "LoadFontFrom", NULL); /* modal, blocking */ fontsel_preview_update((fontsel_ctx_t *)caller_data); } @@ -127,7 +127,7 @@ { char file[1] = "", id[5]; pcb_snprintf(id, sizeof(id), "%ld", conf_core.design.text_font_id); - pcb_actionva("LoadFontFrom", file, id, NULL); /* modal, blocking */ + pcb_actionva(&PCB->hidlib, "LoadFontFrom", file, id, NULL); /* modal, blocking */ fontsel_preview_update((fontsel_ctx_t *)caller_data); } Index: trunk/src_plugins/dialogs/dlg_infobar.c =================================================================== --- trunk/src_plugins/dialogs/dlg_infobar.c (revision 28033) +++ trunk/src_plugins/dialogs/dlg_infobar.c (revision 28034) @@ -39,12 +39,12 @@ static void ifb_file_chg_reload_cb(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *attr) { pcb_revert_pcb(); - pcb_actionva("InfoBarFileChanged", "close", NULL); + pcb_actionva(&PCB->hidlib, "InfoBarFileChanged", "close", NULL); } static void ifb_file_chg_close_cb(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *attr) { - pcb_actionva("InfoBarFileChanged", "close", NULL); + pcb_actionva(&PCB->hidlib, "InfoBarFileChanged", "close", NULL); } const char pcb_acts_InfoBarFileChanged[] = "InfoBarFileChanged(open|close)\n"; Index: trunk/src_plugins/dialogs/dlg_library.c =================================================================== --- trunk/src_plugins/dialogs/dlg_library.c (revision 28033) +++ trunk/src_plugins/dialogs/dlg_library.c (revision 28034) @@ -671,7 +671,7 @@ fgw_error_t pcb_act_LibraryDialog(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { if (strcmp(pcb_gui->name, "lesstif") == 0) - pcb_actionva("DoWindows", "library"); + pcb_actionva(oargv[0].val.argv0.user_call_ctx, "DoWindows", "library"); else pcb_dlg_library(); return 0; Index: trunk/src_plugins/dialogs/dlg_loadsave.c =================================================================== --- trunk/src_plugins/dialogs/dlg_loadsave.c (revision 28033) +++ trunk/src_plugins/dialogs/dlg_loadsave.c (revision 28034) @@ -87,7 +87,7 @@ if (name != NULL) { if (pcbhl_conf.rc.verbose) fprintf(stderr, "Load: Calling LoadFrom(%s, %s)\n", function, name); - pcb_actionva("LoadFrom", function, name, NULL); + pcb_actionva(argv[0].val.argv0.user_call_ctx, "LoadFrom", function, name, NULL); free(name); } @@ -414,7 +414,7 @@ if (pcb_strcasecmp(function, "Layout") == 0) if (PCB->hidlib.filename != NULL) - return pcb_actionva("SaveTo", "Layout", NULL); + return pcb_actionva(argv[0].val.argv0.user_call_ctx, "SaveTo", "Layout", NULL); if (is_dialog) { const char *siot, *sext; @@ -593,7 +593,7 @@ const char *sfmt = avail.plug[fmt]->description; if (fmt_param != NULL) sfmt = avail.plug[save.pick]->description; - pcb_actionva("PasteBuffer", "Save", final_name, sfmt, NULL); + pcb_actionva(argv[0].val.argv0.user_call_ctx, "PasteBuffer", "Save", final_name, sfmt, NULL); } else { const char *sfmt = NULL; @@ -606,9 +606,9 @@ * just obtained. */ if (pcb_strcasecmp(function, "Layout") == 0) - pcb_actionva("SaveTo", "LayoutAs", final_name, sfmt, NULL); + pcb_actionva(argv[0].val.argv0.user_call_ctx, "SaveTo", "LayoutAs", final_name, sfmt, NULL); else - pcb_actionva("SaveTo", function, final_name, sfmt, NULL); + pcb_actionva(argv[0].val.argv0.user_call_ctx, "SaveTo", function, final_name, sfmt, NULL); } free(final_name); Index: trunk/src_plugins/dialogs/dlg_netlist.c =================================================================== --- trunk/src_plugins/dialogs/dlg_netlist.c (revision 28033) +++ trunk/src_plugins/dialogs/dlg_netlist.c (revision 28034) @@ -202,30 +202,30 @@ name = pcb_strdup(r->cell[0]); if (w == ctx->wsel) - pcb_actionva("netlist", "select", name, NULL); + pcb_actionva(&ctx->pcb->hidlib, "netlist", "select", name, NULL); else if (w == ctx->wunsel) - pcb_actionva("netlist", "unselect", name, NULL); + pcb_actionva(&ctx->pcb->hidlib, "netlist", "unselect", name, NULL); else if (w == ctx->wfind) { - pcb_actionva("connection", "reset", NULL); - pcb_actionva("netlist", "find", name, NULL); + pcb_actionva(&ctx->pcb->hidlib, "connection", "reset", NULL); + pcb_actionva(&ctx->pcb->hidlib, "netlist", "find", name, NULL); } else if (w == ctx->wunfind) - pcb_actionva("connection", "reset", NULL); + pcb_actionva(&ctx->pcb->hidlib, "connection", "reset", NULL); else if (w == ctx->wrats) - pcb_actionva("netlist", "rats", name, NULL); + pcb_actionva(&ctx->pcb->hidlib, "netlist", "rats", name, NULL); else if (w == ctx->wnorats) - pcb_actionva("netlist", "norats", name, NULL); + pcb_actionva(&ctx->pcb->hidlib, "netlist", "norats", name, NULL); else if (w == ctx->wripup) - pcb_actionva("netlist", "ripup", name, NULL); + pcb_actionva(&ctx->pcb->hidlib, "netlist", "ripup", name, NULL); else if (w == ctx->waddrats) - pcb_actionva("netlist", "AddRats", name, NULL); + pcb_actionva(&ctx->pcb->hidlib, "netlist", "AddRats", name, NULL); else if (w == ctx->wrename) - pcb_actionva("netlist", "rename", name, NULL); + pcb_actionva(&ctx->pcb->hidlib, "netlist", "rename", name, NULL); else if (w == ctx->wmerge) - pcb_actionva("netlist", "merge", name, NULL); + pcb_actionva(&ctx->pcb->hidlib, "netlist", "merge", name, NULL); else if (w == ctx->wattr) { char *tmp = pcb_concat("net:", name, NULL); - pcb_actionva("propedit", tmp, NULL); + pcb_actionva(&ctx->pcb->hidlib, "propedit", tmp, NULL); free(tmp); } else { @@ -237,17 +237,20 @@ static void netlist_claim_obj_cb(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *attr) { - pcb_actionva("ClaimNet", "object", NULL); + netlist_ctx_t *ctx = caller_data; + pcb_actionva(&ctx->pcb->hidlib, "ClaimNet", "object", NULL); } static void netlist_claim_sel_cb(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *attr) { - pcb_actionva("ClaimNet", "selected", NULL); + netlist_ctx_t *ctx = caller_data; + pcb_actionva(&ctx->pcb->hidlib, "ClaimNet", "selected", NULL); } static void netlist_claim_fnd_cb(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *attr) { - pcb_actionva("ClaimNet", "found", NULL); + netlist_ctx_t *ctx = caller_data; + pcb_actionva(&ctx->pcb->hidlib, "ClaimNet", "found", NULL); } static vtp0_t netlist_color_save; @@ -443,7 +446,7 @@ static fgw_error_t pcb_act_NetlistDialog(fgw_arg_t *res, int argc, fgw_arg_t *argv) { if (strcmp(pcb_gui->name, "lesstif") == 0) - pcb_actionva("DoWindows", "netlist"); + pcb_actionva(argv[0].val.argv0.user_call_ctx, "DoWindows", "netlist"); else pcb_dlg_netlist(PCB); PCB_ACT_IRES(0); Index: trunk/src_plugins/dialogs/dlg_pref_board.c =================================================================== --- trunk/src_plugins/dialogs/dlg_pref_board.c (revision 28033) +++ trunk/src_plugins/dialogs/dlg_pref_board.c (revision 28034) @@ -70,7 +70,7 @@ static void pref_board_edit_attr(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *attr) { - pcb_actionva("Propedit", "board", NULL); + pcb_actionva(&PCB->hidlib, "Propedit", "board", NULL); } Index: trunk/src_plugins/dialogs/dlg_search.c =================================================================== --- trunk/src_plugins/dialogs/dlg_search.c (revision 28033) +++ trunk/src_plugins/dialogs/dlg_search.c (revision 28034) @@ -294,11 +294,13 @@ pcb_message(PCB_MSG_ERROR, "Too many expression rows, can not add more\n"); } +TODO("remove this when search_apply_cb loses PCB") +#include "board.h" static void search_apply_cb(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *attr) { search_ctx_t *ctx = caller_data; if (ctx->dlg[ctx->wexpr_str].val.str != NULL) - pcb_actionva("query", search_acts[ctx->dlg[ctx->wact].val.lng], ctx->dlg[ctx->wexpr_str].val.str, NULL); + pcb_actionva(&PCB->hidlib, "query", search_acts[ctx->dlg[ctx->wact].val.lng], ctx->dlg[ctx->wexpr_str].val.str, NULL); } Index: trunk/src_plugins/draw_csect/draw_csect.c =================================================================== --- trunk/src_plugins/draw_csect/draw_csect.c (revision 28033) +++ trunk/src_plugins/draw_csect/draw_csect.c (revision 28034) @@ -793,7 +793,7 @@ if (lactive >= 0) { char tmp[32]; sprintf(tmp, "%ld", lactive); - pcb_actionva("MoveLayer", tmp, "-1", NULL); + pcb_actionva(&PCB->hidlib, "MoveLayer", tmp, "-1", NULL); } drag_dellayer = 0; lactive = -1; @@ -860,13 +860,13 @@ lid = get_layer_coords(x, y); if (lid >= 0) { pcb_layervis_change_group_vis(lid, 1, 1); - pcb_actionva("Popup", "layer", NULL); + pcb_actionva(&PCB->hidlib, "Popup", "layer", NULL); } else if ((x > 0) && (x < PCB_MM_TO_COORD(GROUP_WIDTH_MM))) { pcb_coord_t tmp; pcb_actd_EditGroup_gid = get_group_coords(y, &tmp, &tmp); if (pcb_actd_EditGroup_gid >= 0) - pcb_actionva("Popup", "group", NULL); + pcb_actionva(&PCB->hidlib, "Popup", "group", NULL); } break; Index: trunk/src_plugins/fontmode/fontmode.c =================================================================== --- trunk/src_plugins/fontmode/fontmode.c (revision 28033) +++ trunk/src_plugins/fontmode/fontmode.c (revision 28034) @@ -112,7 +112,7 @@ return 1; } - if (pcb_actionva("New", "Font", 0)) + if (pcb_actionva(argv[0].val.argv0.user_call_ctx, "New", "Font", 0)) return 1; pcb_conf_set(CFR_DESIGN, "editor/grid_unit", -1, "mil", POL_OVERWRITE); @@ -338,7 +338,7 @@ } pcb_font_set_info(font); - pcb_actionva("SaveFontTo", NULL); + pcb_actionva(argv[0].val.argv0.user_call_ctx, "SaveFontTo", NULL); PCB_ACT_IRES(0); return 0; Index: trunk/src_plugins/hid_lesstif/dialogs.c =================================================================== --- trunk/src_plugins/hid_lesstif/dialogs.c (revision 28033) +++ trunk/src_plugins/hid_lesstif/dialogs.c (revision 28034) @@ -856,7 +856,7 @@ lesstif_show_library(); } else if (strcmp(a, "3") == 0 || pcb_strcasecmp(a, "Log") == 0) { - pcb_actionva("LogDialog", NULL); + pcb_actionva(ltf_hidlib, "LogDialog", NULL); } else if (strcmp(a, "4") == 0 || pcb_strcasecmp(a, "Netlist") == 0) { lesstif_show_netlist(); Index: trunk/src_plugins/hid_lesstif/netlist.c =================================================================== --- trunk/src_plugins/hid_lesstif/netlist.c (revision 28033) +++ trunk/src_plugins/hid_lesstif/netlist.c (revision 28034) @@ -33,6 +33,8 @@ static int n_netnode_strings; static char *last_pick; +extern pcb_hidlib_t *ltf_hidlib; + static void pick_net(XmString *name, int pick) { char *net_name = NULL; @@ -121,17 +123,17 @@ static void nbcb_select(pcb_net_t *net, int pos) { - pcb_actionva("netlist", "select", net->name, NULL); + pcb_actionva(ltf_hidlib, "netlist", "select", net->name, NULL); } static void nbcb_deselect(pcb_net_t *net, int pos) { - pcb_actionva("netlist", "unselect", net->name, NULL); + pcb_actionva(ltf_hidlib, "netlist", "unselect", net->name, NULL); } static void nbcb_find(pcb_net_t *net, int pos) { - pcb_actionva("netlist", "find", net->name, NULL); + pcb_actionva(ltf_hidlib, "netlist", "find", net->name, NULL); } static void nbcb_std_callback(Widget w, Std_Nbcb_Func v, XmPushButtonCallbackStruct * cbs) @@ -142,7 +144,7 @@ if (XmListGetSelectedPos(netlist_list, &posl, &posc) == False) return; if (v == nbcb_find) - pcb_actionva("connection", "reset", NULL); + pcb_actionva(ltf_hidlib, "connection", "reset", NULL); for(e = htsp_first(&PCB->netlist[PCB_NETLIST_EDITED]), i = 0; e != NULL; e = htsp_next(&PCB->netlist[PCB_NETLIST_EDITED], e), i++) { pcb_net_t *net = e->value; Index: trunk/src_plugins/import_calay/calay.c =================================================================== --- trunk/src_plugins/import_calay/calay.c (revision 28033) +++ trunk/src_plugins/import_calay/calay.c (revision 28034) @@ -65,8 +65,8 @@ char line[512]; char *curr = NULL; - pcb_actionva("Netlist", "Freeze", NULL); - pcb_actionva("Netlist", "Clear", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Freeze", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Clear", NULL); while(fgets(line, sizeof(line), fn) != NULL) { char *s, *next, *num; @@ -98,7 +98,7 @@ if (num != NULL) { *num = '-'; if (curr != NULL) - pcb_actionva("Netlist", "Add", curr, s, NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Add", curr, s, NULL); else pcb_message(PCB_MSG_ERROR, "Calay syntax error: %s is after a ;, not in any net\n", s); } @@ -120,8 +120,8 @@ } free(curr); - pcb_actionva("Netlist", "Sort", NULL); - pcb_actionva("Netlist", "Thaw", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Sort", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Thaw", NULL); return 0; } @@ -131,7 +131,7 @@ char line[512]; char *val, *refdes, *footprint, *end; int len; - pcb_actionva("ElementList", "start", NULL); + pcb_actionva(&PCB->hidlib, "ElementList", "start", NULL); while(fgets(line, sizeof(line), f) != NULL) { len = strlen(line); @@ -159,9 +159,9 @@ if (end != NULL) *end = '\0'; - pcb_actionva("ElementList", "Need", refdes, footprint, val, NULL); + pcb_actionva(&PCB->hidlib, "ElementList", "Need", refdes, footprint, val, NULL); } - pcb_actionva("ElementList", "Done", NULL); + pcb_actionva(&PCB->hidlib, "ElementList", "Done", NULL); return 0; } Index: trunk/src_plugins/import_fpcb_nl/fpcb_nl.c =================================================================== --- trunk/src_plugins/import_fpcb_nl/fpcb_nl.c (revision 28033) +++ trunk/src_plugins/import_fpcb_nl/fpcb_nl.c (revision 28034) @@ -70,9 +70,9 @@ return -1; } - pcb_actionva("ElementList", "start", NULL); - pcb_actionva("Netlist", "Freeze", NULL); - pcb_actionva("Netlist", "Clear", NULL); + pcb_actionva(&PCB->hidlib, "ElementList", "start", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Freeze", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Clear", NULL); while((line = fgets(buff, sizeof(buff), f)) != NULL) { rtrim(line); @@ -123,7 +123,7 @@ ltrim(fp); } if ((fp != NULL) && (*fp != '\0')) { - pcb_actionva("ElementList", "Need", line, fp, "", NULL); + pcb_actionva(&PCB->hidlib, "ElementList", "Need", line, fp, "", NULL); } else pcb_message(PCB_MSG_ERROR, "No footprint specified for %s\n", line); @@ -145,7 +145,7 @@ continue; } *tn = '-'; - pcb_actionva("Netlist", "Add", signame, curr, NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Add", signame, curr, NULL); } break; default: break; /* ignore line */ @@ -152,9 +152,9 @@ } } - pcb_actionva("Netlist", "Sort", NULL); - pcb_actionva("Netlist", "Thaw", NULL); - pcb_actionva("ElementList", "Done", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Sort", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Thaw", NULL); + pcb_actionva(&PCB->hidlib, "ElementList", "Done", NULL); fclose(f); return -1; Index: trunk/src_plugins/import_hpgl/hpgl.c =================================================================== --- trunk/src_plugins/import_hpgl/hpgl.c (revision 28033) +++ trunk/src_plugins/import_hpgl/hpgl.c (revision 28034) @@ -136,7 +136,7 @@ pcb_message(PCB_MSG_ERROR, "Error loading HP-GL: could not load any object from %s\n", fname); return 0; } - pcb_actionva("mode", "pastebuffer", NULL); + pcb_actionva(&PCB->hidlib, "mode", "pastebuffer", NULL); return 0; } Index: trunk/src_plugins/import_ipcd356/ipcd356.c =================================================================== --- trunk/src_plugins/import_ipcd356/ipcd356.c (revision 28033) +++ trunk/src_plugins/import_ipcd356/ipcd356.c (revision 28034) @@ -337,7 +337,7 @@ if (want_net && (netname_valid(netname))) { char tn[36]; sprintf(tn, "%s-%s", refdes, term); - pcb_actionva("Netlist", "Add", netname, tn, NULL); + pcb_actionva(&pcb->hidlib, "Netlist", "Add", netname, tn, NULL); } break; case '9': /* EOF */ @@ -403,15 +403,15 @@ } if (want_net) { - pcb_actionva("Netlist", "Freeze", NULL); - pcb_actionva("Netlist", "Clear", NULL); + pcb_actionva(argv[0].val.argv0.user_call_ctx, "Netlist", "Freeze", NULL); + pcb_actionva(argv[0].val.argv0.user_call_ctx, "Netlist", "Clear", NULL); } rs = ipc356_parse(PCB, f, fname, scs, want_net, want_pads); if (want_net) { - pcb_actionva("Netlist", "Sort", NULL); - pcb_actionva("Netlist", "Thaw", NULL); + pcb_actionva(argv[0].val.argv0.user_call_ctx, "Netlist", "Sort", NULL); + pcb_actionva(argv[0].val.argv0.user_call_ctx, "Netlist", "Thaw", NULL); } fclose(f); Index: trunk/src_plugins/import_ltspice/ltspice.c =================================================================== --- trunk/src_plugins/import_ltspice/ltspice.c (revision 28033) +++ trunk/src_plugins/import_ltspice/ltspice.c (revision 28034) @@ -84,7 +84,7 @@ if (sattr->footprint == NULL) pcb_message(PCB_MSG_ERROR, "ltspice: not importing refdes=%s: no footprint specified\n", sattr->refdes); else - pcb_actionva("ElementList", "Need", null_empty(sattr->refdes), null_empty(sattr->footprint), null_empty(sattr->value), NULL); + pcb_actionva(&PCB->hidlib, "ElementList", "Need", null_empty(sattr->refdes), null_empty(sattr->footprint), null_empty(sattr->value), NULL); } free(sattr->refdes); sattr->refdes = NULL; free(sattr->value); sattr->value = NULL; @@ -98,7 +98,7 @@ memset(&sattr, 0, sizeof(sattr)); - pcb_actionva("ElementList", "start", NULL); + pcb_actionva(&PCB->hidlib, "ElementList", "start", NULL); while(fgets(line, sizeof(line), fa) != NULL) { char *s; @@ -192,7 +192,7 @@ } } sym_flush(&sattr); - pcb_actionva("ElementList", "Done", NULL); + pcb_actionva(&PCB->hidlib, "ElementList", "Done", NULL); return 0; } @@ -200,8 +200,8 @@ { char line[1024]; - pcb_actionva("Netlist", "Freeze", NULL); - pcb_actionva("Netlist", "Clear", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Freeze", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Clear", NULL); while(fgets(line, sizeof(line), fn) != NULL) { int argc; @@ -215,13 +215,13 @@ int n; for(n = 2; n < argc; n++) { /* pcb_trace("net-add '%s' '%s'\n", argv[1], argv[n]);*/ - pcb_actionva("Netlist", "Add", argv[1], argv[n], NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Add", argv[1], argv[n], NULL); } } } - pcb_actionva("Netlist", "Sort", NULL); - pcb_actionva("Netlist", "Thaw", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Sort", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Thaw", NULL); return 0; } Index: trunk/src_plugins/import_mentor_sch/mentor_sch.c =================================================================== --- trunk/src_plugins/import_mentor_sch/mentor_sch.c (revision 28033) +++ trunk/src_plugins/import_mentor_sch/mentor_sch.c (revision 28034) @@ -94,8 +94,8 @@ } } - nethlp_elem_done(&ectx); -/* pcb_actionva("ElementList", "Need", null_empty(sattr->refdes), null_empty(sattr->footprint), null_empty(sattr->value), NULL);*/ + nethlp_elem_done(&PCB->hidlib, &ectx); +/* pcb_actionva(&PCB->hidlib, "ElementList", "Need", null_empty(sattr->refdes), null_empty(sattr->footprint), null_empty(sattr->value), NULL);*/ return 0; } @@ -117,7 +117,7 @@ if ((part != NULL) && (pin != NULL)) { if (*pin == '&') pin++; - nethlp_net_add_term(&nctx, part, pin); + nethlp_net_add_term(&PCB->hidlib, &nctx, part, pin); } } } @@ -176,9 +176,9 @@ return -1; } - pcb_actionva("Netlist", "Freeze", NULL); - pcb_actionva("Netlist", "Clear", NULL); - pcb_actionva("ElementList", "start", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Freeze", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Clear", NULL); + pcb_actionva(&PCB->hidlib, "ElementList", "start", NULL); for(library = dom->root->children; library != NULL; library = library->next) { if (strcmp(library->str, "library") == 0) { @@ -198,9 +198,9 @@ } } - pcb_actionva("ElementList", "Done", NULL); - pcb_actionva("Netlist", "Sort", NULL); - pcb_actionva("Netlist", "Thaw", NULL); + pcb_actionva(&PCB->hidlib, "ElementList", "Done", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Sort", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Thaw", NULL); /* for(n = library->children; n != NULL; n = n->next) { printf("n=%s\n", n->str); Index: trunk/src_plugins/import_mentor_sch/netlist_helper.c =================================================================== --- trunk/src_plugins/import_mentor_sch/netlist_helper.c (revision 28033) +++ trunk/src_plugins/import_mentor_sch/netlist_helper.c (revision 28034) @@ -214,7 +214,7 @@ htsp_set(&ectx->attr, pcb_strdup(r->new_key), pcb_strdup(dst)); } -void nethlp_elem_done(nethlp_elem_ctx_t *ectx) +void nethlp_elem_done(pcb_hidlib_t *hl, nethlp_elem_ctx_t *ectx) { htsp_entry_t *e; char *refdes, *footprint, *value; @@ -256,7 +256,7 @@ if (value == NULL) value = ""; /* create elemet */ - pcb_actionva("ElementList", "Need", refdes, footprint, value, NULL); + pcb_actionva(hl, "ElementList", "Need", refdes, footprint, value, NULL); /* printf("Elem '%s' -> %s:%s:%s\n", ectx->id, refdes, footprint, value);*/ } else @@ -288,7 +288,7 @@ return prealloc; } -void nethlp_net_add_term(nethlp_net_ctx_t *nctx, const char *part, const char *pin) +void nethlp_net_add_term(pcb_hidlib_t *hl, nethlp_net_ctx_t *nctx, const char *part, const char *pin) { char *refdes = htsp_get(&nctx->nhctx->id2refdes, part); char term[256]; @@ -296,7 +296,7 @@ pcb_message(PCB_MSG_ERROR, "nethelper: can't resolve refdes of part %s\n", part); } pcb_snprintf(term, sizeof(term), "%s-%s", refdes, pin); - pcb_actionva("Netlist", "Add", nctx->netname, term, NULL); + pcb_actionva(hl, "Netlist", "Add", nctx->netname, term, NULL); } void nethlp_net_destroy(nethlp_net_ctx_t *nctx) Index: trunk/src_plugins/import_mentor_sch/netlist_helper.h =================================================================== --- trunk/src_plugins/import_mentor_sch/netlist_helper.h (revision 28033) +++ trunk/src_plugins/import_mentor_sch/netlist_helper.h (revision 28034) @@ -1,5 +1,6 @@ #include #include +#include "global_typedefs.h" typedef struct nethlp_rule_s nethlp_rule_t; @@ -42,9 +43,9 @@ nethlp_elem_ctx_t *nethlp_elem_new(nethlp_ctx_t *nhctx, nethlp_elem_ctx_t *prealloc, const char *id); void nethlp_elem_refdes(nethlp_elem_ctx_t *ectx, const char *refdes); void nethlp_elem_attr(nethlp_elem_ctx_t *ectx, const char *key, const char *val); -void nethlp_elem_done(nethlp_elem_ctx_t *ectx); +void nethlp_elem_done(pcb_hidlib_t *hl, nethlp_elem_ctx_t *ectx); nethlp_net_ctx_t *nethlp_net_new(nethlp_ctx_t *nhctx, nethlp_net_ctx_t *prealloc, const char *netname); -void nethlp_net_add_term(nethlp_net_ctx_t *nctx, const char *part, const char *pin); +void nethlp_net_add_term(pcb_hidlib_t *hl, nethlp_net_ctx_t *nctx, const char *part, const char *pin); void nethlp_net_destroy(nethlp_net_ctx_t *nctx); Index: trunk/src_plugins/import_tinycad/tinycad.c =================================================================== --- trunk/src_plugins/import_tinycad/tinycad.c (revision 28033) +++ trunk/src_plugins/import_tinycad/tinycad.c (revision 28034) @@ -72,7 +72,7 @@ if (sattr->footprint == NULL) pcb_message(PCB_MSG_ERROR, "tinycad: not importing refdes=%s: no footprint specified\n", sattr->refdes); else - pcb_actionva("ElementList", "Need", null_empty(sattr->refdes), null_empty(sattr->footprint), null_empty(sattr->value), NULL); + pcb_actionva(&PCB->hidlib, "ElementList", "Need", null_empty(sattr->refdes), null_empty(sattr->footprint), null_empty(sattr->value), NULL); } free(sattr->refdes); sattr->refdes = NULL; free(sattr->value); sattr->value = NULL; @@ -87,9 +87,9 @@ memset(&sattr, 0, sizeof(sattr)); - pcb_actionva("ElementList", "start", NULL); - pcb_actionva("Netlist", "Freeze", NULL); - pcb_actionva("Netlist", "Clear", NULL); + pcb_actionva(&PCB->hidlib, "ElementList", "start", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Freeze", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Clear", NULL); while(fgets(line, sizeof(line), fn) != NULL) { int argc; @@ -118,7 +118,7 @@ if (sep != NULL) { *sep = '-'; /* pcb_trace("net-add '%s' '%s'\n", argv[2], curr);*/ - pcb_actionva("Netlist", "Add", argv[2], curr, NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Add", argv[2], curr, NULL); } } } @@ -144,9 +144,9 @@ sym_flush(&sattr); - pcb_actionva("Netlist", "Sort", NULL); - pcb_actionva("Netlist", "Thaw", NULL); - pcb_actionva("ElementList", "Done", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Sort", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Thaw", NULL); + pcb_actionva(&PCB->hidlib, "ElementList", "Done", NULL); return 0; } Index: trunk/src_plugins/io_autotrax/read.c =================================================================== --- trunk/src_plugins/io_autotrax/read.c (revision 28033) +++ trunk/src_plugins/io_autotrax/read.c (revision 28034) @@ -83,13 +83,13 @@ #define null_empty(s) ((s) == NULL ? "" : (s)) -static void sym_flush(symattr_t *sattr) +static void sym_flush(pcb_hidlib_t *hl, symattr_t *sattr) { if (sattr->refdes != NULL) { if (sattr->footprint == NULL) pcb_message(PCB_MSG_ERROR, "protel autotrax: not importing refdes=%s: no footprint specified\n", sattr->refdes); else - pcb_actionva("ElementList", "Need", null_empty(sattr->refdes), null_empty(sattr->footprint), null_empty(sattr->value), NULL); + pcb_actionva(hl, "ElementList", "Need", null_empty(sattr->refdes), null_empty(sattr->footprint), null_empty(sattr->value), NULL); } free(sattr->refdes); sattr->refdes = NULL; @@ -875,7 +875,7 @@ else { s = line; rtrim(s); - sym_flush(&sattr); + sym_flush(&st->pcb->hidlib, &sattr); free(sattr.refdes); sattr.refdes = pcb_strdup(line); } @@ -929,7 +929,7 @@ s = line; rtrim(s); if ((*line != '\0') && (netname != NULL)) { - pcb_actionva("Netlist", "Add", netname, line, NULL); + pcb_actionva(&st->pcb->hidlib, "Netlist", "Add", netname, line, NULL); } } } @@ -939,7 +939,7 @@ endpcb = 1; /* if we get here, something went wrong */ } } - sym_flush(&sattr); + sym_flush(&st->pcb->hidlib, &sattr); return 0; } @@ -1125,9 +1125,9 @@ } else if (strncmp(s, "NETDEF", 6) == 0) { if (netdefs == 0) { - pcb_actionva("ElementList", "start", NULL); - pcb_actionva("Netlist", "Freeze", NULL); - pcb_actionva("Netlist", "Clear", NULL); + pcb_actionva(&Ptr->hidlib, "ElementList", "start", NULL); + pcb_actionva(&Ptr->hidlib, "Netlist", "Freeze", NULL); + pcb_actionva(&Ptr->hidlib, "Netlist", "Clear", NULL); } netdefs |= 1; rdax_net(&st, FP); @@ -1148,9 +1148,9 @@ } } if (netdefs) { - pcb_actionva("Netlist", "Sort", NULL); - pcb_actionva("Netlist", "Thaw", NULL); - pcb_actionva("ElementList", "Done", NULL); + pcb_actionva(&Ptr->hidlib, "Netlist", "Sort", NULL); + pcb_actionva(&Ptr->hidlib, "Netlist", "Thaw", NULL); + pcb_actionva(&Ptr->hidlib, "ElementList", "Done", NULL); } fclose(FP); box = pcb_data_bbox(&board_size, Ptr->Data, pcb_false); Index: trunk/src_plugins/io_dsn/read.c =================================================================== --- trunk/src_plugins/io_dsn/read.c (revision 28033) +++ trunk/src_plugins/io_dsn/read.c (revision 28034) @@ -1639,7 +1639,7 @@ if (pcb_strcasecmp(nwr->str, "pins") == 0) { gsxl_node_t *n; for(n = nwr->children; n != NULL; n = n->next) - pcb_actionva("Netlist", "Add", netname, n->str, NULL); + pcb_actionva(&ctx->pcb->hidlib, "Netlist", "Add", netname, n->str, NULL); } else if (pcb_strcasecmp(nwr->str, "property") == 0) { parse_attribute(ctx, &net->Attributes, nwr->children); @@ -1651,8 +1651,8 @@ static int dsn_parse_network(dsn_read_t *ctx, gsxl_node_t *nwr) { - pcb_actionva("Netlist", "Freeze", NULL); - pcb_actionva("Netlist", "Clear", NULL); + pcb_actionva(&ctx->pcb->hidlib, "Netlist", "Freeze", NULL); + pcb_actionva(&ctx->pcb->hidlib, "Netlist", "Clear", NULL); for(nwr = nwr->children; nwr != NULL; nwr = nwr->next) { if (nwr->str == NULL) @@ -1663,8 +1663,8 @@ } } - pcb_actionva("Netlist", "Sort", NULL); - pcb_actionva("Netlist", "Thaw", NULL); + pcb_actionva(&ctx->pcb->hidlib, "Netlist", "Sort", NULL); + pcb_actionva(&ctx->pcb->hidlib, "Netlist", "Thaw", NULL); return 0; } Index: trunk/src_plugins/io_eagle/read.c =================================================================== --- trunk/src_plugins/io_eagle/read.c (revision 28033) +++ trunk/src_plugins/io_eagle/read.c (revision 28034) @@ -1252,10 +1252,10 @@ net = eagle_get_attrs(st, PARENT(subtree), "name", NULL); if (net != NULL && net[0] == '-' && net[1] == '\0') { /* pcb-rnd doesn't like it when Eagle uses '-' for GND*/ - pcb_actionva("Netlist", "Add", "GND", conn, NULL); + pcb_actionva(&st->pcb->hidlib, "Netlist", "Add", "GND", conn, NULL); pcb_message(PCB_MSG_WARNING, "Substituted contactref net \"GND\" instead of original invalid '-'\n"); } else { - pcb_actionva("Netlist", "Add", net, conn, NULL); + pcb_actionva(&st->pcb->hidlib, "Netlist", "Add", net, conn, NULL); } return 0; } @@ -1274,8 +1274,8 @@ {NULL, NULL} }; - pcb_actionva("Netlist", "Freeze", NULL); - pcb_actionva("Netlist", "Clear", NULL); + pcb_actionva(&st->pcb->hidlib, "Netlist", "Freeze", NULL); + pcb_actionva(&st->pcb->hidlib, "Netlist", "Clear", NULL); for(n = CHILDREN(subtree); n != NULL; n = NEXT(n)) { if (STRCMP(NODENAME(n), "signal") == 0) { @@ -1288,8 +1288,8 @@ } } - pcb_actionva("Netlist", "Sort", NULL); - pcb_actionva("Netlist", "Thaw", NULL); + pcb_actionva(&st->pcb->hidlib, "Netlist", "Sort", NULL); + pcb_actionva(&st->pcb->hidlib, "Netlist", "Thaw", NULL); return 0; } Index: trunk/src_plugins/io_hyp/parser.c =================================================================== --- trunk/src_plugins/io_hyp/parser.c (revision 28033) +++ trunk/src_plugins/io_hyp/parser.c (revision 28034) @@ -386,8 +386,8 @@ void hyp_netlist_begin() { /* clear netlist */ - pcb_actionva("Netlist", "Freeze", NULL); - pcb_actionva("Netlist", "Clear", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Freeze", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Clear", NULL); return; } @@ -401,7 +401,7 @@ if ((net_name != NULL) && (device_name != NULL) && (pin_name != NULL)) { pcb_snprintf(conn, sizeof(conn), "%s-%s", device_name, pin_name); - pcb_actionva("Netlist", "Add", net_name, conn, NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Add", net_name, conn, NULL); } return; } @@ -409,8 +409,8 @@ void hyp_netlist_end() { /* sort netlist */ - pcb_actionva("Netlist", "Sort", NULL); - pcb_actionva("Netlist", "Thaw", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Sort", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Thaw", NULL); return; } Index: trunk/src_plugins/io_kicad/read_net.c =================================================================== --- trunk/src_plugins/io_kicad/read_net.c (revision 28033) +++ trunk/src_plugins/io_kicad/read_net.c (revision 28034) @@ -97,7 +97,7 @@ } /* Load the elements */ - pcb_actionva("ElementList", "start", NULL); + pcb_actionva(&PCB->hidlib, "ElementList", "start", NULL); for(c = components->children; c != NULL; c = c->next) { const char *ref = NULL, *value = NULL, *footprint = NULL; @@ -116,15 +116,15 @@ pcb_message(PCB_MSG_WARNING, "eeschema: ignoring component %s with no footprint\n", ref); continue; } - pcb_actionva("ElementList", "Need", ref, footprint, value == NULL ? "" : value, NULL); + pcb_actionva(&PCB->hidlib, "ElementList", "Need", ref, footprint, value == NULL ? "" : value, NULL); } - pcb_actionva("ElementList", "Done", NULL); + pcb_actionva(&PCB->hidlib, "ElementList", "Done", NULL); /* Load the netlist */ - pcb_actionva("Netlist", "Freeze", NULL); - pcb_actionva("Netlist", "Clear", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Freeze", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Clear", NULL); for(net = nets->children; net != NULL; net = net->next) { const char *netname = NULL, *code = NULL, *name = NULL; @@ -163,13 +163,13 @@ continue; } pcb_snprintf(refpin, sizeof(refpin), "%s-%s", ref, pin); - pcb_actionva("Netlist", "Add", netname, refpin, NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Add", netname, refpin, NULL); } } } - pcb_actionva("Netlist", "Sort", NULL); - pcb_actionva("Netlist", "Thaw", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Sort", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Thaw", NULL); return 0; } Index: trunk/src_plugins/io_tedax/tnetlist.c =================================================================== --- trunk/src_plugins/io_tedax/tnetlist.c (revision 28033) +++ trunk/src_plugins/io_tedax/tnetlist.c (revision 28034) @@ -76,8 +76,8 @@ htsp_init(&fps, strhash, strkeyeq); htsp_init(&pinnames, strhash, strkeyeq); - pcb_actionva("Netlist", "Freeze", NULL); - pcb_actionva("Netlist", "Clear", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Freeze", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Clear", NULL); while((argc = tedax_getline(fn, line, sizeof(line), argv, sizeof(argv)/sizeof(argv[0]))) >= 0) { if ((argc == 3) && (strcmp(argv[0], "footprint") == 0)) { @@ -91,7 +91,7 @@ else if ((argc == 4) && (strcmp(argv[0], "conn") == 0)) { char id[512]; sprintf(id, "%s-%s", argv[2], argv[3]); - pcb_actionva("Netlist", "Add", argv[1], id, NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Add", argv[1], id, NULL); } else if ((argc == 4) && (strcmp(argv[0], "pinname") == 0)) { char id[512]; @@ -107,11 +107,11 @@ break; } - pcb_actionva("Netlist", "Sort", NULL); - pcb_actionva("Netlist", "Thaw", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Sort", NULL); + pcb_actionva(&PCB->hidlib, "Netlist", "Thaw", NULL); if (import_fp) { - pcb_actionva("ElementList", "start", NULL); + pcb_actionva(&PCB->hidlib, "ElementList", "start", NULL); for (e = htsp_first(&fps); e; e = htsp_next(&fps, e)) { fp_t *fp = e->value; @@ -119,7 +119,7 @@ if (fp->footprint == NULL) pcb_message(PCB_MSG_ERROR, "tedax: not importing refdes=%s: no footprint specified\n", e->key); else - pcb_actionva("ElementList", "Need", null_empty(e->key), null_empty(fp->footprint), null_empty(fp->value), NULL); + pcb_actionva(&PCB->hidlib, "ElementList", "Need", null_empty(e->key), null_empty(fp->footprint), null_empty(fp->value), NULL); free(e->key); free(fp->value); @@ -126,7 +126,7 @@ free(fp->footprint); free(fp); } - pcb_actionva("ElementList", "Done", NULL); + pcb_actionva(&PCB->hidlib, "ElementList", "Done", NULL); } for (e = htsp_first(&pinnames); e; e = htsp_next(&pinnames, e)) { @@ -135,7 +135,7 @@ if (pin != NULL) { *pin = '\0'; pin++; - pcb_actionva("ChangePinName", refdes, pin, name, NULL); + pcb_actionva(&PCB->hidlib, "ChangePinName", refdes, pin, name, NULL); } free(e->key); free(e->value); Index: trunk/src_plugins/lib_gtk_common/in_mouse.c =================================================================== --- trunk/src_plugins/lib_gtk_common/in_mouse.c (revision 28033) +++ trunk/src_plugins/lib_gtk_common/in_mouse.c (revision 28034) @@ -173,7 +173,7 @@ return pcb_false; getting_loc = 1; - pcb_actionva("StatusSetText", message, NULL); + pcb_actionva(ctx->hidlib, "StatusSetText", message, NULL); chst = pcb_hidlib_crosshair_suspend(); @@ -209,7 +209,7 @@ pcb_hidlib_crosshair_restore(chst); ghid_restore_cursor(ctx); - pcb_actionva("StatusSetText", NULL); + pcb_actionva(ctx->hidlib, "StatusSetText", NULL); getting_loc = 0; return lctx.got_location; } Index: trunk/src_plugins/lib_hid_common/dlg_log.c =================================================================== --- trunk/src_plugins/lib_hid_common/dlg_log.c (revision 28033) +++ trunk/src_plugins/lib_hid_common/dlg_log.c (revision 28034) @@ -42,6 +42,7 @@ int active; int wtxt, wscroll; int gui_inited; + pcb_hidlib_t *hidlib; } log_ctx_t; static log_ctx_t log_ctx; @@ -110,12 +111,14 @@ static void btn_clear_cb(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *attr) { - pcb_actionva("log", "clear", NULL); + log_ctx_t *ctx = caller_data; + pcb_actionva(ctx->hidlib, "log", "clear", NULL); } static void btn_export_cb(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *attr) { - pcb_actionva("log", "export", NULL); + log_ctx_t *ctx = caller_data; + pcb_actionva(ctx->hidlib, "log", "export", NULL); } static void maybe_scroll_to_bottom() @@ -127,7 +130,7 @@ txt->hid_scroll_to_bottom(atxt, log_ctx.dlg_hid_ctx); } -static void log_window_create(void) +static void log_window_create(pcb_hidlib_t *hidlib) { log_ctx_t *ctx = &log_ctx; pcb_hid_attr_val_t hv; @@ -136,6 +139,7 @@ return; memset(ctx, 0, sizeof(log_ctx_t)); + ctx->hidlib = hidlib; PCB_DAD_BEGIN_VBOX(ctx->dlg); PCB_DAD_COMPFLAG(ctx->dlg, PCB_HATF_EXPFILL); @@ -181,7 +185,7 @@ const char pcb_acth_LogDialog[] = "Open the log dialog."; fgw_error_t pcb_act_LogDialog(fgw_arg_t *res, int argc, fgw_arg_t *argv) { - log_window_create(); + log_window_create(argv[0].val.argv0.user_call_ctx); PCB_ACT_IRES(0); return 0; } @@ -202,7 +206,7 @@ pcb_conf_loglevel_props(line->level, &prefix, &popup); if (popup) - log_window_create(); + log_window_create(hidlib); } } @@ -230,7 +234,7 @@ pcb_conf_loglevel_props(n->level, &prefix, &popup); if (popup) { - log_window_create(); + log_window_create(hidlib); return; } } Index: trunk/src_plugins/lib_hid_pcbui/infobar.c =================================================================== --- trunk/src_plugins/lib_hid_pcbui/infobar.c (revision 28033) +++ trunk/src_plugins/lib_hid_pcbui/infobar.c (revision 28034) @@ -38,7 +38,7 @@ static void pcb_infobar_brdchg_ev(pcb_hidlib_t *hidlib, void *user_data, int argc, pcb_event_arg_t argv[]) { - pcb_actionva("InfoBarFileChanged", "close", NULL); + pcb_actionva(hidlib, "InfoBarFileChanged", "close", NULL); if ((hidlib != NULL) && (hidlib->filename != NULL)) last_date = pcb_file_mtime(NULL, PCB->hidlib.filename); else @@ -61,7 +61,7 @@ double last_chg = pcb_file_mtime(NULL, PCB->hidlib.filename); if (last_chg > last_date) { last_date = last_chg; - pcb_actionva("InfoBarFileChanged", "open", NULL); + pcb_actionva(&PCB->hidlib, "InfoBarFileChanged", "open", NULL); } } } @@ -91,7 +91,7 @@ { if ((PCB != NULL) && (PCB->hidlib.filename != NULL)) { last_date = pcb_file_mtime(NULL, PCB->hidlib.filename); - pcb_actionva("InfoBarFileChanged", "close", NULL); + pcb_actionva(hidlib, "InfoBarFileChanged", "close", NULL); } } Index: trunk/src_plugins/lib_hid_pcbui/layersel.c =================================================================== --- trunk/src_plugins/lib_hid_pcbui/layersel.c (revision 28033) +++ trunk/src_plugins/lib_hid_pcbui/layersel.c (revision 28034) @@ -274,7 +274,7 @@ else if (lys->ml != NULL) { vis = (pcb_bool *)((char *)PCB + lys->ml->vis_offs); *vis = 1; - pcb_actionva("SelectLayer", lys->ml->select_name, NULL); + pcb_actionva(&PCB->hidlib, "SelectLayer", lys->ml->select_name, NULL); } else return; @@ -430,7 +430,7 @@ return; layer_select(lys); - pcb_actionva("Popup", "layer", NULL); + pcb_actionva(&PCB->hidlib, "Popup", "layer", NULL); } extern pcb_layergrp_id_t pcb_actd_EditGroup_gid; @@ -440,7 +440,7 @@ if (grp->gid < 0) return; pcb_actd_EditGroup_gid = grp->gid; - pcb_actionva("Popup", "group", NULL); + pcb_actionva(&PCB->hidlib, "Popup", "group", NULL); } Index: trunk/src_plugins/lib_hid_pcbui/status.c =================================================================== --- trunk/src_plugins/lib_hid_pcbui/status.c (revision 28033) +++ trunk/src_plugins/lib_hid_pcbui/status.c (revision 28034) @@ -242,9 +242,9 @@ static void unit_change_cb(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *attr) { if (pcbhl_conf.editor.grid_unit == get_unit_struct("mm")) - pcb_actionva("SetUnits", "mil", NULL); + pcb_actionva(&PCB->hidlib, "SetUnits", "mil", NULL); else - pcb_actionva("SetUnits", "mm", NULL); + pcb_actionva(&PCB->hidlib, "SetUnits", "mm", NULL); status_rd_pcb2dlg(); } Index: trunk/src_plugins/puller/puller.c =================================================================== --- trunk/src_plugins/puller/puller.c (revision 28033) +++ trunk/src_plugins/puller/puller.c (revision 28034) @@ -2090,7 +2090,7 @@ } /* This canonicalizes all the lines, and cleans up near-misses. */ - /* pcb_actionva("djopt", "puller", 0); */ + /* pcb_actionva(&PCB->hidlib, "djopt", "puller", 0); */ cflg = pcb_layergrp_flags(PCB, pcb_layer_get_group_(CURRENT)); current_is_solder = (cflg & PCB_LYT_BOTTOM); Index: trunk/src_plugins/script/live_script.c =================================================================== --- trunk/src_plugins/script/live_script.c (revision 28033) +++ trunk/src_plugins/script/live_script.c (revision 28034) @@ -51,6 +51,7 @@ typedef struct { PCB_DAD_DECL_NOINIT(dlg) + pcb_hidlib_t *hidlib; char *name, *longname, *fn; char **langs; char **lang_engines; @@ -191,10 +192,10 @@ return; } - pcb_actionva("livescript", arg, lvs->name, NULL); + pcb_actionva(lvs->hidlib, "livescript", arg, lvs->name, NULL); } -static live_script_t *pcb_dlg_live_script(const char *name) +static live_script_t *pcb_dlg_live_script(pcb_hidlib_t *hidlib, const char *name) { pcb_hid_dad_buttons_t clbtn[] = {{"Close", 0}, {NULL, 0}}; char *title; @@ -207,6 +208,7 @@ return NULL; } + lvs->hidlib = hidlib; lvs->name = pcb_strdup(name); lvs->longname = pcb_concat("_live_script_", name, NULL); PCB_DAD_BEGIN_VBOX(lvs->dlg); @@ -448,7 +450,7 @@ PCB_ACT_IRES(1); return 0; } - lvs = pcb_dlg_live_script(name); + lvs = pcb_dlg_live_script(argv[0].val.argv0.user_call_ctx, name); if (lvs != NULL) { htsp_set(&pcb_live_scripts, lvs->name, lvs); PCB_ACT_IRES(0);