27 #include "../../../../common/Version.h" 28 #include "../../../../common/StringUtils.h" 35 #define PLUGIN_H_FILE_NAME "Plugin.h" 36 #define PLUGIN_CPP_FILE_NAME "Plugin.cpp" 37 #define PLUGIN_CONFIG_FILE_NAME "Config.h" 47 std::string fileName = sourcePath;
51 file.open(fileName.c_str());
66 file <<
"// TerraLib Includes\n";
67 file <<
"#include \"Config.h\"\n";
68 file <<
"#include <terralib/plugin/Plugin.h>\n\n";
71 file <<
"namespace te\n";
73 file <<
" namespace qt\n";
75 file <<
" namespace plugins\n";
77 file <<
" namespace " + nameSpace +
"\n";
79 file <<
" class Plugin : public te::plugin::Plugin\n";
83 file <<
" Plugin(const te::plugin::PluginInfo& pluginInfo);\n";
85 file <<
" ~Plugin();\n";
87 file <<
" void startup();\n";
89 file <<
" void shutdown();\n";
92 file <<
" } // end namespace " + nameSpace +
"\n";
93 file <<
" } // end namespace plugins\n";
94 file <<
" } // end namespace qt\n";
95 file <<
"} // end namespace te\n";
97 file <<
"\nPLUGIN_CALL_BACK_DECLARATION(" +
getExportMacro(nameSpace) +
")\n";
109 std::string fileName = sourcePath;
113 file.open(fileName.c_str());
125 file <<
"// TerraLib Includes\n";
126 file <<
"#include \"Plugin.h\"\n\n";
127 file <<
"#include <terralib/common/Config.h>\n";
128 file <<
"#include <terralib/core/logger/Logger.h>\n";
129 file <<
"#include <terralib/core/translator/Translator.h>\n\n";
132 file <<
"te::qt::plugins::" + nameSpace +
"::Plugin::Plugin(const te::plugin::PluginInfo& pluginInfo)\n";
133 file <<
" : te::plugin::Plugin(pluginInfo)\n";
138 file <<
"te::qt::plugins::" + nameSpace +
"::Plugin::~Plugin()\n";
145 file <<
"void te::qt::plugins::" + nameSpace +
"::Plugin::startup()\n";
147 file <<
" if(m_initialized)\n";
148 file <<
" return;\n";
150 file <<
"// it initializes the Translator support\n";
151 file <<
" TE_ADD_TEXT_DOMAIN(TE_QT_PLUGIN_BUILDER_" + nsUpperCase +
"_TEXT_DOMAIN, TE_QT_PLUGIN_BUILDER_" + nsUpperCase +
"_TEXT_DOMAIN_DIR, \"UTF-8\");\n";
153 file <<
" TE_LOG_TRACE(TE_QT_PLUGIN_BUILDER_" + nsUpperCase +
"(\"Plugin " + projName +
" startup!\"));\n";
155 file <<
" m_initialized = true;\n";
159 file <<
"void te::qt::plugins::" + nameSpace +
"::Plugin::shutdown()\n";
161 file <<
" if(!m_initialized)\n";
162 file <<
" return;\n";
164 file <<
" TE_LOG_TRACE(TE_QT_PLUGIN_BUILDER_" + nsUpperCase +
"(\"Plugin " + projName +
" shutdown!\"));\n";
166 file <<
" m_initialized = false;\n";
170 file <<
"PLUGIN_CALL_BACK_IMPL(te::qt::plugins::" + nameSpace +
"::Plugin)\n";
179 std::string fileName = sourcePath;
183 file.open(fileName.c_str());
201 file <<
" \\def TE_QT_PLUGIN_BUILDER_" + nsUpperCase +
"_PLUGIN_NAME\n";
203 file <<
" \\brief It contains the plugin name.\n";
205 file <<
"#define TE_QT_PLUGIN_BUILDER_" + nsUpperCase +
"_PLUGIN_NAME \"" + projName +
"\"\n\n";
209 file <<
" \\def TE_QT_PLUGIN_BUILDER_" + nsUpperCase +
"_TEXT_DOMAIN\n";
211 file <<
" \\brief It contains the name of the text domain used in the translation of messages in this plugin.\n";
213 file <<
"#define TE_QT_PLUGIN_BUILDER_" + nsUpperCase +
"_TEXT_DOMAIN \"" + projName +
"\"\n\n";
217 file <<
" \\def TE_QT_PLUGIN_BUILDER_" + nsUpperCase +
"_TEXT_DOMAIN_DIR\n";
219 file <<
" \\brief It contains the translation catalog directory.\n";
221 file <<
"#define TE_QT_PLUGIN_BUILDER_" + nsUpperCase +
"_TEXT_DOMAIN_DIR \"locale\"\n\n";
225 file <<
" \\def TE_QT_PLUGIN_BUILDER_" + nsUpperCase +
"\n";
227 file <<
" \\brief It marks a string in order to get translated.\n";
229 file <<
"#define TE_QT_PLUGIN_BUILDER_" + nsUpperCase +
"(message) TR(message, TE_QT_PLUGIN_BUILDER_" + nsUpperCase +
"_TEXT_DOMAIN)\n\n";
235 file <<
" \\brief You can use this macro in order to export/import classes and functions from all plug-ins files.\n";
237 file <<
" \\note To compile plug-ins in Windows, remember to insert " + exportMacro +
" into the project's list of defines.\n";
239 file <<
"#ifdef WIN32\n";
240 file <<
" #ifdef " + exportMacro +
"\n";
241 file <<
" #define " +
getExportMacro(nameSpace) +
" __declspec(dllexport) // export DLL information\n";
243 file <<
" #define " +
getExportMacro(nameSpace) +
" __declspec(dllimport) // import DLL information\n";
244 file <<
" #endif \n";
247 file <<
"#endif\n\n";
257 time_t now = time(
nullptr);
258 char*
dt = ctime(&now);
259 std::string currentTime =
dt;
262 std::string defaultHeader;
264 defaultHeader +=
"/**********************************************************************\n";
265 defaultHeader +=
"** This file was automatically generated by TerraView - Plugin Builder\n";
266 defaultHeader +=
"** TerraLib Version: " + teVersion +
" \n";
267 defaultHeader +=
"** File: " + fileName +
"\n";
268 defaultHeader +=
"** Date: " + currentTime;
269 defaultHeader +=
"**********************************************************************/\n";
271 stream << defaultHeader.c_str();
277 std::string defaultHeader;
279 defaultHeader +=
"/* Copyright (C) 2008 National Institute For Space Research (INPE) - Brazil.\n";
280 defaultHeader +=
"\n";
281 defaultHeader +=
" This file is part of the TerraLib - a Framework for building GIS enabled applications.\n";
282 defaultHeader +=
"\n";
283 defaultHeader +=
" TerraLib is free software: you can redistribute it and/or modify\n";
284 defaultHeader +=
" it under the terms of the GNU Lesser General Public License as published by\n";
285 defaultHeader +=
" the Free Software Foundation, either version 3 of the License,\n";
286 defaultHeader +=
" or (at your option) any later version.\n";
287 defaultHeader +=
"\n";
288 defaultHeader +=
" TerraLib is distributed in the hope that it will be useful,\n";
289 defaultHeader +=
" but WITHOUT ANY WARRANTY; without even the implied warranty of\n";
290 defaultHeader +=
" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n";
291 defaultHeader +=
" GNU Lesser General Public License for more details.\n";
292 defaultHeader +=
"\n";
293 defaultHeader +=
" You should have received a copy of the GNU Lesser General Public License\n";
294 defaultHeader +=
" along with TerraLib. See COPYING. If not, write to\n";
295 defaultHeader +=
" TerraLib Team at <terralib-team@terralib.org>.\n";
296 defaultHeader +=
"*/\n";
298 stream << defaultHeader.c_str();
307 info +=
" \\file " + fileName +
"\n";
309 info +=
" \\brief ...\n";
312 stream << info.c_str();
322 int pos =
static_cast<int>(fileName.find(
"."));
323 std::string body = fileName.substr(0, pos);
326 str +=
"#ifndef __TE_QT_PLUGIN_BUILDER_" + nsUpperCase +
"_INTERNAL_" + flUPpperCase +
"_H\n";
327 str +=
"#define __TE_QT_PLUGIN_BUILDER_" + nsUpperCase +
"_INTERNAL_" + flUPpperCase +
"_H\n";
329 stream << str.c_str();
339 int pos =
static_cast<int>(fileName.find(
"."));
340 std::string body = fileName.substr(0, pos);
343 str +=
"#endif //__TE_QT_PLUGIN_BUILDER_" + nsUpperCase +
"_INTERNAL_" + flUPpperCase +
"_H\n";
346 stream << str.c_str();
354 std::string tag =
"TEQTPLUGIN" + nsUpperCase +
"EXPORT";
#define PLUGIN_CPP_FILE_NAME
static std::string asString()
std::string Convert2UCase(const std::string &value)
It converts a string to upper case.
static te::dt::TimeDuration dt(20, 30, 50, 11)
#define PLUGIN_H_FILE_NAME
This class is used to create the source files for the new plugin builded.
file(WRITE ${CMAKE_BINARY_DIR}/config_qhelp.cmake"configure_file (${TERRALIB_ABSOLUTE_ROOT_DIR}/doc/qhelp/help.qhcp.in ${CMAKE_BINARY_DIR}/share/terraview/help/help.qhcp @ONLY)") add_custom_command(OUTPUT del_dir COMMAND $
#define PLUGIN_CONFIG_FILE_NAME