@@ -372,19 +372,19 @@ IF( WIN32 )
|
||||
"C:/Programs/NSIS"
|
||||
)
|
||||
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_BINARY_DIR}/companionInstall.exe
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_BINARY_DIR}/companion-windows.exe
|
||||
COMMAND "${NSIS_EXE}" ARGS companion.nsi
|
||||
DEPENDS companion simulator opentx-simulators ${PROJECT_BINARY_DIR}/companion.nsi
|
||||
COMMENT "Companion Windows NSIS Installer")
|
||||
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_BINARY_DIR}/simulatorInstall.exe
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_BINARY_DIR}/simulator-install.exe
|
||||
COMMAND "${NSIS_EXE}" ARGS simulator.nsi
|
||||
DEPENDS simulator opentx-simulators ${PROJECT_BINARY_DIR}/simulator.nsi
|
||||
COMMENT "Simulator Windows NSIS Installer")
|
||||
|
||||
ADD_CUSTOM_TARGET( installer
|
||||
DEPENDS ${PROJECT_BINARY_DIR}/companionInstall.exe
|
||||
DEPENDS ${PROJECT_BINARY_DIR}/simulatorInstall.exe
|
||||
DEPENDS ${PROJECT_BINARY_DIR}/companion-windows.exe
|
||||
DEPENDS ${PROJECT_BINARY_DIR}/simulator-windows.exe
|
||||
SOURCES ${PROJECT_BINARY_DIR}/companion.nsi
|
||||
SOURCES ${PROJECT_BINARY_DIR}/simulator.nsi
|
||||
)
|
||||
|
||||
@@ -132,7 +132,7 @@ QString SensorData::unitString() const
|
||||
return QObject::tr("mAh");
|
||||
case UNIT_WATTS:
|
||||
return QObject::tr("W");
|
||||
case UNIT_DBM:
|
||||
case UNIT_DB:
|
||||
return QObject::tr("dB");
|
||||
case UNIT_RPMS:
|
||||
return QObject::tr("rpms");
|
||||
|
||||
@@ -913,7 +913,7 @@ class SensorData {
|
||||
UNIT_PERCENT,
|
||||
UNIT_MAH,
|
||||
UNIT_WATTS,
|
||||
UNIT_DBM,
|
||||
UNIT_DB,
|
||||
UNIT_RPMS,
|
||||
UNIT_G,
|
||||
UNIT_DEGREE,
|
||||
@@ -1312,6 +1312,7 @@ enum Capability {
|
||||
LCDWidth,
|
||||
GetThrSwitch,
|
||||
HasDisplayText,
|
||||
GlobalFunctions,
|
||||
VirtualInputs,
|
||||
TrainerInputs,
|
||||
RtcTime,
|
||||
|
||||
@@ -604,10 +604,8 @@ int OpenTxFirmware::getCapability(const Capability capability)
|
||||
else
|
||||
return 9;
|
||||
case CustomFunctions:
|
||||
if (IS_TARANIS(board))
|
||||
if (IS_ARM(board))
|
||||
return 64;
|
||||
else if (IS_ARM(board))
|
||||
return 60;
|
||||
else if (IS_2560(board) || board==BOARD_M128)
|
||||
return 24;
|
||||
else
|
||||
@@ -731,6 +729,8 @@ int OpenTxFirmware::getCapability(const Capability capability)
|
||||
return (IS_TARANIS(board) ? SWITCH_SF1 : SWITCH_THR) ;
|
||||
case HasDisplayText:
|
||||
return IS_ARM(board) ? 1 : 0;
|
||||
case GlobalFunctions:
|
||||
return IS_ARM(board) ? 64 : 0;
|
||||
case VirtualInputs:
|
||||
return IS_TARANIS(board) ? 32 : 0;
|
||||
case TrainerInputs:
|
||||
|
||||
@@ -8,14 +8,14 @@
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
logsDialog::logsDialog(QWidget *parent) :
|
||||
QDialog(parent, Qt::WindowTitleHint | Qt::WindowSystemMenuHint),
|
||||
ui(new Ui::logsDialog)
|
||||
LogsDialog::LogsDialog(QWidget *parent) :
|
||||
QDialog(parent, Qt::WindowTitleHint | Qt::WindowSystemMenuHint),
|
||||
ui(new Ui::LogsDialog)
|
||||
{
|
||||
csvlog.clear();
|
||||
|
||||
ui->setupUi(this);
|
||||
this->setWindowIcon(CompanionIcon("logs.png"));
|
||||
setWindowIcon(CompanionIcon("logs.png"));
|
||||
|
||||
plotLock=false;
|
||||
|
||||
@@ -36,26 +36,20 @@ logsDialog::logsDialog(QWidget *parent) :
|
||||
// create and prepare a plot title layout element
|
||||
QCPPlotTitle *title = new QCPPlotTitle(ui->customPlot);
|
||||
title->setText(tr("Telemetry logs"));
|
||||
// title->setFont(QFont("sans", 12, QFont::Bold));
|
||||
|
||||
// add it to the main plot layout
|
||||
ui->customPlot->plotLayout()->insertRow(0);
|
||||
ui->customPlot->plotLayout()->addElement(0, 0, title);
|
||||
|
||||
ui->customPlot->setNoAntialiasingOnDrag(true);
|
||||
|
||||
ui->customPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom |
|
||||
QCP::iSelectAxes | QCP::iSelectLegend | QCP::iSelectPlottables);
|
||||
ui->customPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectAxes | QCP::iSelectLegend | QCP::iSelectPlottables);
|
||||
|
||||
axisRect = ui->customPlot->axisRect();
|
||||
axisRect->axis(QCPAxis::atBottom)->setLabel(tr("Time (hh:mm:ss)"));
|
||||
axisRect->axis(QCPAxis::atBottom)->setTickLabelType(QCPAxis::ltDateTime);
|
||||
axisRect->axis(QCPAxis::atBottom)->setDateTimeFormat("hh:mm:ss");
|
||||
QDateTime now = QDateTime::currentDateTime();
|
||||
axisRect->axis(QCPAxis::atBottom)->setRange(now.addSecs(-60*60*2).toTime_t(),
|
||||
now.toTime_t());
|
||||
|
||||
axisRect->axis(QCPAxis::atBottom)->setRange(now.addSecs(-60*60*2).toTime_t(), now.toTime_t());
|
||||
axisRect->axis(QCPAxis::atLeft)->setTickLabels(false);
|
||||
|
||||
axisRect->addAxis(QCPAxis::atLeft);
|
||||
axisRect->addAxis(QCPAxis::atRight);
|
||||
axisRect->axis(QCPAxis::atLeft, 1)->setVisible(false);
|
||||
@@ -76,8 +70,8 @@ logsDialog::logsDialog(QWidget *parent) :
|
||||
|
||||
ui->customPlot->setAutoAddPlottableToLegend(false);
|
||||
|
||||
QString Path=g.gePath();
|
||||
if (Path.isEmpty() || !QFile(Path).exists()) {
|
||||
QString path = g.gePath();
|
||||
if (path.isEmpty() || !QFile(path).exists()) {
|
||||
ui->mapsButton->hide();
|
||||
}
|
||||
|
||||
@@ -99,57 +93,52 @@ logsDialog::logsDialog(QWidget *parent) :
|
||||
connect(ui->Reset_PB, SIGNAL(clicked()), this, SLOT(plotLogs()));
|
||||
}
|
||||
|
||||
logsDialog::~logsDialog()
|
||||
LogsDialog::~LogsDialog()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void logsDialog::titleDoubleClick(QMouseEvent *evt, QCPPlotTitle *title)
|
||||
void LogsDialog::titleDoubleClick(QMouseEvent *evt, QCPPlotTitle *title)
|
||||
{
|
||||
// Set the plot title by double clicking on it
|
||||
|
||||
bool ok;
|
||||
QString newTitle = QInputDialog::getText(this, tr("Plot Title Change"),
|
||||
tr("New plot title:"), QLineEdit::Normal, title->text(), &ok);
|
||||
if (ok)
|
||||
{
|
||||
QString newTitle = QInputDialog::getText(this, tr("Plot Title Change"), tr("New plot title:"), QLineEdit::Normal, title->text(), &ok);
|
||||
if (ok) {
|
||||
title->setText(newTitle);
|
||||
ui->customPlot->replot();
|
||||
}
|
||||
}
|
||||
|
||||
void logsDialog::axisLabelDoubleClick(QCPAxis *axis, QCPAxis::SelectablePart part)
|
||||
void LogsDialog::axisLabelDoubleClick(QCPAxis *axis, QCPAxis::SelectablePart part)
|
||||
{
|
||||
// Set an axis label by double clicking on it
|
||||
if (part == QCPAxis::spAxisLabel) // only react when the actual axis label is clicked, not tick label or axis backbone
|
||||
{
|
||||
if (part == QCPAxis::spAxisLabel) {
|
||||
// only react when the actual axis label is clicked, not tick label or axis backbone
|
||||
bool ok;
|
||||
QString newLabel = QInputDialog::getText(this, tr("Axis Label Change"), tr("New axis label:"), QLineEdit::Normal, axis->label(), &ok);
|
||||
if (ok)
|
||||
{
|
||||
if (ok) {
|
||||
axis->setLabel(newLabel);
|
||||
ui->customPlot->replot();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void logsDialog::legendDoubleClick(QCPLegend *legend, QCPAbstractLegendItem *item)
|
||||
void LogsDialog::legendDoubleClick(QCPLegend *legend, QCPAbstractLegendItem *item)
|
||||
{
|
||||
// Rename a graph by double clicking on its legend item
|
||||
if (item) // only react if item was clicked (user could have clicked on border padding of legend where there is no item, then item is 0)
|
||||
{
|
||||
if (item) {
|
||||
// only react if item was clicked (user could have clicked on border padding of legend where there is no item, then item is 0)
|
||||
QCPPlottableLegendItem *plItem = qobject_cast<QCPPlottableLegendItem*>(item);
|
||||
bool ok;
|
||||
QString newName = QInputDialog::getText(this, tr("Graph Name Change"), tr("New graph name:"), QLineEdit::Normal, plItem->plottable()->name(), &ok);
|
||||
if (ok)
|
||||
{
|
||||
if (ok) {
|
||||
plItem->plottable()->setName(newName);
|
||||
ui->customPlot->replot();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void logsDialog::selectionChanged()
|
||||
void LogsDialog::selectionChanged()
|
||||
{
|
||||
/*
|
||||
normally, axis base line, axis tick labels and axis labels are selectable separately, but we want
|
||||
@@ -208,20 +197,18 @@ void logsDialog::selectionChanged()
|
||||
}
|
||||
|
||||
// synchronize selection of graphs with selection of corresponding legend items:
|
||||
for (int i=0; i<ui->customPlot->graphCount(); ++i)
|
||||
{
|
||||
for (int i=0; i<ui->customPlot->graphCount(); ++i) {
|
||||
QCPGraph *graph = ui->customPlot->graph(i);
|
||||
QCPPlottableLegendItem *item = ui->customPlot->legend->itemWithPlottable(graph);
|
||||
if (item == NULL) item = rightLegend->itemWithPlottable(graph);
|
||||
if (item->selected() || graph->selected())
|
||||
{
|
||||
if (item->selected() || graph->selected()) {
|
||||
item->setSelected(true);
|
||||
graph->setSelected(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QList<QStringList> logsDialog::filterGePoints(const QList<QStringList> & input)
|
||||
QList<QStringList> LogsDialog::filterGePoints(const QList<QStringList> & input)
|
||||
{
|
||||
QList<QStringList> result;
|
||||
|
||||
@@ -260,7 +247,7 @@ QList<QStringList> logsDialog::filterGePoints(const QList<QStringList> & input)
|
||||
|
||||
// glitch filter
|
||||
if ( glitchFilter.isGlitch(flatitude, flongitude) ) {
|
||||
qDebug() << "filterGePoints(): GPS glitch detected at" << i << flatitude << flongitude;
|
||||
// qDebug() << "filterGePoints(): GPS glitch detected at" << i << flatitude << flongitude;
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -275,11 +262,11 @@ QList<QStringList> logsDialog::filterGePoints(const QList<QStringList> & input)
|
||||
}
|
||||
}
|
||||
|
||||
qDebug() << "filterGePoints(): filtered from" << input.count() << "to " << result.count() << "points";
|
||||
// qDebug() << "filterGePoints(): filtered from" << input.count() << "to " << result.count() << "points";
|
||||
return result;
|
||||
}
|
||||
|
||||
void logsDialog::exportToGoogleEarth()
|
||||
void LogsDialog::exportToGoogleEarth()
|
||||
{
|
||||
// filter data points
|
||||
QList<QStringList> dataPoints = filterGePoints(csvlog);
|
||||
@@ -289,25 +276,26 @@ void logsDialog::exportToGoogleEarth()
|
||||
int latcol=0, longcol=0, altcol=0, speedcol=0;
|
||||
QSet<int> nondataCols;
|
||||
for (int i=1; i<dataPoints.at(0).count(); i++) {
|
||||
//Long,Lat,Course,GPS Speed,GPS Alt
|
||||
// Long,Lat,Course,GPS Speed,GPS Alt
|
||||
if (dataPoints.at(0).at(i).contains("Long")) {
|
||||
longcol=i;
|
||||
longcol = i;
|
||||
nondataCols << i;
|
||||
}
|
||||
if (dataPoints.at(0).at(i).contains("Lat")) {
|
||||
latcol=i;
|
||||
latcol = i;
|
||||
nondataCols << i;
|
||||
}
|
||||
if (dataPoints.at(0).at(i).contains("GPS Alt")) {
|
||||
altcol=i;
|
||||
if (dataPoints.at(0).at(i).contains("GPS Alt") || dataPoints.at(0).at(i).contains("GAlt")) {
|
||||
altcol = i;
|
||||
nondataCols << i;
|
||||
}
|
||||
if (dataPoints.at(0).at(i).contains("GPS Speed")) {
|
||||
speedcol=i;
|
||||
speedcol = i;
|
||||
nondataCols << i;
|
||||
}
|
||||
}
|
||||
if (longcol==0 || latcol==0 || altcol==0) {
|
||||
|
||||
if (longcol==0 || latcol==0) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -375,22 +363,25 @@ void logsDialog::exportToGoogleEarth()
|
||||
|
||||
// coordinate data points
|
||||
for (int i=1; i<n; i++) {
|
||||
QString latitude=dataPoints.at(i).at(latcol).trimmed();
|
||||
QString longitude=dataPoints.at(i).at(longcol).trimmed();
|
||||
QString latitude = dataPoints.at(i).at(latcol).trimmed();
|
||||
QString longitude = dataPoints.at(i).at(longcol).trimmed();
|
||||
int altitude = altcol ? dataPoints.at(i).at(altcol).toFloat() : 0;
|
||||
latitude.sprintf("%3.8f", toDecimalCoordinate(latitude));
|
||||
longitude.sprintf("%3.8f", toDecimalCoordinate(longitude));
|
||||
outputStream << "\t\t\t\t\t<gx:coord>" << longitude << " " << latitude << " " << dataPoints.at(i).at(altcol).toFloat() << " </gx:coord>\n" ;
|
||||
outputStream << "\t\t\t\t\t<gx:coord>" << longitude << " " << latitude << " " << altitude << " </gx:coord>\n" ;
|
||||
}
|
||||
|
||||
// additional data for data points
|
||||
outputStream << "\t\t\t\t\t<ExtendedData>\n\t\t\t\t\t\t<SchemaData schemaUrl=\"#schema\">\n";
|
||||
|
||||
// gps speed data points
|
||||
outputStream << "\t\t\t\t\t\t\t<gx:SimpleArrayData name=\"GPSSpeed\">\n";
|
||||
for (int i=1; i<n; i++) {
|
||||
outputStream << "\t\t\t\t\t\t\t\t<gx:value>"<< dataPoints.at(i).at(speedcol) <<"</gx:value>\n";
|
||||
if (speedcol) {
|
||||
// gps speed data points
|
||||
outputStream << "\t\t\t\t\t\t\t<gx:SimpleArrayData name=\"GPSSpeed\">\n";
|
||||
for (int i=1; i<n; i++) {
|
||||
outputStream << "\t\t\t\t\t\t\t\t<gx:value>"<< dataPoints.at(i).at(speedcol) <<"</gx:value>\n";
|
||||
}
|
||||
outputStream << "\t\t\t\t\t\t\t</gx:SimpleArrayData>\n";
|
||||
}
|
||||
outputStream << "\t\t\t\t\t\t\t</gx:SimpleArrayData>\n";
|
||||
|
||||
// add values for additional fields
|
||||
for (int i=0; i<dataPoints.at(0).count()-2; i++) {
|
||||
@@ -420,7 +411,7 @@ void logsDialog::exportToGoogleEarth()
|
||||
process->start(gePath, parameters);
|
||||
}
|
||||
|
||||
void logsDialog::on_mapsButton_clicked()
|
||||
void LogsDialog::on_mapsButton_clicked()
|
||||
{
|
||||
ui->FieldsTW->setDisabled(true);
|
||||
ui->logTable->setDisabled(true);
|
||||
@@ -431,7 +422,7 @@ void logsDialog::on_mapsButton_clicked()
|
||||
ui->logTable->setDisabled(false);
|
||||
}
|
||||
|
||||
void logsDialog::mousePress()
|
||||
void LogsDialog::mousePress()
|
||||
{
|
||||
// if an axis is selected, only allow the direction of that axis to be dragged
|
||||
// if no axis is selected, both directions may be dragged
|
||||
@@ -444,7 +435,7 @@ void logsDialog::mousePress()
|
||||
axisRect->setRangeDrag(Qt::Horizontal | Qt::Vertical);
|
||||
}
|
||||
|
||||
void logsDialog::mouseWheel()
|
||||
void LogsDialog::mouseWheel()
|
||||
{
|
||||
// if an axis is selected, only allow the direction of that axis to be zoomed
|
||||
// if no axis is selected, both directions may be zoomed
|
||||
@@ -462,7 +453,7 @@ void logsDialog::mouseWheel()
|
||||
}
|
||||
}
|
||||
|
||||
void logsDialog::removeAllGraphs()
|
||||
void LogsDialog::removeAllGraphs()
|
||||
{
|
||||
ui->customPlot->clearGraphs();
|
||||
ui->customPlot->legend->setVisible(false);
|
||||
@@ -480,12 +471,11 @@ void logsDialog::removeAllGraphs()
|
||||
ui->customPlot->replot();
|
||||
}
|
||||
|
||||
void logsDialog::on_fileOpen_BT_clicked()
|
||||
void LogsDialog::on_fileOpen_BT_clicked()
|
||||
{
|
||||
QString fileName = QFileDialog::getOpenFileName(this,tr("Select your log file"), g.logDir());
|
||||
QString fileName = QFileDialog::getOpenFileName(this, tr("Select your log file"), g.logDir());
|
||||
if (!fileName.isEmpty()) {
|
||||
|
||||
g.logDir( fileName );
|
||||
g.logDir(fileName);
|
||||
ui->FileName_LE->setText(fileName);
|
||||
if (cvsFileParse()) {
|
||||
ui->FieldsTW->clear();
|
||||
@@ -525,15 +515,16 @@ void logsDialog::on_fileOpen_BT_clicked()
|
||||
}
|
||||
}
|
||||
|
||||
bool logsDialog::cvsFileParse()
|
||||
bool LogsDialog::cvsFileParse()
|
||||
{
|
||||
QFile file(ui->FileName_LE->text());
|
||||
int errors=0;
|
||||
int lines=-1;
|
||||
|
||||
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { //reading HEX TEXT file
|
||||
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { // reading HEX TEXT file
|
||||
return false;
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
csvlog.clear();
|
||||
logFilename.clear();
|
||||
QTextStream inputStream(&file);
|
||||
@@ -541,7 +532,8 @@ bool logsDialog::cvsFileParse()
|
||||
|
||||
if (buffer.startsWith("Date,Time")) {
|
||||
file.reset();
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -554,29 +546,30 @@ bool logsDialog::cvsFileParse()
|
||||
}
|
||||
if (columns.count()==numfields) {
|
||||
csvlog.append(columns);
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
errors++;
|
||||
}
|
||||
lines++;
|
||||
}
|
||||
|
||||
logFilename=QFileInfo(file.fileName()).baseName();
|
||||
logFilename = QFileInfo(file.fileName()).baseName();
|
||||
}
|
||||
|
||||
file.close();
|
||||
if (errors>1) {
|
||||
if (errors > 1) {
|
||||
QMessageBox::warning(this, "Companion", tr("The selected logfile contains %1 invalid lines out of %2 total lines").arg(errors).arg(lines));
|
||||
}
|
||||
|
||||
int n=csvlog.count();
|
||||
if (n==1) {
|
||||
int n = csvlog.count();
|
||||
if (n == 1) {
|
||||
csvlog.clear();
|
||||
return false;
|
||||
}
|
||||
|
||||
plotLock = true;
|
||||
setFlightSessions();
|
||||
plotLock=false;
|
||||
plotLock = false;
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -586,7 +579,7 @@ struct FlightSession {
|
||||
QDateTime end;
|
||||
};
|
||||
|
||||
QDateTime logsDialog::getRecordTimeStamp(int index)
|
||||
QDateTime LogsDialog::getRecordTimeStamp(int index)
|
||||
{
|
||||
QString tstamp = csvlog.at(index).at(0) + " " + csvlog.at(index).at(1);
|
||||
if (csvlog.at(index).at(1).contains("."))
|
||||
@@ -594,7 +587,7 @@ QDateTime logsDialog::getRecordTimeStamp(int index)
|
||||
return QDateTime::fromString(tstamp, "yyyy-MM-dd HH:mm:ss");
|
||||
}
|
||||
|
||||
QString logsDialog::generateDuration(const QDateTime & start, const QDateTime & end)
|
||||
QString LogsDialog::generateDuration(const QDateTime & start, const QDateTime & end)
|
||||
{
|
||||
int secs = start.secsTo(end);
|
||||
QString durationString;
|
||||
@@ -606,11 +599,11 @@ QString logsDialog::generateDuration(const QDateTime & start, const QDateTime &
|
||||
return durationString;
|
||||
}
|
||||
|
||||
void logsDialog::setFlightSessions()
|
||||
void LogsDialog::setFlightSessions()
|
||||
{
|
||||
ui->sessions_CB->clear();
|
||||
|
||||
int n=csvlog.count();
|
||||
int n = csvlog.count();
|
||||
// qDebug() << "records" << n;
|
||||
|
||||
// find session breaks
|
||||
@@ -646,7 +639,7 @@ void logsDialog::setFlightSessions()
|
||||
}
|
||||
}
|
||||
|
||||
void logsDialog::on_sessions_CB_currentIndexChanged(int index)
|
||||
void LogsDialog::on_sessions_CB_currentIndexChanged(int index)
|
||||
{
|
||||
if (plotLock) return;
|
||||
plotLock = true;
|
||||
@@ -674,7 +667,7 @@ void logsDialog::on_sessions_CB_currentIndexChanged(int index)
|
||||
plotLogs();
|
||||
}
|
||||
|
||||
void logsDialog::plotLogs()
|
||||
void LogsDialog::plotLogs()
|
||||
{
|
||||
if (plotLock) return;
|
||||
|
||||
@@ -920,7 +913,7 @@ void logsDialog::plotLogs()
|
||||
ui->customPlot->replot();
|
||||
}
|
||||
|
||||
void logsDialog::yAxisChangeRanges(QCPRange range)
|
||||
void LogsDialog::yAxisChangeRanges(QCPRange range)
|
||||
{
|
||||
if (axisRect->axis(QCPAxis::atRight)->visible()) {
|
||||
double lowerChange = (range.lower - yAxesRanges[firstLeft].min) *
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#ifndef LOGSDIALOG_H
|
||||
#define LOGSDIALOG_H
|
||||
#ifndef _LOGSDIALOG_H_
|
||||
#define _LOGSDIALOG_H_
|
||||
|
||||
#include <QtCore>
|
||||
#include <QtGui>
|
||||
@@ -37,16 +37,16 @@ struct plotsCollection {
|
||||
};
|
||||
|
||||
namespace Ui {
|
||||
class logsDialog;
|
||||
class LogsDialog;
|
||||
}
|
||||
|
||||
class logsDialog : public QDialog
|
||||
class LogsDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit logsDialog(QWidget *parent = 0);
|
||||
~logsDialog();
|
||||
explicit LogsDialog(QWidget *parent = 0);
|
||||
~LogsDialog();
|
||||
|
||||
private slots:
|
||||
void titleDoubleClick(QMouseEvent *evt, QCPPlotTitle *title);
|
||||
@@ -64,7 +64,7 @@ private slots:
|
||||
|
||||
private:
|
||||
QList<QStringList> csvlog;
|
||||
Ui::logsDialog *ui;
|
||||
Ui::LogsDialog *ui;
|
||||
QCPAxisRect *axisRect;
|
||||
QCPLegend *rightLegend;
|
||||
bool plotLock;
|
||||
@@ -85,4 +85,4 @@ private:
|
||||
|
||||
};
|
||||
|
||||
#endif // LOGSDIALOG_H
|
||||
#endif // _LOGSDIALOG_H_
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>logsDialog</class>
|
||||
<widget class="QDialog" name="logsDialog">
|
||||
<class>LogsDialog</class>
|
||||
<widget class="QDialog" name="LogsDialog">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
|
||||
@@ -873,7 +873,7 @@ void MainWindow::compare()
|
||||
|
||||
void MainWindow::logFile()
|
||||
{
|
||||
logsDialog *fd = new logsDialog(this);
|
||||
LogsDialog *fd = new LogsDialog(this);
|
||||
fd->setWindowFlags(Qt::Window); //to show minimize an maximize buttons
|
||||
fd->setAttribute(Qt::WA_DeleteOnClose, true);
|
||||
fd->show();
|
||||
|
||||
@@ -61,7 +61,7 @@ CustomFunctionsPanel::CustomFunctionsPanel(QWidget * parent, ModelData * model,
|
||||
addEmptyLabel(gridLayout, 5 );
|
||||
|
||||
lock = true;
|
||||
int num_fsw = firmware->getCapability(CustomFunctions);
|
||||
int num_fsw = model ? firmware->getCapability(CustomFunctions) : firmware->getCapability(GlobalFunctions);
|
||||
|
||||
if (!firmware->getCapability(VoicesAsNumbers)) {
|
||||
tracksSet = getFilesSet(getSoundsPath(generalSettings), QStringList() << "*.wav" << "*.WAV", firmware->getCapability(VoicesMaxLength));
|
||||
@@ -514,7 +514,8 @@ void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified)
|
||||
void CustomFunctionsPanel::update()
|
||||
{
|
||||
lock = true;
|
||||
for (int i=0; i<firmware->getCapability(CustomFunctions); i++) {
|
||||
int num_fsw = model ? firmware->getCapability(CustomFunctions) : firmware->getCapability(GlobalFunctions);
|
||||
for (int i=0; i<num_fsw; i++) {
|
||||
if (!initialized) {
|
||||
populateSwitchCB(fswtchSwtch[i], functions[i].swtch, generalSettings, model ? SpecialFunctionsContext : GlobalFunctionsContext);
|
||||
populateFuncCB(fswtchFunc[i], functions[i].func);
|
||||
|
||||
@@ -517,6 +517,10 @@ SetupPanel::SetupPanel(QWidget *parent, ModelData & model, GeneralSettings & gen
|
||||
if (!firmware->getCapability(HasDisplayText)) {
|
||||
ui->displayText->hide();
|
||||
}
|
||||
|
||||
if (!firmware->getCapability(GlobalFunctions)) {
|
||||
ui->gfEnabled->hide();
|
||||
}
|
||||
|
||||
// Beep Center checkboxes
|
||||
prevFocus = ui->trimsDisplay;
|
||||
@@ -774,6 +778,7 @@ void SetupPanel::update()
|
||||
ui->extendedLimits->setChecked(model->extendedLimits);
|
||||
ui->extendedTrims->setChecked(model->extendedTrims);
|
||||
ui->displayText->setChecked(model->displayChecklist);
|
||||
ui->gfEnabled->setChecked(!model->noGlobalFunctions);
|
||||
|
||||
updateBeepCenter();
|
||||
updateStartupSwitches();
|
||||
@@ -915,6 +920,12 @@ void SetupPanel::on_displayText_toggled(bool checked)
|
||||
emit modified();
|
||||
}
|
||||
|
||||
void SetupPanel::on_gfEnabled_toggled(bool checked)
|
||||
{
|
||||
model->noGlobalFunctions = !checked;
|
||||
emit modified();
|
||||
}
|
||||
|
||||
void SetupPanel::on_throttleTrim_toggled(bool checked)
|
||||
{
|
||||
model->thrTrim = checked;
|
||||
|
||||
@@ -101,6 +101,7 @@ class SetupPanel : public ModelPanel
|
||||
void on_throttleWarning_toggled(bool checked);
|
||||
void on_throttleReverse_toggled(bool checked);
|
||||
void on_displayText_toggled(bool checked);
|
||||
void on_gfEnabled_toggled(bool checked);
|
||||
void on_image_currentIndexChanged(int index);
|
||||
void on_trimIncrement_currentIndexChanged(int index);
|
||||
void onBeepCenterToggled(bool checked);
|
||||
|
||||
@@ -215,6 +215,13 @@ If this is checked the throttle will be reversed. Idle will be forward, trim wi
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="4">
|
||||
<widget class="QCheckBox" name="gfEnabled">
|
||||
<property name="text">
|
||||
<string>Global Functions</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
|
||||
@@ -33,7 +33,9 @@ void registerSimulators()
|
||||
bool simulatorsFound = false;
|
||||
QDir dir(".");
|
||||
QStringList filters;
|
||||
#if (!defined __GNUC__) || (defined __CYGWIN__)
|
||||
#if defined(__APPLE__)
|
||||
filters << "*-simulator.dylib";
|
||||
#elif (!defined __GNUC__) || (defined __CYGWIN__)
|
||||
filters << "*-simulator.dll";
|
||||
#else
|
||||
filters << "*-simulator.so";
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
;Name and file
|
||||
Name "OpenTX companion"
|
||||
OutFile "companionInstall_v@C9X_VERSION@.exe"
|
||||
OutFile "companion-windows-v@C9X_VERSION@.exe"
|
||||
|
||||
;Default installation folder
|
||||
InstallDir "$PROGRAMFILES\OpenTX companion"
|
||||
@@ -141,7 +141,7 @@ SectionEnd
|
||||
|
||||
;Language strings
|
||||
LangString DESC_SecDummy ${LANG_ENGLISH} "Models and settings editor for OpenTX"
|
||||
LangString DESC_SecDummy ${LANG_FRENCH} "Editeur de réglages et modèles pour OpenTX"
|
||||
LangString DESC_SecDummy ${LANG_FRENCH} "Editeur de r�glages et mod�les pour OpenTX"
|
||||
|
||||
;Assign language strings to sections
|
||||
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
;Name and file
|
||||
Name "OpenTX Companion 2.1"
|
||||
OutFile "companionInstall_@C9X_VERSION@.exe"
|
||||
OutFile "companion-windows-@C9X_VERSION@.exe"
|
||||
|
||||
;Default installation folder
|
||||
InstallDir "$PROGRAMFILES\OpenTX\Companion 2.1"
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
;Name and file
|
||||
Name "OpenTX Simulator"
|
||||
OutFile "simulatorInstall_@C9X_VERSION@.exe"
|
||||
OutFile "simulator-windows-@C9X_VERSION@.exe"
|
||||
|
||||
;Default installation folder
|
||||
InstallDir "$PROGRAMFILES\OpenTX"
|
||||
|
||||
@@ -119,7 +119,7 @@ PLAY_FUNCTION(playValue, source_t idx)
|
||||
#if defined(FRSKY)
|
||||
case MIXSRC_FIRST_TELEM+TELEM_RSSI_TX-1:
|
||||
case MIXSRC_FIRST_TELEM+TELEM_RSSI_RX-1:
|
||||
PLAY_NUMBER(val, 1+UNIT_DBM, 0);
|
||||
PLAY_NUMBER(val, 1+UNIT_DB, 0);
|
||||
break;
|
||||
case MIXSRC_FIRST_TELEM+TELEM_MIN_A1-1:
|
||||
case MIXSRC_FIRST_TELEM+TELEM_MIN_A2-1:
|
||||
|
||||
@@ -1164,7 +1164,7 @@ enum TelemetryUnit {
|
||||
UNIT_PERCENT,
|
||||
UNIT_MAH,
|
||||
UNIT_WATTS,
|
||||
UNIT_DBM,
|
||||
UNIT_DB,
|
||||
UNIT_RPMS,
|
||||
UNIT_G,
|
||||
UNIT_DEGREE,
|
||||
@@ -1205,7 +1205,7 @@ enum TelemetryUnit {
|
||||
UNIT_A1A2_MAX = UNIT_MILLIAMPS,
|
||||
UNIT_MAH,
|
||||
UNIT_WATTS,
|
||||
UNIT_DBM,
|
||||
UNIT_DB,
|
||||
UNIT_FEET,
|
||||
UNIT_KTS,
|
||||
UNIT_HOURS,
|
||||
|
||||
@@ -760,7 +760,11 @@ char *findTrueFileName(const char *path)
|
||||
for (;;) {
|
||||
struct simu::dirent * res = simu::readdir(dir);
|
||||
if (res == 0) break;
|
||||
#if defined(__APPLE__)
|
||||
if ((res->d_type == DT_REG) || (res->d_type == DT_LNK)) {
|
||||
#else
|
||||
if ((res->d_type == simu::DT_REG) || (res->d_type == simu::DT_LNK)) {
|
||||
#endif
|
||||
// TRACE("comparing with: %s", res->d_name);
|
||||
if (!strcasecmp(fileName.c_str(), res->d_name)) {
|
||||
strcpy(result, dirName.c_str());
|
||||
|
||||
@@ -57,7 +57,7 @@ struct FrSkySportSensor {
|
||||
};
|
||||
|
||||
const FrSkySportSensor sportSensors[] = {
|
||||
{ RSSI_ID, RSSI_ID, ZSTR_RSSI, UNIT_RAW, 0 },
|
||||
{ RSSI_ID, RSSI_ID, ZSTR_RSSI, UNIT_DB, 0 },
|
||||
{ SWR_ID, SWR_ID, ZSTR_SWR, UNIT_RAW, 0 },
|
||||
{ ADC1_ID, ADC1_ID, ZSTR_A1, UNIT_VOLTS, 1 },
|
||||
{ ADC2_ID, ADC2_ID, ZSTR_A2, UNIT_VOLTS, 1 },
|
||||
|
||||
@@ -381,7 +381,7 @@
|
||||
#define LEN_VUNITSSYSTEM TR("\006", "\010")
|
||||
#define TR_VUNITSSYSTEM TR("Metr.\0""Imper.", "Metrické""Imperial")
|
||||
#define LEN_VTELEMUNIT "\003"
|
||||
#define TR_VTELEMUNIT "-\0 ""V\0 ""A\0 ""mA\0""kts""m/s""f/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dBm""rpm""g\0 ""@\0 ""ml\0""fOz"
|
||||
#define TR_VTELEMUNIT "-\0 ""V\0 ""A\0 ""mA\0""kts""m/s""f/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dB\0""rpm""g\0 ""@\0 ""ml\0""fOz"
|
||||
#else
|
||||
#if defined(IMPERIAL_UNITS)
|
||||
#define LENGTH_UNIT LENGTH_UNIT_IMP
|
||||
@@ -424,11 +424,11 @@
|
||||
#endif
|
||||
|
||||
#if defined(CPUARM)
|
||||
#define LEN_VTELEMSCREENTYPE "\010"
|
||||
#define TR_VTELEMSCREENTYPE "Hodnota ""Ukazatel""Skript\0"
|
||||
#define LEN_VTELEMSCREENTYPE "\010"
|
||||
#define TR_VTELEMSCREENTYPE "Nic\0 ""Hodnota ""Ukazatel""Skript\0"
|
||||
#else
|
||||
#define LEN_VTELEMSCREENTYPE "\010"
|
||||
#define TR_VTELEMSCREENTYPE "Hodnota ""Ukazatel"
|
||||
#define LEN_VTELEMSCREENTYPE "\010"
|
||||
#define TR_VTELEMSCREENTYPE "Hodnota ""Ukazatel"
|
||||
#endif
|
||||
|
||||
#define LEN_GPSFORMAT "\004"
|
||||
|
||||
@@ -388,7 +388,7 @@
|
||||
#define LEN_VUNITSSYSTEM TR("\006", "\012")
|
||||
#define TR_VUNITSSYSTEM TR("Metrik""Imper.", "Metrisch\0 ""Imperial\0 ")
|
||||
#define LEN_VTELEMUNIT "\003"
|
||||
#define TR_VTELEMUNIT "-\0 ""V\0 ""A\0 ""mA\0""kts""m/s""f/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dBm""rpm""g\0 ""@\0 ""ml\0""fOz"
|
||||
#define TR_VTELEMUNIT "-\0 ""V\0 ""A\0 ""mA\0""kts""m/s""f/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dB\0""rpm""g\0 ""@\0 ""ml\0""fOz"
|
||||
#else
|
||||
#if defined(IMPERIAL_UNITS)
|
||||
#define LENGTH_UNIT LENGTH_UNIT_IMP
|
||||
|
||||
@@ -383,7 +383,7 @@
|
||||
#define LEN_VUNITSSYSTEM TR("\006", "\010")
|
||||
#define TR_VUNITSSYSTEM TR("Metric""Imper.", "Metric\0 ""Imperial")
|
||||
#define LEN_VTELEMUNIT "\003"
|
||||
#define TR_VTELEMUNIT "-\0 ""V\0 ""A\0 ""mA\0""kts""m/s""f/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dBm""rpm""g\0 ""@\0 ""ml\0""fOz"
|
||||
#define TR_VTELEMUNIT "-\0 ""V\0 ""A\0 ""mA\0""kts""m/s""f/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dB\0""rpm""g\0 ""@\0 ""ml\0""fOz"
|
||||
#else
|
||||
#if defined(IMPERIAL_UNITS)
|
||||
#define LENGTH_UNIT LENGTH_UNIT_IMP
|
||||
|
||||
@@ -379,7 +379,7 @@
|
||||
#define LEN_VUNITSSYSTEM TR("\006", "\010")
|
||||
#define TR_VUNITSSYSTEM TR("Metric""Imper.", "Metric\0 ""Imperial")
|
||||
#define LEN_VTELEMUNIT "\003"
|
||||
#define TR_VTELEMUNIT "-\0 ""V\0 ""A\0 ""mA\0""kts""m/s""f/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dBm""rpm""g\0 ""@\0 ""ml\0""fOz"
|
||||
#define TR_VTELEMUNIT "-\0 ""V\0 ""A\0 ""mA\0""kts""m/s""f/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dB\0""rpm""g\0 ""@\0 ""ml\0""fOz"
|
||||
#else
|
||||
#if defined(IMPERIAL_UNITS)
|
||||
#define LENGTH_UNIT LENGTH_UNIT_IMP
|
||||
|
||||
@@ -379,7 +379,7 @@
|
||||
#define LEN_VUNITSSYSTEM TR("\006", "\010")
|
||||
#define TR_VUNITSSYSTEM TR("Metric""Imper.", "Metric\0 ""Imperial")
|
||||
#define LEN_VTELEMUNIT "\003"
|
||||
#define TR_VTELEMUNIT "-\0 ""V\0 ""A\0 ""mA\0""kts""m/s""f/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dBm""rpm""g\0 ""@\0 ""ml\0""fOz"
|
||||
#define TR_VTELEMUNIT "-\0 ""V\0 ""A\0 ""mA\0""kts""m/s""f/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dB\0""rpm""g\0 ""@\0 ""ml\0""fOz"
|
||||
#else
|
||||
#if defined(IMPERIAL_UNITS)
|
||||
#define LENGTH_UNIT LENGTH_UNIT_IMP
|
||||
|
||||
@@ -383,7 +383,7 @@
|
||||
#define LEN_VUNITSSYSTEM TR("\006", "\012")
|
||||
#define TR_VUNITSSYSTEM TR("Métr.\0""Impér.", "Métriques\0""Impériales")
|
||||
#define LEN_VTELEMUNIT "\003"
|
||||
#define TR_VTELEMUNIT "-\0 ""V\0 ""A\0 ""mA\0""kts""m/s""f/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dBm""rpm""g\0 ""@\0 ""ml\0""fOz"
|
||||
#define TR_VTELEMUNIT "-\0 ""V\0 ""A\0 ""mA\0""kts""m/s""f/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dB\0""rpm""g\0 ""@\0 ""ml\0""fOz"
|
||||
#else
|
||||
#if defined(IMPERIAL_UNITS)
|
||||
#define LENGTH_UNIT LENGTH_UNIT_IMP
|
||||
|
||||
@@ -379,7 +379,7 @@
|
||||
#define LEN_VUNITSSYSTEM TR("\006", "\011")
|
||||
#define TR_VUNITSSYSTEM TR("Metric""Imper.", "Metriche\0""Imperiali")
|
||||
#define LEN_VTELEMUNIT "\003"
|
||||
#define TR_VTELEMUNIT "-\0 ""V\0 ""A\0 ""mA\0""kts""m/s""f/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dBm""rpm""g\0 ""@\0 ""ml\0""fOz"
|
||||
#define TR_VTELEMUNIT "-\0 ""V\0 ""A\0 ""mA\0""kts""m/s""f/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dB\0""rpm""g\0 ""@\0 ""ml\0""fOz"
|
||||
#else
|
||||
#if defined(IMPERIAL_UNITS)
|
||||
#define LENGTH_UNIT LENGTH_UNIT_IMP
|
||||
|
||||
@@ -392,7 +392,7 @@
|
||||
#define LEN_VUNITSSYSTEM TR("\006", "\010")
|
||||
#define TR_VUNITSSYSTEM TR("Metrs.""Engels", "Metrisch\0 ""Engels\0 ")
|
||||
#define LEN_VTELEMUNIT "\003"
|
||||
#define TR_VTELEMUNIT "-\0 ""V\0 ""A\0 ""mA\0""kts""m/s""f/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dBm""rpm""g\0 ""@\0 ""ml\0""fOz"
|
||||
#define TR_VTELEMUNIT "-\0 ""V\0 ""A\0 ""mA\0""kts""m/s""f/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dB\0""rpm""g\0 ""@\0 ""ml\0""fOz"
|
||||
#else
|
||||
#if defined(IMPERIAL_UNITS)
|
||||
#define LENGTH_UNIT LENGTH_UNIT_IMP
|
||||
|
||||
@@ -387,7 +387,7 @@
|
||||
#define LEN_VUNITSSYSTEM TR("\006", "\010") /*8 decimal*/
|
||||
#define TR_VUNITSSYSTEM TR("Metr. ""Imper.", "Metryczn""Imperial")
|
||||
#define LEN_VTELEMUNIT "\003"
|
||||
#define TR_VTELEMUNIT "-\0 ""V\0 ""A\0 ""mA\0""kts""m/s""f/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dBm""rpm""g\0 ""@\0 ""ml\0""fOz"
|
||||
#define TR_VTELEMUNIT "-\0 ""V\0 ""A\0 ""mA\0""kts""m/s""f/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dB\0""rpm""g\0 ""@\0 ""ml\0""fOz"
|
||||
#else
|
||||
#if defined(IMPERIAL_UNITS)
|
||||
#define LENGTH_UNIT LENGTH_UNIT_IMP
|
||||
|
||||
@@ -379,7 +379,7 @@
|
||||
#define LEN_VUNITSSYSTEM TR("\006", "\010")
|
||||
#define TR_VUNITSSYSTEM TR("Metric""Imper.", "Metric\0 ""Imperial")
|
||||
#define LEN_VTELEMUNIT "\003"
|
||||
#define TR_VTELEMUNIT "-\0 ""V\0 ""A\0 ""mA\0""kts""m/s""f/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dBm""rpm""g\0 ""@\0 ""ml\0""fOz"
|
||||
#define TR_VTELEMUNIT "-\0 ""V\0 ""A\0 ""mA\0""kts""m/s""f/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dB\0""rpm""g\0 ""@\0 ""ml\0""fOz"
|
||||
#else
|
||||
#if defined(IMPERIAL_UNITS)
|
||||
#define LENGTH_UNIT LENGTH_UNIT_IMP
|
||||
|
||||
@@ -379,7 +379,7 @@
|
||||
#define LEN_VUNITSSYSTEM TR("\006", "\010")
|
||||
#define TR_VUNITSSYSTEM TR("Metri.""Imper.", "Metriska""Imperial")
|
||||
#define LEN_VTELEMUNIT "\003"
|
||||
#define TR_VTELEMUNIT "-\0 ""V\0 ""A\0 ""mA\0""kts""m/s""f/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dBm""rpm""g\0 ""@\0 ""ml\0""fOz"
|
||||
#define TR_VTELEMUNIT "-\0 ""V\0 ""A\0 ""mA\0""kts""m/s""f/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dB\0""rpm""g\0 ""@\0 ""ml\0""fOz"
|
||||
#else
|
||||
#if defined(IMPERIAL_UNITS)
|
||||
#define LENGTH_UNIT LENGTH_UNIT_IMP
|
||||
|
||||
@@ -48,7 +48,7 @@ enum CzechPrompts {
|
||||
CZ_PROMPT_MILLIAMPS = CZ_PROMPT_UNITS_BASE+(UNIT_MILLIAMPS*4),
|
||||
CZ_PROMPT_MAH = CZ_PROMPT_UNITS_BASE+(UNIT_MAH*4),
|
||||
CZ_PROMPT_WATTS = CZ_PROMPT_UNITS_BASE+(UNIT_WATTS*4),
|
||||
CZ_PROMPT_DB = CZ_PROMPT_UNITS_BASE+(UNIT_DBM*4),
|
||||
CZ_PROMPT_DB = CZ_PROMPT_UNITS_BASE+(UNIT_DB*4),
|
||||
CZ_PROMPT_FEET = CZ_PROMPT_UNITS_BASE+(UNIT_FEET*4),
|
||||
CZ_PROMPT_KTS = CZ_PROMPT_UNITS_BASE+(UNIT_KTS*4),
|
||||
CZ_PROMPT_HOURS = CZ_PROMPT_UNITS_BASE+(UNIT_HOURS*4),
|
||||
|
||||
@@ -57,7 +57,7 @@ enum HungarianPrompts {
|
||||
HU_PROMPT_MILLIAMPS = HU_PROMPT_UNITS_BASE+(UNIT_MILLIAMPS*2),
|
||||
HU_PROMPT_MAH = HU_PROMPT_UNITS_BASE+(UNIT_MAH*2),
|
||||
HU_PROMPT_WATTS = HU_PROMPT_UNITS_BASE+(UNIT_WATTS*2),
|
||||
HU_PROMPT_DB = HU_PROMPT_UNITS_BASE+(UNIT_DBM*2),
|
||||
HU_PROMPT_DB = HU_PROMPT_UNITS_BASE+(UNIT_DB*2),
|
||||
HU_PROMPT_FEET = HU_PROMPT_UNITS_BASE+(UNIT_FEET*2),
|
||||
HU_PROMPT_MPH = HU_PROMPT_UNITS_BASE+(UNIT_KTS*2),
|
||||
HU_PROMPT_HOURS = HU_PROMPT_UNITS_BASE+(UNIT_HOURS*2),
|
||||
|
||||
@@ -50,7 +50,7 @@ enum PolishPrompts {
|
||||
PL_PROMPT_MILLIAMPS = PL_PROMPT_UNITS_BASE+(UNIT_MILLIAMPS*4),
|
||||
PL_PROMPT_MAH = PL_PROMPT_UNITS_BASE+(UNIT_MAH*4),
|
||||
PL_PROMPT_WATTS = PL_PROMPT_UNITS_BASE+(UNIT_WATTS*4),
|
||||
PL_PROMPT_DB = PL_PROMPT_UNITS_BASE+(UNIT_DBM*4),
|
||||
PL_PROMPT_DB = PL_PROMPT_UNITS_BASE+(UNIT_DB*4),
|
||||
PL_PROMPT_FEET = PL_PROMPT_UNITS_BASE+(UNIT_FEET*4),
|
||||
PL_PROMPT_KTS = PL_PROMPT_UNITS_BASE+(UNIT_KTS*4),
|
||||
PL_PROMPT_HOURS = PL_PROMPT_UNITS_BASE+(UNIT_HOURS*4),
|
||||
|
||||
@@ -58,7 +58,7 @@ enum SwedishPrompts {
|
||||
SE_PROMPT_MILLIAMPS = SE_PROMPT_UNITS_BASE+(UNIT_MILLIAMPS*2),
|
||||
SE_PROMPT_MAH = SE_PROMPT_UNITS_BASE+(UNIT_MAH*2),
|
||||
SE_PROMPT_WATTS = SE_PROMPT_UNITS_BASE+(UNIT_WATTS*2),
|
||||
SE_PROMPT_DB = SE_PROMPT_UNITS_BASE+(UNIT_DBM*2),
|
||||
SE_PROMPT_DB = SE_PROMPT_UNITS_BASE+(UNIT_DB*2),
|
||||
SE_PROMPT_FEET = SE_PROMPT_UNITS_BASE+(UNIT_FEET*2),
|
||||
SE_PROMPT_KTS = SE_PROMPT_UNITS_BASE+(UNIT_KTS*2),
|
||||
SE_PROMPT_HOURS = SE_PROMPT_UNITS_BASE+(UNIT_HOURS*2),
|
||||
|
||||
@@ -63,7 +63,7 @@ enum SlovakPrompts {
|
||||
SK_PROMPT_MILLIAMPS = SK_PROMPT_UNITS_BASE+(UNIT_MILLIAMPS*4),
|
||||
SK_PROMPT_MAH = SK_PROMPT_UNITS_BASE+(UNIT_MAH*4),
|
||||
SK_PROMPT_WATTS = SK_PROMPT_UNITS_BASE+(UNIT_WATTS*4),
|
||||
SK_PROMPT_DB = SK_PROMPT_UNITS_BASE+(UNIT_DBM*4),
|
||||
SK_PROMPT_DB = SK_PROMPT_UNITS_BASE+(UNIT_DB*4),
|
||||
SK_PROMPT_FEET = SK_PROMPT_UNITS_BASE+(UNIT_FEET*4),
|
||||
SK_PROMPT_KTS = SK_PROMPT_UNITS_BASE+(UNIT_KTS*4),
|
||||
SK_PROMPT_HOURS = SK_PROMPT_UNITS_BASE+(UNIT_HOURS*4),
|
||||
|
||||
Reference in New Issue
Block a user