|
|
|
/* -*- indent-tabs-mode: t; tab-width: 4; c-basic-offset:4 -*-
|
|
|
|
konq_extensionmanager.cc - Extension Manager for Konqueror
|
|
|
|
|
|
|
|
Copyright (c) 2003 by Martijn Klingens <klingens@kde.org>
|
|
|
|
Copyright (c) 2004 by Arend van Beelen jr. <arend@auton.nl>
|
|
|
|
|
|
|
|
*************************************************************************
|
|
|
|
* *
|
|
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
|
|
* it under the terms of the GNU General Public License as published by *
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
|
|
* (at your option) any later version. *
|
|
|
|
* *
|
|
|
|
*************************************************************************
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <tqlayout.h>
|
|
|
|
#include <tqtimer.h>
|
|
|
|
|
|
|
|
#include <kconfig.h>
|
|
|
|
#include <kdebug.h>
|
|
|
|
#include <klocale.h>
|
|
|
|
#include <kparts/componentfactory.h>
|
|
|
|
#include <kparts/plugin.h>
|
|
|
|
#include <kplugininfo.h>
|
|
|
|
#include <kpluginselector.h>
|
|
|
|
#include <ksettings/dispatcher.h>
|
|
|
|
#include <dcopref.h>
|
|
|
|
|
|
|
|
#include "konq_extensionmanager.h"
|
|
|
|
#include "konq_mainwindow.h"
|
|
|
|
|
|
|
|
class KonqExtensionManagerPrivate
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
KPluginSelector *pluginSelector;
|
|
|
|
KonqMainWindow *mainWindow;
|
|
|
|
KParts::ReadOnlyPart* activePart;
|
|
|
|
bool isChanged;
|
|
|
|
};
|
|
|
|
|
|
|
|
KonqExtensionManager::KonqExtensionManager(TQWidget *parent, KonqMainWindow *mainWindow, KParts::ReadOnlyPart* activePart) :
|
|
|
|
KDialogBase(Plain, i18n("Configure"), Default | Cancel | Apply | Ok | User1,
|
|
|
|
Ok, parent, "extensionmanager", false, true, KGuiItem(i18n("&Reset"), "undo"))
|
|
|
|
{
|
|
|
|
d = new KonqExtensionManagerPrivate;
|
|
|
|
showButton(User1, false);
|
|
|
|
setChanged(false);
|
|
|
|
|
|
|
|
setInitialSize(TQSize(640, 480));
|
|
|
|
|
|
|
|
(new TQVBoxLayout(plainPage(), 0, 0))->setAutoAdd(true);
|
|
|
|
d->pluginSelector = new KPluginSelector(plainPage());
|
|
|
|
setMainWidget(d->pluginSelector);
|
|
|
|
connect(d->pluginSelector, TQT_SIGNAL(changed(bool)), this, TQT_SLOT(setChanged(bool)));
|
|
|
|
connect(d->pluginSelector, TQT_SIGNAL(configCommitted(const TQCString &)),
|
|
|
|
KSettings::Dispatcher::self(), TQT_SLOT(reparseConfiguration(const TQCString &)));
|
|
|
|
|
|
|
|
d->mainWindow = mainWindow;
|
|
|
|
d->activePart = activePart;
|
|
|
|
|
|
|
|
// There's a limitation of KPluginSelector here... It assumes that all plugins in a given widget (as created by addPlugins)
|
|
|
|
// have their config in the same KConfig[Group]. So we can't show konqueror extensions and khtml extensions in the same tab.
|
|
|
|
d->pluginSelector->addPlugins("konqueror", i18n("Extensions"), "Extensions", KGlobal::config());
|
|
|
|
if ( activePart ) {
|
|
|
|
KInstance* instance = activePart->instance();
|
|
|
|
d->pluginSelector->addPlugins(instance->instanceName(), i18n("Tools"), "Tools", instance->config());
|
|
|
|
d->pluginSelector->addPlugins(instance->instanceName(), i18n("Statusbar"), "Statusbar", instance->config());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
KonqExtensionManager::~KonqExtensionManager()
|
|
|
|
{
|
|
|
|
delete d;
|
|
|
|
}
|
|
|
|
|
|
|
|
void KonqExtensionManager::setChanged(bool c)
|
|
|
|
{
|
|
|
|
d->isChanged = c;
|
|
|
|
enableButton(Apply, c);
|
|
|
|
}
|
|
|
|
|
|
|
|
void KonqExtensionManager::slotDefault()
|
|
|
|
{
|
|
|
|
d->pluginSelector->defaults();
|
|
|
|
setChanged(false);
|
|
|
|
}
|
|
|
|
|
|
|
|
void KonqExtensionManager::slotUser1()
|
|
|
|
{
|
|
|
|
d->pluginSelector->load();
|
|
|
|
setChanged(false);
|
|
|
|
}
|
|
|
|
|
|
|
|
void KonqExtensionManager::apply()
|
|
|
|
{
|
|
|
|
if(d->isChanged)
|
|
|
|
{
|
|
|
|
d->pluginSelector->save();
|
|
|
|
setChanged(false);
|
|
|
|
if( d->mainWindow )
|
|
|
|
{
|
|
|
|
KParts::Plugin::loadPlugins(TQT_TQOBJECT(d->mainWindow), d->mainWindow, KGlobal::instance());
|
|
|
|
TQPtrList<KParts::Plugin> plugins = KParts::Plugin::pluginObjects(TQT_TQOBJECT(d->mainWindow));
|
|
|
|
TQPtrListIterator<KParts::Plugin> it(plugins);
|
|
|
|
KParts::Plugin *plugin;
|
|
|
|
while((plugin = it.current()) != 0)
|
|
|
|
{
|
|
|
|
++it;
|
|
|
|
d->mainWindow->factory()->addClient(plugin);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ( d->activePart )
|
|
|
|
{
|
|
|
|
KParts::Plugin::loadPlugins( d->activePart, d->activePart, d->activePart->instance() );
|
|
|
|
TQPtrList<KParts::Plugin> plugins = KParts::Plugin::pluginObjects( d->activePart );
|
|
|
|
TQPtrListIterator<KParts::Plugin> it(plugins);
|
|
|
|
KParts::Plugin *plugin;
|
|
|
|
while((plugin = it.current()) != 0)
|
|
|
|
{
|
|
|
|
++it;
|
|
|
|
d->activePart->factory()->addClient(plugin);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void KonqExtensionManager::slotApply()
|
|
|
|
{
|
|
|
|
apply();
|
|
|
|
}
|
|
|
|
|
|
|
|
void KonqExtensionManager::slotOk()
|
|
|
|
{
|
|
|
|
emit okClicked();
|
|
|
|
apply();
|
|
|
|
accept();
|
|
|
|
}
|
|
|
|
|
|
|
|
void KonqExtensionManager::show()
|
|
|
|
{
|
|
|
|
d->pluginSelector->load();
|
|
|
|
|
|
|
|
KDialogBase::show();
|
|
|
|
}
|
|
|
|
|
|
|
|
#include "konq_extensionmanager.moc"
|