1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-01-18 03:52:11 +01:00

Add "Reset To Defaults" button to Stabilization configuration tab

Also add tootips to Reset/Apply/Save buttons.
This commit is contained in:
Oleg Semyonov 2012-01-02 14:21:01 +02:00 committed by David Ankers
parent 01c910cd2b
commit 911f8fde03
3 changed files with 863 additions and 792 deletions

View File

@ -42,8 +42,7 @@ ConfigStabilizationWidget::ConfigStabilizationWidget(QWidget *parent) : ConfigTa
m_stabilization = new Ui_StabilizationWidget();
m_stabilization->setupUi(this);
setupButtons(m_stabilization->saveStabilizationToRAM,m_stabilization->saveStabilizationToSD);
setupButtons(m_stabilization->saveStabilizationToRAM, m_stabilization->saveStabilizationToSD);
addUAVObject("StabilizationSettings");
@ -71,8 +70,6 @@ ConfigStabilizationWidget::ConfigStabilizationWidget(QWidget *parent) : ConfigTa
connect(m_stabilization->pitchKi, SIGNAL(valueChanged(double)), this, SLOT(updatePitchKI(double)));
connect(m_stabilization->pitchILimit, SIGNAL(valueChanged(double)), this, SLOT(updatePitchILimit(double)));
// Connect the help button
connect(m_stabilization->stabilizationHelp, SIGNAL(clicked()), this, SLOT(openHelp()));
addWidget(m_stabilization->rateRollKp);
addWidget(m_stabilization->rateRollKi);
addWidget(m_stabilization->rateRollILimit);
@ -102,6 +99,9 @@ ConfigStabilizationWidget::ConfigStabilizationWidget(QWidget *parent) : ConfigTa
addWidget(m_stabilization->maximumYaw);
addWidget(m_stabilization->lowThrottleZeroIntegral);
// Connect buttons
connect(m_stabilization->stabilizationResetToDefaults, SIGNAL(clicked()), this, SLOT(resetToDefaults()));
connect(m_stabilization->stabilizationHelp, SIGNAL(clicked()), this, SLOT(openHelp()));
}
ConfigStabilizationWidget::~ConfigStabilizationWidget()
@ -195,21 +195,17 @@ void ConfigStabilizationWidget::updatePitchILimit(double val)
}
}
/*******************************
* Stabilization Settings
*****************************/
/**
Request stabilization settings from the board
* Refresh UI with new settings of StabilizationSettings object
* (either from active configuration or just loaded defaults
* to be applied or saved)
*/
void ConfigStabilizationWidget::refreshWidgetsValues()
void ConfigStabilizationWidget::refreshUIValues(StabilizationSettings::DataFields &stabData)
{
bool dirty=isDirty();
// Not needed anymore as this slot is only called whenever we get
// a signal that the object was just updated
// stabSettings->requestUpdate();
StabilizationSettings::DataFields stabData = stabSettings->getData();
// Now fill in all the fields, this is fairly tedious:
m_stabilization->rateRollKp->setValue(stabData.RollRatePID[StabilizationSettings::ROLLRATEPID_KP]);
m_stabilization->rateRollKi->setValue(stabData.RollRatePID[StabilizationSettings::ROLLRATEPID_KI]);
@ -247,15 +243,25 @@ void ConfigStabilizationWidget::refreshWidgetsValues()
m_stabilization->maximumPitch->setValue(stabData.MaximumRate[StabilizationSettings::MAXIMUMRATE_PITCH]);
m_stabilization->maximumYaw->setValue(stabData.MaximumRate[StabilizationSettings::MAXIMUMRATE_YAW]);
m_stabilization->lowThrottleZeroIntegral->setChecked(stabData.LowThrottleZeroIntegral==StabilizationSettings::LOWTHROTTLEZEROINTEGRAL_TRUE ? true : false);
setDirty(dirty);
}
/**
Request stabilization settings from the board
*/
void ConfigStabilizationWidget::refreshWidgetsValues()
{
bool dirty=isDirty();
// Not needed anymore as this slot is only called whenever we get
// a signal that the object was just updated
// stabSettings->requestUpdate();
StabilizationSettings::DataFields stabData = stabSettings->getData();
refreshUIValues(stabData);
setDirty(dirty);
}
/**
Send telemetry settings to the board
*/
void ConfigStabilizationWidget::updateObjectsFromWidgets()
{
StabilizationSettings::DataFields stabData = stabSettings->getData();
@ -298,7 +304,6 @@ void ConfigStabilizationWidget::updateObjectsFromWidgets()
stabData.LowThrottleZeroIntegral = (m_stabilization->lowThrottleZeroIntegral->isChecked() ? StabilizationSettings::LOWTHROTTLEZEROINTEGRAL_TRUE :StabilizationSettings::LOWTHROTTLEZEROINTEGRAL_FALSE);
stabSettings->setData(stabData); // this is atomic
}
@ -311,9 +316,16 @@ void ConfigStabilizationWidget::realtimeUpdateToggle(bool state)
}
}
void ConfigStabilizationWidget::openHelp()
void ConfigStabilizationWidget::resetToDefaults()
{
QDesktopServices::openUrl( QUrl("http://wiki.openpilot.org/display/Doc/Stabilization+panel", QUrl::StrictMode) );
StabilizationSettings stabDefaults;
StabilizationSettings::DataFields defaults = stabDefaults.getData();
bool dirty=isDirty();
refreshUIValues(defaults);
setDirty(dirty);
}
void ConfigStabilizationWidget::openHelp()
{
QDesktopServices::openUrl( QUrl("http://wiki.openpilot.org/display/Doc/Stabilization+panel", QUrl::StrictMode) );
}

View File

@ -49,11 +49,13 @@ private:
Ui_StabilizationWidget *m_stabilization;
StabilizationSettings* stabSettings;
QTimer updateTimer;
void refreshUIValues(StabilizationSettings::DataFields &stabData);
private slots:
virtual void refreshWidgetsValues();
void updateObjectsFromWidgets();
void realtimeUpdateToggle(bool);
void resetToDefaults();
void openHelp();
void updateRateRollKP(double);
@ -73,4 +75,4 @@ private slots:
void updatePitchILimit(double);
};
#endif // ConfigStabilizationWidget_H
#endif // CONFIGSTABILIZATIONWIDGET_H

View File

@ -747,8 +747,24 @@ automatically every 300ms, which will help for fast tuning.</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="stabilizationResetToDefaults">
<property name="toolTip">
<string>Load default Stabilization settings
Loaded settings are not applied automatically. You have to click the
Apply or Save button afterwards.</string>
</property>
<property name="text">
<string>Reset To Defaults</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="saveStabilizationToRAM">
<property name="toolTip">
<string>Send settings to the board but do not save to the non-volatile memory</string>
</property>
<property name="text">
<string>Apply</string>
</property>
@ -756,6 +772,9 @@ automatically every 300ms, which will help for fast tuning.</string>
</item>
<item>
<widget class="QPushButton" name="saveStabilizationToSD">
<property name="toolTip">
<string>Send settings to the board and save to the non-volatile memory</string>
</property>
<property name="text">
<string>Save</string>
</property>
@ -765,6 +784,44 @@ automatically every 300ms, which will help for fast tuning.</string>
</item>
</layout>
</widget>
<tabstops>
<tabstop>scrollArea</tabstop>
<tabstop>rateRollKp</tabstop>
<tabstop>rateRollKi</tabstop>
<tabstop>rateRollILimit</tabstop>
<tabstop>linkRateRP</tabstop>
<tabstop>ratePitchKp</tabstop>
<tabstop>ratePitchKi</tabstop>
<tabstop>ratePitchILimit</tabstop>
<tabstop>rateYawKp</tabstop>
<tabstop>rateYawKi</tabstop>
<tabstop>rateYawILimit</tabstop>
<tabstop>rollKp</tabstop>
<tabstop>rollKi</tabstop>
<tabstop>rollILimit</tabstop>
<tabstop>linkAttitudeRP</tabstop>
<tabstop>pitchKp</tabstop>
<tabstop>pitchKi</tabstop>
<tabstop>pitchILimit</tabstop>
<tabstop>yawKp</tabstop>
<tabstop>yawKi</tabstop>
<tabstop>yawILimit</tabstop>
<tabstop>rollMax</tabstop>
<tabstop>pitchMax</tabstop>
<tabstop>yawMax</tabstop>
<tabstop>manualRoll</tabstop>
<tabstop>manualPitch</tabstop>
<tabstop>manualYaw</tabstop>
<tabstop>maximumRoll</tabstop>
<tabstop>maximumPitch</tabstop>
<tabstop>maximumYaw</tabstop>
<tabstop>lowThrottleZeroIntegral</tabstop>
<tabstop>realTimeUpdates</tabstop>
<tabstop>stabilizationHelp</tabstop>
<tabstop>stabilizationResetToDefaults</tabstop>
<tabstop>saveStabilizationToRAM</tabstop>
<tabstop>saveStabilizationToSD</tabstop>
</tabstops>
<resources>
<include location="../coreplugin/core.qrc"/>
</resources>