* ./hurricane/src/hviewer :
- A whole bunch of forgotten files.
This commit is contained in:
parent
88c2d138ad
commit
9c4d322de1
|
@ -0,0 +1,434 @@
|
|||
|
||||
// -*- C++ -*-
|
||||
//
|
||||
// This file is part of the Coriolis Software.
|
||||
// Copyright (c) UPMC/LIP6 2008-2008, All Rights Reserved
|
||||
//
|
||||
// ===================================================================
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// x-----------------------------------------------------------------x
|
||||
// | |
|
||||
// | C O R I O L I S |
|
||||
// | V L S I B a c k e n d D a t a - B a s e |
|
||||
// | |
|
||||
// | Author : Jean-Paul CHAPUT |
|
||||
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
||||
// | =============================================================== |
|
||||
// | C++ Module : "./ControllerWidget.cpp" |
|
||||
// | *************************************************************** |
|
||||
// | U p d a t e s |
|
||||
// | |
|
||||
// x-----------------------------------------------------------------x
|
||||
|
||||
|
||||
#include <QFrame>
|
||||
#include <QHBoxLayout>
|
||||
#include <QVBoxLayout>
|
||||
#include <QCheckBox>
|
||||
#include <QComboBox>
|
||||
#include <hurricane/DataBase.h>
|
||||
#include <hurricane/Cell.h>
|
||||
#include <hurricane/viewer/Graphics.h>
|
||||
#include <hurricane/viewer/CellWidget.h>
|
||||
#include <hurricane/viewer/GraphicsWidget.h>
|
||||
#include <hurricane/viewer/PaletteWidget.h>
|
||||
#include <hurricane/viewer/DisplayFilterWidget.h>
|
||||
#include <hurricane/viewer/NetlistWidget.h>
|
||||
#include <hurricane/viewer/SelectionWidget.h>
|
||||
#include <hurricane/viewer/InspectorWidget.h>
|
||||
#include <hurricane/viewer/ControllerWidget.h>
|
||||
|
||||
|
||||
namespace Hurricane {
|
||||
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// Class : "Hurricane::ControllerTab".
|
||||
|
||||
|
||||
ControllerTab::ControllerTab ( QWidget* parent )
|
||||
: QWidget(parent)
|
||||
, _cellWidget(NULL)
|
||||
{ }
|
||||
|
||||
|
||||
void ControllerTab::setCellWidget ( CellWidget* cellWidget )
|
||||
{
|
||||
_cellWidget = cellWidget;
|
||||
}
|
||||
|
||||
|
||||
void ControllerTab::setCell ( Cell* )
|
||||
{ }
|
||||
|
||||
|
||||
void ControllerTab::updateTab ()
|
||||
{ }
|
||||
|
||||
|
||||
void ControllerTab::cellPreModificate ()
|
||||
{ }
|
||||
|
||||
|
||||
void ControllerTab::cellPostModificate ()
|
||||
{ }
|
||||
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// Class : "Hurricane::TabNetlist".
|
||||
|
||||
|
||||
TabNetlist::TabNetlist ( QWidget* parent )
|
||||
: ControllerTab (parent)
|
||||
, _netlistBrowser(new NetlistWidget())
|
||||
, _synchronize (new QCheckBox())
|
||||
{
|
||||
_netlistBrowser->setObjectName ( "controller.tabNetlist.netlistBrowser" );
|
||||
|
||||
QVBoxLayout* wLayout = new QVBoxLayout ();
|
||||
wLayout->setContentsMargins ( 10, 0, 10, 0 );
|
||||
wLayout->setSpacing ( 0 );
|
||||
|
||||
_synchronize->setText ( tr("Synchronize Netlist") );
|
||||
_synchronize->setChecked ( false );
|
||||
_synchronize->setFont ( Graphics::getFixedFont(QFont::Bold,false,false) );
|
||||
connect ( _synchronize, SIGNAL(toggled(bool)), this, SLOT(setSynchronize(bool)) );
|
||||
|
||||
QHBoxLayout* commands = new QHBoxLayout ();
|
||||
commands->setContentsMargins ( 0, 0, 0, 0 );
|
||||
commands->addStretch ();
|
||||
commands->addWidget ( _synchronize );
|
||||
commands->addStretch ();
|
||||
wLayout->addLayout ( commands );
|
||||
|
||||
QFrame* separator = new QFrame ();
|
||||
separator->setFrameShape ( QFrame::HLine );
|
||||
separator->setFrameShadow ( QFrame::Sunken );
|
||||
wLayout->addWidget ( separator );
|
||||
wLayout->addWidget ( _netlistBrowser );
|
||||
|
||||
setLayout ( wLayout );
|
||||
}
|
||||
|
||||
|
||||
void TabNetlist::setSynchronize ( bool state )
|
||||
{
|
||||
if ( state && getCellWidget() ) {
|
||||
_netlistBrowser->setCell<SimpleNetInformations> ( getCellWidget()->getCell() );
|
||||
} else {
|
||||
_netlistBrowser->setCell<SimpleNetInformations> ( NULL );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void TabNetlist::setCell ( Cell* cell )
|
||||
{
|
||||
setSynchronize ( _synchronize->isChecked() );
|
||||
}
|
||||
|
||||
|
||||
void TabNetlist::setCellWidget ( CellWidget* cellWidget )
|
||||
{
|
||||
if ( getCellWidget() != cellWidget ) {
|
||||
setCellWidget ( cellWidget );
|
||||
if ( getCellWidget() ) {
|
||||
connect ( getCellWidget(), SIGNAL(cellChanged(Cell*)) , this , SLOT(setCell(Cell*)) );
|
||||
connect ( _netlistBrowser, SIGNAL(netSelected(const Net*)), getCellWidget(), SLOT(select(const Net*)) );
|
||||
}
|
||||
setSynchronize ( _synchronize->isChecked() );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void TabNetlist::cellPreModificate ()
|
||||
{
|
||||
_netlistBrowser->setCell<SimpleNetInformations> ( NULL );
|
||||
}
|
||||
|
||||
|
||||
void TabNetlist::cellPostModificate ()
|
||||
{
|
||||
setSynchronize ( _synchronize->isChecked() );
|
||||
}
|
||||
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// Class : "Hurricane::TabSelection".
|
||||
|
||||
|
||||
TabSelection::TabSelection ( QWidget* parent )
|
||||
: QWidget (parent)
|
||||
, _cellWidget(NULL)
|
||||
, _selection (new SelectionWidget())
|
||||
{
|
||||
_selection->setObjectName ( "controller.tabSelection.selection" );
|
||||
|
||||
QVBoxLayout* wLayout = new QVBoxLayout ();
|
||||
wLayout->setContentsMargins ( 10, 10, 10, 0 );
|
||||
wLayout->addWidget ( _selection );
|
||||
setLayout ( wLayout );
|
||||
}
|
||||
|
||||
|
||||
void TabSelection::setCell ( Cell* cell )
|
||||
{
|
||||
_selection->setSelection ( set<Selector*>() );
|
||||
}
|
||||
|
||||
|
||||
void TabSelection::setCellWidget ( CellWidget* cellWidget )
|
||||
{
|
||||
if ( _cellWidget != cellWidget ) {
|
||||
_cellWidget = cellWidget;
|
||||
if ( _cellWidget ) {
|
||||
connect ( _cellWidget , SIGNAL(cellChanged(Cell*))
|
||||
, this , SLOT(setCell(Cell*)) );
|
||||
connect ( _cellWidget , SIGNAL(selectionChanged(const set<Selector*>&,Cell*))
|
||||
, _selection , SLOT (setSelection (const set<Selector*>&,Cell*)) );
|
||||
connect ( _selection , SIGNAL(occurrenceToggled(Occurrence,bool))
|
||||
, _cellWidget , SLOT (toggleSelect (Occurrence,bool)) );
|
||||
connect ( _cellWidget , SIGNAL(occurrenceToggled(Occurrence))
|
||||
, _selection , SLOT (toggleSelection (Occurrence)) );
|
||||
connect ( _selection , SIGNAL(cumulativeToggled (bool))
|
||||
, _cellWidget , SLOT (setCumulativeSelection(bool)) );
|
||||
connect ( _selection , SIGNAL(showSelectionToggled(bool))
|
||||
, _cellWidget , SLOT (setShowSelection (bool)) );
|
||||
connect ( _cellWidget , SIGNAL(showSelectionToggled(bool))
|
||||
, _selection , SLOT (setShowSelection (bool)) );
|
||||
connect ( _selection , SIGNAL(selectionCleared())
|
||||
, _cellWidget , SLOT (unselectAll ()) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void TabSelection::updateTab ()
|
||||
{
|
||||
// if ( _cellWidget && _cellWidget->getCell() )
|
||||
// _selection->setSelection ( _cellWidget->getSelectorSet(), _cellWidget->getCell() );
|
||||
// else
|
||||
// _selection->setSelection ( set<Selector*>() );
|
||||
}
|
||||
|
||||
|
||||
void TabSelection::cellPreModificate ()
|
||||
{
|
||||
_selection->setSelection ( set<Selector*>() );
|
||||
}
|
||||
|
||||
|
||||
void TabSelection::cellPostModificate ()
|
||||
{
|
||||
//updateTab ();
|
||||
if ( _cellWidget && _cellWidget->getCell() )
|
||||
_selection->setSelection ( _cellWidget->getSelectorSet(), _cellWidget->getCell() );
|
||||
else
|
||||
_selection->setSelection ( set<Selector*>() );
|
||||
}
|
||||
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// Class : "Hurricane::TabInspector".
|
||||
|
||||
|
||||
TabInspector::TabInspector ( QWidget* parent )
|
||||
: QWidget (parent)
|
||||
, _cellWidget (NULL)
|
||||
, _inspectorWidget (new InspectorWidget())
|
||||
, _bookmarks (new QComboBox())
|
||||
, _selectionRecord (NULL)
|
||||
, _updateFromSelection(false)
|
||||
{
|
||||
_inspectorWidget->setObjectName ( "controller.tabInspector.inspectorWidget" );
|
||||
|
||||
connect ( _bookmarks, SIGNAL(currentIndexChanged(int)), this, SLOT(bookmarkChanged(int)) );
|
||||
|
||||
QVBoxLayout* wLayout = new QVBoxLayout ();
|
||||
wLayout->setContentsMargins ( 10, 10, 10, 0 );
|
||||
//wLayout->setSpacing ( 0 );
|
||||
|
||||
_bookmarks->addItem ( tr("<Disabled>" ) );
|
||||
_bookmarks->addItem ( tr("<DataBase>" ) );
|
||||
_bookmarks->addItem ( tr("<Cell None>") );
|
||||
_bookmarks->addItem ( tr("<Selection>") );
|
||||
|
||||
QHBoxLayout* commands = new QHBoxLayout ();
|
||||
commands->setContentsMargins ( 0, 0, 0, 0 );
|
||||
commands->addStretch ();
|
||||
commands->addWidget ( _bookmarks );
|
||||
commands->addStretch ();
|
||||
wLayout->addLayout ( commands );
|
||||
|
||||
QFrame* separator = new QFrame ();
|
||||
separator->setFrameShape ( QFrame::HLine );
|
||||
separator->setFrameShadow ( QFrame::Sunken );
|
||||
wLayout->addWidget ( separator );
|
||||
wLayout->addWidget ( _inspectorWidget );
|
||||
|
||||
setLayout ( wLayout );
|
||||
}
|
||||
|
||||
|
||||
void TabInspector::setCell ( Cell* cell )
|
||||
{
|
||||
_bookmarks->setItemText ( 2, getString(cell).c_str() );
|
||||
if ( _bookmarks->currentIndex() == 2 )
|
||||
emit bookmarkChanged ( 2 );
|
||||
}
|
||||
|
||||
|
||||
void TabInspector::setCellWidget ( CellWidget* cellWidget )
|
||||
{
|
||||
if ( _cellWidget != cellWidget ) {
|
||||
_cellWidget = cellWidget;
|
||||
if ( _cellWidget ) {
|
||||
connect ( _cellWidget, SIGNAL(cellChanged(Cell*)), this, SLOT(setCell(Cell*)) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void TabInspector::bookmarkChanged ( int index )
|
||||
{
|
||||
switch ( index ) {
|
||||
case 0: _inspectorWidget->setRootRecord ( NULL ); break;
|
||||
case 1: _inspectorWidget->setRootRecord ( getRecord(DataBase::getDB()) ); break;
|
||||
case 2:
|
||||
if ( _cellWidget && _cellWidget->getCell() )
|
||||
_inspectorWidget->setRootRecord ( getRecord(_cellWidget->getCell()) );
|
||||
break;
|
||||
case 3:
|
||||
if ( _cellWidget && _cellWidget->getCell() )
|
||||
_inspectorWidget->setRootRecord ( _selectionRecord );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void TabInspector::updateTab ()
|
||||
{
|
||||
if ( _updateFromSelection && (_bookmarks->currentIndex() == 3) )
|
||||
_inspectorWidget->setRootRecord ( _selectionRecord );
|
||||
_updateFromSelection = false;
|
||||
}
|
||||
|
||||
|
||||
void TabInspector::setSelectionRecord ( Record* record )
|
||||
{
|
||||
_updateFromSelection = true;
|
||||
_selectionRecord = record;
|
||||
}
|
||||
|
||||
|
||||
void TabInspector::cellPreModificate ()
|
||||
{
|
||||
_selectionRecord = NULL;
|
||||
if ( _bookmarks->currentIndex() > 1 )
|
||||
_inspectorWidget->setRootRecord ( NULL );
|
||||
}
|
||||
|
||||
|
||||
void TabInspector::cellPostModificate ()
|
||||
{
|
||||
if ( ( _bookmarks->currentIndex() == 2 ) && _cellWidget && _cellWidget->getCell() )
|
||||
_inspectorWidget->setRootRecord ( getRecord(_cellWidget->getCell()) );
|
||||
}
|
||||
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// Class : "Hurricane::ControllerWidget".
|
||||
|
||||
|
||||
ControllerWidget::ControllerWidget ( QWidget* parent )
|
||||
: QTabWidget (parent)
|
||||
, _cellWidget (NULL)
|
||||
, _graphics (new GraphicsWidget())
|
||||
, _palette (new PaletteWidget())
|
||||
, _displayFilter(new DisplayFilterWidget())
|
||||
, _tabNetlist (new TabNetlist())
|
||||
, _tabSelection (new TabSelection())
|
||||
, _tabInspector (new TabInspector())
|
||||
{
|
||||
setObjectName ( "controller" );
|
||||
setAttribute ( Qt::WA_QuitOnClose, false );
|
||||
setWindowTitle ( tr("Controller") );
|
||||
|
||||
//connect ( _netlistBrowser, SIGNAL(destroyed()), this, SLOT(netlistBrowserDestroyed()) );
|
||||
|
||||
_graphics ->setObjectName ( "controller.graphics" );
|
||||
_palette ->setObjectName ( "controller.palette" );
|
||||
_displayFilter->setObjectName ( "controller.displayFilter" );
|
||||
_tabNetlist ->setObjectName ( "controller.tabNetlist" );
|
||||
_tabSelection ->setObjectName ( "controller.tabSelection" );
|
||||
_tabInspector ->setObjectName ( "controller.tabInspector" );
|
||||
|
||||
addTab ( _graphics , "Look" );
|
||||
addTab ( _displayFilter , "Filter" );
|
||||
addTab ( _palette , "Layers&&Gos" );
|
||||
addTab ( _tabNetlist , "Netlist" );
|
||||
addTab ( _tabSelection , "Selection" );
|
||||
addTab ( _tabInspector , "Inspector" );
|
||||
|
||||
connect ( this, SIGNAL(currentChanged(int)), this, SLOT(updateTab(int)) );
|
||||
//connect ( _tabNetlist->getNetlistBrowser(), SIGNAL(netSelected(const Net*))
|
||||
// , _tabSelection , SLOT(setUpdateFromNetlist(const Net*)) );
|
||||
connect ( _tabSelection->getSelection() , SIGNAL(inspect(Record*))
|
||||
, _tabInspector , SLOT(setSelectionRecord(Record*)) );
|
||||
|
||||
resize ( 540, 540 );
|
||||
}
|
||||
|
||||
|
||||
void ControllerWidget::setCellWidget ( CellWidget* widget )
|
||||
{
|
||||
if ( _cellWidget )
|
||||
_cellWidget->detachFromPalette ();
|
||||
|
||||
_cellWidget = widget;
|
||||
if ( _cellWidget ) {
|
||||
_displayFilter->setCellWidget ( _cellWidget );
|
||||
_tabNetlist ->setCellWidget ( _cellWidget );
|
||||
_tabSelection ->setCellWidget ( _cellWidget );
|
||||
_tabInspector ->setCellWidget ( _cellWidget );
|
||||
_cellWidget ->bindToPalette ( _palette );
|
||||
|
||||
connect ( _graphics , SIGNAL(styleChanged()) , _cellWidget, SLOT(redraw()) );
|
||||
connect ( _cellWidget, SIGNAL(cellChanged(Cell*)) , this , SLOT(cellChanged(Cell*)) );
|
||||
connect ( _cellWidget, SIGNAL(cellPreModificated()) , this , SLOT(cellPreModificate()) );
|
||||
connect ( _cellWidget, SIGNAL(cellPostModificated()), this , SLOT(cellPostModificate()) );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void ControllerWidget::cellChanged ( Cell* cell )
|
||||
{ }
|
||||
|
||||
|
||||
void ControllerWidget::updateTab ( int index )
|
||||
{
|
||||
switch ( index ) {
|
||||
case 4: _tabSelection->updateTab (); break;
|
||||
case 5: _tabInspector->updateTab (); break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void ControllerWidget::cellPreModificate ()
|
||||
{
|
||||
_tabInspector ->cellPreModificate ();
|
||||
_tabSelection ->cellPreModificate ();
|
||||
_tabNetlist ->cellPreModificate ();
|
||||
}
|
||||
|
||||
|
||||
void ControllerWidget::cellPostModificate ()
|
||||
{
|
||||
_tabNetlist ->cellPostModificate ();
|
||||
_tabSelection ->cellPostModificate ();
|
||||
_tabInspector ->cellPostModificate ();
|
||||
}
|
||||
|
||||
|
||||
} // End of Hurricane namespace.
|
|
@ -0,0 +1,85 @@
|
|||
|
||||
// -*- C++ -*-
|
||||
//
|
||||
// This file is part of the Coriolis Software.
|
||||
// Copyright (c) UPMC/LIP6 2008-2008, All Rights Reserved
|
||||
//
|
||||
// ===================================================================
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// x-----------------------------------------------------------------x
|
||||
// | |
|
||||
// | H U R R I C A N E |
|
||||
// | V L S I B a c k e n d D a t a - B a s e |
|
||||
// | |
|
||||
// | Author : Jean-Paul CHAPUT |
|
||||
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
||||
// | =============================================================== |
|
||||
// | C++ Module : "./PaletteExtensionGoItem.cpp" |
|
||||
// | *************************************************************** |
|
||||
// | U p d a t e s |
|
||||
// | |
|
||||
// x-----------------------------------------------------------------x
|
||||
|
||||
|
||||
#include <QCheckBox>
|
||||
#include <QHBoxLayout>
|
||||
|
||||
#include "hurricane/viewer/Graphics.h"
|
||||
#include "hurricane/viewer/PaletteExtensionGoItem.h"
|
||||
|
||||
|
||||
namespace Hurricane {
|
||||
|
||||
|
||||
PaletteExtensionGoItem::PaletteExtensionGoItem ( const Name& name )
|
||||
: PaletteItem()
|
||||
, _name(name)
|
||||
{ }
|
||||
|
||||
|
||||
PaletteExtensionGoItem* PaletteExtensionGoItem::create ( const Name& name )
|
||||
{
|
||||
PaletteExtensionGoItem* item = new PaletteExtensionGoItem ( name );
|
||||
item->_postCreate ();
|
||||
return item;
|
||||
}
|
||||
|
||||
|
||||
void PaletteExtensionGoItem::_postCreate ()
|
||||
{
|
||||
QHBoxLayout* layout = new QHBoxLayout ();
|
||||
layout->setContentsMargins ( 0, 0, 0, 0 );
|
||||
|
||||
_checkBox = new QCheckBox ( this );
|
||||
_checkBox->setChecked ( false );
|
||||
_checkBox->setText ( getString(getName()).c_str() );
|
||||
_checkBox->setFont ( Graphics::getFixedFont() );
|
||||
layout->addWidget ( _checkBox );
|
||||
|
||||
setLayout ( layout );
|
||||
|
||||
connect ( _checkBox, SIGNAL(clicked()), this, SIGNAL(toggled()) );
|
||||
}
|
||||
|
||||
|
||||
const Name& PaletteExtensionGoItem::getName () const
|
||||
{
|
||||
return _name;
|
||||
}
|
||||
|
||||
|
||||
bool PaletteExtensionGoItem::isChecked () const
|
||||
{
|
||||
return _checkBox->isChecked ();
|
||||
}
|
||||
|
||||
|
||||
void PaletteExtensionGoItem::setChecked ( bool state )
|
||||
{
|
||||
_checkBox->setChecked ( state );
|
||||
}
|
||||
|
||||
|
||||
} // End of Hurricane namespace.
|
|
@ -0,0 +1,81 @@
|
|||
|
||||
// -*- C++ -*-
|
||||
//
|
||||
// This file is part of the Coriolis Software.
|
||||
// Copyright (c) UPMC/LIP6 2008-2008, All Rights Reserved
|
||||
//
|
||||
// ===================================================================
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// x-----------------------------------------------------------------x
|
||||
// | |
|
||||
// | H U R R I C A N E |
|
||||
// | V L S I B a c k e n d D a t a - B a s e |
|
||||
// | |
|
||||
// | Author : Jean-Paul CHAPUT |
|
||||
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
||||
// | =============================================================== |
|
||||
// | C++ Module : "./PaletteItem.cpp" |
|
||||
// | *************************************************************** |
|
||||
// | U p d a t e s |
|
||||
// | |
|
||||
// x-----------------------------------------------------------------x
|
||||
|
||||
|
||||
# include <QPainter>
|
||||
|
||||
# include "hurricane/viewer/Graphics.h"
|
||||
# include "hurricane/viewer/PaletteItem.h"
|
||||
|
||||
|
||||
namespace Hurricane {
|
||||
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// Class : "Hurricane::DrawingStyleSample".
|
||||
|
||||
|
||||
DrawingStyleSample::DrawingStyleSample ( PaletteItem* entry )
|
||||
: QWidget()
|
||||
, _sample(QSize(20,20))
|
||||
, _entry(entry)
|
||||
{
|
||||
setAttribute ( Qt::WA_StaticContents );
|
||||
setSizePolicy ( QSizePolicy::Fixed, QSizePolicy::Fixed );
|
||||
setFixedSize ( 20, 20 );
|
||||
|
||||
redraw ();
|
||||
}
|
||||
|
||||
|
||||
void DrawingStyleSample::redraw ()
|
||||
{
|
||||
QPainter painter ( &_sample );
|
||||
|
||||
painter.setPen ( Qt::NoPen );
|
||||
painter.setBackground ( Graphics::getBrush("background") );
|
||||
painter.eraseRect ( 0, 0, 20, 20 );
|
||||
painter.setPen ( Graphics::getPen (_entry->getName()) );
|
||||
painter.setBrush ( Graphics::getBrush(_entry->getName()) );
|
||||
painter.drawRect ( 2, 2, 16, 16 );
|
||||
}
|
||||
|
||||
|
||||
void DrawingStyleSample::paintEvent ( QPaintEvent* )
|
||||
{
|
||||
QPainter painter ( this );
|
||||
painter.drawPixmap ( 0, 0, _sample );
|
||||
}
|
||||
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// Class : "Hurricane::PaletteItem".
|
||||
|
||||
|
||||
PaletteItem::PaletteItem ()
|
||||
: QWidget()
|
||||
{ }
|
||||
|
||||
|
||||
} // End of Hurricane namespace.
|
|
@ -0,0 +1,84 @@
|
|||
|
||||
// -*- C++ -*-
|
||||
//
|
||||
// This file is part of the Coriolis Software.
|
||||
// Copyright (c) UPMC/LIP6 2008-2008, All Rights Reserved
|
||||
//
|
||||
// ===================================================================
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// x-----------------------------------------------------------------x
|
||||
// | |
|
||||
// | H U R R I C A N E |
|
||||
// | V L S I B a c k e n d D a t a - B a s e |
|
||||
// | |
|
||||
// | Author : Jean-Paul CHAPUT |
|
||||
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
||||
// | =============================================================== |
|
||||
// | C++ Module : "./PaletteLayerItem.cpp" |
|
||||
// | *************************************************************** |
|
||||
// | U p d a t e s |
|
||||
// | |
|
||||
// x-----------------------------------------------------------------x
|
||||
|
||||
|
||||
# include <QCheckBox>
|
||||
# include <QHBoxLayout>
|
||||
|
||||
# include "hurricane/BasicLayer.h"
|
||||
|
||||
# include "hurricane/viewer/Graphics.h"
|
||||
# include "hurricane/viewer/PaletteLayerItem.h"
|
||||
|
||||
|
||||
namespace Hurricane {
|
||||
|
||||
|
||||
PaletteLayerItem::PaletteLayerItem ( BasicLayer* basicLayer, bool checked )
|
||||
: PaletteItem()
|
||||
, _basicLayer(basicLayer)
|
||||
{
|
||||
QHBoxLayout* layout = new QHBoxLayout ();
|
||||
layout->setContentsMargins ( 0, 0, 0, 0 );
|
||||
|
||||
layout->addWidget ( new DrawingStyleSample(this) );
|
||||
|
||||
_checkBox = new QCheckBox ( this );
|
||||
_checkBox->setChecked ( checked );
|
||||
_checkBox->setText ( getString(getName()).c_str() );
|
||||
_checkBox->setFont ( Graphics::getFixedFont() );
|
||||
layout->addWidget ( _checkBox );
|
||||
|
||||
setLayout ( layout );
|
||||
|
||||
connect ( _checkBox, SIGNAL(clicked()), this, SIGNAL(toggled()) );
|
||||
}
|
||||
|
||||
|
||||
PaletteLayerItem* PaletteLayerItem::create ( BasicLayer* basicLayer, bool checked )
|
||||
{
|
||||
PaletteLayerItem* item = new PaletteLayerItem ( basicLayer, checked );
|
||||
return item;
|
||||
}
|
||||
|
||||
|
||||
const Name& PaletteLayerItem::getName () const
|
||||
{
|
||||
return _basicLayer->getName();
|
||||
}
|
||||
|
||||
|
||||
bool PaletteLayerItem::isChecked () const
|
||||
{
|
||||
return _checkBox->isChecked ();
|
||||
}
|
||||
|
||||
|
||||
void PaletteLayerItem::setChecked ( bool state )
|
||||
{
|
||||
_checkBox->setChecked ( state );
|
||||
}
|
||||
|
||||
|
||||
} // End of Hurricane namespace.
|
|
@ -0,0 +1,80 @@
|
|||
|
||||
// -*- C++ -*-
|
||||
//
|
||||
// This file is part of the Coriolis Software.
|
||||
// Copyright (c) UPMC/LIP6 2008-2008, All Rights Reserved
|
||||
//
|
||||
// ===================================================================
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// x-----------------------------------------------------------------x
|
||||
// | |
|
||||
// | H U R R I C A N E |
|
||||
// | V L S I B a c k e n d D a t a - B a s e |
|
||||
// | |
|
||||
// | Author : Jean-Paul CHAPUT |
|
||||
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
||||
// | =============================================================== |
|
||||
// | C++ Module : "./PaletteNamedItem.cpp" |
|
||||
// | *************************************************************** |
|
||||
// | U p d a t e s |
|
||||
// | |
|
||||
// x-----------------------------------------------------------------x
|
||||
|
||||
|
||||
#include <QCheckBox>
|
||||
#include <QHBoxLayout>
|
||||
|
||||
#include "hurricane/viewer/Graphics.h"
|
||||
#include "hurricane/viewer/PaletteNamedItem.h"
|
||||
|
||||
|
||||
namespace Hurricane {
|
||||
|
||||
|
||||
PaletteNamedItem::PaletteNamedItem ( const Name& name, bool checked )
|
||||
: PaletteItem()
|
||||
, _name(name)
|
||||
{
|
||||
QHBoxLayout* layout = new QHBoxLayout ();
|
||||
layout->setContentsMargins ( 0, 0, 0, 0 );
|
||||
|
||||
_checkBox = new QCheckBox ( this );
|
||||
_checkBox->setChecked ( checked );
|
||||
_checkBox->setText ( getString(getName()).c_str() );
|
||||
_checkBox->setFont ( Graphics::getFixedFont() );
|
||||
layout->addWidget ( _checkBox );
|
||||
|
||||
setLayout ( layout );
|
||||
|
||||
connect ( _checkBox, SIGNAL(clicked()), this, SIGNAL(toggled()) );
|
||||
}
|
||||
|
||||
|
||||
PaletteNamedItem* PaletteNamedItem::create ( const Name& name, bool checked )
|
||||
{
|
||||
PaletteNamedItem* item = new PaletteNamedItem ( name, checked );
|
||||
return item;
|
||||
}
|
||||
|
||||
|
||||
const Name& PaletteNamedItem::getName () const
|
||||
{
|
||||
return _name;
|
||||
}
|
||||
|
||||
|
||||
bool PaletteNamedItem::isChecked () const
|
||||
{
|
||||
return _checkBox->isChecked ();
|
||||
}
|
||||
|
||||
|
||||
void PaletteNamedItem::setChecked ( bool state )
|
||||
{
|
||||
_checkBox->setChecked ( state );
|
||||
}
|
||||
|
||||
|
||||
} // End of Hurricane namespace.
|
|
@ -0,0 +1,360 @@
|
|||
|
||||
// -*- C++ -*-
|
||||
//
|
||||
// This file is part of the Coriolis Software.
|
||||
// Copyright (c) UPMC/LIP6 2008-2008, All Rights Reserved
|
||||
//
|
||||
// ===================================================================
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// x-----------------------------------------------------------------x
|
||||
// | |
|
||||
// | H U R R I C A N E |
|
||||
// | V L S I B a c k e n d D a t a - B a s e |
|
||||
// | |
|
||||
// | Author : Jean-Paul CHAPUT |
|
||||
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
||||
// | =============================================================== |
|
||||
// | C++ Module : "./PaletteWidget.cpp" |
|
||||
// | *************************************************************** |
|
||||
// | U p d a t e s |
|
||||
// | |
|
||||
// x-----------------------------------------------------------------x
|
||||
|
||||
|
||||
#include <QLabel>
|
||||
#include <QCheckBox>
|
||||
#include <QPushButton>
|
||||
#include <QHBoxLayout>
|
||||
#include <QVBoxLayout>
|
||||
#include <QGridLayout>
|
||||
|
||||
#include "hurricane/DataBase.h"
|
||||
#include "hurricane/Technology.h"
|
||||
#include "hurricane/BasicLayer.h"
|
||||
#include "hurricane/BasicLayers.h"
|
||||
#include "hurricane/ExtensionSlice.h"
|
||||
#include "hurricane/Cell.h"
|
||||
|
||||
#include "hurricane/viewer/Graphics.h"
|
||||
#include "hurricane/viewer/PaletteItem.h"
|
||||
#include "hurricane/viewer/PaletteLayerItem.h"
|
||||
#include "hurricane/viewer/PaletteNamedItem.h"
|
||||
#include "hurricane/viewer/PaletteWidget.h"
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
|
||||
using namespace std;
|
||||
using namespace Hurricane;
|
||||
|
||||
|
||||
class GridBuffer {
|
||||
public:
|
||||
GridBuffer ( QGridLayout*, int rowMax, int startRow=0, int startColumn=0 );
|
||||
inline int getRow () const;
|
||||
inline int getColumn () const;
|
||||
inline int getCurrentRow () const;
|
||||
void addSection ( QWidget*, Qt::Alignment align=0 );
|
||||
void addWidget ( QWidget*, Qt::Alignment align=0 );
|
||||
void newColumn ();
|
||||
void flushWidgets ();
|
||||
inline bool columnOverload () const;
|
||||
protected:
|
||||
QGridLayout* _grid;
|
||||
int _rowMax;
|
||||
int _row;
|
||||
int _column;
|
||||
vector<QWidget*> _widgets;
|
||||
vector<Qt::Alignment> _aligns;
|
||||
};
|
||||
|
||||
|
||||
GridBuffer::GridBuffer ( QGridLayout* grid, int maxRow, int startRow, int startColumn )
|
||||
: _grid(grid)
|
||||
, _rowMax(maxRow)
|
||||
, _row(startRow)
|
||||
, _column(startColumn)
|
||||
, _widgets()
|
||||
, _aligns()
|
||||
{ }
|
||||
|
||||
|
||||
inline int GridBuffer::getRow () const { return _row; }
|
||||
inline int GridBuffer::getColumn () const { return _column; }
|
||||
inline int GridBuffer::getCurrentRow () const { return _widgets.size() + _row; }
|
||||
inline bool GridBuffer::columnOverload () const { return getCurrentRow() > _rowMax; }
|
||||
|
||||
|
||||
void GridBuffer::flushWidgets ()
|
||||
{
|
||||
if ( columnOverload() ) {
|
||||
_column++;
|
||||
_row = 0;
|
||||
}
|
||||
|
||||
for ( size_t i=0 ; i < _widgets.size() ; ++i )
|
||||
_grid->addWidget ( _widgets[i], _row++, _column, _aligns[i] );
|
||||
_widgets.clear ();
|
||||
_aligns.clear ();
|
||||
}
|
||||
|
||||
|
||||
void GridBuffer::newColumn ()
|
||||
{
|
||||
if ( columnOverload() ) return;
|
||||
|
||||
flushWidgets ();
|
||||
_column++;
|
||||
_row = 0;
|
||||
}
|
||||
|
||||
|
||||
void GridBuffer::addWidget ( QWidget* widget, Qt::Alignment align )
|
||||
{
|
||||
_widgets.push_back ( widget );
|
||||
_aligns .push_back ( align );
|
||||
}
|
||||
|
||||
|
||||
void GridBuffer::addSection ( QWidget* widget, Qt::Alignment align )
|
||||
{
|
||||
flushWidgets ();
|
||||
_widgets.push_back ( widget );
|
||||
_aligns .push_back ( align );
|
||||
}
|
||||
|
||||
|
||||
} // End of anonymous namespace.
|
||||
|
||||
|
||||
namespace Hurricane {
|
||||
|
||||
|
||||
QWidget* PaletteWidget::_createGroupItem ( const Name& name )
|
||||
{
|
||||
QLabel* groupLabel = new QLabel ();
|
||||
groupLabel->setText ( getString(name).c_str() );
|
||||
groupLabel->setFont ( Graphics::getFixedFont(QFont::Bold,false,false) );
|
||||
return groupLabel;
|
||||
}
|
||||
|
||||
|
||||
PaletteNamedItem* PaletteWidget::_createNamedItem ( const Name& name, bool checked )
|
||||
{
|
||||
PaletteNamedItem* item = PaletteNamedItem::create ( name, checked );
|
||||
connect ( item, SIGNAL(toggled()), this, SIGNAL(paletteChanged()) );
|
||||
return item;
|
||||
}
|
||||
|
||||
|
||||
PaletteLayerItem* PaletteWidget::_createLayerItem ( BasicLayer* layer, bool checked )
|
||||
{
|
||||
PaletteLayerItem* item = PaletteLayerItem::create ( layer, checked );
|
||||
connect ( item, SIGNAL(toggled()), this, SIGNAL(paletteChanged()) );
|
||||
return item;
|
||||
}
|
||||
|
||||
|
||||
PaletteWidget::PaletteWidget ( QWidget* parent ) : QScrollArea(parent)
|
||||
, _layerItems()
|
||||
, _extensionGoItems()
|
||||
, _showAll(new QPushButton(this))
|
||||
, _hideAll(new QPushButton(this))
|
||||
, _grid(new QGridLayout())
|
||||
, _extensionRow(0)
|
||||
, _extensionColumn(0)
|
||||
, _extensionGroup(NULL)
|
||||
{
|
||||
setWidgetResizable ( true );
|
||||
QVBoxLayout* vLayout = new QVBoxLayout ();
|
||||
QHBoxLayout* hLayout = new QHBoxLayout ();
|
||||
|
||||
_showAll->setIcon ( QIcon(":/images/palette_show_all.png") );
|
||||
_showAll->setFlat ( true );
|
||||
|
||||
_hideAll->setIcon ( QIcon(":/images/palette_hide_all.png") );
|
||||
_hideAll->setFlat ( true );
|
||||
|
||||
connect ( _showAll, SIGNAL(clicked()), this, SLOT(showAll()) );
|
||||
connect ( _hideAll, SIGNAL(clicked()), this, SLOT(hideAll()) );
|
||||
|
||||
hLayout->addStretch ();
|
||||
hLayout->addWidget ( _showAll );
|
||||
hLayout->addStretch ();
|
||||
hLayout->addWidget ( _hideAll );
|
||||
hLayout->addStretch ();
|
||||
|
||||
QFrame* separator = new QFrame ();
|
||||
separator->setFrameShape ( QFrame::HLine );
|
||||
separator->setFrameShadow ( QFrame::Sunken );
|
||||
|
||||
vLayout->setSpacing ( 0 );
|
||||
vLayout->addLayout ( hLayout );
|
||||
vLayout->addWidget ( separator );
|
||||
vLayout->addSpacing ( 5 );
|
||||
vLayout->addLayout ( _grid );
|
||||
|
||||
GridBuffer gridBuffer ( _grid, 22 );
|
||||
_grid->setHorizontalSpacing ( 10 );
|
||||
_grid->setVerticalSpacing ( 0 );
|
||||
//_grid->setSizeConstraint ( QLayout::SetFixedSize );
|
||||
|
||||
size_t gi = 0;
|
||||
const vector<DrawingGroup*>& groups = Graphics::getStyle()->getDrawingGroups();
|
||||
const vector<DrawingStyle*>& styles = groups[gi]->getDrawingStyles();
|
||||
|
||||
gridBuffer.addSection ( _createGroupItem(groups[gi]->getName()), Qt::AlignHCenter );
|
||||
for ( size_t si=0 ; si<styles.size() ; si++ ) {
|
||||
if ( styles[si]->getName() == DisplayStyle::Foreground ) continue;
|
||||
if ( styles[si]->getName() == DisplayStyle::Background ) continue;
|
||||
if ( styles[si]->getName() == DisplayStyle::Foreground ) continue;
|
||||
if ( styles[si]->getName() == DisplayStyle::SelectionDraw ) continue;
|
||||
if ( styles[si]->getName() == DisplayStyle::SelectionFill ) continue;
|
||||
if ( styles[si]->getName() == DisplayStyle::Foreground ) continue;
|
||||
|
||||
PaletteNamedItem* item = _createNamedItem ( styles[si]->getName() );
|
||||
gridBuffer.addWidget ( item );
|
||||
_layerItems [ item->getName() ] = item;
|
||||
}
|
||||
gridBuffer.newColumn ();
|
||||
|
||||
DataBase* database = DataBase::getDB();
|
||||
if ( database ) {
|
||||
Technology* technology = database->getTechnology();
|
||||
if ( technology ) {
|
||||
for ( gi=1 ; gi<groups.size() ; gi++ ) {
|
||||
gridBuffer.addSection ( _createGroupItem(groups[gi]->getName()), Qt::AlignHCenter );
|
||||
|
||||
const vector<DrawingStyle*>& styles = groups[gi]->getDrawingStyles();
|
||||
for ( size_t si=0 ; si<styles.size() ; si++ ) {
|
||||
BasicLayer* basicLayer = technology->getBasicLayer ( styles[si]->getName() );
|
||||
|
||||
if ( basicLayer ) {
|
||||
PaletteLayerItem* item = _createLayerItem ( basicLayer );
|
||||
gridBuffer.addWidget ( item );
|
||||
_layerItems [ item->getName() ] = item;
|
||||
}
|
||||
}
|
||||
}
|
||||
size_t si = 0;
|
||||
forEach ( BasicLayer*, basicLayer, technology->getBasicLayers() ) {
|
||||
if ( !find((*basicLayer)->getName()) ) {
|
||||
if ( !si )
|
||||
gridBuffer.addSection ( _createGroupItem("Unmatcheds"), Qt::AlignHCenter );
|
||||
|
||||
PaletteLayerItem* item = _createLayerItem ( *basicLayer );
|
||||
gridBuffer.addWidget ( item );
|
||||
_layerItems [ item->getName() ] = item;
|
||||
|
||||
cerr << "[WARNING] BasicLayer \"" << (*basicLayer)->getName()
|
||||
<< "\" has no associated DisplayStyle." << endl;
|
||||
|
||||
si++;
|
||||
}
|
||||
}
|
||||
if ( si ) gi++;
|
||||
}
|
||||
}
|
||||
|
||||
gridBuffer.newColumn ();
|
||||
_extensionRow = gridBuffer.getRow();
|
||||
_extensionColumn = gridBuffer.getColumn();
|
||||
_extensionGroup = _createGroupItem ( "Extensions" );
|
||||
gridBuffer.addSection ( _extensionGroup, Qt::AlignHCenter );
|
||||
gridBuffer.flushWidgets ();
|
||||
|
||||
vLayout->addStretch ();
|
||||
|
||||
QWidget* adaptator = new QWidget ();
|
||||
adaptator->setLayout ( vLayout );
|
||||
setWidget ( adaptator );
|
||||
setHorizontalScrollBarPolicy ( Qt::ScrollBarAsNeeded );
|
||||
setVerticalScrollBarPolicy ( Qt::ScrollBarAsNeeded );
|
||||
setFrameStyle ( QFrame::Plain );
|
||||
}
|
||||
|
||||
|
||||
void PaletteWidget::updateExtensions ( Cell* cell )
|
||||
{
|
||||
_grid->removeWidget ( _extensionGroup );
|
||||
_extensionGroup->deleteLater ();
|
||||
_extensionGroup = NULL;
|
||||
|
||||
PaletteItems::iterator iextension = _extensionGoItems.begin();
|
||||
for ( ; iextension != _extensionGoItems.end() ; ++iextension ) {
|
||||
_grid->removeWidget ( iextension->second );
|
||||
iextension->second->deleteLater ();
|
||||
}
|
||||
_extensionGoItems.clear ();
|
||||
|
||||
if ( !cell ) return;
|
||||
|
||||
GridBuffer gridBuffer ( _grid, 22, _extensionRow, _extensionColumn );
|
||||
_extensionGroup = _createGroupItem ( "Extensions" );
|
||||
gridBuffer.addSection ( _extensionGroup, Qt::AlignHCenter );
|
||||
|
||||
forEach ( ExtensionSlice*, extension, cell->getExtensionSlices() ) {
|
||||
PaletteNamedItem* item = _createNamedItem ( (*extension)->getName(), false );
|
||||
gridBuffer.addWidget ( item );
|
||||
_extensionGoItems [ item->getName() ] = item;
|
||||
}
|
||||
gridBuffer.flushWidgets ();
|
||||
}
|
||||
|
||||
|
||||
bool PaletteWidget::isDrawable ( const Name& name ) const
|
||||
{
|
||||
PaletteItem* item = find ( name );
|
||||
if ( item )
|
||||
return item->isChecked ();
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void PaletteWidget::showAll ()
|
||||
{
|
||||
PaletteItems::iterator iitem = _layerItems.begin();
|
||||
for ( ; iitem != _layerItems.end() ; iitem++ )
|
||||
iitem->second->setChecked ( true );
|
||||
|
||||
iitem = _extensionGoItems.begin();
|
||||
for ( ; iitem != _extensionGoItems.end() ; iitem++ )
|
||||
iitem->second->setChecked ( true );
|
||||
|
||||
emit paletteChanged();
|
||||
}
|
||||
|
||||
|
||||
void PaletteWidget::hideAll ()
|
||||
{
|
||||
PaletteItems::iterator iitem = _layerItems.begin();
|
||||
for ( ; iitem != _layerItems.end() ; iitem++ )
|
||||
iitem->second->setChecked ( false );
|
||||
|
||||
iitem = _extensionGoItems.begin();
|
||||
for ( ; iitem != _extensionGoItems.end() ; iitem++ )
|
||||
iitem->second->setChecked ( false );
|
||||
|
||||
emit paletteChanged();
|
||||
}
|
||||
|
||||
|
||||
PaletteItem* PaletteWidget::find ( const Name& name ) const
|
||||
{
|
||||
PaletteItems::const_iterator iitem = _layerItems.find(name);
|
||||
if ( iitem != _layerItems.end() )
|
||||
return iitem->second;
|
||||
|
||||
iitem = _extensionGoItems.find(name);
|
||||
if ( iitem != _extensionGoItems.end() )
|
||||
return iitem->second;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
} // End of Hurricane namespace.
|
|
@ -0,0 +1,125 @@
|
|||
|
||||
// -*- C++ -*-
|
||||
//
|
||||
// This file is part of the Coriolis Software.
|
||||
// Copyright (c) UPMC/LIP6 2008-2008, All Rights Reserved
|
||||
//
|
||||
// ===================================================================
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// x-----------------------------------------------------------------x
|
||||
// | |
|
||||
// | C O R I O L I S |
|
||||
// | V L S I B a c k e n d D a t a - B a s e |
|
||||
// | |
|
||||
// | Author : Jean-Paul CHAPUT |
|
||||
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
||||
// | =============================================================== |
|
||||
// | C++ Header : "./SelectorCommand.cpp" |
|
||||
// | *************************************************************** |
|
||||
// | U p d a t e s |
|
||||
// | |
|
||||
// x-----------------------------------------------------------------x
|
||||
|
||||
|
||||
#include "hurricane/viewer/CellWidget.h"
|
||||
#include "hurricane/viewer/SelectorCommand.h"
|
||||
|
||||
|
||||
namespace Hurricane {
|
||||
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// Class : "Hurricane::SelectorCommand".
|
||||
|
||||
|
||||
SelectorCommand::~SelectorCommand ()
|
||||
{ }
|
||||
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// Class : "Hurricane::NetSelectorCommand".
|
||||
|
||||
|
||||
NetSelectorCommand::NetSelectorCommand ( const Net* net )
|
||||
: _net(net)
|
||||
{ }
|
||||
|
||||
|
||||
NetSelectorCommand::~NetSelectorCommand ()
|
||||
{ }
|
||||
|
||||
|
||||
const Net* NetSelectorCommand::getNet () const
|
||||
{ return _net; }
|
||||
|
||||
|
||||
void NetSelectorCommand::doSelection ( CellWidget* cw, bool delayRedraw )
|
||||
{
|
||||
cw->_select ( _net, delayRedraw );
|
||||
}
|
||||
|
||||
|
||||
string NetSelectorCommand::_getTypeName () const
|
||||
{ return "NetSelectorCommand"; }
|
||||
|
||||
|
||||
string NetSelectorCommand::_getString () const
|
||||
{
|
||||
string s = "<" + _getTypeName() + " " + getString(_net) + ">";
|
||||
return s;
|
||||
}
|
||||
|
||||
|
||||
Record* NetSelectorCommand::_getRecord () const
|
||||
{
|
||||
Record* record = new Record ( _getString() );
|
||||
record->add ( getSlot("_net",_net) );
|
||||
return record;
|
||||
}
|
||||
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// Class : "Hurricane::AreaSelectorCommand".
|
||||
|
||||
|
||||
AreaSelectorCommand::AreaSelectorCommand ( const Box& area )
|
||||
: _area(area)
|
||||
{ }
|
||||
|
||||
|
||||
AreaSelectorCommand::~AreaSelectorCommand ()
|
||||
{ }
|
||||
|
||||
|
||||
const Box& AreaSelectorCommand::getArea () const
|
||||
{ return _area; }
|
||||
|
||||
|
||||
void AreaSelectorCommand::doSelection ( CellWidget* cw, bool delayRedraw )
|
||||
{
|
||||
cw->_selectOccurrencesUnder ( _area );
|
||||
}
|
||||
|
||||
|
||||
string AreaSelectorCommand::_getTypeName () const
|
||||
{ return "AreaSelectorCommand"; }
|
||||
|
||||
|
||||
string AreaSelectorCommand::_getString () const
|
||||
{
|
||||
string s = "<" + _getTypeName() + " " + getString(_area) + ">";
|
||||
return s;
|
||||
}
|
||||
|
||||
|
||||
Record* AreaSelectorCommand::_getRecord () const
|
||||
{
|
||||
Record* record = new Record ( _getString() );
|
||||
record->add ( getSlot("_area",&_area) );
|
||||
return record;
|
||||
}
|
||||
|
||||
|
||||
} // End of Hurricane namespace.
|
|
@ -0,0 +1,213 @@
|
|||
|
||||
// -*- C++ -*-
|
||||
//
|
||||
// This file is part of the Coriolis Software.
|
||||
// Copyright (c) UPMC/LIP6 2008-2008, All Rights Reserved
|
||||
//
|
||||
// ===================================================================
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// x-----------------------------------------------------------------x
|
||||
// | |
|
||||
// | C O R I O L I S |
|
||||
// | V L S I B a c k e n d D a t a - B a s e |
|
||||
// | |
|
||||
// | Author : Jean-Paul CHAPUT |
|
||||
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
||||
// | =============================================================== |
|
||||
// | C++ Header : "./ControllerWidget.h" |
|
||||
// | *************************************************************** |
|
||||
// | U p d a t e s |
|
||||
// | |
|
||||
// x-----------------------------------------------------------------x
|
||||
|
||||
|
||||
#ifndef __HURRICANE_CONTROLLER_WIDGET__
|
||||
#define __HURRICANE_CONTROLLER_WIDGET__
|
||||
|
||||
|
||||
#include <QTabWidget>
|
||||
class QCheckBox;
|
||||
class QComboBox;
|
||||
|
||||
|
||||
namespace Hurricane {
|
||||
|
||||
|
||||
class Record;
|
||||
class Net;
|
||||
class Cell;
|
||||
class CellWidget;
|
||||
class PaletteWidget;
|
||||
class GraphicsWidget;
|
||||
class DisplayFilterWidget;
|
||||
class NetlistWidget;
|
||||
class SelectionWidget;
|
||||
class InspectorWidget;
|
||||
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// Class : "Hurricane::ControllerTab".
|
||||
|
||||
|
||||
class ControllerTab : public QWidget {
|
||||
Q_OBJECT;
|
||||
|
||||
public:
|
||||
ControllerTab ( QWidget* parent=NULL );
|
||||
inline CellWidget* getCellWidget ();
|
||||
public slots:
|
||||
virtual void setCellWidget ( CellWidget* );
|
||||
virtual void setCell ( Cell* );
|
||||
virtual void updateTab ();
|
||||
virtual void cellPreModificate ();
|
||||
virtual void cellPostModificate ();
|
||||
|
||||
protected:
|
||||
CellWidget* _cellWidget;
|
||||
};
|
||||
|
||||
|
||||
inline CellWidget* ControllerTab::getCellWidget () { return _cellWidget; }
|
||||
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// Class : "Hurricane::TabNetlist".
|
||||
|
||||
|
||||
class TabNetlist : public ControllerTab {
|
||||
Q_OBJECT;
|
||||
|
||||
public:
|
||||
TabNetlist ( QWidget* parent=NULL );
|
||||
inline NetlistWidget* getNetlistBrowser ();
|
||||
inline QCheckBox* getSyncButton ();
|
||||
virtual void cellPreModificate ();
|
||||
virtual void cellPostModificate ();
|
||||
public slots:
|
||||
virtual void setCell ( Cell* );
|
||||
virtual void setCellWidget ( CellWidget* );
|
||||
virtual void setSynchronize ( bool );
|
||||
|
||||
protected:
|
||||
NetlistWidget* _netlistBrowser;
|
||||
QCheckBox* _synchronize;
|
||||
};
|
||||
|
||||
|
||||
inline NetlistWidget* TabNetlist::getNetlistBrowser () { return _netlistBrowser; }
|
||||
inline QCheckBox* TabNetlist::getSyncButton () { return _synchronize; }
|
||||
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// Class : "Hurricane::TabSelection".
|
||||
|
||||
|
||||
class TabSelection : public QWidget {
|
||||
Q_OBJECT;
|
||||
|
||||
public:
|
||||
TabSelection ( QWidget* parent=NULL );
|
||||
inline CellWidget* getCellWidget ();
|
||||
inline SelectionWidget* getSelection ();
|
||||
void updateTab ();
|
||||
void cellPreModificate ();
|
||||
void cellPostModificate ();
|
||||
public slots:
|
||||
void setCell ( Cell* );
|
||||
void setCellWidget ( CellWidget* );
|
||||
|
||||
protected:
|
||||
CellWidget* _cellWidget;
|
||||
SelectionWidget* _selection;
|
||||
bool _selectionChanged;
|
||||
};
|
||||
|
||||
|
||||
inline CellWidget* TabSelection::getCellWidget () { return _cellWidget; }
|
||||
inline SelectionWidget* TabSelection::getSelection () { return _selection; }
|
||||
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// Class : "Hurricane::TabInspector".
|
||||
|
||||
|
||||
class TabInspector : public QWidget {
|
||||
Q_OBJECT;
|
||||
|
||||
public:
|
||||
TabInspector ( QWidget* parent=NULL );
|
||||
inline CellWidget* getCellWidget ();
|
||||
inline InspectorWidget* getInspectorWidget ();
|
||||
inline QComboBox* getBookmarks ();
|
||||
void updateTab ();
|
||||
void cellPreModificate ();
|
||||
void cellPostModificate ();
|
||||
public slots:
|
||||
void setCell ( Cell* );
|
||||
void setCellWidget ( CellWidget* );
|
||||
void setSelectionRecord ( Record* );
|
||||
void bookmarkChanged ( int index );
|
||||
|
||||
protected:
|
||||
CellWidget* _cellWidget;
|
||||
InspectorWidget* _inspectorWidget;
|
||||
QComboBox* _bookmarks;
|
||||
Record* _selectionRecord;
|
||||
bool _updateFromSelection;
|
||||
};
|
||||
|
||||
|
||||
inline CellWidget* TabInspector::getCellWidget () { return _cellWidget; }
|
||||
inline InspectorWidget* TabInspector::getInspectorWidget () { return _inspectorWidget; }
|
||||
inline QComboBox* TabInspector::getBookmarks () { return _bookmarks; }
|
||||
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// Class : "Hurricane::ControllerWidget".
|
||||
|
||||
|
||||
class ControllerWidget : public QTabWidget {
|
||||
Q_OBJECT;
|
||||
|
||||
public:
|
||||
ControllerWidget ( QWidget* parent=NULL );
|
||||
inline CellWidget* getCellWidget ();
|
||||
inline GraphicsWidget* getGraphics ();
|
||||
inline PaletteWidget* getPalette ();
|
||||
inline DisplayFilterWidget* getDisplayFilter ();
|
||||
inline NetlistWidget* getNetlistBrowser ();
|
||||
inline SelectionWidget* getSelection ();
|
||||
inline InspectorWidget* getInspectorWidget ();
|
||||
void setCellWidget ( CellWidget* );
|
||||
public slots:
|
||||
void cellPreModificate ();
|
||||
void cellPostModificate ();
|
||||
void cellChanged ( Cell* );
|
||||
void updateTab ( int index );
|
||||
|
||||
protected:
|
||||
CellWidget* _cellWidget;
|
||||
GraphicsWidget* _graphics;
|
||||
PaletteWidget* _palette;
|
||||
DisplayFilterWidget* _displayFilter;
|
||||
TabNetlist* _tabNetlist;
|
||||
TabSelection* _tabSelection;
|
||||
TabInspector* _tabInspector;
|
||||
};
|
||||
|
||||
|
||||
inline CellWidget* ControllerWidget::getCellWidget () { return _cellWidget; }
|
||||
inline GraphicsWidget* ControllerWidget::getGraphics () { return _graphics; }
|
||||
inline PaletteWidget* ControllerWidget::getPalette () { return _palette; }
|
||||
inline DisplayFilterWidget* ControllerWidget::getDisplayFilter () { return _displayFilter; }
|
||||
inline NetlistWidget* ControllerWidget::getNetlistBrowser () { return _tabNetlist->getNetlistBrowser(); }
|
||||
inline SelectionWidget* ControllerWidget::getSelection () { return _tabSelection->getSelection(); }
|
||||
inline InspectorWidget* ControllerWidget::getInspectorWidget () { return _tabInspector->getInspectorWidget(); }
|
||||
|
||||
|
||||
} // End of Hurricane namespace.
|
||||
|
||||
|
||||
#endif // __HURRICANE_CONTROLLER_WIDGET__
|
|
@ -0,0 +1,64 @@
|
|||
|
||||
// -*- C++ -*-
|
||||
//
|
||||
// This file is part of the Coriolis Software.
|
||||
// Copyright (c) UPMC/LIP6 2008-2008, All Rights Reserved
|
||||
//
|
||||
// ===================================================================
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// x-----------------------------------------------------------------x
|
||||
// | |
|
||||
// | H U R R I C A N E |
|
||||
// | V L S I B a c k e n d D a t a - B a s e |
|
||||
// | |
|
||||
// | Author : Jean-Paul CHAPUT |
|
||||
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
||||
// | =============================================================== |
|
||||
// | C++ Header : "./PaletteExtensionGoItem.h" |
|
||||
// | *************************************************************** |
|
||||
// | U p d a t e s |
|
||||
// | |
|
||||
// x-----------------------------------------------------------------x
|
||||
|
||||
|
||||
#ifndef __HURRICANE_PALETTE_EXTENSION_GO_ITEM__
|
||||
#define __HURRICANE_PALETTE_EXTENSION_GO_ITEM__
|
||||
|
||||
|
||||
class QCheckBox;
|
||||
|
||||
#include "hurricane/Name.h"
|
||||
#include "hurricane/viewer/PaletteItem.h"
|
||||
|
||||
|
||||
namespace Hurricane {
|
||||
|
||||
|
||||
class PaletteExtensionGoItem : public PaletteItem {
|
||||
Q_OBJECT;
|
||||
|
||||
// Constructor.
|
||||
public:
|
||||
static PaletteExtensionGoItem* create ( const Name& );
|
||||
virtual const Name& getName () const;
|
||||
virtual bool isChecked () const;
|
||||
virtual void setChecked ( bool );
|
||||
|
||||
protected:
|
||||
QCheckBox* _checkBox;
|
||||
Name _name;
|
||||
|
||||
protected:
|
||||
PaletteExtensionGoItem ( const Name& );
|
||||
PaletteExtensionGoItem ( const PaletteExtensionGoItem& );
|
||||
PaletteExtensionGoItem& operator= ( const PaletteExtensionGoItem& );
|
||||
virtual void _postCreate ();
|
||||
};
|
||||
|
||||
|
||||
} // End of Hurricane namespace.
|
||||
|
||||
|
||||
#endif // __LAYER_PALETTE_ENTRY__
|
|
@ -0,0 +1,88 @@
|
|||
|
||||
// -*- C++ -*-
|
||||
//
|
||||
// This file is part of the Coriolis Software.
|
||||
// Copyright (c) UPMC/LIP6 2008-2008, All Rights Reserved
|
||||
//
|
||||
// ===================================================================
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// x-----------------------------------------------------------------x
|
||||
// | |
|
||||
// | H U R R I C A N E |
|
||||
// | V L S I B a c k e n d D a t a - B a s e |
|
||||
// | |
|
||||
// | Author : Jean-Paul CHAPUT |
|
||||
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
||||
// | =============================================================== |
|
||||
// | C++ Header : "./PaletteItem.h" |
|
||||
// | *************************************************************** |
|
||||
// | U p d a t e s |
|
||||
// | |
|
||||
// x-----------------------------------------------------------------x
|
||||
|
||||
|
||||
#ifndef __HURRICANE_PALETTE_ITEM__
|
||||
#define __HURRICANE_PALETTE_ITEM__
|
||||
|
||||
#include <QPixmap>
|
||||
#include <QWidget>
|
||||
#include <QFont>
|
||||
|
||||
class QPaintEvent;
|
||||
class QCheckBox;
|
||||
|
||||
#include "hurricane/Commons.h"
|
||||
|
||||
|
||||
namespace Hurricane {
|
||||
|
||||
|
||||
class Name;
|
||||
class PaletteItem;
|
||||
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// Class : "Hurricane::DrawingStyleSample".
|
||||
|
||||
|
||||
class DrawingStyleSample : public QWidget {
|
||||
Q_OBJECT;
|
||||
|
||||
public:
|
||||
DrawingStyleSample ( PaletteItem* );
|
||||
protected:
|
||||
QPixmap _sample;
|
||||
PaletteItem* _entry;
|
||||
protected:
|
||||
void redraw ();
|
||||
void paintEvent ( QPaintEvent* );
|
||||
};
|
||||
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// Class : "Hurricane::PaletteItem".
|
||||
|
||||
|
||||
class PaletteItem : public QWidget {
|
||||
Q_OBJECT;
|
||||
|
||||
public:
|
||||
virtual const Name& getName () const = 0;
|
||||
virtual bool isChecked () const = 0;
|
||||
virtual void setChecked ( bool state ) = 0;
|
||||
signals:
|
||||
virtual void toggled ();
|
||||
|
||||
protected:
|
||||
PaletteItem ();
|
||||
PaletteItem ( const PaletteItem& );
|
||||
PaletteItem& operator= ( const PaletteItem& );
|
||||
};
|
||||
|
||||
|
||||
} // End of Hurricane namespace.
|
||||
|
||||
|
||||
# endif // __HURRICANE_PALETTE_ITEM__
|
|
@ -0,0 +1,64 @@
|
|||
|
||||
// -*- C++ -*-
|
||||
//
|
||||
// This file is part of the Coriolis Software.
|
||||
// Copyright (c) UPMC/LIP6 2008-2008, All Rights Reserved
|
||||
//
|
||||
// ===================================================================
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// x-----------------------------------------------------------------x
|
||||
// | |
|
||||
// | H U R R I C A N E |
|
||||
// | V L S I B a c k e n d D a t a - B a s e |
|
||||
// | |
|
||||
// | Author : Jean-Paul CHAPUT |
|
||||
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
||||
// | =============================================================== |
|
||||
// | C++ Header : "./PaletteLayerItem.h" |
|
||||
// | *************************************************************** |
|
||||
// | U p d a t e s |
|
||||
// | |
|
||||
// x-----------------------------------------------------------------x
|
||||
|
||||
|
||||
#ifndef __HURRICANE_PALETTE_LAYER_ITEM__
|
||||
#define __HURRICANE_PALETTE_LAYER_ITEM__
|
||||
|
||||
|
||||
class QCheckBox;
|
||||
|
||||
#include "hurricane/viewer/PaletteItem.h"
|
||||
|
||||
|
||||
namespace Hurricane {
|
||||
|
||||
|
||||
class BasicLayer;
|
||||
|
||||
|
||||
class PaletteLayerItem : public PaletteItem {
|
||||
Q_OBJECT;
|
||||
|
||||
public:
|
||||
static PaletteLayerItem* create ( BasicLayer*, bool checked=true );
|
||||
virtual const Name& getName () const;
|
||||
virtual bool isChecked () const;
|
||||
virtual void setChecked ( bool state );
|
||||
|
||||
protected:
|
||||
BasicLayer* _basicLayer;
|
||||
QCheckBox* _checkBox;
|
||||
|
||||
protected:
|
||||
PaletteLayerItem ( BasicLayer*, bool checked );
|
||||
PaletteLayerItem ( const PaletteLayerItem& );
|
||||
PaletteLayerItem& operator= ( const PaletteLayerItem& );
|
||||
};
|
||||
|
||||
|
||||
} // End of Hurricane namespace.
|
||||
|
||||
|
||||
#endif // __HURRICANE_PALETTE_LAYER_ITEM__
|
|
@ -0,0 +1,63 @@
|
|||
|
||||
// -*- C++ -*-
|
||||
//
|
||||
// This file is part of the Coriolis Software.
|
||||
// Copyright (c) UPMC/LIP6 2008-2008, All Rights Reserved
|
||||
//
|
||||
// ===================================================================
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// x-----------------------------------------------------------------x
|
||||
// | |
|
||||
// | H U R R I C A N E |
|
||||
// | V L S I B a c k e n d D a t a - B a s e |
|
||||
// | |
|
||||
// | Author : Jean-Paul CHAPUT |
|
||||
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
||||
// | =============================================================== |
|
||||
// | C++ Header : "./PaletteNamedItem.h" |
|
||||
// | *************************************************************** |
|
||||
// | U p d a t e s |
|
||||
// | |
|
||||
// x-----------------------------------------------------------------x
|
||||
|
||||
|
||||
#ifndef __HURRICANE_PALETTE_NAMED_ITEM__
|
||||
#define __HURRICANE_PALETTE_NAMED_ITEM__
|
||||
|
||||
|
||||
class QCheckBox;
|
||||
|
||||
#include "hurricane/Name.h"
|
||||
#include "hurricane/viewer/PaletteItem.h"
|
||||
|
||||
|
||||
namespace Hurricane {
|
||||
|
||||
|
||||
class PaletteNamedItem : public PaletteItem {
|
||||
Q_OBJECT;
|
||||
|
||||
// Constructor.
|
||||
public:
|
||||
static PaletteNamedItem* create ( const Name&, bool checked=true );
|
||||
virtual const Name& getName () const;
|
||||
virtual bool isChecked () const;
|
||||
virtual void setChecked ( bool );
|
||||
|
||||
protected:
|
||||
QCheckBox* _checkBox;
|
||||
Name _name;
|
||||
|
||||
protected:
|
||||
PaletteNamedItem ( const Name&, bool checked );
|
||||
PaletteNamedItem ( const PaletteNamedItem& );
|
||||
PaletteNamedItem& operator= ( const PaletteNamedItem& );
|
||||
};
|
||||
|
||||
|
||||
} // End of Hurricane namespace.
|
||||
|
||||
|
||||
#endif // __HURRICANE_PALETTE_NAMED_ITEM__
|
|
@ -0,0 +1,93 @@
|
|||
|
||||
// -*- C++ -*-
|
||||
//
|
||||
// This file is part of the Coriolis Software.
|
||||
// Copyright (c) UPMC/LIP6 2008-2008, All Rights Reserved
|
||||
//
|
||||
// ===================================================================
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// x-----------------------------------------------------------------x
|
||||
// | |
|
||||
// | H U R R I C A N E |
|
||||
// | V L S I B a c k e n d D a t a - B a s e |
|
||||
// | |
|
||||
// | Author : Jean-Paul CHAPUT |
|
||||
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
||||
// | =============================================================== |
|
||||
// | C++ Header : "./PaletteWidget.h" |
|
||||
// | *************************************************************** |
|
||||
// | U p d a t e s |
|
||||
// | |
|
||||
// x-----------------------------------------------------------------x
|
||||
|
||||
|
||||
#ifndef __HURRICANE_PALETTE_WIDGET__
|
||||
#define __HURRICANE_PALETTE_WIDGET__
|
||||
|
||||
#include <map>
|
||||
#include <QScrollArea>
|
||||
|
||||
#include "hurricane/Commons.h"
|
||||
#include "hurricane/Name.h"
|
||||
|
||||
|
||||
class QCheckBox;
|
||||
class QPushButton;
|
||||
class QGridLayout;
|
||||
|
||||
|
||||
namespace Hurricane {
|
||||
|
||||
|
||||
using std::map;
|
||||
|
||||
class BasicLayer;
|
||||
class Cell;
|
||||
class CellWidget;
|
||||
class PaletteItem;
|
||||
class PaletteNamedItem;
|
||||
class PaletteLayerItem;
|
||||
|
||||
|
||||
class PaletteWidget : public QScrollArea {
|
||||
Q_OBJECT;
|
||||
|
||||
public:
|
||||
typedef map<const Name,PaletteItem*> PaletteItems;
|
||||
public:
|
||||
PaletteWidget ( QWidget* parent=NULL );
|
||||
PaletteItem* find ( const Name& name ) const;
|
||||
bool isDrawable ( const Name& name ) const;
|
||||
signals:
|
||||
void paletteChanged ();
|
||||
public slots:
|
||||
void updateExtensions ( Cell* cell );
|
||||
void showAll ();
|
||||
void hideAll ();
|
||||
|
||||
protected:
|
||||
PaletteItems _layerItems;
|
||||
PaletteItems _extensionGoItems;
|
||||
QPushButton* _showAll;
|
||||
QPushButton* _hideAll;
|
||||
QGridLayout* _grid;
|
||||
int _extensionRow;
|
||||
int _extensionColumn;
|
||||
QWidget* _extensionGroup;
|
||||
|
||||
protected:
|
||||
PaletteWidget ( const PaletteWidget& );
|
||||
PaletteWidget& operator= ( const PaletteWidget& );
|
||||
protected:
|
||||
QWidget* _createGroupItem ( const Name& );
|
||||
PaletteNamedItem* _createNamedItem ( const Name&, bool checked=true );
|
||||
PaletteLayerItem* _createLayerItem ( BasicLayer*, bool checked=true );
|
||||
};
|
||||
|
||||
|
||||
} // End of Hurricane namespace.
|
||||
|
||||
|
||||
#endif // __HURRICANE_PALETTE_WIDGET__
|
|
@ -0,0 +1,85 @@
|
|||
|
||||
// -*- C++ -*-
|
||||
//
|
||||
// This file is part of the Coriolis Software.
|
||||
// Copyright (c) UPMC/LIP6 2008-2008, All Rights Reserved
|
||||
//
|
||||
// ===================================================================
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// x-----------------------------------------------------------------x
|
||||
// | |
|
||||
// | C O R I O L I S |
|
||||
// | V L S I B a c k e n d D a t a - B a s e |
|
||||
// | |
|
||||
// | Author : Jean-Paul CHAPUT |
|
||||
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
||||
// | =============================================================== |
|
||||
// | C++ Header : "./SelectorCommand.h" |
|
||||
// | *************************************************************** |
|
||||
// | U p d a t e s |
|
||||
// | |
|
||||
// x-----------------------------------------------------------------x
|
||||
|
||||
|
||||
#ifndef __HURRICANE_SELECTOR_COMMAND__
|
||||
#define __HURRICANE_SELECTOR_COMMAND__
|
||||
|
||||
|
||||
#include <string>
|
||||
#include "hurricane/Commons.h"
|
||||
|
||||
|
||||
namespace Hurricane {
|
||||
|
||||
|
||||
using std::string;
|
||||
class CellWidget;
|
||||
|
||||
|
||||
class SelectorCommand {
|
||||
public:
|
||||
virtual ~SelectorCommand ();
|
||||
virtual void doSelection ( CellWidget*, bool delayRedraw ) = 0;
|
||||
virtual Record* _getRecord () const = 0;
|
||||
virtual string _getString () const = 0;
|
||||
virtual string _getTypeName () const = 0;
|
||||
};
|
||||
|
||||
|
||||
class NetSelectorCommand : public SelectorCommand {
|
||||
public:
|
||||
NetSelectorCommand ( const Net* );
|
||||
virtual ~NetSelectorCommand ();
|
||||
const Net* getNet () const;
|
||||
virtual void doSelection ( CellWidget*, bool delayRedraw );
|
||||
virtual Record* _getRecord () const;
|
||||
virtual string _getString () const;
|
||||
virtual string _getTypeName () const;
|
||||
protected:
|
||||
const Net* _net;
|
||||
};
|
||||
|
||||
|
||||
class AreaSelectorCommand : public SelectorCommand {
|
||||
public:
|
||||
AreaSelectorCommand ( const Box& );
|
||||
virtual ~AreaSelectorCommand ();
|
||||
const Box& getArea () const;
|
||||
virtual void doSelection ( CellWidget*, bool delayRedraw );
|
||||
virtual Record* _getRecord () const;
|
||||
virtual string _getString () const;
|
||||
virtual string _getTypeName () const;
|
||||
protected:
|
||||
const Box _area;
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
INSPECTOR_P_SUPPORT(Hurricane::SelectorCommand);
|
||||
|
||||
|
||||
#endif // __HURRICANE_SELECTOR_COMMAND__
|
Loading…
Reference in New Issue