1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-06-05 15:34:57 -04:00

Massive UI revamping (v7): devices intermediate

This commit is contained in:
f4exb
2022-04-09 13:38:22 +02:00
parent aad90aeabc
commit 0ca0eb8f73
64 changed files with 1039 additions and 290 deletions
+218 -99
View File
@@ -47,6 +47,7 @@
#include "feature/featureset.h"
#include "feature/feature.h"
#include "feature/featuregui.h"
#include "mainspectrum/mainspectrumgui.h"
#include "commands/commandkeyreceiver.h"
#include "gui/indicator.h"
#include "gui/presetitem.h"
@@ -261,7 +262,7 @@ MainWindow::MainWindow(qtwebapp::LoggerWithFile *logger, const MainParser& parse
splash->showStatusMessage("load current configuration...", Qt::white);
qDebug() << "MainWindow::MainWindow: load current configuration...";
// loadPresetSettings(m_mainCore->m_settings.getWorkingPreset(), 0);
// loadDeviceSetPresetSettings(m_mainCore->m_settings.getWorkingPreset(), 0);
m_apiAdapter = new WebAPIAdapter();
// loadFeatureSetPresetSettings(m_mainCore->m_settings.getWorkingFeatureSetPreset(), 0);
loadConfiguration(m_mainCore->m_settings.getWorkingConfiguration());
@@ -389,16 +390,27 @@ void MainWindow::sampleSourceAdd(Workspace *workspace, int deviceIndex)
deviceIndex = DeviceEnumerator::instance()->getFileInputDeviceIndex();
}
sampleSourceImplement(deviceSetIndex, deviceIndex, deviceAPI, m_deviceUIs.back(), workspace);
sampleSourceCreate(deviceSetIndex, deviceIndex, deviceAPI, m_deviceUIs.back());
m_deviceUIs.back()->m_deviceGUI->setWorkspaceIndex(workspace->getIndex());
m_deviceUIs.back()->m_mainSpectrumGUI->setWorkspaceIndex(workspace->getIndex());
QObject::connect(
m_deviceUIs.back()->m_mainSpectrumGUI,
&MainSpectrumGUI::moveToWorkspace,
this,
[=](int wsIndexDest){ this->mainSpectrumMove(m_deviceUIs.back()->m_mainSpectrumGUI, wsIndexDest); }
);
workspace->addToMdiArea(m_deviceUIs.back()->m_deviceGUI);
workspace->addToMdiArea(m_deviceUIs.back()->m_mainSpectrumGUI);
emit m_mainCore->deviceSetAdded(deviceSetIndex, deviceAPI);
}
void MainWindow::sampleSourceImplement(
void MainWindow::sampleSourceCreate(
int deviceSetIndex,
int deviceIndex,
DeviceAPI *deviceAPI,
DeviceUISet *deviceUISet,
Workspace *workspace
DeviceUISet *deviceUISet
)
{
int selectedDeviceIndex = deviceIndex;
@@ -506,15 +518,23 @@ void MainWindow::sampleSourceImplement(
);
deviceAPI->getSampleSource()->setMessageQueueToGUI(deviceGUI->getInputMessageQueue());
deviceUISet->m_deviceGUI = deviceGUI;
const PluginInterface::SamplingDevice *selectedDevice = DeviceEnumerator::instance()->getRxSamplingDevice(selectedDeviceIndex);
deviceUISet->m_selectedDeviceId = selectedDevice->id;
deviceUISet->m_selectedDeviceSerial = selectedDevice->serial;
deviceUISet->m_selectedDeviceSequence = selectedDevice->sequence;
deviceUISet->m_selectedDeviceItemImdex = selectedDevice->deviceItemIndex;
deviceUISet->m_deviceAPI->getSampleSource()->init();
// Finalize GUI setup and add it to workspace MDI
deviceGUI->setDeviceType(DeviceGUI::DeviceRx);
deviceGUI->setIndex(deviceSetIndex);
deviceGUI->setWorkspaceIndex(workspace->getIndex());
deviceGUI->setToolTip(samplingDevice->displayedName);
deviceGUI->setTitle(samplingDevice->displayedName.split(" ")[0]);
deviceGUI->setCurrentDeviceIndex(selectedDeviceIndex);
workspace->addToMdiArea((QMdiSubWindow*) deviceGUI);
MainSpectrumGUI *mainSpectrumGUI = deviceUISet->m_mainSpectrumGUI;
mainSpectrumGUI->setDeviceType(MainSpectrumGUI::DeviceRx);
mainSpectrumGUI->setIndex(deviceSetIndex);
mainSpectrumGUI->setToolTip(samplingDevice->displayedName);
mainSpectrumGUI->setTitle(samplingDevice->displayedName.split(" ")[0]);
}
void MainWindow::sampleSinkAdd(Workspace *workspace, int deviceIndex)
@@ -552,16 +572,27 @@ void MainWindow::sampleSinkAdd(Workspace *workspace, int deviceIndex)
deviceIndex = DeviceEnumerator::instance()->getFileOutputDeviceIndex(); // create a file output by default
}
sampleSinkImplement(deviceSetIndex, deviceIndex, deviceAPI, m_deviceUIs.back(), workspace);
sampleSinkCreate(deviceSetIndex, deviceIndex, deviceAPI, m_deviceUIs.back());
m_deviceUIs.back()->m_deviceGUI->setWorkspaceIndex(workspace->getIndex());
m_deviceUIs.back()->m_mainSpectrumGUI->setWorkspaceIndex(workspace->getIndex());
QObject::connect(
m_deviceUIs.back()->m_mainSpectrumGUI,
&MainSpectrumGUI::moveToWorkspace,
this,
[=](int wsIndexDest){ this->mainSpectrumMove(m_deviceUIs.back()->m_mainSpectrumGUI, wsIndexDest); }
);
workspace->addToMdiArea(m_deviceUIs.back()->m_deviceGUI);
workspace->addToMdiArea(m_deviceUIs.back()->m_mainSpectrumGUI);
emit m_mainCore->deviceSetAdded(deviceSetIndex, deviceAPI);
}
void MainWindow::sampleSinkImplement(
void MainWindow::sampleSinkCreate(
int deviceSetIndex,
int deviceIndex,
DeviceAPI *deviceAPI,
DeviceUISet *deviceUISet,
Workspace *workspace
DeviceUISet *deviceUISet
)
{
int selectedDeviceIndex = deviceIndex;
@@ -669,15 +700,23 @@ void MainWindow::sampleSinkImplement(
);
deviceAPI->getSampleSink()->setMessageQueueToGUI(deviceGUI->getInputMessageQueue());
deviceUISet->m_deviceGUI = deviceGUI;
const PluginInterface::SamplingDevice *selectedDevice = DeviceEnumerator::instance()->getRxSamplingDevice(selectedDeviceIndex);
deviceUISet->m_selectedDeviceId = selectedDevice->id;
deviceUISet->m_selectedDeviceSerial = selectedDevice->serial;
deviceUISet->m_selectedDeviceSequence = selectedDevice->sequence;
deviceUISet->m_selectedDeviceItemImdex = selectedDevice->deviceItemIndex;
deviceUISet->m_deviceAPI->getSampleSink()->init();
// Finalize GUI setup and add it to workspace MDI
deviceGUI->setDeviceType(DeviceGUI::DeviceTx);
deviceGUI->setIndex(deviceSetIndex);
deviceGUI->setWorkspaceIndex(workspace->getIndex());
deviceGUI->setToolTip(samplingDevice->displayedName);
deviceGUI->setTitle(samplingDevice->displayedName.split(" ")[0]);
deviceGUI->setCurrentDeviceIndex(selectedDeviceIndex);
workspace->addToMdiArea((QMdiSubWindow*) deviceGUI);
MainSpectrumGUI *spectrumGUI = deviceUISet->m_mainSpectrumGUI;
spectrumGUI->setDeviceType(MainSpectrumGUI::DeviceTx);
spectrumGUI->setIndex(deviceSetIndex);
spectrumGUI->setToolTip(samplingDevice->displayedName);
spectrumGUI->setTitle(samplingDevice->displayedName.split(" ")[0]);
}
void MainWindow::sampleMIMOAdd(Workspace *workspace, int deviceIndex)
@@ -723,16 +762,27 @@ void MainWindow::sampleMIMOAdd(Workspace *workspace, int deviceIndex)
deviceIndex = DeviceEnumerator::instance()->getTestMIMODeviceIndex(); // create a test MIMO by default
}
sampleMIMOImplement(deviceSetIndex, deviceIndex, deviceAPI, m_deviceUIs.back(), workspace);
sampleMIMOCreate(deviceSetIndex, deviceIndex, deviceAPI, m_deviceUIs.back());
m_deviceUIs.back()->m_deviceGUI->setWorkspaceIndex(workspace->getIndex());
m_deviceUIs.back()->m_mainSpectrumGUI->setWorkspaceIndex(workspace->getIndex());
QObject::connect(
m_deviceUIs.back()->m_mainSpectrumGUI,
&MainSpectrumGUI::moveToWorkspace,
this,
[=](int wsIndexDest){ this->mainSpectrumMove(m_deviceUIs.back()->m_mainSpectrumGUI, wsIndexDest); }
);
workspace->addToMdiArea(m_deviceUIs.back()->m_deviceGUI);
workspace->addToMdiArea(m_deviceUIs.back()->m_mainSpectrumGUI);
emit m_mainCore->deviceSetAdded(deviceSetIndex, deviceAPI);
}
void MainWindow::sampleMIMOImplement(
void MainWindow::sampleMIMOCreate(
int deviceSetIndex,
int deviceIndex,
DeviceAPI *deviceAPI,
DeviceUISet *deviceUISet,
Workspace *workspace
DeviceUISet *deviceUISet
)
{
int selectedDeviceIndex = deviceIndex;
@@ -806,20 +856,28 @@ void MainWindow::sampleMIMOImplement(
);
deviceAPI->getSampleMIMO()->setMessageQueueToGUI(deviceGUI->getInputMessageQueue());
deviceUISet->m_deviceGUI = deviceGUI;
const PluginInterface::SamplingDevice *selectedDevice = DeviceEnumerator::instance()->getRxSamplingDevice(selectedDeviceIndex);
deviceUISet->m_selectedDeviceId = selectedDevice->id;
deviceUISet->m_selectedDeviceSerial = selectedDevice->serial;
deviceUISet->m_selectedDeviceSequence = selectedDevice->sequence;
deviceUISet->m_selectedDeviceItemImdex = selectedDevice->deviceItemIndex;
deviceUISet->m_deviceAPI->getSampleMIMO()->init();
// Finalize GUI setup and add it to workspace MDI
deviceGUI->setDeviceType(DeviceGUI::DeviceMIMO);
deviceGUI->setIndex(deviceSetIndex);
deviceGUI->setWorkspaceIndex(workspace->getIndex());
deviceGUI->setToolTip(samplingDevice->displayedName);
deviceGUI->setTitle(samplingDevice->displayedName.split(" ")[0]);
deviceGUI->setCurrentDeviceIndex(selectedDeviceIndex);
workspace->addToMdiArea((QMdiSubWindow*) deviceGUI);
MainSpectrumGUI *spectrumGUI = deviceUISet->m_mainSpectrumGUI;
spectrumGUI->setDeviceType(MainSpectrumGUI::DeviceMIMO);
spectrumGUI->setIndex(deviceSetIndex);
spectrumGUI->setToolTip(samplingDevice->displayedName);
spectrumGUI->setTitle(samplingDevice->displayedName.split(" ")[0]);
}
void MainWindow::removeLastDevice()
{
int removedTabIndex = m_deviceUIs.size() - 1;
int removedDeviceSetIndex = m_deviceUIs.size() - 1;
if (m_deviceUIs.back()->m_deviceSourceEngine) // source tab
{
@@ -837,12 +895,12 @@ void MainWindow::removeLastDevice()
m_deviceUIs.back()->m_deviceGUI->destroy();
m_deviceUIs.back()->m_deviceAPI->resetSamplingDeviceId();
m_deviceUIs.back()->m_deviceAPI->getPluginInterface()->deleteSampleSourcePluginInstanceInput(
m_deviceUIs.back()->m_deviceAPI->getSampleSource());
m_deviceUIs.back()->m_deviceAPI->getSampleSource());
m_deviceUIs.back()->m_deviceAPI->clearBuddiesLists(); // clear old API buddies lists
// ui->tabChannels->removeTab(ui->tabChannels->count() - 1);
m_deviceWidgetTabs.removeLast();
// m_deviceWidgetTabs.removeLast();
// restoreDeviceTabs();
DeviceAPI *sourceAPI = m_deviceUIs.back()->m_deviceAPI;
@@ -869,12 +927,12 @@ void MainWindow::removeLastDevice()
m_deviceUIs.back()->m_deviceGUI->destroy();
m_deviceUIs.back()->m_deviceAPI->resetSamplingDeviceId();
m_deviceUIs.back()->m_deviceAPI->getPluginInterface()->deleteSampleSinkPluginInstanceOutput(
m_deviceUIs.back()->m_deviceAPI->getSampleSink());
m_deviceUIs.back()->m_deviceAPI->getSampleSink());
m_deviceUIs.back()->m_deviceAPI->clearBuddiesLists(); // clear old API buddies lists
// ui->tabChannels->removeTab(ui->tabChannels->count() - 1);
m_deviceWidgetTabs.removeLast();
// m_deviceWidgetTabs.removeLast();
// restoreDeviceTabs();
DeviceAPI *sinkAPI = m_deviceUIs.back()->m_deviceAPI;
@@ -902,11 +960,11 @@ void MainWindow::removeLastDevice()
m_deviceUIs.back()->m_deviceGUI->destroy();
m_deviceUIs.back()->m_deviceAPI->resetSamplingDeviceId();
m_deviceUIs.back()->m_deviceAPI->getPluginInterface()->deleteSampleMIMOPluginInstanceMIMO(
m_deviceUIs.back()->m_deviceAPI->getSampleMIMO());
m_deviceUIs.back()->m_deviceAPI->getSampleMIMO());
// ui->tabChannels->removeTab(ui->tabChannels->count() - 1);
m_deviceWidgetTabs.removeLast();
// m_deviceWidgetTabs.removeLast();
// restoreDeviceTabs();
DeviceAPI *mimoAPI = m_deviceUIs.back()->m_deviceAPI;
@@ -920,7 +978,7 @@ void MainWindow::removeLastDevice()
m_deviceUIs.pop_back();
m_mainCore->removeLastDeviceSet();
emit m_mainCore->deviceSetRemoved(removedTabIndex);
emit m_mainCore->deviceSetRemoved(removedDeviceSetIndex);
}
void MainWindow::addFeatureSet()
@@ -990,75 +1048,41 @@ void MainWindow::loadSettings()
m_mainCore->setLoggingOptions();
}
void MainWindow::loadPresetSettings(const Preset* preset, int tabIndex)
void MainWindow::loadDeviceSetPresetSettings(const Preset* preset, int deviceSetIndex)
{
qDebug("MainWindow::loadPresetSettings: preset [%s | %s]",
qDebug("MainWindow::loadDeviceSetPresetSettings: preset [%s | %s]",
qPrintable(preset->getGroup()),
qPrintable(preset->getDescription()));
if (tabIndex >= 0)
if (deviceSetIndex >= 0)
{
DeviceUISet *deviceUI = m_deviceUIs[tabIndex];
deviceUI->m_spectrumGUI->deserialize(preset->getSpectrumConfig());
deviceUI->m_deviceAPI->loadSamplingDeviceSettings(preset);
if (deviceUI->m_deviceSourceEngine) { // source device
deviceUI->loadRxChannelSettings(preset, m_pluginManager->getPluginAPI());
} else if (deviceUI->m_deviceSinkEngine) { // sink device
deviceUI->loadTxChannelSettings(preset, m_pluginManager->getPluginAPI());
} else if (deviceUI->m_deviceMIMOEngine) { // MIMO device
deviceUI->loadMIMOChannelSettings(preset, m_pluginManager->getPluginAPI());
}
DeviceUISet *deviceUISet = m_deviceUIs[deviceSetIndex];
deviceUISet->loadDeviceSetSettings(preset, m_pluginManager->getPluginAPI(), &m_workspaces, nullptr);
}
m_spectrumToggleViewAction->setChecked(preset->getShowSpectrum());
// m_spectrumToggleViewAction->setChecked(preset->getShowSpectrum());
// has to be last step
if (!preset->getLayout().isEmpty()) {
restoreState(preset->getLayout());
}
// // has to be last step
// if (!preset->getLayout().isEmpty()) {
// restoreState(preset->getLayout());
// }
// tabifyDockWidget(ui->presetDock, ui->commandsDock); // override this setting
// ui->presetDock->raise();
}
void MainWindow::savePresetSettings(Preset* preset, int tabIndex)
void MainWindow::saveDeviceSetPresetSettings(Preset* preset, int deviceSetIndex)
{
qDebug("MainWindow::savePresetSettings: preset [%s | %s]",
qDebug("MainWindow::saveDeviceSetPresetSettings: preset [%s | %s]",
qPrintable(preset->getGroup()),
qPrintable(preset->getDescription()));
// Save from currently selected source tab
//int currentSourceTabIndex = ui->tabInputsView->currentIndex();
DeviceUISet *deviceUI = m_deviceUIs[tabIndex];
if (deviceUI->m_deviceSourceEngine) // source device
{
preset->setSpectrumConfig(deviceUI->m_spectrumGUI->serialize());
preset->clearChannels();
preset->setSourcePreset();
deviceUI->saveRxChannelSettings(preset);
deviceUI->m_deviceAPI->saveSamplingDeviceSettings(preset);
}
else if (deviceUI->m_deviceSinkEngine) // sink device
{
preset->setSpectrumConfig(deviceUI->m_spectrumGUI->serialize());
preset->clearChannels();
preset->setSinkPreset();
deviceUI->saveTxChannelSettings(preset);
deviceUI->m_deviceAPI->saveSamplingDeviceSettings(preset);
}
else if (deviceUI->m_deviceMIMOEngine) // MIMO device
{
preset->setSpectrumConfig(deviceUI->m_spectrumGUI->serialize());
preset->clearChannels();
preset->setMIMOPreset();
deviceUI->saveMIMOChannelSettings(preset);
deviceUI->m_deviceAPI->saveSamplingDeviceSettings(preset);
}
preset->setShowSpectrum(m_spectrumToggleViewAction->isChecked());
preset->setLayout(saveState());
DeviceUISet *deviceUISet = m_deviceUIs[deviceSetIndex];
deviceUISet->saveDeviceSetSettings(preset);
// preset->setShowSpectrum(m_spectrumToggleViewAction->isChecked());
// preset->setLayout(saveState());
}
void MainWindow::loadFeatureSetPresetSettings(const FeatureSetPreset* preset, int featureSetIndex, Workspace *workspace)
@@ -1071,7 +1095,7 @@ void MainWindow::loadFeatureSetPresetSettings(const FeatureSetPreset* preset, in
{
FeatureUISet *featureSetUI = m_featureUIs[featureSetIndex];
qDebug("MainWindow::loadFeatureSetPresetSettings: m_apiAdapter: %p", m_apiAdapter);
featureSetUI->loadFeatureSetSettings(preset, m_pluginManager->getPluginAPI(), m_apiAdapter, workspace);
featureSetUI->loadFeatureSetSettings(preset, m_pluginManager->getPluginAPI(), m_apiAdapter, &m_workspaces, workspace);
}
}
@@ -1091,14 +1115,20 @@ void MainWindow::saveFeatureSetPresetSettings(FeatureSetPreset* preset, int feat
void MainWindow::loadConfiguration(const Configuration *configuration)
{
qDebug("MainWindow::loadConfiguration: configuration [%s | %s] %d workspaces",
qDebug("MainWindow::loadConfiguration: configuration [%s | %s] %d workspace(s) - %d device set(s) - %d feature(s)",
qPrintable(configuration->getGroup()),
qPrintable(configuration->getDescription()),
configuration->getNumberOfWorkspaces()
configuration->getNumberOfWorkspaces(),
configuration->getDeviceSetPresets().size(),
configuration->getFeatureSetPreset().getFeatureCount()
);
// Wipe out everything first
// Device sets
while (m_deviceUIs.size() > 0) {
removeLastDevice();
}
// Features
m_featureUIs[0]->freeFeatures();
// Workspaces
@@ -1113,8 +1143,66 @@ void MainWindow::loadConfiguration(const Configuration *configuration)
for (int i = 0; i < configuration->getNumberOfWorkspaces(); i++) {
addWorkspace();
}
if (m_workspaces.size() <= 0) { // cannot go further if there are no workspaces
return;
}
// Device sets
const QList<Preset>& deviceSetPresets = configuration->getDeviceSetPresets();
for (const auto& deviceSetPreset : deviceSetPresets)
{
if (deviceSetPreset.isSourcePreset())
{
int bestDeviceIndex = DeviceEnumerator::instance()->getBestRxSamplingDeviceIndex(
deviceSetPreset.getSelectedDevice().m_deviceId,
deviceSetPreset.getSelectedDevice().m_deviceSerial,
deviceSetPreset.getSelectedDevice().m_deviceSequence,
deviceSetPreset.getSelectedDevice().m_deviceItemIndex
);
int workspaceIndex = deviceSetPreset.getDeviceWorkspaceIndex() < m_workspaces.size() ?
deviceSetPreset.getDeviceWorkspaceIndex() :
0;
sampleSourceAdd(m_workspaces[workspaceIndex], bestDeviceIndex);
}
else if (deviceSetPreset.isSinkPreset())
{
int bestDeviceIndex = DeviceEnumerator::instance()->getBestTxSamplingDeviceIndex(
deviceSetPreset.getSelectedDevice().m_deviceId,
deviceSetPreset.getSelectedDevice().m_deviceSerial,
deviceSetPreset.getSelectedDevice().m_deviceSequence,
deviceSetPreset.getSelectedDevice().m_deviceItemIndex
);
int workspaceIndex = deviceSetPreset.getDeviceWorkspaceIndex() < m_workspaces.size() ?
deviceSetPreset.getDeviceWorkspaceIndex() :
0;
sampleSinkAdd(m_workspaces[workspaceIndex], bestDeviceIndex);
} else if (deviceSetPreset.isMIMOPreset())
{
int bestDeviceIndex = DeviceEnumerator::instance()->getBestMIMOSamplingDeviceIndex(
deviceSetPreset.getSelectedDevice().m_deviceId,
deviceSetPreset.getSelectedDevice().m_deviceSerial,
deviceSetPreset.getSelectedDevice().m_deviceSequence
);
int workspaceIndex = deviceSetPreset.getDeviceWorkspaceIndex() < m_workspaces.size() ?
deviceSetPreset.getDeviceWorkspaceIndex() :
0;
sampleMIMOAdd(m_workspaces[workspaceIndex], bestDeviceIndex);
}
m_deviceUIs.back()->m_deviceGUI->restoreGeometry(deviceSetPreset.getDeviceGeometry());
m_deviceUIs.back()->m_mainSpectrumGUI->restoreGeometry(deviceSetPreset.getSpectrumGeometry());
m_deviceUIs.back()->loadDeviceSetSettings(&deviceSetPreset, m_pluginManager->getPluginAPI(), &m_workspaces, nullptr);
}
// Features
m_featureUIs[0]->loadFeatureSetSettings(&configuration->getFeatureSetPreset(), m_pluginManager->getPluginAPI(), m_apiAdapter, m_workspaces);
m_featureUIs[0]->loadFeatureSetSettings(
&configuration->getFeatureSetPreset(),
m_pluginManager->getPluginAPI(),
m_apiAdapter,
&m_workspaces,
nullptr
);
for (int i = 0; i < m_featureUIs[0]->getNumberOfFeatures(); i++)
{
@@ -1142,6 +1230,18 @@ void MainWindow::saveConfiguration(Configuration *configuration)
);
configuration->clearData();
QList<Preset>& deviceSetPresets = configuration->getDeviceSetPresets();
for (const auto& deviceUISet : m_deviceUIs)
{
deviceSetPresets.push_back(Preset());
deviceUISet->saveDeviceSetSettings(&deviceSetPresets.back());
deviceSetPresets.back().setSpectrumGeometry(deviceUISet->m_mainSpectrumGUI->saveGeometry());
deviceSetPresets.back().setSpectrumWorkspaceIndex(deviceUISet->m_mainSpectrumGUI->getWorkspaceIndex());
deviceSetPresets.back().setDeviceGeometry(deviceUISet->m_deviceGUI->saveGeometry());
deviceSetPresets.back().setDeviceWorkspaceIndex(deviceUISet->m_deviceGUI->getWorkspaceIndex());
}
m_featureUIs[0]->saveFeatureSetSettings(&configuration->getFeatureSetPreset());
for (const auto& workspace : m_workspaces) {
@@ -1279,15 +1379,14 @@ void MainWindow::closeEvent(QCloseEvent *closeEvent)
s.setValue("mainWindowGeometry", qCompress(saveGeometry()).toBase64());
s.setValue("mainWindowState", qCompress(saveState()).toBase64());
// savePresetSettings(m_mainCore->m_settings.getWorkingPreset(), 0);
// saveDeviceSetPresetSettings(m_mainCore->m_settings.getWorkingPreset(), 0);
// saveFeatureSetPresetSettings(m_mainCore->m_settings.getWorkingFeatureSetPreset(), 0);
saveConfiguration(m_mainCore->m_settings.getWorkingConfiguration());
m_mainCore->m_settings.save();
// while (m_deviceUIs.size() > 0)
// {
// removeLastDevice();
// }
while (m_deviceUIs.size() > 0) {
removeLastDevice();
}
closeEvent->accept();
}
@@ -1348,13 +1447,13 @@ QTreeWidgetItem* MainWindow::addPresetToTree(const Preset* preset)
void MainWindow::applySettings()
{
// loadPresetSettings(m_mainCore->m_settings.getWorkingPreset(), 0);
// loadDeviceSetPresetSettings(m_mainCore->m_settings.getWorkingPreset(), 0);
// loadFeatureSetPresetSettings(m_mainCore->m_settings.getWorkingFeatureSetPreset(), 0);
loadConfiguration(m_mainCore->m_settings.getWorkingConfiguration());
m_mainCore->m_settings.sortPresets();
int middleIndex = m_mainCore->m_settings.getPresetCount() / 2;
QTreeWidgetItem *treeItem;
// int middleIndex = m_mainCore->m_settings.getPresetCount() / 2;
// QTreeWidgetItem *treeItem;
// ui->presetTree->clear();
// for (int i = 0; i < m_mainCore->m_settings.getPresetCount(); ++i)
@@ -1381,13 +1480,13 @@ bool MainWindow::handleMessage(const Message& cmd)
if (MainCore::MsgLoadPreset::match(cmd))
{
MainCore::MsgLoadPreset& notif = (MainCore::MsgLoadPreset&) cmd;
loadPresetSettings(notif.getPreset(), notif.getDeviceSetIndex());
loadDeviceSetPresetSettings(notif.getPreset(), notif.getDeviceSetIndex());
return true;
}
else if (MainCore::MsgSavePreset::match(cmd))
{
// MainCore::MsgSavePreset& notif = (MainCore::MsgSavePreset&) cmd;
// savePresetSettings(notif.getPreset(), notif.getDeviceSetIndex());
// saveDeviceSetPresetSettings(notif.getPreset(), notif.getDeviceSetIndex());
// if (notif.isNewPreset()) { ui->presetTree->setCurrentItem(addPresetToTree(notif.getPreset())); }
// m_mainCore->m_settings.sortPresets();
// m_mainCore->m_settings.save();
@@ -1747,7 +1846,7 @@ void MainWindow::on_presetSave_clicked()
// if(dlg.exec() == QDialog::Accepted) {
// Preset* preset = m_mainCore->m_settings.newPreset(dlg.group(), dlg.description());
// savePresetSettings(preset, ui->tabInputsView->currentIndex());
// saveDeviceSetPresetSettings(preset, ui->tabInputsView->currentIndex());
// ui->presetTree->setCurrentItem(addPresetToTree(preset));
// }
@@ -1769,7 +1868,7 @@ void MainWindow::on_presetUpdate_clicked()
// if (preset != 0)
// {
// Preset* preset_mod = const_cast<Preset*>(preset);
// savePresetSettings(preset_mod, ui->tabInputsView->currentIndex());
// saveDeviceSetPresetSettings(preset_mod, ui->tabInputsView->currentIndex());
// changedPreset = preset;
// }
// }
@@ -1943,7 +2042,7 @@ void MainWindow::on_presetImport_clicked()
void MainWindow::on_action_saveAll_triggered()
{
// savePresetSettings(m_mainCore->m_settings.getWorkingPreset(), ui->tabInputsView->currentIndex());
// saveDeviceSetPresetSettings(m_mainCore->m_settings.getWorkingPreset(), ui->tabInputsView->currentIndex());
// saveFeatureSetPresetSettings(m_mainCore->m_settings.getWorkingFeatureSetPreset(), ui->tabFeatures->currentIndex());
saveConfiguration(m_mainCore->m_settings.getWorkingConfiguration());
m_mainCore->m_settings.save();
@@ -1971,7 +2070,7 @@ void MainWindow::on_presetLoad_clicked()
// return;
// }
// loadPresetSettings(preset, ui->tabInputsView->currentIndex());
// loadDeviceSetPresetSettings(preset, ui->tabInputsView->currentIndex());
}
void MainWindow::on_presetDelete_clicked()
@@ -2215,7 +2314,9 @@ void MainWindow::sampleSourceChange(int deviceSetIndex, int newDeviceIndex, Work
deviceUISet->m_deviceAPI->getPluginInterface()->deleteSampleSourcePluginInstanceInput(deviceUISet->m_deviceAPI->getSampleSource());
deviceUISet->m_deviceAPI->clearBuddiesLists(); // clear old API buddies lists
sampleSourceImplement(deviceSetIndex, newDeviceIndex, deviceUISet->m_deviceAPI, deviceUISet, workspace);
sampleSourceCreate(deviceSetIndex, newDeviceIndex, deviceUISet->m_deviceAPI, deviceUISet);
deviceUISet->m_deviceGUI->setWorkspaceIndex(workspace->getIndex());
workspace->addToMdiArea(deviceUISet->m_deviceGUI);
}
}
@@ -2235,7 +2336,9 @@ void MainWindow::sampleSinkChange(int deviceSetIndex, int newDeviceIndex, Worksp
deviceUISet->m_deviceAPI->getPluginInterface()->deleteSampleSinkPluginInstanceOutput(deviceUISet->m_deviceAPI->getSampleSink());
deviceUISet->m_deviceAPI->clearBuddiesLists(); // clear old API buddies lists
sampleSinkImplement(deviceSetIndex, newDeviceIndex, deviceUISet->m_deviceAPI, deviceUISet, workspace);
sampleSourceCreate(deviceSetIndex, newDeviceIndex, deviceUISet->m_deviceAPI, deviceUISet);
deviceUISet->m_deviceGUI->setWorkspaceIndex(workspace->getIndex());
workspace->addToMdiArea(deviceUISet->m_deviceGUI);
}
}
@@ -2254,7 +2357,9 @@ void MainWindow::sampleMIMOChange(int deviceSetIndex, int newDeviceIndex, Worksp
deviceUISet->m_deviceAPI->resetSamplingDeviceId();
deviceUISet->m_deviceAPI->getPluginInterface()->deleteSampleMIMOPluginInstanceMIMO(deviceUISet->m_deviceAPI->getSampleMIMO());
sampleMIMOImplement(deviceSetIndex, deviceSetIndex, deviceUISet->m_deviceAPI, deviceUISet, workspace);
sampleSourceCreate(deviceSetIndex, newDeviceIndex, deviceUISet->m_deviceAPI, deviceUISet);
deviceUISet->m_deviceGUI->setWorkspaceIndex(workspace->getIndex());
workspace->addToMdiArea(deviceUISet->m_deviceGUI);
}
}
@@ -2383,6 +2488,19 @@ void MainWindow::deviceMove(DeviceGUI *gui, int wsIndexDestnation)
m_workspaces[wsIndexDestnation]->addToMdiArea(gui);
}
void MainWindow::mainSpectrumMove(MainSpectrumGUI *gui, int wsIndexDestnation)
{
int wsIndexOrigin = gui->getWorkspaceIndex();
if (wsIndexOrigin == wsIndexDestnation) {
return;
}
m_workspaces[wsIndexOrigin]->removeFromMdiArea(gui);
gui->setWorkspaceIndex(wsIndexDestnation);
m_workspaces[wsIndexDestnation]->addToMdiArea(gui);
}
void MainWindow::openFeaturePresetsDialog(QPoint p, Workspace *workspace)
{
FeaturePresetsDialog dialog;
@@ -2390,7 +2508,8 @@ void MainWindow::openFeaturePresetsDialog(QPoint p, Workspace *workspace)
dialog.setPresets(m_mainCore->m_settings.getFeatureSetPresets());
dialog.setPluginAPI(m_pluginManager->getPluginAPI());
dialog.setWebAPIAdapter(m_apiAdapter);
dialog.setWorkspace(workspace);
dialog.setCurrentWorkspace(workspace);
dialog.setWorkspaces(&m_workspaces);
dialog.populateTree();
dialog.move(p);
dialog.exec();