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.
170 lines
3.7 KiB
170 lines
3.7 KiB
#include "toolsconfig.h"
|
|
|
|
#include <tqapplication.h>
|
|
#include <tqlabel.h>
|
|
#include <tqlayout.h>
|
|
#include <tqlistbox.h>
|
|
#include <tqpushbutton.h>
|
|
#include <tqheader.h>
|
|
|
|
#include <tdeapplication.h>
|
|
#include <kdesktopfile.h>
|
|
#include <kdialog.h>
|
|
#include <kiconloader.h>
|
|
#include <tdelocale.h>
|
|
|
|
#include "tools_part.h"
|
|
#include "kapplicationtree.h"
|
|
|
|
|
|
ToolsConfig::ToolsConfig(TQWidget *parent, const char *name)
|
|
: TQWidget(parent, name), _tree(0)
|
|
{
|
|
_entries.setAutoDelete(true);
|
|
}
|
|
|
|
|
|
void ToolsConfig::showEvent(TQShowEvent *e)
|
|
{
|
|
TQWidget::showEvent(e);
|
|
|
|
if (!_tree)
|
|
{
|
|
TQApplication::setOverrideCursor(TQt::waitCursor);
|
|
|
|
TQHBoxLayout *hbox = new TQHBoxLayout(this, KDialog::marginHint(), KDialog::spacingHint());
|
|
|
|
TQVBoxLayout *vbox = new TQVBoxLayout(hbox);
|
|
_tree = new KDevApplicationTree(this);
|
|
_tree->header()->hide();
|
|
TQLabel *l = new TQLabel(_tree, i18n("&Applications:"), this);
|
|
l->show();
|
|
_tree->show();
|
|
|
|
vbox->addWidget(l);
|
|
vbox->addWidget(_tree);
|
|
|
|
vbox = new TQVBoxLayout(hbox);
|
|
|
|
_toList = new TQPushButton(TQApplication::reverseLayout() ? "<<" : ">>", this);
|
|
_toList->show();
|
|
vbox->addWidget(_toList);
|
|
|
|
connect(_toList, TQ_SIGNAL(clicked()), this, TQ_SLOT(toList()));
|
|
|
|
_toTree = new TQPushButton(TQApplication::reverseLayout() ? ">>" : "<<", this);
|
|
_toTree->show();
|
|
vbox->addWidget(_toTree);
|
|
|
|
connect(_toTree, TQ_SIGNAL(clicked()), this, TQ_SLOT(toTree()));
|
|
|
|
vbox = new TQVBoxLayout(hbox);
|
|
_list = new TQListBox(this);
|
|
l = new TQLabel(_list, i18n("&Tools menu:"), this);
|
|
l->show();
|
|
_list->show();
|
|
vbox->addWidget(l);
|
|
vbox->addWidget(_list);
|
|
|
|
TQApplication::restoreOverrideCursor();
|
|
}
|
|
|
|
fill();
|
|
checkButtons();
|
|
|
|
connect(_tree, TQ_SIGNAL(selectionChanged()), this, TQ_SLOT(checkButtons()));
|
|
connect(_list, TQ_SIGNAL(selectionChanged()), this, TQ_SLOT(checkButtons()));
|
|
}
|
|
|
|
|
|
void ToolsConfig::checkButtons()
|
|
{
|
|
_toList->setEnabled(_tree->selectedItem() && !_tree->selectedItem()->firstChild());
|
|
_toTree->setEnabled(_list->currentItem() >= 0 && _list->currentItem() < (int)_list->count());
|
|
}
|
|
|
|
|
|
void ToolsConfig::fill()
|
|
{
|
|
_entries.clear();
|
|
|
|
TDEConfig *config = ToolsFactory::instance()->config();
|
|
config->setGroup("Tools");
|
|
|
|
TQStringList list = config->readListEntry("Tools");
|
|
|
|
for (TQStringList::Iterator it = list.begin(); it != list.end(); ++it)
|
|
add(*it);
|
|
}
|
|
|
|
|
|
void ToolsConfig::add(const TQString &desktopFile)
|
|
{
|
|
KDesktopFile df(desktopFile, true);
|
|
if (df.readName().isEmpty())
|
|
return;
|
|
|
|
Entry *entry = new Entry;
|
|
|
|
if (!df.readIcon().isEmpty())
|
|
entry->icon = BarIcon(df.readIcon());
|
|
entry->name = df.readName();
|
|
entry->desktopFile = desktopFile;
|
|
|
|
_entries.append(entry);
|
|
|
|
updateList();
|
|
|
|
checkButtons();
|
|
}
|
|
|
|
|
|
void ToolsConfig::toList()
|
|
{
|
|
KDevAppTreeListItem *item = dynamic_cast<KDevAppTreeListItem*>(_tree->selectedItem());
|
|
if (item && !item->desktopEntryPath().isEmpty())
|
|
add(item->desktopEntryPath());
|
|
checkButtons();
|
|
}
|
|
|
|
|
|
void ToolsConfig::toTree()
|
|
{
|
|
_entries.remove(_list->currentItem());
|
|
updateList();
|
|
checkButtons();
|
|
}
|
|
|
|
|
|
void ToolsConfig::accept()
|
|
{
|
|
TDEConfig *config = ToolsFactory::instance()->config();
|
|
config->setGroup("Tools");
|
|
|
|
TQStringList l;
|
|
TQPtrListIterator<Entry> it(_entries);
|
|
for ( ; it.current(); ++it)
|
|
l.append(it.current()->desktopFile);
|
|
|
|
config->writeEntry("Tools", l);
|
|
config->sync();
|
|
}
|
|
|
|
|
|
void ToolsConfig::updateList()
|
|
{
|
|
_list->setUpdatesEnabled(false);
|
|
|
|
_list->clear();
|
|
|
|
TQPtrListIterator<Entry> it(_entries);
|
|
for ( ; it.current(); ++it)
|
|
_list->insertItem(it.current()->icon, it.current()->name);
|
|
|
|
_list->setUpdatesEnabled(true);
|
|
_list->repaint();
|
|
}
|
|
|
|
|
|
#include "toolsconfig.moc"
|