- Bug: redraw the palette layer samples whenever the style changes. Uses a
new, more clear model to transmit signals. A star model where the
CellWidget is the center, signals propagate a void pointer which tells
the emitter to avoid looping. First a slave emit the signal to the
CellWidget. When the CellWidget receive the signal it's transmitted to
all slave widgets.
- New feature: ExceptionWidget (derived from QDialog) to display properly
catched exceptions. The Abort button of the Dialog forces the program
to core-dump with a SIGSEGV. The "Try to Continue" resumes the program,
which is higtly to crash anyway...
- New feature: a HApplication in replacement of the QApplication to catch
exceptions in the notify() function, that is exceptions that could be
throwed inside event handlers.
- New feature: support for breakpoints with a selectable stop level.
See Breakpoint.h. Graphical popup automatically when Graphics is
enabled.
User can select what to do when a breakpoint is reached and valid
through a callback mechanism.
A disabled example is avalaible in GraphicKatabaticEngine.cpp.
- Ergonomy : reverse the zooming direction of the mouse weel (some said
it's like in MS Word...).
- Bug: accept zoom when bottom right is below lower left (absolute value).
The dbuToDisplayRect function now has a boolean argument which is true by default and define the way the rectangle is passed to display.
If true, it's like we pass 2 corners to define the rectangle
If false, it's like we pass the bottom left corner, width and height (directly QT compliant)
- Bug : Timer.h/.cpp, friend overload of the operator<<(ostream&) introduce
a ostream<<() function in the Hurricane namespace which prevent the
overload to resolve correctly under MacOS X (gcc 4.0).
* ./hurricane/src/hurricane :
- New feature: Display support for Rubber, three modes of representation : centric,
barycentric and (pseudo) steiner.
- New feature: ability to generate pdf/ps snapshot using QPrinter. Can perform
an exact snapshot or print a synthetic A4 (choice hard-wired for now).
- Change: display styles reorganisation, recreation of the "Alliance Graal" look.
- New feature: darkening managment at CellWidget level, to allow Extension to
darken when unselecteds.
- New feature: ExtentionGo are now managed by the selection redraw function.
- New feature: Selector set is now sorted by object type, this allow to speedup
the redraw function which will now perform only one loop.
- New feature : remove Hurricane's original basic Timer and replace it with
the one from Coriolis/crlcore. Added ability to get the elapsed time
without stopping the timer.
* ./hurricane/src/hviewer :
- New feature : complete redesign of the drawing refreshment loop. Now there's
a "secondary" loop managed by the "RedrawManager" object which bufferize
the redraw requests. The "_redraw()" function has been made interruptible
at coarse level (between layer).
Important note about the redrawing design : the QApplication::processEvents()
function cannot be called inside the paintEvent() functions/sub-functions.
So the drawing is separated from the paintEvent. The paintEvent() performs
only quick pixmap buffer copy. The _redraw() is triggered by the move/refresh
events bufferized by the RedrawManager, flush periodically the loop event
and send direct (not posted) paint events (repaint() call).
Another constraint is that the displayed Widget can only be painted during
the paintEvent(). Otherwise the painter refuses to initialize.
- Ergonomy : adopt more standard key/mouse bindings. No more CTRL key for zooming
(too small zooms are rejecteds, thresold at 10x10 pixels). Continuous move
is enabled with SPACE+mouse.
* ./coriolis/src/unicorn :
- Reorganisation : Unicorn is now supplied as a separate library. Due to a limitation
of cmake the binary can no longer be named "unicorn" as it conflicts with the
library name. So it's been renamed into unimain (better candidates?)
- Bug: Bad detection of libraries in HURRICANE_CHECK_LIBRARY macro.
- New feature : add a "selectable" characteric on drawable objects. Allows
to selectively select objects through dragging. Note that it's implemented
in term of BasicLayer & ExtensionGo. If an object (Component) has a Layer
composed of more than one BasicLayer it will become selectable as soon as
one of it's BasicLayer is selectable.
Bug : make the Netlist Browser filter to work again. Have to ignore
the keyPressEvent in NetlistWidget (a bit counter-intuitive:
ignore event in NetlistWidget to have them accounteds in the
SortFilter children widget).
- New feature : full uses of SelectionModel in NetlistWidget, allow multiple
selection. New option to automatically select Nets from the Netlist
browser into the SelectionWidget (temporarily set up in cumulative
mode).
- Rename : SelectorCommand into SelectorCriterion (file name renaming in
next commit).
- Reorganisazion : in CellWidget, SelectorCommand/SelectorCriterions operations
are gathered in a single object : SelectionCriterions.
- Bug : InspectorWidget was using Record from Occurrences in the SelectionWidget.
but those Occurences were created on the fly by the CellWidget/Selectors.
So, whenever the selection changes the Occurrence may diseapear leaving a
bad Record in the InspectorWidget (core dump).
Now, the TabInspector keep a copy of the Inspected occurrence, so it
can go through any selection change.
In addition, the InspectorWidget could be passed Occurrence that it keeps
local copy along with Record*.
- New Feature : internal, first step toward an extensible ControllerWidget :
now all Tab are derived classes of ControllerTab.
- New feature : first try at a more ergonomic interface. The "Controller",
a simple Tabbed window for managing all settings.
Reorganize the way things are selected (Nets, Area, single), aglomerated
selection.
Use a "logical" progression Netlist -> Selection -> Inspector.
- In CellWiddget, new Selection managment mecanism to ensure persistent
Selection across cell modifications.
New signals/slots to manage Cell modification :
a. - cellPreModificated() : must be launched *before* the Cell modification
by the tool about to modify it.
b. - cellPostModificated() : must be lauched *after* the Cell modification
This mecanism may be amended to automatically fit with the UpdateSessions.
- Cleanup (part 1) : more consistent name for widgets, replace the 'H' prefix by
a "Widget" suffix. Objects are modified by not filenames yet (due to svn not
liking file renaming and modications at the same time).
- Improved support for static building in CMakeList.txt.
deprecated conversion from string constant to char*
still one occurrence of this warning, but I don't know how to treat
it between C++ and Python C API.
- Bug : memory leak in Query.h. When we do try a levelDown() remove the
Instance locator that have been created (and is not valid).
- To trace the numbers of Instances Locator add a counter inside the
QuadTree. The code is commented but could be useful in case of
another memory leak...
- Bug : double deletion of ExtensionSlice, one in Cell and one in
ExtensionGo::unmaterialize() when the last ExtensionGo is removed.
Keep the one in unmaterialize.
- Bug : missing "_preDestroy()" in ExtensionGo (not really a bug but may
be useful in the future).
- Modification : begin to uses "ltrace(level)" instead of "trace()".
Levels affecteds to Hurricane are 0-10 (the lowest).
- New : DebugSession for a selective trace activation, based on "symbols",
that is, void pointers to objects.
- New : ExtensionGos are now selectables (integrated to the
Cell_OccurrencesUnder collection). Note that they are manageds as Gos
and *not* ExtensionGos.
- New : Bug flavor of Exception (sibling of Error & Warning).
* ./hurricane/src/hviewer :
- Change : ExtensionGos are now hidden by default.
./hurricane/src/hurricane/ExtensionSlice.cpp
./hurricane/src/hurricane/ExtensionGo.h
./hurricane/src/hurricane/ExtensionGo.cpp :
- New : support for user-based Gos & Slices. A normal slice is a couple
(Layer,QuadTree) while a ExtensionSlice is a couple (Name,Quadtree).
Note that for efficiency ExtensionSlices also uses a mask bitmap.
This new feature implies modifications of the Cell QuadTrees and
the Query callback/class. CellWidget & Palette also updated to allow
the drawing of thoses new slices.
* ./coriolis/src/crlcore/src/cyclop/DemoGo.{h,cpp} :
- Example : how to construct & uses an ExtensionGo (draw a thick red
box around the Cell's abutment box).
./hurricane/src/hurricane/Name.cpp :
- New feature : Allocate a static member "_emptyName" which could be used
to manage effeciently empty Name (for functions returning reference on
Name, by example).
* ./hurricane/src/hurricane/Property.h
./hurricane/src/hurricane/Property.cpp :
- Change : Now StandardPrivateProperty & StandardSharedProperty templates
systematically uses static member for the property's name. This leads
to suppress the "const Name&" argument when creating a property, and
the _name member is no longer present in each object instance.
- Change : Property must now be created/get through static methods :
StandardPrivateProperty<Value>::get ( DBo* );
StandardPrivateProperty<Value>::create ( DBo* );
StandardPrivateProperty<Value>::create ( DBo*, const Value& );
Note that, as before, the Value type must provide a default constructor
and a copy constructor.
* ./hurricane/src/hviewer/DisplayStyle.cpp :
Bug : early Graphics::enable() no longer makes application crash.
Do not iterate over a STL set while erasing (all) elements...
The set is stable over erasure, but if the iterator is pointing
to the erased element we cannot do a "++". Increment first, erase
after.
- New feature : display instances names (vertical on bottom left corner
of the AB). New CellWidget capability : drawText(). Small modification
of styles & display.xml to distinguish between different kind of texts.
(instances name, master cell names, ...).
- New feature : do not create color, pen & brush at start in Graphics/
DisplayStyles. Now for the graphics to be used it must be enabled with
a call to "Graphics::enable()" *AFTER* allocating the QApplication.
* ./coriolis/src/crlcore/src/cyclop :
- New argument "--text" to check pure text mode.