File indexing completed on 2024-04-28 04:38:55
0001 /* 0002 SPDX-FileCopyrightText: 2003, 2006 Adam Treat <treat@kde.org> 0003 SPDX-FileCopyrightText: 2007 Andreas Pakulat <apaku@gmx.de> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #include "kdevkonsoleviewplugin.h" 0009 0010 #include <KLocalizedString> 0011 #include <KService> 0012 0013 #include <interfaces/iuicontroller.h> 0014 #include <interfaces/icore.h> 0015 0016 #include "kdevkonsoleview.h" 0017 #include "debug.h" 0018 0019 K_PLUGIN_FACTORY_WITH_JSON(KonsoleViewFactory, "kdevkonsoleview.json", registerPlugin<KDevKonsoleViewPlugin>();) 0020 0021 class KDevKonsoleViewFactory: public KDevelop::IToolViewFactory{ 0022 public: 0023 explicit KDevKonsoleViewFactory(KDevKonsoleViewPlugin *plugin): 0024 mplugin(plugin) {} 0025 QWidget* create(QWidget *parent = nullptr) override 0026 { 0027 return new KDevKonsoleView(mplugin, parent); 0028 } 0029 Qt::DockWidgetArea defaultPosition() const override 0030 { 0031 return Qt::BottomDockWidgetArea; 0032 } 0033 QString id() const override 0034 { 0035 return QStringLiteral("org.kdevelop.KonsoleView"); 0036 } 0037 private: 0038 KDevKonsoleViewPlugin *mplugin; 0039 }; 0040 0041 KDevKonsoleViewPlugin::KDevKonsoleViewPlugin(QObject* parent, const QVariantList&) 0042 : KDevelop::IPlugin(QStringLiteral("kdevkonsoleview"), parent) 0043 { 0044 // TODO KF6: check whether constructing a KPluginMetaData from this plugin ID still works 0045 // consider passing some path or prefix instead of the plugin ID to increase robustness. 0046 const auto factory = KPluginFactory::loadFactory(KPluginMetaData(QStringLiteral("konsolepart"))); 0047 if (!factory) { 0048 qCWarning(PLUGIN_KONSOLE) << "Failed to load 'konsolepart' plugin:" << factory.errorText; 0049 setErrorDescription(i18n("Failed to load 'konsolepart' plugin: %1", factory.errorString)); 0050 return; 0051 } 0052 0053 m_konsoleFactory = factory.plugin; 0054 m_viewFactory = new KDevKonsoleViewFactory(this); 0055 0056 core()->uiController()->addToolView(i18nc("@title:window", "Terminal"), m_viewFactory); 0057 } 0058 0059 void KDevKonsoleViewPlugin::unload() 0060 { 0061 if (m_viewFactory) { 0062 core()->uiController()->removeToolView(m_viewFactory); 0063 } 0064 } 0065 0066 KPluginFactory* KDevKonsoleViewPlugin::konsoleFactory() const 0067 { 0068 return m_konsoleFactory; 0069 } 0070 0071 KDevKonsoleViewPlugin::~KDevKonsoleViewPlugin() 0072 { 0073 } 0074 0075 #include "kdevkonsoleviewplugin.moc" 0076 #include "moc_kdevkonsoleviewplugin.cpp"