You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
3.6 KiB
122 lines
3.6 KiB
/* This file is part of the KDE project
|
|
Copyright (C) 2001 Christoph Cullmann <cullmann@kde.org>
|
|
Copyright (C) 2002 Joseph Wenninger <jowenn@kde.org>
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Library General Public
|
|
License version 2 as published by the Free Software Foundation.
|
|
|
|
This library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Library General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Library General Public License
|
|
along with this library; see the file COPYING.LIB. If not, write to
|
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
#include "kateconfigplugindialogpage.h"
|
|
#include "kateconfigplugindialogpage.moc"
|
|
|
|
#include "katepluginmanager.h"
|
|
#include "kateconfigdialog.h"
|
|
#include <tdelistbox.h>
|
|
#include "kateapp.h"
|
|
#include <tqstringlist.h>
|
|
#include <tqhbox.h>
|
|
#include <tqlabel.h>
|
|
#include <tdelocale.h>
|
|
#include <tqpushbutton.h>
|
|
#include <tqtooltip.h>
|
|
#include <kiconloader.h>
|
|
#include <tqwhatsthis.h>
|
|
|
|
class KatePluginListItem : public TQCheckListItem
|
|
{
|
|
public:
|
|
KatePluginListItem(bool checked, KatePluginInfo *info, TQListView *parent);
|
|
KatePluginInfo *info() const { return mInfo; }
|
|
|
|
protected:
|
|
void stateChange(bool);
|
|
|
|
private:
|
|
KatePluginInfo *mInfo;
|
|
bool silentStateChange;
|
|
};
|
|
|
|
KatePluginListItem::KatePluginListItem(bool checked, KatePluginInfo *info, TQListView *parent)
|
|
: TQCheckListItem(parent, info->service->name(), CheckBox)
|
|
, mInfo(info)
|
|
, silentStateChange(false)
|
|
{
|
|
silentStateChange = true;
|
|
setOn(checked);
|
|
silentStateChange = false;
|
|
}
|
|
|
|
void KatePluginListItem::stateChange(bool b)
|
|
{
|
|
if(!silentStateChange)
|
|
static_cast<KatePluginListView *>(listView())->stateChanged(this, b);
|
|
}
|
|
|
|
KatePluginListView::KatePluginListView(TQWidget *parent, const char *name)
|
|
: TDEListView(parent, name)
|
|
{
|
|
}
|
|
|
|
void KatePluginListView::stateChanged(KatePluginListItem *item, bool b)
|
|
{
|
|
emit stateChange(item, b);
|
|
}
|
|
|
|
KateConfigPluginPage::KateConfigPluginPage(TQWidget *parent, KateConfigDialog *dialog):TQVBox(parent)
|
|
{
|
|
myDialog=dialog;
|
|
|
|
KatePluginListView* listView = new KatePluginListView(this);
|
|
listView->addColumn(i18n("Name"));
|
|
listView->addColumn(i18n("Comment"));
|
|
TQWhatsThis::add(listView,i18n("Here you can see all available Kate plugins. Those with a check mark are loaded, and will be loaded again the next time Kate is started."));
|
|
|
|
connect(listView, TQT_SIGNAL(stateChange(KatePluginListItem *, bool)), this, TQT_SLOT(stateChange(KatePluginListItem *, bool)));
|
|
|
|
KatePluginList &pluginList (KatePluginManager::self()->pluginList());
|
|
for (unsigned int i=0; i < pluginList.size(); ++i)
|
|
{
|
|
KatePluginListItem *item = new KatePluginListItem(pluginList[i].load, &pluginList[i], listView);
|
|
item->setText(0, pluginList[i].service->name());
|
|
item->setText(1, pluginList[i].service->comment());
|
|
}
|
|
}
|
|
|
|
void KateConfigPluginPage::stateChange(KatePluginListItem *item, bool b)
|
|
{
|
|
if(b)
|
|
loadPlugin(item);
|
|
else
|
|
unloadPlugin(item);
|
|
|
|
emit changed();
|
|
}
|
|
|
|
void KateConfigPluginPage::loadPlugin (KatePluginListItem *item)
|
|
{
|
|
KatePluginManager::self()->loadPlugin (item->info());
|
|
KatePluginManager::self()->enablePluginGUI (item->info());
|
|
myDialog->addPluginPage (item->info()->plugin);
|
|
|
|
item->setOn(true);
|
|
}
|
|
|
|
void KateConfigPluginPage::unloadPlugin (KatePluginListItem *item)
|
|
{
|
|
myDialog->removePluginPage (item->info()->plugin);
|
|
KatePluginManager::self()->unloadPlugin (item->info());
|
|
|
|
item->setOn(false);
|
|
}
|