From 2efe106cf30654a74ec979a00de820e2aca3021e Mon Sep 17 00:00:00 2001 From: Juan64Bits Date: Sat, 20 Nov 2010 16:19:34 -0500 Subject: [PATCH] Adding bases to the code generator. Code text edit, fixing input/output ID control, etc. --- Software/sie_cg/block_editor/adc_single.die | 10 +- Software/sie_cg/block_editor/arrow.cpp | 2 + Software/sie_cg/block_editor/constant.die | 4 +- Software/sie_cg/block_editor/diagramscene.cpp | 115 ++++++++++++++++-- Software/sie_cg/block_editor/diagramscene.h | 9 +- .../sie_cg/block_editor/diagramscene.pro.user | 36 +++--- .../sie_cg/block_editor/diagramtextitem.h | 8 +- Software/sie_cg/block_editor/left_shift.die | 8 +- Software/sie_cg/block_editor/lineitem.h | 1 + Software/sie_cg/block_editor/main.cpp | 2 +- Software/sie_cg/block_editor/mainwindow.cpp | 70 ++++++++--- Software/sie_cg/block_editor/mainwindow.h | 13 ++ Software/sie_cg/block_editor/pwm_single.die | 8 +- Software/sie_cg/block_editor/right_shift.die | 8 +- Software/sie_cg/block_editor/while.die | 2 +- Software/sie_cg/codedialog.cpp | 26 ++++ Software/sie_cg/codedialog.h | 23 ++++ Software/sie_cg/codedialog.ui | 54 ++++++++ Software/sie_cg/diagramitem.cpp | 11 ++ Software/sie_cg/diagramitem.h | 2 +- Software/sie_cg/diagramscene.cpp | 79 +++++++----- Software/sie_cg/diagramscene.h | 6 +- Software/sie_cg/diagramscene.pro | 12 +- Software/sie_cg/diagramscene.pro.user | 38 +++--- Software/sie_cg/diagramscene.qrc | 1 + Software/sie_cg/images/cg.png | Bin 0 -> 115928 bytes Software/sie_cg/mainwindow.cpp | 100 +++++++++++++-- Software/sie_cg/mainwindow.h | 24 ++-- Software/sie_cg/test.sie | 16 ++- 29 files changed, 531 insertions(+), 157 deletions(-) create mode 100644 Software/sie_cg/codedialog.cpp create mode 100644 Software/sie_cg/codedialog.h create mode 100644 Software/sie_cg/codedialog.ui create mode 100755 Software/sie_cg/images/cg.png diff --git a/Software/sie_cg/block_editor/adc_single.die b/Software/sie_cg/block_editor/adc_single.die index 917c43e..1bbd6b0 100644 --- a/Software/sie_cg/block_editor/adc_single.die +++ b/Software/sie_cg/block_editor/adc_single.die @@ -13,11 +13,11 @@ - - - + + - - + + + diff --git a/Software/sie_cg/block_editor/arrow.cpp b/Software/sie_cg/block_editor/arrow.cpp index edfaef3..0adb705 100644 --- a/Software/sie_cg/block_editor/arrow.cpp +++ b/Software/sie_cg/block_editor/arrow.cpp @@ -196,6 +196,8 @@ void Arrow::paint(QPainter *painter, const QStyleOptionGraphicsItem *, SECLine->setColor(myColor); } } + painter->setBrush(Qt::lightGray); + painter->drawPolygon(this->path().toFillPolygon()); setSelectedArrows(); } diff --git a/Software/sie_cg/block_editor/constant.die b/Software/sie_cg/block_editor/constant.die index 2d365e1..e17c5c9 100644 --- a/Software/sie_cg/block_editor/constant.die +++ b/Software/sie_cg/block_editor/constant.die @@ -7,8 +7,8 @@ - + - + diff --git a/Software/sie_cg/block_editor/diagramscene.cpp b/Software/sie_cg/block_editor/diagramscene.cpp index 6b7615c..bd86d6b 100644 --- a/Software/sie_cg/block_editor/diagramscene.cpp +++ b/Software/sie_cg/block_editor/diagramscene.cpp @@ -43,9 +43,11 @@ #include #include "diagramscene.h" -DiagramScene::DiagramScene(QMenu *itemMenu, QObject *parent) +DiagramScene::DiagramScene(QMenu *itemMenu, MainWindow *ownerWindow, + QObject *parent) : QGraphicsScene(parent) { + myOwnerWindow = ownerWindow; myItemMenu = itemMenu; myMode = MoveItem; @@ -59,8 +61,8 @@ DiagramScene::DiagramScene(QMenu *itemMenu, QObject *parent) myPolygonPath=0; myCorners=0; - TitleText = new DiagramTextItem(0,0,1,0xFFF,255,"BLOCK NAME HERE (not visible)", - QPointF(250,250)); + TitleText = new DiagramTextItem(0,0,1,0xFFF,255,"BLOCK NAME HERE not visible", + QPointF(500,370)); addItem(TitleText); } @@ -124,14 +126,105 @@ void DiagramScene::doSnapToGrid(QGraphicsSceneMouseEvent *mouseEvent) } } +QString DiagramScene::createPrototype() +{ + bool first = 1; + QString functionPrototype = "\nvoid " + + TitleText->toPlainText().replace(' ','_') + "("; + + foreach (QGraphicsItem *item, this->items()) { + if (item->type() == DiagramTextItem::Type) { + int styleIO = qgraphicsitem_cast(item)->styleIO(); + if(styleIO<256) + { + int ioID = qgraphicsitem_cast(item)->textID(); + if(!first) functionPrototype += ","; first = 0; + switch(styleIO&127) + { + case 1: + functionPrototype += "bool "; + break; + case 2: + functionPrototype += "char "; + break; + case 3: + functionPrototype += "integer "; + break; + case 4: + functionPrototype += "double "; + break; + case 5: + functionPrototype += "float "; + break; + case 6: + functionPrototype += "short "; + break; + case 7: + functionPrototype += "long "; + break; + case 8: + functionPrototype += "unsigned char "; + break; + case 9: + functionPrototype += "unsigned integer "; + break; + case 10: + functionPrototype += "unsigned short "; + break; + case 11: + functionPrototype += "unsigned long "; + break; + default:; + } + functionPrototype += (styleIO>>7)? "in":"&out"; + functionPrototype += "_" + QString::number(ioID); + } + } + } + + functionPrototype += ") {"; + return functionPrototype; +} + void DiagramScene::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent) { doSnapToGrid(mouseEvent); - QString Text; + foreach (QGraphicsItem *item, this->items(mouseEvent->scenePos())) { + if (item->type() == DiagramTextItem::Type) { + if(qgraphicsitem_cast(item)->styleIO()<256) + { + myOwnerWindow->statusBar->showMessage( + qgraphicsitem_cast(item)->toPlainText() + + tr("\t : Input/Output text label -> {ID = ") + + QString::number(qgraphicsitem_cast + (item)->textID()) + tr("}")); + } + else if(qgraphicsitem_cast(item)->styleIO()==256) + { + myOwnerWindow->statusBar->showMessage( + qgraphicsitem_cast(item)->toPlainText() + + tr("\t : Text label -> {ID = ") + + QString::number(qgraphicsitem_cast + (item)->textID()) + tr("}")); + } + else if(qgraphicsitem_cast(item)->styleIO()==257) + { + myOwnerWindow->statusBar->showMessage( + qgraphicsitem_cast(item)->toPlainText() + + tr("\t : Editable text label -> {ID = ") + + QString::number(qgraphicsitem_cast + (item)->textID()) + tr("}")); + } + } + } + myOwnerWindow->updateProt(); + QString Text; if (mouseEvent->button() != Qt::LeftButton) return; + int addResult=0; + switch (myMode) { case InsertText: @@ -146,17 +239,19 @@ void DiagramScene::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent) textItem = new DiagramTextItem(0,0,1,myTextType,0,Text, mouseEvent->scenePos()); - if(addTextItem(textItem)) + addResult=addTextItem(textItem); + if(addResult!=-1) { textItem->setZValue(1000.0); connect(textItem, SIGNAL(lostFocus(DiagramTextItem*)), this, SLOT(editorLostFocus(DiagramTextItem*))); addItem(textItem); + textItem->setTextID(addResult); } else { delete(textItem); - QMessageBox::warning(0,"Full","The block can only have only" + QMessageBox::warning(0,"Full","The block can only have " "255 text items"); } emit textInserted(textItem); @@ -237,7 +332,7 @@ void DiagramScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *mouseEvent) void DiagramScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent) { doSnapToGrid(mouseEvent); - if (myMode != EditPolygon && line == 0) + if(myMode != EditPolygon && line == 0) QGraphicsScene::mouseReleaseEvent(mouseEvent); } @@ -377,7 +472,7 @@ int DiagramScene::fromXmlFormat(QDomDocument document) } } } - + myOwnerWindow->updateProt(); return 1; } @@ -418,10 +513,10 @@ int DiagramScene::addTextItem(DiagramTextItem * textItem) if(iter==textItemsByID.end()) { textItemsByID.insert(i,textItem); - return 1; + return i; } } - return 0; + return -1; } void DiagramScene::removeTextItem(DiagramTextItem * textItem) diff --git a/Software/sie_cg/block_editor/diagramscene.h b/Software/sie_cg/block_editor/diagramscene.h index b93f814..39137b5 100644 --- a/Software/sie_cg/block_editor/diagramscene.h +++ b/Software/sie_cg/block_editor/diagramscene.h @@ -47,6 +47,7 @@ #include #include "diagramtextitem.h" #include "arrow.h" +#include "mainwindow.h" QT_BEGIN_NAMESPACE class QGraphicsSceneMouseEvent; @@ -56,8 +57,9 @@ class QGraphicsLineItem; class QFont; class QGraphicsTextItem; class QColor; +class QStatusBar; QT_END_NAMESPACE - +class MainWindow; class Arrow; class DiagramTextItem; @@ -68,7 +70,7 @@ class DiagramScene : public QGraphicsScene public: enum Mode { MoveItem , EditPolygon, InsertText }; - DiagramScene(QMenu *itemMenu, QObject *parent = 0); + DiagramScene(QMenu *itemMenu, MainWindow *ownerWindow, QObject *parent=0); QDomDocument toXmlFormat(); int fromXmlFormat(QDomDocument xmlDocument); @@ -81,6 +83,8 @@ public: int addTextItem(DiagramTextItem * textItem); void removeTextItem(DiagramTextItem * textItem); + QString createPrototype(); + public slots: void setMode(Mode mode){myMode=mode;} void editorLostFocus(DiagramTextItem *item); @@ -116,6 +120,7 @@ private: short int myGrid; int myCorners; QHash textItemsByID; + MainWindow *myOwnerWindow; }; #endif diff --git a/Software/sie_cg/block_editor/diagramscene.pro.user b/Software/sie_cg/block_editor/diagramscene.pro.user index da71f5d..01524d2 100644 --- a/Software/sie_cg/block_editor/diagramscene.pro.user +++ b/Software/sie_cg/block_editor/diagramscene.pro.user @@ -76,7 +76,7 @@ Debug - DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-MI4KrAyPP5,guid=5c5c5e6146195c74b6ad266d4cc07afd + DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-i0TevybO0n,guid=8b93acbaab2ecdba6bb7d4064ce7e29f DEFAULTS_PATH=/usr/share/gconf/gnome.default.path DESKTOP_SESSION=gnome DISPLAY=:0.0 @@ -84,8 +84,7 @@ GDM_KEYBOARD_LAYOUT=es GDM_LANG=en_US.utf8 GNOME_DESKTOP_SESSION_ID=this-is-deprecated - GNOME_KEYRING_CONTROL=/tmp/keyring-CFAuJK - GNOME_KEYRING_PID=1516 + GNOME_KEYRING_CONTROL=/tmp/keyring-7RmeU0 GTK_MODULES=canberra-gtk-module HOME=/home/juan64bits LANG=en_US.utf8 @@ -96,20 +95,20 @@ PATH=/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games PWD=/home/juan64bits QTDIR=/usr/share/qt4 - SESSION_MANAGER=local/Maximus:@/tmp/.ICE-unix/1534,unix/Maximus:/tmp/.ICE-unix/1534 + SESSION_MANAGER=local/Maximus:@/tmp/.ICE-unix/1244,unix/Maximus:/tmp/.ICE-unix/1244 SHELL=/bin/bash SPEECHD_PORT=7560 - SSH_AGENT_PID=1570 - SSH_AUTH_SOCK=/tmp/keyring-CFAuJK/ssh + SSH_AGENT_PID=1408 + SSH_AUTH_SOCK=/tmp/keyring-7RmeU0/ssh USER=juan64bits USERNAME=juan64bits - XAUTHORITY=/var/run/gdm/auth-for-juan64bits-V4ry7M/database + XAUTHORITY=/var/run/gdm/auth-for-juan64bits-W3dU0B/database XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/ - XDG_SESSION_COOKIE=b9a7fbc4d869fc15bd6cdd474bcc9a28-1287682812.550485-1725059380 + XDG_SESSION_COOKIE=b9a7fbc4d869fc15bd6cdd474bcc9a28-1290265246.859440-43205519 - /home/juan64bits/QT/diagramscene/block_editor/diagramscene.pro + /home/juan64bits/ebd/ECB/nn-usb-fpga/Software/sie_cg/block_editor/diagramscene.pro -spec linux-g++ -r @@ -117,7 +116,7 @@ /usr/bin/qmake-qt4 false - /home/juan64bits/QT/diagramscene/block_editor + /home/juan64bits/ebd/ECB/nn-usb-fpga/Software/sie_cg/block_editor @@ -125,7 +124,7 @@ Debug - DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-MI4KrAyPP5,guid=5c5c5e6146195c74b6ad266d4cc07afd + DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-i0TevybO0n,guid=8b93acbaab2ecdba6bb7d4064ce7e29f DEFAULTS_PATH=/usr/share/gconf/gnome.default.path DESKTOP_SESSION=gnome DISPLAY=:0.0 @@ -133,8 +132,7 @@ GDM_KEYBOARD_LAYOUT=es GDM_LANG=en_US.utf8 GNOME_DESKTOP_SESSION_ID=this-is-deprecated - GNOME_KEYRING_CONTROL=/tmp/keyring-CFAuJK - GNOME_KEYRING_PID=1516 + GNOME_KEYRING_CONTROL=/tmp/keyring-7RmeU0 GTK_MODULES=canberra-gtk-module HOME=/home/juan64bits LANG=en_US.utf8 @@ -145,17 +143,17 @@ PATH=/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games PWD=/home/juan64bits QTDIR=/usr/share/qt4 - SESSION_MANAGER=local/Maximus:@/tmp/.ICE-unix/1534,unix/Maximus:/tmp/.ICE-unix/1534 + SESSION_MANAGER=local/Maximus:@/tmp/.ICE-unix/1244,unix/Maximus:/tmp/.ICE-unix/1244 SHELL=/bin/bash SPEECHD_PORT=7560 - SSH_AGENT_PID=1570 - SSH_AUTH_SOCK=/tmp/keyring-CFAuJK/ssh + SSH_AGENT_PID=1408 + SSH_AUTH_SOCK=/tmp/keyring-7RmeU0/ssh USER=juan64bits USERNAME=juan64bits - XAUTHORITY=/var/run/gdm/auth-for-juan64bits-V4ry7M/database + XAUTHORITY=/var/run/gdm/auth-for-juan64bits-W3dU0B/database XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/ - XDG_SESSION_COOKIE=b9a7fbc4d869fc15bd6cdd474bcc9a28-1287682812.550485-1725059380 + XDG_SESSION_COOKIE=b9a7fbc4d869fc15bd6cdd474bcc9a28-1290265246.859440-43205519 false @@ -163,7 +161,7 @@ /usr/bin/make true - /home/juan64bits/QT/diagramscene/block_editor + /home/juan64bits/ebd/ECB/nn-usb-fpga/Software/sie_cg/block_editor diff --git a/Software/sie_cg/block_editor/diagramtextitem.h b/Software/sie_cg/block_editor/diagramtextitem.h index bda5886..03aa146 100644 --- a/Software/sie_cg/block_editor/diagramtextitem.h +++ b/Software/sie_cg/block_editor/diagramtextitem.h @@ -70,14 +70,14 @@ public: { return Type;} int styleIO() - { return myStyleIO;} - - unsigned char ID() - { return myID;} + { return myStyleIO;} unsigned char textID() const { return myID;} + void setTextID(unsigned char ID) + { myID=ID;} + QPointF offset() const { return posOffset;} diff --git a/Software/sie_cg/block_editor/left_shift.die b/Software/sie_cg/block_editor/left_shift.die index 8bf5800..1493f2d 100644 --- a/Software/sie_cg/block_editor/left_shift.die +++ b/Software/sie_cg/block_editor/left_shift.die @@ -9,10 +9,10 @@ - - - - + + + + diff --git a/Software/sie_cg/block_editor/lineitem.h b/Software/sie_cg/block_editor/lineitem.h index 682cdab..d548ec1 100644 --- a/Software/sie_cg/block_editor/lineitem.h +++ b/Software/sie_cg/block_editor/lineitem.h @@ -53,6 +53,7 @@ class QRectF; class QGraphicsSceneMouseEvent; class QPainterPath; QT_END_NAMESPACE +class Arrow; class lineItem : public QGraphicsLineItem { diff --git a/Software/sie_cg/block_editor/main.cpp b/Software/sie_cg/block_editor/main.cpp index f407824..52d16cb 100644 --- a/Software/sie_cg/block_editor/main.cpp +++ b/Software/sie_cg/block_editor/main.cpp @@ -49,7 +49,7 @@ int main(int argv, char *args[]) QApplication app(argv, args); MainWindow mainWindow; - mainWindow.setGeometry(100, 100, 1024, 640); + mainWindow.setGeometry(100, 100, 1024, 768); mainWindow.show(); return app.exec(); } diff --git a/Software/sie_cg/block_editor/mainwindow.cpp b/Software/sie_cg/block_editor/mainwindow.cpp index 0a3b24b..0adf950 100644 --- a/Software/sie_cg/block_editor/mainwindow.cpp +++ b/Software/sie_cg/block_editor/mainwindow.cpp @@ -51,18 +51,43 @@ MainWindow::MainWindow() createActions(); createToolBox(); createMenus(); + statusBar = new QStatusBar(this); - scene = new DiagramScene(itemMenu); + scene = new DiagramScene(itemMenu,this); scene->setSceneRect(QRectF(0, 0, 1000, 1000)); connect(scene, SIGNAL(textInserted(QGraphicsTextItem*)), this, SLOT(textInserted(QGraphicsTextItem*))); createToolbars(); - QHBoxLayout *layout = new QHBoxLayout; - layout->addWidget(toolBox); - view = new QGraphicsView(scene); - layout->addWidget(view); + /* Create widgets for code editor */ + headerTextEdit = new QTextEdit; + headerTextEdit->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); + headerTextEdit->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded); + blockTextEdit = new QTextEdit; + blockTextEdit->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); + blockTextEdit->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded); + extraTextEdit = new QTextEdit; + extraTextEdit->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); + extraTextEdit->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded); + prototypeLabel = new QLabel; + prototypeLabel->setText("\nvoid BLOCK_NAME () {"); + headerLabel = new QLabel; + headerLabel->setText("Code for Header Section Here"); + extraLabel = new QLabel; + extraLabel->setText("}\n\nCode for Extra Section Here"); + + /* Create central widget */ + QGridLayout *layout = new QGridLayout; + layout->addWidget(toolBox,0,0,7,1); + view = new QGraphicsView(scene); + layout->addWidget(view,0,1,1,1); + layout->addWidget(headerLabel,1,1,1,1); + layout->addWidget(headerTextEdit,2,1,1,1); + layout->addWidget(prototypeLabel,3,1,1,1); + layout->addWidget(blockTextEdit,4,1,1,1); + layout->addWidget(extraLabel,5,1,1,1); + layout->addWidget(extraTextEdit,6,1,1,1); QWidget *widget = new QWidget; widget->setLayout(layout); @@ -74,6 +99,8 @@ MainWindow::MainWindow() if(QApplication::argc()>1) {newDiagram(QString(QApplication::argv()[1]));} + statusBar->showMessage("Ready..."); + this->setStatusBar(statusBar); } void MainWindow::deleteItem() @@ -103,6 +130,7 @@ void MainWindow::deleteItem() scene->removeItem(item); delete(item); } + updateProt(); } } } @@ -111,8 +139,13 @@ void MainWindow::textInserted(QGraphicsTextItem*) { buttonGroup->button(selectedButton)->setChecked(false); scene->setMode(DiagramScene::MoveItem); + updateProt(); } +void MainWindow::updateProt() +{ + prototypeLabel->setText(scene->createPrototype()); +} void MainWindow::sceneScaleChanged(const QString &scale) { @@ -158,27 +191,27 @@ void MainWindow::createToolBox() QGridLayout *layout = new QGridLayout; //INPUTS int i=0; - layout->addWidget(createToolButton(129+i,tr("Bool"), + layout->addWidget(createToolButton(128+i,tr("Bool"), QIcon(":/images/background1.png")),++i,0); - layout->addWidget(createToolButton(129+i,tr("Char"), + layout->addWidget(createToolButton(128+i,tr("Char"), QIcon(":/images/background1.png")),++i,0); - layout->addWidget(createToolButton(129+i,tr("Integer"), + layout->addWidget(createToolButton(128+i,tr("Integer"), QIcon(":/images/background1.png")),++i,0); - layout->addWidget(createToolButton(129+i,tr("Double"), + layout->addWidget(createToolButton(128+i,tr("Double"), QIcon(":/images/background1.png")),++i,0); - layout->addWidget(createToolButton(129+i,tr("Float"), + layout->addWidget(createToolButton(128+i,tr("Float"), QIcon(":/images/background1.png")),++i,0); - layout->addWidget(createToolButton(129+i,tr("Short"), + layout->addWidget(createToolButton(128+i,tr("Short"), QIcon(":/images/background1.png")),++i,0); - layout->addWidget(createToolButton(129+i,tr("Long"), + layout->addWidget(createToolButton(128+i,tr("Long"), QIcon(":/images/background1.png")),++i,0); - layout->addWidget(createToolButton(129+i,tr("UChar"), + layout->addWidget(createToolButton(128+i,tr("UChar"), QIcon(":/images/background1.png")),++i,0); - layout->addWidget(createToolButton(129+i,tr("UInt"), + layout->addWidget(createToolButton(128+i,tr("UInt"), QIcon(":/images/background1.png")),++i,0); - layout->addWidget(createToolButton(129+i,tr("UShort"), + layout->addWidget(createToolButton(128+i,tr("UShort"), QIcon(":/images/background1.png")),++i,0); - layout->addWidget(createToolButton(129+i,tr("ULong"), + layout->addWidget(createToolButton(128+i,tr("ULong"), QIcon(":/images/background1.png")),++i,0); @@ -343,6 +376,7 @@ bool MainWindow::newDiagram(QString filePath) { saveIfNeeded(); scene->cleanScene(); + prototypeLabel->setText("\nvoid BLOCK_NAME () {"); myFilePath=""; if(filePath=="") @@ -357,8 +391,8 @@ bool MainWindow::newDiagram(QString filePath) file.close(); if(!parsing) { - QMessageBox::warning(this,"Aborting","Failed to parse file, " - "wrong format or encoding."); + QMessageBox::warning(this,"Parsing warning","Invalid or void " + " element found in file."); return 0; } scene->fromXmlFormat(document); diff --git a/Software/sie_cg/block_editor/mainwindow.h b/Software/sie_cg/block_editor/mainwindow.h index 3728a0a..08c9967 100644 --- a/Software/sie_cg/block_editor/mainwindow.h +++ b/Software/sie_cg/block_editor/mainwindow.h @@ -50,6 +50,7 @@ #include "diagramtextitem.h" #include "lineitem.h" #include "arrow.h" +#include class DiagramScene; @@ -80,6 +81,9 @@ public: { return QDir::currentPath();} void saveIfNeeded(); + void updateProt(); + + QStatusBar *statusBar; private slots: void deleteItem(); @@ -97,6 +101,7 @@ private: void createActions(); void createMenus(); void createToolbars(); + QWidget *createToolButton(int ID, QString type,QIcon icon); DiagramScene *scene; @@ -126,6 +131,14 @@ private: QButtonGroup *buttonGroup; + QLabel * headerLabel; + QTextEdit * headerTextEdit; + QLabel * prototypeLabel; + QTextEdit * blockTextEdit; + QLabel * extraLabel; + QTextEdit * extraTextEdit; + + int selectedButton; QString myFilePath; diff --git a/Software/sie_cg/block_editor/pwm_single.die b/Software/sie_cg/block_editor/pwm_single.die index 73cbda8..d264ba5 100644 --- a/Software/sie_cg/block_editor/pwm_single.die +++ b/Software/sie_cg/block_editor/pwm_single.die @@ -23,10 +23,10 @@ - - - - + + + + diff --git a/Software/sie_cg/block_editor/right_shift.die b/Software/sie_cg/block_editor/right_shift.die index 0f2fd90..e7a0a7a 100644 --- a/Software/sie_cg/block_editor/right_shift.die +++ b/Software/sie_cg/block_editor/right_shift.die @@ -9,10 +9,10 @@ - - - - + + + + diff --git a/Software/sie_cg/block_editor/while.die b/Software/sie_cg/block_editor/while.die index 81ef45d..ab4ada0 100644 --- a/Software/sie_cg/block_editor/while.die +++ b/Software/sie_cg/block_editor/while.die @@ -23,7 +23,7 @@ - + diff --git a/Software/sie_cg/codedialog.cpp b/Software/sie_cg/codedialog.cpp new file mode 100644 index 0000000..4bb690c --- /dev/null +++ b/Software/sie_cg/codedialog.cpp @@ -0,0 +1,26 @@ +#include "codedialog.h" +#include "ui_codedialog.h" + +codeDialog::codeDialog(QWidget *parent) : + QMainWindow(parent), + ui(new Ui::codeDialog) +{ + ui->setupUi(this); +} + +codeDialog::~codeDialog() +{ + delete ui; +} + +void codeDialog::changeEvent(QEvent *e) +{ + QMainWindow::changeEvent(e); + switch (e->type()) { + case QEvent::LanguageChange: + ui->retranslateUi(this); + break; + default: + break; + } +} diff --git a/Software/sie_cg/codedialog.h b/Software/sie_cg/codedialog.h new file mode 100644 index 0000000..464d9a9 --- /dev/null +++ b/Software/sie_cg/codedialog.h @@ -0,0 +1,23 @@ +#ifndef CODEDIALOG_H +#define CODEDIALOG_H + +#include + +namespace Ui { + class codeDialog; +} + +class codeDialog : public QMainWindow { + Q_OBJECT +public: + codeDialog(QWidget *parent = 0); + ~codeDialog(); + +protected: + void changeEvent(QEvent *e); + +private: + Ui::codeDialog *ui; +}; + +#endif // CODEDIALOG_H diff --git a/Software/sie_cg/codedialog.ui b/Software/sie_cg/codedialog.ui new file mode 100644 index 0000000..db9309b --- /dev/null +++ b/Software/sie_cg/codedialog.ui @@ -0,0 +1,54 @@ + + + codeDialog + + + + 0 + 0 + 640 + 480 + + + + MainWindow + + + + + + + &Ok + + + + + + + Qt::ScrollBarAsNeeded + + + + + + + + + + okButton + clicked() + codeDialog + hide() + + + 392 + 423 + + + 319 + 239 + + + + + diff --git a/Software/sie_cg/diagramitem.cpp b/Software/sie_cg/diagramitem.cpp index 3a81d4c..7e96bdb 100644 --- a/Software/sie_cg/diagramitem.cpp +++ b/Software/sie_cg/diagramitem.cpp @@ -147,6 +147,17 @@ DiagramTextItem *DiagramItem::pointerText(unsigned char ID) return 0; } +bool DiagramItem::textIsIO(unsigned char ID) +{ + foreach(DiagramTextItem *item, textItems) + { + if(item->textID()==ID) + if(item->styleIO()!=0) + return 1; + } + return 0; +} + unsigned char DiagramItem::existArrow(DiagramTextItem *startItem, DiagramTextItem *endItem) { diff --git a/Software/sie_cg/diagramitem.h b/Software/sie_cg/diagramitem.h index cf98f1d..bf67f49 100644 --- a/Software/sie_cg/diagramitem.h +++ b/Software/sie_cg/diagramitem.h @@ -108,7 +108,6 @@ public: unsigned char existArrow(DiagramTextItem *startItem, DiagramTextItem *endItem); - void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent) {QGraphicsPolygonItem::mousePressEvent(mouseEvent);} void mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent); @@ -118,6 +117,7 @@ public: bool setValue(unsigned char ioID, QString value); DiagramTextItem * pointerText(unsigned char ID); + bool textIsIO(unsigned char ID); void setColor(const QColor &color) { myColor=color; setBrush(color); } diff --git a/Software/sie_cg/diagramscene.cpp b/Software/sie_cg/diagramscene.cpp index 92805e5..112eead 100644 --- a/Software/sie_cg/diagramscene.cpp +++ b/Software/sie_cg/diagramscene.cpp @@ -277,10 +277,6 @@ QDomDocument DiagramScene::toXmlFormat() QDomElement diagram = document.createElement("Diagram"); document.appendChild(diagram); - QDomElement test = document.createElement("Test"); - test.text().fromAscii("TEXT HERE"); - document.appendChild(test); - //Lists of items QList Items; QList Arrows; @@ -333,7 +329,7 @@ QDomDocument DiagramScene::toXmlFormat() int DiagramScene::fromXmlFormat(QDomDocument document) { //Read diagrams TODO: in future... add multi projects functionality - QHash DiagramsID; + DiagramsID.clear(); QDomNodeList diagrams = document.elementsByTagName("Diagram"); if(!diagrams.at(0).isElement()) return 0; @@ -436,43 +432,68 @@ int DiagramScene::fromXmlFormat(QDomDocument document) DiagramTextItem *startItem= DiagramsID.value(arrow.attribute("start-Owner").toInt()) ->pointerText(arrow.attribute("start-ID").toInt()); + bool startIsIO = + DiagramsID.value(arrow.attribute("start-Owner").toInt()) + ->textIsIO(arrow.attribute("start-ID").toInt()); DiagramTextItem *endItem= DiagramsID.value(arrow.attribute("end-Owner").toInt()) ->pointerText(arrow.attribute("end-ID").toInt()); + bool endIsIO = + DiagramsID.value(arrow.attribute("end-Owner").toInt()) + ->textIsIO(arrow.attribute("end-ID").toInt()); - Arrow *newArrow = new Arrow(startItem, endItem,0,this); - newArrow->setColor(QColor(arrow.attribute("color"))); - startItem->ownerItem()->addArrow(newArrow); - endItem->ownerItem()->addArrow(newArrow); - newArrow->setZValue(0.0); - addItem(newArrow); - newArrow->updatePosition(); - - for (QDomNode node = arrow.firstChild() ; - !node.isNull() ; - node = node.nextSibling()) + if(!startIsIO||!endIsIO) { - //Load diagram text values and set on diagram item - QDomElement arrowCorners = node.toElement(); - if(arrowCorners.tagName()!="arrowCorners") - return 0; - int i=0; - for (QDomNode node = arrowCorners.firstChild() ; + QMessageBox::warning(0,"Arrow can't be loaded.", + tr("An arrow can not be loaded because ")+ + tr("will be connected to a label")+ + tr(" that isn't an Input/Output type. ")+ + tr("Probable cause may be that the start")+ + tr(" or end block has been modified.")); + } + else if(startItem==0 || endItem==0) + { + QMessageBox::warning(0,"Arrow can't be loaded", + tr("An arrow can not be loaded because ")+ + tr("her IO label ID could not be found. ")+ + tr("Probable cause may be that the start")+ + tr(" or end block has been modified.")); + } + else + { + Arrow *newArrow = new Arrow(startItem, endItem,0,this); + newArrow->setColor(QColor(arrow.attribute("color"))); + startItem->ownerItem()->addArrow(newArrow); + endItem->ownerItem()->addArrow(newArrow); + newArrow->setZValue(0.0); + addItem(newArrow); + newArrow->updatePosition(); + + for (QDomNode node = arrow.firstChild() ; !node.isNull() ; node = node.nextSibling()) { - QDomElement arrowCorner = node.toElement(); - if(arrowCorner.tagName()!="arrowCorner") + //Load diagram text values and set on diagram item + QDomElement arrowCorners = node.toElement(); + if(arrowCorners.tagName()!="arrowCorners") return 0; + int i=0; + for (QDomNode node = arrowCorners.firstChild() ; + !node.isNull() ; + node = node.nextSibling()) + { + QDomElement arrowCorner = node.toElement(); + if(arrowCorner.tagName()!="arrowCorner") + return 0; - QPointF cornerPos = - QPointF(arrowCorner.attribute("x").toFloat(), - arrowCorner.attribute("y").toFloat()); + QPointF cornerPos = + QPointF(arrowCorner.attribute("x").toFloat(), + arrowCorner.attribute("y").toFloat()); - newArrow->createCorner(cornerPos,++i); + newArrow->createCorner(cornerPos,++i); + } } } - } } } diff --git a/Software/sie_cg/diagramscene.h b/Software/sie_cg/diagramscene.h index bded4e3..4453c00 100644 --- a/Software/sie_cg/diagramscene.h +++ b/Software/sie_cg/diagramscene.h @@ -67,7 +67,7 @@ class DiagramScene : public QGraphicsScene public: enum Mode { InsertItem, InsertLine, InsertText, MoveItem }; - DiagramScene(QMenu *itemMenu, MainWindow *ownerWindow = 0, + DiagramScene(QMenu *itemMenu, MainWindow *ownerWindow, QObject *parent = 0); QFont font() const @@ -88,6 +88,9 @@ public: int fromXmlFormat(QDomDocument xmlDocument); void cleanScene(); + QHash getDiagramsID () + { return DiagramsID;} + QStringList getLibList(){return libraryList;} void setLibList(QStringList list) {libraryList=list;} @@ -136,6 +139,7 @@ private: QStringList libraryList; QHash domElementsByName; QHash buttonIdByName; + QHash DiagramsID; MainWindow *myOwnerWindow; }; diff --git a/Software/sie_cg/diagramscene.pro b/Software/sie_cg/diagramscene.pro index 995ecc2..ad392fd 100644 --- a/Software/sie_cg/diagramscene.pro +++ b/Software/sie_cg/diagramscene.pro @@ -3,16 +3,19 @@ HEADERS = mainwindow.h \ diagramscene.h \ arrow.h \ diagramtextitem.h \ - lineitem.h + lineitem.h \ + codedialog.h \ + codedialog.h \ + codedialog.h SOURCES = mainwindow.cpp \ diagramitem.cpp \ main.cpp \ arrow.cpp \ diagramtextitem.cpp \ diagramscene.cpp \ - lineitem.cpp + lineitem.cpp \ + codedialog.cpp RESOURCES = diagramscene.qrc - TARGET = diagrameditor # install @@ -30,4 +33,5 @@ symbian:include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) QT += xml \ svg \ network -FORMS += librarydialog.ui +FORMS += librarydialog.ui \ + codedialog.ui diff --git a/Software/sie_cg/diagramscene.pro.user b/Software/sie_cg/diagramscene.pro.user index ff43fba..854b225 100644 --- a/Software/sie_cg/diagramscene.pro.user +++ b/Software/sie_cg/diagramscene.pro.user @@ -76,7 +76,7 @@ Debug - DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-bm3IFDvHlY,guid=a9cadece3d5adbab4e7ecc664cc367c4 + DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-i0TevybO0n,guid=8b93acbaab2ecdba6bb7d4064ce7e29f DEFAULTS_PATH=/usr/share/gconf/gnome.default.path DESKTOP_SESSION=gnome DISPLAY=:0.0 @@ -84,11 +84,11 @@ GDM_KEYBOARD_LAYOUT=es GDM_LANG=en_US.utf8 GNOME_DESKTOP_SESSION_ID=this-is-deprecated - GNOME_KEYRING_CONTROL=/tmp/keyring-EOe3re - GNOME_KEYRING_PID=1591 + GNOME_KEYRING_CONTROL=/tmp/keyring-7RmeU0 GTK_MODULES=canberra-gtk-module HOME=/home/juan64bits LANG=en_US.utf8 + LANGUAGE= LD_LIBRARY_PATH=/usr/lib/qtcreator LOGNAME=juan64bits MANDATORY_PATH=/usr/share/gconf/gnome.mandatory.path @@ -96,20 +96,20 @@ PATH=/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games PWD=/home/juan64bits QTDIR=/usr/share/qt4 - SESSION_MANAGER=local/Maximus:@/tmp/.ICE-unix/1609,unix/Maximus:/tmp/.ICE-unix/1609 + SESSION_MANAGER=local/Maximus:@/tmp/.ICE-unix/1244,unix/Maximus:/tmp/.ICE-unix/1244 SHELL=/bin/bash SPEECHD_PORT=7560 - SSH_AGENT_PID=1645 - SSH_AUTH_SOCK=/tmp/keyring-EOe3re/ssh + SSH_AGENT_PID=1408 + SSH_AUTH_SOCK=/tmp/keyring-7RmeU0/ssh USER=juan64bits USERNAME=juan64bits - XAUTHORITY=/var/run/gdm/auth-for-juan64bits-XFOps8/database + XAUTHORITY=/var/run/gdm/auth-for-juan64bits-W3dU0B/database XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/ - XDG_SESSION_COOKIE=b9a7fbc4d869fc15bd6cdd474bcc9a28-1287874500.2500-279079160 + XDG_SESSION_COOKIE=b9a7fbc4d869fc15bd6cdd474bcc9a28-1290265246.859440-43205519 - /home/juan64bits/QT/sie_cg/diagramscene.pro + /home/juan64bits/ebd/ECB/nn-usb-fpga/Software/sie_cg/diagramscene.pro -spec linux-g++ -r @@ -117,7 +117,7 @@ /usr/bin/qmake-qt4 false - /home/juan64bits/QT/sie_cg + /home/juan64bits/ebd/ECB/nn-usb-fpga/Software/sie_cg @@ -125,7 +125,7 @@ Debug - DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-bm3IFDvHlY,guid=a9cadece3d5adbab4e7ecc664cc367c4 + DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-i0TevybO0n,guid=8b93acbaab2ecdba6bb7d4064ce7e29f DEFAULTS_PATH=/usr/share/gconf/gnome.default.path DESKTOP_SESSION=gnome DISPLAY=:0.0 @@ -133,11 +133,11 @@ GDM_KEYBOARD_LAYOUT=es GDM_LANG=en_US.utf8 GNOME_DESKTOP_SESSION_ID=this-is-deprecated - GNOME_KEYRING_CONTROL=/tmp/keyring-EOe3re - GNOME_KEYRING_PID=1591 + GNOME_KEYRING_CONTROL=/tmp/keyring-7RmeU0 GTK_MODULES=canberra-gtk-module HOME=/home/juan64bits LANG=en_US.utf8 + LANGUAGE= LD_LIBRARY_PATH=/usr/lib/qtcreator LOGNAME=juan64bits MANDATORY_PATH=/usr/share/gconf/gnome.mandatory.path @@ -145,17 +145,17 @@ PATH=/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games PWD=/home/juan64bits QTDIR=/usr/share/qt4 - SESSION_MANAGER=local/Maximus:@/tmp/.ICE-unix/1609,unix/Maximus:/tmp/.ICE-unix/1609 + SESSION_MANAGER=local/Maximus:@/tmp/.ICE-unix/1244,unix/Maximus:/tmp/.ICE-unix/1244 SHELL=/bin/bash SPEECHD_PORT=7560 - SSH_AGENT_PID=1645 - SSH_AUTH_SOCK=/tmp/keyring-EOe3re/ssh + SSH_AGENT_PID=1408 + SSH_AUTH_SOCK=/tmp/keyring-7RmeU0/ssh USER=juan64bits USERNAME=juan64bits - XAUTHORITY=/var/run/gdm/auth-for-juan64bits-XFOps8/database + XAUTHORITY=/var/run/gdm/auth-for-juan64bits-W3dU0B/database XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/ - XDG_SESSION_COOKIE=b9a7fbc4d869fc15bd6cdd474bcc9a28-1287874500.2500-279079160 + XDG_SESSION_COOKIE=b9a7fbc4d869fc15bd6cdd474bcc9a28-1290265246.859440-43205519 false @@ -163,7 +163,7 @@ /usr/bin/make true - /home/juan64bits/QT/sie_cg + /home/juan64bits/ebd/ECB/nn-usb-fpga/Software/sie_cg diff --git a/Software/sie_cg/diagramscene.qrc b/Software/sie_cg/diagramscene.qrc index 53ef19b..6850782 100644 --- a/Software/sie_cg/diagramscene.qrc +++ b/Software/sie_cg/diagramscene.qrc @@ -24,5 +24,6 @@ images/yes.png images/zoom_in.png images/zoom_out.png + images/cg.png diff --git a/Software/sie_cg/images/cg.png b/Software/sie_cg/images/cg.png new file mode 100755 index 0000000000000000000000000000000000000000..6d6186e9fc3cbace0f412a2a1faece1e884acae3 GIT binary patch literal 115928 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 N002ovPDHLkV1hDa2Lb>9 literal 0 HcmV?d00001 diff --git a/Software/sie_cg/mainwindow.cpp b/Software/sie_cg/mainwindow.cpp index ce15e25..7453b38 100644 --- a/Software/sie_cg/mainwindow.cpp +++ b/Software/sie_cg/mainwindow.cpp @@ -50,7 +50,7 @@ MainWindow::MainWindow() { buttonGroup=0; toolBox=0; - + statusBar = new QStatusBar(this); createActions(); createMenus(); scene = new DiagramScene(itemMenu,this); @@ -68,9 +68,11 @@ MainWindow::MainWindow() setUnifiedTitleAndToolBarOnMac(true); myFilePath = ""; libDialog=0; - + cgDialog=0; if(QApplication::argc()>1) {newDiagram(QString(QApplication::argv()[1]));} + statusBar->showMessage("Ready..."); + this->setStatusBar(statusBar); } void MainWindow::backgroundButtonGroupClicked(QAbstractButton *button) @@ -147,6 +149,35 @@ void MainWindow::pointerGroupClicked(int) scene->setMode(DiagramScene::Mode(pointerTypeGroup->checkedId())); } +void MainWindow::cgGroupClicked(int id) +{ + if(id==0) + { + QString Test; + QHash DiagramsID = scene->getDiagramsID(); + foreach (QGraphicsItem *item, scene->items()) { + if (item->type() == DiagramItem::Type) { + Test+=(tr("\nDiagramID=\t") + QString::number(DiagramsID. + key(qgraphicsitem_cast(item)))); + QList TextItems = + qgraphicsitem_cast(item)->getTextItems(); + foreach (DiagramTextItem *textItem, TextItems) { + Test+=(tr("\n\tTextItemID=\t") + QString::number( + textItem->textID())); + Test+=(tr("\n\t\tTextItemStyleIO=\t") + QString::number( + textItem->styleIO())); + Test+=(tr("\n\t\tTextItemValue=\t") + + textItem->toPlainText()); + Test+=(tr("\n\t\tTextItemEditable=\t") + + (textItem->isEditable()?"true":"false")); + } + } + } + codeForm(); + cgUi->codeTextEdit->setPlainText(Test); + } +} + void MainWindow::bringToFront() { sendTo(1); @@ -378,10 +409,10 @@ void MainWindow::createToolBox() //toolBox->addItem(backgroundWidget, tr("Backgrounds")); //Add tool box to window - QHBoxLayout *newLayout = new QHBoxLayout; - newLayout->addWidget(toolBox); + QGridLayout *newLayout = new QGridLayout; + newLayout->addWidget(toolBox,0,0); view = new QGraphicsView(scene); - newLayout->addWidget(view); + newLayout->addWidget(view,0,1); QWidget *widget = new QWidget; widget->setLayout(newLayout); @@ -466,11 +497,13 @@ void MainWindow::createActions() libraryAction = new QAction(tr("&Library..."),this); + libraryAction->setStatusTip(tr("Add, Remove or edit libraries")); connect(libraryAction, SIGNAL(triggered()), this, SLOT(libraryForm())); optionsAction = new QAction(tr("&Options"),this); optionsAction->setShortcuts(QKeySequence::Preferences); + optionsAction->setStatusTip(tr("Edit options")); connect(optionsAction, SIGNAL(triggered()), this, SLOT(optionsForm())); @@ -518,6 +551,20 @@ void MainWindow::createToolbars() editToolBar->addAction(toFrontAction); editToolBar->addAction(sendBackAction); + QToolButton *cgButton = new QToolButton; + cgButton->setCheckable(false); + cgButton->setIcon(QIcon(":/images/cg.png")); + + cgGroup = new QButtonGroup; + cgGroup->addButton(cgButton,0); + + connect(cgGroup, SIGNAL(buttonClicked(int)), + this, SLOT(cgGroupClicked(int))); + + cgToolbar = addToolBar(tr("Code Generator")); + cgToolbar->addWidget(cgButton); + + fontCombo = new QFontComboBox(); fontSizeCombo = new QComboBox(); connect(fontCombo, SIGNAL(currentFontChanged(QFont)), @@ -602,6 +649,7 @@ void MainWindow::createToolbars() pointerToolbar->addWidget(pointerButton); pointerToolbar->addWidget(linePointerButton); pointerToolbar->addWidget(sceneScaleCombo); + } QWidget *MainWindow::createCellWidget(QString text, QDomElement *customItem) @@ -712,8 +760,8 @@ QDomDocument MainWindow::parseDocument(QString filePath) file.close(); if(!parsing) { - QMessageBox::warning(this,"Operation failed","Failed to parse file, " - "wrong format or encoding."); + QMessageBox::warning(this,"Parsing warning","Invalid or void " + " element found in file."); } } else @@ -821,16 +869,21 @@ int MainWindow::exportDiagram() int MainWindow::libraryForm() { + bool firstTime=0; if(!libDialog) { createLibraryDialog(); + firstTime=1; } libDialog->setModal(1); libUi->listLib->clear(); libUi->listLib->addItems(libraryList); libDialog->setWindowTitle(tr("Library paths...")); QStringList oldLibraryList=libraryList; - libDialog->exec(); + if(firstTime) + libDialog->exec(); + else + libDialog->show(); if (libDialog->result() == QDialog::Rejected) libraryList = oldLibraryList; @@ -838,7 +891,7 @@ int MainWindow::libraryForm() { scene->setLibList(libraryList); updateLibraries(); - } + } return 0; } @@ -854,6 +907,27 @@ void MainWindow::createLibraryDialog() connect(libUi->editLib,SIGNAL(clicked()),this,SLOT(editLibPath())); } +int MainWindow::codeForm() +{ + if(!cgDialog) + { + createCgDialog(); + } + + cgDialog->setWindowTitle(tr("Code Generator...")); + cgUi->codeTextEdit->setAcceptRichText(true); + cgDialog->show(); + + return 0; +} + +void MainWindow::createCgDialog() +{ + cgDialog = new QMainWindow(this); + cgUi = new Ui_codeDialog; + cgUi->setupUi(cgDialog); +} + void MainWindow::addLibPath() { QString @@ -869,10 +943,10 @@ void MainWindow::addLibPath() " or not exists."); return; } - if(libUi->listLib->findItems(filePath,Qt::MatchExactly).count()==0) - { - QDir myCurrentDir = this->currentDir(); - QString relativePath=myCurrentDir.relativeFilePath(filePath); + QDir myCurrentDir = this->currentDir(); + QString relativePath= myCurrentDir.relativeFilePath(filePath); + if(libUi->listLib->findItems(relativePath,Qt::MatchExactly).count()==0) + { libraryList.append(relativePath); libUi->listLib->addItem(relativePath); } diff --git a/Software/sie_cg/mainwindow.h b/Software/sie_cg/mainwindow.h index e685896..6502c13 100644 --- a/Software/sie_cg/mainwindow.h +++ b/Software/sie_cg/mainwindow.h @@ -54,9 +54,13 @@ #include "lineitem.h" #include "arrow.h" #include "ui_librarydialog.h" +#include "ui_codedialog.h" class DiagramScene; +class DiagramTextItem; +class DiagramItem; class Ui_libraryDialog; +class callexternappT; QT_BEGIN_NAMESPACE class QAction; @@ -86,9 +90,12 @@ public: int updateLibraries(); + QStatusBar *statusBar; + private slots: void backgroundButtonGroupClicked(QAbstractButton *button); void buttonGroupClicked(int id); + void cgGroupClicked(int id); void deleteItem(); void pointerGroupClicked(int id); void bringToFront(); @@ -121,13 +128,14 @@ private slots: int optionsForm(); - + int codeForm(); private: int saveIfNeeded(); void addLibrariesButtons(QGridLayout *layout); QDomDocument parseDocument(QString filePath); void createLibraryDialog(); + void createCgDialog(); void createToolBox(); void createActions(); void createMenus(); @@ -167,10 +175,11 @@ private: QMenu *aboutMenu; QToolBar *fileToolBar; + QToolBar *cgToolbar; QToolBar *textToolBar; QToolBar *editToolBar; QToolBar *colorToolBar; - QToolBar *pointerToolbar; + QToolBar *pointerToolbar; QComboBox *sceneScaleCombo; QComboBox *itemColorCombo; @@ -181,6 +190,7 @@ private: QToolBox *toolBox; QButtonGroup *buttonGroup; QButtonGroup *pointerTypeGroup; + QButtonGroup *cgGroup; QButtonGroup *backgroundButtonGroup; QToolButton *fontColorToolButton; QToolButton *fillColorToolButton; @@ -192,14 +202,14 @@ private: QAction *fillAction; QAction *lineAction; QString myFilePath; - QDialog *libDialog; Ui_libraryDialog *libUi; + QMainWindow *cgDialog; + Ui_codeDialog *cgUi; QStringList libraryList; QHash domElementsByName; QHash buttonIdByName; - static QString callexternapp(QString xexecFile, QString xexecParm); - + static QString callexternapp(QString xexecFile, QString xexecParm); }; class callexternappT : public QThread @@ -212,8 +222,8 @@ public: { QProcess lnexternapp; lnexternapp.start(QString("%1 %2").arg(execFile).arg(execParm)); - //lnexternapp.waitForFinished(-1); - //retnValu = QString(lnexternapp.readAll()); + lnexternapp.waitForFinished(-1); + retnValu = QString(lnexternapp.readAll()); } }; diff --git a/Software/sie_cg/test.sie b/Software/sie_cg/test.sie index c12b3a0..8286e58 100644 --- a/Software/sie_cg/test.sie +++ b/Software/sie_cg/test.sie @@ -26,7 +26,7 @@ Arrows depend of items, and items depend of libraries!!!! - + @@ -39,21 +39,19 @@ Arrows depend of items, and items depend of libraries!!!! - - + - + + - - - - + + + -