1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2024-11-29 07:24:13 +01:00

LP-525 Added tinyFISH GCS HW page

This commit is contained in:
Vladimir Zidar 2017-07-06 22:21:31 +02:00
parent 657499c0d6
commit 4df72a2f5f
6 changed files with 870 additions and 77 deletions

View File

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>605</width>
<height>208</height>
<width>604</width>
<height>189</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_10">
@ -67,28 +67,12 @@
</property>
</widget>
</item>
<item row="2" column="1" rowspan="5" colspan="2">
<item row="2" column="4" rowspan="5" colspan="2">
<layout class="QGridLayout" name="gridLayout_2">
<property name="verticalSpacing">
<number>-1</number>
</property>
<item row="3" column="0">
<widget class="QLabel" name="lbGPSSpeed">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>GPS Speed</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="1">
<item row="4" column="1">
<widget class="QComboBox" name="cbTelemetrySpeed">
<property name="enabled">
<bool>true</bool>
@ -98,7 +82,7 @@
</property>
</widget>
</item>
<item row="1" column="0">
<item row="4" column="0">
<widget class="QLabel" name="lbTelemetrySpeed">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
@ -114,60 +98,14 @@
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="lbGPSProtocol">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>GPS Protocol</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="cbGPSProtocol">
<property name="enabled">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="lbDebugConsoleSpeed">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>DebugConsole Speed</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QComboBox" name="cbDebugConsoleSpeed">
<property name="enabled">
<bool>true</bool>
</property>
</widget>
</item>
<item row="3" column="1">
<item row="6" column="1">
<widget class="QComboBox" name="cbGPSSpeed">
<property name="enabled">
<bool>true</bool>
</property>
</widget>
</item>
<item row="5" column="0" colspan="2">
<item row="8" column="0" colspan="2">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
@ -183,9 +121,71 @@
</property>
</spacer>
</item>
<item row="5" column="1">
<widget class="QComboBox" name="cbDebugConsoleSpeed">
<property name="enabled">
<bool>true</bool>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="lbDebugConsoleSpeed">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>DebugConsole Speed</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="lbGPSSpeed">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>GPS Speed</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="lbGPSProtocol">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>GPS Protocol</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QComboBox" name="cbGPSProtocol">
<property name="enabled">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="4" rowspan="5" colspan="2">
<item row="2" column="1" rowspan="5" colspan="2">
<layout class="QGridLayout" name="gridLayout_3">
<property name="verticalSpacing">
<number>-1</number>

View File

@ -50,6 +50,7 @@ HEADERS += \
dblspindelegate.h \
configrevohwwidget.h \
configspracingf3evohwwidget.h \
configtinyfishhwwidget.h \
commonhwsettingswidget.h \
calibration/calibrationutils.h \
calibration/wizardstate.h \
@ -99,6 +100,7 @@ SOURCES += \
dblspindelegate.cpp \
configrevohwwidget.cpp \
configspracingf3evohwwidget.cpp \
configtinyfishhwwidget.cpp \
commonhwsettingswidget.cpp \
calibration/calibrationutils.cpp \
calibration/wizardstate.cpp \
@ -138,6 +140,7 @@ FORMS += \
configrevohwwidget.ui \
autotune.ui \
configspracingf3evohwwidget.ui \
configtinyfishhwwidget.ui \
commonhwsettingswidget.ui \
oplink.ui \
configrevonanohwwidget.ui \

View File

@ -43,6 +43,7 @@
#include "configrevonanohwwidget.h"
#include "configsparky2hwwidget.h"
#include "configspracingf3evohwwidget.h"
#include "configtinyfishhwwidget.h"
#include "defaultconfigwidget.h"
#include <extensionsystem/pluginmanager.h>
@ -252,8 +253,7 @@ void ConfigGadgetWidget::onAutopilotConnect()
widget = new ConfigSparky2HWWidget(this);
widget->bind();
stackWidget->replaceTab(ConfigGadgetWidget::Hardware, widget);
} else if ((board & 0xff00) == 0x1000) {
// SPRacingF3
} else if ((board & 0xff00) == 0x1000) { // F3 boards
ConfigTaskWidget *widget;
widget = new ConfigRevoWidget(this);
widget->bind();
@ -261,15 +261,22 @@ void ConfigGadgetWidget::onAutopilotConnect()
widget = 0;
if (board == 0x1001) {
switch (board) {
case 0x1001:
// widget = new ConfigSPRacingF3HWWidget(this);
} else if (board == 0x1002 || board == 0x1003) { // SpracingF3 EVO or NucleoF303RE
break;
case 0x1002:
case 0x1003:
widget = new ConfigSPRacingF3EVOHWWidget(this);
} else if (board == 0x1005) {
break;
case 0x1005:
// widget = new ConfigPikoBLXHWWidget(this);
} else if (board == 0x1006) {
// widget = new ConfigTinyFISHHWWidget(this);
break;
case 0x1006:
widget = new ConfigTinyFISHHWWidget(this);
break;
}
if (widget) {
widget->bind();
stackWidget->replaceTab(ConfigGadgetWidget::Hardware, widget);

View File

@ -0,0 +1,157 @@
/**
******************************************************************************
*
* @file configtinyfishhwwidget.cpp
* @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2017.
* @addtogroup GCSPlugins GCS Plugins
* @{
* @addtogroup ConfigPlugin Config Plugin
* @{
* @brief TinyFISH FC hardware configuration panel
*****************************************************************************/
/*
* 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; either 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
* for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "configtinyfishhwwidget.h"
#include "ui_configtinyfishhwwidget.h"
#include "hwsettings.h"
#include "hwtinyfishsettings.h"
#include <QDebug>
ConfigTinyFISHHWWidget::ConfigTinyFISHHWWidget(QWidget *parent) : ConfigTaskWidget(parent)
{
m_ui = new Ui_TinyFISHHWWidget();
m_ui->setupUi(this);
// must be done before auto binding !
setWikiURL("TinyFISH+Configuration");
addAutoBindings();
addUAVObject("HwSettings");
addUAVObject("HwTinyFISHSettings");
addWidgetBinding("HwTinyFISHSettings", "UART3Port", m_ui->cbUART3, 0, 1, true);
addWidgetBinding("HwTinyFISHSettings", "LEDPort", m_ui->cbLEDPort);
connect(m_ui->cbUART3, static_cast<void(QComboBox::*) (int)>(&QComboBox::currentIndexChanged), this, &ConfigTinyFISHHWWidget::UART3Changed);
m_ui->commonHWSettings->registerWidgets(*this);
connect(m_ui->commonHWSettings, &CommonHWSettingsWidget::USBVCPFunctionChanged, this, &ConfigTinyFISHHWWidget::USBVCPFunctionChanged);
updateFeatures();
}
ConfigTinyFISHHWWidget::~ConfigTinyFISHHWWidget()
{
// Do nothing
}
void ConfigTinyFISHHWWidget::refreshWidgetsValuesImpl(UAVObject *obj)
{
Q_UNUSED(obj);
UART3Changed(0);
}
void ConfigTinyFISHHWWidget::updateObjectsFromWidgetsImpl()
{
updateFeatures();
}
void ConfigTinyFISHHWWidget::updateFeatures()
{
quint32 features = CommonHWSettingsWidget::F_USB;
switch (getComboboxSelectedOption(m_ui->cbUART3)) {
case HwTinyFISHSettings::UART3PORT_TELEMETRY:
features |= CommonHWSettingsWidget::F_TELEMETRY;
break;
case HwTinyFISHSettings::UART3PORT_DSM:
features |= CommonHWSettingsWidget::F_DSM;
break;
case HwTinyFISHSettings::UART3PORT_SBUS:
features |= CommonHWSettingsWidget::F_SBUS;
break;
case HwTinyFISHSettings::UART3PORT_GPS:
features |= CommonHWSettingsWidget::F_GPS;
break;
case HwTinyFISHSettings::UART3PORT_DEBUGCONSOLE:
features |= CommonHWSettingsWidget::F_DEBUGCONSOLE;
break;
default:
break;
}
m_ui->commonHWSettings->setFeatures(features);
HwSettings::GetInstance(getObjectManager())
->setOptionalModules(HwSettings::OPTIONALMODULES_GPS,
(features & CommonHWSettingsWidget::F_GPS)
? HwSettings::OPTIONALMODULES_ENABLED : HwSettings::OPTIONALMODULES_DISABLED);
}
bool ConfigTinyFISHHWWidget::optionConflict(int uartOption, int vcpOption)
{
return (vcpOption == HwSettings::USB_VCPPORT_DEBUGCONSOLE
&& uartOption == HwTinyFISHSettings::UART3PORT_DEBUGCONSOLE)
|| (vcpOption == HwSettings::USB_VCPPORT_MAVLINK
&& uartOption == HwTinyFISHSettings::UART3PORT_MAVLINK);
}
void ConfigTinyFISHHWWidget::UARTxChanged(QComboBox *cbUARTx)
{
/* Everything except HwTinyFISHSettings::UARTPORT_DISABLED and HwTinyFISHSettings::UARTPORT_DSM
* is allowed on single port only.
* HoTT SUMD & SUMH belong to the same receiver group, therefore cannot be configure at the same time
*/
int option = getComboboxSelectedOption(cbUARTx);
if (option != HwTinyFISHSettings::UART3PORT_DISABLED && option != HwTinyFISHSettings::UART3PORT_DSM) {
QComboBox *cbUSBVCP = m_ui->commonHWSettings->USBVCPComboBox();
if (optionConflict(option, getComboboxSelectedOption(cbUSBVCP))) {
setComboboxSelectedOption(cbUSBVCP, HwSettings::USB_VCPPORT_DISABLED);
}
}
updateFeatures();
}
void ConfigTinyFISHHWWidget::USBVCPFunctionChanged(int index)
{
Q_UNUSED(index);
int vcpOption = getComboboxSelectedOption(m_ui->commonHWSettings->USBVCPComboBox());
for (int i = 0; i < 3; ++i) {
if (optionConflict(getComboboxSelectedOption(m_ui->cbUART3), vcpOption)) {
setComboboxSelectedOption(m_ui->cbUART3, HwTinyFISHSettings::UART3PORT_DISABLED);
}
}
updateFeatures();
}
void ConfigTinyFISHHWWidget::UART3Changed(int index)
{
Q_UNUSED(index);
UARTxChanged(m_ui->cbUART3);
}

View File

@ -0,0 +1,61 @@
/**
******************************************************************************
*
* @file configtinyfishhwwidget.h
* @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2017.
* @addtogroup GCSPlugins GCS Plugins
* @{
* @addtogroup ConfigPlugin Config Plugin
* @{
* @brief TinyFISH FC hardware configuration panel
*****************************************************************************/
/*
* 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; either 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
* for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef CONFIGTINYFISHHWWIDGET_H
#define CONFIGTINYFISHHWWIDGET_H
#include "../uavobjectwidgetutils/configtaskwidget.h"
class Ui_TinyFISHHWWidget;
class UAVObject;
class QWidget;
class ConfigTinyFISHHWWidget : public ConfigTaskWidget {
Q_OBJECT
public:
ConfigTinyFISHHWWidget(QWidget *parent = 0);
~ConfigTinyFISHHWWidget();
protected:
virtual void refreshWidgetsValuesImpl(UAVObject *obj);
virtual void updateObjectsFromWidgetsImpl();
private:
Ui_TinyFISHHWWidget *m_ui;
void UARTxChanged(QComboBox *cbUARTx);
void updateFeatures();
bool optionConflict(int uartOption, int vcpOption);
private slots:
void UART3Changed(int index);
void USBVCPFunctionChanged(int index);
};
#endif // CONFIGTINYFISHHWWIDGET_H

View File

@ -0,0 +1,565 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>TinyFISHHWWidget</class>
<widget class="QWidget" name="TinyFISHHWWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>969</width>
<height>886</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="tab">
<property name="autoFillBackground">
<bool>true</bool>
</property>
<attribute name="title">
<string>HW settings</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_3">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QScrollArea" name="scrollArea">
<property name="palette">
<palette>
<active>
<colorrole role="Base">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="SolidPattern">
<color alpha="0">
<red>232</red>
<green>232</green>
<blue>232</blue>
</color>
</brush>
</colorrole>
</active>
<inactive>
<colorrole role="Base">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="SolidPattern">
<color alpha="0">
<red>232</red>
<green>232</green>
<blue>232</blue>
</color>
</brush>
</colorrole>
</inactive>
<disabled>
<colorrole role="Base">
<brush brushstyle="SolidPattern">
<color alpha="0">
<red>232</red>
<green>232</green>
<blue>232</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="SolidPattern">
<color alpha="0">
<red>232</red>
<green>232</green>
<blue>232</blue>
</color>
</brush>
</colorrole>
</disabled>
</palette>
</property>
<property name="styleSheet">
<string notr="true">border-color: rgb(255, 0, 0);</string>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>939</width>
<height>786</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<property name="leftMargin">
<number>12</number>
</property>
<property name="topMargin">
<number>12</number>
</property>
<property name="rightMargin">
<number>12</number>
</property>
<property name="bottomMargin">
<number>12</number>
</property>
<item row="3" column="2">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="3">
<spacer name="horizontalSpacer_5">
<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 row="1" column="2">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>10</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="2">
<widget class="QLabel" name="label_6">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Changes on this page only take effect after board reset or power cycle</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="0">
<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 row="2" column="2">
<layout class="QGridLayout" name="gridLayout" rowstretch="0,0">
<item row="0" column="3">
<layout class="QGridLayout" name="gridLayout_4">
<item row="1" column="0">
<widget class="QComboBox" name="cbLEDPort"/>
</item>
<item row="2" column="1">
<widget class="QLabel" name="lbUART3">
<property name="text">
<string>UART3</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="0">
<spacer name="verticalSpacer_5">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>75</height>
</size>
</property>
</spacer>
</item>
<item row="3" column="0">
<spacer name="verticalSpacer_6">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>80</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="0">
<widget class="QComboBox" name="cbUART3"/>
</item>
<item row="1" column="1">
<widget class="QLabel" name="lbLEDPort">
<property name="text">
<string>IR/LED</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="1" colspan="2" alignment="Qt::AlignHCenter|Qt::AlignVCenter">
<widget class="QLabel" name="lbBoardImage">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>350</width>
<height>350</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap resource="configgadget.qrc">:/configgadget/images/tinyfish_top.png</pixmap>
</property>
<property name="scaledContents">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="textInteractionFlags">
<set>Qt::NoTextInteraction</set>
</property>
</widget>
</item>
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout_2"/>
</item>
<item row="1" column="0" colspan="4">
<widget class="CommonHWSettingsWidget" name="commonHWSettings" native="true">
<property name="minimumSize">
<size>
<width>20</width>
<height>80</height>
</size>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="spacing">
<number>4</number>
</property>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>369</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="helpButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>25</width>
<height>25</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>25</width>
<height>25</height>
</size>
</property>
<property name="toolTip">
<string>Takes you to the wiki page</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../coreplugin/core.qrc">
<normaloff>:/core/images/helpicon.svg</normaloff>:/core/images/helpicon.svg</iconset>
</property>
<property name="iconSize">
<size>
<width>25</width>
<height>25</height>
</size>
</property>
<property name="flat">
<bool>true</bool>
</property>
<property name="objrelation" stdset="0">
<string notr="true">button:help</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="applyButton">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="palette">
<palette>
<active>
<colorrole role="Base">
<brush brushstyle="SolidPattern">
<color alpha="0">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>232</red>
<green>232</green>
<blue>232</blue>
</color>
</brush>
</colorrole>
</active>
<inactive>
<colorrole role="Base">
<brush brushstyle="SolidPattern">
<color alpha="0">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>232</red>
<green>232</green>
<blue>232</blue>
</color>
</brush>
</colorrole>
</inactive>
<disabled>
<colorrole role="Base">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>232</red>
<green>232</green>
<blue>232</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>232</red>
<green>232</green>
<blue>232</blue>
</color>
</brush>
</colorrole>
</disabled>
</palette>
</property>
<property name="toolTip">
<string>Send to board but don't write in SD.
Beware of not locking yourself out!</string>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>Apply</string>
</property>
<property name="iconSize">
<size>
<width>16</width>
<height>16</height>
</size>
</property>
<property name="checkable">
<bool>false</bool>
</property>
<property name="objrelation" stdset="0">
<string notr="true">button:apply</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="saveButton">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
<string>Applies and Saves all settings to SD.
Beware of not locking yourself out!</string>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>Save</string>
</property>
<property name="objrelation" stdset="0">
<string notr="true">button:save</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>CommonHWSettingsWidget</class>
<extends>QWidget</extends>
<header>commonhwsettingswidget.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources>
<include location="../coreplugin/core.qrc"/>
<include location="configgadget.qrc"/>
</resources>
<connections/>
</ui>