diff --git a/core/src/gui/main_window.cpp b/core/src/gui/main_window.cpp index 1734864a..d99ffba3 100644 --- a/core/src/gui/main_window.cpp +++ b/core/src/gui/main_window.cpp @@ -598,8 +598,14 @@ void MainWindow::draw() { ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.0) - (ImGui::CalcTextSize("Zoom").x / 2.0)); ImGui::Text("Zoom"); ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.0) - 10); - if (ImGui::VSliderFloat("##_7_", ImVec2(20.0, 150.0), &bw, gui::waterfall.getBandwidth(), 1000.0, "")) { - gui::waterfall.setViewBandwidth(bw); + float minSliderBw = 1000.0; + float maxSliderBw = gui::waterfall.getBandwidth(); + if (ImGui::VSliderFloat("##_7_", ImVec2(20.0, 150.0), &bw, maxSliderBw, minSliderBw, "")) { + float normBw = bw / (maxSliderBw - minSliderBw); + float factor = normBw * normBw; + float finalBw = minSliderBw + bw * factor; + + gui::waterfall.setViewBandwidth(finalBw); if (vfo != NULL) { gui::waterfall.setViewOffset(vfo->centerOffset); // center vfo on screen } diff --git a/soapy_source/src/main.cpp b/soapy_source/src/main.cpp index e73a1f16..646e775d 100644 --- a/soapy_source/src/main.cpp +++ b/soapy_source/src/main.cpp @@ -296,6 +296,11 @@ private: static void start(void* ctx) { SoapyModule* _this = (SoapyModule*)ctx; if (_this->running) { return; } + if (_this->devId < 0) { + spdlog::error("No device available"); + return; + } + _this->dev = SoapySDR::Device::make(_this->devArgs); _this->dev->setSampleRate(SOAPY_SDR_RX, _this->channelId, _this->sampleRate); @@ -353,13 +358,17 @@ private: static void menuHandler(void* ctx) { SoapyModule* _this = (SoapyModule*)ctx; - - // If no device is available, do not attempt to display menu - if (_this->devId < 0) { - return; - } float menuWidth = ImGui::GetContentRegionAvailWidth(); + + // If no device is selected, draw only the refresh button + if (_this->devId < 0) { + if (ImGui::Button(CONCAT("Refresh##_dev_select_", _this->name), ImVec2(menuWidth, 0))) { + _this->refresh(); + _this->selectDevice(config.conf["device"]); + } + return; + } if (_this->running) { style::beginDisabled(); }