mirror of https://github.com/f4exb/sdrangel.git
Massive UI revamping (v7): commands dialog
This commit is contained in:
parent
5abef702e4
commit
44a90939ef
|
@ -58,7 +58,7 @@ public:
|
||||||
bool getRelease() const { return m_release; }
|
bool getRelease() const { return m_release; }
|
||||||
QString getKeyLabel() const;
|
QString getKeyLabel() const;
|
||||||
|
|
||||||
void run(const QString& apiAddress, int apiPort, int deviceSetIndex);
|
void run(const QString& apiAddress, int apiPort, int deviceSetIndex = 0);
|
||||||
void kill();
|
void kill();
|
||||||
QProcess::ProcessState getLastProcessState() const;
|
QProcess::ProcessState getLastProcessState() const;
|
||||||
bool getLastProcessError(QProcess::ProcessError& error) const;
|
bool getLastProcessError(QProcess::ProcessError& error) const;
|
||||||
|
|
|
@ -742,6 +742,7 @@ public:
|
||||||
friend class MainServer;
|
friend class MainServer;
|
||||||
friend class MainWindow;
|
friend class MainWindow;
|
||||||
friend class WebAPIAdapter;
|
friend class WebAPIAdapter;
|
||||||
|
friend class CommandsDialog;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void deviceSetAdded(int index, DeviceAPI *device);
|
void deviceSetAdded(int index, DeviceAPI *device);
|
||||||
|
|
|
@ -21,6 +21,7 @@ set(sdrgui_SOURCES
|
||||||
gui/clickablelabel.cpp
|
gui/clickablelabel.cpp
|
||||||
gui/colormapper.cpp
|
gui/colormapper.cpp
|
||||||
gui/commanditem.cpp
|
gui/commanditem.cpp
|
||||||
|
gui/commandsdialog.cpp
|
||||||
gui/commandoutputdialog.cpp
|
gui/commandoutputdialog.cpp
|
||||||
gui/crightclickenabler.cpp
|
gui/crightclickenabler.cpp
|
||||||
gui/customtextedit.cpp
|
gui/customtextedit.cpp
|
||||||
|
@ -117,6 +118,7 @@ set(sdrgui_HEADERS
|
||||||
gui/channelwindow.h
|
gui/channelwindow.h
|
||||||
gui/colormapper.h
|
gui/colormapper.h
|
||||||
gui/commanditem.h
|
gui/commanditem.h
|
||||||
|
gui/commandsdialog.h
|
||||||
gui/commandoutputdialog.h
|
gui/commandoutputdialog.h
|
||||||
gui/crightclickenabler.h
|
gui/crightclickenabler.h
|
||||||
gui/customtextedit.h
|
gui/customtextedit.h
|
||||||
|
@ -208,6 +210,7 @@ set(sdrgui_FORMS
|
||||||
gui/basicdevicesettingsdialog.ui
|
gui/basicdevicesettingsdialog.ui
|
||||||
gui/basicfeaturesettingsdialog.ui
|
gui/basicfeaturesettingsdialog.ui
|
||||||
gui/channeladddialog.ui
|
gui/channeladddialog.ui
|
||||||
|
gui/commandsdialog.ui
|
||||||
gui/commandoutputdialog.ui
|
gui/commandoutputdialog.ui
|
||||||
gui/cwkeyergui.ui
|
gui/cwkeyergui.ui
|
||||||
gui/devicestreamselectiondialog.ui
|
gui/devicestreamselectiondialog.ui
|
||||||
|
|
|
@ -0,0 +1,318 @@
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Copyright (C) 2022 F4EXB //
|
||||||
|
// written by Edouard Griffiths //
|
||||||
|
// //
|
||||||
|
// This program is free software; you can redistribute it and/or modify //
|
||||||
|
// it under the terms of the GNU General Public License as published by //
|
||||||
|
// the Free Software Foundation as version 3 of the License, or //
|
||||||
|
// (at your option) any later version. //
|
||||||
|
// //
|
||||||
|
// This program is distributed in the hope that it will be useful, //
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
|
||||||
|
// GNU General Public License V3 for more details. //
|
||||||
|
// //
|
||||||
|
// You should have received a copy of the GNU General Public License //
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#include <QMessageBox>
|
||||||
|
|
||||||
|
#include "commands/command.h"
|
||||||
|
#include "commands/commandkeyreceiver.h"
|
||||||
|
#include "editcommanddialog.h"
|
||||||
|
#include "addpresetdialog.h"
|
||||||
|
#include "commandoutputdialog.h"
|
||||||
|
#include "commanditem.h"
|
||||||
|
#include "maincore.h"
|
||||||
|
#include "mainwindow.h"
|
||||||
|
|
||||||
|
#include "commandsdialog.h"
|
||||||
|
#include "ui_commandsdialog.h"
|
||||||
|
|
||||||
|
CommandsDialog::CommandsDialog(QWidget* parent) :
|
||||||
|
QDialog(parent),
|
||||||
|
ui(new Ui::CommandsDialog),
|
||||||
|
m_apiHost("127.0.0.1"),
|
||||||
|
m_apiPort(8091),
|
||||||
|
m_commandKeyReceiver(nullptr)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
ui->commandKeyboardConnect->hide(); // FIXME
|
||||||
|
}
|
||||||
|
|
||||||
|
CommandsDialog::~CommandsDialog()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CommandsDialog::populateTree()
|
||||||
|
{
|
||||||
|
MainCore::instance()->m_settings.sortCommands();
|
||||||
|
ui->commandTree->clear();
|
||||||
|
QTreeWidgetItem *treeItem;
|
||||||
|
|
||||||
|
for (int i = 0; i < MainCore::instance()->m_settings.getCommandCount(); ++i) {
|
||||||
|
treeItem = addCommandToTree(MainCore::instance()->m_settings.getCommand(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CommandsDialog::on_commandNew_clicked()
|
||||||
|
{
|
||||||
|
QStringList groups;
|
||||||
|
QString group = "";
|
||||||
|
QString description = "";
|
||||||
|
|
||||||
|
for(int i = 0; i < ui->commandTree->topLevelItemCount(); i++) {
|
||||||
|
groups.append(ui->commandTree->topLevelItem(i)->text(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
QTreeWidgetItem* item = ui->commandTree->currentItem();
|
||||||
|
|
||||||
|
if(item != 0)
|
||||||
|
{
|
||||||
|
if(item->type() == PGroup) {
|
||||||
|
group = item->text(0);
|
||||||
|
} else if(item->type() == PItem) {
|
||||||
|
group = item->parent()->text(0);
|
||||||
|
description = item->text(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Command *command = new Command();
|
||||||
|
command->setGroup(group);
|
||||||
|
command->setDescription(description);
|
||||||
|
EditCommandDialog editCommandDialog(groups, group, this);
|
||||||
|
editCommandDialog.fromCommand(*command);
|
||||||
|
|
||||||
|
if (editCommandDialog.exec() == QDialog::Accepted)
|
||||||
|
{
|
||||||
|
editCommandDialog.toCommand(*command);
|
||||||
|
MainCore::instance()->m_settings.addCommand(command);
|
||||||
|
ui->commandTree->setCurrentItem(addCommandToTree(command));
|
||||||
|
MainCore::instance()->m_settings.sortCommands();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CommandsDialog::on_commandDuplicate_clicked()
|
||||||
|
{
|
||||||
|
QTreeWidgetItem* item = ui->commandTree->currentItem();
|
||||||
|
const Command* command = qvariant_cast<const Command*>(item->data(0, Qt::UserRole));
|
||||||
|
Command *commandCopy = new Command(*command);
|
||||||
|
MainCore::instance()->m_settings.addCommand(commandCopy);
|
||||||
|
ui->commandTree->setCurrentItem(addCommandToTree(commandCopy));
|
||||||
|
MainCore::instance()->m_settings.sortCommands();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CommandsDialog::on_commandEdit_clicked()
|
||||||
|
{
|
||||||
|
QTreeWidgetItem* item = ui->commandTree->currentItem();
|
||||||
|
bool change = false;
|
||||||
|
const Command *changedCommand = 0;
|
||||||
|
QString newGroupName;
|
||||||
|
|
||||||
|
QStringList groups;
|
||||||
|
|
||||||
|
for(int i = 0; i < ui->commandTree->topLevelItemCount(); i++) {
|
||||||
|
groups.append(ui->commandTree->topLevelItem(i)->text(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(item != 0)
|
||||||
|
{
|
||||||
|
if (item->type() == PItem)
|
||||||
|
{
|
||||||
|
const Command* command = qvariant_cast<const Command*>(item->data(0, Qt::UserRole));
|
||||||
|
|
||||||
|
if (command != 0)
|
||||||
|
{
|
||||||
|
EditCommandDialog editCommandDialog(groups, command->getGroup(), this);
|
||||||
|
editCommandDialog.fromCommand(*command);
|
||||||
|
|
||||||
|
if (editCommandDialog.exec() == QDialog::Accepted)
|
||||||
|
{
|
||||||
|
Command* command_mod = const_cast<Command*>(command);
|
||||||
|
editCommandDialog.toCommand(*command_mod);
|
||||||
|
change = true;
|
||||||
|
changedCommand = command;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (item->type() == PGroup)
|
||||||
|
{
|
||||||
|
AddPresetDialog dlg(groups, item->text(0), this);
|
||||||
|
dlg.showGroupOnly();
|
||||||
|
dlg.setDialogTitle("Edit command group");
|
||||||
|
dlg.setDescriptionBoxTitle("Command details");
|
||||||
|
|
||||||
|
if (dlg.exec() == QDialog::Accepted)
|
||||||
|
{
|
||||||
|
MainCore::instance()->m_settings.renameCommandGroup(item->text(0), dlg.group());
|
||||||
|
newGroupName = dlg.group();
|
||||||
|
change = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (change)
|
||||||
|
{
|
||||||
|
MainCore::instance()->m_settings.sortCommands();
|
||||||
|
ui->commandTree->clear();
|
||||||
|
|
||||||
|
for (int i = 0; i < MainCore::instance()->m_settings.getCommandCount(); ++i)
|
||||||
|
{
|
||||||
|
QTreeWidgetItem *item_x = addCommandToTree(MainCore::instance()->m_settings.getCommand(i));
|
||||||
|
const Command* command_x = qvariant_cast<const Command*>(item_x->data(0, Qt::UserRole));
|
||||||
|
if (changedCommand && (command_x == changedCommand)) { // set cursor on changed command
|
||||||
|
ui->commandTree->setCurrentItem(item_x);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!changedCommand) // on group name change set cursor on the group that has been changed
|
||||||
|
{
|
||||||
|
for(int i = 0; i < ui->commandTree->topLevelItemCount(); i++)
|
||||||
|
{
|
||||||
|
QTreeWidgetItem* item = ui->commandTree->topLevelItem(i);
|
||||||
|
|
||||||
|
if (item->text(0) == newGroupName) {
|
||||||
|
ui->commandTree->setCurrentItem(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CommandsDialog::on_commandRun_clicked()
|
||||||
|
{
|
||||||
|
QTreeWidgetItem* item = ui->commandTree->currentItem();
|
||||||
|
|
||||||
|
if (item)
|
||||||
|
{
|
||||||
|
if (item->type() == PItem) // run individual command
|
||||||
|
{
|
||||||
|
const Command* command = qvariant_cast<const Command*>(item->data(0, Qt::UserRole));
|
||||||
|
Command* command_mod = const_cast<Command*>(command);
|
||||||
|
command_mod->run(m_apiHost, m_apiPort);
|
||||||
|
}
|
||||||
|
else if (item->type() == PGroup) // run all commands in this group
|
||||||
|
{
|
||||||
|
QString group = item->text(0);
|
||||||
|
|
||||||
|
for (int i = 0; i < MainCore::instance()->m_settings.getCommandCount(); ++i)
|
||||||
|
{
|
||||||
|
Command *command_mod = const_cast<Command*>(MainCore::instance()->m_settings.getCommand(i));
|
||||||
|
|
||||||
|
if (command_mod->getGroup() == group) {
|
||||||
|
command_mod->run(m_apiHost, m_apiPort);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CommandsDialog::on_commandOutput_clicked()
|
||||||
|
{
|
||||||
|
QTreeWidgetItem* item = ui->commandTree->currentItem();
|
||||||
|
|
||||||
|
if ((item != 0) && (item->type() == PItem))
|
||||||
|
{
|
||||||
|
const Command* command = qvariant_cast<const Command*>(item->data(0, Qt::UserRole));
|
||||||
|
Command* command_mod = const_cast<Command*>(command);
|
||||||
|
CommandOutputDialog commandOutputDialog(*command_mod);
|
||||||
|
commandOutputDialog.exec();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CommandsDialog::on_commandsSave_clicked()
|
||||||
|
{
|
||||||
|
MainCore::instance()->m_settings.save();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CommandsDialog::on_commandDelete_clicked()
|
||||||
|
{
|
||||||
|
QTreeWidgetItem* item = ui->commandTree->currentItem();
|
||||||
|
|
||||||
|
if (item != 0)
|
||||||
|
{
|
||||||
|
if (item->type() == PItem) // delete individual command
|
||||||
|
{
|
||||||
|
const Command* command = qvariant_cast<const Command*>(item->data(0, Qt::UserRole));
|
||||||
|
|
||||||
|
if(command)
|
||||||
|
{
|
||||||
|
if (QMessageBox::question(this,
|
||||||
|
tr("Delete command"),
|
||||||
|
tr("Do you want to delete command '%1'?")
|
||||||
|
.arg(command->getDescription()), QMessageBox::No | QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes)
|
||||||
|
{
|
||||||
|
delete item;
|
||||||
|
MainCore::instance()->m_settings.deleteCommand(command);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (item->type() == PGroup) // delete all commands in this group
|
||||||
|
{
|
||||||
|
if (QMessageBox::question(this,
|
||||||
|
tr("Delete command group"),
|
||||||
|
tr("Do you want to delete command group '%1'?")
|
||||||
|
.arg(item->text(0)), QMessageBox::No | QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes)
|
||||||
|
{
|
||||||
|
MainCore::instance()->m_settings.deleteCommandGroup(item->text(0));
|
||||||
|
|
||||||
|
ui->commandTree->clear();
|
||||||
|
|
||||||
|
for (int i = 0; i < MainCore::instance()->m_settings.getCommandCount(); ++i) {
|
||||||
|
addCommandToTree(MainCore::instance()->m_settings.getCommand(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CommandsDialog::on_commandKeyboardConnect_toggled(bool checked)
|
||||||
|
{
|
||||||
|
qDebug("CommandsDialog::on_commandKeyboardConnect_toggled: %s", checked ? "true" : "false");
|
||||||
|
|
||||||
|
if (checked) {
|
||||||
|
MainWindow::getInstance()->commandKeysConnect(MainWindow::getInstance(), SLOT(commandKeyPressed(Qt::Key, Qt::KeyboardModifiers, bool)));
|
||||||
|
} else {
|
||||||
|
MainWindow::getInstance()->commandKeysDisconnect(MainWindow::getInstance(), SLOT(commandKeyPressed(Qt::Key, Qt::KeyboardModifiers, bool)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QTreeWidgetItem* CommandsDialog::addCommandToTree(const Command* command)
|
||||||
|
{
|
||||||
|
QTreeWidgetItem* group = 0;
|
||||||
|
|
||||||
|
for(int i = 0; i < ui->commandTree->topLevelItemCount(); i++)
|
||||||
|
{
|
||||||
|
if(ui->commandTree->topLevelItem(i)->text(0) == command->getGroup())
|
||||||
|
{
|
||||||
|
group = ui->commandTree->topLevelItem(i);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(group == 0)
|
||||||
|
{
|
||||||
|
QStringList sl;
|
||||||
|
sl.append(command->getGroup());
|
||||||
|
group = new QTreeWidgetItem(ui->commandTree, sl, PGroup);
|
||||||
|
group->setFirstColumnSpanned(true);
|
||||||
|
group->setExpanded(true);
|
||||||
|
ui->commandTree->sortByColumn(0, Qt::AscendingOrder);
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList sl;
|
||||||
|
sl.append(QString("%1").arg(command->getDescription())); // Descriptions column
|
||||||
|
sl.append(QString("%1").arg(command->getAssociateKey() ? command->getRelease() ? "R" : "P" : "-")); // key press/release column
|
||||||
|
sl.append(QString("%1").arg(command->getKeyLabel())); // key column
|
||||||
|
CommandItem* item = new CommandItem(group, sl, command->getDescription(), PItem);
|
||||||
|
item->setData(0, Qt::UserRole, QVariant::fromValue(command));
|
||||||
|
item->setTextAlignment(0, Qt::AlignLeft);
|
||||||
|
ui->commandTree->resizeColumnToContents(0); // Resize description column to minimum
|
||||||
|
ui->commandTree->resizeColumnToContents(1); // Resize key column to minimum
|
||||||
|
ui->commandTree->resizeColumnToContents(2); // Resize key press/release column to minimum
|
||||||
|
|
||||||
|
//updatePresetControls();
|
||||||
|
return item;
|
||||||
|
}
|
|
@ -0,0 +1,68 @@
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Copyright (C) 2022 F4EXB //
|
||||||
|
// written by Edouard Griffiths //
|
||||||
|
// //
|
||||||
|
// This program is free software; you can redistribute it and/or modify //
|
||||||
|
// it under the terms of the GNU General Public License as published by //
|
||||||
|
// the Free Software Foundation as version 3 of the License, or //
|
||||||
|
// (at your option) any later version. //
|
||||||
|
// //
|
||||||
|
// This program is distributed in the hope that it will be useful, //
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
|
||||||
|
// GNU General Public License V3 for more details. //
|
||||||
|
// //
|
||||||
|
// You should have received a copy of the GNU General Public License //
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifndef SDRGUI_GUI_COMMANDSDIALOG_H_
|
||||||
|
#define SDRGUI_GUI_COMMANDSDIALOG_H_
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
|
||||||
|
#include "export.h"
|
||||||
|
|
||||||
|
class CommandKeyReceiver;
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class CommandsDialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
class SDRGUI_API CommandsDialog : public QDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit CommandsDialog(QWidget* parent = nullptr);
|
||||||
|
~CommandsDialog();
|
||||||
|
|
||||||
|
void setApiHost(const QString& apiHost) { m_apiHost = apiHost; }
|
||||||
|
void setApiPort(int apiPort) { m_apiPort = apiPort; }
|
||||||
|
void setCommandKeyReceiver(CommandKeyReceiver *commandKeyReceiver) { m_commandKeyReceiver = commandKeyReceiver; }
|
||||||
|
void populateTree();
|
||||||
|
|
||||||
|
private:
|
||||||
|
enum {
|
||||||
|
PGroup,
|
||||||
|
PItem
|
||||||
|
};
|
||||||
|
|
||||||
|
Ui::CommandsDialog* ui;
|
||||||
|
QString m_apiHost;
|
||||||
|
int m_apiPort;
|
||||||
|
CommandKeyReceiver *m_commandKeyReceiver;
|
||||||
|
|
||||||
|
QTreeWidgetItem* addCommandToTree(const Command* command);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void on_commandNew_clicked();
|
||||||
|
void on_commandDuplicate_clicked();
|
||||||
|
void on_commandEdit_clicked();
|
||||||
|
void on_commandRun_clicked();
|
||||||
|
void on_commandOutput_clicked();
|
||||||
|
void on_commandsSave_clicked();
|
||||||
|
void on_commandDelete_clicked();
|
||||||
|
void on_commandKeyboardConnect_toggled(bool checked);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // SDRGUI_GUI_COMMANDSDIALOG_H_
|
|
@ -0,0 +1,252 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>CommandsDialog</class>
|
||||||
|
<widget class="QDialog" name="CommandsDialog">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>400</width>
|
||||||
|
<height>300</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<family>Liberation Sans</family>
|
||||||
|
<pointsize>9</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Commands</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QTreeWidget" name="commandTree">
|
||||||
|
<property name="indentation">
|
||||||
|
<number>5</number>
|
||||||
|
</property>
|
||||||
|
<property name="allColumnsShowFocus">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="columnCount">
|
||||||
|
<number>3</number>
|
||||||
|
</property>
|
||||||
|
<attribute name="headerMinimumSectionSize">
|
||||||
|
<number>5</number>
|
||||||
|
</attribute>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Description</string>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>P/R</string>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Key</string>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="commandsControl">
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="commandNew">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Create new command</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../resources/res.qrc">
|
||||||
|
<normaloff>:/create.png</normaloff>:/create.png</iconset>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="commandDuplicate">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Duplicate command</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../resources/res.qrc">
|
||||||
|
<normaloff>:/duplicate.png</normaloff>:/duplicate.png</iconset>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="commandEdit">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Edit command details</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../resources/res.qrc">
|
||||||
|
<normaloff>:/edit.png</normaloff>:/edit.png</iconset>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="commandRun">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Run command</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../resources/res.qrc">
|
||||||
|
<normaloff>:/play.png</normaloff>:/play.png</iconset>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="commandOutput">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>View last run status and output</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../resources/res.qrc">
|
||||||
|
<normaloff>:/listing.png</normaloff>:/listing.png</iconset>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="commandsSave">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Save commands in settings</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../resources/res.qrc">
|
||||||
|
<normaloff>:/save.png</normaloff>:/save.png</iconset>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_3">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="commandDelete">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Delete selected command</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../resources/res.qrc">
|
||||||
|
<normaloff>:/bin.png</normaloff>:/bin.png</iconset>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_4">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="ButtonSwitch" name="commandKeyboardConnect">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Toggle keyboard to command connection</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../resources/res.qrc">
|
||||||
|
<normaloff>:/keyboard.png</normaloff>:/keyboard.png</iconset>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="standardButtons">
|
||||||
|
<set>QDialogButtonBox::Close</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<customwidgets>
|
||||||
|
<customwidget>
|
||||||
|
<class>ButtonSwitch</class>
|
||||||
|
<extends>QToolButton</extends>
|
||||||
|
<header>gui/buttonswitch.h</header>
|
||||||
|
</customwidget>
|
||||||
|
</customwidgets>
|
||||||
|
<resources>
|
||||||
|
<include location="../resources/res.qrc"/>
|
||||||
|
</resources>
|
||||||
|
<connections>
|
||||||
|
<connection>
|
||||||
|
<sender>buttonBox</sender>
|
||||||
|
<signal>accepted()</signal>
|
||||||
|
<receiver>CommandsDialog</receiver>
|
||||||
|
<slot>accept()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>248</x>
|
||||||
|
<y>254</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>157</x>
|
||||||
|
<y>274</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>buttonBox</sender>
|
||||||
|
<signal>rejected()</signal>
|
||||||
|
<receiver>CommandsDialog</receiver>
|
||||||
|
<slot>reject()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>316</x>
|
||||||
|
<y>260</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>286</x>
|
||||||
|
<y>274</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
</connections>
|
||||||
|
</ui>
|
|
@ -30,6 +30,7 @@
|
||||||
#include <QFontDatabase>
|
#include <QFontDatabase>
|
||||||
#include <QStandardPaths>
|
#include <QStandardPaths>
|
||||||
#include <QDesktopServices>
|
#include <QDesktopServices>
|
||||||
|
#include <QProcess>
|
||||||
|
|
||||||
#include <QAction>
|
#include <QAction>
|
||||||
#include <QMenuBar>
|
#include <QMenuBar>
|
||||||
|
@ -49,10 +50,7 @@
|
||||||
#include "commands/commandkeyreceiver.h"
|
#include "commands/commandkeyreceiver.h"
|
||||||
#include "gui/indicator.h"
|
#include "gui/indicator.h"
|
||||||
#include "gui/presetitem.h"
|
#include "gui/presetitem.h"
|
||||||
#include "gui/commanditem.h"
|
|
||||||
#include "gui/addpresetdialog.h"
|
#include "gui/addpresetdialog.h"
|
||||||
#include "gui/editcommanddialog.h"
|
|
||||||
#include "gui/commandoutputdialog.h"
|
|
||||||
#include "gui/pluginsdialog.h"
|
#include "gui/pluginsdialog.h"
|
||||||
#include "gui/aboutdialog.h"
|
#include "gui/aboutdialog.h"
|
||||||
#include "gui/rollupwidget.h"
|
#include "gui/rollupwidget.h"
|
||||||
|
@ -67,6 +65,7 @@
|
||||||
#include "gui/ambedevicesdialog.h"
|
#include "gui/ambedevicesdialog.h"
|
||||||
#include "gui/workspace.h"
|
#include "gui/workspace.h"
|
||||||
#include "gui/featurepresetsdialog.h"
|
#include "gui/featurepresetsdialog.h"
|
||||||
|
#include "gui/commandsdialog.h"
|
||||||
#include "dsp/dspengine.h"
|
#include "dsp/dspengine.h"
|
||||||
#include "dsp/spectrumvis.h"
|
#include "dsp/spectrumvis.h"
|
||||||
#include "dsp/dspcommands.h"
|
#include "dsp/dspcommands.h"
|
||||||
|
@ -975,6 +974,9 @@ void MainWindow::createMenuBar()
|
||||||
QAction *userArgumentsAction = devicesMenu->addAction("User arguments");
|
QAction *userArgumentsAction = devicesMenu->addAction("User arguments");
|
||||||
userArgumentsAction->setToolTip("Device custom user arguments");
|
userArgumentsAction->setToolTip("Device custom user arguments");
|
||||||
QObject::connect(userArgumentsAction, &QAction::triggered, this, &MainWindow::on_action_DeviceUserArguments_triggered);
|
QObject::connect(userArgumentsAction, &QAction::triggered, this, &MainWindow::on_action_DeviceUserArguments_triggered);
|
||||||
|
QAction *commandsAction = preferencesMenu->addAction("Commands");
|
||||||
|
commandsAction->setToolTip("External commands dialog");
|
||||||
|
QObject::connect(commandsAction, &QAction::triggered, this, &MainWindow::on_action_commands_triggered);
|
||||||
|
|
||||||
QMenu *helpMenu = menuBar->addMenu("Help");
|
QMenu *helpMenu = menuBar->addMenu("Help");
|
||||||
QAction *quickStartAction = helpMenu->addAction("Quick start");
|
QAction *quickStartAction = helpMenu->addAction("Quick start");
|
||||||
|
@ -1427,245 +1429,25 @@ void MainWindow::on_action_View_Fullscreen_toggled(bool checked)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_commandNew_clicked()
|
|
||||||
{
|
|
||||||
// QStringList groups;
|
|
||||||
// QString group = "";
|
|
||||||
// QString description = "";
|
|
||||||
|
|
||||||
// for(int i = 0; i < ui->commandTree->topLevelItemCount(); i++) {
|
|
||||||
// groups.append(ui->commandTree->topLevelItem(i)->text(0));
|
|
||||||
// }
|
|
||||||
|
|
||||||
// QTreeWidgetItem* item = ui->commandTree->currentItem();
|
|
||||||
|
|
||||||
// if(item != 0)
|
|
||||||
// {
|
|
||||||
// if(item->type() == PGroup) {
|
|
||||||
// group = item->text(0);
|
|
||||||
// } else if(item->type() == PItem) {
|
|
||||||
// group = item->parent()->text(0);
|
|
||||||
// description = item->text(0);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// Command *command = new Command();
|
|
||||||
// command->setGroup(group);
|
|
||||||
// command->setDescription(description);
|
|
||||||
// EditCommandDialog editCommandDialog(groups, group, this);
|
|
||||||
// editCommandDialog.fromCommand(*command);
|
|
||||||
|
|
||||||
// if (editCommandDialog.exec() == QDialog::Accepted)
|
|
||||||
// {
|
|
||||||
// editCommandDialog.toCommand(*command);
|
|
||||||
// m_mainCore->m_settings.addCommand(command);
|
|
||||||
// ui->commandTree->setCurrentItem(addCommandToTree(command));
|
|
||||||
// m_mainCore->m_settings.sortCommands();
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::on_commandDuplicate_clicked()
|
|
||||||
{
|
|
||||||
// QTreeWidgetItem* item = ui->commandTree->currentItem();
|
|
||||||
// const Command* command = qvariant_cast<const Command*>(item->data(0, Qt::UserRole));
|
|
||||||
// Command *commandCopy = new Command(*command);
|
|
||||||
// m_mainCore->m_settings.addCommand(commandCopy);
|
|
||||||
// ui->commandTree->setCurrentItem(addCommandToTree(commandCopy));
|
|
||||||
// m_mainCore->m_settings.sortCommands();
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::on_commandEdit_clicked()
|
|
||||||
{
|
|
||||||
// QTreeWidgetItem* item = ui->commandTree->currentItem();
|
|
||||||
// bool change = false;
|
|
||||||
// const Command *changedCommand = 0;
|
|
||||||
// QString newGroupName;
|
|
||||||
|
|
||||||
// QStringList groups;
|
|
||||||
|
|
||||||
// for(int i = 0; i < ui->commandTree->topLevelItemCount(); i++) {
|
|
||||||
// groups.append(ui->commandTree->topLevelItem(i)->text(0));
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if(item != 0)
|
|
||||||
// {
|
|
||||||
// if (item->type() == PItem)
|
|
||||||
// {
|
|
||||||
// const Command* command = qvariant_cast<const Command*>(item->data(0, Qt::UserRole));
|
|
||||||
|
|
||||||
// if (command != 0)
|
|
||||||
// {
|
|
||||||
// EditCommandDialog editCommandDialog(groups, command->getGroup(), this);
|
|
||||||
// editCommandDialog.fromCommand(*command);
|
|
||||||
|
|
||||||
// if (editCommandDialog.exec() == QDialog::Accepted)
|
|
||||||
// {
|
|
||||||
// Command* command_mod = const_cast<Command*>(command);
|
|
||||||
// editCommandDialog.toCommand(*command_mod);
|
|
||||||
// change = true;
|
|
||||||
// changedCommand = command;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// else if (item->type() == PGroup)
|
|
||||||
// {
|
|
||||||
// AddPresetDialog dlg(groups, item->text(0), this);
|
|
||||||
// dlg.showGroupOnly();
|
|
||||||
// dlg.setDialogTitle("Edit command group");
|
|
||||||
// dlg.setDescriptionBoxTitle("Command details");
|
|
||||||
|
|
||||||
// if (dlg.exec() == QDialog::Accepted)
|
|
||||||
// {
|
|
||||||
// m_mainCore->m_settings.renameCommandGroup(item->text(0), dlg.group());
|
|
||||||
// newGroupName = dlg.group();
|
|
||||||
// change = true;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if (change)
|
|
||||||
// {
|
|
||||||
// m_mainCore->m_settings.sortCommands();
|
|
||||||
// ui->commandTree->clear();
|
|
||||||
|
|
||||||
// for (int i = 0; i < m_mainCore->m_settings.getCommandCount(); ++i)
|
|
||||||
// {
|
|
||||||
// QTreeWidgetItem *item_x = addCommandToTree(m_mainCore->m_settings.getCommand(i));
|
|
||||||
// const Command* command_x = qvariant_cast<const Command*>(item_x->data(0, Qt::UserRole));
|
|
||||||
// if (changedCommand && (command_x == changedCommand)) { // set cursor on changed command
|
|
||||||
// ui->commandTree->setCurrentItem(item_x);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if (!changedCommand) // on group name change set cursor on the group that has been changed
|
|
||||||
// {
|
|
||||||
// for(int i = 0; i < ui->commandTree->topLevelItemCount(); i++)
|
|
||||||
// {
|
|
||||||
// QTreeWidgetItem* item = ui->commandTree->topLevelItem(i);
|
|
||||||
|
|
||||||
// if (item->text(0) == newGroupName) {
|
|
||||||
// ui->commandTree->setCurrentItem(item);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::on_commandDelete_clicked()
|
|
||||||
{
|
|
||||||
// QTreeWidgetItem* item = ui->commandTree->currentItem();
|
|
||||||
|
|
||||||
// if (item != 0)
|
|
||||||
// {
|
|
||||||
// if (item->type() == PItem) // delete individual command
|
|
||||||
// {
|
|
||||||
// const Command* command = qvariant_cast<const Command*>(item->data(0, Qt::UserRole));
|
|
||||||
|
|
||||||
// if(command)
|
|
||||||
// {
|
|
||||||
// if (QMessageBox::question(this,
|
|
||||||
// tr("Delete command"),
|
|
||||||
// tr("Do you want to delete command '%1'?")
|
|
||||||
// .arg(command->getDescription()), QMessageBox::No | QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes)
|
|
||||||
// {
|
|
||||||
// delete item;
|
|
||||||
// m_mainCore->m_settings.deleteCommand(command);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// else if (item->type() == PGroup) // delete all commands in this group
|
|
||||||
// {
|
|
||||||
// if (QMessageBox::question(this,
|
|
||||||
// tr("Delete command group"),
|
|
||||||
// tr("Do you want to delete command group '%1'?")
|
|
||||||
// .arg(item->text(0)), QMessageBox::No | QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes)
|
|
||||||
// {
|
|
||||||
// m_mainCore->m_settings.deleteCommandGroup(item->text(0));
|
|
||||||
|
|
||||||
// ui->commandTree->clear();
|
|
||||||
|
|
||||||
// for (int i = 0; i < m_mainCore->m_settings.getCommandCount(); ++i) {
|
|
||||||
// addCommandToTree(m_mainCore->m_settings.getCommand(i));
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::on_commandRun_clicked()
|
|
||||||
{
|
|
||||||
// QTreeWidgetItem* item = ui->commandTree->currentItem();
|
|
||||||
|
|
||||||
// if (item != 0)
|
|
||||||
// {
|
|
||||||
// int currentDeviceSetIndex = ui->tabInputsView->currentIndex();
|
|
||||||
|
|
||||||
// if (item->type() == PItem) // run individual command
|
|
||||||
// {
|
|
||||||
// const Command* command = qvariant_cast<const Command*>(item->data(0, Qt::UserRole));
|
|
||||||
// Command* command_mod = const_cast<Command*>(command);
|
|
||||||
// command_mod->run(m_apiServer->getHost(), m_apiServer->getPort(), currentDeviceSetIndex);
|
|
||||||
// }
|
|
||||||
// else if (item->type() == PGroup) // run all commands in this group
|
|
||||||
// {
|
|
||||||
// QString group = item->text(0);
|
|
||||||
|
|
||||||
// for (int i = 0; i < m_mainCore->m_settings.getCommandCount(); ++i)
|
|
||||||
// {
|
|
||||||
// Command *command_mod = const_cast<Command*>(m_mainCore->m_settings.getCommand(i));
|
|
||||||
|
|
||||||
// if (command_mod->getGroup() == group) {
|
|
||||||
// command_mod->run(m_apiServer->getHost(), m_apiServer->getPort(), currentDeviceSetIndex);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::on_commandOutput_clicked()
|
|
||||||
{
|
|
||||||
// QTreeWidgetItem* item = ui->commandTree->currentItem();
|
|
||||||
|
|
||||||
// if ((item != 0) && (item->type() == PItem))
|
|
||||||
// {
|
|
||||||
// const Command* command = qvariant_cast<const Command*>(item->data(0, Qt::UserRole));
|
|
||||||
// Command* command_mod = const_cast<Command*>(command);
|
|
||||||
// CommandOutputDialog commandOutputDialog(*command_mod);
|
|
||||||
// commandOutputDialog.exec();
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::on_commandsSave_clicked()
|
|
||||||
{
|
|
||||||
saveCommandSettings();
|
|
||||||
m_mainCore->m_settings.save();
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::commandKeysConnect(QObject *object, const char *slot)
|
void MainWindow::commandKeysConnect(QObject *object, const char *slot)
|
||||||
{
|
{
|
||||||
setFocus();
|
setFocus();
|
||||||
connect(m_commandKeyReceiver, SIGNAL(capturedKey(Qt::Key, Qt::KeyboardModifiers, bool)),
|
connect(
|
||||||
object, slot);
|
m_commandKeyReceiver,
|
||||||
|
SIGNAL(capturedKey(Qt::Key, Qt::KeyboardModifiers, bool)),
|
||||||
|
object,
|
||||||
|
slot
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::commandKeysDisconnect(QObject *object, const char *slot)
|
void MainWindow::commandKeysDisconnect(QObject *object, const char *slot)
|
||||||
{
|
{
|
||||||
disconnect(m_commandKeyReceiver, SIGNAL(capturedKey(Qt::Key, Qt::KeyboardModifiers, bool)),
|
disconnect(
|
||||||
object, slot);
|
m_commandKeyReceiver,
|
||||||
}
|
SIGNAL(capturedKey(Qt::Key, Qt::KeyboardModifiers, bool)),
|
||||||
|
object,
|
||||||
void MainWindow::on_commandKeyboardConnect_toggled(bool checked)
|
slot
|
||||||
{
|
);
|
||||||
qDebug("on_commandKeyboardConnect_toggled: %s", checked ? "true" : "false");
|
|
||||||
|
|
||||||
if (checked)
|
|
||||||
{
|
|
||||||
commandKeysConnect(this, SLOT(commandKeyPressed(Qt::Key, Qt::KeyboardModifiers, bool)));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
commandKeysDisconnect(this, SLOT(commandKeyPressed(Qt::Key, Qt::KeyboardModifiers, bool)));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_presetSave_clicked()
|
void MainWindow::on_presetSave_clicked()
|
||||||
|
@ -2021,6 +1803,17 @@ void MainWindow::on_action_DeviceUserArguments_triggered()
|
||||||
deviceUserArgsDialog.exec();
|
deviceUserArgsDialog.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_action_commands_triggered()
|
||||||
|
{
|
||||||
|
qDebug("MainWindow::on_action_commands_triggered");
|
||||||
|
CommandsDialog commandsDialog(this);
|
||||||
|
commandsDialog.setApiHost(m_apiServer->getHost());
|
||||||
|
commandsDialog.setApiPort(m_apiServer->getPort());
|
||||||
|
commandsDialog.setCommandKeyReceiver(m_commandKeyReceiver);
|
||||||
|
commandsDialog.populateTree();
|
||||||
|
commandsDialog.exec();
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::on_action_FFT_triggered()
|
void MainWindow::on_action_FFT_triggered()
|
||||||
{
|
{
|
||||||
qDebug("MainWindow::on_action_FFT_triggered");
|
qDebug("MainWindow::on_action_FFT_triggered");
|
||||||
|
@ -2659,22 +2452,22 @@ void MainWindow::updateStatus()
|
||||||
|
|
||||||
void MainWindow::commandKeyPressed(Qt::Key key, Qt::KeyboardModifiers keyModifiers, bool release)
|
void MainWindow::commandKeyPressed(Qt::Key key, Qt::KeyboardModifiers keyModifiers, bool release)
|
||||||
{
|
{
|
||||||
//qDebug("MainWindow::commandKeyPressed: key: %x mod: %x %s", (int) key, (int) keyModifiers, release ? "release" : "press");
|
qDebug("MainWindow::commandKeyPressed: key: %x mod: %x %s", (int) key, (int) keyModifiers, release ? "release" : "press");
|
||||||
// int currentDeviceSetIndex = ui->tabInputsView->currentIndex();
|
int currentDeviceSetIndex = 0;
|
||||||
|
|
||||||
// for (int i = 0; i < m_mainCore->m_settings.getCommandCount(); ++i)
|
for (int i = 0; i < m_mainCore->m_settings.getCommandCount(); ++i)
|
||||||
// {
|
{
|
||||||
// const Command* command = m_mainCore->m_settings.getCommand(i);
|
const Command* command = m_mainCore->m_settings.getCommand(i);
|
||||||
|
|
||||||
// if (command->getAssociateKey()
|
if (command->getAssociateKey()
|
||||||
// && (command->getRelease() == release)
|
&& (command->getRelease() == release)
|
||||||
// && (command->getKey() == key)
|
&& (command->getKey() == key)
|
||||||
// && (command->getKeyModifiers() == keyModifiers))
|
&& (command->getKeyModifiers() == keyModifiers))
|
||||||
// {
|
{
|
||||||
// Command* command_mod = const_cast<Command*>(command);
|
Command* command_mod = const_cast<Command*>(command);
|
||||||
// command_mod->run(m_apiServer->getHost(), m_apiServer->getPort(), currentDeviceSetIndex);
|
command_mod->run(m_apiServer->getHost(), m_apiServer->getPort(), currentDeviceSetIndex);
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::restoreDeviceTabs()
|
void MainWindow::restoreDeviceTabs()
|
||||||
|
|
|
@ -174,14 +174,6 @@ private slots:
|
||||||
void on_presetDelete_clicked();
|
void on_presetDelete_clicked();
|
||||||
void on_presetTree_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
|
void on_presetTree_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
|
||||||
void on_presetTree_itemActivated(QTreeWidgetItem *item, int column);
|
void on_presetTree_itemActivated(QTreeWidgetItem *item, int column);
|
||||||
void on_commandNew_clicked();
|
|
||||||
void on_commandDuplicate_clicked();
|
|
||||||
void on_commandEdit_clicked();
|
|
||||||
void on_commandDelete_clicked();
|
|
||||||
void on_commandRun_clicked();
|
|
||||||
void on_commandOutput_clicked();
|
|
||||||
void on_commandsSave_clicked();
|
|
||||||
void on_commandKeyboardConnect_toggled(bool checked);
|
|
||||||
void on_action_Audio_triggered();
|
void on_action_Audio_triggered();
|
||||||
void on_action_Logging_triggered();
|
void on_action_Logging_triggered();
|
||||||
void on_action_FFT_triggered();
|
void on_action_FFT_triggered();
|
||||||
|
@ -189,6 +181,7 @@ private slots:
|
||||||
void on_action_LimeRFE_triggered();
|
void on_action_LimeRFE_triggered();
|
||||||
void on_action_My_Position_triggered();
|
void on_action_My_Position_triggered();
|
||||||
void on_action_DeviceUserArguments_triggered();
|
void on_action_DeviceUserArguments_triggered();
|
||||||
|
void on_action_commands_triggered();
|
||||||
void samplingDeviceChanged(int deviceType, int tabIndex, int newDeviceIndex);
|
void samplingDeviceChanged(int deviceType, int tabIndex, int newDeviceIndex);
|
||||||
void channelAddClicked(int channelIndex);
|
void channelAddClicked(int channelIndex);
|
||||||
void featureAddClicked(Workspace *workspace, int featureIndex);
|
void featureAddClicked(Workspace *workspace, int featureIndex);
|
||||||
|
|
Loading…
Reference in New Issue