Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00056 #include <string>
00057
00058 #ifndef __PLUGGABLEBUILDEREXTENSION_HPP__
00059 #define __PLUGGABLEBUILDEREXTENSION_HPP__
00060
00061 #include <gtkmm.h>
00062
00063 #include <openfluid/dllexport.hpp>
00064 #include <openfluid/tools.hpp>
00065 #include <openfluid/machine/SimulationBlob.hpp>
00066
00067
00068
00069
00070
00071
00075 #define EXTENSION_PROC_NAME "GetExtension"
00076
00080 #define EXTINFOS_PROC_NAME "GetExtensionInfos"
00081
00085 #define EXTSDKVERSION_PROC_NAME "GetExtensionSDKVersion"
00086
00087
00088
00089
00090
00091
00095 #define DECLARE_EXTENSION_HOOKS \
00096 extern "C" \
00097 { \
00098 DLLEXPORT std::string GetExtensionSDKVersion(); \
00099 DLLEXPORT openfluid::builderext::PluggableBuilderExtension* GetExtension(); \
00100 DLLEXPORT openfluid::builderext::BuilderExtensionInfos GetExtensionInfos(); \
00101 }
00102
00103
00108 #define DEFINE_EXTENSION_HOOKS(pluginclassname) \
00109 std::string GetExtensionSDKVersion() \
00110 { \
00111 return std::string(STRINGIFY(OPENFLUID_VERSION)); \
00112 } \
00113 \
00114 openfluid::builderext::PluggableBuilderExtension* GetExtension() \
00115 { \
00116 return new pluginclassname(); \
00117 }
00118
00119
00120 #define DEFINE_EXTENSION_INFOS(id,shortname,name,desc,authors,authorsctct) \
00121 openfluid::builderext::BuilderExtensionInfos GetExtensionInfos() \
00122 { \
00123 openfluid::builderext::BuilderExtensionInfos BEI; \
00124 \
00125 BEI.ID = (id); \
00126 BEI.ShortName = (shortname); \
00127 BEI.Name = (name); \
00128 BEI.Description = (desc); \
00129 BEI.Authors = (authors); \
00130 BEI.AuthorsContact = (authorsctct); \
00131 \
00132 return BEI; \
00133 }
00134
00135
00136
00137
00138
00139
00140
00141 namespace openfluid { namespace builderext {
00142
00143
00144 class DLLEXPORT BuilderExtensionInfos
00145 {
00146 public:
00147
00148 std::string ID;
00149
00150 std::string Name;
00151
00152 std::string ShortName;
00153
00154 std::string Description;
00155
00156 std::string Authors;
00157
00158 std::string AuthorsContact;
00159
00160 BuilderExtensionInfos()
00161 : ID(""), Name(""), ShortName(""), Description(""), Authors(""), AuthorsContact("")
00162 {
00163
00164 }
00165 };
00166
00167
00168
00169
00170
00171
00172 typedef std::map<std::string,std::string> ExtensionConfig_t;
00173
00174
00175
00176
00177
00178
00179 class DLLEXPORT PluggableBuilderExtension
00180 {
00181 protected:
00182
00183 ExtensionConfig_t m_Config;
00184
00185 Gtk::Widget* m_PrefsPanelWidget;
00186
00187 openfluid::machine::SimulationBlob* mp_SimulationBlob;
00188
00189
00190 public:
00191
00192 enum ExtensionType { WorkspaceTab, ModelessWindow, ModalWindow,
00193 SpatialgraphImporter, InputdataImporter, EventsImporter, ExtraImporter, MixedImporter,
00194 SimulationListener, HomeLauncher };
00195
00196
00197 PluggableBuilderExtension() : m_PrefsPanelWidget(NULL), mp_SimulationBlob(NULL) { };
00198
00199 virtual ~PluggableBuilderExtension() { };
00200
00201
00202 void setSimulationBlob(openfluid::machine::SimulationBlob* Blob) { mp_SimulationBlob = Blob; };
00203
00208 virtual ExtensionType getType() const = 0;
00209
00210
00215 virtual bool isConfigurable() { return false; };
00216
00217
00222 ExtensionConfig_t getConfiguration() const { return m_Config; };
00223
00224
00229 void setConfiguration(const ExtensionConfig_t& Config) { m_Config = Config; };
00230
00231
00238 Gtk::Widget* getPrefsPanelAsWidget() { return m_PrefsPanelWidget; };
00239
00240
00247 virtual Gtk::Widget* getExtensionAsWidget() = 0;
00248
00249
00255 virtual bool isReadyForShowtime() const { return false; };
00256
00257 };
00258
00259
00260
00261
00262
00263
00264
00265 typedef PluggableBuilderExtension* (*GetExtensionProc)();
00266
00267 typedef BuilderExtensionInfos (*GetExtensionInfosProc)();
00268
00269 typedef std::string (*GetExtensionSDKVersionProc)();
00270
00271
00272 } }
00273
00274 #endif