File indexing completed on 2024-04-28 05:48: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 "ce_plugin.h" 0007 #include "ce_widget.h" 0008 #include "ktexteditor_utils.h" 0009 0010 #include <QAction> 0011 0012 #include <KActionCollection> 0013 #include <KLocalizedString> 0014 #include <KPluginFactory> 0015 #include <KXMLGUIFactory> 0016 0017 K_PLUGIN_FACTORY_WITH_JSON(CEPluginFactory, "ce_plugin.json", registerPlugin<CEPlugin>();) 0018 0019 CEPlugin::CEPlugin(QObject *parent, const QVariantList &) 0020 : KTextEditor::Plugin(parent) 0021 { 0022 } 0023 0024 CEPlugin::~CEPlugin() = default; 0025 0026 QObject *CEPlugin::createView(KTextEditor::MainWindow *mainWindow) 0027 { 0028 return new CEPluginView(this, mainWindow); 0029 } 0030 0031 CEPluginView::CEPluginView(CEPlugin *, KTextEditor::MainWindow *mainwindow) 0032 : QObject(mainwindow) 0033 , m_mainWindow(mainwindow) 0034 { 0035 setComponentName(QStringLiteral("compilerexplorer"), i18n("Compiler Explorer")); 0036 // create our one and only action 0037 QAction *a = actionCollection()->addAction(QStringLiteral("kate_open_ce_tab")); 0038 a->setText(i18n("&Open Current File in Compiler Explorer")); 0039 connect(a, &QAction::triggered, this, &CEPluginView::openANewTab); 0040 0041 // register us at the UI 0042 mainwindow->guiFactory()->addClient(this); 0043 } 0044 0045 CEPluginView::~CEPluginView() 0046 { 0047 // remove us from the UI again 0048 m_mainWindow->guiFactory()->removeClient(this); 0049 } 0050 0051 void CEPluginView::openANewTab() 0052 { 0053 if (!m_mainWindow->activeView() || !m_mainWindow->activeView()->document()) { 0054 Utils::showMessage(i18n("No file open"), {}, i18nc("error category title", "CompilerExplorer"), MessageType::Error); 0055 return; 0056 } 0057 0058 m_mainWidget = new CEWidget(this, m_mainWindow); 0059 0060 QWidget *mw = m_mainWindow->window(); 0061 // clang-format off 0062 QMetaObject::invokeMethod(mw, "addWidget", Q_ARG(QWidget*, m_mainWidget)); 0063 // clang-format on 0064 } 0065 0066 // required for TextFilterPluginFactory vtable 0067 #include "ce_plugin.moc" 0068 0069 #include "moc_ce_plugin.cpp"