diff --git a/agui2/ALIB.pro b/agui2/ALIB.pro index 58d8e435be68c66ef327552f6510273fdf781d9e..519d89d62356a83679fe2fa2ae0d868598785a27 100644 --- a/agui2/ALIB.pro +++ b/agui2/ALIB.pro @@ -28,11 +28,13 @@ SOURCES += main.cpp\ mainwindow.cpp \ ../FIT/automata-library/aconvert2/src/DotConverter.cpp \ graphicsbox.cpp \ - inputdialog.cpp + inputdialog.cpp \ + graphicsconnection.cpp HEADERS += mainwindow.h \ graphicsbox.h \ - inputdialog.h + inputdialog.h \ + graphicsconnection.h FORMS += mainwindow.ui \ inputdialog.ui diff --git a/agui2/graphicsbox.cpp b/agui2/graphicsbox.cpp index 67f92ccf3dfb5143d6922b67b364ac5e5db0f34e..7a19843245221734af8d653f892c5cfe198211b5 100644 --- a/agui2/graphicsbox.cpp +++ b/agui2/graphicsbox.cpp @@ -1,14 +1,27 @@ #include <QAction> #include <QMenu> #include <QGraphicsSceneContextMenuEvent> +#include <QDialog> +#include <QGraphicsScene> + #include "graphicsbox.h" +#include "inputdialog.h" -GraphicsBox::GraphicsBox(QString text, QPointF point) +GraphicsBox::GraphicsBox(QObject * parent, QString text, QPointF point) + : QObject(parent) { m_text = text; m_position = new QPointF(point); - m_boundRect.setRect(0,0,150,100); + m_boundRect.setRect(point.x(), point.y(), point.x() + 1, point.y() + 1); setFlags(ItemIsMovable | ItemIsSelectable); + setZValue(1); + + QPainter painter; + QFont f; + f.setBold(true); + f.setPixelSize(18); + painter.setFont(f); + painter.drawText(m_boundRect, Qt::AlignCenter, m_text, &m_boundRect); } QRectF GraphicsBox::boundingRect() const @@ -18,28 +31,41 @@ QRectF GraphicsBox::boundingRect() const void GraphicsBox::paint(QPainter *painter, const QStyleOptionGraphicsItem *options, QWidget *widget) { - QRectF rect(*m_position,QSizeF(100,50)); - painter->setPen(QPen(Qt::white, 1)); QFont font = painter->font(); font.setPixelSize(18); font.setBold(true); painter->setFont(font); - painter->drawText(rect, Qt::AlignCenter, m_text, &m_boundRect ); + painter->drawText(m_boundRect, Qt::AlignCenter, m_text, &m_boundRect ); m_boundRect.adjust(-30,-30,30,30); painter->fillRect(m_boundRect,Qt::blue); - painter->drawText(rect, Qt::AlignCenter, m_text ); + painter->drawText(m_boundRect, Qt::AlignCenter, m_text ); +} + +void GraphicsBox::on_SetInput() +{ + InputDialog * inputDlg = new InputDialog(); + inputDlg->setModal(true); + inputDlg->show(); +} + +void GraphicsBox::on_Connect() +{ + + ((QGraphicsScene *)parent())->addLine(0,0,rand()%100,rand()%65); } void GraphicsBox::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) { QMenu menu; - QAction * setInputAction = menu.addAction("Set &Input"); - QObject::connect(setInputAction, &QAction::triggered, this, &GraphicsBox::on_SetInput); - menu.addAction("Action 2"); + QAction * a; + a = menu.addAction("Set &Input"); + QObject::connect(a,SIGNAL(triggered()), this, SLOT(on_SetInput())); + a = menu.addAction("Connect"); + QObject::connect(a,SIGNAL(triggered()), this, SLOT(on_Connect())); menu.addAction("Action 3"); + menu.exec(event->screenPos()); } - diff --git a/agui2/graphicsbox.h b/agui2/graphicsbox.h index 8679589f15969fd88e99c94179361247261d690c..15e5df3a82242cfe9b7a911b3355fb24b563f4ea 100644 --- a/agui2/graphicsbox.h +++ b/agui2/graphicsbox.h @@ -4,19 +4,22 @@ #include <QPainter> #include <QGraphicsItem> -class GraphicsBox : public QGraphicsItem +class GraphicsBox : public QObject, public QGraphicsItem { Q_OBJECT public: - explicit GraphicsBox(QString text, QPointF point); + explicit GraphicsBox(QObject * parent, QString text, QPointF point); + GraphicsBox(QObject * parent): QObject(parent){}; QRectF boundingRect() const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *options, QWidget *widget); + virtual ~GraphicsBox() {}; private: QString m_text; QPointF * m_position; QRectF m_boundRect; private slots: void on_SetInput(); + void on_Connect(); protected: void contextMenuEvent(QGraphicsSceneContextMenuEvent *event); }; diff --git a/agui2/graphicsconnection.cpp b/agui2/graphicsconnection.cpp new file mode 100644 index 0000000000000000000000000000000000000000..7fe0cedb12c962152415cea437f968c36e3e73fc --- /dev/null +++ b/agui2/graphicsconnection.cpp @@ -0,0 +1,16 @@ +#include "graphicsconnection.h" + +GraphicsConnection::GraphicsConnection() +{ + +} + +QRectF GraphicsConnection::boundingRect() const +{ + +} + +void GraphicsConnection::paint(QPainter *painter, const QStyleOptionGraphicsItem *options, QWidget *widget) +{ + +} diff --git a/agui2/graphicsconnection.h b/agui2/graphicsconnection.h new file mode 100644 index 0000000000000000000000000000000000000000..2c7cea830ab04a1dfa66f785e49b9a8507dd40b3 --- /dev/null +++ b/agui2/graphicsconnection.h @@ -0,0 +1,14 @@ +#ifndef GRAPHICSCONNECTION_H +#define GRAPHICSCONNECTION_H + +#include <QGraphicsItem> + +class GraphicsConnection : public QGraphicsItem +{ +public: + GraphicsConnection(); + QRectF boundingRect() const; + void paint(QPainter *painter, const QStyleOptionGraphicsItem *options, QWidget *widget); +}; + +#endif // GRAPHICSCONNECTION_H diff --git a/agui2/inputdialog.ui b/agui2/inputdialog.ui index 647e8fc94046246ccb7649c615c5ccaccd64b42e..3af2636321d47c01890db91d85cc7a7601dbf43e 100644 --- a/agui2/inputdialog.ui +++ b/agui2/inputdialog.ui @@ -32,6 +32,12 @@ </item> <item row="1" column="0" colspan="3"> <widget class="QPlainTextEdit" name="plainTextEdit_5"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> <property name="plainText"> <string><?xml version="1.0"?> <NFA><states><Integer ref="0">0</Integer><Integer ref="1">1</Integer><Integer ref="2">2</Integer><Integer ref="3">3</Integer><Integer ref="4">4</Integer></states><inputAlphabet><Character ref="5">a</Character><Character ref="6">b</Character><Character ref="7">c</Character></inputAlphabet><initialState><Integer ref="8">0</Integer></initialState><finalStates><Ref id="2"/><Ref id="3"/></finalStates><transitions><transition><from><Ref id="0"/></from><input><Ref id="6"/></input><to><Ref id="1"/></to></transition><transition><from><Ref id="1"/></from><input><Ref id="5"/></input><to><Ref id="4"/></to></transition><transition><from><Ref id="1"/></from><input><Ref id="6"/></input><to><Ref id="0"/></to></transition><transition><from><Ref id="1"/></from><input><Ref id="7"/></input><to><Ref id="1"/></to></transition><transition><from><Ref id="2"/></from><input><Ref id="5"/></input><to><Ref id="2"/></to></transition><transition><from><Ref id="3"/></from><input><Ref id="5"/></input><to><Ref id="2"/></to></transition><transition><from><Ref id="4"/></from><input><Ref id="6"/></input><to><Ref id="2"/></to></transition><transition><from><Ref id="4"/></from><input><Ref id="6"/></input><to><Ref id="3"/></to></transition></transitions></NFA> @@ -81,8 +87,6 @@ </layout> </item> </layout> - <zorder>layoutWidget</zorder> - <zorder>lineEdit_5</zorder> </widget> <resources/> <connections/> diff --git a/agui2/mainwindow.cpp b/agui2/mainwindow.cpp index 4b44c53f6a5d4eee181d7f1f5afd1622bf484bb4..0e2adce0500096b290e2321517a3a1bd9a7847bd 100644 --- a/agui2/mainwindow.cpp +++ b/agui2/mainwindow.cpp @@ -6,6 +6,7 @@ #include "mainwindow.h" #include "ui_mainwindow.h" +#include "inputdialog.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), @@ -17,10 +18,10 @@ MainWindow::MainWindow(QWidget *parent) : QBrush brush(Qt::blue); QPen pen(Qt::blue); - scene->setSceneRect(0,0,700,500); - GraphicsBox * input = new GraphicsBox("Input", QPointF(0,0)); +// scene->setSceneRect(0,0,700,500); + GraphicsBox * input = new GraphicsBox(scene, "Input", QPointF(0,0)); scene->addItem(input); - GraphicsBox * output = new GraphicsBox("Output", QPointF(150,0)); + GraphicsBox * output = new GraphicsBox(scene, "Output", QPointF(150,0)); scene->addItem(output); } @@ -51,7 +52,10 @@ void MainWindow::on_OpenFileBtn_clicked() } } -void MainWindow::on_actionNew_triggered() -{ +void MainWindow::on_inputButton_clicked() +{ + InputDialog * inputDlg = new InputDialog(); + inputDlg->setModal(true); + inputDlg->show(); } diff --git a/agui2/mainwindow.h b/agui2/mainwindow.h index 3e271684abd1efb3124adff88d3bba4a57dae246..2c5e7b00373b9f36918747c15b1c7d7caf855e50 100644 --- a/agui2/mainwindow.h +++ b/agui2/mainwindow.h @@ -24,8 +24,8 @@ public: private slots: void on_MagicBtn_clicked(); void on_OpenFileBtn_clicked(); + void on_inputButton_clicked(); - void on_actionNew_triggered(); private: Ui::MainWindow *ui; automaton::Automaton *automaton = NULL; diff --git a/agui2/mainwindow.ui b/agui2/mainwindow.ui index d512b3de37fe1c4f10292a8f19e33a0045eb6323..d88a2cdc2cbef66f79f0054a9549eac50365ea22 100644 --- a/agui2/mainwindow.ui +++ b/agui2/mainwindow.ui @@ -203,6 +203,13 @@ </property> </widget> </item> + <item row="3" column="0"> + <widget class="QPushButton" name="inputButton"> + <property name="text"> + <string>Input</string> + </property> + </widget> + </item> </layout> </widget> <widget class="QMenuBar" name="menuBar">