X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fmainwindow.cpp;h=f0a4c0714f12075a9d5ff2e6ca317d8392859595;hb=476ca5f48e8a528d529f36b8b0c8471c655415ad;hp=638d75b5179fbb63c2e0151d6c6d09ff215b95c5;hpb=611c86259f66dd1766b10b1e1b671b0fadd51fe2;p=pulseview.git diff --git a/pv/mainwindow.cpp b/pv/mainwindow.cpp index 638d75b5..f0a4c071 100644 --- a/pv/mainwindow.cpp +++ b/pv/mainwindow.cpp @@ -261,7 +261,7 @@ shared_ptr MainWindow::add_subwindow( shared_ptr v; QMainWindow *main_window = nullptr; - for (auto entry : session_windows_) + for (auto& entry : session_windows_) if (entry.first.get() == &session) main_window = entry.second; @@ -304,7 +304,7 @@ shared_ptr MainWindow::add_subwindow( QDockWidget::DockWidgetFloatable | QDockWidget::DockWidgetClosable); QAbstractButton *close_btn = - dock->findChildren + dock->findChildren // clazy:exclude=detaching-temporary ("qt_dockwidget_closebutton").front(); connect(close_btn, SIGNAL(clicked(bool)), @@ -399,13 +399,10 @@ void MainWindow::remove_session(shared_ptr session) } void MainWindow::add_session_with_file(string open_file_name, - string open_file_format, - string open_setup_file_name) + string open_file_format, string open_setup_file_name) { shared_ptr session = add_session(); - session->load_init_file(open_file_name, - open_file_format, - open_setup_file_name); + session->load_init_file(open_file_name, open_file_format, open_setup_file_name); } void MainWindow::add_default_session() @@ -502,6 +499,7 @@ void MainWindow::setup_ui() icon.addFile(QString(":/icons/pulseview.png")); setWindowIcon(icon); + // Set up keyboard shortcuts that affect all views at once view_sticky_scrolling_shortcut_ = new QShortcut(QKeySequence(Qt::Key_S), this, SLOT(on_view_sticky_scrolling_shortcut())); view_sticky_scrolling_shortcut_->setAutoRepeat(false); @@ -604,6 +602,19 @@ void MainWindow::restore_ui_settings() settings.endGroup(); } +void MainWindow::zoom_current_view(double steps) +{ + shared_ptr session = get_tab_session(session_selector_.currentIndex()); + + if (!session) + return; + + shared_ptr v = session.get()->main_view(); + views::trace::View *tv = + qobject_cast(v.get()); + tv->zoom(steps); +} + shared_ptr MainWindow::get_tab_session(int index) const { // Find the session that belongs to the tab's main window @@ -842,9 +853,12 @@ void MainWindow::on_show_decoder_selector(Session *session) { #ifdef ENABLE_DECODE // Close dock widget if it's already showing and return - for (auto entry : sub_windows_) { + for (auto& entry : sub_windows_) { QDockWidget* dock = entry.first; - if (dynamic_pointer_cast(entry.second)) { + shared_ptr decoder_selector = + dynamic_pointer_cast(entry.second); + + if (decoder_selector && (&decoder_selector->session() == session)) { sub_windows_.erase(dock); dock->close(); return; @@ -852,7 +866,7 @@ void MainWindow::on_show_decoder_selector(Session *session) } // We get a pointer and need a reference - for (shared_ptr s : sessions_) + for (shared_ptr& s : sessions_) if (s.get() == session) add_subwindow(subwindows::SubWindowTypeDecoderSelector, *s); #endif