Index: src/Makefile.in =================================================================== --- src/Makefile.in (revision 1085) +++ src/Makefile.in (revision 1086) @@ -98,7 +98,7 @@ # main: action registrations put /local/pcb/ACTION_REG_SRC { action.c buffer.c change_act.c command.c file_act.c flags.c gui_act.c - import_sch.c main.c misc.c move.c netlist.c report.c rats_act.c + import_sch.c main.c misc.c move.c netlist.c plugins.c report.c rats_act.c select_act.c undo_act.c } Index: src/action.c =================================================================== --- src/action.c (revision 1085) +++ src/action.c (revision 1086) @@ -3233,59 +3233,6 @@ } /* ---------------------------------------------------------------- */ -static const char manageplugins_syntax[] = "ManagePlugins()\n"; - -static const char manageplugins_help[] = "Manage plugins dialog."; - -static int ManagePlugins(int argc, char **argv, Coord x, Coord y) -{ - plugin_info_t *i; - int nump = 0, numb = 0; - DynamicStringType str; - - memset(&str, 0, sizeof(str)); - - for (i = plugins; i != NULL; i = i->next) - if (i->dynamic) - nump++; - else - numb++; - - DSAddString(&str, "Plugins loaded:\n"); - if (nump > 0) { - for (i = plugins; i != NULL; i = i->next) { - if (i->dynamic) { - DSAddCharacter(&str, ' '); - DSAddString(&str, i->name); - DSAddCharacter(&str, ' '); - DSAddString(&str, i->path); - DSAddCharacter(&str, '\n'); - } - } - } - else - DSAddString(&str, " (none)\n"); - - DSAddString(&str, "\n\nBuildins:\n"); - if (numb > 0) { - for (i = plugins; i != NULL; i = i->next) { - if (!i->dynamic) { - DSAddCharacter(&str, ' '); - DSAddString(&str, i->name); - DSAddCharacter(&str, '\n'); - } - } - } - else - DSAddString(&str, " (none)\n"); - - DSAddString(&str, "\n\nNOTE: this is the alpha version, can only list plugins/buildins\n"); - gui->report_dialog("Manage plugins", str.Data); - free(str.Data); - return 0; -} - -/* ---------------------------------------------------------------- */ static const char replacefootprint_syntax[] = "ReplaceFootprint()\n"; static const char replacefootprint_help[] = "Replace the footprint of the selected components with the footprint specified."; @@ -3424,9 +3371,6 @@ {"ElementSetAttr", 0, ActionElementSetAttr, elementsetattr_help, elementsetattr_syntax} , - {"ManagePlugins", 0, ManagePlugins, - manageplugins_help, manageplugins_syntax} - , {"ReplaceFootprint", 0, ReplaceFootprint, replacefootprint_help, replacefootprint_syntax} , Index: src/action_list.h =================================================================== --- src/action_list.h (revision 1085) +++ src/action_list.h (revision 1086) @@ -91,6 +91,9 @@ /* rats_act.c () */ REGISTER_ACTIONS(rats_action_list) +/* plugins.c () */ +REGISTER_ACTIONS(plugins_action_list) + /* undo_act.c () */ REGISTER_ACTIONS(undo_action_list) Index: src/plugins.c =================================================================== --- src/plugins.c (revision 1085) +++ src/plugins.c (revision 1086) @@ -2,6 +2,13 @@ #include #include "plugins.h" +/* for the action */ +#include "config.h" +#include "global.h" +#include "data.h" +#include "action.h" +#include "ds.h" + plugin_info_t *plugins = NULL; void plugin_register(const char *name, const char *path, void *handle, int dynamic) @@ -16,3 +23,64 @@ i->next = plugins; plugins = i; } + +/* ---------------------------------------------------------------- */ +static const char manageplugins_syntax[] = "ManagePlugins()\n"; + +static const char manageplugins_help[] = "Manage plugins dialog."; + +static int ManagePlugins(int argc, char **argv, Coord x, Coord y) +{ + plugin_info_t *i; + int nump = 0, numb = 0; + DynamicStringType str; + + memset(&str, 0, sizeof(str)); + + for (i = plugins; i != NULL; i = i->next) + if (i->dynamic) + nump++; + else + numb++; + + DSAddString(&str, "Plugins loaded:\n"); + if (nump > 0) { + for (i = plugins; i != NULL; i = i->next) { + if (i->dynamic) { + DSAddCharacter(&str, ' '); + DSAddString(&str, i->name); + DSAddCharacter(&str, ' '); + DSAddString(&str, i->path); + DSAddCharacter(&str, '\n'); + } + } + } + else + DSAddString(&str, " (none)\n"); + + DSAddString(&str, "\n\nBuildins:\n"); + if (numb > 0) { + for (i = plugins; i != NULL; i = i->next) { + if (!i->dynamic) { + DSAddCharacter(&str, ' '); + DSAddString(&str, i->name); + DSAddCharacter(&str, '\n'); + } + } + } + else + DSAddString(&str, " (none)\n"); + + DSAddString(&str, "\n\nNOTE: this is the alpha version, can only list plugins/buildins\n"); + gui->report_dialog("Manage plugins", str.Data); + free(str.Data); + return 0; +} + + +HID_Action plugins_action_list[] = { + {"ManagePlugins", 0, ManagePlugins, + manageplugins_help, manageplugins_syntax} +}; + +REGISTER_ACTIONS(plugins_action_list)