MCPcopy Create free account
hub / github.com/KDE/kdevelop / contextMenuExtension

Method contextMenuExtension

plugins/filetemplates/filetemplatesplugin.cpp:89–143  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

87}
88
89ContextMenuExtension 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
145QString FileTemplatesPlugin::name() const
146{

Callers

nothing calls this directly

Calls 15

folderMethod · 0.80
setIconMethod · 0.80
typeMethod · 0.45
itemsMethod · 0.45
sizeMethod · 0.45
firstMethod · 0.45
toUrlMethod · 0.45
pathMethod · 0.45
targetMethod · 0.45
parentMethod · 0.45
isValidMethod · 0.45
setDataMethod · 0.45

Tested by

no test coverage detected