File indexing completed on 2024-05-05 05:51:20

0001 /*
0002     SPDX-FileCopyrightText: 2021 Waqar Ahmed <waqar.17a@gmail.com>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 #include "cmaketoolsplugin.h"
0007 
0008 #include <KPluginFactory>
0009 #include <KTextEditor/MainWindow>
0010 #include <KXMLGUIFactory>
0011 #include <ktexteditor/document.h>
0012 
0013 #include <QDebug>
0014 
0015 K_PLUGIN_FACTORY_WITH_JSON(CMakeToolsPluginFactory, "cmaketoolsplugin.json", registerPlugin<CMakeToolsPlugin>();)
0016 
0017 CMakeToolsPlugin::CMakeToolsPlugin(QObject *parent, const QVariantList &)
0018     : KTextEditor::Plugin(parent)
0019 {
0020 }
0021 
0022 CMakeToolsPlugin::~CMakeToolsPlugin() = default;
0023 
0024 QObject *CMakeToolsPlugin::createView(KTextEditor::MainWindow *mainWindow)
0025 {
0026     return new CMakeToolsPluginView(this, mainWindow);
0027 }
0028 
0029 CMakeToolsPluginView::CMakeToolsPluginView(CMakeToolsPlugin *plugin, KTextEditor::MainWindow *mainwindow)
0030     : QObject(plugin)
0031     , m_mainWindow(mainwindow)
0032 {
0033     connect(m_mainWindow, &KTextEditor::MainWindow::viewCreated, this, &CMakeToolsPluginView::onViewCreated);
0034 
0035     /**
0036      * connect for all already existing views
0037      */
0038     const auto views = m_mainWindow->views();
0039     for (KTextEditor::View *view : views) {
0040         onViewCreated(view);
0041     }
0042 }
0043 
0044 CMakeToolsPluginView::~CMakeToolsPluginView()
0045 {
0046     m_mainWindow->guiFactory()->removeClient(this);
0047 }
0048 
0049 void CMakeToolsPluginView::onViewCreated(KTextEditor::View *v)
0050 {
0051     if (!CMakeCompletion::isCMakeFile(v->document()->url()))
0052         return;
0053 
0054     v->registerCompletionModel(&m_completion);
0055 }
0056 
0057 #include "cmaketoolsplugin.moc"
0058 #include "moc_cmaketoolsplugin.cpp"