| 87 | } |
| 88 | |
| 89 | ContextMenuExtension FileTemplatesPlugin::contextMenuExtension(Context* context, QWidget* parent) |
| 90 | { |
| 91 | ContextMenuExtension ext; |
| 92 | QUrl fileUrl; |
| 93 | |
| 94 | if (context->type() == Context::ProjectItemContext) |
| 95 | { |
| 96 | auto* projectContext = static_cast<ProjectItemContext*>(context); |
| 97 | QList<ProjectBaseItem*> items = projectContext->items(); |
| 98 | if (items.size() != 1) |
| 99 | { |
| 100 | return ext; |
| 101 | } |
| 102 | |
| 103 | QUrl url; |
| 104 | ProjectBaseItem* item = items.first(); |
| 105 | if (item->folder()) |
| 106 | { |
| 107 | url = item->path().toUrl(); |
| 108 | } |
| 109 | else if (item->target()) |
| 110 | { |
| 111 | url = item->parent()->path().toUrl(); |
| 112 | } |
| 113 | if (url.isValid()) |
| 114 | { |
| 115 | auto* action = new QAction(i18nc("@action:inmenu", "Create from Template..."), parent); |
| 116 | action->setIcon(QIcon::fromTheme(QStringLiteral("code-class"))); |
| 117 | action->setData(url); |
| 118 | connect(action, &QAction::triggered, this, &FileTemplatesPlugin::createFromTemplate); |
| 119 | ext.addAction(ContextMenuExtension::FileGroup, action); |
| 120 | } |
| 121 | |
| 122 | if (item->file()) |
| 123 | { |
| 124 | fileUrl = item->path().toUrl(); |
| 125 | } |
| 126 | } |
| 127 | else if (context->type() == Context::EditorContext) |
| 128 | { |
| 129 | auto* editorContext = static_cast<KDevelop::EditorContext*>(context); |
| 130 | fileUrl = editorContext->url(); |
| 131 | } |
| 132 | |
| 133 | if (fileUrl.isValid() && determineTemplateType(fileUrl) != NoTemplate) |
| 134 | { |
| 135 | auto* action = new QAction(i18nc("@action:inmenu", "Show Template Preview"), parent); |
| 136 | action->setIcon(QIcon::fromTheme(QStringLiteral("document-preview"))); |
| 137 | action->setData(fileUrl); |
| 138 | connect(action, &QAction::triggered, this, &FileTemplatesPlugin::previewTemplate); |
| 139 | ext.addAction(ContextMenuExtension::ExtensionGroup, action); |
| 140 | } |
| 141 | |
| 142 | return ext; |
| 143 | } |
| 144 | |
| 145 | QString FileTemplatesPlugin::name() const |
| 146 | { |
nothing calls this directly
no test coverage detected