diff --git a/file_templates/CMakeLists.txt b/file_templates/CMakeLists.txt --- a/file_templates/CMakeLists.txt +++ b/file_templates/CMakeLists.txt @@ -10,6 +10,16 @@ classes/qt_shared classes/qt_interface + kdevelop/kdev_file_template + kdevelop/kdev_file_template_options + kdevelop/kdev_cpp_class_template + kdevelop/kdev_cpp_class_template_options + + kdevelop/kdev_plugin + kdevelop/kdev_mainwindowactions + kdevelop/kdev_contextmenuextension + kdevelop/kdev_projectconfig + testing/cpp_cpputest testing/cpp_gtest testing/cpp_qtestlib diff --git a/file_templates/kdevelop/kdev_contextmenuextension/kdev_contextmenuextension.desktop b/file_templates/kdevelop/kdev_contextmenuextension/kdev_contextmenuextension.desktop new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_contextmenuextension/kdev_contextmenuextension.desktop @@ -0,0 +1,18 @@ +[General] +Name=Plugin Contextmenu Extensions +Comment=Extends a KDevPlatform plugin with contextmenu extensions +Category=C++/KDevelop +Language=C++ +Type= +Files=Header,Implementation +OptionsFile=options.kcfg + +[Header] +Name=Header +File=plugin.h +OutputFile={{ class_name }}.h + +[Implementation] +Name=Implementation +File=plugin.cpp +OutputFile={{ class_name }}.cpp diff --git a/file_templates/kdevelop/kdev_contextmenuextension/options.kcfg b/file_templates/kdevelop/kdev_contextmenuextension/options.kcfg new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_contextmenuextension/options.kcfg @@ -0,0 +1,46 @@ + + + + + + + KDevPlugin + + + + + + + + + + + EditorContext + + + + + + + + + + + + + + + + + + EditGroup + + + + m_action + + + diff --git a/file_templates/kdevelop/kdev_contextmenuextension/plugin.h b/file_templates/kdevelop/kdev_contextmenuextension/plugin.h new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_contextmenuextension/plugin.h @@ -0,0 +1,3 @@ + // TODO: add to plugin class header + KDevelop::ContextMenuExtension contextMenuExtension(KDevelop::Context* context) override; + diff --git a/file_templates/kdevelop/kdev_contextmenuextension/plugin.cpp b/file_templates/kdevelop/kdev_contextmenuextension/plugin.cpp new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_contextmenuextension/plugin.cpp @@ -0,0 +1,17 @@ +// TODO: add to plugin class implementation +#include +#include + + +KDevelop::ContextMenuExtension {{ class_name }}::contextMenuExtension(KDevelop::Context* context) +{ + KDevelop::ContextMenuExtension extension; + + + if (context->hasType(KDevelop::Context::{{ handled_context }})) { + extension.addAction(KDevelop::ContextMenuExtension::{{ menu_group }}, {{ action_member_name }}); + } + + + return extension; +} diff --git a/file_templates/kdevelop/kdev_cpp_class_template/kdev_cpp_class_template.desktop b/file_templates/kdevelop/kdev_cpp_class_template/kdev_cpp_class_template.desktop new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_cpp_class_template/kdev_cpp_class_template.desktop @@ -0,0 +1,23 @@ +[General] +Name=C++ class template for KDevPlatform +Comment=A file template for creating C++ class templates +Category=C++/KDevelop +Files=HeaderTemplate,ImplementationTemplate,Metadata +OptionsFile=options.kcfg + +[Metadata] +Name=Template Description +File=template.desktop +# TODO: underscores crashes KDevelop, after log: grantlee.template: "Unknown filter: underscores, line 0, " +#OutputFile={{ name|underscores }}.desktop +OutputFile={{ name }}.desktop + +[HeaderTemplate] +Name=Header Template +File=template_class.h +OutputFile={{ header_template_filename }} + +[ImplementationTemplate] +Name=Implementation Template +File=template_class.cpp +OutputFile={{ impl_template_filename }} diff --git a/file_templates/kdevelop/kdev_cpp_class_template/options.kcfg b/file_templates/kdevelop/kdev_cpp_class_template/options.kcfg new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_cpp_class_template/options.kcfg @@ -0,0 +1,61 @@ + + + + + + + C++ Class Template + + + + + + + + C++/X + + + + public Foo, public Bar + + + + + + Header + + + + Header + + + + class.h + + + + {% templatetag openvariable %} name {% templatetag closevariable %}.h + + + + + + Implementation + + + + Implementation + + + + class.cpp + + + + {% templatetag openvariable %} name {% templatetag closevariable %}.cpp + + + diff --git a/file_templates/kdevelop/kdev_cpp_class_template/template.desktop b/file_templates/kdevelop/kdev_cpp_class_template/template.desktop new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_cpp_class_template/template.desktop @@ -0,0 +1,20 @@ +[General] +Name={{ name }} +Comment={{ description }} +Category={{ category }} +Language=C++ +Type=Class +BaseClasses={{ base_classes }} +Files={{ header_template_id }},{{ impl_template_id }} + + +[{{ header_template_id }}] +Name={{ header_template_name }} +File={{ header_template_filename }} +OutputFile={{ header_template_output_filename }} + + +[{{ impl_template_id }}] +Name={{ impl_template_name }} +File={{ impl_template_filename }} +OutputFile={{ impl_template_output_filename }} diff --git a/file_templates/kdevelop/kdev_cpp_class_template/template_class.h b/file_templates/kdevelop/kdev_cpp_class_template/template_class.h new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_cpp_class_template/template_class.h @@ -0,0 +1,2 @@ +{% templatetag openblock %} extends "cpp_header.h" {% templatetag closeblock %} +{% templatetag openblock %} load kdev_filters {% templatetag closeblock %} diff --git a/file_templates/kdevelop/kdev_cpp_class_template/template_class.cpp b/file_templates/kdevelop/kdev_cpp_class_template/template_class.cpp new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_cpp_class_template/template_class.cpp @@ -0,0 +1,2 @@ +{% templatetag openblock %} extends "cpp_implementation.cpp" {% templatetag closeblock %} +{% templatetag openblock %} load kdev_filters {% templatetag closeblock %} diff --git a/file_templates/kdevelop/kdev_cpp_class_template_options/kdev_cpp_class_template_options.desktop b/file_templates/kdevelop/kdev_cpp_class_template_options/kdev_cpp_class_template_options.desktop new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_cpp_class_template_options/kdev_cpp_class_template_options.desktop @@ -0,0 +1,28 @@ +[General] +Name=C++ class template with options for KDevPlatform +Comment=A file template for creating C++ class templates with options +Category=C++/KDevelop +Files=HeaderTemplate,ImplementationTemplate,Options,Metadata +OptionsFile=options.kcfg + +[Metadata] +Name=Template Description +File=template.desktop +# TODO: underscores crashes KDevelop, after log: grantlee.template: "Unknown filter: underscores, line 0, " +#OutputFile={{ name|underscores }}.desktop +OutputFile={{ name }}.desktop + +[Options] +Name=Options +File=template.kcfg +OutputFile=options.kcfg + +[HeaderTemplate] +Name=Header Template +File=template_class.h +OutputFile={{ header_template_filename }} + +[ImplementationTemplate] +Name=Implementation Template +File=template_class.cpp +OutputFile={{ impl_template_filename }} diff --git a/file_templates/kdevelop/kdev_cpp_class_template_options/options.kcfg b/file_templates/kdevelop/kdev_cpp_class_template_options/options.kcfg new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_cpp_class_template_options/options.kcfg @@ -0,0 +1,79 @@ + + + + + + + C++ Class Template + + + + + + + + C++/X + + + + public Foo, public Bar + + + + + + Header + + + + Header + + + + class.h + + + + {% templatetag openvariable %} name {% templatetag closevariable %}.h + + + + + + Implementation + + + + Implementation + + + + class.cpp + + + + {% templatetag openvariable %} name {% templatetag closevariable %}.cpp + + + + + + Options + + + + true + + + + true + + + + true + + + diff --git a/file_templates/kdevelop/kdev_cpp_class_template_options/template.desktop b/file_templates/kdevelop/kdev_cpp_class_template_options/template.desktop new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_cpp_class_template_options/template.desktop @@ -0,0 +1,21 @@ +[General] +Name={{ name }} +Comment={{ description }} +Category={{ category }} +Language=C++ +Type=Class +BaseClasses={{ base_classes }} +Files={{ header_template_id }},{{ impl_template_id }} +OptionsFile={{ output_file_options }} + + +[{{ header_template_id }}] +Name={{ header_template_name }} +File={{ header_template_filename }} +OutputFile={{ header_template_output_filename }} + + +[{{ impl_template_id }}] +Name={{ impl_template_name }} +File={{ impl_template_filename }} +OutputFile={{ impl_template_output_filename }} diff --git a/file_templates/kdevelop/kdev_cpp_class_template_options/template.kcfg b/file_templates/kdevelop/kdev_cpp_class_template_options/template.kcfg new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_cpp_class_template_options/template.kcfg @@ -0,0 +1,32 @@ + + + + + {% if add_bool_sample %} + + + true + + {% endif %} + {% if add_string_sample %} + + + Some text + + {% endif %} + {% if add_enum_sample %} + + + + + + + + First + + {% endif %} + + diff --git a/file_templates/kdevelop/kdev_cpp_class_template_options/template_class.h b/file_templates/kdevelop/kdev_cpp_class_template_options/template_class.h new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_cpp_class_template_options/template_class.h @@ -0,0 +1,2 @@ +{% templatetag openblock %} extends "cpp_header.h" {% templatetag closeblock %} +{% templatetag openblock %} load kdev_filters {% templatetag closeblock %} diff --git a/file_templates/kdevelop/kdev_cpp_class_template_options/template_class.cpp b/file_templates/kdevelop/kdev_cpp_class_template_options/template_class.cpp new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_cpp_class_template_options/template_class.cpp @@ -0,0 +1,2 @@ +{% templatetag openblock %} extends "cpp_implementation.cpp" {% templatetag closeblock %} +{% templatetag openblock %} load kdev_filters {% templatetag closeblock %} diff --git a/file_templates/kdevelop/kdev_file_template/kdev_file_template.desktop b/file_templates/kdevelop/kdev_file_template/kdev_file_template.desktop new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_file_template/kdev_file_template.desktop @@ -0,0 +1,18 @@ +[General] +Name=Simple file template for KDevPlatform +Comment=A file template for creating other file templates +Category=C++/KDevelop +Files=Metadata,Template +OptionsFile=options.kcfg + +[Metadata] +Name=Template Description +File=template.desktop +# TODO: underscores crashes KDevelop, after log: grantlee.template: "Unknown filter: underscores, line 0, " +#OutputFile={{ name|underscores }}.desktop +OutputFile={{ name }}.desktop + +[Template] +Name=Template +File=template_template.txt +OutputFile={{ template_filename }} diff --git a/file_templates/kdevelop/kdev_file_template/options.kcfg b/file_templates/kdevelop/kdev_file_template/options.kcfg new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_file_template/options.kcfg @@ -0,0 +1,47 @@ + + + + + + + Template + + + + + + + + Foo/Bar + + + + + + + + + + + + + + Template + + + + Template + + + + template.txt + + + + output.txt + + + diff --git a/file_templates/kdevelop/kdev_file_template/template.desktop b/file_templates/kdevelop/kdev_file_template/template.desktop new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_file_template/template.desktop @@ -0,0 +1,17 @@ +[General] +Name={{ name }} +Comment={{ description }} +Category={{ category }} +{% if language %} +Language={{ language }} +{% endif %} +{% if type %} +Type={{ type }} +{% endif %} +Files={{ template_id }} + + +[{{ template_id }}] +Name={{ template_name }} +File={{ template_filename }} +OutputFile={{ template_output_filename }} diff --git a/file_templates/kdevelop/kdev_file_template/template_template.txt b/file_templates/kdevelop/kdev_file_template/template_template.txt new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_file_template/template_template.txt @@ -0,0 +1,4 @@ +Template + + +Name: {% templatetag openvariable %} name {% templatetag closevariable %} diff --git a/file_templates/kdevelop/kdev_file_template_options/kdev_file_template_options.desktop b/file_templates/kdevelop/kdev_file_template_options/kdev_file_template_options.desktop new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_file_template_options/kdev_file_template_options.desktop @@ -0,0 +1,23 @@ +[General] +Name=A simple file template for KDevPlatform with options +Comment=A file template with options for creating other file templates +Category=C++/KDevelop +Files=Metadata,Options,Template +OptionsFile=options.kcfg + +[Metadata] +Name=Template Description +File=template.desktop +# TODO: underscores crashes KDevelop, after log: grantlee.template: "Unknown filter: underscores, line 0, " +#OutputFile={{ name|underscores }}.desktop +OutputFile={{ name }}.desktop + +[Options] +Name=Options +File=template.kcfg +OutputFile=options.kcfg + +[Template] +Name=Template +File=template_template.txt +OutputFile={{ template_filename }} diff --git a/file_templates/kdevelop/kdev_file_template_options/options.kcfg b/file_templates/kdevelop/kdev_file_template_options/options.kcfg new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_file_template_options/options.kcfg @@ -0,0 +1,65 @@ + + + + + + + Template + + + + + + + + Foo/Bar + + + + + + + + + + + + + + Options + + + + true + + + + true + + + + true + + + + + + Template + + + + Template + + + + template.txt + + + + output.txt + + + diff --git a/file_templates/kdevelop/kdev_file_template_options/template.desktop b/file_templates/kdevelop/kdev_file_template_options/template.desktop new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_file_template_options/template.desktop @@ -0,0 +1,18 @@ +[General] +Name={{ name }} +Comment={{ description }} +Category={{ category }} +{% if language %} +Language={{ language }} +{% endif %} +{% if type %} +Type={{ type }} +{% endif %} +Files={{ template_id }} +OptionsFile={{ output_file_options }} + + +[{{ template_id }}] +Name={{ template_name }} +File={{ template_filename }} +OutputFile={{ template_output_filename }} diff --git a/file_templates/kdevelop/kdev_file_template_options/template.kcfg b/file_templates/kdevelop/kdev_file_template_options/template.kcfg new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_file_template_options/template.kcfg @@ -0,0 +1,32 @@ + + + + + {% if add_bool_sample %} + + + true + + {% endif %} + {% if add_string_sample %} + + + Some text + + {% endif %} + {% if add_enum_sample %} + + + + + + + + First + + {% endif %} + + diff --git a/file_templates/kdevelop/kdev_file_template_options/template_template.txt b/file_templates/kdevelop/kdev_file_template_options/template_template.txt new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_file_template_options/template_template.txt @@ -0,0 +1,15 @@ +Template + + +Name: {% templatetag openvariable %} name {% templatetag closevariable %} + + +{% if add_bool_sample %} +Bool option: "{% templatetag openblock %} if bool_option {% templatetag closeblock %}true{% templatetag openblock %} else {% templatetag closeblock %}false{% templatetag openblock %} endif {% templatetag closeblock %}" +{% endif %} +{% if add_string_sample %} +String option: "{% templatetag openvariable %} string_option {% templatetag closevariable %}" +{% endif %} +{% if add_enum_sample %} +Enum option: "{% templatetag openvariable %} enum_option {% templatetag closevariable %}" +{% endif %} diff --git a/file_templates/kdevelop/kdev_mainwindowactions/CMakeLists.txt b/file_templates/kdevelop/kdev_mainwindowactions/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_mainwindowactions/CMakeLists.txt @@ -0,0 +1 @@ +install(FILES {{ output_file_rc }} DESTINATION ${KXMLGUI_INSTALL_DIR}/{{ plugin_id }}) diff --git a/file_templates/kdevelop/kdev_mainwindowactions/kdev_mainwindowactions.desktop b/file_templates/kdevelop/kdev_mainwindowactions/kdev_mainwindowactions.desktop new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_mainwindowactions/kdev_mainwindowactions.desktop @@ -0,0 +1,28 @@ +[General] +Name=Plugin Mainwindow Actions +Comment=Extends a KDevPlatform plugin with actions in the mainwindow +Category=C++/KDevelop +Language=C++ +Type= +Files=Header,Implementation,RC,CMake +OptionsFile=options.kcfg + +[Header] +Name=Header +File=plugin.h +OutputFile={{ class_name }}.h + +[Implementation] +Name=Implementation +File=plugin.cpp +OutputFile={{ class_name }}.cpp + +[RC] +Name=KXmlGui RC +File=template.rc +OutputFile={{ plugin_file_basename }}ui.rc + +[CMake] +Name=CMakeLists.txt +File=CMakeLists.txt +OutputFile=CMakeLists.txt diff --git a/file_templates/kdevelop/kdev_mainwindowactions/options.kcfg b/file_templates/kdevelop/kdev_mainwindowactions/options.kcfg new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_mainwindowactions/options.kcfg @@ -0,0 +1,57 @@ + + + + + + + KDevPlugin + + + + kdevplugin + + + + kdevplugin + + + + onAction + + + + + + edit + + + + + + + + do_action + + + + Do Action + + + + + + false + + + + mainToolBar + + + + + + + diff --git a/file_templates/kdevelop/kdev_mainwindowactions/plugin.h b/file_templates/kdevelop/kdev_mainwindowactions/plugin.h new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_mainwindowactions/plugin.h @@ -0,0 +1,5 @@ + // TODO: add to plugin class header + void createActionsForMainWindow(Sublime::MainWindow* window, QString& xmlFile, KActionCollection& actions) override; + + + void {{ handler_method_name }}(); diff --git a/file_templates/kdevelop/kdev_mainwindowactions/plugin.cpp b/file_templates/kdevelop/kdev_mainwindowactions/plugin.cpp new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_mainwindowactions/plugin.cpp @@ -0,0 +1,17 @@ +// TODO: add to plugin class implementation +void {{ class_name }}::createActionsForMainWindow(Sublime::MainWindow* window, QString& xmlFile, KActionCollection& actions) +{ + xmlFile = QStringLiteral("{{ output_file_rc }}"); + + + QAction* action = actions.addAction(QStringLiteral("{{ action_id }}")); + action->setText(i18n("{{ action_text }}")); + connect(action, &QAction::triggered, this, &{{ class_name }}::{{ handler_method_name }}); +} + + +void {{ class_name }}::{{ handler_method_name }}() +{ + + +} diff --git a/file_templates/kdevelop/kdev_mainwindowactions/template.rc b/file_templates/kdevelop/kdev_mainwindowactions/template.rc new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_mainwindowactions/template.rc @@ -0,0 +1,21 @@ + + + +{% if menu_title %} + {{ menu_title }} +{% endif %} + + + +{% if toolbar %} + + + +{% if toolbar_title %} + {{ toolbar_title }} +{% endif %} + + + +{% endif %} + diff --git a/file_templates/kdevelop/kdev_plugin/CMakeLists.txt b/file_templates/kdevelop/kdev_plugin/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_plugin/CMakeLists.txt @@ -0,0 +1,20 @@ +add_definitions(-DTRANSLATION_DOMAIN=\"{{ plugin_basename|lower }}\") + + +set({{ plugin_basename }}_SRCS + {# hack: grantlee on a line with just whitespace and var drops any whitespace/linebreaks since the last output #} + + + {{ " "|add:output_file_implementation }} +) + + +kdevplatform_add_plugin({{ plugin_basename }} + JSON {{ output_file_metadata }} + SOURCES ${% templatetag openbrace %}{{ plugin_basename }}_SRCS{% templatetag closebrace %} +) + + +target_link_libraries({{ plugin_basename }} + KDev::Interfaces +) diff --git a/file_templates/kdevelop/kdev_plugin/Messages.sh.in b/file_templates/kdevelop/kdev_plugin/Messages.sh.in new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_plugin/Messages.sh.in @@ -0,0 +1,4 @@ +#!/bin/sh +$EXTRACTRC `find . -name \*.rc` `find . -name \*.ui` >> rc.cpp +$XGETTEXT `find . -name \*.cc -o -name \*.cpp -o -name \*.h` -o $podir/{{ plugin_basename|lower }}.pot +rm -f rc.cpp diff --git a/file_templates/kdevelop/kdev_plugin/class.h b/file_templates/kdevelop/kdev_plugin/class.h new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_plugin/class.h @@ -0,0 +1,87 @@ +{% extends "cpp_header.h" %} +{% load kdev_filters %} + +{% block includes %} +{{ block.super }} +{% if not base_classes %} +#include +{% endif %} +{% endblock includes %} + +{% block class_declaration_open %} +{% if base_classes %} +{{ block.super }} +{% else %} +{% include "class_declaration_apidox_cpp.txt" %} +class {{ name }} : public KDevelop::IPlugin +{ +{% endif %} +{% endblock class_declaration_open %} + +{% block class_body %} + Q_OBJECT + + +public: + /** + * Constructor with arguments as needed with KPluginFactory + * + * @param parent + * @param args + */ + {{ name }}(QObject* parent, const QVariantList& args); + + ~{{ name }}() override; + + {% for method in public_functions %} + {% if not method.isConstructor and not method.isDestructor %} + + {% include "class_method_declaration_apidox_cpp.txt" %} + {% include "class_method_declaration_cpp.txt" %} + + {% endif %} + {% endfor %} + + {% for property in members %} + + {% include "class_property_getter_declaration_apidox_cpp.txt" %} + {% include "class_property_getter_declaration_cpp.txt" %} + + {% endfor %} + + +{% if members %} +public Q_SLOTS: + {% for property in members %} + + {% include "class_property_setter_declaration_apidox_cpp.txt" %} + {% include "class_property_setter_declaration_cpp.txt" %} + + {% endfor %} + +{% endif %} + + +{% if protected_functions %} +protected: + {% for method in protected_functions %} + + {% include "class_method_declaration_apidox_cpp.txt" %} + {% include "class_method_declaration_cpp.txt" %} + + {% endfor %} +{% endif %} + + +private: + {% for method in private_functions %} + + {% include "class_method_declaration_apidox_cpp.txt" %} + {% include "class_method_declaration_cpp.txt" %} + + {% endfor %} + + {% for property in members %} + {{property.type}} m_{{property.name}}; + {% endfor %} +{% endblock class_body %} diff --git a/file_templates/kdevelop/kdev_plugin/class.cpp b/file_templates/kdevelop/kdev_plugin/class.cpp new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_plugin/class.cpp @@ -0,0 +1,101 @@ +{% extends "cpp_implementation.cpp" %} +{% load kdev_filters %} + +{% block includes %} +#include "{{ output_file_header }}" + + +#include +{% endblock includes %} + +{% block extra_definitions %} +K_PLUGIN_FACTORY_WITH_JSON({{ name }}Factory, "{{ output_file_metadata }}", registerPlugin<{{ name }}>();) + +{% for method in private_functions %} +{% if not method.isConstructor and not method.isDestructor %} +{% with method.arguments as arguments %} + +{% include "method_definition_cpp.txt" %} +{ + + {% if method.type %} + return {{ method.default_return_value }}; + {% endif %} + +} + +{% endwith %} +{% endif %} +{% endfor %} + +{% endblock extra_definitions %} + +{% block function_definitions %} + +{{ name }}::{{ name }}(QObject *parent, const QVariantList& args) + : KDevelop::IPlugin(QStringLiteral("{{ plugin_basename|lower }}"), parent) +{ + Q_UNUSED(args); + + +} + +{{ name }}::~{{ name }}() = default; + + +{% for method in public_functions %} +{% if not method.isConstructor and not method.isDestructor %} +{% with method.arguments as arguments %} + +{% include "method_definition_cpp.txt" %} +{ + + {% if method.type %} + return {{ method.default_return_value }}; + {% endif %} + +} + +{% endwith %} +{% endif %} +{% endfor %} + +{% for method in protected_functions %} +{% if not method.isConstructor and not method.isDestructor %} +{% with method.arguments as arguments %} + +{% include "method_definition_cpp.txt" %} +{ + + {% if method.type %} + return {{ method.default_return_value }}; + {% endif %} + +} + +{% endwith %} +{% endif %} +{% endfor %} + +{% for property in members %} + + +{% include "class_property_getter_definition_cpp.txt" %} +{ + return m_{{ property.name }}; +} + + +{% include "class_property_setter_definition_cpp.txt" %} +{ + m_{{ property.name }} = {{ property.name }}; +} + +{% endfor %} + +{% endblock function_definitions %} + +{% block bottom %} +// needed for QObject class created from K_PLUGIN_FACTORY_WITH_JSON +#include "{{ output_file_implementation|cut:".cpp" }}.moc" +{% endblock bottom %} diff --git a/file_templates/kdevelop/kdev_plugin/kdev_plugin.desktop b/file_templates/kdevelop/kdev_plugin/kdev_plugin.desktop new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_plugin/kdev_plugin.desktop @@ -0,0 +1,34 @@ +[General] +Name=Plugin +Comment= +Category=C++/KDevelop +Language=C++ +Type=Class +BaseClasses=public KDevelop::IPlugin +Files=Header,Implementation,Metadata,CMake,Messages +OptionsFile=options.kcfg + +[Header] +Name=Header +File=class.h +OutputFile={{ name|lower }}.h + +[Implementation] +Name=Implementation +File=class.cpp +OutputFile={{ name|lower }}.cpp + +[Metadata] +Name=Metadata +File=plugin.json.in +OutputFile={{ name|lower }}.json + +[CMake] +Name=CMakeLists.txt +File=CMakeLists.txt +OutputFile=CMakeLists.txt + +[Messages] +Name=Messages.sh +File=Messages.sh.in +OutputFile=Messages.sh diff --git a/file_templates/kdevelop/kdev_plugin/options.kcfg b/file_templates/kdevelop/kdev_plugin/options.kcfg new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_plugin/options.kcfg @@ -0,0 +1,42 @@ + + + + + + + {{ name }} + + + + + + + + plugins + + + + + + + + + + + + + + + Utilities + + + + + + {{ name|lower }} + + + diff --git a/file_templates/kdevelop/kdev_plugin/plugin.json.in b/file_templates/kdevelop/kdev_plugin/plugin.json.in new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_plugin/plugin.json.in @@ -0,0 +1,27 @@ +{% templatetag openbrace %} + "KPlugin": {% templatetag openbrace %} + "Id": "{{ plugin_basename }}", + "Name": "{{ plugin_name }}", + "Description": "{{ plugin_description }}", + {% if plugin_icon_name %} + "Icon": "{{ plugin_icon_name }}", + {% endif %} + {% if plugin_category %} + "Category": "{{ plugin_category }}", + {% endif %} + {% if author_name %} + "Authors": [ + {% templatetag openbrace %} + "Name": "{{ author_name }}", + "Email": "{{ author_emailaddress }}" + {% templatetag closebrace %} + ], + {% endif %} + "ServiceTypes": [ + "KDevelop/Plugin" + ] + {% templatetag closebrace %}, + "X-KDevelop-Category": "Global", + "X-KDevelop-Mode": "GUI" + +{% templatetag closebrace %} diff --git a/file_templates/kdevelop/kdev_projectconfig/CMakeLists.txt b/file_templates/kdevelop/kdev_projectconfig/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_projectconfig/CMakeLists.txt @@ -0,0 +1,30 @@ +set({{ plugin_base_name }}_CONFIG_SRCS + {# hack: grantlee on a line with just whitespace and var drop any whitespace/linebreaks since the last output #} + + + {{ " "|add:output_file_implementation }} +) + + +ki18n_wrap_ui({{ plugin_base_name }}_CONFIG_SRCS + {# hack: grantlee on a line with just whitespace and var drops any whitespace/linebreaks since the last output #} + + + {{ " "|add:output_file_ui }} +) + + +kconfig_add_kcfg_files({{ plugin_base_name }}_CONFIG_SRCS + {# hack: grantlee on a line with just whitespace and var drops any whitespace/linebreaks since the last output #} + + + {{ " "|add:output_file_kcfgc }} +) + + +# TODO: add ${% templatetag openbrace %}{{ plugin_base_name }}_CONFIG_SRCS{% templatetag closebrace %} to plugin sources + + +target_link_libraries({{ plugin_base_name }} + KDev::Project +) diff --git a/file_templates/kdevelop/kdev_projectconfig/kdev_projectconfig.desktop b/file_templates/kdevelop/kdev_projectconfig/kdev_projectconfig.desktop new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_projectconfig/kdev_projectconfig.desktop @@ -0,0 +1,49 @@ +[General] +Name=Plugin Project Configuration +Comment=Extends a KDevPlatform plugin with project configuration +Category=C++/KDevelop +Language=C++ +Type=Class +BaseClasses=public KDevelop::ConfigPage +Files=Header,Implementation,UI,KCFG,KCFGC,CMake,PluginHeader,PluginImplementation +OptionsFile=options.kcfg + +[Header] +Name=Header +File=projectconfigpage.h +OutputFile=projectconfigpage.h + +[Implementation] +Name=Implementation +File=projectconfigpage.cpp +OutputFile=projectconfigpage.cpp + +[UI] +Name=User Interface +File=projectconfigpage.ui +OutputFile=projectconfigpage.ui + +[KCFG] +Name=Configuration options +File=projectconfig.kcfg +OutputFile=projectconfig.kcfg + +[KCFGC] +Name=Configuration code options +File=projectconfig.kcfgc +OutputFile=projectconfig.kcfgc + +[CMake] +Name=CMakeLists.txt +File=CMakeLists.txt +OutputFile=CMakeLists.txt + +[PluginHeader] +Name=Plugin Header +File=plugin.h +OutputFile={{ plugin_class_name|lower }}.h + +[PluginImplementation] +Name=Plugin Implementation +File=plugin.cpp +OutputFile={{ plugin_class_name|lower }}.cpp diff --git a/file_templates/kdevelop/kdev_projectconfig/options.kcfg b/file_templates/kdevelop/kdev_projectconfig/options.kcfg new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_projectconfig/options.kcfg @@ -0,0 +1,49 @@ + + + + + + + Plugin + + + + plugins + + + + + + ProjectConfig + + + + kdevplugin + + + + KDevPlugin + + + + + + Plugin + + + + true + + + + true + + + + true + + + diff --git a/file_templates/kdevelop/kdev_projectconfig/plugin.h b/file_templates/kdevelop/kdev_projectconfig/plugin.h new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_projectconfig/plugin.h @@ -0,0 +1,3 @@ + // TODO: add to plugin class header + int perProjectConfigPages() const override; + KDevelop::ConfigPage* perProjectConfigPage(int number, const KDevelop::ProjectConfigOptions& options, QWidget* parent) override; diff --git a/file_templates/kdevelop/kdev_projectconfig/plugin.cpp b/file_templates/kdevelop/kdev_projectconfig/plugin.cpp new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_projectconfig/plugin.cpp @@ -0,0 +1,22 @@ +// TODO: add to plugin class implementation +#include "{{ output_file_header }}" + + +#include + + +int {{ plugin_class_name }}::perProjectConfigPages() const +{ + return 1; +} + + +KDevelop::ConfigPage* {{ plugin_class_name }}::perProjectConfigPage(int number, const KDevelop::ProjectConfigOptions& options, QWidget* parent) +{ + if (number != 0) { + return nullptr; + } + + + return new {% if namespaces %}{{ namespaces|join:"::" }}::{% endif %}{{ name }}(this, options.project, parent); +} diff --git a/file_templates/kdevelop/kdev_projectconfig/projectconfig.kcfg b/file_templates/kdevelop/kdev_projectconfig/projectconfig.kcfg new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_projectconfig/projectconfig.kcfg @@ -0,0 +1,28 @@ + + + +{% if add_bool_sample %} + + true + +{% endif %} +{% if add_string_sample %} + + Some text + +{% endif %} +{% if add_enum_sample %} + + + + + + + First + +{% endif %} + + diff --git a/file_templates/kdevelop/kdev_projectconfig/projectconfig.kcfgc b/file_templates/kdevelop/kdev_projectconfig/projectconfig.kcfgc new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_projectconfig/projectconfig.kcfgc @@ -0,0 +1,3 @@ +File={{ output_file_kcfg }} +NameSpace={% for ns in namespaces %}{{ ns }}{% if not forloop.last %}::{% endif %}{% endfor %} +ClassName={{ config_class_name }} diff --git a/file_templates/kdevelop/kdev_projectconfig/projectconfigpage.h b/file_templates/kdevelop/kdev_projectconfig/projectconfigpage.h new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_projectconfig/projectconfigpage.h @@ -0,0 +1,102 @@ +{% extends "cpp_header.h" %} +{% load kdev_filters %} + +{% block includes %} +{{ block.super }} +{% if not base_classes %} +#include +{% endif %} + + +namespace KDevelop +{ +class IProject; +} +{% endblock includes %} + +{% block forward_declarations %} +namespace Ui +{ +class {{ name }}; +} +{% endblock forward_declarations %} + + +{% block class_declaration_open %} +{% if base_classes %} +{{ block.super }} +{% else %} +{% include "class_declaration_apidox_cpp.txt" %} +class {{ name }} : public KDevelop::ConfigPage +{ +{% endif %} +{% endblock class_declaration_open %} + +{% block class_body %} + Q_OBJECT + + +public: + /** + * Constructor + * + * @param plugin + * @param project + * @param parent + */ + {{ name }}(KDevelop::IPlugin* plugin, KDevelop::IProject* project, QWidget* parent); + ~{{ name }}() override; + + {% for method in public_functions %} + {% if not method.isConstructor and not method.isDestructor %} + + {% include "class_method_declaration_apidox_cpp.txt" %} + {% include "class_method_declaration_cpp.txt" %} + + {% endif %} + {% endfor %} + + {% for property in members %} + + {% include "class_property_getter_declaration_apidox_cpp.txt" %} + {% include "class_property_getter_declaration_cpp.txt" %} + + {% endfor %} + + +{% if members %} +public Q_SLOTS: + {% for property in members %} + + {% include "class_property_setter_declaration_apidox_cpp.txt" %} + {% include "class_property_setter_declaration_cpp.txt" %} + + {% endfor %} + +{% endif %} + + +{% if protected_functions %} +protected: + {% for method in protected_functions %} + + {% include "class_method_declaration_apidox_cpp.txt" %} + {% include "class_method_declaration_cpp.txt" %} + + {% endfor %} +{% endif %} + + +private: + {% for method in private_functions %} + + {% include "class_method_declaration_apidox_cpp.txt" %} + {% include "class_method_declaration_cpp.txt" %} + + {% endfor %} + + {% for property in members %} + {{property.type}} m_{{property.name}}; + {% endfor %} + QScopedPointer ui; +{% endblock class_body %} diff --git a/file_templates/kdevelop/kdev_projectconfig/projectconfigpage.cpp b/file_templates/kdevelop/kdev_projectconfig/projectconfigpage.cpp new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_projectconfig/projectconfigpage.cpp @@ -0,0 +1,118 @@ +{% extends "cpp_implementation.cpp" %} +{% load kdev_filters %} + +{% block includes %} +#include "{{ output_file_header }}" +#include "ui_{{ output_file_ui|cut:".ui" }}.h" + + +#include "{{ config_class_name|lower }}.h" + + +#include +{% endblock includes %} + +{% block extra_definitions %} + +{% for method in private_functions %} +{% if not method.isConstructor and not method.isDestructor %} +{% with method.arguments as arguments %} + +{% include "method_definition_cpp.txt" %} +{ + + {% if method.name == "icon" %} + return QIcon::fromTheme(QStringLiteral("{{ page_icon_name }}")); + {% elif method.name == "name" %} + return i18n("{{ page_name }}"); + {% elif method.type %} + return {{ method.default_return_value }}; + {% endif %} + +} + +{% endwith %} +{% endif %} +{% endfor %} + +{% endblock extra_definitions %} + +{% block function_definitions %} + +{{ name }}::{{ name }}(KDevelop::IPlugin* plugin, KDevelop::IProject* project, QWidget* parent) + : ConfigPage(plugin, new {{ config_class_name }}, parent) + , ui(new Ui::{{ name }}) +{ + configSkeleton()->setSharedConfig(project->projectConfiguration()); + configSkeleton()->load(); + + + ui->setupUi(this); +} + + +{{ name }}::~{{ name }}() = default; + + +{% for method in public_functions %} +{% if not method.isConstructor and not method.isDestructor %} +{% with method.arguments as arguments %} + +{% include "method_definition_cpp.txt" %} +{ + + {% if method.name == "icon" %} + return QIcon::fromTheme(QStringLiteral("{{ page_icon_name }}")); + {% elif method.name == "name" %} + return i18n("{{ page_name }}"); + {% elif method.type %} + return {{ method.default_return_value }}; + {% endif %} + +} + +{% endwith %} +{% endif %} +{% endfor %} + +{% for method in protected_functions %} +{% if not method.isConstructor and not method.isDestructor %} +{% with method.arguments as arguments %} + +{% include "method_definition_cpp.txt" %} +{ + + {% if method.name == "icon" %} + return QIcon::fromTheme(QStringLiteral("{{ page_icon_name }}")); + {% elif method.name == "name" %} + return i18n("{{ page_name }}"); + {% elif method.type %} + return {{ method.default_return_value }}; + {% endif %} + +} + +{% endwith %} +{% endif %} +{% endfor %} + +{% for property in members %} + + +{% include "class_property_getter_definition_cpp.txt" %} +{ + return m_{{ property.name }}; +} + + +{% include "class_property_setter_definition_cpp.txt" %} +{ + m_{{ property.name }} = {{ property.name }}; +} + +{% endfor %} + +{% endblock function_definitions %} + +{% block bottom %} +{% endblock bottom %} diff --git a/file_templates/kdevelop/kdev_projectconfig/projectconfigpage.ui b/file_templates/kdevelop/kdev_projectconfig/projectconfigpage.ui new file mode 100644 --- /dev/null +++ b/file_templates/kdevelop/kdev_projectconfig/projectconfigpage.ui @@ -0,0 +1,62 @@ + + + {% for ns in namespaces %}{{ ns }}::{% endfor %}{{ name }} + + + + 0 + +{% if add_bool_sample %} + + + + Bool option: + + + kcfg_boolOption + + + + + + + + + + +{% endif %} +{% if add_string_sample %} + + + + String option: + + + kcfg_stringOption + + + + + + +{% endif %} +{% if add_enum_sample %} + + + + Enum option: + + + kcfg_enumOption + + + + + + + {% endif %} + + + + + diff --git a/file_templates/testing/cpp_qtestlib_kdevelop/CMakeLists.txt b/file_templates/testing/cpp_qtestlib_kdevelop/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/file_templates/testing/cpp_qtestlib_kdevelop/CMakeLists.txt @@ -0,0 +1,4 @@ +ecm_add_test({{ output_file_implementation }} + LINK_LIBRARIES + KDev::Tests +) diff --git a/file_templates/testing/cpp_qtestlib_kdevelop/cpp_qtestlib_kdevelop.desktop b/file_templates/testing/cpp_qtestlib_kdevelop/cpp_qtestlib_kdevelop.desktop --- a/file_templates/testing/cpp_qtestlib_kdevelop/cpp_qtestlib_kdevelop.desktop +++ b/file_templates/testing/cpp_qtestlib_kdevelop/cpp_qtestlib_kdevelop.desktop @@ -98,7 +98,7 @@ Language[zh_CN]=C++ Language[zh_TW]=C++ Type=Test -Files=Header,Implementation +Files=Header,Implementation,CMake OptionsFile=options.kcfg [Header] @@ -174,3 +174,7 @@ File=class.cpp OutputFile={{ name }}.cpp +[CMake] +Name=CMakeLists.txt +File=CMakeLists.txt +OutputFile=CMakeLists.txt