Forgot to add souce files...

This commit is contained in:
Jean-Paul Chaput 2010-04-28 15:45:06 +00:00
parent 6a3440f4e6
commit ef1a6f6cd2
2 changed files with 453 additions and 0 deletions

View File

@ -0,0 +1,373 @@
// -*- C++ -*-
//
// This file is part of the Coriolis Software.
// Copyright (c) UPMC/LIP6 2008-2010, All Rights Reserved
//
// ===================================================================
//
// $Id$
//
// x-----------------------------------------------------------------x
// | |
// | C O R I O L I S |
// | K i t e - D e t a i l e d R o u t e r |
// | |
// | Author : Jean-Paul Chaput |
// | E-mail : Jean-Paul.Chaput@lip6.fr |
// | =============================================================== |
// | C++ Module : "./ConfigurationWidget.cpp" |
// | *************************************************************** |
// | U p d a t e s |
// | |
// x-----------------------------------------------------------------x
#include <QLabel>
#include <QFrame>
#include <QVBoxLayout>
#include <QGridLayout>
#include <QSpinBox>
#include <QLineEdit>
#include <QIntValidator>
#include <QDoubleValidator>
#include "hurricane/viewer/Graphics.h"
#include "kite/Configuration.h"
#include "kite/ConfigurationWidget.h"
namespace Kite {
using Hurricane::Graphics;
// -------------------------------------------------------------------
// Class : "Kite::ConfigurationWidget".
ConfigurationWidget::ConfigurationWidget ( QWidget* parent )
: QWidget(parent)
, _configuration (NULL)
, _saturateRatioEdit (new QLineEdit())
, _globalThresholdEdit (new QLineEdit())
, _edgeCapacityEdit (new QLineEdit())
, _expandStepEdit (new QLineEdit())
, _eventsLimitEdit (new QLineEdit())
, _ripupCostSb (new QSpinBox())
, _borderRipupLimitSb (new QSpinBox())
, _strapRipupLimitSb (new QSpinBox())
, _localRipupLimitSb (new QSpinBox())
, _globalRipupLimitSb (new QSpinBox())
, _longGlobalRipupLimitSb(new QSpinBox())
{
setAttribute ( Qt::WA_QuitOnClose, false );
QVBoxLayout* vLayout = new QVBoxLayout ();
QGridLayout* gLayout = new QGridLayout ();
QLabel* label = new QLabel();
label->setFont ( Graphics::getNormalFont(true) );
label->setText ( "Katabatic - Routing Database" );
gLayout->addWidget ( label, 0, 0, 1, 4, Qt::AlignLeft );
label = new QLabel();
label->setText ( "Saturate Ratio (%)" );
_saturateRatioEdit->setValidator ( new QDoubleValidator(this) );
_saturateRatioEdit->setEnabled ( false );
gLayout->addWidget ( label , 1, 0, Qt::AlignRight );
gLayout->addWidget ( _saturateRatioEdit, 1, 1, Qt::AlignLeft );
label = new QLabel();
_globalThresholdEdit->setValidator ( new QIntValidator(this) );
_globalThresholdEdit->setEnabled ( false );
label->setText ( "Global Length Threshold" );
gLayout->addWidget ( label , 2, 0, Qt::AlignRight );
gLayout->addWidget ( _globalThresholdEdit, 2, 1, Qt::AlignLeft );
const int kiteRow = 3;
label = new QLabel();
label->setFont ( Graphics::getNormalFont(true) );
label->setText ( "Kite - Detailed Router" );
QFrame* separator = new QFrame ();
separator->setFrameShape ( QFrame::HLine );
separator->setFrameShadow ( QFrame::Sunken );
gLayout->addWidget ( separator, kiteRow+0, 0, 1, 4 );
gLayout->addWidget ( label , kiteRow+1, 0, 1, 4, Qt::AlignLeft );
label = new QLabel();
label->setText ( "Edge Capacity (%)" );
_edgeCapacityEdit->setValidator ( new QDoubleValidator(this) );
_edgeCapacityEdit->setEnabled ( false );
gLayout->addWidget ( label , kiteRow+2, 0, Qt::AlignRight );
gLayout->addWidget ( _edgeCapacityEdit, kiteRow+2, 1, Qt::AlignLeft );
label = new QLabel();
label->setText ( "Expand Step (%)" );
_expandStepEdit->setValidator ( new QDoubleValidator(this) );
_expandStepEdit->setEnabled ( false );
gLayout->addWidget ( label , kiteRow+3, 0, Qt::AlignRight );
gLayout->addWidget ( _expandStepEdit, kiteRow+3, 1, Qt::AlignLeft );
label = new QLabel();
_eventsLimitEdit->setValidator ( new QIntValidator(this) );
_eventsLimitEdit->setEnabled ( false );
label->setText ( "Events Limit" );
gLayout->addWidget ( label , kiteRow+4, 0, Qt::AlignRight );
gLayout->addWidget ( _eventsLimitEdit, kiteRow+4, 1, Qt::AlignLeft );
label = new QLabel();
label->setText ( "Ripup Cost" );
_ripupCostSb->setEnabled ( false );
gLayout->addWidget ( label , kiteRow+2, 2, Qt::AlignRight );
gLayout->addWidget ( _ripupCostSb, kiteRow+2, 3, Qt::AlignLeft );
label = new QLabel();
label->setFont ( Graphics::getNormalFont(true) );
label->setText ( "Ripup Limit" );
gLayout->addWidget ( label, kiteRow+3, 2, Qt::AlignLeft );
QSizePolicy spinBoxPolicy (QSizePolicy::MinimumExpanding,QSizePolicy::MinimumExpanding);
label = new QLabel();
label->setText ( "Borders" );
_borderRipupLimitSb->setEnabled ( false );
//_borderRipupLimitSb->setSizePolicy ( spinBoxPolicy );
gLayout->addWidget ( label , kiteRow+4, 2, Qt::AlignRight );
gLayout->addWidget ( _borderRipupLimitSb, kiteRow+4, 3, Qt::AlignLeft );
label = new QLabel();
label->setText ( "Straps" );
_strapRipupLimitSb->setEnabled ( false );
gLayout->addWidget ( label , kiteRow+5, 2, Qt::AlignRight );
gLayout->addWidget ( _strapRipupLimitSb, kiteRow+5, 3, Qt::AlignLeft );
label = new QLabel();
label->setText ( "Locals" );
_localRipupLimitSb->setEnabled ( false );
gLayout->addWidget ( label , kiteRow+6, 2, Qt::AlignRight );
gLayout->addWidget ( _localRipupLimitSb, kiteRow+6, 3, Qt::AlignLeft );
label = new QLabel();
label->setText ( "Globals" );
_globalRipupLimitSb->setEnabled ( false );
gLayout->addWidget ( label , kiteRow+7, 2, Qt::AlignRight );
gLayout->addWidget ( _globalRipupLimitSb, kiteRow+7, 3, Qt::AlignLeft );
label = new QLabel();
label->setText ( "Long Globals" );
_longGlobalRipupLimitSb->setEnabled ( false );
gLayout->addWidget ( label , kiteRow+8, 2, Qt::AlignRight );
gLayout->addWidget ( _longGlobalRipupLimitSb, kiteRow+8, 3, Qt::AlignLeft );
vLayout->addLayout ( gLayout );
vLayout->addStretch ();
setLayout ( vLayout );
connect ( _saturateRatioEdit , SIGNAL(returnPressed()) , this, SLOT(_updateSaturateRatio()) );
connect ( _globalThresholdEdit , SIGNAL(returnPressed()) , this, SLOT(_updateGlobalThreshold()) );
connect ( _edgeCapacityEdit , SIGNAL(returnPressed()) , this, SLOT(_updateEdgeCapacity()) );
connect ( _expandStepEdit , SIGNAL(returnPressed()) , this, SLOT(_updateExpandStep()) );
connect ( _eventsLimitEdit , SIGNAL(returnPressed()) , this, SLOT(_updateEventsLimit()) );
connect ( _ripupCostSb , SIGNAL(valueChanged(int)), this, SLOT(_updateRipupCost(int)) );
connect ( _borderRipupLimitSb , SIGNAL(valueChanged(int)), this, SLOT(_updateBorderRipupLimit(int)) );
connect ( _strapRipupLimitSb , SIGNAL(valueChanged(int)), this, SLOT(_updateStrapRipupLimit(int)) );
connect ( _localRipupLimitSb , SIGNAL(valueChanged(int)), this, SLOT(_updateLocalRipupLimit(int)) );
connect ( _globalRipupLimitSb , SIGNAL(valueChanged(int)), this, SLOT(_updateGlobalRipupLimit(int)) );
connect ( _longGlobalRipupLimitSb, SIGNAL(valueChanged(int)), this, SLOT(_updateLongGlobalRipupLimit(int)) );
}
void ConfigurationWidget::setConfiguration ( Configuration* config )
{
if ( config != NULL ) {
_saturateRatioEdit ->setText ( QString("%1").arg(config->getSaturateRatio()) );
_globalThresholdEdit->setText ( QString("%1").arg((long)DbU::getLambda(config->getGlobalThreshold())) );
_edgeCapacityEdit->setText ( QString("%1").arg(config->getEdgeCapacityPercent()) );
_expandStepEdit ->setText ( QString("%1").arg(config->getExpandStep()) );
_eventsLimitEdit ->setText ( QString("%1").arg(config->getEventsLimit()) );
_ripupCostSb ->setValue ( config->getRipupCost() );
_borderRipupLimitSb ->setValue ( config->getRipupLimit(Configuration::BorderRipupLimit) );
_strapRipupLimitSb ->setValue ( config->getRipupLimit(Configuration::StrapRipupLimit) );
_localRipupLimitSb ->setValue ( config->getRipupLimit(Configuration::LocalRipupLimit) );
_globalRipupLimitSb ->setValue ( config->getRipupLimit(Configuration::GlobalRipupLimit) );
_longGlobalRipupLimitSb->setValue ( config->getRipupLimit(Configuration::LongGlobalRipupLimit) );
_saturateRatioEdit ->setEnabled ( true );
_globalThresholdEdit ->setEnabled ( true );
_edgeCapacityEdit ->setEnabled ( true );
_expandStepEdit ->setEnabled ( true );
_eventsLimitEdit ->setEnabled ( true );
_ripupCostSb ->setEnabled ( true );
_borderRipupLimitSb ->setEnabled ( true );
_strapRipupLimitSb ->setEnabled ( true );
_localRipupLimitSb ->setEnabled ( true );
_globalRipupLimitSb ->setEnabled ( true );
_longGlobalRipupLimitSb->setEnabled ( true );
} else {
_saturateRatioEdit ->setEnabled ( false );
_globalThresholdEdit ->setEnabled ( false );
_edgeCapacityEdit ->setEnabled ( false );
_expandStepEdit ->setEnabled ( false );
_eventsLimitEdit ->setEnabled ( false );
_ripupCostSb ->setEnabled ( false );
_borderRipupLimitSb ->setEnabled ( false );
_strapRipupLimitSb ->setEnabled ( false );
_localRipupLimitSb ->setEnabled ( false );
_globalRipupLimitSb ->setEnabled ( false );
_longGlobalRipupLimitSb->setEnabled ( false );
}
_configuration = config;
}
void ConfigurationWidget::_updateSaturateRatio ()
{
if ( _configuration == NULL ) return;
bool success = false;
float ratio = _saturateRatioEdit->displayText().toFloat ( &success );
if ( not success or (ratio >= 1.0) or (ratio < 0.0) ) {
_saturateRatioEdit->setText ( QString("%1").arg(_configuration->getSaturateRatio()) );
} else {
_configuration->setSaturateRatio ( ratio );
}
}
void ConfigurationWidget::_updateGlobalThreshold ()
{
if ( _configuration == NULL ) return;
bool success = false;
DbU::Unit length = DbU::lambda ( _globalThresholdEdit->displayText().toDouble(&success) );
if ( not success or (length < 0) ) {
_globalThresholdEdit->setText ( QString("%1").arg((long)DbU::getLambda(_configuration->getGlobalThreshold())) );
} else {
_configuration->setGlobalThreshold ( length );
}
}
void ConfigurationWidget::_updateEdgeCapacity ()
{
if ( _configuration == NULL ) return;
bool success = false;
float ratio = _edgeCapacityEdit->displayText().toFloat ( &success );
if ( not success or (ratio >= 1.0) or (ratio < 0.0) ) {
_edgeCapacityEdit->setText ( QString("%1").arg(_configuration->getEdgeCapacityPercent()) );
} else {
_configuration->setEdgeCapacityPercent ( ratio );
}
}
void ConfigurationWidget::_updateExpandStep ()
{
if ( _configuration == NULL ) return;
bool success = false;
float ratio = _expandStepEdit->displayText().toFloat ( &success );
if ( not success or (ratio >= 1.0) or (ratio < 0.0) ) {
_expandStepEdit->setText ( QString("%1").arg(_configuration->getExpandStep()) );
} else {
_configuration->setExpandStep ( ratio );
}
}
void ConfigurationWidget::_updateEventsLimit ()
{
if ( _configuration == NULL ) return;
bool success = false;
long limit = _eventsLimitEdit->displayText().toLong ( &success );
if ( not success or (limit < 0) ) {
_eventsLimitEdit->setText ( QString("%1").arg(_configuration->getEventsLimit()) );
} else {
_configuration->setEventsLimit ( (unsigned long)limit );
}
}
void ConfigurationWidget::_updateRipupCost ( int cost )
{
if ( _configuration == NULL ) return;
//std::cerr << "_vptr:" << (void*)(*((int*)_configuration)) << std::endl;
if ( cost < 0 ) {
_ripupCostSb->setValue ( (int)_configuration->getRipupCost() );
} else {
_configuration->setRipupCost ( (unsigned int)cost );
}
}
void ConfigurationWidget::_updateBorderRipupLimit ( int limit )
{
if ( _configuration == NULL ) return;
if ( limit < 0 ) {
_borderRipupLimitSb->setValue ( (int)_configuration->getRipupLimit(Configuration::BorderRipupLimit) );
} else {
_configuration->setRipupLimit ( Configuration::BorderRipupLimit, (unsigned int)limit );
}
}
void ConfigurationWidget::_updateStrapRipupLimit ( int limit )
{
if ( _configuration == NULL ) return;
if ( limit < 0 ) {
_strapRipupLimitSb->setValue ( (int)_configuration->getRipupLimit(Configuration::StrapRipupLimit) );
} else {
_configuration->setRipupLimit ( Configuration::StrapRipupLimit, (unsigned int)limit );
}
}
void ConfigurationWidget::_updateLocalRipupLimit ( int limit )
{
if ( _configuration == NULL ) return;
if ( limit < 0 ) {
_localRipupLimitSb->setValue ( (int)_configuration->getRipupLimit(Configuration::LocalRipupLimit) );
} else {
_configuration->setRipupLimit ( Configuration::LocalRipupLimit, (unsigned int)limit );
}
}
void ConfigurationWidget::_updateGlobalRipupLimit ( int limit )
{
if ( _configuration == NULL ) return;
if ( limit < 0 ) {
_globalRipupLimitSb->setValue ( (int)_configuration->getRipupLimit(Configuration::GlobalRipupLimit) );
} else {
_configuration->setRipupLimit ( Configuration::GlobalRipupLimit, (unsigned int)limit );
}
}
void ConfigurationWidget::_updateLongGlobalRipupLimit ( int limit )
{
if ( _configuration == NULL ) return;
if ( limit < 0 ) {
_longGlobalRipupLimitSb->setValue ( (int)_configuration->getRipupLimit(Configuration::LongGlobalRipupLimit) );
} else {
_configuration->setRipupLimit ( Configuration::LongGlobalRipupLimit, (unsigned int)limit );
}
}
} // End of Kite namespace.

View File

@ -0,0 +1,80 @@
// -*- C++ -*-
//
// This file is part of the Coriolis Software.
// Copyright (c) UPMC/LIP6 2008-2010, All Rights Reserved
//
// ===================================================================
//
// $Id$
//
// x-----------------------------------------------------------------x
// | |
// | C O R I O L I S |
// | K i t e - D e t a i l e d R o u t e r |
// | |
// | Author : Jean-Paul Chaput |
// | E-mail : Jean-Paul.Chaput@lip6.fr |
// | =============================================================== |
// | C++ Header : "./ConfigurationWidget.h" |
// | *************************************************************** |
// | U p d a t e s |
// | |
// x-----------------------------------------------------------------x
#ifndef __CONFIGURATION_WIDGET__
#define __CONFIGURATION_WIDGET__
#include <QWidget>
class QLineEdit;
class QSpinBox;
namespace Kite {
class Configuration;
// -------------------------------------------------------------------
// Class : "Kite::ConfigurationWidget".
class ConfigurationWidget : public QWidget {
Q_OBJECT;
public:
ConfigurationWidget ( QWidget* parent=NULL );
public slots:
void setConfiguration ( Configuration* );
void _updateSaturateRatio ();
void _updateGlobalThreshold ();
void _updateEdgeCapacity ();
void _updateExpandStep ();
void _updateEventsLimit ();
void _updateRipupCost (int);
void _updateBorderRipupLimit (int);
void _updateStrapRipupLimit (int);
void _updateLocalRipupLimit (int);
void _updateGlobalRipupLimit (int);
void _updateLongGlobalRipupLimit(int);
private:
Configuration* _configuration;
QLineEdit* _saturateRatioEdit;
QLineEdit* _globalThresholdEdit;
QLineEdit* _edgeCapacityEdit;
QLineEdit* _expandStepEdit;
QLineEdit* _eventsLimitEdit;
QSpinBox* _ripupCostSb;
QSpinBox* _borderRipupLimitSb;
QSpinBox* _strapRipupLimitSb;
QSpinBox* _localRipupLimitSb;
QSpinBox* _globalRipupLimitSb;
QSpinBox* _longGlobalRipupLimitSb;
};
} // End of Kite namespace.
#endif // __CONFIGURATION_WIDGET__