X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fmainwindow.cpp;h=e33901a222c1db720adf58acba7f684be122d142;hp=43d1e7d2607dbf2ab9a95377f806eed9d8c0640c;hb=ccf6a266d9b911075512b4de16fe2ce2c2e767c4;hpb=1fa702cf18e574e439ad20028203dd157cbc23bf diff --git a/pv/mainwindow.cpp b/pv/mainwindow.cpp index 43d1e7d2..e33901a2 100644 --- a/pv/mainwindow.cpp +++ b/pv/mainwindow.cpp @@ -313,6 +313,9 @@ shared_ptr MainWindow::add_subwindow( if (v->has_toolbar()) dock_main->addToolBar(v->create_toolbar(dock_main)); + if (v->minimum_width() > 0) + dock->setMinimumSize(v->minimum_width(), 0); + return v; } @@ -396,10 +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_file_format, string open_setup_file_name) { shared_ptr session = add_session(); - session->load_init_file(open_file_name, open_file_format); + session->load_init_file(open_file_name, open_file_format, open_setup_file_name); } void MainWindow::add_default_session() @@ -508,6 +511,18 @@ void MainWindow::setup_ui() view_colored_bg_shortcut_ = new QShortcut(QKeySequence(Qt::Key_B), this, SLOT(on_view_colored_bg_shortcut())); view_colored_bg_shortcut_->setAutoRepeat(false); + zoom_in_shortcut_ = new QShortcut(QKeySequence(Qt::Key_Plus), this, SLOT(on_zoom_in_shortcut_triggered())); + zoom_in_shortcut_->setAutoRepeat(false); + + zoom_out_shortcut_ = new QShortcut(QKeySequence(Qt::Key_Minus), this, SLOT(on_zoom_out_shortcut_triggered())); + zoom_out_shortcut_->setAutoRepeat(false); + + home_shortcut_ = new QShortcut(QKeySequence(Qt::Key_Home), this, SLOT(on_scroll_to_start_triggered())); + home_shortcut_->setAutoRepeat(false); + + end_shortcut_ = new QShortcut(QKeySequence(Qt::Key_End), this, SLOT(on_scroll_to_end_triggered())); + end_shortcut_->setAutoRepeat(false); + // Set up the tab area new_session_button_ = new QToolButton(); new_session_button_->setIcon(QIcon::fromTheme("document-new", @@ -598,6 +613,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 @@ -946,6 +974,39 @@ void MainWindow::on_settingViewShowAnalogMinorGrid_changed(const QVariant new_va } } +void MainWindow::on_zoom_out_shortcut_triggered() +{ + zoom_current_view(-1); +} + +void MainWindow::on_zoom_in_shortcut_triggered() +{ + zoom_current_view(1); +} + +void MainWindow::on_scroll_to_start_triggered() +{ + scroll_to_start_or_end(true); +} + +void MainWindow::on_scroll_to_end_triggered() +{ + scroll_to_start_or_end(false); +} + +void MainWindow::scroll_to_start_or_end(bool start) +{ + 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->set_h_offset(start ? 0 : tv->get_h_scrollbar_maximum()); +} + void MainWindow::on_close_current_tab() { int tab = session_selector_.currentIndex();