* ./hurricane/src/hviewer :
- New feature : support for highlighted selection with decent refresh time. To active selection mode, use the 's' key or the "View" menu. - New feature : HNetlist to browse a Cell's Netlist. HNetlist can be used with any NetInformations derived class, allowing the user to enrich the HNetlist displayed fields. For an example, have a look at SimpleNetlistWidget. - Added proper licence header to all file.
This commit is contained in:
parent
3bb9ddf157
commit
9637ebc58b
|
@ -11,19 +11,27 @@
|
||||||
hurricane/viewer/HPalette.h
|
hurricane/viewer/HPalette.h
|
||||||
hurricane/viewer/DynamicLabel.h
|
hurricane/viewer/DynamicLabel.h
|
||||||
hurricane/viewer/HMousePosition.h
|
hurricane/viewer/HMousePosition.h
|
||||||
|
hurricane/viewer/Selector.h
|
||||||
hurricane/viewer/CellWidget.h
|
hurricane/viewer/CellWidget.h
|
||||||
|
hurricane/viewer/CellWidgets.h
|
||||||
hurricane/viewer/CellViewer.h
|
hurricane/viewer/CellViewer.h
|
||||||
hurricane/viewer/RecordModel.h
|
hurricane/viewer/RecordModel.h
|
||||||
hurricane/viewer/HInspectorWidget.h
|
hurricane/viewer/HInspectorWidget.h
|
||||||
|
hurricane/viewer/HNetlistModel.h
|
||||||
|
hurricane/viewer/HNetlist.h
|
||||||
)
|
)
|
||||||
set ( exports hurricane/viewer/ScreenUtilities.h
|
set ( exports hurricane/viewer/ScreenUtilities.h
|
||||||
hurricane/viewer/HPaletteEntry.h
|
hurricane/viewer/HPaletteEntry.h
|
||||||
hurricane/viewer/HPalette.h
|
hurricane/viewer/HPalette.h
|
||||||
hurricane/viewer/DisplayStyle.h
|
hurricane/viewer/DisplayStyle.h
|
||||||
hurricane/viewer/Graphics.h
|
hurricane/viewer/Graphics.h
|
||||||
|
hurricane/viewer/Selector.h
|
||||||
|
hurricane/viewer/CellWidget.h
|
||||||
|
hurricane/viewer/CellWidgets.h
|
||||||
hurricane/viewer/CellViewer.h
|
hurricane/viewer/CellViewer.h
|
||||||
hurricane/viewer/HInspectorWidget.h
|
hurricane/viewer/HInspectorWidget.h
|
||||||
hurricane/viewer/CellWidget.h
|
hurricane/viewer/NetInformations.h
|
||||||
|
hurricane/viewer/HNetlist.h
|
||||||
)
|
)
|
||||||
set ( cpps ScreenUtilities.cpp
|
set ( cpps ScreenUtilities.cpp
|
||||||
DisplayStyle.cpp
|
DisplayStyle.cpp
|
||||||
|
@ -35,10 +43,14 @@
|
||||||
HPalette.cpp
|
HPalette.cpp
|
||||||
DynamicLabel.cpp
|
DynamicLabel.cpp
|
||||||
HMousePosition.cpp
|
HMousePosition.cpp
|
||||||
|
Selector.cpp
|
||||||
CellWidget.cpp
|
CellWidget.cpp
|
||||||
CellViewer.cpp
|
CellViewer.cpp
|
||||||
RecordModel.cpp
|
RecordModel.cpp
|
||||||
HInspectorWidget.cpp
|
HInspectorWidget.cpp
|
||||||
|
NetInformations.cpp
|
||||||
|
HNetlistModel.cpp
|
||||||
|
HNetlist.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
qt4_wrap_cpp ( MOC_SRCS ${mocincludes} )
|
qt4_wrap_cpp ( MOC_SRCS ${mocincludes} )
|
||||||
|
|
|
@ -1,6 +1,53 @@
|
||||||
|
|
||||||
|
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./CellViewer.cpp" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
#include <QAction>
|
#include <QAction>
|
||||||
|
@ -17,6 +64,7 @@
|
||||||
#include "hurricane/viewer/CellWidget.h"
|
#include "hurricane/viewer/CellWidget.h"
|
||||||
#include "hurricane/viewer/CellViewer.h"
|
#include "hurricane/viewer/CellViewer.h"
|
||||||
#include "hurricane/viewer/HInspectorWidget.h"
|
#include "hurricane/viewer/HInspectorWidget.h"
|
||||||
|
#include "hurricane/viewer/HNetlist.h"
|
||||||
#include "hurricane/viewer/HMousePosition.h"
|
#include "hurricane/viewer/HMousePosition.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -32,8 +80,10 @@ namespace Hurricane {
|
||||||
, _exitAction(NULL)
|
, _exitAction(NULL)
|
||||||
, _refreshAction(NULL)
|
, _refreshAction(NULL)
|
||||||
, _fitToContentsAction(NULL)
|
, _fitToContentsAction(NULL)
|
||||||
|
, _showSelectionAction(NULL)
|
||||||
, _runInspectorOnDataBase(NULL)
|
, _runInspectorOnDataBase(NULL)
|
||||||
, _runInspectorOnCell(NULL)
|
, _runInspectorOnCell(NULL)
|
||||||
|
, _browseNetlist(NULL)
|
||||||
, _fileMenu(NULL)
|
, _fileMenu(NULL)
|
||||||
, _viewMenu(NULL)
|
, _viewMenu(NULL)
|
||||||
, _toolsMenu(NULL)
|
, _toolsMenu(NULL)
|
||||||
|
@ -83,11 +133,19 @@ namespace Hurricane {
|
||||||
_fitToContentsAction->setStatusTip ( tr("Adjust zoom to fit the whole cell's contents") );
|
_fitToContentsAction->setStatusTip ( tr("Adjust zoom to fit the whole cell's contents") );
|
||||||
_fitToContentsAction->setShortcut ( Qt::Key_F );
|
_fitToContentsAction->setShortcut ( Qt::Key_F );
|
||||||
|
|
||||||
|
_showSelectionAction = new QAction ( tr("&Show Selection"), this );
|
||||||
|
_showSelectionAction->setStatusTip ( tr("Highlight the selected items (darken others)") );
|
||||||
|
_showSelectionAction->setShortcut ( Qt::Key_S );
|
||||||
|
_showSelectionAction->setCheckable ( true );
|
||||||
|
|
||||||
_runInspectorOnDataBase= new QAction ( tr("Inspect &DataBase"), this );
|
_runInspectorOnDataBase= new QAction ( tr("Inspect &DataBase"), this );
|
||||||
_runInspectorOnDataBase->setStatusTip ( tr("Run Inspector on Hurricane DataBase") );
|
_runInspectorOnDataBase->setStatusTip ( tr("Run Inspector on Hurricane DataBase") );
|
||||||
|
|
||||||
_runInspectorOnCell= new QAction ( tr("Inspect &Cell"), this );
|
_runInspectorOnCell= new QAction ( tr("Inspect &Cell"), this );
|
||||||
_runInspectorOnCell->setStatusTip ( tr("Run Inspector on the current Cell") );
|
_runInspectorOnCell->setStatusTip ( tr("Run Inspector on the current Cell") );
|
||||||
|
|
||||||
|
_browseNetlist= new QAction ( tr("Browse &Netlist"), this );
|
||||||
|
_browseNetlist->setStatusTip ( tr("Browse netlist from the current Cell") );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -108,10 +166,12 @@ namespace Hurricane {
|
||||||
_viewMenu = menuBar()->addMenu ( tr("View") );
|
_viewMenu = menuBar()->addMenu ( tr("View") );
|
||||||
_viewMenu->addAction ( _refreshAction );
|
_viewMenu->addAction ( _refreshAction );
|
||||||
_viewMenu->addAction ( _fitToContentsAction );
|
_viewMenu->addAction ( _fitToContentsAction );
|
||||||
|
_viewMenu->addAction ( _showSelectionAction );
|
||||||
|
|
||||||
_toolsMenu = menuBar()->addMenu ( tr("Tool") );
|
_toolsMenu = menuBar()->addMenu ( tr("Tool") );
|
||||||
_toolsMenu->addAction ( _runInspectorOnDataBase );
|
_toolsMenu->addAction ( _runInspectorOnDataBase );
|
||||||
_toolsMenu->addAction ( _runInspectorOnCell );
|
_toolsMenu->addAction ( _runInspectorOnCell );
|
||||||
|
_toolsMenu->addAction ( _browseNetlist );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -154,8 +214,10 @@ namespace Hurricane {
|
||||||
|
|
||||||
connect ( _refreshAction , SIGNAL(triggered()) , _cellWidget, SLOT(redraw ()));
|
connect ( _refreshAction , SIGNAL(triggered()) , _cellWidget, SLOT(redraw ()));
|
||||||
connect ( _fitToContentsAction , SIGNAL(triggered()) , _cellWidget, SLOT(fitToContents ()));
|
connect ( _fitToContentsAction , SIGNAL(triggered()) , _cellWidget, SLOT(fitToContents ()));
|
||||||
|
connect ( _showSelectionAction , SIGNAL(toggled(bool)), _cellWidget, SLOT(setShowSelection (bool)));
|
||||||
connect ( _runInspectorOnDataBase, SIGNAL(triggered()) , this , SLOT(runInspectorOnDataBase()));
|
connect ( _runInspectorOnDataBase, SIGNAL(triggered()) , this , SLOT(runInspectorOnDataBase()));
|
||||||
connect ( _runInspectorOnCell , SIGNAL(triggered()) , this , SLOT(runInspectorOnCell ()));
|
connect ( _runInspectorOnCell , SIGNAL(triggered()) , this , SLOT(runInspectorOnCell ()));
|
||||||
|
connect ( _browseNetlist , SIGNAL(triggered()) , this , SLOT(browseNetlist ()));
|
||||||
connect ( _cellWidget , SIGNAL(mousePositionChanged(const Point&))
|
connect ( _cellWidget , SIGNAL(mousePositionChanged(const Point&))
|
||||||
, _mousePosition , SLOT(setPosition(const Point&)) );
|
, _mousePosition , SLOT(setPosition(const Point&)) );
|
||||||
|
|
||||||
|
@ -197,4 +259,24 @@ namespace Hurricane {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CellViewer::browseNetlist ()
|
||||||
|
{
|
||||||
|
HNetlist* netlistBrowser = new HNetlist ();
|
||||||
|
netlistBrowser->setCellWidget<SimpleNetInformations> ( _cellWidget );
|
||||||
|
netlistBrowser->show ();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CellViewer::select ( Occurrence& occurrence )
|
||||||
|
{ if ( _cellWidget ) _cellWidget->select ( occurrence ); }
|
||||||
|
|
||||||
|
|
||||||
|
void CellViewer::unselect ( Occurrence& occurrence )
|
||||||
|
{ if ( _cellWidget ) _cellWidget->unselect ( occurrence ); }
|
||||||
|
|
||||||
|
|
||||||
|
void CellViewer::unselectAll ()
|
||||||
|
{ if ( _cellWidget ) _cellWidget->unselectAll(); }
|
||||||
|
|
||||||
|
|
||||||
} // End of Hurricane namespace.
|
} // End of Hurricane namespace.
|
||||||
|
|
|
@ -1,5 +1,58 @@
|
||||||
|
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./CellWidget.cpp" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
|
||||||
|
|
||||||
# include <QMouseEvent>
|
# include <QMouseEvent>
|
||||||
|
@ -46,7 +99,7 @@ namespace Hurricane {
|
||||||
void CellWidget::Spot::restore ()
|
void CellWidget::Spot::restore ()
|
||||||
{
|
{
|
||||||
if ( _restore ) {
|
if ( _restore ) {
|
||||||
_cellWidget->copyToScreen ( _spotPoint.x()-5, _spotPoint.y()-5, 10, 10 );
|
_cellWidget->getDrawingPlanes().copyToScreen ( _spotPoint.x()-5, _spotPoint.y()-5, 10, 10 );
|
||||||
_restore = false;
|
_restore = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -60,7 +113,7 @@ namespace Hurricane {
|
||||||
|
|
||||||
void CellWidget::Spot::moveTo ( const QPoint& screenPoint )
|
void CellWidget::Spot::moveTo ( const QPoint& screenPoint )
|
||||||
{
|
{
|
||||||
QPainter& screenPainter = _cellWidget->getScreenPainter();
|
QPainter& screenPainter = _cellWidget->getDrawingPlanes().painter(2);
|
||||||
|
|
||||||
Point mousePoint = _cellWidget->screenToDbuPoint ( screenPoint );
|
Point mousePoint = _cellWidget->screenToDbuPoint ( screenPoint );
|
||||||
Point spotPoint = Point ( DbU::getOnSnapGrid(mousePoint.getX())
|
Point spotPoint = Point ( DbU::getOnSnapGrid(mousePoint.getX())
|
||||||
|
@ -76,6 +129,106 @@ namespace Hurricane {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------
|
||||||
|
// Class : "Hurricane::CellWidget::Drawingplanes".
|
||||||
|
|
||||||
|
|
||||||
|
CellWidget::DrawingPlanes::DrawingPlanes ( const QSize& size, CellWidget* cw )
|
||||||
|
: _cellWidget(cw)
|
||||||
|
, _workingPlane(0)
|
||||||
|
{
|
||||||
|
for ( size_t i=0 ; i<2 ; i++ )
|
||||||
|
_planes[i] = new QPixmap ( size );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
CellWidget::DrawingPlanes::~DrawingPlanes ()
|
||||||
|
{
|
||||||
|
for ( size_t i=0 ; i<2 ; i++ ) {
|
||||||
|
if ( _painters[i].isActive() ) _painters[i].end();
|
||||||
|
delete _planes[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CellWidget::DrawingPlanes::resize ( const QSize& size )
|
||||||
|
{
|
||||||
|
for ( size_t i=0 ; i<2 ; i++ ) {
|
||||||
|
bool activePainter = _painters[i].isActive();
|
||||||
|
|
||||||
|
if ( activePainter ) _painters[i].end();
|
||||||
|
delete _planes[i];
|
||||||
|
|
||||||
|
_planes[i] = new QPixmap ( size );
|
||||||
|
if ( activePainter ) _painters[i].begin ( _planes[i] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CellWidget::DrawingPlanes::shiftLeft ( int dx )
|
||||||
|
{
|
||||||
|
paintersBegin ();
|
||||||
|
_painters[0].drawPixmap ( dx, 0, *_planes[0], 0, 0, width()-dx, height() );
|
||||||
|
_painters[1].drawPixmap ( dx, 0, *_planes[1], 0, 0, width()-dx, height() );
|
||||||
|
paintersEnd ();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CellWidget::DrawingPlanes::shiftRight ( int dx )
|
||||||
|
{
|
||||||
|
paintersBegin ();
|
||||||
|
_painters[0].drawPixmap ( 0, 0, *_planes[0], dx, 0, width()-dx, height() );
|
||||||
|
_painters[1].drawPixmap ( 0, 0, *_planes[1], dx, 0, width()-dx, height() );
|
||||||
|
paintersEnd ();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CellWidget::DrawingPlanes::shiftUp ( int dy )
|
||||||
|
{
|
||||||
|
paintersBegin ();
|
||||||
|
_painters[0].drawPixmap ( 0, dy, *_planes[0], 0, 0, width(), height()-dy );
|
||||||
|
_painters[1].drawPixmap ( 0, dy, *_planes[1], 0, 0, width(), height()-dy );
|
||||||
|
paintersEnd ();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CellWidget::DrawingPlanes::shiftDown ( int dy )
|
||||||
|
{
|
||||||
|
paintersBegin ();
|
||||||
|
_painters[0].drawPixmap ( 0, 0, *_planes[0], 0, dy, width(), height()-dy );
|
||||||
|
_painters[1].drawPixmap ( 0, 0, *_planes[1], 0, dy, width(), height()-dy );
|
||||||
|
paintersEnd ();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CellWidget::DrawingPlanes::copyToSelect ( int sx, int sy, int w, int h )
|
||||||
|
{
|
||||||
|
painterBegin ( 1 );
|
||||||
|
_painters[1].setPen ( Qt::NoPen );
|
||||||
|
_painters[1].setBackground ( Graphics::getBrush("background") );
|
||||||
|
_painters[1].eraseRect ( sx, sy, w, h );
|
||||||
|
//_painters[1].setOpacity ( 0.5 );
|
||||||
|
_painters[1].drawPixmap ( sx, sy, *_planes[0], sx, sy, w, h );
|
||||||
|
painterEnd ( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CellWidget::DrawingPlanes::copyToScreen ( int sx, int sy, int w, int h )
|
||||||
|
{
|
||||||
|
if ( _cellWidget->showSelection() )
|
||||||
|
_painters[2].drawPixmap ( sx, sy
|
||||||
|
, *_planes[1]
|
||||||
|
, _cellWidget->getOffsetVA().rx()+sx, _cellWidget->getOffsetVA().ry()+sy
|
||||||
|
, w, h
|
||||||
|
);
|
||||||
|
else
|
||||||
|
_painters[2].drawPixmap ( sx, sy
|
||||||
|
, *_planes[0]
|
||||||
|
, _cellWidget->getOffsetVA().rx()+sx, _cellWidget->getOffsetVA().ry()+sy
|
||||||
|
, w, h
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// -------------------------------------------------------------------
|
// -------------------------------------------------------------------
|
||||||
// Class : "Hurricane::CellWidget".
|
// Class : "Hurricane::CellWidget".
|
||||||
|
@ -91,14 +244,14 @@ namespace Hurricane {
|
||||||
, _visibleArea(_stripWidth,_stripWidth,4*_stripWidth,4*_stripWidth)
|
, _visibleArea(_stripWidth,_stripWidth,4*_stripWidth,4*_stripWidth)
|
||||||
, _scale(1.0)
|
, _scale(1.0)
|
||||||
, _offsetVA(_stripWidth,_stripWidth)
|
, _offsetVA(_stripWidth,_stripWidth)
|
||||||
, _drawingBuffer(6*_stripWidth,6*_stripWidth)
|
, _drawingPlanes(QSize(6*_stripWidth,6*_stripWidth),this)
|
||||||
, _drawingPainter()
|
|
||||||
, _screenPainter()
|
|
||||||
, _lastMousePosition(0,0)
|
, _lastMousePosition(0,0)
|
||||||
, _spot(this)
|
, _spot(this)
|
||||||
, _cell(NULL)
|
, _cell(NULL)
|
||||||
, _mouseGo(false)
|
, _mouseGo(false)
|
||||||
, _showBoundaries(true)
|
, _showBoundaries(true)
|
||||||
|
, _showSelection(false)
|
||||||
|
, _selectionHasChanged(false)
|
||||||
, _redrawRectCount(0)
|
, _redrawRectCount(0)
|
||||||
{
|
{
|
||||||
//setBackgroundRole ( QPalette::Dark );
|
//setBackgroundRole ( QPalette::Dark );
|
||||||
|
@ -111,19 +264,6 @@ namespace Hurricane {
|
||||||
setFocusPolicy ( Qt::StrongFocus );
|
setFocusPolicy ( Qt::StrongFocus );
|
||||||
setMouseTracking ( true );
|
setMouseTracking ( true );
|
||||||
|
|
||||||
// _statusBar = new QStatusBar ( this );
|
|
||||||
|
|
||||||
// _xPosition = new DynamicLabel ();
|
|
||||||
// _xPosition->setStaticText ( "X:" );
|
|
||||||
// _xPosition->setDynamicText ( "0l" );
|
|
||||||
|
|
||||||
// _yPosition = new DynamicLabel ();
|
|
||||||
// _yPosition->setStaticText ( "Y:" );
|
|
||||||
// _yPosition->setDynamicText ( "0l" );
|
|
||||||
|
|
||||||
// _statusBar->addPermanentWidget ( _xPosition );
|
|
||||||
// _statusBar->addPermanentWidget ( _yPosition );
|
|
||||||
|
|
||||||
//_mapView = new MapView ( this );
|
//_mapView = new MapView ( this );
|
||||||
DataBase* database = DataBase::getDB();
|
DataBase* database = DataBase::getDB();
|
||||||
if ( database )
|
if ( database )
|
||||||
|
@ -181,53 +321,61 @@ namespace Hurricane {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CellWidget::setShowSelection ( bool state )
|
||||||
|
{
|
||||||
|
if ( state != _showSelection ) {
|
||||||
|
_showSelection = state;
|
||||||
|
redraw ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void CellWidget::redraw ( QRect redrawArea )
|
void CellWidget::redraw ( QRect redrawArea )
|
||||||
{
|
{
|
||||||
|
cerr << "CellWidget::redraw()" << endl;
|
||||||
|
|
||||||
_redrawRectCount = 0;
|
_redrawRectCount = 0;
|
||||||
|
|
||||||
pushCursor ( Qt::BusyCursor );
|
pushCursor ( Qt::BusyCursor );
|
||||||
|
|
||||||
_spot.setRestore ( false );
|
if ( !_selectionHasChanged ) {
|
||||||
_drawingPainter.begin ( &_drawingBuffer );
|
_spot.setRestore ( false );
|
||||||
|
_drawingPlanes.select ( 0 );
|
||||||
|
_drawingPlanes.painterBegin ();
|
||||||
|
|
||||||
_drawingPainter.setPen ( Qt::NoPen );
|
_drawingPlanes.painter().setPen ( Qt::NoPen );
|
||||||
_drawingPainter.setBackground ( Graphics::getBrush("background") );
|
_drawingPlanes.painter().setBackground ( Graphics::getBrush("background") );
|
||||||
_drawingPainter.setClipRect ( redrawArea );
|
_drawingPlanes.painter().setClipRect ( redrawArea );
|
||||||
_drawingPainter.eraseRect ( redrawArea );
|
_drawingPlanes.painter().eraseRect ( redrawArea );
|
||||||
|
|
||||||
if ( _cell ) {
|
int darkening = (_showSelection) ? 200 : 100;
|
||||||
Box redrawBox = displayToDbuBox ( redrawArea );
|
|
||||||
|
|
||||||
for_each_basic_layer ( basicLayer, _technology->getBasicLayers() ) {
|
if ( _cell ) {
|
||||||
_drawingPainter.setPen ( Graphics::getPen (basicLayer->getName()) );
|
Box redrawBox = displayToDbuBox ( redrawArea );
|
||||||
_drawingPainter.setBrush ( Graphics::getBrush(basicLayer->getName()) );
|
|
||||||
|
|
||||||
if ( isDrawable(basicLayer->getName()) )
|
for_each_basic_layer ( basicLayer, _technology->getBasicLayers() ) {
|
||||||
drawCell ( _cell, basicLayer, redrawBox, Transformation() );
|
_drawingPlanes.painter().setPen ( Graphics::getPen (basicLayer->getName(),darkening) );
|
||||||
end_for;
|
_drawingPlanes.painter().setBrush ( Graphics::getBrush(basicLayer->getName(),darkening) );
|
||||||
}
|
|
||||||
if ( isDrawable("boundaries") ) {
|
|
||||||
_drawingPainter.setPen ( Graphics::getPen ("boundaries") );
|
|
||||||
_drawingPainter.setBrush ( Graphics::getBrush("boundaries") );
|
|
||||||
|
|
||||||
drawBoundaries ( _cell, redrawBox, Transformation() );
|
if ( isDrawable(basicLayer->getName()) )
|
||||||
|
drawCell ( _cell, basicLayer, redrawBox, Transformation() );
|
||||||
|
end_for;
|
||||||
|
}
|
||||||
|
if ( isDrawable("boundaries") ) {
|
||||||
|
_drawingPlanes.painter().setPen ( Graphics::getPen ("boundaries") );
|
||||||
|
_drawingPlanes.painter().setBrush ( Graphics::getBrush("boundaries") );
|
||||||
|
|
||||||
|
drawBoundaries ( _cell, redrawBox, Transformation() );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// vector<HPaletteEntry*>& paletteEntries = _palette->getEntries ();
|
_drawingPlanes.painterEnd ();
|
||||||
// for ( size_t i=0 ; i<paletteEntries.size() ; i++ ) {
|
|
||||||
// _drawingPainter.setPen ( Graphics::getPen (paletteEntries[i]->getName()) );
|
|
||||||
// _drawingPainter.setBrush ( Graphics::getBrush(paletteEntries[i]->getName()) );
|
|
||||||
|
|
||||||
// if ( paletteEntries[i]->isBasicLayer() && isDrawable(paletteEntries[i]) ) {
|
|
||||||
// drawCell ( _cell, paletteEntries[i]->getBasicLayer(), redrawBox, Transformation() );
|
|
||||||
// } else if ( (paletteEntries[i]->getName() == DisplayStyle::Boundaries)
|
|
||||||
// && paletteEntries[i]->isChecked() ) {
|
|
||||||
// drawBoundaries ( _cell, redrawBox, Transformation() );
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_drawingPainter.end ();
|
if ( _showSelection )
|
||||||
|
redrawSelection ( redrawArea );
|
||||||
|
|
||||||
|
cerr << "CellWidget::redraw() - finished." << endl;
|
||||||
|
|
||||||
update ();
|
update ();
|
||||||
popCursor ();
|
popCursor ();
|
||||||
|
@ -236,6 +384,53 @@ namespace Hurricane {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CellWidget::redrawSelection ( QRect redrawArea )
|
||||||
|
{
|
||||||
|
cerr << "CellWidget::redrawSelection()" << endl;
|
||||||
|
|
||||||
|
_drawingPlanes.copyToSelect ( redrawArea.x()
|
||||||
|
, redrawArea.y()
|
||||||
|
, redrawArea.width()
|
||||||
|
, redrawArea.height()
|
||||||
|
);
|
||||||
|
|
||||||
|
_drawingPlanes.select ( 1 );
|
||||||
|
_drawingPlanes.painterBegin ();
|
||||||
|
_drawingPlanes.painter().setPen ( Qt::NoPen );
|
||||||
|
_drawingPlanes.painter().setBackground ( Graphics::getBrush("background") );
|
||||||
|
_drawingPlanes.painter().setClipRect ( redrawArea );
|
||||||
|
|
||||||
|
if ( _cell ) {
|
||||||
|
Box redrawBox = displayToDbuBox ( redrawArea );
|
||||||
|
|
||||||
|
for_each_basic_layer ( basicLayer, _technology->getBasicLayers() ) {
|
||||||
|
if ( !isDrawable(basicLayer->getName()) ) continue;
|
||||||
|
|
||||||
|
_drawingPlanes.painter().setPen ( Graphics::getPen (basicLayer->getName()) );
|
||||||
|
_drawingPlanes.painter().setBrush ( Graphics::getBrush(basicLayer->getName()) );
|
||||||
|
|
||||||
|
set<Selector*>::iterator iselector = _selectors.begin ();
|
||||||
|
for ( ; iselector != _selectors.end() ; iselector++ ) {
|
||||||
|
Occurrence occurrence = (*iselector)->getOccurrence();
|
||||||
|
Transformation transformation = occurrence.getPath().getTransformation();
|
||||||
|
|
||||||
|
Instance* instance = dynamic_cast<Instance*>(occurrence.getEntity());
|
||||||
|
if ( instance ) {
|
||||||
|
drawInstance ( instance, basicLayer, redrawBox, transformation );
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
drawGo ( dynamic_cast<Go*>(occurrence.getEntity()), basicLayer, redrawBox, transformation );
|
||||||
|
}
|
||||||
|
end_for;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_drawingPlanes.painterEnd ();
|
||||||
|
_selectionHasChanged = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void CellWidget::drawBoundaries ( const Cell* cell
|
void CellWidget::drawBoundaries ( const Cell* cell
|
||||||
, const Box& redrawArea
|
, const Box& redrawArea
|
||||||
, const Transformation& transformation
|
, const Transformation& transformation
|
||||||
|
@ -387,19 +582,19 @@ namespace Hurricane {
|
||||||
void CellWidget::drawBox ( const Box& box )
|
void CellWidget::drawBox ( const Box& box )
|
||||||
{
|
{
|
||||||
_redrawRectCount++;
|
_redrawRectCount++;
|
||||||
_drawingPainter.drawRect ( dbuToDisplayRect(box) );
|
_drawingPlanes.painter().drawRect ( dbuToDisplayRect(box) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void CellWidget::drawLine ( const Point& p1, const Point& p2 )
|
void CellWidget::drawLine ( const Point& p1, const Point& p2 )
|
||||||
{
|
{
|
||||||
_drawingPainter.drawLine ( dbuToDisplayPoint(p1), dbuToDisplayPoint(p2) );
|
_drawingPlanes.painter().drawLine ( dbuToDisplayPoint(p1), dbuToDisplayPoint(p2) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void CellWidget::drawGrid ()
|
void CellWidget::drawGrid ()
|
||||||
{
|
{
|
||||||
_screenPainter.setPen ( Graphics::getPen("grid") );
|
_drawingPlanes.painter(2).setPen ( Graphics::getPen("grid") );
|
||||||
|
|
||||||
DbU::Unit gridStep = DbU::getSnapGridStep();
|
DbU::Unit gridStep = DbU::getSnapGridStep();
|
||||||
DbU::Unit superGridStep = gridStep*5;
|
DbU::Unit superGridStep = gridStep*5;
|
||||||
|
@ -417,10 +612,10 @@ namespace Hurricane {
|
||||||
) {
|
) {
|
||||||
center = dbuToScreenPoint(xGrid,yGrid);
|
center = dbuToScreenPoint(xGrid,yGrid);
|
||||||
if ( (xGrid % superGridStep) || (yGrid % superGridStep) )
|
if ( (xGrid % superGridStep) || (yGrid % superGridStep) )
|
||||||
_screenPainter.drawPoint ( center );
|
_drawingPlanes.painter(2).drawPoint ( center );
|
||||||
else {
|
else {
|
||||||
_screenPainter.drawLine ( center.x()-3, center.y() , center.x()+3, center.y() );
|
_drawingPlanes.painter(2).drawLine ( center.x()-3, center.y() , center.x()+3, center.y() );
|
||||||
_screenPainter.drawLine ( center.x() , center.y()-3, center.x() , center.y()+3 );
|
_drawingPlanes.painter(2).drawLine ( center.x() , center.y()-3, center.x() , center.y()+3 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -494,9 +689,9 @@ namespace Hurricane {
|
||||||
_offsetVA.ry() = _stripWidth;
|
_offsetVA.ry() = _stripWidth;
|
||||||
|
|
||||||
DbU::Unit xmin = (DbU::Unit)( _visibleArea.getXMin() - ((float)_offsetVA.x()/_scale) );
|
DbU::Unit xmin = (DbU::Unit)( _visibleArea.getXMin() - ((float)_offsetVA.x()/_scale) );
|
||||||
DbU::Unit xmax = (DbU::Unit)( xmin + ((float)_drawingBuffer.width()/_scale) ) ;
|
DbU::Unit xmax = (DbU::Unit)( xmin + ((float)_drawingPlanes.width()/_scale) ) ;
|
||||||
DbU::Unit ymax = (DbU::Unit)( _visibleArea.getYMax() + ((float)_offsetVA.y()/_scale) );
|
DbU::Unit ymax = (DbU::Unit)( _visibleArea.getYMax() + ((float)_offsetVA.y()/_scale) );
|
||||||
DbU::Unit ymin = (DbU::Unit)( ymax - ((float)_drawingBuffer.height()/_scale) ) ;
|
DbU::Unit ymin = (DbU::Unit)( ymax - ((float)_drawingPlanes.height()/_scale) ) ;
|
||||||
|
|
||||||
_displayArea = Box ( xmin, ymin, xmax, ymax );
|
_displayArea = Box ( xmin, ymin, xmax, ymax );
|
||||||
|
|
||||||
|
@ -527,7 +722,7 @@ namespace Hurricane {
|
||||||
void CellWidget::reframe ( const Box& box )
|
void CellWidget::reframe ( const Box& box )
|
||||||
{
|
{
|
||||||
//cerr << "CellWidget::reframe() - " << box << endl;
|
//cerr << "CellWidget::reframe() - " << box << endl;
|
||||||
//cerr << " widget size := " << _drawingBuffer.width() << "x" << _drawingBuffer.height() << endl;
|
//cerr << " widget size := " << _drawingPlanes.width() << "x" << _drawingPlanes.height() << endl;
|
||||||
|
|
||||||
int width = this->width ();
|
int width = this->width ();
|
||||||
int height = this->height ();
|
int height = this->height ();
|
||||||
|
@ -567,20 +762,13 @@ namespace Hurricane {
|
||||||
_displayArea.translate ( - (DbU::Unit)( leftShift / _scale ) , 0 );
|
_displayArea.translate ( - (DbU::Unit)( leftShift / _scale ) , 0 );
|
||||||
_offsetVA.rx() -= dx - leftShift;
|
_offsetVA.rx() -= dx - leftShift;
|
||||||
|
|
||||||
if ( leftShift >= _drawingBuffer.width() ) {
|
if ( leftShift >= _drawingPlanes.width() ) {
|
||||||
redraw ();
|
redraw ();
|
||||||
} else {
|
} else {
|
||||||
//cerr << "Left Shift " << leftShift << " (offset: " << _offsetVA.rx() << ")" << endl;
|
_drawingPlanes.shiftLeft ( leftShift );
|
||||||
_drawingPainter.begin ( &_drawingBuffer );
|
|
||||||
_drawingPainter.drawPixmap ( leftShift, 0
|
|
||||||
, _drawingBuffer
|
|
||||||
, 0, 0
|
|
||||||
, _drawingBuffer.width()-leftShift, _drawingBuffer.height()
|
|
||||||
);
|
|
||||||
_drawingPainter.end ();
|
|
||||||
|
|
||||||
redraw ( QRect ( QPoint ( 0, 0 )
|
redraw ( QRect ( QPoint ( 0, 0 )
|
||||||
, QSize ( leftShift, _drawingBuffer.height() )) );
|
, QSize ( leftShift, _drawingPlanes.height() )) );
|
||||||
}
|
}
|
||||||
|
|
||||||
assert ( _offsetVA.rx() >= 0 );
|
assert ( _offsetVA.rx() >= 0 );
|
||||||
|
@ -598,20 +786,13 @@ namespace Hurricane {
|
||||||
|
|
||||||
//cerr << " _displayArea: " << _displayArea << endl;
|
//cerr << " _displayArea: " << _displayArea << endl;
|
||||||
|
|
||||||
if ( rightShift >= _drawingBuffer.width() ) {
|
if ( rightShift >= _drawingPlanes.width() ) {
|
||||||
redraw ();
|
redraw ();
|
||||||
} else {
|
} else {
|
||||||
//cerr << " Right Shift " << rightShift << " (offset: " << _offsetVA.rx() << ")" << endl;
|
_drawingPlanes.shiftRight ( rightShift );
|
||||||
_drawingPainter.begin ( &_drawingBuffer );
|
|
||||||
_drawingPainter.drawPixmap ( 0, 0
|
|
||||||
, _drawingBuffer
|
|
||||||
, rightShift, 0
|
|
||||||
, _drawingBuffer.width()-rightShift, _drawingBuffer.height()
|
|
||||||
);
|
|
||||||
_drawingPainter.end ();
|
|
||||||
|
|
||||||
redraw ( QRect ( QPoint ( _drawingBuffer.width()-rightShift, 0 )
|
redraw ( QRect ( QPoint ( _drawingPlanes.width()-rightShift, 0 )
|
||||||
, QSize ( rightShift, _drawingBuffer.height() )) );
|
, QSize ( rightShift, _drawingPlanes.height() )) );
|
||||||
}
|
}
|
||||||
|
|
||||||
assert ( _offsetVA.rx() >= 0 );
|
assert ( _offsetVA.rx() >= 0 );
|
||||||
|
@ -627,20 +808,13 @@ namespace Hurricane {
|
||||||
_displayArea.translate ( 0, (DbU::Unit)( upShift / _scale ) );
|
_displayArea.translate ( 0, (DbU::Unit)( upShift / _scale ) );
|
||||||
_offsetVA.ry() -= dy - upShift;
|
_offsetVA.ry() -= dy - upShift;
|
||||||
|
|
||||||
if ( upShift >= _drawingBuffer.height() ) {
|
if ( upShift >= _drawingPlanes.height() ) {
|
||||||
redraw ();
|
redraw ();
|
||||||
} else {
|
} else {
|
||||||
//cerr << "Left Shift " << upShift << " (offset: " << _offsetVA.ry() << ")" << endl;
|
_drawingPlanes.shiftUp ( upShift );
|
||||||
_drawingPainter.begin ( &_drawingBuffer );
|
|
||||||
_drawingPainter.drawPixmap ( 0, upShift
|
|
||||||
, _drawingBuffer
|
|
||||||
, 0, 0
|
|
||||||
, _drawingBuffer.width(), _drawingBuffer.height()-upShift
|
|
||||||
);
|
|
||||||
_drawingPainter.end ();
|
|
||||||
|
|
||||||
redraw ( QRect ( QPoint ( 0, 0 )
|
redraw ( QRect ( QPoint ( 0, 0 )
|
||||||
, QSize ( _drawingBuffer.width(), upShift )) );
|
, QSize ( _drawingPlanes.width(), upShift )) );
|
||||||
}
|
}
|
||||||
|
|
||||||
assert ( _offsetVA.ry() >= 0 );
|
assert ( _offsetVA.ry() >= 0 );
|
||||||
|
@ -656,20 +830,13 @@ namespace Hurricane {
|
||||||
_displayArea.translate ( 0, - (DbU::Unit)( downShift / _scale ) );
|
_displayArea.translate ( 0, - (DbU::Unit)( downShift / _scale ) );
|
||||||
_offsetVA.ry() += dy - downShift;
|
_offsetVA.ry() += dy - downShift;
|
||||||
|
|
||||||
if ( downShift >= _drawingBuffer.height() ) {
|
if ( downShift >= _drawingPlanes.height() ) {
|
||||||
redraw ();
|
redraw ();
|
||||||
} else {
|
} else {
|
||||||
//cerr << "Right Shift " << downShift << " (offset: " << _offsetVA.ry() << ")" << endl;
|
_drawingPlanes.shiftDown ( downShift );
|
||||||
_drawingPainter.begin ( &_drawingBuffer );
|
|
||||||
_drawingPainter.drawPixmap ( 0, 0
|
|
||||||
, _drawingBuffer
|
|
||||||
, 0, downShift
|
|
||||||
, _drawingBuffer.width(), _drawingBuffer.height()-downShift
|
|
||||||
);
|
|
||||||
_drawingPainter.end ();
|
|
||||||
|
|
||||||
redraw ( QRect ( QPoint ( 0, _drawingBuffer.height()-downShift )
|
redraw ( QRect ( QPoint ( 0, _drawingPlanes.height()-downShift )
|
||||||
, QSize ( _drawingBuffer.width(), downShift )) );
|
, QSize ( _drawingPlanes.width(), downShift )) );
|
||||||
}
|
}
|
||||||
|
|
||||||
assert ( _offsetVA.ry() >= 0 );
|
assert ( _offsetVA.ry() >= 0 );
|
||||||
|
@ -678,14 +845,13 @@ namespace Hurricane {
|
||||||
|
|
||||||
void CellWidget::paintEvent ( QPaintEvent* )
|
void CellWidget::paintEvent ( QPaintEvent* )
|
||||||
{
|
{
|
||||||
_screenPainter.begin ( this );
|
_drawingPlanes.painterBegin ( 2 );
|
||||||
|
_drawingPlanes.copyToScreen ();
|
||||||
copyToScreen ();
|
|
||||||
|
|
||||||
if ( isDrawable("grid") ) drawGrid ();
|
if ( isDrawable("grid") ) drawGrid ();
|
||||||
if ( isDrawable("spot") ) _spot.moveTo ( _lastMousePosition );
|
if ( isDrawable("spot") ) _spot.moveTo ( _lastMousePosition );
|
||||||
|
|
||||||
_screenPainter.end ();
|
_drawingPlanes.painterEnd ( 2 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -697,11 +863,11 @@ namespace Hurricane {
|
||||||
uaSize.rwidth () += 2*_stripWidth;
|
uaSize.rwidth () += 2*_stripWidth;
|
||||||
uaSize.rheight() += 2*_stripWidth;
|
uaSize.rheight() += 2*_stripWidth;
|
||||||
|
|
||||||
if ( uaSize.width () > _drawingBuffer.width () )
|
if ( uaSize.width () > _drawingPlanes.width () )
|
||||||
uaDelta.rwidth () = uaSize.width () - _drawingBuffer.width ();
|
uaDelta.rwidth () = uaSize.width () - _drawingPlanes.width ();
|
||||||
|
|
||||||
if ( uaSize.height() > _drawingBuffer.height() )
|
if ( uaSize.height() > _drawingPlanes.height() )
|
||||||
uaDelta.rheight() = uaSize.height() - _drawingBuffer.height();
|
uaDelta.rheight() = uaSize.height() - _drawingPlanes.height();
|
||||||
|
|
||||||
//cerr << "New UA widget size: " << uaSize.width() << "x" << uaSize.height() << endl;
|
//cerr << "New UA widget size: " << uaSize.width() << "x" << uaSize.height() << endl;
|
||||||
|
|
||||||
|
@ -710,12 +876,12 @@ namespace Hurricane {
|
||||||
_visibleArea.inflate ( 0, 0, (DbU::Unit)(uaDelta.width()/_scale), (DbU::Unit)(uaDelta.height()/_scale) );
|
_visibleArea.inflate ( 0, 0, (DbU::Unit)(uaDelta.width()/_scale), (DbU::Unit)(uaDelta.height()/_scale) );
|
||||||
//cerr << "new " << _displayArea << endl;
|
//cerr << "new " << _displayArea << endl;
|
||||||
|
|
||||||
//cerr << "Previous buffer size: " << _drawingBuffer.width () << "x"
|
//cerr << "Previous buffer size: " << _drawingPlanes.width () << "x"
|
||||||
// << _drawingBuffer.height() << endl;
|
// << _drawingPlanes.height() << endl;
|
||||||
|
|
||||||
QSize bufferSize ( ( ( uaSize.width () / _stripWidth ) + 1 ) * _stripWidth
|
QSize bufferSize ( ( ( uaSize.width () / _stripWidth ) + 1 ) * _stripWidth
|
||||||
, ( ( uaSize.height() / _stripWidth ) + 1 ) * _stripWidth );
|
, ( ( uaSize.height() / _stripWidth ) + 1 ) * _stripWidth );
|
||||||
_drawingBuffer = QPixmap ( bufferSize );
|
_drawingPlanes.resize ( bufferSize );
|
||||||
|
|
||||||
//cerr << "Effective buffer resize to: " << bufferSize.width() << "x"
|
//cerr << "Effective buffer resize to: " << bufferSize.width() << "x"
|
||||||
// << bufferSize.height() << endl;
|
// << bufferSize.height() << endl;
|
||||||
|
@ -733,6 +899,7 @@ namespace Hurricane {
|
||||||
case Qt::Key_Right: goRight (); break;
|
case Qt::Key_Right: goRight (); break;
|
||||||
case Qt::Key_Z: setScale ( _scale*2.0 ); break;
|
case Qt::Key_Z: setScale ( _scale*2.0 ); break;
|
||||||
case Qt::Key_M: setScale ( _scale/2.0 ); break;
|
case Qt::Key_M: setScale ( _scale/2.0 ); break;
|
||||||
|
default: QWidget::keyPressEvent ( event );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -835,4 +1002,72 @@ namespace Hurricane {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CellWidget::select ( const Net* net, bool delayRedraw )
|
||||||
|
{
|
||||||
|
for_each_component ( component, net->getComponents() ) {
|
||||||
|
Occurrence occurrence ( component );
|
||||||
|
select ( occurrence );
|
||||||
|
end_for;
|
||||||
|
}
|
||||||
|
if ( !delayRedraw ) redraw ();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CellWidget::select ( Occurrence& occurrence )
|
||||||
|
{
|
||||||
|
if ( !occurrence.isValid() )
|
||||||
|
throw Error ( "Can't select occurrence : invalid occurrence" );
|
||||||
|
|
||||||
|
if ( occurrence.getOwnerCell() != getCell() )
|
||||||
|
throw Error ( "Can't select occurrence : incompatible occurrence" );
|
||||||
|
|
||||||
|
Property* property = occurrence.getProperty ( Selector::getPropertyName() );
|
||||||
|
Selector* selector = NULL;
|
||||||
|
if ( !property )
|
||||||
|
selector = Selector::create ( occurrence );
|
||||||
|
else {
|
||||||
|
selector = dynamic_cast<Selector*>(property);
|
||||||
|
if ( !selector )
|
||||||
|
throw Error ( "Abnormal property named " + getString(Selector::getPropertyName()) );
|
||||||
|
}
|
||||||
|
|
||||||
|
selector->attachTo(this);
|
||||||
|
|
||||||
|
_selectionHasChanged = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CellWidget::unselect ( Occurrence& occurrence )
|
||||||
|
{
|
||||||
|
if ( !occurrence.isValid() )
|
||||||
|
throw Error ( "Can't unselect occurrence : invalid occurrence" );
|
||||||
|
|
||||||
|
if ( occurrence.getOwnerCell() != getCell() )
|
||||||
|
throw Error ( "Can't unselect occurrence : incompatible occurrence" );
|
||||||
|
|
||||||
|
Property* property = occurrence.getProperty ( Selector::getPropertyName() );
|
||||||
|
if ( property ) {
|
||||||
|
Selector* selector = dynamic_cast<Selector*>(property);
|
||||||
|
if ( !selector )
|
||||||
|
throw Error ( "Abnormal property named " + getString(Selector::getPropertyName()) );
|
||||||
|
|
||||||
|
selector->detachFrom(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
_selectionHasChanged = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CellWidget::unselectAll ( bool delayRedraw )
|
||||||
|
{
|
||||||
|
set<Selector*>::iterator iselector = _selectors.begin ();
|
||||||
|
for ( ; iselector != _selectors.end() ; iselector++ ) {
|
||||||
|
(*iselector)->detachFrom ( this );
|
||||||
|
}
|
||||||
|
|
||||||
|
_selectionHasChanged = true;
|
||||||
|
if ( !delayRedraw ) redraw ();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
} // End of Hurricane namespace.
|
} // End of Hurricane namespace.
|
||||||
|
|
|
@ -1,5 +1,58 @@
|
||||||
|
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./DisplayStyle.cpp" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
|
||||||
|
|
||||||
# include <cassert>
|
# include <cassert>
|
||||||
|
@ -67,6 +120,28 @@ namespace Hurricane {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QColor DrawingStyle::getColor ( int darkening ) const
|
||||||
|
{
|
||||||
|
return _color.darker ( darkening );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QPen DrawingStyle::getPen ( int darkening ) const
|
||||||
|
{
|
||||||
|
QPen pen ( _pen );
|
||||||
|
pen.setColor ( _color.darker(darkening) );
|
||||||
|
return pen;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QBrush DrawingStyle::getBrush ( int darkening ) const
|
||||||
|
{
|
||||||
|
QBrush brush ( _brush );
|
||||||
|
brush.setColor ( _color.darker(darkening) );
|
||||||
|
return brush;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
DrawingStyle::~DrawingStyle ()
|
DrawingStyle::~DrawingStyle ()
|
||||||
{
|
{
|
||||||
assert ( _refcount == 0 );
|
assert ( _refcount == 0 );
|
||||||
|
@ -207,21 +282,21 @@ namespace Hurricane {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const QColor& DisplayStyle::getColor ( const Name& key ) const
|
QColor DisplayStyle::getColor ( const Name& key, int darkening ) const
|
||||||
{
|
{
|
||||||
return find(key)->getColor();
|
return find(key)->getColor(darkening);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const QPen& DisplayStyle::getPen ( const Name& key ) const
|
QPen DisplayStyle::getPen ( const Name& key, int darkening ) const
|
||||||
{
|
{
|
||||||
return find(key)->getPen();
|
return find(key)->getPen(darkening);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const QBrush& DisplayStyle::getBrush ( const Name& key ) const
|
QBrush DisplayStyle::getBrush ( const Name& key, int darkening ) const
|
||||||
{
|
{
|
||||||
return find(key)->getBrush();
|
return find(key)->getBrush(darkening);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,58 @@
|
||||||
|
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./DynamicLabel.cpp" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
|
||||||
|
|
||||||
# include <QFontMetrics>
|
# include <QFontMetrics>
|
||||||
|
|
|
@ -1,6 +1,58 @@
|
||||||
|
|
||||||
|
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./Graphics.cpp" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
|
||||||
|
|
||||||
# include <assert.h>
|
# include <assert.h>
|
||||||
|
@ -143,21 +195,21 @@ namespace Hurricane {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const QColor& Graphics::getColor ( const Name& key )
|
QColor Graphics::getColor ( const Name& key, int darkening )
|
||||||
{
|
{
|
||||||
return getGraphics()->_getColor ( key );
|
return getGraphics()->_getColor ( key, darkening );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const QPen& Graphics::getPen ( const Name& key )
|
QPen Graphics::getPen ( const Name& key, int darkening )
|
||||||
{
|
{
|
||||||
return getGraphics()->_getPen ( key );
|
return getGraphics()->_getPen ( key, darkening );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const QBrush& Graphics::getBrush ( const Name& key )
|
QBrush Graphics::getBrush ( const Name& key, int darkening )
|
||||||
{
|
{
|
||||||
return getGraphics()->_getBrush ( key );
|
return getGraphics()->_getBrush ( key, darkening );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,58 @@
|
||||||
|
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./GroupPaletteEntry.cpp" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
|
||||||
|
|
||||||
# include <QPushButton>
|
# include <QPushButton>
|
||||||
|
|
|
@ -1,4 +1,58 @@
|
||||||
|
|
||||||
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./HInspectorWidget.cpp" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
|
||||||
#include <QFontMetrics>
|
#include <QFontMetrics>
|
||||||
#include <QComboBox>
|
#include <QComboBox>
|
||||||
|
@ -248,7 +302,7 @@ namespace Hurricane {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void HInspectorWidget::keyPressEvent(QKeyEvent *event)
|
void HInspectorWidget::keyPressEvent ( QKeyEvent *event )
|
||||||
{
|
{
|
||||||
if ( event->key() == Qt::Key_Right ) {
|
if ( event->key() == Qt::Key_Right ) {
|
||||||
QModelIndex index = _slotsView->currentIndex();
|
QModelIndex index = _slotsView->currentIndex();
|
||||||
|
|
|
@ -1,5 +1,58 @@
|
||||||
|
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./HMousePosition.cpp" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
|
||||||
|
|
||||||
# include <QHBoxLayout>
|
# include <QHBoxLayout>
|
||||||
|
|
|
@ -0,0 +1,165 @@
|
||||||
|
|
||||||
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./HNetlist.cpp" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
|
||||||
|
#include <QFontMetrics>
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QLineEdit>
|
||||||
|
#include <QHeaderView>
|
||||||
|
#include <QKeyEvent>
|
||||||
|
#include <QGroupBox>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
|
#include "hurricane/Commons.h"
|
||||||
|
#include "hurricane/Net.h"
|
||||||
|
|
||||||
|
#include "hurricane/viewer/Graphics.h"
|
||||||
|
#include "hurricane/viewer/HNetlistModel.h"
|
||||||
|
#include "hurricane/viewer/HNetlist.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace Hurricane {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
HNetlist::HNetlist ( QWidget* parent )
|
||||||
|
: QWidget(parent)
|
||||||
|
, _netlistModel(NULL)
|
||||||
|
, _sortModel(NULL)
|
||||||
|
, _netlistView(NULL)
|
||||||
|
, _rowHeight(20)
|
||||||
|
, _cellWidget(NULL)
|
||||||
|
{
|
||||||
|
setAttribute ( Qt::WA_DeleteOnClose );
|
||||||
|
|
||||||
|
_rowHeight = QFontMetrics(Graphics::getFixedFont()).height() + 4;
|
||||||
|
|
||||||
|
_netlistModel = new HNetlistModel ( this );
|
||||||
|
|
||||||
|
_sortModel = new QSortFilterProxyModel ( this );
|
||||||
|
_sortModel->setSourceModel ( _netlistModel );
|
||||||
|
_sortModel->setDynamicSortFilter ( true );
|
||||||
|
_sortModel->setFilterKeyColumn ( 0 );
|
||||||
|
|
||||||
|
_netlistView = new QTableView(this);
|
||||||
|
_netlistView->setShowGrid(false);
|
||||||
|
_netlistView->setAlternatingRowColors(true);
|
||||||
|
_netlistView->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||||
|
_netlistView->setSortingEnabled(true);
|
||||||
|
_netlistView->setModel ( _sortModel );
|
||||||
|
_netlistView->horizontalHeader()->setStretchLastSection ( true );
|
||||||
|
_netlistView->resizeColumnToContents ( 0 );
|
||||||
|
|
||||||
|
QHeaderView* horizontalHeader = _netlistView->horizontalHeader ();
|
||||||
|
horizontalHeader->setStretchLastSection ( true );
|
||||||
|
horizontalHeader->setMinimumSectionSize ( 200 );
|
||||||
|
|
||||||
|
QHeaderView* verticalHeader = _netlistView->verticalHeader ();
|
||||||
|
verticalHeader->setVisible ( false );
|
||||||
|
|
||||||
|
_filterPatternLineEdit = new QLineEdit(this);
|
||||||
|
QLabel* filterPatternLabel = new QLabel(tr("&Filter pattern:"), this);
|
||||||
|
filterPatternLabel->setBuddy(_filterPatternLineEdit);
|
||||||
|
|
||||||
|
QGridLayout* inspectorLayout = new QGridLayout();
|
||||||
|
inspectorLayout->addWidget(_netlistView , 1, 0, 1, 2);
|
||||||
|
inspectorLayout->addWidget(filterPatternLabel , 2, 0);
|
||||||
|
inspectorLayout->addWidget(_filterPatternLineEdit, 2, 1);
|
||||||
|
|
||||||
|
setLayout ( inspectorLayout );
|
||||||
|
|
||||||
|
connect ( _filterPatternLineEdit, SIGNAL(textChanged(const QString &))
|
||||||
|
, this , SLOT(textFilterChanged())
|
||||||
|
);
|
||||||
|
connect ( _netlistView , SIGNAL(activated(const QModelIndex&))
|
||||||
|
, this , SLOT(selectNet(const QModelIndex&))
|
||||||
|
);
|
||||||
|
|
||||||
|
setWindowTitle(tr("Netlist"));
|
||||||
|
resize(500, 300);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void HNetlist::selectNet ( const QModelIndex& index )
|
||||||
|
{
|
||||||
|
const Net* net = _netlistModel->getNet ( _sortModel->mapToSource(index).row() );
|
||||||
|
|
||||||
|
if ( _cellWidget && net ) {
|
||||||
|
_cellWidget->unselectAll ();
|
||||||
|
_cellWidget->select ( net );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void HNetlist::keyPressEvent ( QKeyEvent* event )
|
||||||
|
{
|
||||||
|
cerr << "keyPressEvent" << endl;
|
||||||
|
|
||||||
|
if ( event->key() == Qt::Key_Left ) {
|
||||||
|
cerr << "Key Left Pressed." << endl;
|
||||||
|
} else {
|
||||||
|
event->ignore();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void HNetlist::textFilterChanged ()
|
||||||
|
{
|
||||||
|
_sortModel->setFilterRegExp ( _filterPatternLineEdit->text() );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} // End of Hurricane namespace.
|
|
@ -0,0 +1,147 @@
|
||||||
|
|
||||||
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./HNetlistModel.cpp" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
#include <QFont>
|
||||||
|
#include <QApplication>
|
||||||
|
|
||||||
|
#include "hurricane/Name.h"
|
||||||
|
#include "hurricane/Net.h"
|
||||||
|
#include "hurricane/Cell.h"
|
||||||
|
#include "hurricane/viewer/Graphics.h"
|
||||||
|
#include "hurricane/viewer/NetInformations.h"
|
||||||
|
#include "hurricane/viewer/HNetlistModel.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace Hurricane {
|
||||||
|
|
||||||
|
|
||||||
|
HNetlistModel::HNetlistModel ( QObject* parent )
|
||||||
|
: QAbstractTableModel(parent)
|
||||||
|
, _cell(NULL)
|
||||||
|
, _netlist(NULL)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
|
||||||
|
HNetlistModel::~HNetlistModel ()
|
||||||
|
{
|
||||||
|
if ( _netlist ) delete _netlist;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QVariant HNetlistModel::data ( const QModelIndex& index, int role ) const
|
||||||
|
{
|
||||||
|
static QFont nameFont = Graphics::getFixedFont ( QFont::Bold );
|
||||||
|
static QFont valueFont = Graphics::getFixedFont ( QFont::Normal, true );
|
||||||
|
|
||||||
|
if ( !index.isValid() ) return QVariant ();
|
||||||
|
|
||||||
|
if ( role == Qt::SizeHintRole ) {
|
||||||
|
switch (index.column()) {
|
||||||
|
case 0: return 200;
|
||||||
|
default: return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( role == Qt::FontRole ) {
|
||||||
|
switch (index.column()) {
|
||||||
|
case 0: return nameFont;
|
||||||
|
default: return valueFont;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( role == Qt::DisplayRole ) {
|
||||||
|
int row = index.row ();
|
||||||
|
return _netlist->getRow(row)->getColumn(index.column());
|
||||||
|
}
|
||||||
|
return QVariant();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QVariant HNetlistModel::headerData ( int section
|
||||||
|
, Qt::Orientation orientation
|
||||||
|
, int role ) const
|
||||||
|
{
|
||||||
|
if ( !_netlist ) return QVariant();
|
||||||
|
|
||||||
|
if ( ( orientation == Qt::Vertical )
|
||||||
|
|| ( section >= _netlist->getColumnCount() )
|
||||||
|
|| (role != Qt::DisplayRole) )
|
||||||
|
return QVariant();
|
||||||
|
|
||||||
|
return _netlist->getColumnName(section);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int HNetlistModel::rowCount ( const QModelIndex& parent ) const
|
||||||
|
{
|
||||||
|
return (_netlist) ? _netlist->size() : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int HNetlistModel::columnCount ( const QModelIndex& parent ) const
|
||||||
|
{
|
||||||
|
return (_netlist) ? _netlist->getColumnCount() : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const Net* HNetlistModel::getNet ( int row )
|
||||||
|
{
|
||||||
|
if ( !_netlist || ( row >= (int)_netlist->size() ) ) return NULL;
|
||||||
|
|
||||||
|
return _netlist->getRow(row)->getNet();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} // End of Hurricane namespace.
|
|
@ -1,5 +1,58 @@
|
||||||
|
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./HPalette.cpp" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
|
||||||
|
|
||||||
# include <vector>
|
# include <vector>
|
||||||
|
|
|
@ -1,5 +1,58 @@
|
||||||
|
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./HPaletteEntry.cpp" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
|
||||||
|
|
||||||
# include <QPainter>
|
# include <QPainter>
|
||||||
|
|
|
@ -1,5 +1,58 @@
|
||||||
|
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./LayerPaletteEntry.cpp" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
|
||||||
|
|
||||||
# include <QCheckBox>
|
# include <QCheckBox>
|
||||||
|
|
|
@ -0,0 +1,147 @@
|
||||||
|
|
||||||
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./NetInformations.cpp" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
#include "hurricane/Name.h"
|
||||||
|
#include "hurricane/Net.h"
|
||||||
|
#include "hurricane/viewer/NetInformations.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace Hurricane {
|
||||||
|
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------
|
||||||
|
// Class : "NetInformations"
|
||||||
|
|
||||||
|
|
||||||
|
int NetInformations::getColumnCount ()
|
||||||
|
{ return 1; }
|
||||||
|
|
||||||
|
|
||||||
|
QVariant NetInformations::getColumnName ( int column )
|
||||||
|
{
|
||||||
|
switch ( column ) {
|
||||||
|
case 0: return QVariant(QObject::tr("Net"));
|
||||||
|
}
|
||||||
|
return QVariant(QObject::tr("Column Out of Bound"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QVariant NetInformations::getColumn ( int column )
|
||||||
|
{
|
||||||
|
switch ( column ) {
|
||||||
|
case 0: return QVariant(getString(getName()).c_str());
|
||||||
|
}
|
||||||
|
return QVariant(QObject::tr("Column Out of Bound"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
NetInformations::NetInformations ( const Net* net )
|
||||||
|
: _net(net)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
|
||||||
|
NetInformations::~NetInformations ()
|
||||||
|
{ }
|
||||||
|
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------
|
||||||
|
// Class : "SimpleNetInformations"
|
||||||
|
|
||||||
|
|
||||||
|
int SimpleNetInformations::getColumnCount ()
|
||||||
|
{ return 2; }
|
||||||
|
|
||||||
|
|
||||||
|
QVariant SimpleNetInformations::getColumnName ( int column )
|
||||||
|
{
|
||||||
|
switch ( column ) {
|
||||||
|
case 0: return QVariant(QObject::tr("Net"));
|
||||||
|
case 1: return QVariant(QObject::tr("Plugs"));
|
||||||
|
}
|
||||||
|
return QVariant(QObject::tr("Column Out of Bound"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QVariant SimpleNetInformations::getColumn ( int column )
|
||||||
|
{
|
||||||
|
switch ( column ) {
|
||||||
|
case 0: return QVariant(getString(getName()).c_str());
|
||||||
|
case 1: return QVariant(getPlugsCount());
|
||||||
|
}
|
||||||
|
return QVariant(QObject::tr("Column Out of Bound"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SimpleNetInformations::SimpleNetInformations ( const Net* net )
|
||||||
|
: NetInformations(net)
|
||||||
|
, _plugsCount(_net->getPlugs().getSize())
|
||||||
|
{ }
|
||||||
|
|
||||||
|
|
||||||
|
SimpleNetInformations::~SimpleNetInformations ()
|
||||||
|
{ }
|
||||||
|
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------
|
||||||
|
// Class : "AbstractNetInformationsVector"
|
||||||
|
|
||||||
|
|
||||||
|
AbstractNetInformationsVector::~AbstractNetInformationsVector ()
|
||||||
|
{ }
|
||||||
|
|
||||||
|
|
||||||
|
} // End of Hurricane namespace.
|
|
@ -1,4 +1,58 @@
|
||||||
|
|
||||||
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./RecordModel.cpp" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
#include <QFont>
|
#include <QFont>
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,58 @@
|
||||||
|
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./ScreenUtilisties.cpp" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
|
||||||
|
|
||||||
# include <QBitmap>
|
# include <QBitmap>
|
||||||
|
|
|
@ -0,0 +1,140 @@
|
||||||
|
|
||||||
|
|
||||||
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Hurricane Software.
|
||||||
|
// Copyright (c) BULL S.A. 2000-2004, 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 : Remy Escassut |
|
||||||
|
// | E-mail : Jean-Paul.Chaput@lip6.fr |
|
||||||
|
// | =============================================================== |
|
||||||
|
// | C++ Module : "./Selector.cpp" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include "hurricane/Quark.h"
|
||||||
|
#include "hurricane/Error.h"
|
||||||
|
#include "hurricane/viewer/Selector.h"
|
||||||
|
#include "hurricane/viewer/CellWidget.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace Hurricane {
|
||||||
|
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------
|
||||||
|
// Class : "Hurricane::Selector".
|
||||||
|
|
||||||
|
|
||||||
|
const Name Selector::_propertyName = _PName ( "Selector" );
|
||||||
|
|
||||||
|
|
||||||
|
Selector::Selector () : PrivateProperty()
|
||||||
|
, _cellWidgets()
|
||||||
|
{ }
|
||||||
|
|
||||||
|
|
||||||
|
string Selector::_getTypeName () const
|
||||||
|
{ return _TName("Selector"); }
|
||||||
|
|
||||||
|
|
||||||
|
const Name& Selector::getPropertyName ()
|
||||||
|
{ return _propertyName; }
|
||||||
|
|
||||||
|
|
||||||
|
Name Selector::getName () const
|
||||||
|
{ return Selector::getPropertyName(); }
|
||||||
|
|
||||||
|
|
||||||
|
Occurrence Selector::getOccurrence () const
|
||||||
|
{
|
||||||
|
DBo* owner = getOwner();
|
||||||
|
if (!owner) return Occurrence();
|
||||||
|
|
||||||
|
Quark* quark = dynamic_cast<Quark*>(owner);
|
||||||
|
assert ( quark );
|
||||||
|
|
||||||
|
return quark->getOccurrence();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Selector* Selector::create ( Occurrence& occurrence )
|
||||||
|
{
|
||||||
|
if ( !occurrence.isValid() )
|
||||||
|
throw Error ( "Can't create " + _TName("Selector") + " : invalid occurrence" );
|
||||||
|
|
||||||
|
if ( occurrence.getProperty(Selector::getPropertyName()) )
|
||||||
|
throw Error ( "Can't create " + _TName("Selector") + " : already exists" );
|
||||||
|
|
||||||
|
Selector* selector = new Selector();
|
||||||
|
|
||||||
|
selector->_postCreate();
|
||||||
|
occurrence.put ( selector );
|
||||||
|
|
||||||
|
return selector;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Selector::_preDestroy()
|
||||||
|
{
|
||||||
|
set<CellWidget*>::iterator it = _cellWidgets.begin ();
|
||||||
|
for ( ; it != _cellWidgets.end() ; it++ )
|
||||||
|
detachFrom ( *it, true );
|
||||||
|
|
||||||
|
PrivateProperty::_preDestroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
string Selector::_getString() const
|
||||||
|
{
|
||||||
|
return "<" + _TName("Selector") + " " + getString(getOccurrence()) + ">";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Record* Selector::_getRecord () const
|
||||||
|
{
|
||||||
|
Record* record = PrivateProperty::_getRecord();
|
||||||
|
if ( record )
|
||||||
|
record->add(getSlot("_cellWidgets", &_cellWidgets));
|
||||||
|
|
||||||
|
return record;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Selector::attachTo ( CellWidget* widget )
|
||||||
|
{
|
||||||
|
if ( !widget )
|
||||||
|
throw Error ( "Can't attach selector : null CellWidget." );
|
||||||
|
|
||||||
|
_cellWidgets.insert ( widget );
|
||||||
|
widget->getSelectorSet().insert ( this );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Selector::detachFrom ( CellWidget* widget, bool inDeletion )
|
||||||
|
{
|
||||||
|
if ( !widget )
|
||||||
|
throw Error ( "Can't detach selector : null CellWidget" );
|
||||||
|
|
||||||
|
widget->getSelectorSet().erase ( this );
|
||||||
|
_cellWidgets.erase ( widget );
|
||||||
|
|
||||||
|
if ( !inDeletion && _cellWidgets.empty() ) destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} // End of Hurricane namespace.
|
|
@ -1,5 +1,58 @@
|
||||||
|
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./ViewerPaletteEntry.cpp" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
|
||||||
|
|
||||||
# include <QCheckBox>
|
# include <QCheckBox>
|
||||||
|
|
|
@ -1,20 +1,75 @@
|
||||||
|
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./CellViewer.h" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
# ifndef __CELL_VIEWER_H__
|
#include <QAction>
|
||||||
# define __CELL_VIEWER_H__
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef __CELL_VIEWER_H__
|
||||||
|
#define __CELL_VIEWER_H__
|
||||||
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
# include <QMainWindow>
|
#include <QMainWindow>
|
||||||
|
|
||||||
|
class QEvent;
|
||||||
class QKeyEvent;
|
class QKeyEvent;
|
||||||
class QAction;
|
class QAction;
|
||||||
class QMenu;
|
class QMenu;
|
||||||
|
|
||||||
# include "hurricane/Commons.h"
|
#include "hurricane/Commons.h"
|
||||||
|
#include "hurricane/Occurrence.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -33,40 +88,54 @@ namespace Hurricane {
|
||||||
Q_OBJECT;
|
Q_OBJECT;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CellViewer ( QWidget* parent=NULL );
|
CellViewer ( QWidget* parent=NULL );
|
||||||
void setCell ( Cell* cell );
|
void setCell ( Cell* cell );
|
||||||
|
inline CellWidget* getCellWidget ();
|
||||||
|
void select ( Occurrence& occurence );
|
||||||
|
void unselect ( Occurrence& occurence );
|
||||||
|
void unselectAll ();
|
||||||
public slots:
|
public slots:
|
||||||
void runInspectorOnDataBase ();
|
void runInspectorOnDataBase ();
|
||||||
void runInspectorOnCell ();
|
void runInspectorOnCell ();
|
||||||
|
void browseNetlist ();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QAction* _openAction;
|
QAction* _openAction;
|
||||||
QAction* _nextCellAction;
|
QAction* _nextCellAction;
|
||||||
QAction* _previousCellAction;
|
QAction* _previousCellAction;
|
||||||
QAction* _nextAction;
|
QAction* _nextAction;
|
||||||
QAction* _saveAction;
|
QAction* _saveAction;
|
||||||
QAction* _exitAction;
|
QAction* _exitAction;
|
||||||
QAction* _refreshAction;
|
QAction* _refreshAction;
|
||||||
QAction* _fitToContentsAction;
|
QAction* _fitToContentsAction;
|
||||||
QAction* _runInspectorOnDataBase;
|
QAction* _showSelectionAction;
|
||||||
QAction* _runInspectorOnCell;
|
QAction* _runInspectorOnDataBase;
|
||||||
QMenu* _fileMenu;
|
QAction* _runInspectorOnCell;
|
||||||
QMenu* _viewMenu;
|
QAction* _browseNetlist;
|
||||||
QMenu* _toolsMenu;
|
QMenu* _fileMenu;
|
||||||
//MapView* _mapView;
|
QMenu* _viewMenu;
|
||||||
HPalette* _palette;
|
QMenu* _toolsMenu;
|
||||||
HMousePosition* _mousePosition;
|
//MapView* _mapView;
|
||||||
CellWidget* _cellWidget;
|
HPalette* _palette;
|
||||||
|
HMousePosition* _mousePosition;
|
||||||
|
CellWidget* _cellWidget;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void createActions ();
|
void createActions ();
|
||||||
void createMenus ();
|
void createMenus ();
|
||||||
void createLayout ();
|
void createLayout ();
|
||||||
void runInspector ( Record* record );
|
void runInspector ( Record* record );
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Inline Functions.
|
||||||
|
inline CellWidget* CellViewer::getCellWidget ()
|
||||||
|
{ return _cellWidget; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} // End of Hurricane namespace.
|
} // End of Hurricane namespace.
|
||||||
|
|
||||||
|
|
||||||
# endif
|
#endif
|
||||||
|
|
|
@ -1,5 +1,58 @@
|
||||||
|
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./CellWidget.h" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
|
||||||
|
|
||||||
# ifndef __CELL_WIDGET_H__
|
# ifndef __CELL_WIDGET_H__
|
||||||
|
@ -28,6 +81,8 @@ class QAction;
|
||||||
# include "hurricane/Transformation.h"
|
# include "hurricane/Transformation.h"
|
||||||
|
|
||||||
# include "hurricane/viewer/DisplayStyle.h"
|
# include "hurricane/viewer/DisplayStyle.h"
|
||||||
|
# include "hurricane/viewer/CellWidgets.h"
|
||||||
|
# include "hurricane/viewer/Selector.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -37,6 +92,7 @@ namespace Hurricane {
|
||||||
class Technology;
|
class Technology;
|
||||||
class BasicLayer;
|
class BasicLayer;
|
||||||
class Go;
|
class Go;
|
||||||
|
class Net;
|
||||||
class Cell;
|
class Cell;
|
||||||
class Instance;
|
class Instance;
|
||||||
class Slice;
|
class Slice;
|
||||||
|
@ -44,6 +100,7 @@ namespace Hurricane {
|
||||||
class Contact;
|
class Contact;
|
||||||
class Pad;
|
class Pad;
|
||||||
|
|
||||||
|
class Selector;
|
||||||
class HPaletteEntry;
|
class HPaletteEntry;
|
||||||
class HPalette;
|
class HPalette;
|
||||||
//class MapView;
|
//class MapView;
|
||||||
|
@ -52,6 +109,9 @@ namespace Hurricane {
|
||||||
class CellWidget : public QWidget {
|
class CellWidget : public QWidget {
|
||||||
Q_OBJECT;
|
Q_OBJECT;
|
||||||
|
|
||||||
|
private:
|
||||||
|
class DrawingPlanes;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Constructor & Destructor.
|
// Constructor & Destructor.
|
||||||
CellWidget ( QWidget* parent=NULL );
|
CellWidget ( QWidget* parent=NULL );
|
||||||
|
@ -64,6 +124,12 @@ namespace Hurricane {
|
||||||
void bindToPalette ( HPalette* palette );
|
void bindToPalette ( HPalette* palette );
|
||||||
void detachFromPalette ();
|
void detachFromPalette ();
|
||||||
inline bool showBoundaries () const;
|
inline bool showBoundaries () const;
|
||||||
|
inline set<Selector*>& getSelectorSet ();
|
||||||
|
inline bool showSelection () const;
|
||||||
|
void select ( const Net* net, bool delayRedraw=false );
|
||||||
|
void select ( Occurrence& occurence );
|
||||||
|
void unselect ( Occurrence& occurence );
|
||||||
|
void unselectAll ( bool delayRedraw=true );
|
||||||
// Painter control & Hurricane objects drawing primitives.
|
// Painter control & Hurricane objects drawing primitives.
|
||||||
void drawBoundaries ( const Cell* , const Box&, const Transformation& );
|
void drawBoundaries ( const Cell* , const Box&, const Transformation& );
|
||||||
void drawBoundaries ( const Instance*, const Box&, const Transformation& );
|
void drawBoundaries ( const Instance*, const Box&, const Transformation& );
|
||||||
|
@ -112,11 +178,13 @@ namespace Hurricane {
|
||||||
void mousePositionChanged ( const Point& position );
|
void mousePositionChanged ( const Point& position );
|
||||||
public slots:
|
public slots:
|
||||||
// Qt QWidget Slots Overload & CellWidget Specifics.
|
// Qt QWidget Slots Overload & CellWidget Specifics.
|
||||||
inline QPainter& getScreenPainter ();
|
inline DrawingPlanes& getDrawingPlanes ();
|
||||||
void redraw ( QRect redrawArea );
|
inline QPoint& getOffsetVA ();
|
||||||
|
void setShowSelection ( bool state );
|
||||||
inline void redraw ();
|
inline void redraw ();
|
||||||
inline void copyToScreen ( int sx, int sy, int h, int w );
|
void redraw ( QRect redrawArea );
|
||||||
inline void copyToScreen ();
|
inline void redrawSelection ();
|
||||||
|
void redrawSelection ( QRect redrawArea );
|
||||||
void goLeft ( int dx = 0 );
|
void goLeft ( int dx = 0 );
|
||||||
void goRight ( int dx = 0 );
|
void goRight ( int dx = 0 );
|
||||||
void goUp ( int dy = 0 );
|
void goUp ( int dy = 0 );
|
||||||
|
@ -144,115 +212,235 @@ namespace Hurricane {
|
||||||
bool _restore;
|
bool _restore;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private:
|
||||||
|
class DrawingPlanes {
|
||||||
|
public:
|
||||||
|
DrawingPlanes ( const QSize& size, CellWidget* cw );
|
||||||
|
~DrawingPlanes ();
|
||||||
|
inline int width () const;
|
||||||
|
inline int height () const;
|
||||||
|
inline QSize size () const;
|
||||||
|
inline void select ( size_t i );
|
||||||
|
inline QPixmap* plane ();
|
||||||
|
inline QPixmap* plane ( size_t i );
|
||||||
|
inline QPainter& painter ();
|
||||||
|
inline QPainter& painter ( size_t i );
|
||||||
|
inline void painterBegin ();
|
||||||
|
inline void painterBegin ( size_t i );
|
||||||
|
inline void paintersBegin ();
|
||||||
|
inline void painterEnd ();
|
||||||
|
inline void painterEnd ( size_t i );
|
||||||
|
inline void paintersEnd ();
|
||||||
|
void resize ( const QSize& size );
|
||||||
|
void shiftLeft ( int dx );
|
||||||
|
void shiftRight ( int dx );
|
||||||
|
void shiftUp ( int dy );
|
||||||
|
void shiftDown ( int dy );
|
||||||
|
inline void copyToSelect ();
|
||||||
|
void copyToSelect ( int sx, int sy, int h, int w );
|
||||||
|
inline void copyToScreen ();
|
||||||
|
void copyToScreen ( int sx, int sy, int h, int w );
|
||||||
|
private:
|
||||||
|
CellWidget* _cellWidget;
|
||||||
|
QPixmap* _planes[2];
|
||||||
|
QPainter _painters[3];
|
||||||
|
size_t _workingPlane;
|
||||||
|
private:
|
||||||
|
DrawingPlanes ( const DrawingPlanes& );
|
||||||
|
DrawingPlanes& operator= ( const DrawingPlanes& );
|
||||||
|
};
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Internal: Attributes.
|
// Internal: Attributes.
|
||||||
static const int _stripWidth;
|
static const int _stripWidth;
|
||||||
vector<Qt::CursorShape> _cursors;
|
vector<Qt::CursorShape> _cursors;
|
||||||
// MapView* _mapView;
|
// MapView* _mapView;
|
||||||
Technology* _technology;
|
Technology* _technology;
|
||||||
HPalette* _palette;
|
HPalette* _palette;
|
||||||
Box _displayArea;
|
Box _displayArea;
|
||||||
Box _visibleArea;
|
Box _visibleArea;
|
||||||
float _scale;
|
float _scale;
|
||||||
QPoint _offsetVA;
|
QPoint _offsetVA;
|
||||||
QPixmap _drawingBuffer;
|
DrawingPlanes _drawingPlanes;
|
||||||
QPainter _drawingPainter;
|
|
||||||
QPainter _screenPainter;
|
|
||||||
QPoint _lastMousePosition;
|
QPoint _lastMousePosition;
|
||||||
Spot _spot;
|
Spot _spot;
|
||||||
Cell* _cell;
|
Cell* _cell;
|
||||||
bool _mouseGo;
|
bool _mouseGo;
|
||||||
bool _showBoundaries;
|
bool _showBoundaries;
|
||||||
|
bool _showSelection;
|
||||||
|
bool _selectionHasChanged;
|
||||||
|
set<Selector*> _selectors;
|
||||||
size_t _redrawRectCount;
|
size_t _redrawRectCount;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
inline QPainter& CellWidget::getScreenPainter ()
|
inline int CellWidget::DrawingPlanes::width () const
|
||||||
{ return _screenPainter; }
|
{ return _planes[0]->width(); }
|
||||||
|
|
||||||
|
|
||||||
inline void CellWidget::copyToScreen ( int sx, int sy, int w, int h )
|
inline int CellWidget::DrawingPlanes::height () const
|
||||||
{ _screenPainter.drawPixmap ( sx, sy, _drawingBuffer, _offsetVA.rx()+sx, _offsetVA.ry()+sy, w, h ); }
|
{ return _planes[0]->height(); }
|
||||||
|
|
||||||
|
|
||||||
inline void CellWidget::copyToScreen ()
|
inline QSize CellWidget::DrawingPlanes::size () const
|
||||||
{ copyToScreen ( 0, 0, width(), height() ); }
|
{ return _planes[0]->size(); }
|
||||||
|
|
||||||
|
|
||||||
inline void CellWidget::redraw ()
|
inline void CellWidget::DrawingPlanes::select ( size_t i )
|
||||||
{ redraw ( QRect(QPoint(0,0),_drawingBuffer.size()) ); }
|
{ _workingPlane = i; }
|
||||||
|
|
||||||
|
|
||||||
inline int CellWidget::dbuToDisplayX ( DbU::Unit x ) const
|
inline QPixmap* CellWidget::DrawingPlanes::plane ()
|
||||||
{ return (int)rint ( (float)( x - _displayArea.getXMin() ) * _scale ); }
|
{ return plane(_workingPlane); }
|
||||||
|
|
||||||
|
|
||||||
inline int CellWidget::dbuToDisplayY ( DbU::Unit y ) const
|
inline QPixmap* CellWidget::DrawingPlanes::plane ( size_t i )
|
||||||
{ return (int)rint ( (float)( _displayArea.getYMax() - y ) * _scale ); }
|
{ return _planes[i]; }
|
||||||
|
|
||||||
|
|
||||||
inline int CellWidget::dbuToDisplayLength ( DbU::Unit length ) const
|
inline QPainter& CellWidget::DrawingPlanes::painter ()
|
||||||
{ return (int)rint ( (float)length * _scale ); }
|
{ return painter(_workingPlane); }
|
||||||
|
|
||||||
|
|
||||||
inline int CellWidget::dbuToScreenX ( DbU::Unit x ) const
|
inline QPainter& CellWidget::DrawingPlanes::painter ( size_t i )
|
||||||
{ return (int)rint ( (float)( x - _displayArea.getXMin() ) * _scale ) - _offsetVA.x(); }
|
{ return _painters[i]; }
|
||||||
|
|
||||||
|
|
||||||
inline int CellWidget::dbuToScreenY ( DbU::Unit y ) const
|
inline void CellWidget::DrawingPlanes::painterBegin ()
|
||||||
{ return (int)rint ( (float)( _displayArea.getYMax() - y ) * _scale ) - _offsetVA.y(); }
|
{ painterBegin ( _workingPlane ); }
|
||||||
|
|
||||||
|
|
||||||
inline QPoint CellWidget::dbuToScreenPoint ( const Point& point ) const
|
inline void CellWidget::DrawingPlanes::painterBegin ( size_t i )
|
||||||
{ return QPoint ( dbuToScreenX(point.getX()), dbuToScreenY(point.getY()) ); }
|
{
|
||||||
|
if ( i<2 ) _painters[i].begin ( _planes[i] );
|
||||||
|
else _painters[i].begin ( _cellWidget );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
inline DbU::Unit CellWidget::displayToDbuX ( int x ) const
|
inline void CellWidget::DrawingPlanes::paintersBegin ()
|
||||||
{ return (DbU::Unit)(x/_scale) + _displayArea.getXMin(); }
|
{
|
||||||
|
painterBegin ( 0 );
|
||||||
|
painterBegin ( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
inline DbU::Unit CellWidget::displayToDbuY ( int y ) const
|
inline void CellWidget::DrawingPlanes::painterEnd ()
|
||||||
{ return _displayArea.getYMax() - (DbU::Unit)(y/_scale); }
|
{ painterEnd ( _workingPlane ); }
|
||||||
|
|
||||||
|
|
||||||
inline DbU::Unit CellWidget::displayToDbuLength ( int length ) const
|
inline void CellWidget::DrawingPlanes::painterEnd ( size_t i )
|
||||||
{ return (int)( (float)length / _scale ); }
|
{ _painters[i].end (); }
|
||||||
|
|
||||||
|
|
||||||
inline Box CellWidget::displayToDbuBox ( const QRect& rect ) const
|
inline void CellWidget::DrawingPlanes::paintersEnd ()
|
||||||
{
|
{
|
||||||
return Box ( displayToDbuX(rect.x())
|
painterEnd ( 0 );
|
||||||
, displayToDbuY(rect.y())
|
painterEnd ( 1 );
|
||||||
, displayToDbuX(rect.x()+rect.width ())
|
}
|
||||||
, displayToDbuY(rect.y()+rect.height())
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
inline DbU::Unit CellWidget::screenToDbuX ( int x ) const
|
inline void CellWidget::DrawingPlanes::copyToSelect ()
|
||||||
{ return displayToDbuX(x+_offsetVA.x()); }
|
{ copyToSelect ( 0, 0, width(), height() ); }
|
||||||
|
|
||||||
|
|
||||||
inline DbU::Unit CellWidget::screenToDbuY ( int y ) const
|
inline void CellWidget::DrawingPlanes::copyToScreen ()
|
||||||
{ return displayToDbuY(y+_offsetVA.y()); }
|
{ copyToScreen ( 0, 0, width(), height() ); }
|
||||||
|
|
||||||
|
|
||||||
inline Point CellWidget::screenToDbuPoint ( const QPoint& point ) const
|
inline CellWidget::DrawingPlanes& CellWidget::getDrawingPlanes ()
|
||||||
{ return Point ( screenToDbuX(point.x()), screenToDbuY(point.y()) ); }
|
{ return _drawingPlanes; }
|
||||||
|
|
||||||
|
|
||||||
inline Cell* CellWidget::getCell () const
|
inline set<Selector*>& CellWidget::getSelectorSet ()
|
||||||
{ return _cell; }
|
{ return _selectors; }
|
||||||
|
|
||||||
|
|
||||||
inline HPalette* CellWidget::getPalette ()
|
inline QPoint& CellWidget::getOffsetVA ()
|
||||||
{ return _palette; }
|
{ return _offsetVA; }
|
||||||
|
|
||||||
|
|
||||||
inline bool CellWidget::showBoundaries () const
|
inline void CellWidget::redraw ()
|
||||||
{ return _showBoundaries; }
|
{ redraw ( QRect(QPoint(0,0),_drawingPlanes.size()) ); }
|
||||||
|
|
||||||
|
|
||||||
|
inline void CellWidget::redrawSelection ()
|
||||||
|
{ redrawSelection ( QRect(QPoint(0,0),_drawingPlanes.size()) ); }
|
||||||
|
|
||||||
|
|
||||||
|
inline int CellWidget::dbuToDisplayX ( DbU::Unit x ) const
|
||||||
|
{ return (int)rint ( (float)( x - _displayArea.getXMin() ) * _scale ); }
|
||||||
|
|
||||||
|
|
||||||
|
inline int CellWidget::dbuToDisplayY ( DbU::Unit y ) const
|
||||||
|
{ return (int)rint ( (float)( _displayArea.getYMax() - y ) * _scale ); }
|
||||||
|
|
||||||
|
|
||||||
|
inline int CellWidget::dbuToDisplayLength ( DbU::Unit length ) const
|
||||||
|
{ return (int)rint ( (float)length * _scale ); }
|
||||||
|
|
||||||
|
|
||||||
|
inline int CellWidget::dbuToScreenX ( DbU::Unit x ) const
|
||||||
|
{ return (int)rint ( (float)( x - _displayArea.getXMin() ) * _scale ) - _offsetVA.x(); }
|
||||||
|
|
||||||
|
|
||||||
|
inline int CellWidget::dbuToScreenY ( DbU::Unit y ) const
|
||||||
|
{ return (int)rint ( (float)( _displayArea.getYMax() - y ) * _scale ) - _offsetVA.y(); }
|
||||||
|
|
||||||
|
|
||||||
|
inline QPoint CellWidget::dbuToScreenPoint ( const Point& point ) const
|
||||||
|
{ return QPoint ( dbuToScreenX(point.getX()), dbuToScreenY(point.getY()) ); }
|
||||||
|
|
||||||
|
|
||||||
|
inline DbU::Unit CellWidget::displayToDbuX ( int x ) const
|
||||||
|
{ return (DbU::Unit)(x/_scale) + _displayArea.getXMin(); }
|
||||||
|
|
||||||
|
|
||||||
|
inline DbU::Unit CellWidget::displayToDbuY ( int y ) const
|
||||||
|
{ return _displayArea.getYMax() - (DbU::Unit)(y/_scale); }
|
||||||
|
|
||||||
|
|
||||||
|
inline DbU::Unit CellWidget::displayToDbuLength ( int length ) const
|
||||||
|
{ return (int)( (float)length / _scale ); }
|
||||||
|
|
||||||
|
|
||||||
|
inline Box CellWidget::displayToDbuBox ( const QRect& rect ) const
|
||||||
|
{
|
||||||
|
return Box ( displayToDbuX(rect.x())
|
||||||
|
, displayToDbuY(rect.y())
|
||||||
|
, displayToDbuX(rect.x()+rect.width ())
|
||||||
|
, displayToDbuY(rect.y()+rect.height())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inline DbU::Unit CellWidget::screenToDbuX ( int x ) const
|
||||||
|
{ return displayToDbuX(x+_offsetVA.x()); }
|
||||||
|
|
||||||
|
|
||||||
|
inline DbU::Unit CellWidget::screenToDbuY ( int y ) const
|
||||||
|
{ return displayToDbuY(y+_offsetVA.y()); }
|
||||||
|
|
||||||
|
|
||||||
|
inline Point CellWidget::screenToDbuPoint ( const QPoint& point ) const
|
||||||
|
{ return Point ( screenToDbuX(point.x()), screenToDbuY(point.y()) ); }
|
||||||
|
|
||||||
|
|
||||||
|
inline Cell* CellWidget::getCell () const
|
||||||
|
{ return _cell; }
|
||||||
|
|
||||||
|
|
||||||
|
inline HPalette* CellWidget::getPalette ()
|
||||||
|
{ return _palette; }
|
||||||
|
|
||||||
|
|
||||||
|
inline bool CellWidget::showBoundaries () const
|
||||||
|
{ return _showBoundaries; }
|
||||||
|
|
||||||
|
|
||||||
|
inline bool CellWidget::showSelection () const
|
||||||
|
{ return _showSelection; }
|
||||||
|
|
||||||
|
|
||||||
} // End of Hurricane namespace.
|
} // End of Hurricane namespace.
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
|
||||||
|
|
||||||
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
|
||||||
|
|
||||||
|
# ifndef __CELL_WIDGETS_H__
|
||||||
|
# define __CELL_WIDGETS_H__
|
||||||
|
|
||||||
|
|
||||||
|
# include "hurricane/Collection.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace Hurricane {
|
||||||
|
|
||||||
|
|
||||||
|
class CellWidget;
|
||||||
|
|
||||||
|
|
||||||
|
typedef GenericCollection<CellWidget*> CellWidgets;
|
||||||
|
typedef GenericLocator<CellWidget*> CellWidgetLocator;
|
||||||
|
typedef GenericFilter<CellWidget*> CellWidgetFilter;
|
||||||
|
|
||||||
|
# define for_each_cell_widget(cellWidget, cellWidgets) { \
|
||||||
|
CellWidgetLocator _locator = cellWidgets.getLocator(); \
|
||||||
|
while ( _locator.isValid() ) { \
|
||||||
|
CellWidget* cellWidget = _locator.getElement(); \
|
||||||
|
_locator.progress();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# endif // __CELL_WIDGETS__
|
|
@ -1,5 +1,58 @@
|
||||||
|
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./DisplayStyle.h" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
|
||||||
|
|
||||||
# ifndef __DISPLAYSTYLE_H__
|
# ifndef __DISPLAYSTYLE_H__
|
||||||
|
@ -42,9 +95,9 @@ namespace Hurricane {
|
||||||
// Accessors.
|
// Accessors.
|
||||||
inline const Name& getName () const;
|
inline const Name& getName () const;
|
||||||
inline const string& getPattern () const;
|
inline const string& getPattern () const;
|
||||||
inline const QColor& getColor () const;
|
QColor getColor ( int darkening ) const;
|
||||||
inline const QPen& getPen () const;
|
QPen getPen ( int darkening ) const;
|
||||||
inline const QBrush& getBrush () const;
|
QBrush getBrush ( int darkening ) const;
|
||||||
inline float getThreshold () const;
|
inline float getThreshold () const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -140,9 +193,9 @@ namespace Hurricane {
|
||||||
const Name& getName () const;
|
const Name& getName () const;
|
||||||
const Name& getGroup ( const Name& key ) const;
|
const Name& getGroup ( const Name& key ) const;
|
||||||
const string& getPattern ( const Name& key ) const;
|
const string& getPattern ( const Name& key ) const;
|
||||||
const QColor& getColor ( const Name& key ) const;
|
QColor getColor ( const Name& key, int darkening ) const;
|
||||||
const QPen& getPen ( const Name& key ) const;
|
QPen getPen ( const Name& key, int darkening ) const;
|
||||||
const QBrush& getBrush ( const Name& key ) const;
|
QBrush getBrush ( const Name& key, int darkening ) const;
|
||||||
float getThreshold ( const Name& key ) const;
|
float getThreshold ( const Name& key ) const;
|
||||||
inline vector<DrawingGroup*>& getDrawingGroups ();
|
inline vector<DrawingGroup*>& getDrawingGroups ();
|
||||||
DrawingStyle* find ( const Name& key ) const;
|
DrawingStyle* find ( const Name& key ) const;
|
||||||
|
@ -180,9 +233,6 @@ namespace Hurricane {
|
||||||
// Functions.
|
// Functions.
|
||||||
inline const Name& DrawingStyle::getName () const { return _name; }
|
inline const Name& DrawingStyle::getName () const { return _name; }
|
||||||
inline const string& DrawingStyle::getPattern () const { return _pattern; }
|
inline const string& DrawingStyle::getPattern () const { return _pattern; }
|
||||||
inline const QColor& DrawingStyle::getColor () const { return _color; }
|
|
||||||
inline const QPen& DrawingStyle::getPen () const { return _pen; }
|
|
||||||
inline const QBrush& DrawingStyle::getBrush () const { return _brush; }
|
|
||||||
inline float DrawingStyle::getThreshold () const { return _threshold; }
|
inline float DrawingStyle::getThreshold () const { return _threshold; }
|
||||||
|
|
||||||
inline const Name& DrawingGroup::getName () const { return _name; }
|
inline const Name& DrawingGroup::getName () const { return _name; }
|
||||||
|
|
|
@ -1,5 +1,58 @@
|
||||||
|
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./DynamicLabel.h" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
|
||||||
|
|
||||||
# ifndef __DYNAMIC_LABEL_H__
|
# ifndef __DYNAMIC_LABEL_H__
|
||||||
|
|
|
@ -1,5 +1,58 @@
|
||||||
|
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./Graphics.h" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
|
||||||
|
|
||||||
# ifndef __GRAPHICS_H__
|
# ifndef __GRAPHICS_H__
|
||||||
|
@ -32,9 +85,9 @@ namespace Hurricane {
|
||||||
static Graphics* getGraphics ();
|
static Graphics* getGraphics ();
|
||||||
static const QFont getFixedFont ( int weight=-1, bool italic=false, bool underline=false );
|
static const QFont getFixedFont ( int weight=-1, bool italic=false, bool underline=false );
|
||||||
static const Name& getGroup ( const Name& key );
|
static const Name& getGroup ( const Name& key );
|
||||||
static const QColor& getColor ( const Name& key );
|
static QColor getColor ( const Name& key, int darkening=100 );
|
||||||
static const QPen& getPen ( const Name& key );
|
static QPen getPen ( const Name& key, int darkening=100 );
|
||||||
static const QBrush& getBrush ( const Name& key );
|
static QBrush getBrush ( const Name& key, int darkening=100 );
|
||||||
static const string& getPattern ( const Name& key );
|
static const string& getPattern ( const Name& key );
|
||||||
static float getThreshold ( const Name& key );
|
static float getThreshold ( const Name& key );
|
||||||
|
|
||||||
|
@ -63,34 +116,34 @@ namespace Hurricane {
|
||||||
DisplayStyle* _getStyle ( const Name& key );
|
DisplayStyle* _getStyle ( const Name& key );
|
||||||
DisplayStyle* _getStyle () const;
|
DisplayStyle* _getStyle () const;
|
||||||
inline const Name& _getGroup ( const Name& key ) const;
|
inline const Name& _getGroup ( const Name& key ) const;
|
||||||
inline const QColor& _getColor ( const Name& key ) const;
|
inline QColor _getColor ( const Name& key, int darkening ) const;
|
||||||
inline const QPen& _getPen ( const Name& key ) const;
|
inline QPen _getPen ( const Name& key, int darkening ) const;
|
||||||
inline const QBrush& _getBrush ( const Name& key ) const;
|
inline QBrush _getBrush ( const Name& key, int darkening ) const;
|
||||||
inline const string& _getPattern ( const Name& key ) const;
|
inline const string& _getPattern ( const Name& key ) const;
|
||||||
inline float _getThreshold ( const Name& key ) const;
|
inline float _getThreshold ( const Name& key ) const;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
inline const Name& Graphics::_getGroup ( const Name& name ) const
|
inline const Name& Graphics::_getGroup ( const Name& name ) const
|
||||||
{ return _active->getGroup(name); }
|
{ return _active->getGroup(name); }
|
||||||
|
|
||||||
inline const QColor& Graphics::_getColor ( const Name& name ) const
|
inline QColor Graphics::_getColor ( const Name& name, int darkening ) const
|
||||||
{ return _active->getColor(name); }
|
{ return _active->getColor(name,darkening); }
|
||||||
|
|
||||||
inline const QPen& Graphics::_getPen ( const Name& name ) const
|
inline QPen Graphics::_getPen ( const Name& name, int darkening ) const
|
||||||
{ return _active->getPen(name); }
|
{ return _active->getPen(name,darkening); }
|
||||||
|
|
||||||
inline const QBrush& Graphics::_getBrush ( const Name& name ) const
|
inline QBrush Graphics::_getBrush ( const Name& name, int darkening ) const
|
||||||
{ return _active->getBrush(name); }
|
{ return _active->getBrush(name,darkening); }
|
||||||
|
|
||||||
inline const string& Graphics::_getPattern ( const Name& name ) const
|
inline const string& Graphics::_getPattern ( const Name& name ) const
|
||||||
{ return _active->getPattern(name); }
|
{ return _active->getPattern(name); }
|
||||||
|
|
||||||
inline float Graphics::_getThreshold ( const Name& name ) const
|
inline float Graphics::_getThreshold ( const Name& name ) const
|
||||||
{ return _active->getThreshold(name); }
|
{ return _active->getThreshold(name); }
|
||||||
|
|
||||||
inline DisplayStyle* Graphics::_getStyle () const
|
inline DisplayStyle* Graphics::_getStyle () const
|
||||||
{ return _active; }
|
{ return _active; }
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,58 @@
|
||||||
|
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./GroupPaletteEntry.h" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
|
||||||
|
|
||||||
# ifndef __GROUP_HPALETTE_ENTRY_H__
|
# ifndef __GROUP_HPALETTE_ENTRY_H__
|
||||||
|
|
|
@ -1,4 +1,58 @@
|
||||||
|
|
||||||
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./HInspectorWidget.h" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
#ifndef __HINSPECTOR_WIDGET_H__
|
#ifndef __HINSPECTOR_WIDGET_H__
|
||||||
#define __HINSPECTOR_WIDGET_H__
|
#define __HINSPECTOR_WIDGET_H__
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,58 @@
|
||||||
|
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./HMousePosition.h" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
|
||||||
|
|
||||||
# ifndef __HMOUSE_POSITION_H__
|
# ifndef __HMOUSE_POSITION_H__
|
||||||
|
|
|
@ -0,0 +1,137 @@
|
||||||
|
|
||||||
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./HNetlist.h" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
#ifndef __HNETLIST_WIDGET_H__
|
||||||
|
#define __HNETLIST_WIDGET_H__
|
||||||
|
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QTableView>
|
||||||
|
#include <QSortFilterProxyModel>
|
||||||
|
|
||||||
|
#include "hurricane/Commons.h"
|
||||||
|
#include "hurricane/viewer/CellWidget.h"
|
||||||
|
#include "hurricane/viewer/HNetlistModel.h"
|
||||||
|
|
||||||
|
|
||||||
|
class QSortFilterProxyModel;
|
||||||
|
class QModelIndex;
|
||||||
|
class QTableView;
|
||||||
|
class QLineEdit;
|
||||||
|
class QComboBox;
|
||||||
|
class QHeaderView;
|
||||||
|
|
||||||
|
|
||||||
|
namespace Hurricane {
|
||||||
|
|
||||||
|
|
||||||
|
class Cell;
|
||||||
|
class CellWidget;
|
||||||
|
|
||||||
|
|
||||||
|
class HNetlist : public QWidget {
|
||||||
|
Q_OBJECT;
|
||||||
|
|
||||||
|
public:
|
||||||
|
HNetlist ( QWidget* parent=NULL );
|
||||||
|
template<typename InformationType>
|
||||||
|
void setCell ( Cell* cell );
|
||||||
|
template<typename InformationType>
|
||||||
|
void setCellWidget ( CellWidget* cw );
|
||||||
|
private slots:
|
||||||
|
void textFilterChanged ();
|
||||||
|
void selectNet ( const QModelIndex& index );
|
||||||
|
protected:
|
||||||
|
void keyPressEvent ( QKeyEvent * event );
|
||||||
|
|
||||||
|
private:
|
||||||
|
HNetlistModel* _netlistModel;
|
||||||
|
QSortFilterProxyModel* _sortModel;
|
||||||
|
QTableView* _netlistView;
|
||||||
|
QLineEdit* _filterPatternLineEdit;
|
||||||
|
int _rowHeight;
|
||||||
|
CellWidget* _cellWidget;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
template<typename InformationType>
|
||||||
|
void HNetlist::setCell ( Cell* cell )
|
||||||
|
{
|
||||||
|
_netlistModel->setCell<InformationType> ( cell );
|
||||||
|
|
||||||
|
string windowTitle = "Netlist" + getString(cell);
|
||||||
|
setWindowTitle ( tr(windowTitle.c_str()) );
|
||||||
|
|
||||||
|
int rows = _sortModel->rowCount ();
|
||||||
|
for ( rows-- ; rows >= 0 ; rows-- )
|
||||||
|
_netlistView->setRowHeight ( rows, _rowHeight );
|
||||||
|
_netlistView->selectRow ( 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<typename InformationType>
|
||||||
|
void HNetlist::setCellWidget ( CellWidget* cw )
|
||||||
|
{
|
||||||
|
if ( _netlistModel->getCell() != cw->getCell() )
|
||||||
|
setCell<InformationType>( cw->getCell() );
|
||||||
|
|
||||||
|
_cellWidget = cw;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} // End of Hurricane namespace.
|
||||||
|
|
||||||
|
|
||||||
|
#endif // __HNETLIST_WIDGET_H__
|
|
@ -0,0 +1,132 @@
|
||||||
|
|
||||||
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./HNetlistModel.h" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
#ifndef __NETLIST_MODEL_H__
|
||||||
|
#define __NETLIST_MODEL_H__
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
#include <QFont>
|
||||||
|
#include <QApplication>
|
||||||
|
#include <QAbstractTableModel>
|
||||||
|
|
||||||
|
#include "hurricane/Commons.h"
|
||||||
|
#include "hurricane/Name.h"
|
||||||
|
#include "hurricane/Net.h"
|
||||||
|
#include "hurricane/Cell.h"
|
||||||
|
#include "hurricane/viewer/Graphics.h"
|
||||||
|
#include "hurricane/viewer/NetInformations.h"
|
||||||
|
#include "hurricane/viewer/HNetlistModel.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace Hurricane {
|
||||||
|
|
||||||
|
|
||||||
|
class Net;
|
||||||
|
class Cell;
|
||||||
|
|
||||||
|
|
||||||
|
class HNetlistModel : public QAbstractTableModel {
|
||||||
|
Q_OBJECT;
|
||||||
|
|
||||||
|
public:
|
||||||
|
HNetlistModel ( QObject* parent=NULL );
|
||||||
|
~HNetlistModel ();
|
||||||
|
template<typename InformationType>
|
||||||
|
void setCell ( Cell* cell );
|
||||||
|
int rowCount ( const QModelIndex& parent=QModelIndex() ) const;
|
||||||
|
int columnCount ( const QModelIndex& parent=QModelIndex() ) const;
|
||||||
|
QVariant data ( const QModelIndex& index, int role=Qt::DisplayRole ) const;
|
||||||
|
QVariant headerData ( int section, Qt::Orientation orientation, int role=Qt::DisplayRole ) const;
|
||||||
|
inline Cell* getCell ();
|
||||||
|
const Net* getNet ( int row );
|
||||||
|
|
||||||
|
private:
|
||||||
|
Cell* _cell;
|
||||||
|
AbstractNetInformationsVector* _netlist;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Inline Functions.
|
||||||
|
|
||||||
|
inline Cell* HNetlistModel::getCell () { return _cell; }
|
||||||
|
|
||||||
|
|
||||||
|
// Template Functions.
|
||||||
|
|
||||||
|
template<typename InformationType>
|
||||||
|
void HNetlistModel::setCell ( Cell* cell )
|
||||||
|
{
|
||||||
|
if ( _cell != cell ) {
|
||||||
|
if ( _cell )
|
||||||
|
delete _netlist;
|
||||||
|
|
||||||
|
_cell = cell;
|
||||||
|
_netlist = new NetInformationsVector<InformationType>();
|
||||||
|
|
||||||
|
for_each_net ( net, _cell->getNets() ) {
|
||||||
|
_netlist->addNet ( net );
|
||||||
|
end_for;
|
||||||
|
}
|
||||||
|
|
||||||
|
emit layoutChanged ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} // End of Hurricane namespace.
|
||||||
|
|
||||||
|
|
||||||
|
#endif // __NETLIST_MODEL_H__
|
|
@ -1,5 +1,58 @@
|
||||||
|
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./HPalette.h" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
|
||||||
|
|
||||||
# ifndef __HPALETTE__
|
# ifndef __HPALETTE__
|
||||||
|
|
|
@ -1,5 +1,58 @@
|
||||||
|
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./HPaletteEntry.h" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
|
||||||
|
|
||||||
# ifndef __PALETTE_ENTRY_H__
|
# ifndef __PALETTE_ENTRY_H__
|
||||||
|
|
|
@ -1,5 +1,58 @@
|
||||||
|
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./LayerPaletteEntry.h" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
|
||||||
|
|
||||||
# ifndef __LAYER_PALETTE_ENTRY_H__
|
# ifndef __LAYER_PALETTE_ENTRY_H__
|
||||||
|
|
|
@ -0,0 +1,200 @@
|
||||||
|
|
||||||
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./NetInformations.h" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
#ifndef __NET_INFORMATIONS_H__
|
||||||
|
#define __NET_INFORMATIONS_H__
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
#include <QVariant>
|
||||||
|
|
||||||
|
#include "hurricane/Commons.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace Hurricane {
|
||||||
|
|
||||||
|
|
||||||
|
class Net;
|
||||||
|
class Cell;
|
||||||
|
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------
|
||||||
|
// Class : "NetInformations"
|
||||||
|
|
||||||
|
|
||||||
|
class NetInformations {
|
||||||
|
public:
|
||||||
|
NetInformations ( const Net* net );
|
||||||
|
virtual ~NetInformations ();
|
||||||
|
static int getColumnCount ();
|
||||||
|
static QVariant getColumnName ( int column );
|
||||||
|
virtual QVariant getColumn ( int column );
|
||||||
|
inline const Net* getNet () const;
|
||||||
|
inline const Name& getName () const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
const Net* _net;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
inline const Net* NetInformations::getNet () const
|
||||||
|
{ return _net; }
|
||||||
|
|
||||||
|
|
||||||
|
inline const Name& NetInformations::getName () const
|
||||||
|
{ return _net->getName(); }
|
||||||
|
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------
|
||||||
|
// Class : "SimpleNetInformations"
|
||||||
|
|
||||||
|
|
||||||
|
class SimpleNetInformations : public NetInformations {
|
||||||
|
public:
|
||||||
|
SimpleNetInformations ( const Net* net );
|
||||||
|
virtual ~SimpleNetInformations ();
|
||||||
|
static int getColumnCount ();
|
||||||
|
static QVariant getColumnName ( int column );
|
||||||
|
virtual QVariant getColumn ( int column );
|
||||||
|
inline size_t getPlugsCount () const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
size_t _plugsCount;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
inline size_t SimpleNetInformations::getPlugsCount () const
|
||||||
|
{ return _plugsCount; }
|
||||||
|
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------
|
||||||
|
// Class : "AbstractNetInformationsVector"
|
||||||
|
|
||||||
|
|
||||||
|
class AbstractNetInformationsVector {
|
||||||
|
public:
|
||||||
|
virtual ~AbstractNetInformationsVector ();
|
||||||
|
virtual void addNet ( const Net* net ) = 0;
|
||||||
|
virtual NetInformations* getRow ( int row ) = 0;
|
||||||
|
virtual int getColumnCount () const = 0;
|
||||||
|
virtual QVariant getColumnName ( int column ) const = 0;
|
||||||
|
virtual int size () const = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------
|
||||||
|
// Template Class : "NetInformationsVector"
|
||||||
|
|
||||||
|
|
||||||
|
template<typename InformationType>
|
||||||
|
class NetInformationsVector : public AbstractNetInformationsVector {
|
||||||
|
public:
|
||||||
|
virtual ~NetInformationsVector ();
|
||||||
|
virtual void addNet ( const Net* net );
|
||||||
|
virtual InformationType* getRow ( int row );
|
||||||
|
virtual int getColumnCount () const;
|
||||||
|
virtual QVariant getColumnName ( int column ) const;
|
||||||
|
virtual int size () const;
|
||||||
|
protected:
|
||||||
|
vector<InformationType> _netlist;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
template<typename InformationType>
|
||||||
|
NetInformationsVector<InformationType>::~NetInformationsVector ()
|
||||||
|
{ }
|
||||||
|
|
||||||
|
|
||||||
|
template<typename InformationType>
|
||||||
|
void NetInformationsVector<InformationType>::addNet ( const Net* net )
|
||||||
|
{
|
||||||
|
_netlist.push_back ( InformationType(net) );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<typename InformationType>
|
||||||
|
InformationType* NetInformationsVector<InformationType>::getRow ( int row )
|
||||||
|
{
|
||||||
|
if ( row >= (int)_netlist.size() ) return NULL;
|
||||||
|
|
||||||
|
return &_netlist[row];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<typename InformationType>
|
||||||
|
int NetInformationsVector<InformationType>::getColumnCount () const
|
||||||
|
{
|
||||||
|
return InformationType::getColumnCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<typename InformationType>
|
||||||
|
QVariant NetInformationsVector<InformationType>::getColumnName ( int column ) const
|
||||||
|
{
|
||||||
|
return InformationType::getColumnName ( column );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<typename InformationType>
|
||||||
|
int NetInformationsVector<InformationType>::size () const
|
||||||
|
{
|
||||||
|
return _netlist.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} // End of Hurricane namespace.
|
||||||
|
|
||||||
|
|
||||||
|
#endif // __NET_INFORMATIONS_H__
|
|
@ -1,4 +1,58 @@
|
||||||
|
|
||||||
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./RecordModel.h" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
#ifndef __RECORD_MODEL_H__
|
#ifndef __RECORD_MODEL_H__
|
||||||
#define __RECORD_MODEL_H__
|
#define __RECORD_MODEL_H__
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,58 @@
|
||||||
|
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./ScreenUtilities.h" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
|
||||||
|
|
||||||
# ifndef __SCREENUTILITIES_H__
|
# ifndef __SCREENUTILITIES_H__
|
||||||
|
|
|
@ -0,0 +1,77 @@
|
||||||
|
|
||||||
|
|
||||||
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Hurricane Software.
|
||||||
|
// Copyright (c) BULL S.A. 2000-2004, 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 : Remy Escassut |
|
||||||
|
// | E-mail : Jean-Paul.Chaput@lip6.fr |
|
||||||
|
// | =============================================================== |
|
||||||
|
// | C++ Header : "./Selector.h" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef __HURRICANE_SELECTOR__
|
||||||
|
#define __HURRICANE_SELECTOR__
|
||||||
|
|
||||||
|
#include "hurricane/Property.h"
|
||||||
|
#include "hurricane/Selectors.h"
|
||||||
|
#include "hurricane/Occurrence.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace Hurricane {
|
||||||
|
|
||||||
|
|
||||||
|
class CellWidget;
|
||||||
|
|
||||||
|
|
||||||
|
class Selector : public PrivateProperty {
|
||||||
|
|
||||||
|
public:
|
||||||
|
// Constructor.
|
||||||
|
static Selector* create ( Occurrence& occurrence );
|
||||||
|
// Methods.
|
||||||
|
static const Name& getPropertyName ();
|
||||||
|
virtual Name getName () const;
|
||||||
|
Occurrence getOccurrence () const;
|
||||||
|
inline set<CellWidget*>& getCellWidgetSet ();
|
||||||
|
void attachTo ( CellWidget* widget );
|
||||||
|
void detachFrom ( CellWidget* widget, bool inDeletion=false );
|
||||||
|
// Inspector Managment.
|
||||||
|
virtual string _getTypeName () const;
|
||||||
|
virtual string _getString () const;
|
||||||
|
virtual Record* _getRecord () const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// Internal: Attributes.
|
||||||
|
static const Name _propertyName;
|
||||||
|
set<CellWidget*> _cellWidgets;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// Internal: Constructor.
|
||||||
|
Selector ();
|
||||||
|
virtual void _preDestroy ();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Inline Functions.
|
||||||
|
inline set<CellWidget*>& Selector::getCellWidgetSet () { return _cellWidgets; }
|
||||||
|
|
||||||
|
|
||||||
|
} // End of Hurricane namespace.
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
|
@ -1,5 +1,58 @@
|
||||||
|
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Project.
|
||||||
|
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
||||||
|
// Universite Pierre et Marie Curie
|
||||||
|
//
|
||||||
|
// Main contributors :
|
||||||
|
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
||||||
|
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
||||||
|
// Hugo Clément <Hugo.Clement@lip6.fr>
|
||||||
|
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
||||||
|
// Christian Masson <Christian.Masson@lip6.fr>
|
||||||
|
// Marek Sroka <Marek.Sroka@lip6.fr>
|
||||||
|
//
|
||||||
|
// The Coriolis Project 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.
|
||||||
|
//
|
||||||
|
// The Coriolis Project is distributed in the hope that it will be
|
||||||
|
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with the Coriolis Project; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
// USA
|
||||||
|
//
|
||||||
|
// License-Tag
|
||||||
|
// Authors-Tag
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $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 : "./ViewerPaletteEntry.h" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMenuBar>
|
||||||
|
|
||||||
|
|
||||||
# ifndef __VIEWER_PALETTE_ENTRY_H__
|
# ifndef __VIEWER_PALETTE_ENTRY_H__
|
||||||
|
|
Loading…
Reference in New Issue