OpenMS  3.0.0
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-2022.
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 
70  TVToolDiscovery& operator=(const TVToolDiscovery&) = delete;
71 
72  ~TVToolDiscovery() = default;
73 
75  void loadToolParams();
76 
82  void waitForToolParams();
83  void waitForPluginParams();
84 
92  const Param& getToolParams();
93 
99  const Param& getPluginParams();
100 
102  const std::vector<std::string>& getPlugins();
103 
110  [[maybe_unused]] bool setPluginPath(const String& path, bool create=false);
111 
113  const std::string getPluginPath();
114 
116  std::string findPluginExecutable(const std::string& name);
117 
118  private:
122  static Param getParamFromIni_(const String& tool_path, bool plugins=false);
123 
127  void loadPluginParams();
128 
130  const StringList getPlugins_();
131 
133  std::string plugin_path_;
134 
136  std::vector<std::future<Param>> tool_param_futures_;
137  std::vector<std::future<Param>> plugin_param_futures_;
138 
141 
144 
146  std::vector<std::string> plugins_;
147  };
148 }
OpenMS::TVToolDiscovery
Scans for tools/utils and generates a param for each asynchronously.
Definition: TVToolDiscovery.h:62
OpenMS::String
A more convenient string class.
Definition: String.h:58
OpenMS::TVToolDiscovery::plugins_
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:146
OpenMS::TVToolDiscovery::plugin_path_
std::string plugin_path_
The filepath to search pugins in.
Definition: TVToolDiscovery.h:133
OpenMS::TVToolDiscovery::plugin_params_
Param plugin_params_
Contains all the params of the plugins.
Definition: TVToolDiscovery.h:143
ListUtils.h
OpenMS
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:47
Param.h
OpenMS::TVToolDiscovery::tool_params_
Param tool_params_
Contains all the params of the tools/utils.
Definition: TVToolDiscovery.h:140
OpenMS::TVToolDiscovery::tool_param_futures_
std::vector< std::future< Param > > tool_param_futures_
The futures for asyncronous loading of the tools/utils and plugins.
Definition: TVToolDiscovery.h:136
OpenMS::StringList
std::vector< String > StringList
Vector of String.
Definition: ListUtils.h:70
OpenMS::TVToolDiscovery::TVToolDiscovery
TVToolDiscovery()
Definition: TVToolDiscovery.h:65
OpenMS::Param
Management and storage of parameters / INI files.
Definition: Param.h:69
OpenMS::TVToolDiscovery::plugin_param_futures_
std::vector< std::future< Param > > plugin_param_futures_
Definition: TVToolDiscovery.h:137