mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-03-31 16:48:29 -04:00
Multi device support: GUI enhmcements
This commit is contained in:
parent
7452e2fe04
commit
4027b00675
plugins/samplesource
airspy
bladerf
fcdpro
fcdproplus
filesource
hackrf
rtlsdr
sdrdaemon
sdrbase
@ -117,7 +117,7 @@ PluginInterface::SampleSourceDevices AirspyPlugin::enumSampleSources()
|
||||
return result;
|
||||
}
|
||||
|
||||
PluginGUI* AirspyPlugin::createSampleSourcePluginGUI(const QString& sourceId)
|
||||
PluginGUI* AirspyPlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName)
|
||||
{
|
||||
if (!m_pluginAPI)
|
||||
{
|
||||
@ -127,7 +127,7 @@ PluginGUI* AirspyPlugin::createSampleSourcePluginGUI(const QString& sourceId)
|
||||
if(sourceId == m_deviceTypeID)
|
||||
{
|
||||
AirspyGui* gui = new AirspyGui(m_pluginAPI);
|
||||
m_pluginAPI->setInputGUI(gui);
|
||||
m_pluginAPI->setInputGUI(gui, sourceDisplayName);
|
||||
return gui;
|
||||
}
|
||||
else
|
||||
|
@ -34,7 +34,7 @@ public:
|
||||
void initPlugin(PluginAPI* pluginAPI);
|
||||
|
||||
virtual SampleSourceDevices enumSampleSources();
|
||||
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId);
|
||||
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName);
|
||||
|
||||
static const QString m_deviceTypeID;
|
||||
|
||||
|
@ -75,7 +75,7 @@ PluginInterface::SampleSourceDevices BlderfPlugin::enumSampleSources()
|
||||
return result;
|
||||
}
|
||||
|
||||
PluginGUI* BlderfPlugin::createSampleSourcePluginGUI(const QString& sourceId)
|
||||
PluginGUI* BlderfPlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName)
|
||||
{
|
||||
if (!m_pluginAPI)
|
||||
{
|
||||
@ -85,7 +85,7 @@ PluginGUI* BlderfPlugin::createSampleSourcePluginGUI(const QString& sourceId)
|
||||
if(sourceId == m_deviceTypeID)
|
||||
{
|
||||
BladerfGui* gui = new BladerfGui(m_pluginAPI);
|
||||
m_pluginAPI->setInputGUI(gui);
|
||||
m_pluginAPI->setInputGUI(gui, sourceDisplayName);
|
||||
return gui;
|
||||
}
|
||||
else
|
||||
|
@ -34,7 +34,7 @@ public:
|
||||
void initPlugin(PluginAPI* pluginAPI);
|
||||
|
||||
virtual SampleSourceDevices enumSampleSources();
|
||||
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId);
|
||||
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName);
|
||||
|
||||
static const QString m_deviceTypeID;
|
||||
|
||||
|
@ -74,12 +74,12 @@ PluginInterface::SampleSourceDevices FCDProPlugin::enumSampleSources()
|
||||
return result;
|
||||
}
|
||||
|
||||
PluginGUI* FCDProPlugin::createSampleSourcePluginGUI(const QString& sourceId)
|
||||
PluginGUI* FCDProPlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName)
|
||||
{
|
||||
if(sourceId == fcd_traits<Pro>::interfaceIID)
|
||||
{
|
||||
FCDProGui* gui = new FCDProGui(m_pluginAPI);
|
||||
m_pluginAPI->setInputGUI(gui);
|
||||
m_pluginAPI->setInputGUI(gui, sourceDisplayName);
|
||||
return gui;
|
||||
}
|
||||
else
|
||||
|
@ -18,7 +18,7 @@ public:
|
||||
void initPlugin(PluginAPI* pluginAPI);
|
||||
|
||||
virtual SampleSourceDevices enumSampleSources();
|
||||
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId);
|
||||
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName);
|
||||
|
||||
static const QString m_deviceTypeID;
|
||||
|
||||
|
@ -74,12 +74,12 @@ PluginInterface::SampleSourceDevices FCDProPlusPlugin::enumSampleSources()
|
||||
return result;
|
||||
}
|
||||
|
||||
PluginGUI* FCDProPlusPlugin::createSampleSourcePluginGUI(const QString& sourceId)
|
||||
PluginGUI* FCDProPlusPlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName)
|
||||
{
|
||||
if(sourceId == fcd_traits<ProPlus>::interfaceIID)
|
||||
{
|
||||
FCDProPlusGui* gui = new FCDProPlusGui(m_pluginAPI);
|
||||
m_pluginAPI->setInputGUI(gui);
|
||||
m_pluginAPI->setInputGUI(gui, sourceDisplayName);
|
||||
return gui;
|
||||
}
|
||||
else
|
||||
|
@ -18,7 +18,7 @@ public:
|
||||
void initPlugin(PluginAPI* pluginAPI);
|
||||
|
||||
virtual SampleSourceDevices enumSampleSources();
|
||||
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId);
|
||||
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName);
|
||||
|
||||
static const QString m_deviceTypeID;
|
||||
|
||||
|
@ -67,12 +67,12 @@ PluginInterface::SampleSourceDevices FileSourcePlugin::enumSampleSources()
|
||||
return result;
|
||||
}
|
||||
|
||||
PluginGUI* FileSourcePlugin::createSampleSourcePluginGUI(const QString& sourceId)
|
||||
PluginGUI* FileSourcePlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName)
|
||||
{
|
||||
if(sourceId == m_deviceTypeID)
|
||||
{
|
||||
FileSourceGui* gui = new FileSourceGui(m_pluginAPI);
|
||||
m_pluginAPI->setInputGUI(gui);
|
||||
m_pluginAPI->setInputGUI(gui, sourceDisplayName);
|
||||
return gui;
|
||||
}
|
||||
else
|
||||
|
@ -34,7 +34,7 @@ public:
|
||||
void initPlugin(PluginAPI* pluginAPI);
|
||||
|
||||
virtual SampleSourceDevices enumSampleSources();
|
||||
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId);
|
||||
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName);
|
||||
|
||||
static const QString m_deviceTypeID;
|
||||
|
||||
|
@ -112,7 +112,7 @@ PluginInterface::SampleSourceDevices HackRFPlugin::enumSampleSources()
|
||||
return result;
|
||||
}
|
||||
|
||||
PluginGUI* HackRFPlugin::createSampleSourcePluginGUI(const QString& sourceId)
|
||||
PluginGUI* HackRFPlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName)
|
||||
{
|
||||
if (!m_pluginAPI)
|
||||
{
|
||||
@ -122,7 +122,7 @@ PluginGUI* HackRFPlugin::createSampleSourcePluginGUI(const QString& sourceId)
|
||||
if(sourceId == m_deviceTypeID)
|
||||
{
|
||||
HackRFGui* gui = new HackRFGui(m_pluginAPI);
|
||||
m_pluginAPI->setInputGUI(gui);
|
||||
m_pluginAPI->setInputGUI(gui, sourceDisplayName);
|
||||
return gui;
|
||||
}
|
||||
else
|
||||
|
@ -34,7 +34,7 @@ public:
|
||||
void initPlugin(PluginAPI* pluginAPI);
|
||||
|
||||
virtual SampleSourceDevices enumSampleSources();
|
||||
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId);
|
||||
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName);
|
||||
|
||||
static const QString m_deviceTypeID;
|
||||
|
||||
|
@ -59,11 +59,11 @@ PluginInterface::SampleSourceDevices RTLSDRPlugin::enumSampleSources()
|
||||
return result;
|
||||
}
|
||||
|
||||
PluginGUI* RTLSDRPlugin::createSampleSourcePluginGUI(const QString& sourceId)
|
||||
PluginGUI* RTLSDRPlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName)
|
||||
{
|
||||
if(sourceId == m_deviceTypeID) {
|
||||
RTLSDRGui* gui = new RTLSDRGui(m_pluginAPI);
|
||||
m_pluginAPI->setInputGUI(gui);
|
||||
m_pluginAPI->setInputGUI(gui, sourceDisplayName);
|
||||
return gui;
|
||||
} else {
|
||||
return NULL;
|
||||
|
@ -18,7 +18,7 @@ public:
|
||||
void initPlugin(PluginAPI* pluginAPI);
|
||||
|
||||
virtual SampleSourceDevices enumSampleSources();
|
||||
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId);
|
||||
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName);
|
||||
|
||||
static const QString m_deviceTypeID;
|
||||
|
||||
|
@ -67,12 +67,12 @@ PluginInterface::SampleSourceDevices SDRdaemonPlugin::enumSampleSources()
|
||||
return result;
|
||||
}
|
||||
|
||||
PluginGUI* SDRdaemonPlugin::createSampleSourcePluginGUI(const QString& sourceId)
|
||||
PluginGUI* SDRdaemonPlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName)
|
||||
{
|
||||
if(sourceId == m_deviceTypeID)
|
||||
{
|
||||
SDRdaemonGui* gui = new SDRdaemonGui(m_pluginAPI);
|
||||
m_pluginAPI->setInputGUI(gui);
|
||||
m_pluginAPI->setInputGUI(gui, sourceDisplayName);
|
||||
return gui;
|
||||
}
|
||||
else
|
||||
|
@ -34,7 +34,7 @@ public:
|
||||
void initPlugin(PluginAPI* pluginAPI);
|
||||
|
||||
virtual SampleSourceDevices enumSampleSources();
|
||||
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId);
|
||||
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName);
|
||||
|
||||
static const QString m_deviceTypeID;
|
||||
|
||||
|
@ -16,6 +16,12 @@
|
||||
<height>76</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<family>Sans Serif</family>
|
||||
@ -26,6 +32,12 @@
|
||||
<string>Title & Color</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="spacing">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="deviceSelectLayout">
|
||||
<item>
|
||||
|
@ -97,8 +97,12 @@ MainWindow::MainWindow(QWidget* parent) :
|
||||
ui->menu_Window->addAction(ui->presetDock->toggleViewAction());
|
||||
ui->menu_Window->addAction(ui->channelDock->toggleViewAction());
|
||||
|
||||
//ui->tabInputsView->setStyleSheet("QWidget { background: rgb(46,46,46); }");
|
||||
ui->tabInputsView->setStyleSheet("QWidget { background: rgb(46,46,46); } QToolButton::checked { background: rgb(128,70,0); }");
|
||||
ui->tabInputsView->setStyleSheet("QWidget { background: rgb(44,44,44); } "
|
||||
"QToolButton::checked { background: rgb(128,70,0); } "
|
||||
"QComboBox::item:selected { color: rgb(255,140,0); }");
|
||||
ui->tabInputsSelect->setStyleSheet("QWidget { background: rgb(44,44,44); } "
|
||||
"QToolButton::checked { background: rgb(128,70,0); } "
|
||||
"QComboBox::item:selected { color: rgb(255,140,0); }");
|
||||
|
||||
connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleMessages()), Qt::QueuedConnection);
|
||||
|
||||
@ -260,27 +264,25 @@ void MainWindow::removeChannelMarker(ChannelMarker* channelMarker)
|
||||
m_deviceUIs.back()->m_spectrum->removeChannelMarker(channelMarker);
|
||||
}
|
||||
|
||||
void MainWindow::setInputGUI(int deviceTabIndex, QWidget* gui)
|
||||
void MainWindow::setInputGUI(int deviceTabIndex, QWidget* gui, const QString& sourceDisplayName)
|
||||
{
|
||||
qDebug("MainWindow::setInputGUI: count before %d", ui->tabInputsView->count());
|
||||
|
||||
char tabNameCStr[16];
|
||||
sprintf(tabNameCStr, "R%d", deviceTabIndex);
|
||||
|
||||
|
||||
if (deviceTabIndex < ui->tabInputsView->count())
|
||||
{
|
||||
qDebug("MainWindow::setInputGUI: device index %d replace", deviceTabIndex);
|
||||
qDebug("MainWindow::setInputGUI: tab device index %d replace", deviceTabIndex);
|
||||
ui->tabInputsView->removeTab(deviceTabIndex);
|
||||
ui->tabInputsView->insertTab(deviceTabIndex, gui, tabNameCStr);
|
||||
}
|
||||
else
|
||||
{
|
||||
qDebug("MainWindow::setInputGUI: device index %d add", deviceTabIndex);
|
||||
qDebug("MainWindow::setInputGUI: tab device index %d add", deviceTabIndex);
|
||||
ui->tabInputsView->addTab(gui, tabNameCStr);
|
||||
}
|
||||
|
||||
qDebug("MainWindow::setInputGUI: count after %d", ui->tabInputsView->count());
|
||||
ui->tabInputsView->setTabToolTip(deviceTabIndex, sourceDisplayName);
|
||||
}
|
||||
|
||||
void MainWindow::loadSettings()
|
||||
@ -684,7 +686,7 @@ void MainWindow::on_action_About_triggered()
|
||||
|
||||
void MainWindow::on_action_addDevice_triggered()
|
||||
{
|
||||
// addDevice(); TODO: re-activate when plugin issues are solved
|
||||
addDevice();
|
||||
}
|
||||
|
||||
void MainWindow::on_action_removeDevice_triggered()
|
||||
|
@ -77,7 +77,7 @@ public:
|
||||
void addChannelMarker(ChannelMarker* channelMarker); // TODO: review this
|
||||
void removeChannelMarker(ChannelMarker* channelMarker); // TODO: review this
|
||||
|
||||
void setInputGUI(int deviceTabIndex, QWidget* gui);
|
||||
void setInputGUI(int deviceTabIndex, QWidget* gui, const QString& sourceDisplayName);
|
||||
const QTimer& getMasterTimer() const { return m_masterTimer; }
|
||||
|
||||
private:
|
||||
|
@ -410,7 +410,7 @@
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>80</height>
|
||||
<height>110</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
|
@ -19,9 +19,9 @@ MessageQueue* PluginAPI::getMainWindowMessageQueue()
|
||||
return m_mainWindow->getInputMessageQueue();
|
||||
}
|
||||
|
||||
void PluginAPI::setInputGUI(QWidget* inputGUI)
|
||||
void PluginAPI::setInputGUI(QWidget* inputGUI, const QString& sourceDisplayName)
|
||||
{
|
||||
m_pluginManager->setInputGUI(inputGUI);
|
||||
m_pluginManager->setInputGUI(inputGUI, sourceDisplayName);
|
||||
}
|
||||
|
||||
void PluginAPI::registerChannel(const QString& channelName, PluginInterface* plugin)
|
||||
|
@ -5,8 +5,7 @@
|
||||
#include "util/export.h"
|
||||
#include "dsp/dspdeviceengine.h"
|
||||
|
||||
class QDockWidget;
|
||||
class QAction;
|
||||
class QString;
|
||||
|
||||
class PluginManager;
|
||||
class PluginInterface;
|
||||
@ -26,9 +25,8 @@ class SDRANGEL_API PluginAPI : public QObject {
|
||||
|
||||
public:
|
||||
// MainWindow access
|
||||
//QDockWidget* createMainWindowDock(Qt::DockWidgetArea dockWidgetArea, const QString& title);
|
||||
MessageQueue* getMainWindowMessageQueue();
|
||||
void setInputGUI(QWidget* inputGUI);
|
||||
void setInputGUI(QWidget* inputGUI, const QString& sourceDisplayName);
|
||||
|
||||
// Channel stuff
|
||||
void registerChannel(const QString& channelName, PluginInterface* plugin);
|
||||
|
@ -46,7 +46,7 @@ public:
|
||||
virtual PluginGUI* createChannel(const QString& channelName) { return 0; }
|
||||
|
||||
virtual SampleSourceDevices enumSampleSources() { return SampleSourceDevices(); }
|
||||
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId) { return 0; }
|
||||
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName) { return 0; }
|
||||
};
|
||||
|
||||
Q_DECLARE_INTERFACE(PluginInterface, "SDRangel.PluginInterface/0.1");
|
||||
|
@ -1,6 +1,8 @@
|
||||
#include <QApplication>
|
||||
#include <QPluginLoader>
|
||||
#include <QComboBox>
|
||||
#include <cstdio>
|
||||
|
||||
#include "plugin/pluginmanager.h"
|
||||
#include "plugin/plugingui.h"
|
||||
#include "settings/preset.h"
|
||||
@ -87,10 +89,10 @@ void PluginManager::registerSampleSource(const QString& sourceName, PluginInterf
|
||||
m_sampleSourceRegistrations.append(SampleSourceRegistration(sourceName, plugin));
|
||||
}
|
||||
|
||||
void PluginManager::setInputGUI(QWidget* gui)
|
||||
void PluginManager::setInputGUI(QWidget* gui, const QString& sourceDisplayName)
|
||||
{
|
||||
//m_mainWindow->setInputGUI(gui);
|
||||
m_mainWindow->setInputGUI(m_deviceTabIndex, gui);
|
||||
m_mainWindow->setInputGUI(m_deviceTabIndex, gui, sourceDisplayName);
|
||||
}
|
||||
|
||||
void PluginManager::addSink(SampleSink* sink)
|
||||
@ -343,7 +345,7 @@ int PluginManager::selectSampleSourceByIndex(int index)
|
||||
<< " ser: " << m_sampleSourceSerial.toStdString().c_str()
|
||||
<< " seq: " << m_sampleSourceSequence;
|
||||
|
||||
m_sampleSourcePluginGUI = m_sampleSourceDevices[index].m_plugin->createSampleSourcePluginGUI(m_sampleSourceId);
|
||||
m_sampleSourcePluginGUI = m_sampleSourceDevices[index].m_plugin->createSampleSourcePluginGUI(m_sampleSourceId, m_sampleSourceDevices[index].m_displayName);
|
||||
m_dspDeviceEngine->setSourceSequence(m_sampleSourceSequence);
|
||||
|
||||
return index;
|
||||
@ -397,7 +399,7 @@ int PluginManager::selectFirstSampleSource(const QString& sourceId)
|
||||
<< " ser: " << m_sampleSourceSerial.toStdString().c_str()
|
||||
<< " seq: " << m_sampleSourceSequence;
|
||||
|
||||
m_sampleSourcePluginGUI = m_sampleSourceDevices[index].m_plugin->createSampleSourcePluginGUI(m_sampleSourceId);
|
||||
m_sampleSourcePluginGUI = m_sampleSourceDevices[index].m_plugin->createSampleSourcePluginGUI(m_sampleSourceId, m_sampleSourceDevices[index].m_displayName);
|
||||
|
||||
return index;
|
||||
}
|
||||
@ -464,7 +466,7 @@ int PluginManager::selectSampleSourceBySerialOrSequence(const QString& sourceId,
|
||||
<< " ser: " << qPrintable(m_sampleSourceSerial)
|
||||
<< " seq: " << m_sampleSourceSequence;
|
||||
|
||||
m_sampleSourcePluginGUI = m_sampleSourceDevices[index].m_plugin->createSampleSourcePluginGUI(m_sampleSourceId);
|
||||
m_sampleSourcePluginGUI = m_sampleSourceDevices[index].m_plugin->createSampleSourcePluginGUI(m_sampleSourceId, m_sampleSourceDevices[index].m_displayName);
|
||||
|
||||
return index;
|
||||
}
|
||||
|
@ -52,7 +52,7 @@ public:
|
||||
void removeChannelInstance(PluginGUI* pluginGUI);
|
||||
void registerSampleSource(const QString& sourceName, PluginInterface* plugin);
|
||||
|
||||
void setInputGUI(QWidget* gui);
|
||||
void setInputGUI(QWidget* gui, const QString& sourceDisplayName);
|
||||
|
||||
void addSink(SampleSink* sink);
|
||||
void removeSink(SampleSink* sink);
|
||||
|
Loading…
Reference in New Issue
Block a user