mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2024-12-03 11:24:10 +01:00
Linear dial: now connects to objects and prints field name. I will add field value + unit later. Tests welcome on real HW. Need to also add a font chooser in the config. Use with dials-master-linear.svg
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@715 ebee16cc-31ac-478f-84a7-5cbb03baadba
This commit is contained in:
parent
207e4b6a75
commit
dbcfea244e
@ -217,6 +217,13 @@
|
|||||||
inkscape:vp_y="0 : 1000 : 0"
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
inkscape:vp_x="0 : 0.5 : 1"
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
sodipodi:type="inkscape:persp3d" />
|
sodipodi:type="inkscape:persp3d" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective2940"
|
||||||
|
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||||
|
inkscape:vp_z="1 : 0.5 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
|
sodipodi:type="inkscape:persp3d" />
|
||||||
</defs>
|
</defs>
|
||||||
<sodipodi:namedview
|
<sodipodi:namedview
|
||||||
id="base"
|
id="base"
|
||||||
@ -225,16 +232,16 @@
|
|||||||
borderopacity="1.0"
|
borderopacity="1.0"
|
||||||
inkscape:pageopacity="0.0"
|
inkscape:pageopacity="0.0"
|
||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:zoom="1.979899"
|
inkscape:zoom="7.9195959"
|
||||||
inkscape:cx="137.09042"
|
inkscape:cx="197.58205"
|
||||||
inkscape:cy="20.867055"
|
inkscape:cy="20.867055"
|
||||||
inkscape:document-units="px"
|
inkscape:document-units="px"
|
||||||
inkscape:current-layer="layer6"
|
inkscape:current-layer="g2932"
|
||||||
showgrid="false"
|
showgrid="false"
|
||||||
inkscape:window-width="1280"
|
inkscape:window-width="1280"
|
||||||
inkscape:window-height="744"
|
inkscape:window-height="998"
|
||||||
inkscape:window-x="-4"
|
inkscape:window-x="-4"
|
||||||
inkscape:window-y="1020"
|
inkscape:window-y="-4"
|
||||||
inkscape:window-maximized="1"
|
inkscape:window-maximized="1"
|
||||||
inkscape:object-paths="true"
|
inkscape:object-paths="true"
|
||||||
showguides="true"
|
showguides="true"
|
||||||
@ -313,7 +320,7 @@
|
|||||||
id="bargraph-outer"
|
id="bargraph-outer"
|
||||||
style="fill:#332d2d;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
|
style="fill:#332d2d;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
|
||||||
<rect
|
<rect
|
||||||
style="fill:#332d2d;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
|
style="fill:#332d2d;fill-opacity:1;stroke:none"
|
||||||
id="bargraph"
|
id="bargraph"
|
||||||
width="260.53882"
|
width="260.53882"
|
||||||
height="9.2538376"
|
height="9.2538376"
|
||||||
@ -324,6 +331,18 @@
|
|||||||
inkscape:export-xdpi="88.809998"
|
inkscape:export-xdpi="88.809998"
|
||||||
inkscape:export-ydpi="88.809998"
|
inkscape:export-ydpi="88.809998"
|
||||||
inkscape:label="#rect4388" />
|
inkscape:label="#rect4388" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 249.16159,372.07875 1.13642,0.12627"
|
||||||
|
id="field"
|
||||||
|
sodipodi:nodetypes="cc"
|
||||||
|
inkscape:label="#path2930" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
|
||||||
|
d="m 451.7298,372.12602 1.13642,0.12627"
|
||||||
|
id="value"
|
||||||
|
sodipodi:nodetypes="cc"
|
||||||
|
inkscape:label="#path2930" />
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g
|
<g
|
||||||
@ -421,16 +440,16 @@
|
|||||||
inkscape:label="Text"
|
inkscape:label="Text"
|
||||||
style="display:inline">
|
style="display:inline">
|
||||||
<text
|
<text
|
||||||
transform="translate(-227.44331,-365.7337)"
|
|
||||||
xml:space="preserve"
|
xml:space="preserve"
|
||||||
style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
|
style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
|
||||||
x="247.64636"
|
x="22.203053"
|
||||||
y="386.07877"
|
y="20.345066"
|
||||||
id="text4390"><tspan
|
id="bb"
|
||||||
|
inkscape:label="#text4390"><tspan
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan4392"
|
id="tspan4392"
|
||||||
x="247.64636"
|
x="22.203053"
|
||||||
y="386.07877"
|
y="20.345066"
|
||||||
style="font-size:18px;fill:#ffffff;fill-opacity:1">Vbat</tspan></text>
|
style="font-size:18px;fill:#ffffff;fill-opacity:1">Vbat</tspan></text>
|
||||||
<text
|
<text
|
||||||
transform="translate(-227.44331,-365.7337)"
|
transform="translate(-227.44331,-365.7337)"
|
||||||
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 17 KiB |
@ -6,5 +6,6 @@
|
|||||||
<url>http://www.openpilot.org</url>
|
<url>http://www.openpilot.org</url>
|
||||||
<dependencyList>
|
<dependencyList>
|
||||||
<dependency name="Core" version="1.0.0"/>
|
<dependency name="Core" version="1.0.0"/>
|
||||||
|
<dependency name="UAVObjects" version="0.0.1"/>
|
||||||
</dependencyList>
|
</dependencyList>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
@ -3,7 +3,7 @@ TARGET = LineardialGadget
|
|||||||
QT += svg
|
QT += svg
|
||||||
include(../../openpilotgcsplugin.pri)
|
include(../../openpilotgcsplugin.pri)
|
||||||
include(../../plugins/coreplugin/coreplugin.pri)
|
include(../../plugins/coreplugin/coreplugin.pri)
|
||||||
include(../../libs/qwt/qwt.pri)
|
include(lineardial_dependencies.pri)
|
||||||
HEADERS += lineardialplugin.h
|
HEADERS += lineardialplugin.h
|
||||||
HEADERS += lineardialgadget.h
|
HEADERS += lineardialgadget.h
|
||||||
HEADERS += lineardialgadgetwidget.h
|
HEADERS += lineardialgadgetwidget.h
|
||||||
|
@ -28,6 +28,9 @@
|
|||||||
#include "lineardialgadgetoptionspage.h"
|
#include "lineardialgadgetoptionspage.h"
|
||||||
#include "lineardialgadgetconfiguration.h"
|
#include "lineardialgadgetconfiguration.h"
|
||||||
#include "ui_lineardialgadgetoptionspage.h"
|
#include "ui_lineardialgadgetoptionspage.h"
|
||||||
|
#include "extensionsystem/pluginmanager.h"
|
||||||
|
#include "uavobjects/uavobjectmanager.h"
|
||||||
|
#include "uavobjects/uavdataobject.h"
|
||||||
|
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
#include <QtAlgorithms>
|
#include <QtAlgorithms>
|
||||||
@ -60,10 +63,36 @@ QWidget *LineardialGadgetOptionsPage::createPage(QWidget *parent)
|
|||||||
options_page->redMin->setValue(m_config->getRedMin());
|
options_page->redMin->setValue(m_config->getRedMin());
|
||||||
options_page->redMax->setValue(m_config->getRedMax());
|
options_page->redMax->setValue(m_config->getRedMax());
|
||||||
|
|
||||||
|
// Fills the combo boxes for the UAVObjects
|
||||||
|
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
|
||||||
|
UAVObjectManager *objManager = pm->getObject<UAVObjectManager>();
|
||||||
|
QList< QList<UAVDataObject*> > objList = objManager->getDataObjects();
|
||||||
|
foreach (QList<UAVDataObject*> list, objList) {
|
||||||
|
foreach (UAVDataObject* obj, list) {
|
||||||
|
options_page->objectName->addItem(obj->getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//select saved UAV Object field values
|
||||||
|
if(options_page->objectName->findText(m_config->getSourceDataObject())!=-1){
|
||||||
|
options_page->objectName->setCurrentIndex(options_page->objectName->findText(m_config->getSourceDataObject()));
|
||||||
|
// Now load the object field values:
|
||||||
|
UAVDataObject* obj = dynamic_cast<UAVDataObject*>( objManager->getObject(m_config->getSourceDataObject()) );
|
||||||
|
if (obj != NULL ) {
|
||||||
|
QList<UAVObjectField*> fieldList = obj->getFields();
|
||||||
|
foreach (UAVObjectField* field, fieldList) {
|
||||||
|
options_page->objectField->addItem(field->getName());
|
||||||
|
}
|
||||||
|
// And set the highlighed value from the settings:
|
||||||
|
options_page->objectField->setCurrentIndex(options_page->objectField->findText(m_config->getSourceObjectField()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
connect(options_page->objectName, SIGNAL(currentIndexChanged(QString)), this, SLOT(on_objectName_currentIndexChanged(QString)));
|
||||||
connect(options_page->loadFile, SIGNAL(clicked()), this, SLOT(on_loadFile_clicked()));
|
connect(options_page->loadFile, SIGNAL(clicked()), this, SLOT(on_loadFile_clicked()));
|
||||||
|
|
||||||
return optionsPageWidget;
|
return optionsPageWidget;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when the user presses apply or OK.
|
* Called when the user presses apply or OK.
|
||||||
*
|
*
|
||||||
@ -77,6 +106,8 @@ void LineardialGadgetOptionsPage::apply()
|
|||||||
m_config->setGreenRange(options_page->greenMin->value(),options_page->greenMax->value());
|
m_config->setGreenRange(options_page->greenMin->value(),options_page->greenMax->value());
|
||||||
m_config->setYellowRange(options_page->yellowMin->value(),options_page->yellowMax->value());
|
m_config->setYellowRange(options_page->yellowMin->value(),options_page->yellowMax->value());
|
||||||
m_config->setRedRange(options_page->redMin->value(),options_page->redMax->value());
|
m_config->setRedRange(options_page->redMin->value(),options_page->redMax->value());
|
||||||
|
m_config->setSourceDataObject(options_page->objectName->currentText());
|
||||||
|
m_config->setSourceObjField(options_page->objectField->currentText());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -98,6 +129,20 @@ void LineardialGadgetOptionsPage::on_loadFile_clicked()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Fills in the field1 combo box when value is changed in the
|
||||||
|
object1 field
|
||||||
|
*/
|
||||||
|
void LineardialGadgetOptionsPage::on_objectName_currentIndexChanged(QString val) {
|
||||||
|
options_page->objectField->clear();
|
||||||
|
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
|
||||||
|
UAVObjectManager *objManager = pm->getObject<UAVObjectManager>();
|
||||||
|
UAVDataObject* obj = dynamic_cast<UAVDataObject*>( objManager->getObject(val) );
|
||||||
|
QList<UAVObjectField*> fieldList = obj->getFields();
|
||||||
|
foreach (UAVObjectField* field, fieldList) {
|
||||||
|
options_page->objectField->addItem(field->getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void LineardialGadgetOptionsPage::finish()
|
void LineardialGadgetOptionsPage::finish()
|
||||||
{
|
{
|
||||||
|
@ -61,6 +61,8 @@ private:
|
|||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void on_loadFile_clicked();
|
void on_loadFile_clicked();
|
||||||
|
void on_objectName_currentIndexChanged(QString val);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // LINEARDIALGADGETOPTIONSPAGE_H
|
#endif // LINEARDIALGADGETOPTIONSPAGE_H
|
||||||
|
@ -394,7 +394,14 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLineEdit" name="lineEdit"/>
|
<widget class="QComboBox" name="objectName">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="label_19">
|
<widget class="QLabel" name="label_19">
|
||||||
@ -404,7 +411,14 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLineEdit" name="lineEdit_2"/>
|
<widget class="QComboBox" name="objectField">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
@ -44,8 +44,13 @@ LineardialGadgetWidget::LineardialGadgetWidget(QWidget *parent) : QGraphicsView(
|
|||||||
yellow = new QGraphicsSvgItem();
|
yellow = new QGraphicsSvgItem();
|
||||||
red = new QGraphicsSvgItem();
|
red = new QGraphicsSvgItem();
|
||||||
index = new QGraphicsSvgItem();
|
index = new QGraphicsSvgItem();
|
||||||
|
fieldName = new QGraphicsTextItem("Field");
|
||||||
|
fieldName->setDefaultTextColor(QColor("White"));
|
||||||
|
fieldValue = new QGraphicsTextItem("3.0 V");
|
||||||
|
|
||||||
paint();
|
paint();
|
||||||
|
|
||||||
|
obj1 = NULL;
|
||||||
indexTarget = 0;
|
indexTarget = 0;
|
||||||
indexValue = 0;
|
indexValue = 0;
|
||||||
|
|
||||||
@ -53,10 +58,12 @@ LineardialGadgetWidget::LineardialGadgetWidget(QWidget *parent) : QGraphicsView(
|
|||||||
connect(&dialTimer, SIGNAL(timeout()), this, SLOT(moveIndex()));
|
connect(&dialTimer, SIGNAL(timeout()), this, SLOT(moveIndex()));
|
||||||
dialTimer.start(30);
|
dialTimer.start(30);
|
||||||
|
|
||||||
|
#if 0
|
||||||
// Test code for timer to move the index
|
// Test code for timer to move the index
|
||||||
testSpeed=0;
|
testSpeed=0;
|
||||||
connect(&m_testTimer, SIGNAL(timeout()), this, SLOT(testRotate()));
|
connect(&m_testTimer, SIGNAL(timeout()), this, SLOT(testRotate()));
|
||||||
m_testTimer.start(1000);
|
m_testTimer.start(1000);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
LineardialGadgetWidget::~LineardialGadgetWidget()
|
LineardialGadgetWidget::~LineardialGadgetWidget()
|
||||||
@ -64,11 +71,47 @@ LineardialGadgetWidget::~LineardialGadgetWidget()
|
|||||||
// Do nothing
|
// Do nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
void LineardialGadgetWidget::connectInput(QString object1, QString field1) {
|
/*!
|
||||||
|
\brief Connects the widget to the relevant UAVObjects
|
||||||
|
*/
|
||||||
|
void LineardialGadgetWidget::connectInput(QString object1, QString nfield1) {
|
||||||
|
|
||||||
|
if (obj1 != NULL)
|
||||||
|
disconnect(obj1,SIGNAL(objectUpdated(UAVObject*)),this,SLOT(updateIndex(UAVObject*)));
|
||||||
|
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
|
||||||
|
UAVObjectManager *objManager = pm->getObject<UAVObjectManager>();
|
||||||
|
|
||||||
|
std::cout << "Lineadial Connect needles - " << object1.toStdString() << "-"<< nfield1.toStdString() << std::endl;
|
||||||
|
|
||||||
|
// Check validity of arguments first, reject empty args and unknown fields.
|
||||||
|
if (!(object1.isEmpty() || nfield1.isEmpty())) {
|
||||||
|
obj1 = dynamic_cast<UAVDataObject*>( objManager->getObject(object1) );
|
||||||
|
if (obj1 != NULL ) {
|
||||||
|
connect(obj1, SIGNAL(objectUpdated(UAVObject*)), this, SLOT(updateIndex(UAVObject*)));
|
||||||
|
field1 = nfield1;
|
||||||
|
fieldName->setPlainText(nfield1);
|
||||||
|
} else {
|
||||||
|
std::cout << "Error: Object is unknown (" << object1.toStdString() << ") this should not happen." << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\brief Called by the UAVObject which got updated
|
||||||
|
*/
|
||||||
|
void LineardialGadgetWidget::updateIndex(UAVObject *object1) {
|
||||||
|
// Double check that the field exists:
|
||||||
|
UAVObjectField* field = object1->getField(field1);
|
||||||
|
if (field) {
|
||||||
|
double v = field->getDouble();
|
||||||
|
setIndex(v);
|
||||||
|
QString s;
|
||||||
|
s.sprintf("%.2f",v);
|
||||||
|
fieldValue->setPlainText(s);
|
||||||
|
} else {
|
||||||
|
std::cout << "Wrong field, maybe an issue with object disconnection ?" << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void LineardialGadgetWidget::setDialFile(QString dfn)
|
void LineardialGadgetWidget::setDialFile(QString dfn)
|
||||||
{
|
{
|
||||||
@ -83,8 +126,6 @@ void LineardialGadgetWidget::setDialFile(QString dfn)
|
|||||||
background->setElementId("background");
|
background->setElementId("background");
|
||||||
index->setSharedRenderer(m_renderer);
|
index->setSharedRenderer(m_renderer);
|
||||||
index->setElementId("needle");
|
index->setElementId("needle");
|
||||||
// TODO: transform the green, yellow & red zones
|
|
||||||
// according to their min/max.
|
|
||||||
green->setSharedRenderer(m_renderer);
|
green->setSharedRenderer(m_renderer);
|
||||||
green->setElementId("green");
|
green->setElementId("green");
|
||||||
yellow->setSharedRenderer(m_renderer);
|
yellow->setSharedRenderer(m_renderer);
|
||||||
@ -97,22 +138,38 @@ void LineardialGadgetWidget::setDialFile(QString dfn)
|
|||||||
foreground->setElementId("foreground");
|
foreground->setElementId("foreground");
|
||||||
fgenabled = true;
|
fgenabled = true;
|
||||||
}
|
}
|
||||||
std::cout<<"Dial file loaded"<<std::endl;
|
//std::cout<<"Dial file loaded"<<std::endl;
|
||||||
QGraphicsScene *l_scene = scene();
|
QGraphicsScene *l_scene = scene();
|
||||||
|
|
||||||
|
QMatrix textMatrix = m_renderer->matrixForElement("field");
|
||||||
|
startX = textMatrix.mapRect(m_renderer->boundsOnElement("field")).x();
|
||||||
|
startY = textMatrix.mapRect(m_renderer->boundsOnElement("field")).y();
|
||||||
|
QTransform matrix;
|
||||||
|
matrix.translate(startX,startY);
|
||||||
|
fieldName->setTransform(matrix,false);
|
||||||
|
|
||||||
|
textMatrix = m_renderer->matrixForElement("value");
|
||||||
|
startX = textMatrix.mapRect(m_renderer->boundsOnElement("field")).x();
|
||||||
|
startY = textMatrix.mapRect(m_renderer->boundsOnElement("field")).y();
|
||||||
|
matrix.reset();
|
||||||
|
matrix.translate(startX,startY);
|
||||||
|
fieldValue->setTransform(matrix,false);
|
||||||
|
|
||||||
|
|
||||||
// In order to properly render the Green/Yellow/Red graphs, we need to find out
|
// In order to properly render the Green/Yellow/Red graphs, we need to find out
|
||||||
// the starting location of the bargraph rendering area:
|
// the starting location of the bargraph rendering area:
|
||||||
QMatrix barMatrix = m_renderer->matrixForElement("bargraph");
|
QMatrix barMatrix = m_renderer->matrixForElement("bargraph");
|
||||||
startX = barMatrix.mapRect(m_renderer->boundsOnElement("bargraph")).x();
|
startX = barMatrix.mapRect(m_renderer->boundsOnElement("bargraph")).x();
|
||||||
startY = barMatrix.mapRect(m_renderer->boundsOnElement("bargraph")).y();
|
startY = barMatrix.mapRect(m_renderer->boundsOnElement("bargraph")).y();
|
||||||
std::cout << "StartX: " << startX << std::endl;
|
//std::cout << "StartX: " << startX << std::endl;
|
||||||
std::cout << "StartY: " << startY << std::endl;
|
//std::cout << "StartY: " << startY << std::endl;
|
||||||
bargraphWidth = barMatrix.mapRect(m_renderer->boundsOnElement("bargraph")).width();
|
bargraphWidth = barMatrix.mapRect(m_renderer->boundsOnElement("bargraph")).width();
|
||||||
indexHeight = m_renderer->matrixForElement("needle").mapRect(m_renderer->boundsOnElement("needle")).height();
|
indexHeight = m_renderer->matrixForElement("needle").mapRect(m_renderer->boundsOnElement("needle")).height();
|
||||||
indexWidth = m_renderer->matrixForElement("needle").mapRect(m_renderer->boundsOnElement("needle")).width();
|
indexWidth = m_renderer->matrixForElement("needle").mapRect(m_renderer->boundsOnElement("needle")).width();
|
||||||
std::cout << "Index height: " << indexHeight << std::endl;
|
//std::cout << "Index height: " << indexHeight << std::endl;
|
||||||
|
|
||||||
QTransform matrix;
|
// QTransform matrix;
|
||||||
|
matrix.reset();
|
||||||
matrix.translate(startX-indexWidth/2,startY-indexHeight/2);
|
matrix.translate(startX-indexWidth/2,startY-indexHeight/2);
|
||||||
index->setTransform(matrix,false);
|
index->setTransform(matrix,false);
|
||||||
// Now adjust the red/yellow/green zones:
|
// Now adjust the red/yellow/green zones:
|
||||||
@ -163,6 +220,7 @@ void LineardialGadgetWidget::paint()
|
|||||||
l_scene->addItem(yellow);
|
l_scene->addItem(yellow);
|
||||||
l_scene->addItem(green);
|
l_scene->addItem(green);
|
||||||
l_scene->addItem(index);
|
l_scene->addItem(index);
|
||||||
|
l_scene->addItem(fieldName);
|
||||||
l_scene->addItem(foreground);
|
l_scene->addItem(foreground);
|
||||||
|
|
||||||
update();
|
update();
|
||||||
|
@ -29,6 +29,9 @@
|
|||||||
#define LINEARDIALGADGETWIDGET_H_
|
#define LINEARDIALGADGETWIDGET_H_
|
||||||
|
|
||||||
#include "lineardialgadgetconfiguration.h"
|
#include "lineardialgadgetconfiguration.h"
|
||||||
|
#include "extensionsystem/pluginmanager.h"
|
||||||
|
#include "uavobjects/uavobjectmanager.h"
|
||||||
|
#include "uavobjects/uavobject.h"
|
||||||
#include <QGraphicsView>
|
#include <QGraphicsView>
|
||||||
#include <QtSvg/QSvgRenderer>
|
#include <QtSvg/QSvgRenderer>
|
||||||
#include <QtSvg/QGraphicsSvgItem>
|
#include <QtSvg/QGraphicsSvgItem>
|
||||||
@ -50,9 +53,12 @@ public:
|
|||||||
void setYellowRange(double min, double max) {yellowMin=min; yellowMax=max;}
|
void setYellowRange(double min, double max) {yellowMin=min; yellowMax=max;}
|
||||||
void setRedRange(double min, double max) {redMin=min; redMax=max;}
|
void setRedRange(double min, double max) {redMin=min; redMax=max;}
|
||||||
void connectInput(QString obj, QString field);
|
void connectInput(QString obj, QString field);
|
||||||
|
|
||||||
void setIndex(double val);
|
void setIndex(double val);
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void updateIndex(UAVObject *object1);
|
||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void paintEvent(QPaintEvent *event);
|
void paintEvent(QPaintEvent *event);
|
||||||
void resizeEvent(QResizeEvent *event);
|
void resizeEvent(QResizeEvent *event);
|
||||||
@ -73,6 +79,9 @@ private:
|
|||||||
QGraphicsSvgItem *yellow;
|
QGraphicsSvgItem *yellow;
|
||||||
QGraphicsSvgItem *red;
|
QGraphicsSvgItem *red;
|
||||||
|
|
||||||
|
QGraphicsTextItem *fieldName;
|
||||||
|
QGraphicsTextItem *fieldValue;
|
||||||
|
|
||||||
// Simple flag to skip rendering if the
|
// Simple flag to skip rendering if the
|
||||||
bool fgenabled; // layer does not exist.
|
bool fgenabled; // layer does not exist.
|
||||||
|
|
||||||
@ -101,6 +110,11 @@ private:
|
|||||||
// Rotation timer
|
// Rotation timer
|
||||||
QTimer dialTimer;
|
QTimer dialTimer;
|
||||||
|
|
||||||
|
// Name of the fields to read when an update is received:
|
||||||
|
UAVDataObject* obj1;
|
||||||
|
QString field1;
|
||||||
|
|
||||||
|
|
||||||
// Test variables
|
// Test variables
|
||||||
int testSpeed;
|
int testSpeed;
|
||||||
QTimer m_testTimer;
|
QTimer m_testTimer;
|
||||||
|
@ -81,6 +81,7 @@ SUBDIRS += plugin_airspeed
|
|||||||
#Linear Dial Gadget
|
#Linear Dial Gadget
|
||||||
plugin_lineardial.subdir = lineardial
|
plugin_lineardial.subdir = lineardial
|
||||||
plugin_lineardial.depends = plugin_coreplugin
|
plugin_lineardial.depends = plugin_coreplugin
|
||||||
|
plugin_lineardial.depends = plugin_uavobjects
|
||||||
SUBDIRS += plugin_lineardial
|
SUBDIRS += plugin_lineardial
|
||||||
|
|
||||||
#System health Gadget
|
#System health Gadget
|
||||||
|
Loading…
Reference in New Issue
Block a user