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.
112 lines
3.8 KiB
112 lines
3.8 KiB
/***************************************************************************
|
|
* Copyright (C) 2005-2007 Nicolas Hadacek <hadacek@kde.org> *
|
|
* Copyright (C) 2004 Alain Gibaud <alain.gibaud@free.fr> *
|
|
* *
|
|
* 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 "toolchain_config_center.h"
|
|
|
|
#include <tqlabel.h>
|
|
#include <tqlayout.h>
|
|
#include <kiconloader.h>
|
|
|
|
#include "tools/list/tools_config_widget.h"
|
|
#include "tools/list/compile_config.h"
|
|
#include "tools/list/tool_list.h"
|
|
#include "toolchain_config_widget.h"
|
|
#include "tool_group_ui.h"
|
|
|
|
ToolchainsConfigCenter::ToolchainsConfigCenter(const Tool::Group &sgroup, TQWidget *parent)
|
|
: TreeListDialog(parent, "configure_toolchains_dialog", true,
|
|
i18n("Configure Toolchains"), Ok|User1|User2|Cancel, Cancel, false)
|
|
{
|
|
setButtonGuiItem(User1, KStdGuiItem::reset());
|
|
setButtonGuiItem(User2, KGuiItem(i18n("Update"), "reload"));
|
|
|
|
_titleBox->addStretch(1);
|
|
_infoButton = new KPushButton(KGuiItem(TQString(), "viewmag"), _frame);
|
|
connect(_infoButton, TQ_SIGNAL(clicked()), TQ_SLOT(showInformationDialog()));
|
|
_titleBox->addWidget(_infoButton);
|
|
|
|
TQWidget *current = 0;
|
|
FOR_EACH(PURL::SourceFamily, family) {
|
|
Tool::Lister::ConstIterator it;
|
|
for (it=Tool::lister().begin(); it!=Tool::lister().end(); ++it) {
|
|
PURL::FileType type = it.data()->implementationType(family.data().toolType);
|
|
if ( type==PURL::Nb_FileTypes || type.data().sourceFamily!=family ) continue;
|
|
if ( family==PURL::SourceFamily::Asm && it.data()->implementationType(PURL::ToolType::Compiler)!=PURL::Nb_FileTypes ) continue;
|
|
TQStringList names = family.label();
|
|
names += it.data()->label();
|
|
TQWidget *page = addPage(names);
|
|
TQVBoxLayout *vbox = new TQVBoxLayout(page);
|
|
ToolchainConfigWidget *tcw = static_cast<const ::Tool::GroupUI *>(it.data()->gui())->toolchainConfigWidgetFactory(page);
|
|
tcw->init();
|
|
tcw->loadConfig();
|
|
vbox->addWidget(tcw);
|
|
_pages[page] = tcw;
|
|
if ( it.key()==sgroup.name() ) current = page;
|
|
}
|
|
}
|
|
showPage(current);
|
|
aboutToShowPageSlot(current);
|
|
connect(this, TQ_SIGNAL(aboutToShowPage(TQWidget *)), TQ_SLOT(aboutToShowPageSlot(TQWidget *)));
|
|
}
|
|
|
|
void ToolchainsConfigCenter::aboutToShowPageSlot(TQWidget *page)
|
|
{
|
|
if ( !_pages.contains(page) ) _infoButton->hide();
|
|
else {
|
|
_infoButton->show();
|
|
TQTimer::singleShot(0, _pages[page], TQ_SLOT(detect()));
|
|
}
|
|
}
|
|
|
|
void ToolchainsConfigCenter::slotApply()
|
|
{
|
|
TQMap<TQWidget *, ToolchainConfigWidget *>::iterator it;
|
|
for (it=_pages.begin(); it!=_pages.end(); ++it) it.data()->saveConfig();
|
|
}
|
|
|
|
void ToolchainsConfigCenter::slotOk()
|
|
{
|
|
slotApply();
|
|
accept();
|
|
}
|
|
|
|
ToolchainConfigWidget *ToolchainsConfigCenter::current() const
|
|
{
|
|
int i = activePageIndex();
|
|
if ( i==-1 ) return 0;
|
|
TQMap<TQWidget *, ToolchainConfigWidget *>::const_iterator it;
|
|
for (it=_pages.begin(); it!=_pages.end(); ++it)
|
|
if ( pageIndex(it.key())==i ) return it.data();
|
|
Q_ASSERT(false);
|
|
return 0;
|
|
}
|
|
|
|
void ToolchainsConfigCenter::slotUser1()
|
|
{
|
|
ToolchainConfigWidget *tcw = current();
|
|
if (tcw) {
|
|
tcw->loadConfig();
|
|
tcw->forceDetect();
|
|
}
|
|
}
|
|
|
|
void ToolchainsConfigCenter::slotUser2()
|
|
{
|
|
ToolchainConfigWidget *tcw = current();
|
|
if (tcw) tcw->forceDetect();
|
|
}
|
|
|
|
void ToolchainsConfigCenter::showInformationDialog()
|
|
{
|
|
ToolchainConfigWidget *tcw = current();
|
|
Q_ASSERT(tcw);
|
|
TextEditorDialog dialog(tcw->group().informationText(), tcw->group().label(), true, this);
|
|
dialog.exec();
|
|
}
|