Index: src/pcb-gpmi/gpmi_plugin/gpmi_plugin.c =================================================================== --- src/pcb-gpmi/gpmi_plugin/gpmi_plugin.c (revision 682) +++ src/pcb-gpmi/gpmi_plugin/gpmi_plugin.c (revision 683) @@ -60,6 +60,7 @@ free(hdirh); } +int gpmi_hid_gui_inited = 0; static void ev_gui_init(void *user_data, int argc, event_arg_t *argv[]) { int ev; @@ -75,6 +76,7 @@ if (i->module != NULL) gpmi_event(i->module, ev, argc, argv); } + gpmi_hid_gui_inited = 1; } static void cmd_reload(char *name) Index: src/pcb-gpmi/gpmi_plugin/gpmi_plugin.h =================================================================== --- src/pcb-gpmi/gpmi_plugin/gpmi_plugin.h (revision 682) +++ src/pcb-gpmi/gpmi_plugin/gpmi_plugin.h (revision 683) @@ -1,2 +1,3 @@ +extern int gpmi_hid_gui_inited; /* whether the gui is already initialzied */ void gpmi_hid_print_error(gpmi_err_stack_t *entry, char *string); Index: src/pcb-gpmi/gpmi_plugin/scripts.c =================================================================== --- src/pcb-gpmi/gpmi_plugin/scripts.c (revision 682) +++ src/pcb-gpmi/gpmi_plugin/scripts.c (revision 683) @@ -107,9 +107,20 @@ } gpmi_err_stack_destroy(NULL); - if (module != NULL) - return hid_gpmi_script_info_add(i, module, params, module_name, config_file_name); + if (module != NULL) { + hid_gpmi_script_info_t *ri; + int ev; + ri = hid_gpmi_script_info_add(i, module, params, module_name, config_file_name); + if ((ri != NULL) && (gpmi_hid_gui_inited)) { + char *ev_args; + /* If a script is loaded with a GUI already inited, send the event right after the load */ + ev = gpmi_event_find("ACTE_gui_init", &ev_args); + gpmi_event(ri->module, ev, 0, NULL); + } + return ri; + } + return NULL; }