X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Ftoolbars%2Fmainbar.cpp;h=0bb4c4541cc704f50420c06324ec0fa9de83686c;hb=519a6ed82d88f63fe5353f84ec9ebb775d1e9e95;hp=22ed3988cfb72ccfb824390c03d1b4354b8dd4ed;hpb=f23c46921d031dba4c96062164cc9f3ca3c4809c;p=pulseview.git diff --git a/pv/toolbars/mainbar.cpp b/pv/toolbars/mainbar.cpp index 22ed398..0bb4c45 100644 --- a/pv/toolbars/mainbar.cpp +++ b/pv/toolbars/mainbar.cpp @@ -35,6 +35,7 @@ #include +#include #include #include #include @@ -312,7 +313,11 @@ void MainBar::update_sample_rate_selector() const shared_ptr sr_dev = device->device(); if (sr_dev->config_check(ConfigKey::SAMPLERATE, Capability::LIST)) { - gvar_dict = sr_dev->config_list(ConfigKey::SAMPLERATE); + try { + gvar_dict = sr_dev->config_list(ConfigKey::SAMPLERATE); + } catch (Error error) { + qDebug() << tr("Failed to get sample rate list:") << error.what(); + } } else { sample_rate_.show_none(); updating_sample_rate_ = false; @@ -412,10 +417,14 @@ void MainBar::update_sample_count_selector() } if (sr_dev->config_check(ConfigKey::LIMIT_SAMPLES, Capability::LIST)) { - auto gvar = sr_dev->config_list(ConfigKey::LIMIT_SAMPLES); - if (gvar.gobj()) - g_variant_get(gvar.gobj(), "(tt)", - &min_sample_count, &max_sample_count); + try { + auto gvar = sr_dev->config_list(ConfigKey::LIMIT_SAMPLES); + if (gvar.gobj()) + g_variant_get(gvar.gobj(), "(tt)", + &min_sample_count, &max_sample_count); + } catch (Error error) { + qDebug() << tr("Failed to get sample limit list:") << error.what(); + } } min_sample_count = min(max(min_sample_count, MinSampleCount), @@ -479,12 +488,6 @@ void MainBar::update_device_config_widgets() if (sr_dev->config_check(ConfigKey::LIMIT_SAMPLES, Capability::SET)) sample_count_supported_ = true; - if (sr_dev->config_check(ConfigKey::LIMIT_FRAMES, Capability::SET)) { - sr_dev->config_set(ConfigKey::LIMIT_FRAMES, - Glib::Variant::create(1)); - on_config_changed(); - } - // Add notification of reconfigure events disconnect(this, SLOT(on_config_changed())); connect(&opts->binding(), SIGNAL(config_changed()), @@ -575,7 +578,9 @@ void MainBar::add_decoder(srd_decoder *decoder) { #ifdef ENABLE_DECODE assert(decoder); - session_.add_decoder(decoder); + shared_ptr signal = session_.add_decode_signal(); + if (signal) + signal->stack_decoder(decoder); #else (void)decoder; #endif @@ -615,6 +620,13 @@ void MainBar::export_file(shared_ptr format, bool selection_only) const uint64_t end_sample = (uint64_t)max( (double)0, end_time.convert_to() * samplerate); + if ((start_sample == 0) && (end_sample == 0)) { + // Both cursors are negative and were clamped to 0 + show_session_error(tr("Invalid Range"), tr("The cursors don't " \ + "define a valid range of samples.")); + return; + } + sample_range = make_pair(start_sample, end_sample); } else { sample_range = make_pair(0, 0); @@ -671,16 +683,19 @@ void MainBar::import_file(shared_ptr format) // Construct the filter const vector exts = format->extensions(); - const QString filter = exts.empty() ? "" : - tr("%1 files (*.%2)").arg( - QString::fromStdString(format->description()), - QString::fromStdString(join(exts, ", *."))); + const QString filter_exts = exts.empty() ? "" : QString::fromStdString("%1 (%2)").arg( + tr("%1 files").arg(QString::fromStdString(format->description())), + QString::fromStdString("*.%1").arg(QString::fromStdString(join(exts, " *.")))); + const QString filter_all = QString::fromStdString("%1 (%2)").arg( + tr("All Files"), QString::fromStdString("*")); + const QString filter = QString::fromStdString("%1%2%3").arg( + exts.empty() ? "" : filter_exts, + exts.empty() ? "" : ";;", + filter_all); // Show the file dialog const QString file_name = QFileDialog::getOpenFileName( - this, tr("Import File"), dir, tr( - "%1 files (*);;All Files (*)").arg( - QString::fromStdString(format->description()))); + this, tr("Import File"), dir, filter); if (file_name.isEmpty()) return;