Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qgroundcontrol
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
7f80a1db
Unverified
Commit
7f80a1db
authored
Jan 13, 2018
by
Don Gagne
Committed by
GitHub
Jan 13, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #6015 from DonLakeFlyer/CustomCommandWidget
Custom Command Widget: Fix all the horribly broken stuff
parents
da09b78b
a4d63612
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
50 additions
and
43 deletions
+50
-43
CustomCommandWidget.qml
src/ViewWidgets/CustomCommandWidget.qml
+50
-32
CustomCommandWidgetController.cc
src/ViewWidgets/CustomCommandWidgetController.cc
+0
-8
CustomCommandWidgetController.h
src/ViewWidgets/CustomCommandWidgetController.h
+0
-3
No files found.
src/ViewWidgets/CustomCommandWidget.qml
View file @
7f80a1db
...
...
@@ -7,25 +7,25 @@
*
****************************************************************************/
/// @file
/// @author Don Gagne <don@thegagnes.com>
import
QtQuick
2.3
import
QtQuick
.
Controls
1.2
import
QtQuick
.
Controls
.
Styles
1.4
import
QtQuick
.
Dialogs
1.2
import
QGroundControl
1.0
import
QGroundControl
.
Palette
1.0
import
QGroundControl
.
Controls
1.0
import
QGroundControl
.
Controllers
1.0
import
QGroundControl
.
ScreenTools
1.0
QGCView
{
id
:
qgcView
viewPanel
:
panel
property
real
_margins
:
ScreenTools
.
defaultFontPixelHeight
property
string
_emptyText
:
"
<p>
"
+
property
var
_activeVehicle
:
QGroundControl
.
multiVehicleManager
.
parameterReadyVehicleAvailable
?
QGroundControl
.
multiVehicleManager
.
activeVehicle
:
null
property
real
_margins
:
ScreenTools
.
defaultFontPixelHeight
property
string
_noVehicleText
:
qsTr
(
"
No vehicle connected
"
)
property
string
_assignQmlFile
:
"
<p>
"
+
"
You can create your own commands and parameter editing user interface in this widget.
"
+
"
You do this by providing your own Qml file.
"
+
"
This support is a work in progress and the details may change somewhat in the future.
"
+
...
...
@@ -34,29 +34,42 @@ QGCView {
"
So make sure to test your changes thoroughly before using them in flight.</p>
"
+
"
<p>Click 'Load Custom Qml file' to provide your custom qml file.</p>
"
+
"
<p>Click 'Reset' to reset to none.</p>
"
+
"
<p>Example usage: http://www.qgroundcontrol.org/custom_command_qml_widgets</p>
"
"
<p>Example usage: http://https://dev.qgroundcontrol.com/en/tools/custom_command_widget.html</p>
"
QGCPalette
{
id
:
qgcPal
;
colorGroupEnabled
:
enabled
}
CustomCommandWidgetController
{
id
:
controller
factPanel
:
panel
onCustomQmlFileChanged
:
_updateLoader
()
}
QGCPalette
{
id
:
qgcPal
;
colorGroupEnabled
:
enabled
}
CustomCommandWidgetController
{
id
:
controller
;
factPanel
:
panel
}
Component.onCompleted
:
_updateLoader
()
on_ActiveVehicleChanged
:
_updateLoader
()
function
_updateLoader
()
{
loader
.
sourceComponent
=
undefined
loader
.
visible
=
false
textOutput
.
text
=
_noVehicleText
if
(
_activeVehicle
)
{
if
(
controller
.
customQmlFile
==
""
)
{
textOutput
.
text
=
_assignQmlFile
}
else
{
loader
.
source
=
controller
.
customQmlFile
}
}
}
QGCViewPanel
{
id
:
panel
anchors.fill
:
parent
Rectangle
{
anchors.fill
:
parent
color
:
qgcPal
.
window
QGCLabel
{
id
:
textOutput
anchors.margins
:
_margins
anchors.left
:
parent
.
left
anchors.right
:
parent
.
right
anchors.top
:
parent
.
top
anchors.bottom
:
buttonRow
.
top
wrapMode
:
Text
.
WordWrap
textFormat
:
Text
.
RichText
text
:
_emptyText
visible
:
!
loader
.
visible
}
Loader
{
id
:
loader
anchors.margins
:
_margins
...
...
@@ -64,37 +77,42 @@ QGCView {
anchors.right
:
parent
.
right
anchors.top
:
parent
.
top
anchors.bottom
:
buttonRow
.
top
source
:
controller
.
customQmlFile
visible
:
false
onStatusChanged
:
{
loader
.
visible
=
true
if
(
loader
.
status
==
Loader
.
Error
)
{
if
(
sourceComponent
.
status
==
Component
.
Error
)
{
textOutput
.
text
=
sourceComponent
.
errorString
()
loader
.
visible
=
false
}
textOutput
.
text
=
sourceComponent
.
errorString
()
}
else
if
(
loader
.
status
==
Loader
.
Ready
)
{
loader
.
visible
=
true
}
}
}
QGCLabel
{
id
:
textOutput
anchors.fill
:
loader
wrapMode
:
Text
.
WordWrap
textFormat
:
Text
.
RichText
visible
:
!
loader
.
visible
}
Row
{
id
:
buttonRow
spacing
:
ScreenTools
.
defaultFontPixelWidth
anchors.margins
:
_margins
anchors.bottom
:
parent
.
bottom
anchors.horizontalCenter
:
parent
.
horizontalCenter
QGCButton
{
text
:
qsTr
(
"
Load Custom Qml file...
"
)
width
:
ScreenTools
.
defaultFontPixelWidth
*
22
onClicked
:
controller
.
selectQmlFile
()
}
QGCButton
{
text
:
qsTr
(
"
Reset
"
)
width
:
ScreenTools
.
defaultFontPixelWidth
*
22
onClicked
:
{
controller
.
clearQmlFile
()
loader
.
visible
=
false
textOutput
.
text
=
_emptyText
}
onClicked
:
controller
.
clearQmlFile
()
}
}
}
...
...
src/ViewWidgets/CustomCommandWidgetController.cc
View file @
7f80a1db
...
...
@@ -28,7 +28,6 @@ CustomCommandWidgetController::CustomCommandWidgetController(void) :
}
QSettings
settings
;
_customQmlFile
=
settings
.
value
(
_settingsKey
).
toString
();
connect
(
qgcApp
()
->
toolbox
()
->
multiVehicleManager
(),
&
MultiVehicleManager
::
activeVehicleChanged
,
this
,
&
CustomCommandWidgetController
::
_activeVehicleChanged
);
}
void
CustomCommandWidgetController
::
sendCommand
(
int
commandId
,
QVariant
componentId
,
QVariant
confirm
,
QVariant
param1
,
QVariant
param2
,
QVariant
param3
,
QVariant
param4
,
QVariant
param5
,
QVariant
param6
,
QVariant
param7
)
...
...
@@ -43,13 +42,6 @@ void CustomCommandWidgetController::sendCommand(int commandId, QVariant componen
}
}
void
CustomCommandWidgetController
::
_activeVehicleChanged
(
Vehicle
*
activeVehicle
)
{
if
(
activeVehicle
)
{
_vehicle
=
activeVehicle
;
}
}
void
CustomCommandWidgetController
::
selectQmlFile
(
void
)
{
QSettings
settings
;
...
...
src/ViewWidgets/CustomCommandWidgetController.h
View file @
7f80a1db
...
...
@@ -32,9 +32,6 @@ public:
signals:
void
customQmlFileChanged
(
const
QString
&
customQmlFile
);
private
slots
:
void
_activeVehicleChanged
(
Vehicle
*
activeVehicle
);
private:
Vehicle
*
_vehicle
;
QString
_customQmlFile
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment