OpenMS
TVToolDiscovery.h
Go to the documentation of this file.
1 // --------------------------------------------------------------------------
2 // OpenMS -- Open-Source Mass Spectrometry
3 // --------------------------------------------------------------------------
4 // Copyright The OpenMS Team -- Eberhard Karls University Tuebingen,
5 // ETH Zurich, and Freie Universitaet Berlin 2002-2023.
6 //
7 // This software is released under a three-clause BSD license:
8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above copyright
11 // notice, this list of conditions and the following disclaimer in the
12 // documentation and/or other materials provided with the distribution.
13 // * Neither the name of any author or any participating institution
14 // may be used to endorse or promote products derived from this software
15 // without specific prior written permission.
16 // For a full list of authors, refer to the file AUTHORS.
17 // --------------------------------------------------------------------------
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 // ARE DISCLAIMED. IN NO EVENT SHALL ANY OF THE AUTHORS OR THE CONTRIBUTING
22 // INSTITUTIONS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
25 // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
26 // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
27 // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
28 // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 //
30 // --------------------------------------------------------------------------
31 // $Maintainer: David Voigt $
32 // $Authors: David Voigt $
33 // --------------------------------------------------------------------------
34 
35 #pragma once
36 
37 #include <OpenMS/VISUAL/OpenMS_GUIConfig.h>
38 
39 #include <future>
40 #include <map>
43 
44 namespace OpenMS
45 {
62  class OPENMS_GUI_DLLAPI TVToolDiscovery
63  {
64  public:
66  plugin_path_() {};
67 
68  TVToolDiscovery(const TVToolDiscovery&) = delete;
69 
71 
72  ~TVToolDiscovery() = default;
73 
76 
84 
92  const Param& getToolParams();
93 
100 
102  const std::vector<std::string>& getPlugins();
103 
110  [[maybe_unused]] bool setPluginPath(const String& path, bool create=false);
111 
113  void setVerbose(int verbosity_level);
114 
116  const std::string getPluginPath();
117 
119  std::string findPluginExecutable(const std::string& name);
120 
121  private:
125  static Param getParamFromIni_(const String& tool_path, bool plugins=false);
126 
131 
134 
136  std::string plugin_path_;
137 
139  std::vector<std::future<Param>> tool_param_futures_;
140  std::vector<std::future<Param>> plugin_param_futures_;
141 
144 
147 
149  std::vector<std::string> plugins_;
150 
152  int verbosity_level_ = 0;
153  };
154 }
Management and storage of parameters / INI files.
Definition: Param.h:70
A more convenient string class.
Definition: String.h:60
Scans for tools/utils and generates a param for each asynchronously.
Definition: TVToolDiscovery.h:63
void waitForToolParams()
Wait for all future params to finish evaluating.
static Param getParamFromIni_(const String &tool_path, bool plugins=false)
const Param & getToolParams()
Returns a Param object containing the params for each tool/util.
Param plugin_params_
Contains all the params of the plugins.
Definition: TVToolDiscovery.h:146
void setVerbose(int verbosity_level)
set the verbosity level of the tool discovery for debug purposes
std::vector< std::future< Param > > tool_param_futures_
The futures for asyncronous loading of the tools/utils and plugins.
Definition: TVToolDiscovery.h:139
const Param & getPluginParams()
Returns a param containing the params for each plugin.
const std::string getPluginPath()
Returns the current set path to search plugins in.
std::vector< std::future< Param > > plugin_param_futures_
Definition: TVToolDiscovery.h:140
bool setPluginPath(const String &path, bool create=false)
Sets the path that will be searched for Plugins.
TVToolDiscovery & operator=(const TVToolDiscovery &)=delete
const StringList getPlugins_()
Returns a list of executables that are found at the plugin path.
TVToolDiscovery()
Definition: TVToolDiscovery.h:65
TVToolDiscovery(const TVToolDiscovery &)=delete
std::string findPluginExecutable(const std::string &name)
Returns the path to the plugin executable or an empty string if the plugin name is unknown.
std::vector< std::string > plugins_
The names of all loaded plugins, this is used to add the plugins to the list in the ToolsDialog.
Definition: TVToolDiscovery.h:149
const std::vector< std::string > & getPlugins()
Returns the list of read plugin names as saved in the ini.
std::string plugin_path_
The filepath to search pugins in.
Definition: TVToolDiscovery.h:136
Param tool_params_
Contains all the params of the tools/utils.
Definition: TVToolDiscovery.h:143
void loadToolParams()
Start creating params for each tool/util asynchronously.
std::vector< String > StringList
Vector of String.
Definition: ListUtils.h:70
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:48