/* ToolsMenu - Add tools to the Workbench Tools menu Copyright (C) 2015, 2018 Kim Fastrup Larsen This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either ver- sion 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be use- ful, but WITHOUT ANY WARRANTY; without even the implied war- ranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public Li- cense along with this program. If not, see . The author can be contacted on */ #ifndef TOOLRUN_H #define TOOLRUN_H #include "common.h" /* The signature of the function that will be called when a tool quits (see below). */ typedef void Tr_clean_up(struct WBArg *, LONG num_args, void *user_data); /* This function must be called once as part of program initialization. Do not call tr_run_tool() before calling this function. It sets up a message port, for which the signal bit will be returned as a mask. Whenever you receive this signal, call tr_handle_signal() to deal with it. */ ULONG tr_set_up(void); /* Run a tool as if started from Workbench. arg_list: An array of WBArg structures. The first element must represent the tool to run, and the rest are its arguments. num_args: The number of elements in arg_list. clean_up: A pointer to a function that will be called when the tool quits - it will be called from within tr_handle_signal() or tr_clean_up(). arg_list, num_args and user_data will be passed to clean_up. user_data: This can be anything. It will be passed to clean_up. */ Bool tr_run_tool(struct WBArg *arg_list, LONG num_args, Tr_clean_up *clean_up, void *user_data); /* You must call this function whenever you receive the signal returned by tr_set_up(). */ void tr_handle_signal(void); /* You must call this once before quitting. Do not call tr_run_tool() after calling this function. NB: This function will wait around for all tools started by tr_run_tool() to quit before returning. */ void tr_clean_up(void); #endif