diff --git a/.gitignore b/.gitignore index 714bf1c..266bbc4 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ /client-api/C++/examples/build/ .SyncIgnore /viewer-build +*-build/ diff --git a/viewer/CMakeLists.txt b/viewer/CMakeLists.txt index acb3e32..2262642 100644 --- a/viewer/CMakeLists.txt +++ b/viewer/CMakeLists.txt @@ -13,5 +13,5 @@ SET(VIBes_viewer_FORMS vibeswindow.ui) QT5_WRAP_UI(VIBes_viewer_FORMS_HEADERS ${VIBes_viewer_FORMS}) -ADD_EXECUTABLE(VIBes-viewer ${VIBes_viewer_SOURCES} ${VIBes_viewer_FORMS_HEADERS}) +ADD_EXECUTABLE(VIBes-viewer WIN32 MACOSX_BUNDLE ${VIBes_viewer_SOURCES} ${VIBes_viewer_FORMS_HEADERS}) QT5_USE_MODULES(VIBes-viewer Widgets Gui Core Svg) diff --git a/viewer/figure2d.cpp b/viewer/figure2d.cpp index 4579d9e..e871bfc 100644 --- a/viewer/figure2d.cpp +++ b/viewer/figure2d.cpp @@ -15,6 +15,9 @@ Figure2D::Figure2D(QWidget *parent) : setDragMode(ScrollHandDrag); // Force full viewport update (avoid problems with axes) setViewportUpdateMode(FullViewportUpdate); + // Never show the scrollbars + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); } void Figure2D::drawForeground(QPainter *painter, const QRectF &rect) @@ -62,8 +65,14 @@ void Figure2D::drawForeground(QPainter *painter, const QRectF &rect) void Figure2D::wheelEvent(QWheelEvent *event) { - double s = qPow(2.0, 0.05*event->delta()/8.0); + // Scales the view to zoom according to mouse wheel + double s = qPow(2.0, 0.04*event->angleDelta().y()/8.0); this->scale(s,s); +// double dx = sceneRect().width() * (s - 1.0); +// double dy = sceneRect().height() * (s - 1.0); +// this->setSceneRect(sceneRect().adjusted(-dx,-dy,dx,dy)); +// qDebug() << sceneRect(); +// fitInView(sceneRect()); } void Figure2D::exportGraphics(QString fileName) diff --git a/viewer/vibestreemodel.h b/viewer/vibestreemodel.h index fa17709..b5d0ba9 100644 --- a/viewer/vibestreemodel.h +++ b/viewer/vibestreemodel.h @@ -20,7 +20,7 @@ class VibesTreeModel : public QAbstractItemModel QVariant headerData(int section, Qt::Orientation orientation, int role) const; - + void forceUpdate() {beginResetModel();endResetModel();} signals: public slots: diff --git a/viewer/vibeswindow.cpp b/viewer/vibeswindow.cpp index f71695a..d36f270 100644 --- a/viewer/vibeswindow.cpp +++ b/viewer/vibeswindow.cpp @@ -171,14 +171,16 @@ VibesWindow::processMessage(const QByteArray &msg_data) // Remove from the list of figures an delete figures.remove(fig_name); delete fig; + static_cast(ui->treeView->model())->forceUpdate(); } - // Create a new figure + // Create a new figure else if (action == "new") { // Create a new figure (previous with the same name will be destroyed) fig = newFigure(fig_name); + static_cast(ui->treeView->model())->forceUpdate(); } - // Clear the contents of a figure + // Clear the contents of a figure else if (action == "clear") { // Figure has to exist @@ -293,7 +295,7 @@ VibesWindow::processMessage(const QByteArray &msg_data) } } } - // Unknown action + // Unknown action else { return false; @@ -324,7 +326,6 @@ VibesWindow::readFile() ui->statusBar->showMessage("Receiving data...", 200); // Read and process data - QByteArray message; while (!file.atEnd()) { QByteArray line = file.readLine(); @@ -333,19 +334,19 @@ VibesWindow::readFile() { continue; } - // Empty new line ("\n\n") is message separator - else if (line[0] == '\n') + // Empty new line ("\n\n") is message separator + else if (line[0] == '\n' && message.endsWith('\n')) { processMessage(message); message.clear(); } - // Add this line to the current message + // Add this line to the current message else { message.append(line); } } - // Program new file-read try in 200 ms. - QTimer::singleShot(200, this, SLOT(readFile())); + // Program new file-read try in 50 ms. + QTimer::singleShot(50, this, SLOT(readFile())); } diff --git a/viewer/vibeswindow.h b/viewer/vibeswindow.h index 772335b..5df4bcc 100644 --- a/viewer/vibeswindow.h +++ b/viewer/vibeswindow.h @@ -39,6 +39,7 @@ public slots: QPen defaultPen; void initDefaultBrushes(); + QByteArray message; }; #endif // VIBESWINDOW_H