2008-07-10 04:22:36 -05:00
|
|
|
// -*- C++ -*-
|
|
|
|
//
|
2008-11-26 03:35:07 -06:00
|
|
|
// This file is part of the Coriolis Software.
|
2015-03-17 10:42:12 -05:00
|
|
|
// Copyright (c) UPMC/LIP6 2008-2015, All Rights Reserved
|
2008-07-10 04:22:36 -05:00
|
|
|
//
|
Improved UpdateSession & exception catching. Start of RoutingGauge implem.
Miscellaneous:
* Change: In <crlcore>, in display.conf use the same display threshold
for both METAL2 & METAL3.
In alliance.conf, the side of VIAs in the gauge is 2l (not 3l).
In kite.conf, separate edge densities for H/V.
* Change: In <Cell>, in flattenNets() use flag as argument, not a
boolean. Do not create rings for clock or supply nets.
* Change: In <DeepNet>, in _createRoutingPads() do not create rings
for clock or supply net (duplicated policy as in Cell::flattenNets()).
* Bug: In <ControllerWidget>, at last find the bad signal disconnect
that was causing ungraceful messages.
* Change: In <knik>, in Edge display occupancy/capacity in the string
name. Improved display progress and debugging capabilities.
Improved exception catch & breakpoint managment:
* Bug: In <PaletteWidget>, in updateExtensions() replace the calls to
deleteLayer() by delete. This cause the widget to be immediatly
erased instead of waiting for the event queue to be completly
processed. This was causing the widget to be left in a incoherent
state when stoping at a breakpoint.
* Bug: In <BreakpointWidget>, in execNoModal(), flush the main event
loop (QApplication::flush()) *before* lauching the *local* event
loop. This is to ensure all widgets are in their final state when
waiting (especially <PaletteWidget>).
* Change: In <ExceptionWidget>, new method catchAllWrapper() to
execute any std::function< void() > function/method with a "try"/
"catch" wraparound and lauch the widget in case something is catch.
* New: In <hurricane>, support for a oberver pattern, backported from
<katabatic> with an Obervable capable of being linked to any
number of Obervers.
* New: In <Cell>, made it observable to detect Cell change, currently
emit two kind of signals:
- Cell::CellAboutToChange : *before* any change.
- Cell::CellChanged : *after* the change has been completed.
* New: In <UpdateSession>, in Go::invalidate() add the Cell owning the
Go to the UPDATOR_STACK (of course the cell is added only once).
In addition, when the Cell is added, send a notification of
Cell::CellAboutToChange to all it's observers. The slave instances
are also invalidated.
Conversely in UpdateSession::_preDestroy() for each invalidated
Cell send a Cell::CellChanged notification to all observer.
The UPDATOR_STACK has been slightly amended to accept Cell which
are not Gos. Prior to this, the Cell where completly excluded from
the UpdateSession mechanism, so it's instances where never actualised
of anything referring to the Cell for that matter.
Note: we use two different mechanisms to transmit a Cell change,
observers and the slave instance map. I think at some point it
should be unificated.
* Change: In <CellViewer>, make it a Cell observer to redraw when the
cell is modificated (also update the palette).
Uses the catchAllWrapper() to protect all critical actions.
* Change: In <GraphicTool>, no longer need of cellPreModificated and
cellPostModificated signals. Now done through the Cell obersvers.
* Change: In <mauka>, <etesian> & <kite> now uses the catchAllWrapper
method for protection (need to split methods in two, to be able
to pass it as argument). No longer emit cellPreModificated and
cellPostModificated.
Support for RoutingGauge in P&R:
* Bug: In <placeandroute.py>, the connection from the internal power
ring to the connectors was not done correctly. Wrong contact layers
leading to a gap.
* Change: In <BuildPowerRails>, detection of the corona signals based
on how the "pck_px" pad is connected. No longer based on name
matching.
* Change: In <placeandroute.py>, support for 2 routing metal only
(3 metal in the technology).
* Change: In <katabatic> & <kite> support for a "top layer" limitation
on the routing gauge, this allows to use only two routing metals
(METAL2 & METAL3). Work in progress.
2014-04-20 12:25:08 -05:00
|
|
|
// +-----------------------------------------------------------------+
|
2008-07-10 04:22:36 -05:00
|
|
|
// | H U R R I C A N E |
|
Improved UpdateSession & exception catching. Start of RoutingGauge implem.
Miscellaneous:
* Change: In <crlcore>, in display.conf use the same display threshold
for both METAL2 & METAL3.
In alliance.conf, the side of VIAs in the gauge is 2l (not 3l).
In kite.conf, separate edge densities for H/V.
* Change: In <Cell>, in flattenNets() use flag as argument, not a
boolean. Do not create rings for clock or supply nets.
* Change: In <DeepNet>, in _createRoutingPads() do not create rings
for clock or supply net (duplicated policy as in Cell::flattenNets()).
* Bug: In <ControllerWidget>, at last find the bad signal disconnect
that was causing ungraceful messages.
* Change: In <knik>, in Edge display occupancy/capacity in the string
name. Improved display progress and debugging capabilities.
Improved exception catch & breakpoint managment:
* Bug: In <PaletteWidget>, in updateExtensions() replace the calls to
deleteLayer() by delete. This cause the widget to be immediatly
erased instead of waiting for the event queue to be completly
processed. This was causing the widget to be left in a incoherent
state when stoping at a breakpoint.
* Bug: In <BreakpointWidget>, in execNoModal(), flush the main event
loop (QApplication::flush()) *before* lauching the *local* event
loop. This is to ensure all widgets are in their final state when
waiting (especially <PaletteWidget>).
* Change: In <ExceptionWidget>, new method catchAllWrapper() to
execute any std::function< void() > function/method with a "try"/
"catch" wraparound and lauch the widget in case something is catch.
* New: In <hurricane>, support for a oberver pattern, backported from
<katabatic> with an Obervable capable of being linked to any
number of Obervers.
* New: In <Cell>, made it observable to detect Cell change, currently
emit two kind of signals:
- Cell::CellAboutToChange : *before* any change.
- Cell::CellChanged : *after* the change has been completed.
* New: In <UpdateSession>, in Go::invalidate() add the Cell owning the
Go to the UPDATOR_STACK (of course the cell is added only once).
In addition, when the Cell is added, send a notification of
Cell::CellAboutToChange to all it's observers. The slave instances
are also invalidated.
Conversely in UpdateSession::_preDestroy() for each invalidated
Cell send a Cell::CellChanged notification to all observer.
The UPDATOR_STACK has been slightly amended to accept Cell which
are not Gos. Prior to this, the Cell where completly excluded from
the UpdateSession mechanism, so it's instances where never actualised
of anything referring to the Cell for that matter.
Note: we use two different mechanisms to transmit a Cell change,
observers and the slave instance map. I think at some point it
should be unificated.
* Change: In <CellViewer>, make it a Cell observer to redraw when the
cell is modificated (also update the palette).
Uses the catchAllWrapper() to protect all critical actions.
* Change: In <GraphicTool>, no longer need of cellPreModificated and
cellPostModificated signals. Now done through the Cell obersvers.
* Change: In <mauka>, <etesian> & <kite> now uses the catchAllWrapper
method for protection (need to split methods in two, to be able
to pass it as argument). No longer emit cellPreModificated and
cellPostModificated.
Support for RoutingGauge in P&R:
* Bug: In <placeandroute.py>, the connection from the internal power
ring to the connectors was not done correctly. Wrong contact layers
leading to a gap.
* Change: In <BuildPowerRails>, detection of the corona signals based
on how the "pck_px" pad is connected. No longer based on name
matching.
* Change: In <placeandroute.py>, support for 2 routing metal only
(3 metal in the technology).
* Change: In <katabatic> & <kite> support for a "top layer" limitation
on the routing gauge, this allows to use only two routing metals
(METAL2 & METAL3). Work in progress.
2014-04-20 12:25:08 -05:00
|
|
|
// | V L S I B a c k e n d D a t a - B a s e |
|
2008-07-10 04:22:36 -05:00
|
|
|
// | |
|
|
|
|
// | Author : Jean-Paul CHAPUT |
|
|
|
|
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
|
|
|
// | =============================================================== |
|
2008-11-26 03:35:07 -06:00
|
|
|
// | C++ Module : "./NetlistWidget.cpp" |
|
Improved UpdateSession & exception catching. Start of RoutingGauge implem.
Miscellaneous:
* Change: In <crlcore>, in display.conf use the same display threshold
for both METAL2 & METAL3.
In alliance.conf, the side of VIAs in the gauge is 2l (not 3l).
In kite.conf, separate edge densities for H/V.
* Change: In <Cell>, in flattenNets() use flag as argument, not a
boolean. Do not create rings for clock or supply nets.
* Change: In <DeepNet>, in _createRoutingPads() do not create rings
for clock or supply net (duplicated policy as in Cell::flattenNets()).
* Bug: In <ControllerWidget>, at last find the bad signal disconnect
that was causing ungraceful messages.
* Change: In <knik>, in Edge display occupancy/capacity in the string
name. Improved display progress and debugging capabilities.
Improved exception catch & breakpoint managment:
* Bug: In <PaletteWidget>, in updateExtensions() replace the calls to
deleteLayer() by delete. This cause the widget to be immediatly
erased instead of waiting for the event queue to be completly
processed. This was causing the widget to be left in a incoherent
state when stoping at a breakpoint.
* Bug: In <BreakpointWidget>, in execNoModal(), flush the main event
loop (QApplication::flush()) *before* lauching the *local* event
loop. This is to ensure all widgets are in their final state when
waiting (especially <PaletteWidget>).
* Change: In <ExceptionWidget>, new method catchAllWrapper() to
execute any std::function< void() > function/method with a "try"/
"catch" wraparound and lauch the widget in case something is catch.
* New: In <hurricane>, support for a oberver pattern, backported from
<katabatic> with an Obervable capable of being linked to any
number of Obervers.
* New: In <Cell>, made it observable to detect Cell change, currently
emit two kind of signals:
- Cell::CellAboutToChange : *before* any change.
- Cell::CellChanged : *after* the change has been completed.
* New: In <UpdateSession>, in Go::invalidate() add the Cell owning the
Go to the UPDATOR_STACK (of course the cell is added only once).
In addition, when the Cell is added, send a notification of
Cell::CellAboutToChange to all it's observers. The slave instances
are also invalidated.
Conversely in UpdateSession::_preDestroy() for each invalidated
Cell send a Cell::CellChanged notification to all observer.
The UPDATOR_STACK has been slightly amended to accept Cell which
are not Gos. Prior to this, the Cell where completly excluded from
the UpdateSession mechanism, so it's instances where never actualised
of anything referring to the Cell for that matter.
Note: we use two different mechanisms to transmit a Cell change,
observers and the slave instance map. I think at some point it
should be unificated.
* Change: In <CellViewer>, make it a Cell observer to redraw when the
cell is modificated (also update the palette).
Uses the catchAllWrapper() to protect all critical actions.
* Change: In <GraphicTool>, no longer need of cellPreModificated and
cellPostModificated signals. Now done through the Cell obersvers.
* Change: In <mauka>, <etesian> & <kite> now uses the catchAllWrapper
method for protection (need to split methods in two, to be able
to pass it as argument). No longer emit cellPreModificated and
cellPostModificated.
Support for RoutingGauge in P&R:
* Bug: In <placeandroute.py>, the connection from the internal power
ring to the connectors was not done correctly. Wrong contact layers
leading to a gap.
* Change: In <BuildPowerRails>, detection of the corona signals based
on how the "pck_px" pad is connected. No longer based on name
matching.
* Change: In <placeandroute.py>, support for 2 routing metal only
(3 metal in the technology).
* Change: In <katabatic> & <kite> support for a "top layer" limitation
on the routing gauge, this allows to use only two routing metals
(METAL2 & METAL3). Work in progress.
2014-04-20 12:25:08 -05:00
|
|
|
// +-----------------------------------------------------------------+
|
|
|
|
|
|
|
|
|
|
|
|
#include <QFontMetrics>
|
|
|
|
#include <QLabel>
|
|
|
|
#include <QLineEdit>
|
|
|
|
#include <QHeaderView>
|
|
|
|
#include <QKeyEvent>
|
|
|
|
#include <QGroupBox>
|
|
|
|
#include <QVBoxLayout>
|
|
|
|
#include <QAction>
|
|
|
|
#include <QModelIndex>
|
2008-07-10 04:22:36 -05:00
|
|
|
#include "hurricane/Commons.h"
|
|
|
|
#include "hurricane/Net.h"
|
|
|
|
#include "hurricane/viewer/Graphics.h"
|
2008-11-26 04:13:31 -06:00
|
|
|
#include "hurricane/viewer/NetlistModel.h"
|
|
|
|
#include "hurricane/viewer/NetlistWidget.h"
|
2008-07-10 04:22:36 -05:00
|
|
|
|
|
|
|
|
2008-11-28 17:10:39 -06:00
|
|
|
namespace {
|
|
|
|
|
|
|
|
using namespace Hurricane;
|
|
|
|
|
2008-07-10 04:22:36 -05:00
|
|
|
|
2008-11-28 17:10:39 -06:00
|
|
|
} // End of anonymous namespace.
|
|
|
|
|
|
|
|
|
|
|
|
namespace Hurricane {
|
2008-07-10 04:22:36 -05:00
|
|
|
|
|
|
|
|
2008-11-26 03:35:07 -06:00
|
|
|
NetlistWidget::NetlistWidget ( QWidget* parent )
|
2009-03-03 16:27:03 -06:00
|
|
|
: QWidget (parent)
|
|
|
|
, _cellWidget (NULL)
|
|
|
|
, _cell (NULL)
|
|
|
|
, _baseModel (new NetlistModel(this))
|
|
|
|
, _sortModel (new QSortFilterProxyModel(this))
|
|
|
|
, _view (new QTableView(this))
|
|
|
|
, _rowHeight (20)
|
|
|
|
, _selecteds ()
|
|
|
|
, _forceReselect(false)
|
2008-07-10 04:22:36 -05:00
|
|
|
{
|
|
|
|
setAttribute ( Qt::WA_DeleteOnClose );
|
2008-08-27 09:06:06 -05:00
|
|
|
setAttribute ( Qt::WA_QuitOnClose, false );
|
2009-02-02 08:45:48 -06:00
|
|
|
setContextMenuPolicy ( Qt::ActionsContextMenu );
|
2008-07-10 04:22:36 -05:00
|
|
|
|
|
|
|
_rowHeight = QFontMetrics(Graphics::getFixedFont()).height() + 4;
|
|
|
|
|
* ./coriolis/src/crlcore/src/ccore/Banner.cpp
./coriolis/src/crlcore/src/ccore/crlcore/Banner.h
- Moved "CBanner" to "Banner", cleaned up, relooked, renamed functions, reorganised.
* ./coriolis/src/crlcore/src/ccore/ToolEngine.cpp
./coriolis/src/crlcore/src/ccore/crlcore/ToolEngine.h
./coriolis/src/crlcore/src/ccore/crlcore/ToolEngines.h
- Renamed CEngine to ToolEngine, cleaned up, relooked. All fonctions as static
members.
* ./coriolis/src/crlcore/src/ccore/Memory.cpp
./coriolis/src/crlcore/src/ccore/crlcore/Memory.h
- Renamed CMemory to Memory (as for Timer), minimal cleanup.
* ./coriolis/src/crlcore/src/ccore/crlcore/*.h
- Change anti-double inclusion constants from __XX_H__ to __CRL_XX_H__
(that is: include namespace) to avoid potential constant clashes with
other pieces of software.
* ./coriolis/src/crlcore/src/ccore/Utilities.cpp
./coriolis/src/crlcore/src/ccore/crlcore/Utilities.h
- Finish porting of all features from CUtils. Simplificated mstream using
member templates. Speedup mstream by using static_cast instead of
dynamic_cast.
* ./coriolis/src/crlcore/src/ccore/Environment.cpp
- Now read CORIOLIS_TOP from UNIX environment instead of hard-coded
directory (to my personnal installation...). See new method
"loadFromShell()", needs to be extended to all other variables.
_____________________________________________________________________________
* ./hurricane/src/hurricane/BasicLayer.{h,cpp}
- Suppress all graphics related members from Layer.
- Adding realName member for symbolic to real transformation.
* ./hurricane/src/hviewer/CellWidget.cpp
Bug: Now uses display threshold from Graphics (DisplayStyle) instead
of layer. Now layers appears/diseapears while zooming/unzooming.
* ./coriolis/src/crlcore :
- Separating clearly symbolic technology form real technology.
- Various file renaming.
_____________________________________________________________________________
* ./hurricane/src :
- Complete include re-organisation.
include/hurricane/*.h : kernel.
include/hurricane/viewer/*.h : hviewer.
include/hurricane/inspector/*.h : hinspector.
Includes have been moved into subdirectories of .cpp files (as in
crlcore).
- Now you must include files like this :
#include <hurricane/Layer.h>
#include <hurricane/viewer/CellViewer.h>
#include <hurricane/inspector/HInspector.h>
- Suppressed viewer specific include path in FindHURRICANE.cmake.
- Re-enabled documentation, with dot disabled as it seems to slow down
doxygen.
* ./crlcore/src/crlcore :
- Adapted to new Hurricane include scheme. Corrected bugs in it's own
include files (noticeably "Utilities.h").
_____________________________________________________________________________
* ./hurricane/doc/hurricane :
- Added (empty) directories "html" & "latex". Those directories are
created by doxygen, but as they are used in the CMakeList.txt, they
must be present even before the fisrt run of cmake (otherwise cmake
choke on them).
- Doxygen sets to only generate html & pdf (through LaTeX) documentation.
- All ".dox" files corrected to suit the new function members naming
scheme (some work may remains in code examples).
_____________________________________________________________________________
* ./hurricane/doc/hurricane/src/hurricane/Layer.{h.cpp}
./hurricane/doc/hurricane/src/hurricane/BasicLayer.{h.cpp}
- Changed "Type" to "Material" to fit better the OpenAccess semantic.
Introduce Material meanings : pWell, nWell, pImplant, nImplant
active, metal, cut, obstacle & other.
* ./coriolis/src/crlcore :
- Switched to the generic layer model. Updated technology XML configuration
files, technology parser & AP parser/driver.
- Note that the representation of transistors visually changes as it's now
modelled with Implant + Active.
_____________________________________________________________________________
* ./hurricane/src/hurricane :
- CompositeLayer replaced by 5 kind of symbolic layers :
RegularLayer (1 BasicLayer)
DiffusionLayer (2 or 3 BasicLayers: active+implant,well)
TransistorLayer (3 or 4 BasicLayers: poly+active+implant,well)
ContactLayer (4 or 5 BasicLayers: metal+cut+active+implant,well)
ViaLayer (3 BasicLayers: metal0+cut0+metal1)
- To better follow the OpenAccess semantic, the "obstacle" Material type
is renommed to "blockage".
- NB: doxygen documentation is not up-to-date and issue warnings.
* ./coriolis/src/crlcore :
- Migrate from CompositeLayer to the various SymbolicLayers.
- Symbolic rules are now closer to the reality so that a Cell displayed
with Hurricane should look identical to the Graal one.
- Complete rewrite of the AP parser. Much simplificated, do not try to
merge/articulates segments. This ensure a true rendering of the
Cell. Especially do not create contact to anchor diffusion segments,
which leads to very strange randering (DRC error as well).
_____________________________________________________________________________
* ./hurricane :
- Unit evolution to allow Symbolic (lamda) and Real (grid founder) mixing.
All functions related to Unit translations are now grouped under
the "DbU" class (another tribute to OpenAccess). "DbU" contains
only static attributes (constants) and methods. Unit itself becomes
a typedef inside this class, hence the file renaming from Unit.{h,cpp}
to DbU.{h.cpp}. Have to replace all instances of "Unit" by "DbU::Unit".
- Doc will be updated shortly.
_____________________________________________________________________________
* ./coriolis/src/crlcore :
- New AP parser : simplificated, no longer try to re-articulates segments.
More accurate representation of standart cell innards.
- More accurate symbolic extentions rules.
- Propagated changes from Hurricane about Unit/DbU.
_____________________________________________________________________________
* ./hurricane/src :
- Rename "pyext" to "isobar".
_____________________________________________________________________________
* ./hurricane/doc/hurricane :
- Documentation of DbU, replacing documentation of Unit.
* ./hurricane/src/hurricane/hurricane/DBo.h :
- Property set is now a mutable member, allowing const DBo to changes
their properties. Strange side effect on SlotAdapter in which we
need to declare two separate templates, one for const type and
another for non-const type.
- _getTypeName() defined to prevents noisy error message when a
derived class (from DBo) do not want to implement support for
the inspector.
_____________________________________________________________________________
Derrick Release !!
* ./hurricane/src
- Simplification of the Inspector internal mechanism. Simple, but with
more templates, means a slower compilation.
- The DbU::Unit problem : DbU::Unit are only typedef over long type,
so we cannot create a specific overload for them. Uses "getValueRecord()"
instead of "getRecord()"
- For HInspectorWidget add a "getClone()" method. Also add a global
object counter (for Record too) to track down memory leaks.
- Big rewrite of the HInspectorWidget : now do not leak memory like hell,
and only kept allocated the current Record and not the full stack
of them (instead, we stack Slots which are ligthweigh objects).
- Rename of "real" unit to "grid" unit.
- New conversion function "getPhysicalsPerGrid()" and associated
mechanism.
* ./coriolis/src/crlcore :
- Synchronise with the Hurricane modifications.
_____________________________________________________________________________
* ./hurricane/src/hurricane/DbU.{h,cpp} :
- Add forgotten converter function physicalToGrid(), physical units to
founder grid units.
* ./hurricane/src/hinspector :
- Added history support, and ability to move through the history stack.
- Fork support : by typing 'O' (capitalized 'o' letter) you can open
a new inspector on the current record.
_____________________________________________________________________________
* ./hurricane/src/hinspector :cla
- No more extra arguments in HInspectorWidget & RecordModel constructors.
Valid values have to be sets through setRootRecord() & setSlot().
- Key for forking sub-inspector is now *minus* 'o'.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- Bug: very tricky one. Do not emit "layoutAboutToChange()" signal
after destroying the Record used by the RecordModel but before
setting a new one and not setting the _record field to NULL.
Now setRootRecord() should work more than once.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- API : in CellWidget & CellViewer constructors now only takes the
parent QWidget.
- Renaming coordinates translation functions for more clarity.
- Adding a StatusBar showing mouse coordinates.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- Grid & Spot support (adjusted display threshold).
- Added new copyToScreen() functions for _drawingBuffer to screen refreshment
or partial copy (useful for Spot).
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- New Widget policy : a widget do not generate other widget : applied to
CellWidget which no longer supplies Palette & StatusBar.
API note: to associate a HPalette to a CellWidget (that is be able
to select layer) you have to call "bindToPalette()" on the CellWidget.
- Hurricane reusable widget names prefixed by 'H' : HMousePosition and
HPalette.
_____________________________________________________________________________
* ./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.
_____________________________________________________________________________
* ./hurricane/src/hurricane :
- New feature : geometrical Query with callback fonctions "a la" OpenAccess.
* ./hurricane/src/hviewer :
- Uses Query to draw display.
- Bug : when drawing segments as lines (width inferior to 1 pixel)
uses an alternate Pen which is one pixel wide and SolidLine styled,
avoiding strange orange lines... Mechanism implemented in sub-class
DrawingPlanes.
- Make selection always visible regardless the zoom level.
- CellWidget names it's most importants childs QWidget (mostly menus)
for later retrieval in customized sub-classes.
* ./coriolis/src/crlcore/src/cyclop :
- Created a simple derived class from CellViewer. Example of customisation
of CellWidget.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- Bug : now CellViewer can start with a NULL Cell, note that in this
case all displacement/zooming function of CellWidget became uneffective.
(display only a black screen)
- New widget : HGraphics to select the layout graphic's theme.
- New widget : HDisplayFilter to select displayed hierarchical levels.
- Distinguish between Close (one viewer) & Exit (all viewers).
- Small enhancments of DisplayStyle (Description & darkening).
* ./coriolis/src/crlcore/src/ccore :
- Xml display parser takes account of DisplayStyle description & darkening.
* ./coriolis/src/crlcore/src/cyclop :
- Enhanced COpenCellDialog : ability to open in a new Viewer.
- Bug : now Cyclop can start on a NULL Cell.
- Half Bug : when a Cell is loaded at start, call show() *before* setCell()
so all internal widget resizing due to the insertion of the toolbar,
menbar palette ... takes places before the Cell fit. Now the loaded
cell appears correctly fitted.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- New feature : Command support. Move command is now implemenented as a
Command and no longer built into the CellWidget. ZoomCommand implemented.
- New feature : SelectCommand support along with new HSelection widget to
browse the current selection. Selection is automatically kept up to
date.
- Note : Selection Browser & Netlist Browser pointer in the CellViewer are
resets to NULL on widget destruction by closing. We do not want to keep
big widget hiden. The are allocateds on demand.
- New feature : progessive grid. First display 5x5 then 5x5 + 1x1.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- Bug : default argument to setWeight() sould be QFont::Normal and not "-1".
Shows in Qt debug mode (catched by an assert).
- Bug : SelectCommand now keep the Selection check button in sync.
- Change : Palette doesn't show at start.
* ./hurricane :
- Now choice between static and dynamic linking. Note that thoses options are
mutually exclusives.
* ./coriolis/src/crlcore :
- New choice between static and dynamic linking.
- New feature : XmlParser optional warning when file not found (default is
to warn).
- New feature : now read environment from user's optional configuration file :
~/.environment.alliance.xml
- Potential bug : when loading/parsing file, the XmlReader hangs if the opened
file is a directory, and QFile allows directory opening :-(
_____________________________________________________________________________
* ./hurricane/src/viewer :
- New features : advanced selection widget/commands. Communications between
CellWidget, HSelectionPopup, HSelection & SelectCommand mostly done
through signal/slots (better undersdanding of the possibilities).
- Change : debug menu is hidden by default.
- Change : in all the QTableView rows are now correctly resized, even when
filtering is active (new forceRowHeight() slot). I'm pretty sure there's
a better way to handle this, but I haven't found it for now.
- Change : small naming normalisation in all those TableView.
2008-09-14 10:48:37 -05:00
|
|
|
_sortModel->setSourceModel ( _baseModel );
|
2008-07-10 04:22:36 -05:00
|
|
|
_sortModel->setDynamicSortFilter ( true );
|
|
|
|
_sortModel->setFilterKeyColumn ( 0 );
|
|
|
|
|
2010-03-23 07:54:50 -05:00
|
|
|
_view->setShowGrid ( false );
|
|
|
|
_view->setAlternatingRowColors ( true );
|
|
|
|
_view->setSelectionBehavior ( QAbstractItemView::SelectRows );
|
|
|
|
_view->setSortingEnabled ( true );
|
|
|
|
_view->setModel ( _sortModel );
|
2008-07-10 04:22:36 -05:00
|
|
|
|
* ./coriolis/src/crlcore/src/ccore/Banner.cpp
./coriolis/src/crlcore/src/ccore/crlcore/Banner.h
- Moved "CBanner" to "Banner", cleaned up, relooked, renamed functions, reorganised.
* ./coriolis/src/crlcore/src/ccore/ToolEngine.cpp
./coriolis/src/crlcore/src/ccore/crlcore/ToolEngine.h
./coriolis/src/crlcore/src/ccore/crlcore/ToolEngines.h
- Renamed CEngine to ToolEngine, cleaned up, relooked. All fonctions as static
members.
* ./coriolis/src/crlcore/src/ccore/Memory.cpp
./coriolis/src/crlcore/src/ccore/crlcore/Memory.h
- Renamed CMemory to Memory (as for Timer), minimal cleanup.
* ./coriolis/src/crlcore/src/ccore/crlcore/*.h
- Change anti-double inclusion constants from __XX_H__ to __CRL_XX_H__
(that is: include namespace) to avoid potential constant clashes with
other pieces of software.
* ./coriolis/src/crlcore/src/ccore/Utilities.cpp
./coriolis/src/crlcore/src/ccore/crlcore/Utilities.h
- Finish porting of all features from CUtils. Simplificated mstream using
member templates. Speedup mstream by using static_cast instead of
dynamic_cast.
* ./coriolis/src/crlcore/src/ccore/Environment.cpp
- Now read CORIOLIS_TOP from UNIX environment instead of hard-coded
directory (to my personnal installation...). See new method
"loadFromShell()", needs to be extended to all other variables.
_____________________________________________________________________________
* ./hurricane/src/hurricane/BasicLayer.{h,cpp}
- Suppress all graphics related members from Layer.
- Adding realName member for symbolic to real transformation.
* ./hurricane/src/hviewer/CellWidget.cpp
Bug: Now uses display threshold from Graphics (DisplayStyle) instead
of layer. Now layers appears/diseapears while zooming/unzooming.
* ./coriolis/src/crlcore :
- Separating clearly symbolic technology form real technology.
- Various file renaming.
_____________________________________________________________________________
* ./hurricane/src :
- Complete include re-organisation.
include/hurricane/*.h : kernel.
include/hurricane/viewer/*.h : hviewer.
include/hurricane/inspector/*.h : hinspector.
Includes have been moved into subdirectories of .cpp files (as in
crlcore).
- Now you must include files like this :
#include <hurricane/Layer.h>
#include <hurricane/viewer/CellViewer.h>
#include <hurricane/inspector/HInspector.h>
- Suppressed viewer specific include path in FindHURRICANE.cmake.
- Re-enabled documentation, with dot disabled as it seems to slow down
doxygen.
* ./crlcore/src/crlcore :
- Adapted to new Hurricane include scheme. Corrected bugs in it's own
include files (noticeably "Utilities.h").
_____________________________________________________________________________
* ./hurricane/doc/hurricane :
- Added (empty) directories "html" & "latex". Those directories are
created by doxygen, but as they are used in the CMakeList.txt, they
must be present even before the fisrt run of cmake (otherwise cmake
choke on them).
- Doxygen sets to only generate html & pdf (through LaTeX) documentation.
- All ".dox" files corrected to suit the new function members naming
scheme (some work may remains in code examples).
_____________________________________________________________________________
* ./hurricane/doc/hurricane/src/hurricane/Layer.{h.cpp}
./hurricane/doc/hurricane/src/hurricane/BasicLayer.{h.cpp}
- Changed "Type" to "Material" to fit better the OpenAccess semantic.
Introduce Material meanings : pWell, nWell, pImplant, nImplant
active, metal, cut, obstacle & other.
* ./coriolis/src/crlcore :
- Switched to the generic layer model. Updated technology XML configuration
files, technology parser & AP parser/driver.
- Note that the representation of transistors visually changes as it's now
modelled with Implant + Active.
_____________________________________________________________________________
* ./hurricane/src/hurricane :
- CompositeLayer replaced by 5 kind of symbolic layers :
RegularLayer (1 BasicLayer)
DiffusionLayer (2 or 3 BasicLayers: active+implant,well)
TransistorLayer (3 or 4 BasicLayers: poly+active+implant,well)
ContactLayer (4 or 5 BasicLayers: metal+cut+active+implant,well)
ViaLayer (3 BasicLayers: metal0+cut0+metal1)
- To better follow the OpenAccess semantic, the "obstacle" Material type
is renommed to "blockage".
- NB: doxygen documentation is not up-to-date and issue warnings.
* ./coriolis/src/crlcore :
- Migrate from CompositeLayer to the various SymbolicLayers.
- Symbolic rules are now closer to the reality so that a Cell displayed
with Hurricane should look identical to the Graal one.
- Complete rewrite of the AP parser. Much simplificated, do not try to
merge/articulates segments. This ensure a true rendering of the
Cell. Especially do not create contact to anchor diffusion segments,
which leads to very strange randering (DRC error as well).
_____________________________________________________________________________
* ./hurricane :
- Unit evolution to allow Symbolic (lamda) and Real (grid founder) mixing.
All functions related to Unit translations are now grouped under
the "DbU" class (another tribute to OpenAccess). "DbU" contains
only static attributes (constants) and methods. Unit itself becomes
a typedef inside this class, hence the file renaming from Unit.{h,cpp}
to DbU.{h.cpp}. Have to replace all instances of "Unit" by "DbU::Unit".
- Doc will be updated shortly.
_____________________________________________________________________________
* ./coriolis/src/crlcore :
- New AP parser : simplificated, no longer try to re-articulates segments.
More accurate representation of standart cell innards.
- More accurate symbolic extentions rules.
- Propagated changes from Hurricane about Unit/DbU.
_____________________________________________________________________________
* ./hurricane/src :
- Rename "pyext" to "isobar".
_____________________________________________________________________________
* ./hurricane/doc/hurricane :
- Documentation of DbU, replacing documentation of Unit.
* ./hurricane/src/hurricane/hurricane/DBo.h :
- Property set is now a mutable member, allowing const DBo to changes
their properties. Strange side effect on SlotAdapter in which we
need to declare two separate templates, one for const type and
another for non-const type.
- _getTypeName() defined to prevents noisy error message when a
derived class (from DBo) do not want to implement support for
the inspector.
_____________________________________________________________________________
Derrick Release !!
* ./hurricane/src
- Simplification of the Inspector internal mechanism. Simple, but with
more templates, means a slower compilation.
- The DbU::Unit problem : DbU::Unit are only typedef over long type,
so we cannot create a specific overload for them. Uses "getValueRecord()"
instead of "getRecord()"
- For HInspectorWidget add a "getClone()" method. Also add a global
object counter (for Record too) to track down memory leaks.
- Big rewrite of the HInspectorWidget : now do not leak memory like hell,
and only kept allocated the current Record and not the full stack
of them (instead, we stack Slots which are ligthweigh objects).
- Rename of "real" unit to "grid" unit.
- New conversion function "getPhysicalsPerGrid()" and associated
mechanism.
* ./coriolis/src/crlcore :
- Synchronise with the Hurricane modifications.
_____________________________________________________________________________
* ./hurricane/src/hurricane/DbU.{h,cpp} :
- Add forgotten converter function physicalToGrid(), physical units to
founder grid units.
* ./hurricane/src/hinspector :
- Added history support, and ability to move through the history stack.
- Fork support : by typing 'O' (capitalized 'o' letter) you can open
a new inspector on the current record.
_____________________________________________________________________________
* ./hurricane/src/hinspector :cla
- No more extra arguments in HInspectorWidget & RecordModel constructors.
Valid values have to be sets through setRootRecord() & setSlot().
- Key for forking sub-inspector is now *minus* 'o'.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- Bug: very tricky one. Do not emit "layoutAboutToChange()" signal
after destroying the Record used by the RecordModel but before
setting a new one and not setting the _record field to NULL.
Now setRootRecord() should work more than once.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- API : in CellWidget & CellViewer constructors now only takes the
parent QWidget.
- Renaming coordinates translation functions for more clarity.
- Adding a StatusBar showing mouse coordinates.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- Grid & Spot support (adjusted display threshold).
- Added new copyToScreen() functions for _drawingBuffer to screen refreshment
or partial copy (useful for Spot).
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- New Widget policy : a widget do not generate other widget : applied to
CellWidget which no longer supplies Palette & StatusBar.
API note: to associate a HPalette to a CellWidget (that is be able
to select layer) you have to call "bindToPalette()" on the CellWidget.
- Hurricane reusable widget names prefixed by 'H' : HMousePosition and
HPalette.
_____________________________________________________________________________
* ./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.
_____________________________________________________________________________
* ./hurricane/src/hurricane :
- New feature : geometrical Query with callback fonctions "a la" OpenAccess.
* ./hurricane/src/hviewer :
- Uses Query to draw display.
- Bug : when drawing segments as lines (width inferior to 1 pixel)
uses an alternate Pen which is one pixel wide and SolidLine styled,
avoiding strange orange lines... Mechanism implemented in sub-class
DrawingPlanes.
- Make selection always visible regardless the zoom level.
- CellWidget names it's most importants childs QWidget (mostly menus)
for later retrieval in customized sub-classes.
* ./coriolis/src/crlcore/src/cyclop :
- Created a simple derived class from CellViewer. Example of customisation
of CellWidget.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- Bug : now CellViewer can start with a NULL Cell, note that in this
case all displacement/zooming function of CellWidget became uneffective.
(display only a black screen)
- New widget : HGraphics to select the layout graphic's theme.
- New widget : HDisplayFilter to select displayed hierarchical levels.
- Distinguish between Close (one viewer) & Exit (all viewers).
- Small enhancments of DisplayStyle (Description & darkening).
* ./coriolis/src/crlcore/src/ccore :
- Xml display parser takes account of DisplayStyle description & darkening.
* ./coriolis/src/crlcore/src/cyclop :
- Enhanced COpenCellDialog : ability to open in a new Viewer.
- Bug : now Cyclop can start on a NULL Cell.
- Half Bug : when a Cell is loaded at start, call show() *before* setCell()
so all internal widget resizing due to the insertion of the toolbar,
menbar palette ... takes places before the Cell fit. Now the loaded
cell appears correctly fitted.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- New feature : Command support. Move command is now implemenented as a
Command and no longer built into the CellWidget. ZoomCommand implemented.
- New feature : SelectCommand support along with new HSelection widget to
browse the current selection. Selection is automatically kept up to
date.
- Note : Selection Browser & Netlist Browser pointer in the CellViewer are
resets to NULL on widget destruction by closing. We do not want to keep
big widget hiden. The are allocateds on demand.
- New feature : progessive grid. First display 5x5 then 5x5 + 1x1.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- Bug : default argument to setWeight() sould be QFont::Normal and not "-1".
Shows in Qt debug mode (catched by an assert).
- Bug : SelectCommand now keep the Selection check button in sync.
- Change : Palette doesn't show at start.
* ./hurricane :
- Now choice between static and dynamic linking. Note that thoses options are
mutually exclusives.
* ./coriolis/src/crlcore :
- New choice between static and dynamic linking.
- New feature : XmlParser optional warning when file not found (default is
to warn).
- New feature : now read environment from user's optional configuration file :
~/.environment.alliance.xml
- Potential bug : when loading/parsing file, the XmlReader hangs if the opened
file is a directory, and QFile allows directory opening :-(
_____________________________________________________________________________
* ./hurricane/src/viewer :
- New features : advanced selection widget/commands. Communications between
CellWidget, HSelectionPopup, HSelection & SelectCommand mostly done
through signal/slots (better undersdanding of the possibilities).
- Change : debug menu is hidden by default.
- Change : in all the QTableView rows are now correctly resized, even when
filtering is active (new forceRowHeight() slot). I'm pretty sure there's
a better way to handle this, but I haven't found it for now.
- Change : small naming normalisation in all those TableView.
2008-09-14 10:48:37 -05:00
|
|
|
QHeaderView* horizontalHeader = _view->horizontalHeader ();
|
2008-07-10 04:22:36 -05:00
|
|
|
horizontalHeader->setStretchLastSection ( true );
|
|
|
|
|
* ./coriolis/src/crlcore/src/ccore/Banner.cpp
./coriolis/src/crlcore/src/ccore/crlcore/Banner.h
- Moved "CBanner" to "Banner", cleaned up, relooked, renamed functions, reorganised.
* ./coriolis/src/crlcore/src/ccore/ToolEngine.cpp
./coriolis/src/crlcore/src/ccore/crlcore/ToolEngine.h
./coriolis/src/crlcore/src/ccore/crlcore/ToolEngines.h
- Renamed CEngine to ToolEngine, cleaned up, relooked. All fonctions as static
members.
* ./coriolis/src/crlcore/src/ccore/Memory.cpp
./coriolis/src/crlcore/src/ccore/crlcore/Memory.h
- Renamed CMemory to Memory (as for Timer), minimal cleanup.
* ./coriolis/src/crlcore/src/ccore/crlcore/*.h
- Change anti-double inclusion constants from __XX_H__ to __CRL_XX_H__
(that is: include namespace) to avoid potential constant clashes with
other pieces of software.
* ./coriolis/src/crlcore/src/ccore/Utilities.cpp
./coriolis/src/crlcore/src/ccore/crlcore/Utilities.h
- Finish porting of all features from CUtils. Simplificated mstream using
member templates. Speedup mstream by using static_cast instead of
dynamic_cast.
* ./coriolis/src/crlcore/src/ccore/Environment.cpp
- Now read CORIOLIS_TOP from UNIX environment instead of hard-coded
directory (to my personnal installation...). See new method
"loadFromShell()", needs to be extended to all other variables.
_____________________________________________________________________________
* ./hurricane/src/hurricane/BasicLayer.{h,cpp}
- Suppress all graphics related members from Layer.
- Adding realName member for symbolic to real transformation.
* ./hurricane/src/hviewer/CellWidget.cpp
Bug: Now uses display threshold from Graphics (DisplayStyle) instead
of layer. Now layers appears/diseapears while zooming/unzooming.
* ./coriolis/src/crlcore :
- Separating clearly symbolic technology form real technology.
- Various file renaming.
_____________________________________________________________________________
* ./hurricane/src :
- Complete include re-organisation.
include/hurricane/*.h : kernel.
include/hurricane/viewer/*.h : hviewer.
include/hurricane/inspector/*.h : hinspector.
Includes have been moved into subdirectories of .cpp files (as in
crlcore).
- Now you must include files like this :
#include <hurricane/Layer.h>
#include <hurricane/viewer/CellViewer.h>
#include <hurricane/inspector/HInspector.h>
- Suppressed viewer specific include path in FindHURRICANE.cmake.
- Re-enabled documentation, with dot disabled as it seems to slow down
doxygen.
* ./crlcore/src/crlcore :
- Adapted to new Hurricane include scheme. Corrected bugs in it's own
include files (noticeably "Utilities.h").
_____________________________________________________________________________
* ./hurricane/doc/hurricane :
- Added (empty) directories "html" & "latex". Those directories are
created by doxygen, but as they are used in the CMakeList.txt, they
must be present even before the fisrt run of cmake (otherwise cmake
choke on them).
- Doxygen sets to only generate html & pdf (through LaTeX) documentation.
- All ".dox" files corrected to suit the new function members naming
scheme (some work may remains in code examples).
_____________________________________________________________________________
* ./hurricane/doc/hurricane/src/hurricane/Layer.{h.cpp}
./hurricane/doc/hurricane/src/hurricane/BasicLayer.{h.cpp}
- Changed "Type" to "Material" to fit better the OpenAccess semantic.
Introduce Material meanings : pWell, nWell, pImplant, nImplant
active, metal, cut, obstacle & other.
* ./coriolis/src/crlcore :
- Switched to the generic layer model. Updated technology XML configuration
files, technology parser & AP parser/driver.
- Note that the representation of transistors visually changes as it's now
modelled with Implant + Active.
_____________________________________________________________________________
* ./hurricane/src/hurricane :
- CompositeLayer replaced by 5 kind of symbolic layers :
RegularLayer (1 BasicLayer)
DiffusionLayer (2 or 3 BasicLayers: active+implant,well)
TransistorLayer (3 or 4 BasicLayers: poly+active+implant,well)
ContactLayer (4 or 5 BasicLayers: metal+cut+active+implant,well)
ViaLayer (3 BasicLayers: metal0+cut0+metal1)
- To better follow the OpenAccess semantic, the "obstacle" Material type
is renommed to "blockage".
- NB: doxygen documentation is not up-to-date and issue warnings.
* ./coriolis/src/crlcore :
- Migrate from CompositeLayer to the various SymbolicLayers.
- Symbolic rules are now closer to the reality so that a Cell displayed
with Hurricane should look identical to the Graal one.
- Complete rewrite of the AP parser. Much simplificated, do not try to
merge/articulates segments. This ensure a true rendering of the
Cell. Especially do not create contact to anchor diffusion segments,
which leads to very strange randering (DRC error as well).
_____________________________________________________________________________
* ./hurricane :
- Unit evolution to allow Symbolic (lamda) and Real (grid founder) mixing.
All functions related to Unit translations are now grouped under
the "DbU" class (another tribute to OpenAccess). "DbU" contains
only static attributes (constants) and methods. Unit itself becomes
a typedef inside this class, hence the file renaming from Unit.{h,cpp}
to DbU.{h.cpp}. Have to replace all instances of "Unit" by "DbU::Unit".
- Doc will be updated shortly.
_____________________________________________________________________________
* ./coriolis/src/crlcore :
- New AP parser : simplificated, no longer try to re-articulates segments.
More accurate representation of standart cell innards.
- More accurate symbolic extentions rules.
- Propagated changes from Hurricane about Unit/DbU.
_____________________________________________________________________________
* ./hurricane/src :
- Rename "pyext" to "isobar".
_____________________________________________________________________________
* ./hurricane/doc/hurricane :
- Documentation of DbU, replacing documentation of Unit.
* ./hurricane/src/hurricane/hurricane/DBo.h :
- Property set is now a mutable member, allowing const DBo to changes
their properties. Strange side effect on SlotAdapter in which we
need to declare two separate templates, one for const type and
another for non-const type.
- _getTypeName() defined to prevents noisy error message when a
derived class (from DBo) do not want to implement support for
the inspector.
_____________________________________________________________________________
Derrick Release !!
* ./hurricane/src
- Simplification of the Inspector internal mechanism. Simple, but with
more templates, means a slower compilation.
- The DbU::Unit problem : DbU::Unit are only typedef over long type,
so we cannot create a specific overload for them. Uses "getValueRecord()"
instead of "getRecord()"
- For HInspectorWidget add a "getClone()" method. Also add a global
object counter (for Record too) to track down memory leaks.
- Big rewrite of the HInspectorWidget : now do not leak memory like hell,
and only kept allocated the current Record and not the full stack
of them (instead, we stack Slots which are ligthweigh objects).
- Rename of "real" unit to "grid" unit.
- New conversion function "getPhysicalsPerGrid()" and associated
mechanism.
* ./coriolis/src/crlcore :
- Synchronise with the Hurricane modifications.
_____________________________________________________________________________
* ./hurricane/src/hurricane/DbU.{h,cpp} :
- Add forgotten converter function physicalToGrid(), physical units to
founder grid units.
* ./hurricane/src/hinspector :
- Added history support, and ability to move through the history stack.
- Fork support : by typing 'O' (capitalized 'o' letter) you can open
a new inspector on the current record.
_____________________________________________________________________________
* ./hurricane/src/hinspector :cla
- No more extra arguments in HInspectorWidget & RecordModel constructors.
Valid values have to be sets through setRootRecord() & setSlot().
- Key for forking sub-inspector is now *minus* 'o'.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- Bug: very tricky one. Do not emit "layoutAboutToChange()" signal
after destroying the Record used by the RecordModel but before
setting a new one and not setting the _record field to NULL.
Now setRootRecord() should work more than once.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- API : in CellWidget & CellViewer constructors now only takes the
parent QWidget.
- Renaming coordinates translation functions for more clarity.
- Adding a StatusBar showing mouse coordinates.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- Grid & Spot support (adjusted display threshold).
- Added new copyToScreen() functions for _drawingBuffer to screen refreshment
or partial copy (useful for Spot).
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- New Widget policy : a widget do not generate other widget : applied to
CellWidget which no longer supplies Palette & StatusBar.
API note: to associate a HPalette to a CellWidget (that is be able
to select layer) you have to call "bindToPalette()" on the CellWidget.
- Hurricane reusable widget names prefixed by 'H' : HMousePosition and
HPalette.
_____________________________________________________________________________
* ./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.
_____________________________________________________________________________
* ./hurricane/src/hurricane :
- New feature : geometrical Query with callback fonctions "a la" OpenAccess.
* ./hurricane/src/hviewer :
- Uses Query to draw display.
- Bug : when drawing segments as lines (width inferior to 1 pixel)
uses an alternate Pen which is one pixel wide and SolidLine styled,
avoiding strange orange lines... Mechanism implemented in sub-class
DrawingPlanes.
- Make selection always visible regardless the zoom level.
- CellWidget names it's most importants childs QWidget (mostly menus)
for later retrieval in customized sub-classes.
* ./coriolis/src/crlcore/src/cyclop :
- Created a simple derived class from CellViewer. Example of customisation
of CellWidget.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- Bug : now CellViewer can start with a NULL Cell, note that in this
case all displacement/zooming function of CellWidget became uneffective.
(display only a black screen)
- New widget : HGraphics to select the layout graphic's theme.
- New widget : HDisplayFilter to select displayed hierarchical levels.
- Distinguish between Close (one viewer) & Exit (all viewers).
- Small enhancments of DisplayStyle (Description & darkening).
* ./coriolis/src/crlcore/src/ccore :
- Xml display parser takes account of DisplayStyle description & darkening.
* ./coriolis/src/crlcore/src/cyclop :
- Enhanced COpenCellDialog : ability to open in a new Viewer.
- Bug : now Cyclop can start on a NULL Cell.
- Half Bug : when a Cell is loaded at start, call show() *before* setCell()
so all internal widget resizing due to the insertion of the toolbar,
menbar palette ... takes places before the Cell fit. Now the loaded
cell appears correctly fitted.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- New feature : Command support. Move command is now implemenented as a
Command and no longer built into the CellWidget. ZoomCommand implemented.
- New feature : SelectCommand support along with new HSelection widget to
browse the current selection. Selection is automatically kept up to
date.
- Note : Selection Browser & Netlist Browser pointer in the CellViewer are
resets to NULL on widget destruction by closing. We do not want to keep
big widget hiden. The are allocateds on demand.
- New feature : progessive grid. First display 5x5 then 5x5 + 1x1.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- Bug : default argument to setWeight() sould be QFont::Normal and not "-1".
Shows in Qt debug mode (catched by an assert).
- Bug : SelectCommand now keep the Selection check button in sync.
- Change : Palette doesn't show at start.
* ./hurricane :
- Now choice between static and dynamic linking. Note that thoses options are
mutually exclusives.
* ./coriolis/src/crlcore :
- New choice between static and dynamic linking.
- New feature : XmlParser optional warning when file not found (default is
to warn).
- New feature : now read environment from user's optional configuration file :
~/.environment.alliance.xml
- Potential bug : when loading/parsing file, the XmlReader hangs if the opened
file is a directory, and QFile allows directory opening :-(
_____________________________________________________________________________
* ./hurricane/src/viewer :
- New features : advanced selection widget/commands. Communications between
CellWidget, HSelectionPopup, HSelection & SelectCommand mostly done
through signal/slots (better undersdanding of the possibilities).
- Change : debug menu is hidden by default.
- Change : in all the QTableView rows are now correctly resized, even when
filtering is active (new forceRowHeight() slot). I'm pretty sure there's
a better way to handle this, but I haven't found it for now.
- Change : small naming normalisation in all those TableView.
2008-09-14 10:48:37 -05:00
|
|
|
QHeaderView* verticalHeader = _view->verticalHeader ();
|
2008-07-10 04:22:36 -05:00
|
|
|
verticalHeader->setVisible ( false );
|
2010-03-23 07:54:50 -05:00
|
|
|
verticalHeader->setDefaultSectionSize ( _rowHeight );
|
|
|
|
|
|
|
|
// verticalHeader->setStyleSheet( "QHeaderView::section {"
|
|
|
|
// "padding-bottom: 0px;"
|
|
|
|
// "padding-top: 0px;"
|
|
|
|
// "padding-left: 0px;"
|
|
|
|
// "padding-right: 1px;"
|
|
|
|
// "margin: 0px;"
|
|
|
|
// "}"
|
|
|
|
// );
|
2008-07-10 04:22:36 -05:00
|
|
|
|
|
|
|
_filterPatternLineEdit = new QLineEdit(this);
|
|
|
|
QLabel* filterPatternLabel = new QLabel(tr("&Filter pattern:"), this);
|
|
|
|
filterPatternLabel->setBuddy(_filterPatternLineEdit);
|
|
|
|
|
2008-11-26 03:35:07 -06:00
|
|
|
QGridLayout* gLayout = new QGridLayout();
|
|
|
|
gLayout->addWidget(_view , 1, 0, 1, 2);
|
|
|
|
gLayout->addWidget(filterPatternLabel , 2, 0);
|
|
|
|
gLayout->addWidget(_filterPatternLineEdit, 2, 1);
|
2008-07-10 04:22:36 -05:00
|
|
|
|
2008-11-26 03:35:07 -06:00
|
|
|
setLayout ( gLayout );
|
2008-07-10 04:22:36 -05:00
|
|
|
|
2009-02-02 08:45:48 -06:00
|
|
|
QAction* fitAction = new QAction ( tr("&Fit to Net"), this );
|
|
|
|
fitAction->setShortcut ( QKeySequence(tr("CTRL+F")) );
|
|
|
|
fitAction->setStatusTip ( tr("Fit the view to the Net's bounding box") );
|
|
|
|
addAction ( fitAction );
|
|
|
|
|
2008-11-26 03:35:07 -06:00
|
|
|
connect ( _filterPatternLineEdit , SIGNAL(textChanged(const QString &))
|
2008-11-28 17:10:39 -06:00
|
|
|
, this , SLOT (textFilterChanged()) );
|
|
|
|
connect ( _view->selectionModel(), SIGNAL(selectionChanged(const QItemSelection&,const QItemSelection&))
|
|
|
|
, this , SLOT (updateSelecteds (const QItemSelection&,const QItemSelection&)) );
|
2009-02-02 08:45:48 -06:00
|
|
|
connect ( fitAction , SIGNAL(triggered ()), this, SLOT(fitToNet ()) );
|
2008-07-10 04:22:36 -05:00
|
|
|
|
2008-11-26 03:35:07 -06:00
|
|
|
resize(300, 300);
|
2008-07-10 04:22:36 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2008-11-26 03:35:07 -06:00
|
|
|
void NetlistWidget::goTo ( int delta )
|
2008-07-10 04:22:36 -05:00
|
|
|
{
|
2008-11-26 03:35:07 -06:00
|
|
|
if ( delta == 0 ) return;
|
|
|
|
|
|
|
|
QModelIndex newIndex = _sortModel->index ( _view->currentIndex().row()+delta, 0, QModelIndex() );
|
|
|
|
|
|
|
|
if ( newIndex.isValid() )
|
|
|
|
_view->selectRow ( newIndex.row() );
|
2008-07-10 04:22:36 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2009-03-03 16:27:03 -06:00
|
|
|
void NetlistWidget::updateSelecteds ()
|
|
|
|
{
|
|
|
|
_forceReselect = true;
|
|
|
|
|
|
|
|
QItemSelection dummy;
|
|
|
|
updateSelecteds ( dummy, dummy );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2008-11-28 17:10:39 -06:00
|
|
|
void NetlistWidget::updateSelecteds ( const QItemSelection& , const QItemSelection& )
|
2008-07-10 04:22:36 -05:00
|
|
|
{
|
2009-02-03 09:05:05 -06:00
|
|
|
if ( _cellWidget ) _cellWidget->openRefreshSession ();
|
2008-11-26 03:35:07 -06:00
|
|
|
|
2008-11-28 17:10:39 -06:00
|
|
|
_selecteds.resetAccesses ();
|
2008-07-10 04:22:36 -05:00
|
|
|
|
2009-02-02 08:45:48 -06:00
|
|
|
const Net* net;
|
2008-11-28 17:10:39 -06:00
|
|
|
QModelIndexList iList = _view->selectionModel()->selectedRows();
|
|
|
|
for ( int i=0 ; i<iList.size() ; i++ ) {
|
|
|
|
net = _baseModel->getNet ( _sortModel->mapToSource(iList[i]).row() );
|
|
|
|
if ( net )
|
|
|
|
_selecteds.insert ( net );
|
|
|
|
}
|
2008-07-10 04:22:36 -05:00
|
|
|
|
2009-03-03 16:27:03 -06:00
|
|
|
if ( _forceReselect ) {
|
|
|
|
_selecteds.forceInserteds();
|
|
|
|
_forceReselect = false;
|
|
|
|
}
|
|
|
|
|
2008-11-28 17:10:39 -06:00
|
|
|
SelectedNetSet::iterator remove;
|
|
|
|
SelectedNetSet::iterator isel = _selecteds.begin ();
|
|
|
|
while ( isel != _selecteds.end() ) {
|
|
|
|
switch ( isel->getAccesses() ) {
|
|
|
|
case 1: break;
|
|
|
|
case 64:
|
2010-12-04 09:22:54 -06:00
|
|
|
emit netSelected ( Occurrence(isel->getNet()) );
|
2008-11-28 17:10:39 -06:00
|
|
|
break;
|
|
|
|
case 0:
|
2010-12-04 09:22:54 -06:00
|
|
|
emit netUnselected ( Occurrence(isel->getNet()) );
|
2008-11-28 17:10:39 -06:00
|
|
|
remove = isel;
|
|
|
|
++isel;
|
|
|
|
_selecteds.erase ( remove );
|
|
|
|
continue;
|
|
|
|
default:
|
|
|
|
cerr << Bug("NetlistWidget::updateSelecteds(): invalid code %d"
|
|
|
|
,isel->getAccesses()) << endl;
|
|
|
|
}
|
|
|
|
++isel;
|
|
|
|
}
|
2008-07-10 04:22:36 -05:00
|
|
|
|
2009-02-03 09:05:05 -06:00
|
|
|
if ( _cellWidget ) _cellWidget->closeRefreshSession ();
|
2008-11-26 03:35:07 -06:00
|
|
|
}
|
2008-08-27 09:06:06 -05:00
|
|
|
|
|
|
|
|
2008-11-26 03:35:07 -06:00
|
|
|
void NetlistWidget::textFilterChanged ()
|
|
|
|
{
|
|
|
|
_sortModel->setFilterRegExp ( _filterPatternLineEdit->text() );
|
2009-03-03 16:27:03 -06:00
|
|
|
//updateSelecteds ();
|
2008-08-27 09:06:06 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2009-02-02 08:45:48 -06:00
|
|
|
void NetlistWidget::fitToNet ()
|
|
|
|
{
|
|
|
|
const Net* net = _baseModel->getNet ( _sortModel->mapToSource(_view->currentIndex()).row() );
|
|
|
|
|
|
|
|
if ( net ) emit netFitted ( net );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2008-07-10 04:22:36 -05:00
|
|
|
} // End of Hurricane namespace.
|