X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fmainwindow.cpp;h=efd5a0d1e994bc08a3ae537ee83c39ba9be0aaac;hb=d6ab7b9a333a395edd349d5552c2c77e8e875dd3;hp=d4d38b4dabcb0943f298d7885e1e3718a626eaed;hpb=168bd8ac353d715257e7267dcf4eeb1aaef6365c;p=pulseview.git diff --git a/pv/mainwindow.cpp b/pv/mainwindow.cpp index d4d38b4..efd5a0d 100644 --- a/pv/mainwindow.cpp +++ b/pv/mainwindow.cpp @@ -228,6 +228,41 @@ shared_ptr MainWindow::get_active_view() const return shared_ptr(); } +shared_ptr MainWindow::add_view(const QString &title, + view::ViewType type, Session &session) +{ + shared_ptr v; + + if (type == pv::view::TraceView) + v = make_shared(session, this); + + if (v) { + shared_ptr dock = make_shared(title, this); + dock->setWidget(v.get()); + dock->setObjectName(title); + addDockWidget(Qt::TopDockWidgetArea, dock.get()); + view_docks_[dock] = v; + + dock->setFeatures(QDockWidget::DockWidgetMovable | + QDockWidget::DockWidgetFloatable); + + if (type == view::TraceView) { + connect(&session, SIGNAL(trigger_event(util::Timestamp)), v.get(), + SLOT(trigger_event(util::Timestamp))); + connect(v.get(), SIGNAL(sticky_scrolling_changed(bool)), this, + SLOT(sticky_scrolling_changed(bool))); + connect(v.get(), SIGNAL(always_zoom_to_fit_changed(bool)), this, + SLOT(always_zoom_to_fit_changed(bool))); + + v->enable_sticky_scrolling(action_view_sticky_scrolling_->isChecked()); + v->enable_coloured_bg(action_view_coloured_bg_->isChecked()); + action_view_show_cursors_->setChecked(v->cursors_shown()); + } + } + + return v; +} + void MainWindow::run_stop() { switch (session_.get_capture_state()) { @@ -392,13 +427,6 @@ void MainWindow::setup_ui() icon.addFile(QString(":/icons/sigrok-logo-notext.svg")); setWindowIcon(icon); - // Set up the initial view - shared_ptr view = make_shared(session_, this); - shared_ptr dock = make_shared(tr("Untitled"), this); - dock->setWidget(view.get()); - addDockWidget(Qt::TopDockWidgetArea, dock.get()); - view_docks_[dock] = view; - // Setup the menu bar pv::widgets::HidingMenuBar *const menu_bar = new pv::widgets::HidingMenuBar(this); @@ -509,10 +537,6 @@ void MainWindow::setup_ui() action_view_sticky_scrolling_->setText(tr("&Sticky Scrolling")); menu_view->addAction(action_view_sticky_scrolling_); - // TODO: Refactor this into a "new view" method - if (view) - view->enable_sticky_scrolling(action_view_sticky_scrolling_->isChecked()); - menu_view->addSeparator(); action_view_coloured_bg_->setCheckable(true); @@ -523,10 +547,6 @@ void MainWindow::setup_ui() action_view_coloured_bg_->setText(tr("Use &coloured backgrounds")); menu_view->addAction(action_view_coloured_bg_); - // TODO: Refactor this into a "new view" method - if (view) - view->enable_coloured_bg(action_view_coloured_bg_->isChecked()); - menu_view->addSeparator(); action_view_show_cursors_->setCheckable(true); @@ -538,10 +558,6 @@ void MainWindow::setup_ui() action_view_show_cursors_->setText(tr("Show &Cursors")); menu_view->addAction(action_view_show_cursors_); - // TODO: Refactor this into a "new view" method - if (view) - action_view_show_cursors_->setChecked(view->cursors_shown()); - // Decoders Menu #ifdef ENABLE_DECODE QMenu *const menu_decoders = new QMenu; @@ -579,6 +595,9 @@ void MainWindow::setup_ui() // Setup the toolbar main_bar_ = new toolbars::MainBar(session_, *this); + // Set up the initial view + add_view(tr("Untitled"), pv::view::TraceView, session_); + // Populate the device list and select the initially selected device update_device_list(); @@ -592,16 +611,6 @@ void MainWindow::setup_ui() SLOT(capture_state_changed(int))); connect(&session_, SIGNAL(device_selected()), this, SLOT(device_selected())); - - // TODO: Refactor this into a "new view" method - if (view) { - connect(&session_, SIGNAL(trigger_event(util::Timestamp)), view.get(), - SLOT(trigger_event(util::Timestamp))); - connect(view.get(), SIGNAL(sticky_scrolling_changed(bool)), this, - SLOT(sticky_scrolling_changed(bool))); - connect(view.get(), SIGNAL(always_zoom_to_fit_changed(bool)), this, - SLOT(always_zoom_to_fit_changed(bool))); - } } void MainWindow::select_init_device()