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.
piklab/src/libgui/config_center.cpp

135 lines
4.0 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 "config_center.h"
#include <tqlabel.h>
#include <tqlayout.h>
#include <tqtooltip.h>
#include <tqgroupbox.h>
#include <tqtabwidget.h>
#include <tqtimer.h>
#include <kiconloader.h>
#include <tdelocale.h>
#include <tdelistview.h>
#include "global_config.h"
#include "device_gui.h"
#include "tools/list/tools_config_widget.h"
#include "progs/gui/prog_config_center.h"
#include "progs/gui/debug_config_center.h"
#include "tools/list/compile_config.h"
//----------------------------------------------------------------------------
GlobalConfigWidget::GlobalConfigWidget()
{
uint row = numRows();
_showDebug = new KeyComboBox<Log::DebugLevel>(this);
FOR_EACH(Log::DebugLevel, level) _showDebug->appendItem(level, level.label());
addWidget(_showDebug->widget(), row,row, 0,0);
row++;
}
void GlobalConfigWidget::loadConfig()
{
BaseGlobalConfigWidget::loadConfig();
_showDebug->setCurrentItem(GlobalConfig::debugLevel());
}
void GlobalConfigWidget::saveConfig()
{
BaseGlobalConfigWidget::saveConfig();
GlobalConfig::writeDebugLevel(_showDebug->currentItem());
}
TQPixmap GlobalConfigWidget::pixmap() const
{
TDEIconLoader loader;
return loader.loadIcon("configure", TDEIcon::Toolbar, TDEIcon::SizeMedium);
}
//----------------------------------------------------------------------------
StandaloneConfigWidget::StandaloneConfigWidget()
: ConfigWidget(0)
{
uint row = 0;
TQLabel *label = new TQLabel(i18n("Device:"), this);
addWidget(label, row,row, 0,0);
_device = new DeviceChooser::Button(true, this);
addWidget(_device, row,row, 1,1);
row++;
_tools = new ToolsConfigWidget(0, this);
addWidget(_tools, row,row, 0,2);
row++;
setColStretch(2, 1);
}
void StandaloneConfigWidget::loadConfig()
{
_device->setDevice(Compile::Config::device(0));
_tools->loadConfig();
}
void StandaloneConfigWidget::saveConfig()
{
Compile::Config::setDevice(0, _device->device());
_tools->saveConfig();
}
TQPixmap StandaloneConfigWidget::pixmap() const
{
TDEIconLoader loader;
return loader.loadIcon("configure", TDEIcon::Toolbar, TDEIcon::SizeMedium);
}
//----------------------------------------------------------------------------
ConfigWidget *ConfigCenter::factory(Type type)
{
switch (type) {
case General: return new GlobalConfigWidget;
case ProgSelect: return new Programmer::SelectConfigWidget;
case ProgOptions: return new Programmer::OptionsConfigWidget;
case DebugOptions: return new Debugger::OptionsConfigWidget;
case Standalone: return new StandaloneConfigWidget;
case Nb_Types: break;
}
Q_ASSERT(false);
return 0;
}
ConfigCenter::ConfigCenter(Type showType, TQWidget *parent)
: Dialog(IconList, i18n("Configure Piklab"), Ok|Cancel, Cancel, parent, "configure_piklab_dialog", true, false)
{
for (uint i=0; i<Nb_Types; i++) {
_configWidgets[i] = factory(Type(i));
_configWidgets[i]->loadConfig();
_pages[i] = addPage(_configWidgets[i]->title(), _configWidgets[i]->header(), _configWidgets[i]->pixmap());
TQVBoxLayout *vbox = new TQVBoxLayout(_pages[i]);
_configWidgets[i]->reparent(_pages[i], TQPoint(0,0));
vbox->addWidget(_configWidgets[i]);
}
showPage(showType);
}
void ConfigCenter::slotApply()
{
for (uint i=0; i<Nb_Types; i++) _configWidgets[i]->saveConfig();
}
void ConfigCenter::slotOk()
{
slotApply();
accept();
}
#include "config_center.moc"