+ GlobalSettings settings;
+
+ bool state = settings.value(GlobalSettings::Key_View_StickyScrolling).toBool();
+ settings.setValue(GlobalSettings::Key_View_StickyScrolling, !state);
+}
+
+void MainWindow::on_view_show_sampling_points_shortcut()
+{
+ GlobalSettings settings;
+
+ bool state = settings.value(GlobalSettings::Key_View_ShowSamplingPoints).toBool();
+ settings.setValue(GlobalSettings::Key_View_ShowSamplingPoints, !state);
+}
+
+void MainWindow::on_view_show_analog_minor_grid_shortcut()
+{
+ GlobalSettings settings;
+
+ bool state = settings.value(GlobalSettings::Key_View_ShowAnalogMinorGrid).toBool();
+ settings.setValue(GlobalSettings::Key_View_ShowAnalogMinorGrid, !state);
+}
+
+void MainWindow::on_settingViewColoredBg_changed(const QVariant new_value)
+{
+ bool state = new_value.toBool();
+
+ for (auto& entry : view_docks_) {
+ shared_ptr<views::ViewBase> viewbase = entry.second;
+
+ // Only trace views have this setting
+ views::trace::View* view =
+ qobject_cast<views::trace::View*>(viewbase.get());
+ if (view)
+ view->enable_colored_bg(state);
+ }
+}
+
+void MainWindow::on_settingViewShowSamplingPoints_changed(const QVariant new_value)
+{
+ bool state = new_value.toBool();
+
+ for (auto& entry : view_docks_) {
+ shared_ptr<views::ViewBase> viewbase = entry.second;
+
+ // Only trace views have this setting
+ views::trace::View* view =
+ qobject_cast<views::trace::View*>(viewbase.get());
+ if (view)
+ view->enable_show_sampling_points(state);
+ }
+}
+
+void MainWindow::on_settingViewShowAnalogMinorGrid_changed(const QVariant new_value)
+{
+ bool state = new_value.toBool();
+
+ for (auto& entry : view_docks_) {
+ shared_ptr<views::ViewBase> viewbase = entry.second;
+
+ // Only trace views have this setting
+ views::trace::View* view =
+ qobject_cast<views::trace::View*>(viewbase.get());
+ if (view)
+ view->enable_show_analog_minor_grid(state);
+ }
+}
+
+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> session = get_tab_session(session_selector_.currentIndex());
+
+ if (!session)
+ return;
+
+ shared_ptr<views::ViewBase> v = session.get()->main_view();
+ views::trace::View *tv =
+ qobject_cast<views::trace::View*>(v.get());
+ tv->set_h_offset(start ? 0 : tv->get_h_scrollbar_maximum());
+}
+
+void MainWindow::on_close_current_tab()
+{
+ int tab = session_selector_.currentIndex();
+
+ on_tab_close_requested(tab);