21 #include "katepluginmanager.h"
22 #include "katepluginmanager.moc"
25 #include "katemainwindow.h"
27 #include "../interfaces/application.h"
30 #include <tqstringlist.h>
31 #include <kmessagebox.h>
35 KatePluginManager::KatePluginManager(TQObject *parent) : TQObject (parent)
41 loadAllEnabledPlugins ();
44 KatePluginManager::~KatePluginManager()
53 KatePluginManager *KatePluginManager::self()
58 void KatePluginManager::setupPluginList ()
60 TQValueList<KService::Ptr> traderList= KTrader::self()->query(
"Kate/Plugin",
"(not ('Kate/ProjectPlugin' in ServiceTypes)) and (not ('Kate/InitPlugin' in ServiceTypes))");
62 for(KTrader::OfferList::Iterator it(traderList.begin()); it != traderList.end(); ++it)
64 KService::Ptr ptr = (*it);
66 TQString pVersion = ptr->property(
"X-Kate-Version").toString();
69 if (pVersion ==
"2.5")
77 m_pluginList.push_back (info);
82 void KatePluginManager::loadConfig ()
86 for (
unsigned int i=0; i < m_pluginList.size(); ++i)
87 m_pluginList[i].load =
KateApp::self()->config()->readBoolEntry (m_pluginList[i].service->library(),
false) ||
88 KateApp::self()->config()->readBoolEntry (m_pluginList[i].service->property(
"X-Kate-PluginName").toString(),
false);
91 void KatePluginManager::writeConfig ()
95 for (
unsigned int i=0; i < m_pluginList.size(); ++i)
97 TQString saveName=m_pluginList[i].service->property(
"X-Kate-PluginName").toString();
99 if (saveName.isEmpty())
100 saveName = m_pluginList[i].service->library();
102 KateApp::self()->config()->writeEntry (saveName, m_pluginList[i].load);
106 void KatePluginManager::loadAllEnabledPlugins ()
108 for (
unsigned int i=0; i < m_pluginList.size(); ++i)
110 if (m_pluginList[i].load)
111 loadPlugin (&m_pluginList[i]);
113 unloadPlugin (&m_pluginList[i]);
117 void KatePluginManager::unloadAllPlugins ()
119 for (
unsigned int i=0; i < m_pluginList.size(); ++i)
121 if (m_pluginList[i].plugin)
122 unloadPlugin (&m_pluginList[i]);
126 void KatePluginManager::enableAllPluginsGUI (KateMainWindow *win)
128 for (
unsigned int i=0; i < m_pluginList.size(); ++i)
130 if (m_pluginList[i].load)
131 enablePluginGUI (&m_pluginList[i], win);
135 void KatePluginManager::disableAllPluginsGUI (KateMainWindow *win)
137 for (
unsigned int i=0; i < m_pluginList.size(); ++i)
139 if (m_pluginList[i].load)
140 disablePluginGUI (&m_pluginList[i], win);
144 void KatePluginManager::loadPlugin (KatePluginInfo *item)
146 TQString pluginName=item->service->property(
"X-Kate-PluginName").toString();
148 if (pluginName.isEmpty())
149 pluginName=item->service->library();
151 item->load = (item->plugin = Kate::createPlugin (TQFile::encodeName(item->service->library()),
Kate::application(), 0, pluginName));
154 void KatePluginManager::unloadPlugin (KatePluginInfo *item)
156 disablePluginGUI (item);
157 if (item->plugin)
delete item->plugin;
162 void KatePluginManager::enablePluginGUI (KatePluginInfo *item, KateMainWindow *win)
164 if (!item->plugin)
return;
165 if (!Kate::pluginViewInterface(item->plugin))
return;
167 Kate::pluginViewInterface(item->plugin)->addView(win->mainWindow());
170 void KatePluginManager::enablePluginGUI (KatePluginInfo *item)
172 if (!item->plugin)
return;
173 if (!Kate::pluginViewInterface(item->plugin))
return;
177 Kate::pluginViewInterface(item->plugin)->addView(
KateApp::self()->mainWindow(i)->mainWindow());
181 void KatePluginManager::disablePluginGUI (KatePluginInfo *item, KateMainWindow *win)
183 if (!item->plugin)
return;
184 if (!Kate::pluginViewInterface(item->plugin))
return;
186 Kate::pluginViewInterface(item->plugin)->removeView(win->mainWindow());
189 void KatePluginManager::disablePluginGUI (KatePluginInfo *item)
191 if (!item->plugin)
return;
192 if (!Kate::pluginViewInterface(item->plugin))
return;
196 Kate::pluginViewInterface(item->plugin)->removeView(
KateApp::self()->mainWindow(i)->mainWindow());
200 Kate::Plugin *KatePluginManager::plugin(
const TQString &name)
202 for (
unsigned int i=0; i < m_pluginList.size(); ++i)
204 KatePluginInfo *info = &m_pluginList[i];
205 TQString pluginName=info->service->property(
"X-Kate-PluginName").toString();
206 if (pluginName.isEmpty())
207 pluginName=info->service->library();
208 if (pluginName==name)
219 bool KatePluginManager::pluginAvailable(
const TQString &){
return false;}
220 class Kate::Plugin *KatePluginManager::loadPlugin(
const TQString &,
bool ){
return 0;}
221 void KatePluginManager::unloadPlugin(
const TQString &,
bool){;}