From: Soeren Apel <[email protected]>
My last patch introduced window state saving and restoring. It also
introduced two unwanted messages in the debug output that I didn't
notice before:
QMainWindow::saveState(): 'objectName' not set for QToolBar 'Main Toolbar'
QMainWindow::saveState(): 'objectName' not set for QToolBar 'Sampling Bar'
As this change is so minor, I also added device selection persistence.
The device title is the only method of identification available, so I'm
using it here despite its non-uniqueness when using multiple devices of
the same kind. This fixes 50% of #139 as well.
---
pv/mainwindow.cpp | 24 ++++++++++++++++++++++++
pv/toolbars/samplingbar.cpp | 2 ++
2 files changed, 26 insertions(+), 0 deletions(-)
diff --git a/pv/mainwindow.cpp b/pv/mainwindow.cpp
index 719d608..2970cc1 100644
--- a/pv/mainwindow.cpp
+++ b/pv/mainwindow.cpp
@@ -240,6 +240,7 @@ void MainWindow::setup_ui()
// Setup the toolbar
QToolBar *const toolbar = new QToolBar(tr("Main Toolbar"), this);
+ toolbar->setObjectName(QString::fromUtf8("MainToolbar"));
toolbar->addAction(action_open);
toolbar->addAction(action_save_as);
toolbar->addSeparator();
@@ -276,11 +277,20 @@ void MainWindow::save_ui_settings()
settings.setValue("state", saveState());
settings.setValue("geometry", saveGeometry());
settings.endGroup();
+
+ settings.beginGroup("Device");
+ if (_session.get_device())
+ settings.setValue("last_device",
+
QString(_session.get_device()->format_device_title().c_str()));
+ settings.endGroup();
}
void MainWindow::restore_ui_settings()
{
QSettings settings("sigrok", "PulseView");
+ QString last_device;
+ list< shared_ptr<device::Device> > devices;
+ list< shared_ptr<device::Device> >::const_iterator dev_iter;
settings.beginGroup("MainWindow");
@@ -291,6 +301,20 @@ void MainWindow::restore_ui_settings()
resize(1000, 720);
settings.endGroup();
+
+ settings.beginGroup("Device");
+ if (settings.contains("last_device"))
+ last_device = settings.value("last_device").toString();
+ settings.endGroup();
+
+ // Re-select last used device if possible.
+ devices = _device_manager.devices();
+ if (!last_device.isEmpty() && (devices.size() > 0))
+ for (dev_iter = devices.begin(); dev_iter != devices.end();
dev_iter++)
+ if ((*dev_iter)->format_device_title() ==
last_device.toStdString()) {
+ _session.set_device(*dev_iter);
+ update_device_list();
+ }
}
void MainWindow::session_error(
diff --git a/pv/toolbars/samplingbar.cpp b/pv/toolbars/samplingbar.cpp
index 550fc84..526f382 100644
--- a/pv/toolbars/samplingbar.cpp
+++ b/pv/toolbars/samplingbar.cpp
@@ -66,6 +66,8 @@ SamplingBar::SamplingBar(SigSession &session, QWidget
*parent) :
_icon_grey(":/icons/status-grey.svg"),
_run_stop_button(this)
{
+ setObjectName(QString::fromUtf8("SamplingBar"));
+
connect(&_run_stop_button, SIGNAL(clicked()),
this, SLOT(on_run_stop()));
connect(&_device_selector, SIGNAL(currentIndexChanged (int)),
--
1.7.8.6
------------------------------------------------------------------------------
Want excitement?
Manually upgrade your production database.
When you want reliability, choose Perforce
Perforce version control. Predictably reliable.
http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk
_______________________________________________
sigrok-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sigrok-devel