|
|
|
/***************************************************************************
|
|
|
|
pluginmanager-configuration.cpp - description
|
|
|
|
-------------------
|
|
|
|
begin : Thu Sep 30 2004
|
|
|
|
copyright : (C) 2004 by Martin Witte
|
|
|
|
email : witte@kawo1.rwth-aachen.de
|
|
|
|
***************************************************************************/
|
|
|
|
|
|
|
|
/***************************************************************************
|
|
|
|
* *
|
|
|
|
* 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 "pluginmanager-configuration-ui.h"
|
|
|
|
#include "include/pluginmanager-configuration.h"
|
|
|
|
#include "include/tderadioapp.h"
|
|
|
|
#include "include/pluginmanager.h"
|
|
|
|
|
|
|
|
#include <tdelistbox.h>
|
|
|
|
#include <tdelistview.h>
|
|
|
|
#include <kpushbutton.h>
|
|
|
|
#include <kurlrequester.h>
|
|
|
|
#include <kinputdialog.h>
|
|
|
|
|
|
|
|
#include <tqcheckbox.h>
|
|
|
|
|
|
|
|
PluginManagerConfiguration::PluginManagerConfiguration(TQWidget *parent, TDERadioApp *app, PluginManager *pm)
|
|
|
|
: PluginManagerConfigurationUI(parent),
|
|
|
|
m_Application(app),
|
|
|
|
m_PluginManager(pm),
|
|
|
|
m_dirty(true)
|
|
|
|
{
|
|
|
|
noticePluginLibrariesChanged();
|
|
|
|
noticePluginsChanged();
|
|
|
|
|
|
|
|
TQObject::connect(btnAddLibrary, TQ_SIGNAL(clicked()), this, TQ_SLOT(slotAddLibrary()));
|
|
|
|
TQObject::connect(btnRemoveLibrary, TQ_SIGNAL(clicked()), this, TQ_SLOT(slotRemoveLibrary()));
|
|
|
|
TQObject::connect(btnNewPluginInstance, TQ_SIGNAL(clicked()), this, TQ_SLOT(slotNewPluginInstance()));
|
|
|
|
TQObject::connect(btnRemovePluginInstance, TQ_SIGNAL(clicked()), this, TQ_SLOT(slotRemovePluginInstance()));
|
|
|
|
TQObject::connect(cbShowProgressBar, TQ_SIGNAL(toggled(bool)), this, TQ_SLOT(slotSetDirty()));
|
|
|
|
|
|
|
|
slotCancel();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
PluginManagerConfiguration::~PluginManagerConfiguration ()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void PluginManagerConfiguration::noticePluginLibrariesChanged()
|
|
|
|
{
|
|
|
|
listPluginLibraries->clear();
|
|
|
|
const TQMap<TQString, PluginLibraryInfo> &libs = m_Application->getPluginLibraries();
|
|
|
|
TQMapConstIterator<TQString,PluginLibraryInfo> end = libs.end();
|
|
|
|
for (TQMapConstIterator<TQString,PluginLibraryInfo> it = libs.begin(); it != end; ++it) {
|
|
|
|
listPluginLibraries->insertItem(it.key());
|
|
|
|
}
|
|
|
|
|
|
|
|
listPluginClasses->clear();
|
|
|
|
const TQMap<TQString, PluginClassInfo> &classes = m_Application->getPluginClasses();
|
|
|
|
TQMapConstIterator<TQString, PluginClassInfo> end_cls = classes.end();
|
|
|
|
for (TQMapConstIterator<TQString, PluginClassInfo> it = classes.begin(); it != end_cls; ++it) {
|
|
|
|
listPluginClasses->insertItem(new TDEListViewItem(listPluginClasses, it.key(), (*it).description));
|
|
|
|
}
|
|
|
|
|
|
|
|
noticePluginsChanged();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void PluginManagerConfiguration::noticePluginsChanged()
|
|
|
|
{
|
|
|
|
listPluginInstances->clear();
|
|
|
|
const PluginList &plugins = m_PluginManager->plugins();
|
|
|
|
const TQMap<TQString, PluginClassInfo> &classes = m_Application->getPluginClasses();
|
|
|
|
|
|
|
|
for (PluginIterator it(plugins); it.current(); ++it) {
|
|
|
|
TQString class_name = it.current()->pluginClassName();
|
|
|
|
if (classes.contains(class_name)) {
|
|
|
|
TQString obj_name = it.current()->name();
|
|
|
|
listPluginInstances->insertItem(new TDEListViewItem(listPluginInstances, class_name, obj_name, classes[class_name].description));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void PluginManagerConfiguration::slotOK()
|
|
|
|
{
|
|
|
|
if (m_dirty) {
|
|
|
|
m_PluginManager->showProgressBar(cbShowProgressBar->isChecked());
|
|
|
|
m_dirty = false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void PluginManagerConfiguration::slotCancel()
|
|
|
|
{
|
|
|
|
if (m_dirty) {
|
|
|
|
cbShowProgressBar->setChecked(m_PluginManager->showsProgressBar());
|
|
|
|
noticePluginLibrariesChanged();
|
|
|
|
noticePluginsChanged();
|
|
|
|
m_dirty = false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void PluginManagerConfiguration::slotAddLibrary()
|
|
|
|
{
|
|
|
|
slotSetDirty();
|
|
|
|
TQString url = editPluginLibrary->url();
|
|
|
|
if (m_Application && url.length())
|
|
|
|
m_Application->LoadLibrary(url);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void PluginManagerConfiguration::slotRemoveLibrary()
|
|
|
|
{
|
|
|
|
slotSetDirty();
|
|
|
|
if (m_Application) {
|
|
|
|
TQString lib = listPluginLibraries->currentText();
|
|
|
|
if (lib.length()) {
|
|
|
|
m_Application->UnloadLibrary(lib);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void PluginManagerConfiguration::slotNewPluginInstance()
|
|
|
|
{
|
|
|
|
slotSetDirty();
|
|
|
|
if (m_Application && m_PluginManager) {
|
|
|
|
TQListViewItem *item = listPluginClasses->currentItem();
|
|
|
|
TQString class_name = item ? item->text(0) : TQString();
|
|
|
|
bool ok = false;
|
|
|
|
int default_object_id = 1;
|
|
|
|
while (m_PluginManager->getPluginByName(class_name + TQString::number(default_object_id)))
|
|
|
|
++default_object_id;
|
|
|
|
|
|
|
|
TQString object_name = KInputDialog::getText(i18n("Enter Plugin Instance Name"),
|
|
|
|
i18n("Instance Name"),
|
|
|
|
class_name + TQString::number(default_object_id),
|
|
|
|
&ok);
|
|
|
|
if (ok && class_name.length() && object_name.length())
|
|
|
|
m_Application->CreatePlugin(m_PluginManager, class_name, object_name);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void PluginManagerConfiguration::slotRemovePluginInstance()
|
|
|
|
{
|
|
|
|
slotSetDirty();
|
|
|
|
if (m_Application && m_PluginManager) {
|
|
|
|
TQListViewItem *item = listPluginInstances->currentItem();
|
|
|
|
TQString object_name = item ? item->text(1) : TQString();
|
|
|
|
if (object_name.length())
|
|
|
|
m_PluginManager->deletePluginByName(object_name);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void PluginManagerConfiguration::slotSetDirty()
|
|
|
|
{
|
|
|
|
m_dirty = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#include "pluginmanager-configuration.moc"
|