X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fmainwindow.cpp;h=dab9c7866fab2b61ac85438dfe336bb05a96a9cd;hb=c9da51187f8db0c9822d544a0253e0e7a58945d7;hp=6e408583a52d0cb1e7e2c45870c950cbedc4094f;hpb=101e7a9b40cc97fcd94aca7a1bed086b1f56f269;p=pulseview.git diff --git a/pv/mainwindow.cpp b/pv/mainwindow.cpp index 6e40858..dab9c78 100644 --- a/pv/mainwindow.cpp +++ b/pv/mainwindow.cpp @@ -191,10 +191,6 @@ shared_ptr MainWindow::add_view(const QString &title, if (type == view::TraceView) { connect(&session, SIGNAL(trigger_event(util::Timestamp)), v.get(), SLOT(trigger_event(util::Timestamp))); - connect(v.get(), SIGNAL(sticky_scrolling_changed(bool)), this, - SLOT(sticky_scrolling_changed(bool))); - connect(v.get(), SIGNAL(always_zoom_to_fit_changed(bool)), this, - SLOT(always_zoom_to_fit_changed(bool))); v->enable_sticky_scrolling(action_view_sticky_scrolling_->isChecked()); v->enable_coloured_bg(action_view_coloured_bg_->isChecked()); @@ -204,8 +200,16 @@ shared_ptr MainWindow::add_view(const QString &title, main_bar = make_shared(session, *this); dock_main->addToolBar(main_bar.get()); session.set_main_bar(main_bar); + + connect(main_bar.get(), SIGNAL(new_session()), + this, SLOT(on_new_session())); + connect(main_bar.get(), SIGNAL(new_view(Session*)), + this, SLOT(on_new_view(Session*))); } main_bar->action_view_show_cursors()->setChecked(v->cursors_shown()); + + connect(v.get(), SIGNAL(always_zoom_to_fit_changed(bool)), + main_bar.get(), SLOT(on_always_zoom_to_fit_changed(bool))); } } @@ -219,6 +223,9 @@ shared_ptr MainWindow::add_session() shared_ptr session = make_shared(device_manager_, name); + connect(session.get(), SIGNAL(add_view(const QString&, view::ViewType, Session*)), + this, SLOT(on_add_view(const QString&, view::ViewType, Session*))); + sessions_.push_back(session); shared_ptr main_view = @@ -253,6 +260,8 @@ void MainWindow::setup_ui() action_about_->setObjectName(QString::fromUtf8("actionAbout")); action_about_->setText(tr("&About...")); + setDockNestingEnabled(true); + // Set the title setWindowTitle(tr("PulseView")); } @@ -274,11 +283,13 @@ void MainWindow::save_ui_settings() dynamic_pointer_cast< devices::HardwareDevice > (session->device()); - if (device->hardware_device()->driver()->name() == "demo") + if (device && + device->hardware_device()->driver()->name() == "demo") continue; } settings.beginGroup("Session" + QString::number(id++)); + settings.remove(""); // Remove all keys in this group session->save_settings(settings); settings.endGroup(); } @@ -333,6 +344,28 @@ bool MainWindow::restoreState(const QByteArray &state, int version) return false; } +void MainWindow::on_add_view(const QString &title, view::ViewType type, + Session *session) +{ + // We get a pointer and need a reference + for (std::shared_ptr s : sessions_) + if (s.get() == session) + add_view(title, type, *s); +} + +void MainWindow::on_new_session() +{ + add_session(); +} + +void MainWindow::on_new_view(Session *session) +{ + // We get a pointer and need a reference + for (std::shared_ptr s : sessions_) + if (s.get() == session) + add_view(session->name(), pv::view::TraceView, *s); +} + void MainWindow::on_actionViewStickyScrolling_triggered() { shared_ptr view = get_active_view();