- New: In Occurrence, new method getBoundingBox(const BasicLayer*). Returns
a different value from getBoundingBox() only if the Entity is a Component.
Long awaited by the Solstice extractor.
- Change: In ExtensionSlice, keep track of the created ExtensionSlice by name
to avoid consuming a new bit each time an ExtensionGo slice is deallocated/
re-allocated (happens often in Solstice/Equinox).
- Backtrack: In SelectCommand, do not uses::boost regex as their library have
not been compiled for 32 bits support under OSX Snow Leopard ?!$#.
- Bug: In Command.h, include and uses std::string has in some rare case no one
has done it before.
Now a command is associated to one CellWidget exactly, the active flag
was shared among all CellWidget which was an error (do not show unless
we start to multithread).
- New: In SelectCommand/SelectionPopup/SelectionPopupModel now there are three
selection mode:
Mode 0: Select all Component under point.
Mode 1: Select whole nets whose at least one component is under point.
Mode 2: Same as 1, but hide all cluttering "*nymous*" nets.
Rotation through the mode is done by pressing repeadedly the 'N' key.
The various select modes are implemented through "sub" Collections.
- export MousePositionWidget.h so pharos can use it (displays the (x,y) mouse position in status bar)
ADDS
- add a getOnPhysicalGrid() in DbU
- add getPhysical and getOnPhysicalGrid functions in PyDbU and also defines useful CONSTANTS
- New: In DbU, create a "onCustomGrid(point,step,round)" method to place
a point on an arbitrary grid. That different from the real or symbolic
ones.
- Bug: In DbU, all the snap function where bugged when passed negatives
coordinates.
- New: In DbU, new conversion function, DbU::getPhysical() to translate into
physical (metric) system.
- New: In CellWidget, separate the "Snap Grid" (real or symbolic) from the
cursor position. The cursor position will now be displayed in half-lambda
(symbolic mode) or founder grid unit (real mode).
That can be changed trough the CellWidget::setCursorStep(DbU::Unit)
method.
- New: In CellViewer/ControllerWidget, the CTRL+I keys toggle the visibility
of the Controller instead of systematically showing it.
I rewrited everything like it was in Coriolis-1 (PyType_create) and reuse the precedent hierarchical system (PyTypeInheritedObjectDefinition)
With all these changes Pharos is able to run the same script several times without any error (and not only 7 times before crash)
Maybe there are still some bugs but it seems ok for the moment :D.
does not throw Error anymore but cerr and return
this way it is possible to execute python script more than one time
Adding trace information for DirectDeleteMethod
- Adds a CMAKE_POLICY CMP0003 has we've upgraded to cmake 2.6.
* ./hurricane/src/hurricane :
- Bug: In Interval, the merge method wasn't working if the "other"
Interval was empty (doing merge) instead of nothing. This was
a non-symetrical behavior.
* ./hurricane/src/hviewer :
- New: In CellViewer, adds an accessor to the ControlerWidget widget.
- Bug: In CellViewer::imageDisplay(), when using GtkStyle the file
dialog seems to core dump if the directory is not specified.
Now systematically starts with the current working directory.
- Change: In Technology::getViaBetween(Layer*,Layer*) if the two layers
are identicals, return the layer instead of NULL (mostly for mono-
metallic VIAs).
* ./hurricane/src/hviewer :
- Bug: In CellWidget::redrawSelection(), correct calculation of the
selected Instances abutment box. We must apply the occurrence path
transformation to the instance transformation and not the other way
around.
- Bug: In SelectorLess(), Instance must be *inferior* to Components as
they are drawed after in CellWidget::redrawSelection().
o added bool noScale to hide colorScale (only useful for congestionMap)
o respect the cellWidget aspect ratio when saving
- Adding 'Save to image' functino which call a QFileDialog to choose file name
- Highlight a masterCell's abutmentbox when it's selected (there is a bug in this)
- Bug: In CellWidget, the drawRulers was copying an enlarged redrawArea into
the Selection Plane causing the selection to deseapear gradually when
slowly shifting.
- New: In PaletteWidget: allow to select the number of rows of the grid
widget (up to "infinite", meaning one column). Allow to hide entire
groups in the widget.
- Change: Consistent encapsulation of "_active" in Command and all it's derived
classes.
- New: support for Rulers. Start drawing by pressing Shift+L.Button, finish
by pressing it again. To cancel a Ruler press Shift+R.Button.
Drawing style support also added : "text.ruler". Rulers are always
visibles (display threshold sets to zero), only the numbers of graduations
displayeds changes (at least 5 pixels between two graduations).
- Bug : In Timer.h, forgot to declare the specialized getString()
template, thus preventing the timer to be correctly display in
output streams.
- Bug : In CellWidget::_redraw(), uses "paintersBegin()" instead of
"painterBegin()" (whithout the "s"). The former open painters for
both normal & selection planes which are subsequently accessed by
"setPen()". The laters opens only the normal plane painter resulting
in warnings for the selection plane painter (shows only from Qt 4.5).
- New : In CellWidget, ability to support the physical grid (not only the
symbolic grid). Added selection symbolic/real in the DisplayFilter.
- Change : add to Technology and all the Layers sub-classes a
"_onDbuChange(float)" method.
This is due to the fact that the symbolic technology is loaded first
into the DataBase (needed for defining the BasicLayer ordering) along with
all the symbolic dimensions for the symbolic Layers. Only afterward, we
load the real technology (hcmos9 for instance) which will sets the
"grids per lambda" factor to it's true value, changing the meaning of
the already loaded symbolic values. Then, it is necessary to scale those
values so they are coherent with the new "GPL" factor, hence the
"_onDbuChange()" function.
NEVER USE THIS FUNCTION AFTER THE TECHNOLOGY HAS BEEN LOADED, it would
render all symbolic coordinates false...
- Bug: In the various Property sub-types dox file the Hurricane namespace
wasn't closed, resulting in the deseapearance of thoses classes in the
documentation (painful to diagnose).
Still, the doc for the derived Property mostly remains to be written.
- Bug: clearing some remnants of a merge conflict in DataBase.dox.
- Change: in CellWidget::DrawingPlane, complete replacement of hard-coded
numeric indexes by the PlaneId enum values.
- Change: in SelectionWidget, filter on the Occurrence name instead of the
path name. Todo: add a radio button to select on witch column we sort.
- Bug: in SelectionWidget, when the filter is active, remap the index
of the toggled occurrence through the filter.
* ./hurricane,
./coriolis/src/katabatic,
./coriolis/src/kite :
- Change: documentation building with doxygen is now optional and disabled
by default. To enable documentation generation run cmake with the
following argument :
-D "BUILD_DOC:STRING=ON"
Or edit the cmake cache variable "BUILD_DOC".
- Bug: destructor of Technology was destroying some Layers twice. Destruction
of Layer was done by a loop over a multimap<> that could contains more
than one entry of a Layer... Now using a loop over the IntrusiveMap.
- Change: Reorganization of NetExternalComponents property, all functions
are now static functions members as the property name.
- Bug: in CellViewer::setCell(), do not try to get the name of the cell if
it's a NULL pointer... Solve the cyclop "empty cell" coredump problem.
- New feature : dbo_destroy<> a shared_ptr<> that calls the destroy method
of an object, specially tailored for DBo. Application in Cyclop.
- Bug: correction of the bad keyPress event handling in InspectorWidget
(had to press twice the key for the action to be transmitted).
Uses an eventFilter() at InspectorWidget instead of a keyPressEvent()
overload. The keyPress event is first received by the QTableView then
transmitted to the upper level. The eventFilter allows the InspectorWidget
to catch the event *before* it gets to QTableView (but let pass thoses
it don't want).
- Bug: idem for SeletionWidget.
- Change: do not draw the rectangular area of AreaCommand until it is bigger
than a given threshold (programmable). Affect ZoomCommand and
SelectCommand. ZoomCommand no longer issue a warning when the zoom is
to small.
- New feature: fit to net in the NetlistWidget. Uses simple contextual menu,
another way to avoid overloading keyPressEvent().
- Change: in Query, the filter has now it's own subtype: Query::Mask.
- Change: enhancement for the "start" model of signal propagation, used to
re-implement the DisplayFilterWidget.
- Change: more clear policy for signal emission: a signal must be emitted
by any "setter" method (setStartLevel(), setStopLevel(), ...). Has to
be enforced for all setter (work in progress).
- Change: re-implemenation of the delayed refresh mechanism. No more flags
propaged througout the functions calls but a session mechanism instead.
See CellWidget::openRefreshSession() & CellWidget::closeRefreshSession().
Nothing is actually drawn until the last session is closed.
Session mechanism can be invoked by signals/slots, see NetlistWidget.
- Change: less dangerous key mapping:
'z' : zoom in.
'm' : zoom out.
'CTRL+z' : previous zoom level.
'CTRL+m' : next zoom level.
'CTRL+Up' : back in hierarchy.
'CTRL+Down' : go down in hierarchy.
'SHIFT+Up' : back in hierarchy stack.
'SHIFT+Down' : go down in hierarchy stack.
- Change: simpler implementation of the occurence selection mechanims
between SelectionPopup, SelectCommand, SelectionWidget & CellWidget.
Consistent (identical) names of signal/slots : selectionToggled() and
toggleSelection().
- Change: disable QApplication::processEvent() has it seems to slow down
display refreshment on Mac OS. This may be a side effect of another
problem not yet diagnosed.
- New feature: CellWidget internal state enhancement : now manage an
history of scales (through 'u' & 'd').
- New feature: hierarchical exploration through 'CTRL+u' & 'CTRL+d'.
On second though, what a bad key mapping. To be corrected soon...
- New feature: CellWidget now store it's internal state in a separate
nested object CellWidgetState. The State is work in progress, currently
is store the Cell*, showSelection, cumulativeSelection, selection
criterions and showBoundaries. showBoundaries may evolve to be stored
as part of the Palette's state.
- Change: implement the "start" propagation model signal/slot for
showSelection, cumulativeSelection & showBoundaries. The main concern
is to avoid signals loop. See SelectionWidget::setShowSelection(bool)
for an example.
- Change: supress the minimumSize of the SelectionWidget (200 pixels is a
waste of space when the Path is empty).
- Optimization: rework the display speed and display policies. Now redraw
requests no longer interrupt themselves, provoking a lagging effect but
a more fluid display (Events interruption is working nonetheless).
Small rework on RedrawManger: more meaningful attributes names and
code simplification.
The previous behavior can be re-enabled with the ALLOW_REQUEST_INTERRUPT
define.
Try to reduce to the min the number of pixmap copy, less calls to
DrawingPlanes & repaint.
The hurricaneAMS transview so regain it's previous fluidity when
parameters are changed.
- Change: the _stripWidth can now be adjusted.
- Note on profiling: sysprof, or rusage do not take account for operations
outside the processus, so for example, when a pixmap copy is done, it
doesn't show any cost in the processus but it's paid in Xorg.
The operation seems to be fast while it's slower instead.