Skip to content

Commit bd9b3e9

Browse files
committed
QGV Library adapted for Graphviz Lib version 14
1 parent ef0971d commit bd9b3e9

File tree

10 files changed

+39
-22
lines changed

10 files changed

+39
-22
lines changed

plugins/dot_viewer/deps/QGVCore/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,14 @@ SET(qgvlib_TS)
44

55
SET(qgvlib_UI)
66

7+
check_c_source_compiles("
8+
#include <graphviz/cgraph.h>
9+
int main() {
10+
Agdisc_t d;
11+
d.mem = 0;
12+
return 0;
13+
}" HAS_AGDISC_MEM)
14+
715
SET(TARGET_VERSION_MAJOR 0 )
816
SET(TARGET_VERSION_MINOR 1 )
917

plugins/dot_viewer/deps/QGVCore/QGVNode.cpp

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,25 @@ void QGVNode::paint(QPainter * painter, const QStyleOptionGraphicsItem *, QWidge
6868
const QRectF rect = boundingRect().adjusted(2,2,-2,-2); //Margin
6969
if(_icon.isNull())
7070
{
71-
painter->drawText(rect, Qt::AlignCenter , QGVNode::label());
71+
QFontMetrics fm(painter->font());
72+
qreal fw = fm.horizontalAdvance(label());
73+
if (fw > rect.width())
74+
{
75+
qreal scl = rect.width()/fw;
76+
qreal tx = rect.center().x();
77+
qreal ty = rect.center().y();
78+
painter->save();
79+
painter->translate(tx,ty);
80+
painter->scale(scl, scl);
81+
painter->translate(-tx/scl, -ty);
82+
painter->drawText(rect, Qt::AlignLeft | Qt::AlignVCenter | Qt::TextDontClip | Qt::TextSingleLine, label());
83+
painter->setPen( QPen(Qt::red,1) );
84+
painter->setBrush ( Qt::NoBrush );
85+
painter->drawRect(rect);
86+
painter->restore();
87+
}
88+
else
89+
painter->drawText(rect, Qt::AlignCenter , QGVNode::label());
7290
}
7391
else
7492
{

plugins/dot_viewer/deps/QGVCore/QGVScene.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ License along with this library.
2929
#include <QGVNodePrivate.h>
3030
#include <QGraphicsView>
3131
#include <iostream>
32-
#include "hal_core/utilities/log.h"
3332

3433
int QGVScene::sCount = 0;
3534

@@ -71,7 +70,9 @@ void QGVInteraction::disableHandler()
7170
QGVScene::QGVScene(QObject *parent)
7271
: QGraphicsScene(parent), _drawGrid(true)
7372
{
73+
#ifdef HAS_AGDISK_MEM
7474
aaglex_destroy();
75+
#endif
7576
_context = new QGVGvcPrivate(gvContext());
7677
QString name = QString("DotViewer%1").arg(++sCount);
7778
_graph = new QGVGraphPrivate(agopen(name.toLocal8Bit().data(), Agdirected, NULL));
@@ -208,14 +209,14 @@ void QGVScene::loadLayout(const QString &text, QGVInteraction *interact)
208209
if (!_graph->graph())
209210
{
210211
const char* err = aglasterr();
211-
hal::log_warning("dot_viewer", "Error parsing file input '{}'.", (err ? err : "") );
212+
qWarning() << "Error parsing file input <" << (err ? err : "") << ">" ;
212213
return;
213214
}
214215

215216
if(gvLayout(_context->context(), _graph->graph(), "dot") != 0)
216217
{
217218
const char* err = aglasterr();
218-
hal::log_warning("dot_viewer", "Layout render error {} '{}'.", agerrors(), (err ? err : "") );
219+
qWarning() << "Layout render error <" << (err ? err : "") << ">";
219220
return;
220221
}
221222

plugins/dot_viewer/deps/QGVCore/private/QGVCore.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ License along with this library.
3030

3131
const qreal DotDefaultDPI = 72.0;
3232

33+
#ifndef TRUE
34+
#define TRUE 1
35+
#endif
36+
3337
/**
3438
* @brief GraphViz to GraphicsScene conversions
3539
*
@@ -81,6 +85,7 @@ class QGVCore
8185

8286
static Agraph_t *agmemread2(const char *cp)
8387
{
88+
#ifdef HAS_AGDISK_MEM
8489
Agraph_t* g;
8590
rdr_t rdr;
8691
Agdisc_t disc;
@@ -98,6 +103,9 @@ class QGVCore
98103
disc.io = &memIoDisc;
99104
g = agread (&rdr, &disc);
100105
return g;
106+
#else
107+
return agmemread(cp);
108+
#endif
101109
}
102110

103111
private:

plugins/dot_viewer/include/dot_viewer/interaction/clock_tree_extractor_interaction.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ namespace hal {
3535
Q_OBJECT
3636
public:
3737
ClockTreeExtractorInteraction(QGVScene* parent);
38-
~ClockTreeExtractorInteraction();
3938

4039
void registerNode(QGVNode* node) override;
4140
void registerEdge(QGVEdge* scene) override;

plugins/dot_viewer/include/dot_viewer/interaction/dataflow_interaction.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ namespace hal {
3535
Q_OBJECT
3636
public:
3737
DataflowInteraction(QGVScene* parent);
38-
~DataflowInteraction();
3938

4039
void registerNode(QGVNode* node) override;
4140
void registerEdge(QGVEdge* scene) override;

plugins/dot_viewer/include/dot_viewer/interaction/solve_fsm_interaction.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ namespace hal {
3737
Q_OBJECT
3838
public:
3939
SolveFsmInteraction(QGVScene* parent);
40-
~SolveFsmInteraction();
4140

4241
void registerNode(QGVNode* node) override;
4342
void registerEdge(QGVEdge* edge) override;

plugins/dot_viewer/src/interaction/clock_tree_extractor_interaction.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,6 @@ namespace hal {
2727
connect(parent, &QGraphicsScene::selectionChanged, this, &ClockTreeExtractorInteraction::handleQGVSelectionChanged);
2828
}
2929

30-
ClockTreeExtractorInteraction::~ClockTreeExtractorInteraction()
31-
{
32-
disconnect(gSelectionRelay, &SelectionRelay::selectionChanged, this, &ClockTreeExtractorInteraction::handleHALSelectionChanged);
33-
}
34-
3530
void ClockTreeExtractorInteraction::registerEdge(QGVEdge* edge)
3631
{
3732
Q_UNUSED(edge);

plugins/dot_viewer/src/interaction/dataflow_interaction.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,6 @@ namespace hal {
2828
connect(parent, &QGraphicsScene::selectionChanged, this, &DataflowInteraction::handleQGVSelectionChanged);
2929
}
3030

31-
DataflowInteraction::~DataflowInteraction()
32-
{
33-
disconnect(gSelectionRelay, &SelectionRelay::selectionChanged, this, &DataflowInteraction::handleHALSelectionChanged);
34-
}
35-
3631
void DataflowInteraction::registerEdge(QGVEdge* edge)
3732
{
3833
Q_UNUSED(edge);

plugins/dot_viewer/src/interaction/solve_fsm_interaction.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,6 @@ namespace hal {
3232
connect(parent, &QGraphicsScene::changed, this, &SolveFsmInteraction::handleSceneChanged);
3333
}
3434

35-
SolveFsmInteraction::~SolveFsmInteraction()
36-
{
37-
disconnect(gSelectionRelay, &SelectionRelay::selectionChanged, this, &SolveFsmInteraction::handleHALSelectionChanged);
38-
}
39-
4035
void SolveFsmInteraction::handleSceneChanged(const QList<QRectF>& changedArea)
4136
{
4237
Q_UNUSED(changedArea);

0 commit comments

Comments
 (0)