Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions pv/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,8 @@ shared_ptr<Session> MainWindow::add_session()

connect(session.get(), SIGNAL(add_view(ViewType, Session*)),
this, SLOT(on_add_view(ViewType, Session*)));
connect(session.get(), SIGNAL(remove_view(shared_ptr<views::ViewBase>)),
this, SLOT(on_remove_view(shared_ptr<views::ViewBase>)));
connect(session.get(), SIGNAL(name_changed()),
this, SLOT(on_session_name_changed()));
connect(session.get(), SIGNAL(device_changed()),
Expand Down Expand Up @@ -724,6 +726,11 @@ void MainWindow::on_add_view(views::ViewType type, Session *session)
add_view(type, *s);
}

void MainWindow::on_remove_view(shared_ptr<views::ViewBase> view)
{
remove_view(view);
}

void MainWindow::on_focus_changed()
{
shared_ptr<views::ViewBase> view = get_active_view();
Expand Down
1 change: 1 addition & 0 deletions pv/mainwindow.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ public Q_SLOTS:

private Q_SLOTS:
void on_add_view(ViewType type, Session *session);
void on_remove_view(shared_ptr<views::ViewBase> view);

void on_focus_changed();
void on_focused_session_changed(shared_ptr<Session> session);
Expand Down
21 changes: 21 additions & 0 deletions pv/session.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -375,6 +375,27 @@ void Session::save_settings(QSettings &settings) const

void Session::restore_setup(QSettings &settings)
{
// Reset main view, remove all other views
main_view_->reset_view_state();
for (auto &v : vector< shared_ptr<views::ViewBase> >(views_)) {
if (v != main_view_)
remove_view(v);
}

// Remove generated signals and decoders
for (shared_ptr<data::SignalBase> base : vector< shared_ptr<data::SignalBase> >(signalbases_)) {
#ifdef ENABLE_DECODE
if (base->is_decode_signal()) {
shared_ptr<data::DecodeSignal> ds = dynamic_pointer_cast<data::DecodeSignal>(base);
assert(ds);
remove_decode_signal(ds);
} else
#endif
if (base->is_generated()) {
remove_generated_signal(base);
}
}

// Restore channels
for (shared_ptr<data::SignalBase> base : signalbases_) {
settings.beginGroup(base->internal_name());
Expand Down
1 change: 1 addition & 0 deletions pv/session.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,7 @@ class Session : public QObject
void data_received();

void add_view(ViewType type, Session *session);
void remove_view(shared_ptr<views::ViewBase> view);
void session_error_raised(const QString text, const QString info_text);

public Q_SLOTS:
Expand Down
1 change: 1 addition & 0 deletions pv/toolbars/mainbar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -878,6 +878,7 @@ void MainBar::on_actionSaveSetup_triggered()
return;

QSettings settings_storage(file_name, QSettings::IniFormat);
settings_storage.clear();
session_.save_setup(settings_storage);
}

Expand Down
Loading