f709c24 Finished xml tree but just locality of root node false (pointer deleted before the signal is emitted). Also add relation between graphical item and tree item.

--- GScribo/GScribo.pro | 62 ------------ GScribo/GScribo.pro.user | 83 +++++++++++++---- GScribo/PagesViewer/listmodel.h | 4 +- GScribo/Rendering/polygonitem.cpp | 33 +++---- GScribo/Rendering/polygonitem.h | 21 +++-- GScribo/Rendering/scene.cpp | 56 +++++++++-- GScribo/Rendering/scene.h | 12 +- GScribo/mainwindow.cpp | 190 ------------------------------------- GScribo/mainwindow.h | 67 ------------- GScribo/variantpointer.h | 4 +- GScribo/xml.cpp | 61 ++++++++---- GScribo/xml.h | 8 +- GScribo/xmlwidget.cpp | 24 +++++ GScribo/xmlwidget.h | 22 ++++- VariantPointer.h | 19 ---- XmlParser/XmlParser.pro.user | 91 ++++++++++++++++++ 16 files changed, 329 insertions(+), 428 deletions(-) delete mode 100644 GScribo/GScribo.pro delete mode 100644 GScribo/mainwindow.cpp delete mode 100644 GScribo/mainwindow.h delete mode 100644 VariantPointer.h diff --git a/GScribo/GScribo.pro b/GScribo/GScribo.pro deleted file mode 100644 index dc10ae6..0000000 --- a/GScribo/GScribo.pro +++ /dev/null @@ -1,62 +0,0 @@ -# ------------------------------------------------- -# Project created by QtCreator 2013-01-21T09:20:54 -# ------------------------------------------------- -QT += xml -INCLUDEPATH += /lrde/home/stage/froger_a/olena/milena/ \ - /lrde/home/stage/froger_a/olena/scribo/ \ - /lrde/home/stage/froger_a/olena/_build/scribo/demo/ -QMAKE_CXXFLAGS += -DNDEBUG \ - -DMLN_WO_GLOBAL_VARS -LIBS += -I/usr/include/graphicsImage \ - -lGraphicsMagick++ \ - -ltesseract_full -TARGET = GScribo -TEMPLATE = app -SOURCES += main.cpp \ - mainwindow.cpp \ - configs.cpp \ - Rendering/scene.cpp \ - Rendering/selection.cpp \ - Rendering/polygonitem.cpp \ - PagesViewer/pageswidget.cpp \ - PagesViewer/listmodel.cpp \ - Preferences/segmentationoptions.cpp \ - Preferences/preprocessingoptions.cpp \ - Preferences/ocroptions.cpp \ - Preferences/generaloptions.cpp \ - Preferences/optionwidget.cpp \ - Preferences/preferencesdialog.cpp \ - Processing/progressdialog.cpp \ - Processing/process.cpp \ - Processing/preprocess.cpp \ - Processing/runner.cpp \ - xml.cpp \ - xmlwidget.cpp -HEADERS += mainwindow.h \ - configs.h \ - region.h \ - Rendering/scene.h \ - Rendering/selection.h \ - Rendering/polygonitem.h \ - PagesViewer/pageswidget.h \ - PagesViewer/listmodel.h \ - Preferences/segmentationoptions.h \ - Preferences/preprocessingoptions.h \ - Preferences/ocroptions.h \ - Preferences/generaloptions.h \ - Preferences/optionwidget.h \ - Preferences/preferencesdialog.h \ - Processing/preprocess.h \ - Processing/progressdialog.h \ - Processing/process.h \ - dir.h \ - Processing/runner.h \ - xml.h \ - variantpointer.h \ - xmlwidget.h -FORMS += mainwindow.ui \ - Preferences/preferencesdialog.ui \ - Preferences/ocroptions.ui \ - Preferences/segmentationoptions.ui \ - Preferences/generaloptions.ui \ - Preferences/preprocessingoptions.ui diff --git a/GScribo/GScribo.pro.user b/GScribo/GScribo.pro.user index aa72d79..fdf1f0c 100644 --- a/GScribo/GScribo.pro.user +++ b/GScribo/GScribo.pro.user @@ -67,35 +67,36 @@ <valuemap type="QVariantMap"> <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Debug</value> <valuelist key="abstractProcess.Environment" type="QVariantList"> - <value type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-2BHwXLdG3H,guid=3f8e1369093fc6feda23ccd2006fd740</value> + <value type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-OdVBhpC8Q3,guid=12f5a3829adfbb5c05f6273d007125c0</value> <value type="QString">DESKTOP_SESSION=fluxbox</value> <value type="QString">DISPLAY=:0.0</value> <value type="QString">GDMSESSION=fluxbox</value> <value type="QString">GDM_LANG=fr_FR.UTF-8</value> <value type="QString">GDM_XSERVER_LOCATION=local</value> - <value type="QString">GNOME_KEYRING_CONTROL=/tmp/keyring-8mf291</value> - <value type="QString">GNOME_KEYRING_PID=5053</value> + <value type="QString">GNOME_KEYRING_CONTROL=/tmp/keyring-epygWB</value> + <value type="QString">GNOME_KEYRING_PID=7156</value> <value type="QString">GTK_MODULES=canberra-gtk-module</value> <value type="QString">HOME=/lrde/home/stage/froger_a</value> <value type="QString">LANG=fr_FR.UTF-8</value> + <value type="QString">LANGUAGE=</value> <value type="QString">LD_LIBRARY_PATH=/usr/lib/qtcreator</value> <value type="QString">LOGNAME=froger_a</value> - <value type="QString">OLDPWD=/lrde/home/stage/froger_a/qt</value> + <value type="QString">OLDPWD=/lrde/home/stage/froger_a</value> <value type="QString">PATH=/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games</value> <value type="QString">PWD=/lrde/home/stage/froger_a/qt/GScribo</value> <value type="QString">QTDIR=/usr/share/qt4</value> <value type="QString">SHELL=/bin/bash</value> <value type="QString">SHLVL=2</value> - <value type="QString">SSH_AGENT_PID=5128</value> - <value type="QString">SSH_AUTH_SOCK=/tmp/ssh-aZWNsu5062/agent.5062</value> + <value type="QString">SSH_AGENT_PID=7231</value> + <value type="QString">SSH_AUTH_SOCK=/tmp/ssh-poGlEz7165/agent.7165</value> <value type="QString">TERM=xterm</value> <value type="QString">USER=froger_a</value> <value type="QString">USERNAME=froger_a</value> <value type="QString">WINDOWID=10485796</value> - <value type="QString">WINDOWPATH=7:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8</value> - <value type="QString">XAUTHORITY=/tmp/.gdmOYVRRW</value> + <value type="QString">WINDOWPATH=7:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8</value> + <value type="QString">XAUTHORITY=/tmp/.gdmH3DGRW</value> <value type="QString">XDG_DATA_DIRS=/usr/local/share/:/usr/share/:/usr/share/gdm/</value> - <value type="QString">XDG_SESSION_COOKIE=b24883b9b4dbfb80ea83575b00000a11-1359377411.799018-1039497682</value> + <value type="QString">XDG_SESSION_COOKIE=b24883b9b4dbfb80ea83575b00000a11-1359463044.389005-635867443</value> <value type="QString">XPSERVERLIST=:64 </value> <value type="QString">XTERM_LOCALE=fr_FR.UTF-8</value> <value type="QString">XTERM_SHELL=/bin/bash</value> @@ -119,35 +120,36 @@ <valuemap type="QVariantMap"> <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Debug</value> <valuelist key="abstractProcess.Environment" type="QVariantList"> - <value type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-2BHwXLdG3H,guid=3f8e1369093fc6feda23ccd2006fd740</value> + <value type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-OdVBhpC8Q3,guid=12f5a3829adfbb5c05f6273d007125c0</value> <value type="QString">DESKTOP_SESSION=fluxbox</value> <value type="QString">DISPLAY=:0.0</value> <value type="QString">GDMSESSION=fluxbox</value> <value type="QString">GDM_LANG=fr_FR.UTF-8</value> <value type="QString">GDM_XSERVER_LOCATION=local</value> - <value type="QString">GNOME_KEYRING_CONTROL=/tmp/keyring-8mf291</value> - <value type="QString">GNOME_KEYRING_PID=5053</value> + <value type="QString">GNOME_KEYRING_CONTROL=/tmp/keyring-epygWB</value> + <value type="QString">GNOME_KEYRING_PID=7156</value> <value type="QString">GTK_MODULES=canberra-gtk-module</value> <value type="QString">HOME=/lrde/home/stage/froger_a</value> <value type="QString">LANG=fr_FR.UTF-8</value> + <value type="QString">LANGUAGE=</value> <value type="QString">LD_LIBRARY_PATH=/usr/lib/qtcreator</value> <value type="QString">LOGNAME=froger_a</value> - <value type="QString">OLDPWD=/lrde/home/stage/froger_a/qt</value> + <value type="QString">OLDPWD=/lrde/home/stage/froger_a</value> <value type="QString">PATH=/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games</value> <value type="QString">PWD=/lrde/home/stage/froger_a/qt/GScribo</value> <value type="QString">QTDIR=/usr/share/qt4</value> <value type="QString">SHELL=/bin/bash</value> <value type="QString">SHLVL=2</value> - <value type="QString">SSH_AGENT_PID=5128</value> - <value type="QString">SSH_AUTH_SOCK=/tmp/ssh-aZWNsu5062/agent.5062</value> + <value type="QString">SSH_AGENT_PID=7231</value> + <value type="QString">SSH_AUTH_SOCK=/tmp/ssh-poGlEz7165/agent.7165</value> <value type="QString">TERM=xterm</value> <value type="QString">USER=froger_a</value> <value type="QString">USERNAME=froger_a</value> <value type="QString">WINDOWID=10485796</value> - <value type="QString">WINDOWPATH=7:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8</value> - <value type="QString">XAUTHORITY=/tmp/.gdmOYVRRW</value> + <value type="QString">WINDOWPATH=7:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8</value> + <value type="QString">XAUTHORITY=/tmp/.gdmH3DGRW</value> <value type="QString">XDG_DATA_DIRS=/usr/local/share/:/usr/share/:/usr/share/gdm/</value> - <value type="QString">XDG_SESSION_COOKIE=b24883b9b4dbfb80ea83575b00000a11-1359377411.799018-1039497682</value> + <value type="QString">XDG_SESSION_COOKIE=b24883b9b4dbfb80ea83575b00000a11-1359463044.389005-635867443</value> <value type="QString">XPSERVERLIST=:64 </value> <value type="QString">XTERM_LOCALE=fr_FR.UTF-8</value> <value type="QString">XTERM_SHELL=/bin/bash</value> @@ -167,6 +169,51 @@ <variable>buildconfiguration-Debug-cleanstep0</variable> <valuemap type="QVariantMap"> <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Debug</value> + <valuelist key="abstractProcess.Environment" type="QVariantList"> + <value type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-OdVBhpC8Q3,guid=12f5a3829adfbb5c05f6273d007125c0</value> + <value type="QString">DESKTOP_SESSION=fluxbox</value> + <value type="QString">DISPLAY=:0.0</value> + <value type="QString">GDMSESSION=fluxbox</value> + <value type="QString">GDM_LANG=fr_FR.UTF-8</value> + <value type="QString">GDM_XSERVER_LOCATION=local</value> + <value type="QString">GNOME_KEYRING_CONTROL=/tmp/keyring-epygWB</value> + <value type="QString">GNOME_KEYRING_PID=7156</value> + <value type="QString">GTK_MODULES=canberra-gtk-module</value> + <value type="QString">HOME=/lrde/home/stage/froger_a</value> + <value type="QString">LANG=fr_FR.UTF-8</value> + <value type="QString">LANGUAGE=</value> + <value type="QString">LD_LIBRARY_PATH=/usr/lib/qtcreator</value> + <value type="QString">LOGNAME=froger_a</value> + <value type="QString">OLDPWD=/lrde/home/stage/froger_a</value> + <value type="QString">PATH=/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games</value> + <value type="QString">PWD=/lrde/home/stage/froger_a/qt/GScribo</value> + <value type="QString">QTDIR=/usr/share/qt4</value> + <value type="QString">SHELL=/bin/bash</value> + <value type="QString">SHLVL=2</value> + <value type="QString">SSH_AGENT_PID=7231</value> + <value type="QString">SSH_AUTH_SOCK=/tmp/ssh-poGlEz7165/agent.7165</value> + <value type="QString">TERM=xterm</value> + <value type="QString">USER=froger_a</value> + <value type="QString">USERNAME=froger_a</value> + <value type="QString">WINDOWID=10485796</value> + <value type="QString">WINDOWPATH=7:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8</value> + <value type="QString">XAUTHORITY=/tmp/.gdmH3DGRW</value> + <value type="QString">XDG_DATA_DIRS=/usr/local/share/:/usr/share/:/usr/share/gdm/</value> + <value type="QString">XDG_SESSION_COOKIE=b24883b9b4dbfb80ea83575b00000a11-1359463044.389005-635867443</value> + <value type="QString">XPSERVERLIST=:64 </value> + <value type="QString">XTERM_LOCALE=fr_FR.UTF-8</value> + <value type="QString">XTERM_SHELL=/bin/bash</value> + <value type="QString">XTERM_VERSION=XTerm(261)</value> + <value type="QString">_=/usr/bin/qtcreator</value> + </valuelist> + <value key="abstractProcess.IgnoreReturnValue" type="bool">true</value> + <valuelist key="abstractProcess.arguments" type="QVariantList"> + <value type="QString">clean</value> + <value type="QString">-w</value> + </valuelist> + <value key="abstractProcess.command" type="QString">/usr/bin/make</value> + <value key="abstractProcess.enabled" type="bool">true</value> + <value key="abstractProcess.workingDirectory" type="QString">/amd/nfs/volume1/home/stage/froger_a/qt/GScribo</value> <value key="cleanConfig" type="bool">true</value> <valuelist key="makeargs" type="QVariantList"> <value type="QString">clean</value> diff --git a/GScribo/PagesViewer/listmodel.h b/GScribo/PagesViewer/listmodel.h index 328d3ca..dac1a2d 100644 --- a/GScribo/PagesViewer/listmodel.h +++ b/GScribo/PagesViewer/listmodel.h @@ -13,8 +13,8 @@ class ListModel: public: explicit ListModel(QObject *parent = 0); QStringList filenames() const; - int rowCount(const QModelIndex &parent) const; - QVariant data(const QModelIndex &index, int role = Qt::DecorationRole) const; + int rowCount(const QModelIndex& parent = QModelIndex()) const; + QVariant data(const QModelIndex& index, int role = Qt::DecorationRole) const; void addPixmap(const QString& filename, const QPixmap& pixmap); private: diff --git a/GScribo/Rendering/polygonitem.cpp b/GScribo/Rendering/polygonitem.cpp index 6bdcd3e..d11d482 100644 --- a/GScribo/Rendering/polygonitem.cpp +++ b/GScribo/Rendering/polygonitem.cpp @@ -27,35 +27,29 @@ void PolygonItem::init() unselectedBrush.setStyle(Qt::SolidPattern); } +QColor PolygonItem::color() const +{ + return selectedBrush.color(); +} + void PolygonItem::setColor(const QColor &color) { - selectedPen.setColor(QColor::fromRgb(color.red(), color.green(), color.blue(), 200)); + selectedPen.setColor(QColor::fromRgb(color.red(), color.green(), color.blue(), 255)); unselectedPen.setColor(color); selectedBrush.setColor(color); - unselectedBrush.setColor(QColor::fromRgb(color.red(), color.green(), color.blue(), 30)); - - setPen(selectedPen); - setBrush(selectedBrush); -} + unselectedBrush.setColor(QColor::fromRgb(color.red(), color.green(), color.blue(), 40)); -QColor PolygonItem::color() const -{ - return selectedBrush.color(); + setPen(unselectedPen); + setBrush(unselectedBrush); } -void PolygonItem::repaint(const QRectF& rect, bool clic) +bool PolygonItem::repaint(const QRectF& rect, bool clic) { - bool sel; - - // For optimization, do first an intersection by bounding rectangle beetween items and selection and then an intersection by shape. - if(clic) - sel = (boundingRect().width() == 0 || boundingRect().height() == 0 || boundingRect().contains(rect.bottomRight())) && shape().contains(rect.bottomRight()); - else - sel = (boundingRect().width() == 0 || boundingRect().height() == 0 || boundingRect().intersects(rect)) && shape().intersects(rect); + bool isSel = isSelected(rect, clic); // Change items brush and pen if it's selectionned or not. - if(sel) + if(isSel) { if(pen() != selectedPen) { @@ -64,6 +58,7 @@ void PolygonItem::repaint(const QRectF& rect, bool clic) update(rect); } } + else { if(pen() != unselectedPen) @@ -73,4 +68,6 @@ void PolygonItem::repaint(const QRectF& rect, bool clic) update(rect); } } + + return isSel; } diff --git a/GScribo/Rendering/polygonitem.h b/GScribo/Rendering/polygonitem.h index af59631..9715872 100644 --- a/GScribo/Rendering/polygonitem.h +++ b/GScribo/Rendering/polygonitem.h @@ -1,17 +1,16 @@ #ifndef POLYGONITEM_H #define POLYGONITEM_H -#include <QGraphicsPathItem> +#include <QGraphicsPolygonItem> +#include <QTreeWidgetItem> #include <QPen> +#include "variantpointer.h" #include "region.h" class PolygonItem : - public QObject, public QGraphicsPolygonItem { - Q_OBJECT - public: explicit PolygonItem(QGraphicsItem *parent = 0, QGraphicsScene *scene = 0); explicit PolygonItem(const QPolygonF& path, QGraphicsItem *parent = 0, QGraphicsScene *scene = 0); @@ -19,6 +18,8 @@ class PolygonItem : void setColor(const QColor& color); QColor color() const; + inline bool isSelected(const QRectF& rect, bool clic); + bool repaint(const QRectF &rect, bool clic); inline void loadData(const GraphicRegion::Data& data); private: @@ -28,15 +29,21 @@ class PolygonItem : QPen unselectedPen; QBrush selectedBrush; QBrush unselectedBrush; - - public slots: - void repaint(const QRectF& rect, bool clic); }; inline void PolygonItem::loadData(const GraphicRegion::Data &data) { + setData(0, data.region); setColor(data.color); setZValue(data.zValue); } +inline bool PolygonItem::isSelected(const QRectF &rect, bool clic) +{ + if(clic) + return (boundingRect().width() == 0 || boundingRect().height() == 0 || boundingRect().contains(rect.bottomRight())) && shape().contains(rect.bottomRight()); + else + return (boundingRect().width() == 0 || boundingRect().height() == 0 || boundingRect().intersects(rect)) && shape().intersects(rect); +} + #endif // POLYGONITEM_H diff --git a/GScribo/Rendering/scene.cpp b/GScribo/Rendering/scene.cpp index d9bedfb..f58227f 100644 --- a/GScribo/Rendering/scene.cpp +++ b/GScribo/Rendering/scene.cpp @@ -22,6 +22,7 @@ void Scene::init() { isPressing = false; clic = false; + item = 0; // Disable the scene size adaptation to items rect with a non null rect. setSceneRect(0, 0, 0, 1); @@ -33,16 +34,12 @@ QString Scene::backgroundPath() const return path; } -void Scene::addPolygonItem(QGraphicsItem *item) -{ - this->item = item; - addItem(item); -} - void Scene::reset() { if(item) - removeItem(item); + delete item; + + item = 0; } void Scene::mousePressEvent(QGraphicsSceneMouseEvent *event) @@ -86,20 +83,61 @@ void Scene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) if(clic) selection.setRect(QRectF(QPointF(0, 0), event->scenePos())); - emit repaintItem(selection.rect(), clic); + // Redraw all items in selection. + if(item) + repaintSelection(selection.rect(), clic); selection.setRect(0, 0, 0, 0); selection.hide(); } } -void Scene::setBackground(const QString& filename, const QPixmap& pixmap) +void Scene::repaintSelection(const QRectF &rect, bool clic) +{ + QGraphicsItem *child; + PolygonItem *polygonItem; + bool isSel; + + emit clearTreeItemSelection(); + + // Redraw all items in the scene except selection. + foreach(child, item->childItems()) + { + polygonItem = static_cast<PolygonItem *>(child); + isSel = polygonItem->repaint(rect, clic); + + if(isSel) + emit selectTreeItem(VariantPointer<QTreeWidgetItem>::fromQVariant(polygonItem->data(1))); + + // If the item is a text region, run through childs line items. + if(polygonItem->data(0).toInt() == GraphicRegion::Text) + { + foreach(child, polygonItem->childItems()) + static_cast<PolygonItem *>(child)->repaint(rect, clic); + } + } +} + +void Scene::addPolygonItem(QGraphicsItem *item) +{ + reset(); + + this->item = item; + addItem(item); +} + +void Scene::changeScene(const QString& filename, const QPixmap& pixmap, QGraphicsItem *item) { if(path != filename) { + reset(); + path = filename; setSceneRect(pixmap.rect()); setBackgroundBrush(QBrush(pixmap)); + + if(item) + addPolygonItem(item); } } diff --git a/GScribo/Rendering/scene.h b/GScribo/Rendering/scene.h index 58db2d1..2ea559f 100644 --- a/GScribo/Rendering/scene.h +++ b/GScribo/Rendering/scene.h @@ -19,8 +19,10 @@ class Scene : explicit Scene(qreal x, qreal y, qreal width, qreal height, QObject *parent = 0); QString backgroundPath() const; - void addPolygonItem(QGraphicsItem *item); void reset(); + void addPolygonItem(QGraphicsItem *item); + void changeScene(const QString& filename, const QPixmap& pixmap, QGraphicsItem *item = 0); + void repaintSelection(const QRectF& rect, bool clic); protected: void mousePressEvent(QGraphicsSceneMouseEvent *event); @@ -31,17 +33,15 @@ class Scene : void init(); QGraphicsItem *item; - QString path; Selection selection; QPointF pressPos; bool isPressing; + QString path; bool clic; - public slots: - void setBackground(const QString& filename, const QPixmap& pixmap); - signals: - void repaintItem(const QRectF& rect, bool clic); + void selectTreeItem(QTreeWidgetItem *item); + void clearTreeItemSelection(); }; #endif // SCENE_H diff --git a/GScribo/mainwindow.cpp b/GScribo/mainwindow.cpp deleted file mode 100644 index 924ef87..0000000 --- a/GScribo/mainwindow.cpp +++ /dev/null @@ -1,190 +0,0 @@ -#include "mainwindow.h" -#include "ui_mainwindow.h" - -/////////////////////////////////////////////////REEEEEEEEESSSSSSSSEEEEEEEETTTTTTTT DDDDDDDAAAAAANNNNNNNSSSSSSS XML ///////////////////// -MainWindow::MainWindow(QWidget *parent) : - QMainWindow(parent), - ui(new Ui::MainWindow) -{ - ui->setupUi(this); - - setWindowTitle(tr("GScribo")); - - initGraphicsRegion(); - initTextRegion(); - initXmlWidget(); - initPageWidget(); - initToolBar(); - initMenuBar(); - - connectWidgets(); - connectShortcuts(); -} - -MainWindow::~MainWindow() -{ - delete ui; -} - -void MainWindow::initGraphicsRegion() -{ - // Cache backgroud to speed up its repaint. - graphicsView.setCacheMode(QGraphicsView::CacheBackground); - graphicsView.setViewportUpdateMode(QGraphicsView::SmartViewportUpdate); - graphicsView.setScene(&scene); - - setCentralWidget(&graphicsView); -} - -void MainWindow::initPageWidget() -{ - dockPages.setWindowTitle(tr("Pages")); - dockPages.setFeatures(QDockWidget::DockWidgetClosable); - dockPages.setMaximumWidth(190); - dockPages.setMinimumWidth(190); - dockPages.setWidget(&pagesWidget); - - addDockWidget(Qt::LeftDockWidgetArea, &dockPages); -} - -void MainWindow::initXmlWidget() -{ - dockXml.setWindowTitle(tr("Xml")); - dockXml.setFeatures(QDockWidget::DockWidgetClosable); - dockXml.setWidget(&xmlWidget); - - addDockWidget(Qt::BottomDockWidgetArea, &dockXml); -} - -void MainWindow::initTextRegion() -{ - dockText.setWindowTitle(tr("Text")); - dockText.setAllowedAreas(Qt::AllDockWidgetAreas); - dockText.setFeatures(QDockWidget::DockWidgetFloatable | QDockWidget::DockWidgetMovable); - dockText.setWidget(&textEdit); - - addDockWidget(Qt::RightDockWidgetArea, &dockText); - dockText.hide(); -} - -void MainWindow::initToolBar() -{ - QAction *open = ui->mainToolBar->addAction(tr("Open")); - connect(open, SIGNAL(triggered()), this, SLOT(onOpen())); - - QAction *segment = ui->mainToolBar->addAction(tr("Segment")); - connect(segment, SIGNAL(triggered()), this, SLOT(onSegment())); - - QAction *del = ui->mainToolBar->addAction(tr("Delete")); - connect(del, SIGNAL(triggered()), &pagesWidget, SLOT(removeSelection())); -} - -void MainWindow::initMenuBar() -{ - QAction *preferences = ui->menuBar->addAction(tr("Preferences")); - connect(preferences, SIGNAL(triggered()), SLOT(onPreferences())); -} - -void MainWindow::onOpen() -{ - QStringList paths = QFileDialog::getOpenFileNames(this, "Open Image(s)", QDir::homePath(), "Images (*.png *.jpg *.ppm *.bmp)"); - - if(paths.count() > 0) - { - QString path = paths[0]; - QPixmap pixmap(path); - - scene.reset(); - scene.setBackground(path, pixmap); - pagesWidget.addPixmap(path, pixmap); - - // If more than one file, we store it in the page widget. - for(int i = 1; i < paths.count(); i++) - { - path = paths[i]; - pixmap.load(path); - pagesWidget.addPixmap(path, pixmap); - } - - // Get instance of the configuration settings. - Configs * const conf = Configs::getInstance(); - - // Get xml file from image path. - path.remove(0, path.lastIndexOf('/')+1); - int pos = path.lastIndexOf('.'); - path.remove(pos, path.length()-pos); - path += "_gui.xml"; - - // Load xml if it exists. - if(QDir::temp().exists(path)) - path = QDir::tempPath() + "/" + path; - else if(QDir(conf->generalSaveXmlCustomDirPath()).exists(path)) - path = conf->generalSaveXmlCustomDirPath() + "/" + path; - else - path = QString(); - - if(!path.isNull()) - onXmlSaved(path); - } -} - -void MainWindow::onSegment() -{ - if(scene.backgroundPath() != "") - { - QStringList filenames; - - if(!pagesWidget.isVisible()) - filenames << scene.backgroundPath(); - else - filenames = pagesWidget.filenames(); - - progressDialog.reset(); - runner.start_demat(filenames); - } -} - -void MainWindow::onXmlSaved(const QString& filename) -{ - xml.load(filename); - xmlWidget.load(xml.treeItem()); - - scene.addPolygonItem(xml.graphicItem()); -} - -void MainWindow::onPreferences() -{ - PreferencesDialog *preferenceDialog = new PreferencesDialog(this); - preferenceDialog->show(); -} - -void MainWindow::connectWidgets() -{ - // If double click on a picture of the page widget -> draw it on background scene. - connect(&pagesWidget, SIGNAL(selectionClicked(QString,QPixmap)), &scene, SLOT(setBackground(QString,QPixmap))); - - connect(&runner, SIGNAL(progress()), &progressDialog, SLOT(run())); - connect(&runner, SIGNAL(new_progress_max_value(int)), &progressDialog, SLOT(setMaximum(int))); - connect(&runner, SIGNAL(new_progress_label(QString)), &progressDialog, SLOT(setLabelText(QString))); - connect(&runner, SIGNAL(finished()), &progressDialog, SLOT(close())); - connect(&runner, SIGNAL(xml_saved(QString)), this, SLOT(onXmlSaved(QString))); -} - -void MainWindow::connectShortcuts() -{ - QShortcut *del = new QShortcut(Qt::Key_Delete, &pagesWidget); - connect(del, SIGNAL(activated()), &pagesWidget, SLOT(removeSelection())); -} - -void MainWindow::changeEvent(QEvent *e) -{ - QMainWindow::changeEvent(e); - switch (e->type()) - { - case QEvent::LanguageChange: - ui->retranslateUi(this); - break; - default: - break; - } -} diff --git a/GScribo/mainwindow.h b/GScribo/mainwindow.h deleted file mode 100644 index c0196df..0000000 --- a/GScribo/mainwindow.h +++ /dev/null @@ -1,67 +0,0 @@ -#ifndef MAINWINDOW_H -#define MAINWINDOW_H - -#include <QGraphicsView> -#include <QPlainTextEdit> -#include <QMainWindow> -#include <QHBoxLayout> -#include <QDockWidget> -#include <QFileDialog> -#include <QGroupBox> - -#include "Preferences/preferencesdialog.h" -#include "Processing/progressdialog.h" -#include "PagesViewer/pageswidget.h" -#include "Processing/runner.h" -#include "Rendering/scene.h" -#include "xmlwidget.h" -#include "xml.h" - -namespace Ui -{ - class MainWindow; -} - -class MainWindow: - public QMainWindow -{ - Q_OBJECT - - public: - MainWindow(QWidget *parent = 0); - ~MainWindow(); - - protected: - void changeEvent(QEvent *e); - - private: - void initGraphicsRegion(); - void initTextRegion(); - void initToolBar(); - void initPageWidget(); - void initXmlWidget(); - void initMenuBar(); - void connectWidgets(); - void connectShortcuts(); - - Ui::MainWindow *ui; - QDockWidget dockText; - QDockWidget dockPages; - QDockWidget dockXml; - QGraphicsView graphicsView; - Scene scene; - QPlainTextEdit textEdit; - PagesWidget pagesWidget; - Runner runner; - ProgressDialog progressDialog; - Xml xml; - XmlWidget xmlWidget; - - private slots: - void onOpen(); - void onSegment(); - void onXmlSaved(const QString& filename); - void onPreferences(); -}; - -#endif // MAINWINDOW_H diff --git a/GScribo/variantpointer.h b/GScribo/variantpointer.h index 907008b..a11072c 100644 --- a/GScribo/variantpointer.h +++ b/GScribo/variantpointer.h @@ -7,10 +7,10 @@ template<typename T> class VariantPointer { public: static inline QVariant toQVariant(T *pointer) - { return QVariant::fromValue((void *)pointer); } + { return QVariant::fromValue(static_cast<void *>(pointer)); } static inline T *fromQVariant(const QVariant& variant) - { return (T *)variant.value<void *>(); } + { return static_cast<T *>(variant.value<void *>()); } private: VariantPointer() { } diff --git a/GScribo/xml.cpp b/GScribo/xml.cpp index 8446a07..23ac2b6 100644 --- a/GScribo/xml.cpp +++ b/GScribo/xml.cpp @@ -3,17 +3,17 @@ static const GraphicRegion::Data itemsData[] = { /* COLOR | NAME | REGION | ZVALUE */ - { QColor::fromRgb(255, 0, 0, 80), "Line", (int)GraphicRegion::Line, 2 }, - { QColor::fromRgb(0, 100, 0, 80), "TextRegion", (int)GraphicRegion::Text, 1 }, - { QColor::fromRgb(0, 0, 255, 60), "VerticalSeparatorRegion", (int)GraphicRegion::VerticalSeparator, 2 }, - { QColor::fromRgb(0, 0, 255, 60), "HorizontalSeparatorRegion", (int)GraphicRegion::HorizontalSeparator, 2 }, - { QColor::fromRgb(0, 0, 128, 60), "WhitespaceSeparatorRegion", (int)GraphicRegion::WhiteSpaceSeparator, 2 }, - { QColor::fromRgb(255, 120, 0, 60), "ImageRegion", (int)GraphicRegion::Image, 1 }, - { QColor::fromRgb(43, 39, 128, 60), "NoiseRegion", (int)GraphicRegion::Noise, 2 }, - { QColor::fromRgb(220, 246, 0, 60), "TableRegion", (int)GraphicRegion::Table, 2 }, - { QColor::fromRgb(170, 0, 255, 60), "MathsRegion", (int)GraphicRegion::Maths, 2 }, - { QColor::fromRgb(255, 0, 144, 60), "GraphicRegion", (int)GraphicRegion::Graphic, 2 }, - { QColor::fromRgb(0, 204, 255, 60), "ChartRegion", (int)GraphicRegion::Chart, 2 } + { QColor::fromRgb(255, 0, 0, 90), "Line", (int)GraphicRegion::Line, 2 }, + { QColor::fromRgb(0, 100, 0, 90), "TextRegion", (int)GraphicRegion::Text, 1 }, + { QColor::fromRgb(0, 0, 255, 90), "VerticalSeparatorRegion", (int)GraphicRegion::VerticalSeparator, 2 }, + { QColor::fromRgb(0, 0, 255, 90), "HorizontalSeparatorRegion", (int)GraphicRegion::HorizontalSeparator, 2 }, + { QColor::fromRgb(0, 0, 128, 90), "WhitespaceSeparatorRegion", (int)GraphicRegion::WhiteSpaceSeparator, 2 }, + { QColor::fromRgb(255, 120, 0, 90), "ImageRegion", (int)GraphicRegion::Image, 1 }, + { QColor::fromRgb(43, 39, 128, 90), "NoiseRegion", (int)GraphicRegion::Noise, 2 }, + { QColor::fromRgb(220, 246, 0, 90), "TableRegion", (int)GraphicRegion::Table, 2 }, + { QColor::fromRgb(170, 0, 255, 90), "MathsRegion", (int)GraphicRegion::Maths, 2 }, + { QColor::fromRgb(255, 0, 144, 90), "GraphicRegion", (int)GraphicRegion::Graphic, 2 }, + { QColor::fromRgb(0, 204, 255, 90), "ChartRegion", (int)GraphicRegion::Chart, 2 } }; Xml::Xml(const QString &filename) @@ -25,6 +25,10 @@ void Xml::load(const QString &filename) { if(!filename.isEmpty()) { + // Reset graphic and tree items; + tItem = new QTreeWidgetItem; + gItem = new QGraphicsPolygonItem; + QFile xmlFile(filename); xmlFile.open(QIODevice::ReadOnly); @@ -34,10 +38,12 @@ void Xml::load(const QString &filename) xmlFile.close(); QDomElement root = xml.documentElement(); - tItem.setText(0, root.tagName()); + tItem->setText(0, root.tagName()); + tItem->setData(0, Qt::UserRole, VariantPointer<QDomElement>::toQVariant(&root)); root = root.firstChild().toElement(); - QTreeWidgetItem *parentTreeItem = init(root, &tItem); + QTreeWidgetItem *parentTreeItem = init(root, tItem); + parentTreeItem->setData(0, Qt::UserRole, VariantPointer<QDomElement>::toQVariant(&root)); // Run through the xml file structure by structure. root = root.nextSibling().firstChild().toElement(); @@ -50,19 +56,22 @@ void Xml::load(const QString &filename) QTreeWidgetItem *Xml::init(const QDomElement& root, QTreeWidgetItem *rootTreeItem) { QDomElement node = root; - QString nodeText; QTreeWidgetItem *parentTreeItem = new QTreeWidgetItem(rootTreeItem); - parentTreeItem->setText(0, node.tagName()); + parentTreeItem->setText(0, root.tagName()); + parentTreeItem->setData(0, Qt::UserRole, VariantPointer<QDomElement>::toQVariant(&node)); + QString nodeText; QTreeWidgetItem *treeItem, *childTreeItem; - node = node.firstChild().toElement(); // Run through "METADATA" node and subnodes. + node = root.firstChild().toElement(); while(!node.isNull()) { treeItem = new QTreeWidgetItem(parentTreeItem, treeItem); treeItem->setText(0, node.tagName()); + // Store the xml node in the item. + treeItem->setData(0, Qt::UserRole, VariantPointer<QDomElement>::toQVariant(&node)); // Add widget item child with text content. nodeText = node.text(); @@ -83,15 +92,18 @@ void Xml::processNode(const QDomElement& root, const GraphicRegion::Data& data, { if(!root.isNull()) { + QDomElement node = root; + // Create corresponding tree item. QTreeWidgetItem *parentTreeItem = fillWidgetItem(root.tagName(), rootTreeItem); + parentTreeItem->setData(0, Qt::UserRole, VariantPointer<QDomElement>::toQVariant(&node)); QTreeWidgetItem *treeItem; QPolygon polygon; QString sx, sy; // Run through all points data. - QDomElement node = root.firstChild().firstChild().toElement(); + node = root.firstChild().firstChild().toElement(); while(!node.isNull()) { sx = node.attribute("x", "null"); @@ -99,16 +111,18 @@ void Xml::processNode(const QDomElement& root, const GraphicRegion::Data& data, treeItem = new QTreeWidgetItem(parentTreeItem, treeItem); treeItem->setText(0, node.tagName() + " = " + sx + ", " + sy); + // Store the xml node in the item. + treeItem->setData(0, Qt::UserRole, VariantPointer<QDomElement>::toQVariant(&node)); polygon << QPoint(sx.toInt(), sy.toInt()); node = node.nextSibling().toElement(); } // Create the graphical item from data structure. - PolygonItem *polygonItem = new PolygonItem(polygon, &gItem); + PolygonItem *polygonItem = new PolygonItem(polygon, gItem); polygonItem->loadData(data); // Store tree object in the graphical object. - polygonItem->setData(0, VariantPointer<QTreeWidgetItem>::toQVariant(parentTreeItem)); + polygonItem->setData(1, VariantPointer<QTreeWidgetItem>::toQVariant(parentTreeItem)); if(data.region == GraphicRegion::Text) processLineNode(root.firstChild().nextSiblingElement("Line"), polygonItem, parentTreeItem->parent()); @@ -122,8 +136,11 @@ void Xml::processLineNode(const QDomElement& root, PolygonItem *parentPolygonIte { if(!root.isNull()) { + QDomElement node = root; + // Create corresponding tree item. QTreeWidgetItem *parentTreeItem = fillWidgetItem(root.tagName(), rootTreeItem); + parentTreeItem->setData(0, Qt::UserRole, VariantPointer<QDomElement>::toQVariant(&node)); QTreeWidgetItem *treeItem; QPolygon polygon; @@ -134,7 +151,7 @@ void Xml::processLineNode(const QDomElement& root, PolygonItem *parentPolygonIte int xMax = INT_MIN; // Run through all points data. - QDomElement node = root.firstChild().firstChild().toElement(); + node = root.firstChild().firstChild().toElement(); while(!node.isNull()) { sx = node.attribute("x", "null"); @@ -142,6 +159,8 @@ void Xml::processLineNode(const QDomElement& root, PolygonItem *parentPolygonIte treeItem = new QTreeWidgetItem(parentTreeItem, treeItem); treeItem->setText(0, node.tagName() + " = " + sx + ", " + sy); + // Store xml node attributes in the item. + treeItem->setData(0, Qt::UserRole, VariantPointer<QDomElement>::toQVariant(&node)); x = sx.toInt(); y = sy.toInt(); @@ -160,7 +179,7 @@ void Xml::processLineNode(const QDomElement& root, PolygonItem *parentPolygonIte PolygonItem *polygonItem = new PolygonItem(polygon, parentPolygonItem); polygonItem->loadData(itemsData[0]); // Store tree object in the graphical object. - polygonItem->setData(0, VariantPointer<QTreeWidgetItem>::toQVariant(parentTreeItem)); + polygonItem->setData(1, VariantPointer<QTreeWidgetItem>::toQVariant(parentTreeItem)); // Get meanline and baseline. processTypoNode(root, QPoint(xMin, xMax), polygonItem); diff --git a/GScribo/xml.h b/GScribo/xml.h index efd0511..d60abd6 100644 --- a/GScribo/xml.h +++ b/GScribo/xml.h @@ -31,15 +31,15 @@ class Xml : void processLineNode(const QDomElement& root, PolygonItem *parentPolygonItem, QTreeWidgetItem *rootTreeItem); void processTypoNode(const QDomElement& root, const QPoint& xPoint, PolygonItem *rootPolygonItem); - QGraphicsPolygonItem gItem; - QTreeWidgetItem tItem; + QGraphicsPolygonItem *gItem; + QTreeWidgetItem *tItem; }; inline QTreeWidgetItem *Xml::treeItem() -{ return &tItem; } +{ return tItem; } inline QGraphicsItem *Xml::graphicItem() -{ return &gItem; } +{ return gItem; } inline QTreeWidgetItem *Xml::fillWidgetItem(const QString& tagName, QTreeWidgetItem *rootTreeItem) { diff --git a/GScribo/xmlwidget.cpp b/GScribo/xmlwidget.cpp index 8f021b4..b5299c1 100644 --- a/GScribo/xmlwidget.cpp +++ b/GScribo/xmlwidget.cpp @@ -16,4 +16,28 @@ XmlWidget::XmlWidget(QWidget *parent) : hLayout->addWidget(&property); setLayout(hLayout); + + connect(&viewer, SIGNAL(itemClicked(QTreeWidgetItem*,int)), this, SLOT(fillProperty(QTreeWidgetItem*))); +} + +void XmlWidget::fillProperty(QTreeWidgetItem *treeItem) +{ + property.clear(); + + // Get node from the tree item. + QDomElement *node = VariantPointer<QDomElement>::fromQVariant(treeItem->data(0, Qt::UserRole)); + QStringList values; + + if(node->hasAttributes()) + { + QDomNamedNodeMap attributes = node->attributes(); + + for(int i = 0; i < attributes.count(); i++) + { + values << attributes.item(i).toAttr().name() << attributes.item(i).toAttr().value(); + property.addTopLevelItem(new QTreeWidgetItem(values)); + values.clear(); + } + } + property.resizeColumnToContents(0); } diff --git a/GScribo/xmlwidget.h b/GScribo/xmlwidget.h index 9c01024..3f42db2 100644 --- a/GScribo/xmlwidget.h +++ b/GScribo/xmlwidget.h @@ -3,23 +3,39 @@ #include <QTreeWidget> #include <QVBoxLayout> +#include <QDomElement> #include <QWidget> #include <QLabel> +#include "variantpointer.h" + class XmlWidget : public QWidget { + Q_OBJECT + public: explicit XmlWidget(QWidget *parent = 0); - inline void load(QTreeWidgetItem *treeItem); + inline void changeView(QTreeWidgetItem *treeItem); private: QTreeWidget viewer; QTreeWidget property; + + public slots: + void fillProperty(QTreeWidgetItem *treeItem); + inline void selectItem(QTreeWidgetItem *item); + inline void clearSelection(); }; -inline void XmlWidget::load(QTreeWidgetItem *treeItem) -{ if(treeItem != 0) { viewer.reset(); viewer.addTopLevelItem(treeItem); } } +inline void XmlWidget::changeView(QTreeWidgetItem *treeItem) +{ viewer.takeTopLevelItem(0); viewer.reset(); if(treeItem != 0) viewer.addTopLevelItem(treeItem); } + +inline void XmlWidget::selectItem(QTreeWidgetItem *item) +{ viewer.setCurrentItem(item, 0); item->setExpanded(true); } + +inline void XmlWidget::clearSelection() +{ viewer.reset(); property.clear(); } #endif // XMLWIDGET_H diff --git a/VariantPointer.h b/VariantPointer.h deleted file mode 100644 index 907008b..0000000 --- a/VariantPointer.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef VARIANTPOINTER_H -#define VARIANTPOINTER_H - -#include <QVariant> - -template<typename T> class VariantPointer -{ - public: - static inline QVariant toQVariant(T *pointer) - { return QVariant::fromValue((void *)pointer); } - - static inline T *fromQVariant(const QVariant& variant) - { return (T *)variant.value<void *>(); } - - private: - VariantPointer() { } -}; - -#endif // VARIANTPOINTER_H diff --git a/XmlParser/XmlParser.pro.user b/XmlParser/XmlParser.pro.user index 210f7cf..dbad548 100644 --- a/XmlParser/XmlParser.pro.user +++ b/XmlParser/XmlParser.pro.user @@ -58,6 +58,7 @@ <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Debug</value> <value key="QtVersionId" type="int">0</value> <value key="ToolChain" type="int">0</value> + <value key="addQDumper" type=""></value> <value key="buildConfiguration" type="int">2</value> </valuemap> </data> @@ -66,6 +67,7 @@ <valuemap type="QVariantMap"> <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Release</value> <value key="QtVersionId" type="int">0</value> + <value key="addQDumper" type=""></value> <value key="buildConfiguration" type="int">0</value> </valuemap> </data> @@ -73,12 +75,101 @@ <variable>buildconfiguration-Debug-buildstep0</variable> <valuemap type="QVariantMap"> <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Debug</value> + <valuelist key="abstractProcess.Environment" type="QVariantList"> + <value type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-nWMvur3XMD,guid=76bb64f3869a9bc5873701850070df7f</value> + <value type="QString">DESKTOP_SESSION=fluxbox</value> + <value type="QString">DISPLAY=:0.0</value> + <value type="QString">GDMSESSION=fluxbox</value> + <value type="QString">GDM_LANG=fr_FR.UTF-8</value> + <value type="QString">GDM_XSERVER_LOCATION=local</value> + <value type="QString">GNOME_KEYRING_CONTROL=/tmp/keyring-QY4EVM</value> + <value type="QString">GNOME_KEYRING_PID=4135</value> + <value type="QString">GTK_MODULES=canberra-gtk-module</value> + <value type="QString">HOME=/lrde/home/stage/froger_a</value> + <value type="QString">LANG=fr_FR.UTF-8</value> + <value type="QString">LD_LIBRARY_PATH=/usr/lib/qtcreator</value> + <value type="QString">LOGNAME=froger_a</value> + <value type="QString">OLDPWD=/lrde/home/stage/froger_a/qt</value> + <value type="QString">PATH=/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games</value> + <value type="QString">PWD=/lrde/home/stage/froger_a/qt/XmlParser</value> + <value type="QString">QTDIR=/usr/share/qt4</value> + <value type="QString">SHELL=/bin/bash</value> + <value type="QString">SHLVL=2</value> + <value type="QString">SSH_AGENT_PID=4210</value> + <value type="QString">SSH_AUTH_SOCK=/tmp/ssh-MKApXf4144/agent.4144</value> + <value type="QString">TERM=xterm</value> + <value type="QString">USER=froger_a</value> + <value type="QString">USERNAME=froger_a</value> + <value type="QString">WINDOWID=12582948</value> + <value type="QString">WINDOWPATH=7:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8</value> + <value type="QString">XAUTHORITY=/tmp/.gdmLUMYRW</value> + <value type="QString">XDG_DATA_DIRS=/usr/local/share/:/usr/share/:/usr/share/gdm/</value> + <value type="QString">XDG_SESSION_COOKIE=b24883b9b4dbfb80ea83575b00000a11-1359445059.579379-97716377</value> + <value type="QString">XPSERVERLIST=:64 </value> + <value type="QString">XTERM_LOCALE=fr_FR.UTF-8</value> + <value type="QString">XTERM_SHELL=/bin/bash</value> + <value type="QString">XTERM_VERSION=XTerm(261)</value> + <value type="QString">_=/usr/bin/qtcreator</value> + </valuelist> + <valuelist key="abstractProcess.arguments" type="QVariantList"> + <value type="QString">/amd/nfs/volume1/home/stage/froger_a/qt/XmlParser/XmlParser.pro</value> + <value type="QString">-spec</value> + <value type="QString">linux-g++</value> + <value type="QString">-r</value> + <value type="QString">CONFIG+=debug</value> + </valuelist> + <value key="abstractProcess.command" type="QString">/usr/bin/qmake-qt4</value> + <value key="abstractProcess.enabled" type="bool">true</value> + <value key="abstractProcess.workingDirectory" type="QString">/amd/nfs/volume1/home/stage/froger_a/qt/XmlParser</value> </valuemap> </data> <data> <variable>buildconfiguration-Debug-buildstep1</variable> <valuemap type="QVariantMap"> <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Debug</value> + <valuelist key="abstractProcess.Environment" type="QVariantList"> + <value type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-nWMvur3XMD,guid=76bb64f3869a9bc5873701850070df7f</value> + <value type="QString">DESKTOP_SESSION=fluxbox</value> + <value type="QString">DISPLAY=:0.0</value> + <value type="QString">GDMSESSION=fluxbox</value> + <value type="QString">GDM_LANG=fr_FR.UTF-8</value> + <value type="QString">GDM_XSERVER_LOCATION=local</value> + <value type="QString">GNOME_KEYRING_CONTROL=/tmp/keyring-QY4EVM</value> + <value type="QString">GNOME_KEYRING_PID=4135</value> + <value type="QString">GTK_MODULES=canberra-gtk-module</value> + <value type="QString">HOME=/lrde/home/stage/froger_a</value> + <value type="QString">LANG=fr_FR.UTF-8</value> + <value type="QString">LD_LIBRARY_PATH=/usr/lib/qtcreator</value> + <value type="QString">LOGNAME=froger_a</value> + <value type="QString">OLDPWD=/lrde/home/stage/froger_a/qt</value> + <value type="QString">PATH=/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games</value> + <value type="QString">PWD=/lrde/home/stage/froger_a/qt/XmlParser</value> + <value type="QString">QTDIR=/usr/share/qt4</value> + <value type="QString">SHELL=/bin/bash</value> + <value type="QString">SHLVL=2</value> + <value type="QString">SSH_AGENT_PID=4210</value> + <value type="QString">SSH_AUTH_SOCK=/tmp/ssh-MKApXf4144/agent.4144</value> + <value type="QString">TERM=xterm</value> + <value type="QString">USER=froger_a</value> + <value type="QString">USERNAME=froger_a</value> + <value type="QString">WINDOWID=12582948</value> + <value type="QString">WINDOWPATH=7:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8</value> + <value type="QString">XAUTHORITY=/tmp/.gdmLUMYRW</value> + <value type="QString">XDG_DATA_DIRS=/usr/local/share/:/usr/share/:/usr/share/gdm/</value> + <value type="QString">XDG_SESSION_COOKIE=b24883b9b4dbfb80ea83575b00000a11-1359445059.579379-97716377</value> + <value type="QString">XPSERVERLIST=:64 </value> + <value type="QString">XTERM_LOCALE=fr_FR.UTF-8</value> + <value type="QString">XTERM_SHELL=/bin/bash</value> + <value type="QString">XTERM_VERSION=XTerm(261)</value> + <value type="QString">_=/usr/bin/qtcreator</value> + </valuelist> + <value key="abstractProcess.IgnoreReturnValue" type="bool">false</value> + <valuelist key="abstractProcess.arguments" type="QVariantList"> + <value type="QString">-w</value> + </valuelist> + <value key="abstractProcess.command" type="QString">/usr/bin/make</value> + <value key="abstractProcess.enabled" type="bool">true</value> + <value key="abstractProcess.workingDirectory" type="QString">/amd/nfs/volume1/home/stage/froger_a/qt/XmlParser</value> </valuemap> </data> <data> -- 1.7.2.5
participants (1)
-
Antoine Froger