5 #include <QGraphicsView>
7 #include <QInputDialog>
10 #include <QFileDialog>
11 #include "QGVCore/QGVScene.h"
12 #include "QGVCore/QGVEdge.h"
19 #include <QMessageBox>
26 mOpenInputfileAction =
new QAction(
this);
27 mOpenInputfileAction->
setToolTip(
"Open dot file");
31 mToggleGridAction =
new QAction(
this);
36 mColorSelectAction =
new Action(
this);
37 mColorSelectAction->
setToolTip(
"Select color style");
52 mDotScene =
new QGVScene(
this);
53 mDotGraphicsView->
setScene(mDotScene);
71 auto jt = owMap.
find(
"dot_viewer");
72 if (jt == owMap.
end())
return nullptr;
73 return dynamic_cast<DotViewer*
>(jt.value());
76 void DotViewer::handleStyleChanged(
int istyle)
80 case MainWindow::StyleSheetOption::Dark:
81 QGVStyle::instance()->changeHalStyle(QGVStyle::Dark);
83 case MainWindow::StyleSheetOption::Light:
84 QGVStyle::instance()->changeHalStyle(QGVStyle::Light);
92 void DotViewer::handleToggleGrid()
94 mDotScene->toggleDrawGrid();
97 void DotViewer::handleOpenInputFileDialog()
119 mCreatorPlugin = creator;
121 const char* halComment =
"\"created by HAL plugin ";
123 QObject* toDispose = mDotScene;
124 mDotScene =
new QGVScene(
this);
125 mDotGraphicsView->
setScene(mDotScene);
129 log_warning(
"dot_viewer",
"Cannot load dot file, no file name provided");
138 mFilename = fileName;
144 QGVInteraction* interact = (mCreatorPlugin.
isEmpty() || mCreatorPlugin.
toLower() ==
"(none)")
146 : QGVInteraction::construct(mCreatorPlugin,mDotScene);
149 if (!interact && mCreatorPlugin.
toLower() !=
"(none)")
152 if ((pos0 = dotfileContent.
indexOf(halComment)) >= 0)
154 pos0 += strlen(halComment);
155 int pos1 = dotfileContent.
indexOf(
'"', pos0);
156 Q_ASSERT(pos1 > pos0);
157 mCreatorPlugin = dotfileContent.
mid(pos0, pos1-pos0);
160 interact = QGVInteraction::construct(mCreatorPlugin,mDotScene);
165 QStringList choices = QGVInteraction::getPlugins();
168 "Select plugin which created the .dot file to enable\n"
169 "interactions between HAL GUI and Graphviz viewer.",
171 interact = QGVInteraction::construct(mCreatorPlugin,mDotScene);
172 if (!interact) mCreatorPlugin.
clear();
177 mDotScene->loadLayout(dotfileContent, interact);
181 void DotViewer::handleColorSelect()
184 const char* target[] = {
"node",
"edge",
nullptr };
185 for (
int i=0; target[i]; i++)
189 act->
setChecked(QGVStyle::instance()->getStyle((QGVStyle::StyleTarget)i) != QGVStyle::Graphviz);
191 std::cerr <<
QString(
"HAL color style overwrites %1 attibute => %2").
arg(target[i]).
arg(checked?
"true":
"false").
toStdString() << std::endl;
193 QGVStyle::instance()->setStyle((QGVStyle::StyleTarget)i, (QGVStyle::StyleType)
MainWindow::sSettingStyle->value().toInt());
195 QGVStyle::instance()->setStyle((QGVStyle::StyleTarget)i, QGVStyle::Graphviz);
196 this->mDotScene->update();
204 for (
QObject* obj : mDotScene->children())
206 QGVInteraction* interact =
dynamic_cast<QGVInteraction*
>(obj);
207 if (interact) interact->disableHandler();
213 if (!callee)
return false;
217 return (callee->
filename() == filename);
Provides an interface for triggerable functionality that can be inserted into widgets and also connec...
QVBoxLayout * mContentLayout
void handleZoomInShortcut()
void handleZoomOutShortcut()
bool openInputFileByName(DotViewer *callee, QString filename, QString plugin)
void callOpenInputFileByName(QString filename, QString plugin)
static DotViewer * getDotviewerInstance()
bool loadDotFile(const QString &fileName, const QString &creator=QString())
DotViewer(const QString &pluginName, QObject *parent=nullptr)
void handleOpenInputFileByName(const QString &fileName, const QString &creator=QString())
void setupToolbar(Toolbar *toolbar)
void disableInteractions()
static ExternalContent * instance()
QMap< QString, ExternalContentWidget * > openWidgets
static SettingsItemDropdown * sSettingStyle
void intChanged(int value)
void keySequenceChanged(QKeySequence value)
#define log_warning(channel,...)
QIcon getStyledSvgIcon(const QString &from_to_colors_enabled, const QString &svg_path, QString from_to_colors_disabled=QString())
void setIcon(const QIcon &icon)
void triggered(bool checked)
int indexOf(char ch, int from) const const
QByteArray mid(int pos, int len) const const
QString getOpenFileName(QWidget *parent, const QString &caption, const QString &dir, const QString &filter, QString *selectedFilter, QFileDialog::Options options)
void setScene(QGraphicsScene *scene)
void prepend(const T &value)
QMap::iterator find(const Key &key)
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
bool disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *method)
void setKey(const QKeySequence &key)
QString arg(qlonglong a, int fieldWidth, int base, QChar fillChar) const const
bool isEmpty() const const
QString toLower() const const
std::string toStdString() const const
QThread * currentThread()