X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fmainwindow.cpp;h=c652e3e861ac0fd31d40888b8e2e8fc064886273;hp=fb749f5701724e37be0fffae8d55c3edd3d22a7e;hb=8ba6f8b7541409dd33fd4ddd1b51494f555773c9;hpb=96dbf014dad1309d4ade9c14a8b46733e2f531c8 diff --git a/pv/mainwindow.cpp b/pv/mainwindow.cpp index fb749f57..c652e3e8 100644 --- a/pv/mainwindow.cpp +++ b/pv/mainwindow.cpp @@ -51,6 +51,7 @@ #ifdef ENABLE_DECODE #include "subwindows/decoder_selector/subwindow.hpp" +#include "views/decoder_output/view.hpp" #endif #include @@ -62,10 +63,6 @@ using std::string; namespace pv { -namespace view { -class ViewItem; -} - using toolbars::MainBar; const QString MainWindow::WindowTitle = tr("PulseView"); @@ -79,16 +76,12 @@ MainWindow::MainWindow(DeviceManager &device_manager, QWidget *parent) : icon_green_(":/icons/status-green.svg"), icon_grey_(":/icons/status-grey.svg") { - GlobalSettings::add_change_handler(this); - setup_ui(); restore_ui_settings(); } MainWindow::~MainWindow() { - GlobalSettings::remove_change_handler(this); - // Make sure we no longer hold any shared pointers to widgets after the // destructor finishes (goes for sessions and sub windows alike) @@ -162,6 +155,10 @@ shared_ptr MainWindow::add_view(const QString &title, // This view will be the main view if there's no main bar yet v = make_shared(session, (main_bar ? false : true), dock_main); +#ifdef ENABLE_DECODE + if (type == views::ViewTypeDecoderOutput) + v = make_shared(session, false, dock_main); +#endif if (!v) return nullptr; @@ -191,10 +188,6 @@ shared_ptr MainWindow::add_view(const QString &title, views::trace::View *tv = qobject_cast(v.get()); - tv->enable_colored_bg(settings.value(GlobalSettings::Key_View_ColoredBG).toBool()); - tv->enable_show_sampling_points(settings.value(GlobalSettings::Key_View_ShowSamplingPoints).toBool()); - tv->enable_show_analog_minor_grid(settings.value(GlobalSettings::Key_View_ShowAnalogMinorGrid).toBool()); - if (!main_bar) { /* Initial view, create the main bar */ main_bar = make_shared(session, this, tv); @@ -261,7 +254,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 +297,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)), @@ -476,18 +469,6 @@ void MainWindow::restore_sessions() } } -void MainWindow::on_setting_changed(const QString &key, const QVariant &value) -{ - if (key == GlobalSettings::Key_View_ColoredBG) - on_settingViewColoredBg_changed(value); - - if (key == GlobalSettings::Key_View_ShowSamplingPoints) - on_settingViewShowSamplingPoints_changed(value); - - if (key == GlobalSettings::Key_View_ShowAnalogMinorGrid) - on_settingViewShowAnalogMinorGrid_changed(value); -} - void MainWindow::setup_ui() { setObjectName(QString::fromUtf8("MainWindow")); @@ -499,6 +480,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); @@ -839,9 +821,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; @@ -849,7 +834,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 @@ -904,51 +889,6 @@ void MainWindow::on_view_show_analog_minor_grid_shortcut() 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 viewbase = entry.second; - - // Only trace views have this setting - views::trace::View* view = - qobject_cast(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 viewbase = entry.second; - - // Only trace views have this setting - views::trace::View* view = - qobject_cast(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 viewbase = entry.second; - - // Only trace views have this setting - views::trace::View* view = - qobject_cast(viewbase.get()); - if (view) - view->enable_show_analog_minor_grid(state); - } -} - void MainWindow::on_close_current_tab() { int tab = session_selector_.currentIndex();