#include <QHelpEvent>
#include <QToolTip>
-#include "samplingbar.h"
+#include "samplingbar.hpp"
-#include <pv/devicemanager.h>
-#include <pv/popups/deviceoptions.h>
-#include <pv/popups/channels.h>
-#include <pv/util.h>
+#include <pv/devicemanager.hpp>
+#include <pv/mainwindow.hpp>
+#include <pv/popups/deviceoptions.hpp>
+#include <pv/popups/channels.hpp>
+#include <pv/util.hpp>
#include <libsigrok/libsigrok.hpp>
const uint64_t SamplingBar::MaxSampleCount = 1000000000000ULL;
const uint64_t SamplingBar::DefaultSampleCount = 1000000;
-SamplingBar::SamplingBar(SigSession &session, QWidget *parent) :
- QToolBar("Sampling Bar", parent),
+SamplingBar::SamplingBar(SigSession &session, MainWindow &main_window) :
+ QToolBar("Sampling Bar", &main_window),
session_(session),
+ main_window_(main_window),
device_selector_(this),
updating_device_selector_(false),
configure_button_(this),
assert(!updating_sample_rate_);
updating_sample_rate_ = true;
- try {
+ const auto keys = device->config_keys(ConfigKey::DEVICE_OPTIONS);
+ const auto iter = keys.find(ConfigKey::SAMPLERATE);
+ if (iter != keys.end() &&
+ (*iter).second.find(sigrok::LIST) != (*iter).second.end()) {
gvar_dict = device->config_list(ConfigKey::SAMPLERATE);
- } catch (Error error) {
+ } else {
sample_rate_.show_none();
updating_sample_rate_ = false;
return;
assert(!updating_sample_count_);
updating_sample_count_ = true;
- if (sample_count_supported_)
+ if (!sample_count_supported_)
{
- uint64_t sample_count = sample_count_.value();
- uint64_t min_sample_count = 0;
- uint64_t max_sample_count = MaxSampleCount;
+ sample_count_.show_none();
+ updating_sample_count_ = false;
+ return;
+ }
- if (sample_count == 0)
- sample_count = DefaultSampleCount;
+ uint64_t sample_count = sample_count_.value();
+ uint64_t min_sample_count = 0;
+ uint64_t max_sample_count = MaxSampleCount;
- try {
- auto gvar = device->config_list(ConfigKey::LIMIT_SAMPLES);
- g_variant_get(gvar.gobj(), "(tt)",
- &min_sample_count, &max_sample_count);
- } catch (Error error) {}
+ if (sample_count == 0)
+ sample_count = DefaultSampleCount;
- min_sample_count = min(max(min_sample_count, MinSampleCount),
- max_sample_count);
+ const auto keys = device->config_keys(ConfigKey::DEVICE_OPTIONS);
+ const auto iter = keys.find(ConfigKey::LIMIT_SAMPLES);
+ if (iter != keys.end() &&
+ (*iter).second.find(sigrok::LIST) != (*iter).second.end()) {
+ auto gvar = device->config_list(ConfigKey::LIMIT_SAMPLES);
+ g_variant_get(gvar.gobj(), "(tt)",
+ &min_sample_count, &max_sample_count);
+ }
- sample_count_.show_125_list(
- min_sample_count, max_sample_count);
+ min_sample_count = min(max(min_sample_count, MinSampleCount),
+ max_sample_count);
- try {
- auto gvar = device->config_get(ConfigKey::LIMIT_SAMPLES);
- sample_count = g_variant_get_uint64(gvar.gobj());
- if (sample_count == 0)
- sample_count = DefaultSampleCount;
- sample_count = min(max(sample_count, MinSampleCount),
- max_sample_count);
- } catch (Error error) {}
-
- sample_count_.set_value(sample_count);
- }
- else
- sample_count_.show_none();
+ sample_count_.show_125_list(
+ min_sample_count, max_sample_count);
+
+ try {
+ auto gvar = device->config_get(ConfigKey::LIMIT_SAMPLES);
+ sample_count = g_variant_get_uint64(gvar.gobj());
+ if (sample_count == 0)
+ sample_count = DefaultSampleCount;
+ sample_count = min(max(sample_count, MinSampleCount),
+ max_sample_count);
+ } catch (Error error) {}
+
+ sample_count_.set_value(sample_count);
updating_sample_count_ = false;
}
{
commit_sample_count();
commit_sample_rate();
- run_stop();
+ main_window_.run_stop();
}
void SamplingBar::on_config_changed()