X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fmainwindow.cpp;h=c652e3e861ac0fd31d40888b8e2e8fc064886273;hp=d07d3316afb3632a5b9e828c122330851d5f9918;hb=8ba6f8b7541409dd33fd4ddd1b51494f555773c9;hpb=97378470ded88af84edaa0f1063d10d834475665 diff --git a/pv/mainwindow.cpp b/pv/mainwindow.cpp index d07d3316..c652e3e8 100644 --- a/pv/mainwindow.cpp +++ b/pv/mainwindow.cpp @@ -44,12 +44,16 @@ #include "devices/hardwaredevice.hpp" #include "dialogs/settings.hpp" #include "globalsettings.hpp" -#include "subwindows/decoder_selector/subwindow.hpp" #include "toolbars/mainbar.hpp" #include "util.hpp" #include "views/trace/view.hpp" #include "views/trace/standardbar.hpp" +#ifdef ENABLE_DECODE +#include "subwindows/decoder_selector/subwindow.hpp" +#include "views/decoder_output/view.hpp" +#endif + #include using std::dynamic_pointer_cast; @@ -59,10 +63,6 @@ using std::string; namespace pv { -namespace view { -class ViewItem; -} - using toolbars::MainBar; const QString MainWindow::WindowTitle = tr("PulseView"); @@ -76,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) @@ -159,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; @@ -188,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); @@ -258,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; @@ -267,8 +263,13 @@ shared_ptr MainWindow::add_subwindow( QString title = ""; switch (type) { +#ifdef ENABLE_DECODE case subwindows::SubWindowTypeDecoderSelector: title = tr("Decoder Selector"); + break; +#endif + default: + break; } QDockWidget* dock = new QDockWidget(title, main_window); @@ -279,8 +280,10 @@ shared_ptr MainWindow::add_subwindow( QMainWindow *dock_main = new QMainWindow(dock); dock_main->setWindowFlags(Qt::Widget); // Remove Qt::Window flag +#ifdef ENABLE_DECODE if (type == subwindows::SubWindowTypeDecoderSelector) v = make_shared(session, dock_main); +#endif if (!v) return nullptr; @@ -294,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)), @@ -303,6 +306,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; } @@ -386,10 +392,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() @@ -463,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")); @@ -486,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); @@ -824,10 +819,14 @@ void MainWindow::on_tab_close_requested(int index) 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; @@ -835,9 +834,10 @@ 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 } void MainWindow::on_sub_window_close_clicked() @@ -889,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();