Commit Graph

357 Commits

Author SHA1 Message Date
Jean-Paul Chaput 2e939e5355 Cell::flattenNets() checks for already flattened top nets.
* Change: In Hurricane, in Cell::flattenNets(), do not flatten a *top net*
    if at least one RoutingPad is present. In that case, we assumes that
    the net has already been completly flattened.
* New: In Hurricane, in Entity, add an accessor to unique id counter.
2014-06-21 17:57:15 +02:00
Jean-Paul Chaput 2af6e7eef1 Correct exception catching when creating invalid occurrence in Isobar.
* New: In CRL Core, in PyCellGauge, add the missing methods.
* Bug: In Isobar, PyOccurrence_create(), the HTRY/HCATCH block was not
    enclosing the constructor of Occurrence, which can throw exceptions.
    When an exception was thown the Python interpreter just terminate
    with the cryptic message:
      "Fatal Python error: Py_EndInterpreter: thread still has a frame"
    Reminder to myself: when such a message occurs, it means that the
    interpreter did encounter a problem, but it's related to the isobar
    interface.
2014-06-10 00:17:41 +02:00
Jean-Paul Chaput 6939025a0d Correction of SoC.css, adjust the look of the class index big letters. 2014-06-10 00:04:48 +02:00
Jean-Paul Chaput 1e1495e294 Correct a bug in the UpdateSession::close() mechanism.
* Bug: In Hurricane, UpdateSession::close(), when re-materializing, the
    cells must be notified <CellChanged> *after* all the Gos are
    re-materializeds. In fact they must also revalided according to the
    deepness of their instanciation (the deepest first). Has still to
    be done.
2014-05-27 15:41:32 +02:00
Jean-Paul Chaput cd9d3fc4b6 ExtensionCap support and source/target terminal flags in Katabatic & Kite.
Placement management:
* Change: In <metis>, always disable the hMetis support regardless of
    it being detected or not as the placer is still unable manage the
    final bin contents.

Routing gauge management:
* Bug: In CRL Core, <vsclib/alliance.conf>, set the correct pitches and
    size for the routing layers and the cell gauge.
* Change: In Katabatic & Kite, extract the correct extension cap for each
    routing layer from the layers characteristics (cache then in
    Katabatic::Configuration).
* Change: In Katabatic, <AutoSegment>, create segment with the wire width
    defined in the gauge. For AutoSegment created on already existing
    Segment from the global routing, adjust the width.
* Change: In Katabatic, <AutoSegment>, more accurate information about how
    a segment is connected to terminal via source and/or target.
    The flag SegStrongTerminal is splitted into SegSourceTerminal and
    SegSourceTarget (but still used as a mask). So now we can know by
    which end an AutoSegment is connected to a terminal.
* Change: In Katabatic, ::doRp_Access(), create constraint freeing segments
    not only when HSmall but also when VSmall (more critical for <vsclib>).
    Otherwise we may see AutoSegments with incompatible source/target
    constraints.
* Change: In Kite, BuildPowerRails, do not create blockage on PinOnly
    layers *but* still create power rails planes. This is a temporary
    workaround for <vsclib> where the METAL1 blockages overlaps the
    terminals (it was fine for Nero, but they shouldn't for Kite).
* Change: In Kite, <RoutingEvent>, if a TrackSegment is overconstrained,
    directly bybass it's slackening state to DataNegociate::Slacken.
    Also rename the flag "_canHandleConstraints" to "_overConstrained",
    seems clearer to me.

Miscellaneous:
* Change: In CRL Core, <Utilities>, add a "pass-though" capability on the
    mstream to temporarily make them print everything.
2014-05-25 15:00:35 +02:00
Jean-Paul Chaput 724d92f816 Adding support for WOR_BIT in Net::Direction.
Modificate Alliance vst parser/drivers so now the wor_bit and wor_vector
are correctly loaded and written back (instead of degenrated into INOUT).
2014-05-13 17:11:48 +02:00
Jean-Paul Chaput dda3f99fd8 Update documentation for compliance with doxygen 1.8.5.
When upgrading from doxygen 1.5.x to 1.8.5 the way the documentation
is generated has underwent many changes, particularly in the headers.
* Change: In <header.html>, must include the javascripts <jquery.js>
    and <dynsections.js>.
* In <CMakeLists.txt>, as the header is customized, doxygen seems not
    copy some files like the javascripts and some images (open.png,
    closed.png). So we copy them from doxygen installation and make
    the CMakeLists.txt install them. I hope they will not change too
    much in the future.
* In <doxyfile>, disable markdown support as it do not interpret
    correctly the formating we already adopted (with a left margin
    to put command into). Use HTML_EXTRA_STYLESHEET instead of
    HTML_STYLESHEET. Enable the index (DISABLE_INDEX=NO), for the
    top header. Enable dot for inheritance diagram. Set the
    EXAMPLE_PATH=. to include the synthetic hierarchy.
    Correct the tag inclusion (faulty path in some places).
* In <SoC.css>, create style for the new header generated by doxygen.
* In the documentation, move the synthetic hierarchy into a module.
2014-05-13 16:30:41 +02:00
Jean-Paul Chaput c8bcfdf174 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 19:30:07 +02:00
Jean-Paul Chaput fee45ef117 Qt5 porting, cleanup & Tidy.
Cleanup:
* Cleanup: In <vlsisapd/src/bookshelf>, remove unused file Bookshelf.cpp
    (may have been a parser once upon a time).
* Cleanup: In <hurricane>, in Cell::flattenNets() use flags instead of
    booleans to be more readable. Allow occurrence placement checking.
* New: In <crlcore> add Python wrapper for the Ispd05 loader.
* New: In <unicorn> add option for direct loading of ISPD05 designs.
* Bug: In <hurricane/src/viewer>, RecordModel must emit
    layoutAboutToBeChanged() before changing the record contents (and
    layoutChanged() afterwards).
2014-03-26 14:47:17 +01:00
Jean-Paul Chaput 9501b88110 First barebone implementation of Etesian. Support for ISPD05 benchmark.
Details:
* New: In <vlsispad/utilities>, new objet Dots for displaying a kind
    of progress bar.
* Change: In <vlsisapd/bookshelf>, keywords are now case-insensitive.
    Added a "strict syntax" option (to be disabled for ISPD05).
* New: First working implementation of Etesian, at least for ISPD05
    "bigblue1".
* Change: In <hurricane>, in Cell::flattenNets(), no longer display
    a warning if an instance is unplaced, this does not make sense
    when the circuit is not placed.
* New: In <crlcore>, Added translator for ISPD05 bookshelf, the
    circuit is *not* placed, unlike in ISPD04 and terminal nodes
    *are* true cells.
* New: In <unicorn>, added entry in import cell for ISPD05 benchmarks.
2014-03-25 00:59:12 +01:00
Jean-Paul Chaput 4842f21a2e Update to Qt 5, requires cmake 2.8.9. New placer: Etesian.
Update to Qt 5:
* Change: Now requires at least cmake 2.8.9.
* Change: CMakeLists.txt needs small changes. Qt modules must be found
    one by one (Core, Gui, Widgets). Must add "set(CMAKE_AUTOMOC ON)"
    in the top file and replace "qt4" prefix in macros by "qt5".
    Added simpler macro "setup_qt()" in FindBootstrap.cmake.
* Change: No longer need to include <QGtkStyle> is is choosen by default
    according to the current desktop environment.
* Change: In <hurricane>, In HApplication, launch ExceptionWidget when
    a std::exception is catched instead of silently discarting it.

New placer Tool: Etesian
* New: <etesian> analytical placer. Encapsulate Coloquinte from
   Gabriel Gouvine.
* New: in <documentation>, add stub demonstration ToolEngine <smurf>.
   Needs to be commented.

Miscellaneous:
* New: in <boostrap> and <unicorn>, added support for Etesian, the new
    analytic placer. The tool itself will be added in the next commit.
* Bug: in <CellWidget>, when shifting the display buffer, we no longer
    can copy the buffer on itself (we should never have). Now go through
    a temporary one (PlaneId::AutoCopy) which is added to the
    DrawingPlanes. Affect "goLeft()" and "goUp()".
* Bug: In <CellWidget>, remove the WA_PaintOnScreen flag/attribute.
    When it's on, no PaintEvent is transmitted to the CellWidget
    when it's the central widget of the <CellViewer> (QMainWindow).
    It's something I still don't understand from the doc of Qt.
* Change: In <AreaCommand>, use the PlaneId enumeration instead of a
    anonymous numerical index.
* Change: In <HApplication>, no longer catch and silently discard
    standartd exceptions but launch the ExceptionWidget...
    Suppress the now deprecated constructor with "Type" argument.
* Change: In <SelectionModel>, the "reset()" method is deprecated in
    Qt5, instead enclose the "clear()" by a "beginResetModel()" and
    "endResetModel()" pair.
* New: In <crlcore>, add support for ISPD05 benchmarks (in Bookshelf
    format). Forked from ISPD04 and not finished yet.
* Change: In <Mauka>, distinguish the Action string identifier from
    <Etesian>
* New: In <unicorn>, add entry for ISPD05 loader. Add entry for
    <Etesian> analytic placer.
2014-03-22 11:50:36 +01:00
Jean-Paul Chaput f6ab7b87f0 Compliance with g++ 4.8.1, support for devtoolset-2
Details:
* New: in <bootstrap>: add support for devtoolset-2 in ccb. Run the
    cmake commands through 'scl', set shell environment variables
    BOOST_INCLUDEDIR & BOOST_LIBRARYDIR and disable the default
    system path search.
* Change: In various flex scanners add the %nounput to suppress
    compiler warnings.
* Change: Little cleanup for g++ 4.8.1 as it's more strict.
* Change: In various top CMakeLists.txt, suppress extraneous '/'
    after DESTDIR.
2014-03-15 10:47:37 +01:00
Jean-Paul Chaput 14a5f5f7ef Documentation restructuration
Documentation restructuration:
* Bug: in <hurricane>: bad figure for transf-R1.
* Change, in <kite>: Remove deprecated configuration variables.
* New: documentation <tool> to regroup all documentation not directly
  related to one tool.
* Change, in <crlcore>, move the user's guide and the top doc index
  into <documentation>.
* New, in <documenation>: added Python script demo based on AM2901.
2014-03-11 12:21:31 +01:00
Jean-Paul Chaput 34e0edfd61 Cleanup after SVN importation, <ccb> builder script adaptation.
Project hierarchy reorganisation:
* With svn, we were doing a tool by tool checkout, suppressing the
  whole repository hierarchy level.
* The tools were also grouped, inside one repository, into multiple
  projects (<bootstrap>, <vlsisapd>, <coriolis>).
* We do not want to split up each tool into a separate repository,
  given their tight integration (except for vlsisapd).
* We choose to simplify, and consider all tools in a svn repository
  one project. Due to the way Git clone repositories, the directory
  containing the project is now to be seen under "src/".

CMake modifications:
* Now that the <vlsisapd> and <bootstrap> projects are merged into
  coriolis, modificate the top CMakeLists.txt of each tool to uses
  only Coriolis (and bootstrap hard wired).

CCB compile script modifications:
* Uses the new source tree hierarchy, with the project directory
  inserted.
* Remove (comment) all parts relateds to svn managment.
* Git is sufficiently simple so that we do not want to integrate
  command shortcut into the script.

SVN cleanup:
* Remove the obsolete <chamsin> tool, that has become the full fledged
  <chams> project long time ago.
2014-02-26 18:24:41 +01:00
Jean-Paul Chaput 12f595941a * ./hurricane/src/hurricane:
- New: Added an id on DBo, SharedName and SharedPath to ensure
        database determinism. All the hash key now uses the id instead
        of the object's pointer (see _getHashValue()).
    - Change: In RoutingPad, position is now only relative to the anchor,
        no more (dx,dy). Add a isPlacedOccurrence() to check if all the
        occurrence in the path are fixed and thus the position meaningful.

  * ./hurricane/doc/hurricane:
    - Change: In Cell, added doc about PlacementStatus.
    - Change: In Transformation, more detailed explanations about the
        orientations. A little beautifying too...
    - Change: RoutingPad doc update.
    - Change: Entity doc update (for id).
    - Change: In HTML header/footer uses the new SoC.css.
2013-12-04 01:26:07 +00:00
Jean-Paul Chaput bc23a539a5 New: added getBodyHook() method. 2013-05-04 14:03:21 +00:00
Jean-Paul Chaput 28b4c6bc5c Bug: correct function binding for getAnchorHook(). 2013-05-04 13:57:34 +00:00
Jean-Paul Chaput ecf22a10c1 * ./hurricane/sr/isobar:
- New: Added support for Hook Collections, PyHookCollection.
2013-04-27 17:51:33 +00:00
Jean-Paul Chaput b1af37ca2c Added PyHook.cpp & PyHook.h ... 2013-04-27 16:03:48 +00:00
Jean-Paul Chaput 31abc474f1 * ./hurricane/sr/isobar:
- New: Added Hook support (PyHook). Hook accessors added in PyContact and
        PySegment.
2013-04-27 16:02:00 +00:00
Jean-Paul Chaput fcc8ed2373 Added missing library ${UTILITIES_LIBRARY}, linking problem
shows only under MacOS.
2013-04-22 21:45:21 +00:00
Jean-Paul Chaput dcc3084884 * ./hurricane/src/viewer:
- Change: Switch from boost::filestem to VLSISAPD path.
2013-04-21 15:35:44 +00:00
Jean-Paul Chaput 84dfbe2980 * ./hurricane/sr/isobar:
- New: In PyComponent, added support for getConnexComponents() and
        getSlaveComponents().
2013-04-18 10:55:34 +00:00
Jean-Paul Chaput fc805bf500 * ./hurricane/sr/isobar:
- New: In PyDataBase, added method for getDB (the correct name, as alias)
        and getRootLibrary().
    - New: In PyComponent, added support for the optional BasicLayer argument
        of getBoundingBox().
    - New: In PyEntity, added support for conversion to/from RoutingPad.
    - New: In PyHyperNet, added support for getNetOccurrences().
    - New: In PyLibrary, added support for getLibrary().
    - New: In NetExternalComponents, added support for setExternal().
2013-04-17 16:14:41 +00:00
Jean-Paul Chaput fe4c87fe10 Bug: swap between NOARGS and VARARGS for getSomethingUnder(). 2013-04-15 10:49:48 +00:00
Jean-Paul Chaput b64a8d1ca2 * ./hurricane/sr/isobar:
- New: In PyCell, added methods for getComponents() and getComponentsUnder().
2013-04-15 09:51:51 +00:00
Jean-Paul Chaput 79eb9bde69 * ./hurricane/sr/isobar:
- New: In PySegment, added methods for getSource(), getTarget() and invert().
2013-04-11 11:09:00 +00:00
Jean-Paul Chaput 62fbf351a7 * ./hurricane/sr/isobar:
- New: In PyContact, added methods for setX, setY, setDx, setDy.
2013-04-10 14:19:28 +00:00
Jean-Paul Chaput f8343fdfc4 * ./hurricane:
- New: In hurricane/doc, added documentation RoutingPad, HyperNet & Query.
    - New: In isobar, added support for RoutingPad.
    - Change: In PyComponent, getCenter() method moved to it's right place in
        the base class.
    - Change: In PyPath, added duplicated methods (ApplyOn <-> applyOn and
        Invert <-> invert).
2013-03-13 13:38:15 +00:00
Jean-Paul Chaput 9724cef332 * ./hurricane/src/isobar:
- Change: In PyHurricane, add type object for all subtype of Component, then
        we can use the Python "isinstance()" function to know the true type of a
        component. Useful when looping over a collection of Component.
          Name clash: We have used the class name as the name of the constructor
        inside the Hurricane module, at a time we where less acquainted with
        Python, so the real class are named 'PyVertical' for example, while
        'Hurricane' is the constructor function. Should correct this in the
        future but it's a huge work as all the Python scripts must be editeds...
    - Change: In PyNet, adds the "getComponents()" Collection accessor.
    - New: In Occurrence, added method getCompactString() to display a more
       compact version of the occurrence.
    - New: PyQuery & PyQueryMask expose the Query classe. Only partially implemented,
        and with the start of the template based interface disabled.
2013-02-10 11:52:27 +00:00
Jean-Paul Chaput ceda10e523 Small update of DynamicLabel for Isis. 2012-12-31 11:52:42 +00:00
Jean-Paul Chaput d9eb8a1b6a * ./hurricane/src/isobar:
- Bug: In PyHurricane, PyTypeViaLayer was *not* reference incremented, causing
        the type to be desallocated when the Python interpreter was finalizing.
        This was causing <isis> to fail.
2012-12-14 14:34:30 +00:00
Jean-Paul Chaput 91a30ce8af Typo in getAbutmentBox(), now display the right function
name in errors...
2012-12-04 12:29:45 +00:00
Jean-Paul Chaput 1334caad6d * All Tools:
- New: Added FreeBSD/Ubuntu patches from Otacilio De Araujo
       (<otaciliodearaujo@gmail.com>).

  * ./hurricane:
    - Change: In CellViewer, one unificated method to lauch Python
        scripts whatever they are Stratus or not.
    - Change: In ScriptWidget, the function lauched is now
        "ScriptMain()".
    - New: In PyCellViewer, add the refresh method.
2012-12-03 08:26:28 +00:00
Jean-Paul Chaput 47f3771f1d * All Tools:
- A complete sweep of cleanup to suppress allmost all compiler warnings.

  * ./hurricane/doc/hurricane:
    - New: Documentation cleanup and update, particularly on the new Layer
        derived classes.

  * ./hurricane/src/hurricane,
    ./hurricane/src/isobar,
    ./hurricane/src/viewer:
    - New: Creation of new methods, more explicit on DbU. Based on a to/from
        naming scheme.
    - New: Python support extented to include all objects needed to configure
        through python scripts.
    - Change: Finally understood what's causing the _XOPEN_SOURCE redefinition.
        Basically the Python.h must be included first before any other
        include. The type-puned problem will remains still (that is a Python
        problem, not our own).
    - Change: In DisplayStyle, uses shared_ptr for DrawingStyle instead of
        custom made reference count.
2012-11-16 12:48:38 +00:00
Jean-Paul Chaput eb4f1b91a8 * ./hurricane/src/hurricane:
- Change: Activate inspector support for Pin, Pin::AccessDirection
        & Pin::AccessStatus.
2012-01-02 21:19:31 +00:00
Damien Dupuis b62e6fb0c1 Bug correction : in PyBox.inflate method : third and fourth arguments were not initialized by Parse_Tuple leadding to a segmentation fault when using inflate with 4 arguments in python. 2011-05-30 11:22:02 +00:00
Jean-Paul Chaput bb50b1e302 * ./hurricane/src/viewer:
- Change: In CellWidget, small cosmetics.
2011-04-12 20:36:30 +00:00
Damien Dupuis 2df0dd439b Missing linking libs 2011-03-10 11:27:21 +00:00
Damien Dupuis 4c2f16a4fe Missing factor in physicalToDbu conversion. 2011-02-24 13:11:11 +00:00
Jean-Paul Chaput 562cca23c7 Added DbU::physicalToGrid method. 2011-02-24 10:00:46 +00:00
Damien Dupuis feecdab3e1 missing header 2011-02-15 11:54:48 +00:00
Jean-Paul Chaput 0ea96eaa3d Add library version to isobar. 2011-02-04 11:09:11 +00:00
Jean-Paul Chaput eb86ef8bc9 * <All Tools>/CMakeLists.txt:
- Change: Added versioning to library.
2011-02-02 22:25:07 +00:00
Jean-Paul Chaput 67af923d4f * <All Tools>/CMakeLists.txt:
- Bug: During the packaging stage, DESTDIR must be appended to the
        pathes prepended to CMAKE_MODULE_PATH.
2011-02-02 12:23:43 +00:00
Jean-Paul Chaput b8e42d2efc * ./hurricane/src/viewer:
- New: In ExceptionWidget, mimic more closely the behavior of a QDialog.
        Uses QTextEdit/QTextDocument for the trace. Static "all in one" methods,
        build from various exceptions/Errors & QString. Automatic window centering
        when the trace is displayed.
2011-01-10 23:58:31 +00:00
Jean-Paul Chaput 214bb4dda4 Add the ability to get a command by it's name. 2011-01-09 18:19:21 +00:00
Jean-Paul Chaput f7721dd754 * ./hurricane/src/hurricane:
- Change: In RoutingPad, uses my C++ style. Normalize constructors calls.
        Allow to select (trough flags) the way the "best component" is choosen.
        Currently: Biggest Area or Lowest Layer or Highest Layer.

  * ./hurricane/src/viewer:
    - New: In DisplayStyle, darkening is now expressed as a ratio over the HSV
        components of a color. Introduce a new DisplayStyle::HSVr type.
        Allow a more readable darkening effect. All object modicated accordingly.
    - Change: In NetlistWidget, the "Net" section now correctly dimension itself
        on the widest net name. Must suppress all the size Hints in the header
        & data models.
2010-12-30 18:38:43 +00:00
Jean-Paul Chaput daab8a8b8f * ./hurricane/src/viewer:
- In CellViewer, adds a shortcut for launching Stratus scipts: SHIFT+P,S
        and one for pure Python scripts: SHIFT+P,P.
    - In ExceptionWidget, put the trace inside a QScrollArea so all the call
        stack can be viewed regardless of the window's size. It seems that
        QFontMetrics has problems to compute the right text size when using
        a Qt::RichText enabled widget. Adds some "manual" corrections, hope
        they will be sufficiently portables.
2010-12-15 15:10:58 +00:00
Damien Dupuis 011be5487b regex correction for Mac osX 2010-12-09 14:38:41 +00:00