X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fmainwindow.cpp;h=799f10d4b7c3bb7d3f8ccabd70e319df988ec990;hb=feda6c6bbde575242cf01c769c0ecd3e89f9f7a0;hp=c652e3e861ac0fd31d40888b8e2e8fc064886273;hpb=8ba6f8b7541409dd33fd4ddd1b51494f555773c9;p=pulseview.git diff --git a/pv/mainwindow.cpp b/pv/mainwindow.cpp index c652e3e8..799f10d4 100644 --- a/pv/mainwindow.cpp +++ b/pv/mainwindow.cpp @@ -128,8 +128,8 @@ shared_ptr MainWindow::get_active_view() const return nullptr; } -shared_ptr MainWindow::add_view(const QString &title, - views::ViewType type, Session &session) +shared_ptr MainWindow::add_view(views::ViewType type, + Session &session) { GlobalSettings settings; shared_ptr v; @@ -143,6 +143,13 @@ shared_ptr MainWindow::add_view(const QString &title, shared_ptr main_bar = session.main_bar(); + // Only use the view type in the name if it's not the main view + QString title; + if (main_bar) + title = QString("%1 (%2)").arg(session.name(), views::ViewTypeNames[type]); + else + title = session.name(); + QDockWidget* dock = new QDockWidget(title, main_window); dock->setObjectName(title); main_window->addDockWidget(Qt::TopDockWidgetArea, dock); @@ -153,8 +160,7 @@ shared_ptr MainWindow::add_view(const QString &title, if (type == views::ViewTypeTrace) // This view will be the main view if there's no main bar yet - v = make_shared(session, - (main_bar ? false : true), dock_main); + v = make_shared(session, (main_bar ? false : true), dock_main); #ifdef ENABLE_DECODE if (type == views::ViewTypeDecoderOutput) v = make_shared(session, false, dock_main); @@ -194,8 +200,8 @@ shared_ptr MainWindow::add_view(const QString &title, dock_main->addToolBar(main_bar.get()); session.set_main_bar(main_bar); - connect(main_bar.get(), SIGNAL(new_view(Session*)), - this, SLOT(on_new_view(Session*))); + connect(main_bar.get(), SIGNAL(new_view(Session*, int)), + this, SLOT(on_new_view(Session*, int))); connect(main_bar.get(), SIGNAL(show_decoder_selector(Session*)), this, SLOT(on_show_decoder_selector(Session*))); @@ -300,6 +306,9 @@ shared_ptr MainWindow::add_subwindow( dock->findChildren // clazy:exclude=detaching-temporary ("qt_dockwidget_closebutton").front(); + // Allow all subwindows to be closed via ESC. + close_btn->setShortcut(QKeySequence(Qt::Key_Escape)); + connect(close_btn, SIGNAL(clicked(bool)), this, SLOT(on_sub_window_close_clicked())); @@ -319,8 +328,8 @@ shared_ptr MainWindow::add_session() shared_ptr session = make_shared(device_manager_, name); - connect(session.get(), SIGNAL(add_view(const QString&, views::ViewType, Session*)), - this, SLOT(on_add_view(const QString&, views::ViewType, Session*))); + connect(session.get(), SIGNAL(add_view(views::ViewType, Session*)), + this, SLOT(on_add_view(views::ViewType, Session*))); connect(session.get(), SIGNAL(name_changed()), this, SLOT(on_session_name_changed())); session_state_mapper_.setMapping(session.get(), session.get()); @@ -339,8 +348,7 @@ shared_ptr MainWindow::add_session() window->setDockNestingEnabled(true); - shared_ptr main_view = - add_view(name, views::ViewTypeTrace, *session); + shared_ptr main_view = add_view(views::ViewTypeTrace, *session); return session; } @@ -628,13 +636,12 @@ bool MainWindow::restoreState(const QByteArray &state, int version) return false; } -void MainWindow::on_add_view(const QString &title, views::ViewType type, - Session *session) +void MainWindow::on_add_view(views::ViewType type, Session *session) { // We get a pointer and need a reference for (shared_ptr& s : sessions_) if (s.get() == session) - add_view(title, type, *s); + add_view(type, *s); } void MainWindow::on_focus_changed() @@ -749,12 +756,12 @@ void MainWindow::on_capture_state_changed(QObject *obj) tr("Run") : tr("Stop")); } -void MainWindow::on_new_view(Session *session) +void MainWindow::on_new_view(Session *session, int view_type) { // We get a pointer and need a reference for (shared_ptr& s : sessions_) if (s.get() == session) - add_view(session->name(), views::ViewTypeTrace, *s); + add_view((views::ViewType)view_type, *s); } void MainWindow::on_view_close_clicked()