diff --git a/lib/mac32-gcc40/lib/libOpenThreads.dylib b/lib/mac32-gcc40/lib/libOpenThreads.dylib new file mode 100755 index 0000000000000000000000000000000000000000..759805dfa4cd51d6fb7e69d9f36ad64e46dba367 Binary files /dev/null and b/lib/mac32-gcc40/lib/libOpenThreads.dylib differ diff --git a/lib/mac32-gcc40/lib/libosg.dylib b/lib/mac32-gcc40/lib/libosg.dylib new file mode 100755 index 0000000000000000000000000000000000000000..20b19fbc8b82c48758813cad783867ca0d025cac Binary files /dev/null and b/lib/mac32-gcc40/lib/libosg.dylib differ diff --git a/lib/mac32-gcc40/lib/libosgAnimation.dylib b/lib/mac32-gcc40/lib/libosgAnimation.dylib new file mode 100755 index 0000000000000000000000000000000000000000..df4115b283b5162e28d6931019342217c7327bfc Binary files /dev/null and b/lib/mac32-gcc40/lib/libosgAnimation.dylib differ diff --git a/lib/mac32-gcc40/lib/libosgDB.dylib b/lib/mac32-gcc40/lib/libosgDB.dylib new file mode 100755 index 0000000000000000000000000000000000000000..6c77fa7a3acf3b0ae31fc2b83bd7226972d5fcea Binary files /dev/null and b/lib/mac32-gcc40/lib/libosgDB.dylib differ diff --git a/lib/mac32-gcc40/lib/libosgFX.dylib b/lib/mac32-gcc40/lib/libosgFX.dylib new file mode 100755 index 0000000000000000000000000000000000000000..01f96e26d5fd935308c8b8a201711fe412ebc543 Binary files /dev/null and b/lib/mac32-gcc40/lib/libosgFX.dylib differ diff --git a/lib/mac32-gcc40/lib/libosgGA.dylib b/lib/mac32-gcc40/lib/libosgGA.dylib new file mode 100755 index 0000000000000000000000000000000000000000..e15e502fa9187f58a6d32a0d8dee3896bc679d51 Binary files /dev/null and b/lib/mac32-gcc40/lib/libosgGA.dylib differ diff --git a/lib/mac32-gcc40/lib/libosgManipulator.dylib b/lib/mac32-gcc40/lib/libosgManipulator.dylib new file mode 100755 index 0000000000000000000000000000000000000000..ebc4b3f88e4c4c75def386ddc5b3f11dbc9b4c1f Binary files /dev/null and b/lib/mac32-gcc40/lib/libosgManipulator.dylib differ diff --git a/lib/mac32-gcc40/lib/libosgParticle.dylib b/lib/mac32-gcc40/lib/libosgParticle.dylib new file mode 100755 index 0000000000000000000000000000000000000000..7bb166c4e6b1d5ce807644b7e56c871edfba790b Binary files /dev/null and b/lib/mac32-gcc40/lib/libosgParticle.dylib differ diff --git a/lib/mac32-gcc40/lib/libosgPresentation.dylib b/lib/mac32-gcc40/lib/libosgPresentation.dylib new file mode 100755 index 0000000000000000000000000000000000000000..71763523ce8584cb12cd803a3041d0216c8668d0 Binary files /dev/null and b/lib/mac32-gcc40/lib/libosgPresentation.dylib differ diff --git a/lib/mac32-gcc40/lib/libosgShadow.dylib b/lib/mac32-gcc40/lib/libosgShadow.dylib new file mode 100755 index 0000000000000000000000000000000000000000..45a136c362bc36a049141e3230c61b5fd93f64c8 Binary files /dev/null and b/lib/mac32-gcc40/lib/libosgShadow.dylib differ diff --git a/lib/mac32-gcc40/lib/libosgSim.dylib b/lib/mac32-gcc40/lib/libosgSim.dylib new file mode 100755 index 0000000000000000000000000000000000000000..782cf31dcd7d5d365e7cd44177cabc7c21850d68 Binary files /dev/null and b/lib/mac32-gcc40/lib/libosgSim.dylib differ diff --git a/lib/mac32-gcc40/lib/libosgTerrain.dylib b/lib/mac32-gcc40/lib/libosgTerrain.dylib new file mode 100755 index 0000000000000000000000000000000000000000..1ee6de135dc64ecc8faf471ec88b0479c58fc04e Binary files /dev/null and b/lib/mac32-gcc40/lib/libosgTerrain.dylib differ diff --git a/lib/mac32-gcc40/lib/libosgText.dylib b/lib/mac32-gcc40/lib/libosgText.dylib new file mode 100755 index 0000000000000000000000000000000000000000..5b6c38db7d6c6f4ca2cf03b8efdcd6a8bdfc5db9 Binary files /dev/null and b/lib/mac32-gcc40/lib/libosgText.dylib differ diff --git a/lib/mac32-gcc40/lib/libosgUtil.dylib b/lib/mac32-gcc40/lib/libosgUtil.dylib new file mode 100755 index 0000000000000000000000000000000000000000..412e317f28c2047a25180a0ab2baef1855c38860 Binary files /dev/null and b/lib/mac32-gcc40/lib/libosgUtil.dylib differ diff --git a/lib/mac32-gcc40/lib/libosgViewer.dylib b/lib/mac32-gcc40/lib/libosgViewer.dylib new file mode 100755 index 0000000000000000000000000000000000000000..679e9708aab89c18411672b552aa2bf3ad0eae8f Binary files /dev/null and b/lib/mac32-gcc40/lib/libosgViewer.dylib differ diff --git a/lib/mac32-gcc40/lib/libosgVolume.dylib b/lib/mac32-gcc40/lib/libosgVolume.dylib new file mode 100755 index 0000000000000000000000000000000000000000..779c1c5e2ce7b8a8f2d191d2686224c8901573cc Binary files /dev/null and b/lib/mac32-gcc40/lib/libosgVolume.dylib differ diff --git a/lib/mac32-gcc40/lib/libosgWidget.dylib b/lib/mac32-gcc40/lib/libosgWidget.dylib new file mode 100755 index 0000000000000000000000000000000000000000..c4accd7455b286950b7fe3414c3a42f834803f5a Binary files /dev/null and b/lib/mac32-gcc40/lib/libosgWidget.dylib differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_3dc.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_3dc.so new file mode 100755 index 0000000000000000000000000000000000000000..dbdc4c97b21f0ba71bca5f11feaebbb1a0cb0985 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_3dc.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_3ds.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_3ds.so new file mode 100755 index 0000000000000000000000000000000000000000..5edbc25d8742fbbdd47ee7deb1d8b00e1169bf0e Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_3ds.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_QTKit.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_QTKit.so new file mode 100755 index 0000000000000000000000000000000000000000..d8ac69aa55f184ee8a9f5af9558ea50ceca03056 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_QTKit.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_ac.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_ac.so new file mode 100755 index 0000000000000000000000000000000000000000..761d0c554ab9dd76f1a7b9b8935ff803f8d6667d Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_ac.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_bmp.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_bmp.so new file mode 100755 index 0000000000000000000000000000000000000000..5ca5ae651d4f9d0d2611cee2b4fc7852092964f2 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_bmp.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_bsp.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_bsp.so new file mode 100755 index 0000000000000000000000000000000000000000..aa0ec07231e75222d179950e4d641f4a05eba7cd Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_bsp.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_bvh.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_bvh.so new file mode 100755 index 0000000000000000000000000000000000000000..3091b03aa921ba21814e8a244e97fcc009455b4d Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_bvh.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_cfg.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_cfg.so new file mode 100755 index 0000000000000000000000000000000000000000..8bb07e8bc1ef9b9712c9050401baffe411ba4988 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_cfg.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_curl.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_curl.so new file mode 100755 index 0000000000000000000000000000000000000000..22212efa05c7cc9438157a196977e011fc93f65c Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_curl.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_dds.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_dds.so new file mode 100755 index 0000000000000000000000000000000000000000..0298a6d18e0da950e19bec01ce4d7a09dc513d29 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_dds.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osg.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osg.so new file mode 100755 index 0000000000000000000000000000000000000000..78266353306a764d729f78c8ce82cb0177447285 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osg.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osganimation.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osganimation.so new file mode 100755 index 0000000000000000000000000000000000000000..02c8f90c405c15a7e04b1452dd13b30820879d06 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osganimation.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osgfx.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osgfx.so new file mode 100755 index 0000000000000000000000000000000000000000..a3108153313e0dce5ef50a68f06b348af34a3ac2 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osgfx.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osgparticle.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osgparticle.so new file mode 100755 index 0000000000000000000000000000000000000000..e25fc6664e63482ca64e2074d68e990307045e8f Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osgparticle.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osgshadow.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osgshadow.so new file mode 100755 index 0000000000000000000000000000000000000000..e9943cd133bfa02b54260b121aec210a16390251 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osgshadow.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osgsim.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osgsim.so new file mode 100755 index 0000000000000000000000000000000000000000..ed69cca6719377f12aa7962d0378db84b1a2c73c Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osgsim.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osgterrain.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osgterrain.so new file mode 100755 index 0000000000000000000000000000000000000000..532bc52fda66026f7923cd69adae6f49ed9443e8 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osgterrain.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osgtext.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osgtext.so new file mode 100755 index 0000000000000000000000000000000000000000..afad2a9fa24af2c2b30c728e50b67360e7c75b8b Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osgtext.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osgviewer.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osgviewer.so new file mode 100755 index 0000000000000000000000000000000000000000..f787a06c3b0407e99416644ddd7dd55b9fffc62d Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osgviewer.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osgvolume.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osgvolume.so new file mode 100755 index 0000000000000000000000000000000000000000..79dfb093c4ed00951fa649423d3eca4667123c54 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osgvolume.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osgwidget.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osgwidget.so new file mode 100755 index 0000000000000000000000000000000000000000..6d502b726e6a7560616166f366a50277a84dcb85 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_deprecated_osgwidget.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_dicom.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_dicom.so new file mode 100755 index 0000000000000000000000000000000000000000..71539ce9ff35c2633e0a20822edfce705d61d32b Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_dicom.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_dot.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_dot.so new file mode 100755 index 0000000000000000000000000000000000000000..cb781e6d9fd02e9836cdf9b633f4e371fcf6e836 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_dot.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_dw.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_dw.so new file mode 100755 index 0000000000000000000000000000000000000000..04029ee0c56f99172bb4fcd5a27aeae25e5735d6 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_dw.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_dxf.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_dxf.so new file mode 100755 index 0000000000000000000000000000000000000000..771ae8044a2358bf6491b9cdf87b82d782ecb524 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_dxf.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_freetype.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_freetype.so new file mode 100755 index 0000000000000000000000000000000000000000..0a14fa4325d3e2e07a8d994a0c0a7b754e3157cb Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_freetype.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_geo.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_geo.so new file mode 100755 index 0000000000000000000000000000000000000000..65e54a68d0d30e697960c0a699961c1e9deb10ae Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_geo.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_glsl.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_glsl.so new file mode 100755 index 0000000000000000000000000000000000000000..8188e978bf63dcaaadb4980ef096cfba7b06547e Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_glsl.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_gz.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_gz.so new file mode 100755 index 0000000000000000000000000000000000000000..08462e1b635a104b59a84f9e04b1e66da2d6b316 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_gz.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_hdr.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_hdr.so new file mode 100755 index 0000000000000000000000000000000000000000..45a0a787c50b0a11779b7bf3b45e6dc75ca2b237 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_hdr.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_imageio.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_imageio.so new file mode 100755 index 0000000000000000000000000000000000000000..0ec723f87af8a1fb8ffa649b1a8865e1c719f3dc Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_imageio.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_ive.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_ive.so new file mode 100755 index 0000000000000000000000000000000000000000..aac8353ed2a8f24a6158297c885533c26a1e4dcc Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_ive.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_logo.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_logo.so new file mode 100755 index 0000000000000000000000000000000000000000..fca3d3ce09dab0a1eeed3d258f6ef2e8cfbc3072 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_logo.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_lwo.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_lwo.so new file mode 100755 index 0000000000000000000000000000000000000000..7891a58f7136bb2a639dbc4d099328e26725b291 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_lwo.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_lws.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_lws.so new file mode 100755 index 0000000000000000000000000000000000000000..52738938851349b352fe05f443085d20fc08a0e2 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_lws.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_md2.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_md2.so new file mode 100755 index 0000000000000000000000000000000000000000..ce0d3fa0d2fbbcd2bbd214240cd58152d71406e2 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_md2.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_mdl.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_mdl.so new file mode 100755 index 0000000000000000000000000000000000000000..3e6442673fd7fef829b127af1db040db66f9ddf8 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_mdl.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_normals.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_normals.so new file mode 100755 index 0000000000000000000000000000000000000000..16c389c926acf6158e9dc5acf6c4f407f9004657 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_normals.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_obj.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_obj.so new file mode 100755 index 0000000000000000000000000000000000000000..067f9601ef72a5b8880e2090ff7a839290a2ab33 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_obj.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_openflight.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_openflight.so new file mode 100755 index 0000000000000000000000000000000000000000..1b1c5fe199be479060615c850e35b3276749adb4 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_openflight.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_osg.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_osg.so new file mode 100755 index 0000000000000000000000000000000000000000..3efff4638ba47e242f82d6bbf337168347c5ee5b Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_osg.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_osga.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_osga.so new file mode 100755 index 0000000000000000000000000000000000000000..e9cda30bf8927c1537e5d332d6e8111712b600a2 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_osga.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_osgshadow.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_osgshadow.so new file mode 100755 index 0000000000000000000000000000000000000000..7ac506982a1ec37b52c77da90e9118e68ae86cf6 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_osgshadow.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_osgterrain.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_osgterrain.so new file mode 100755 index 0000000000000000000000000000000000000000..4448973ec8d1071d22904c80d728a9d3fad392e2 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_osgterrain.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_osgtgz.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_osgtgz.so new file mode 100755 index 0000000000000000000000000000000000000000..634253470c1f211185e2b4de352b2e7ca721c67a Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_osgtgz.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_osgviewer.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_osgviewer.so new file mode 100755 index 0000000000000000000000000000000000000000..e68c27a6288ce7c5b577104eadb068ef03c999be Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_osgviewer.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_p3d.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_p3d.so new file mode 100755 index 0000000000000000000000000000000000000000..c0f3d33a24a993582b72955cc6ea0db9e22d8560 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_p3d.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_pic.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_pic.so new file mode 100755 index 0000000000000000000000000000000000000000..c85c25900cfffc8378a8722544b8eaa597969557 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_pic.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_ply.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_ply.so new file mode 100755 index 0000000000000000000000000000000000000000..a82ad3ec4d5cf46fe06612b26f5601c48dd8c5ac Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_ply.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_pnm.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_pnm.so new file mode 100755 index 0000000000000000000000000000000000000000..d25465b8e2be675d7cd9d84708c31e3c4ac4efac Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_pnm.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_pov.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_pov.so new file mode 100755 index 0000000000000000000000000000000000000000..0e2bcfbd8975b90debd9a92886bf7c1c7ca64069 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_pov.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_pvr.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_pvr.so new file mode 100755 index 0000000000000000000000000000000000000000..52b60f5fd225d4e926f0791a09e72affd30fcb39 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_pvr.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_qt.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_qt.so new file mode 100755 index 0000000000000000000000000000000000000000..1569a416716af664638d64a1c29c6eb96594d82d Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_qt.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_revisions.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_revisions.so new file mode 100755 index 0000000000000000000000000000000000000000..764c706fa7cd9a158cc9efb546e36660dc84b7c1 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_revisions.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_rgb.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_rgb.so new file mode 100755 index 0000000000000000000000000000000000000000..4c3d928d7bb8032e8ff5105571686c087657a4b6 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_rgb.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_rot.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_rot.so new file mode 100755 index 0000000000000000000000000000000000000000..3514d95a0171b430b25213476a588a65020a0472 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_rot.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_scale.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_scale.so new file mode 100755 index 0000000000000000000000000000000000000000..2189979db57ceb07821bc53b2c4f0ef02b2b8147 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_scale.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osg.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osg.so new file mode 100755 index 0000000000000000000000000000000000000000..abb5bad9c8de6990717225b3fead756d029fc186 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osg.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osganimation.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osganimation.so new file mode 100755 index 0000000000000000000000000000000000000000..267aaf90ebf2b0bdc362b0260973edd9d46f0a58 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osganimation.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osgfx.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osgfx.so new file mode 100755 index 0000000000000000000000000000000000000000..1f8ebcf22bdfb49b2e5a292b121307235e82fa2d Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osgfx.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osgmanipulator.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osgmanipulator.so new file mode 100755 index 0000000000000000000000000000000000000000..0590b7ef347a5d9ae2ffdb8e01c808abcad3757e Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osgmanipulator.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osgparticle.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osgparticle.so new file mode 100755 index 0000000000000000000000000000000000000000..efa77567f40fb243e3d449e26d6e75ea416dcddb Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osgparticle.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osgshadow.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osgshadow.so new file mode 100755 index 0000000000000000000000000000000000000000..95d65bc1ffb85e782088f0cbed5b8306089c8100 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osgshadow.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osgsim.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osgsim.so new file mode 100755 index 0000000000000000000000000000000000000000..57ba67b739acf158523656e76668308b0370572d Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osgsim.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osgterrain.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osgterrain.so new file mode 100755 index 0000000000000000000000000000000000000000..810942f3fcf999ca7e09fa96c75c4be186d8cf7c Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osgterrain.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osgtext.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osgtext.so new file mode 100755 index 0000000000000000000000000000000000000000..c7ab0dd5b886df2c9883c339b777e4a27c12c8ea Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osgtext.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osgvolume.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osgvolume.so new file mode 100755 index 0000000000000000000000000000000000000000..a1bfe0af02d33a481d5a33ff8150436d8051f41a Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_serializers_osgvolume.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_shp.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_shp.so new file mode 100755 index 0000000000000000000000000000000000000000..6cb051bace21ecdf6a33f9fb5b60179f38d3082d Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_shp.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_stl.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_stl.so new file mode 100755 index 0000000000000000000000000000000000000000..0de2e652496acdbc13e1e77198421a173db000be Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_stl.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_tga.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_tga.so new file mode 100755 index 0000000000000000000000000000000000000000..eb1612886001317f4823780da5027235927e5fb1 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_tga.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_tgz.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_tgz.so new file mode 100755 index 0000000000000000000000000000000000000000..dd9aadd01a8f7e66d639870b3db8f136c518a19e Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_tgz.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_trans.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_trans.so new file mode 100755 index 0000000000000000000000000000000000000000..81f3da7e44b75ab068ca17be8a8c6246eedd2714 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_trans.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_txf.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_txf.so new file mode 100755 index 0000000000000000000000000000000000000000..700faa1dae6201af87dcca73cf2ad67fd051b5fd Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_txf.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_txp.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_txp.so new file mode 100755 index 0000000000000000000000000000000000000000..73591f9c79d74419219c18bf610671c82ed021c7 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_txp.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_vtf.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_vtf.so new file mode 100755 index 0000000000000000000000000000000000000000..a3818587e3b508a49dcfc75a0f0c87a8b0300ea2 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_vtf.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_x.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_x.so new file mode 100755 index 0000000000000000000000000000000000000000..ae67e6caff713f74e3ed2ae48bd2bd59c3787ec9 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_x.so differ diff --git a/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_zip.so b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_zip.so new file mode 100755 index 0000000000000000000000000000000000000000..17fbf22502482600a79725ae2c513346c61f6042 Binary files /dev/null and b/lib/mac32-gcc40/lib/osgPlugins-3.0.1/osgdb_zip.so differ diff --git a/qgroundcontrol.pri b/qgroundcontrol.pri index ad394230aaa11d057a1fbfc8223aac71c2252e01..735f9de2be17c1f06356b67593f17501296a0f34 100644 --- a/qgroundcontrol.pri +++ b/qgroundcontrol.pri @@ -92,10 +92,12 @@ macx { QMAKE_POST_LINK += && cp -f $$BASEDIR/images/style-outdoor.css $$TARGETDIR/qgroundcontrol.app/Contents/MacOS # Copy parameter tooltip files QMAKE_POST_LINK += && cp -rf $$BASEDIR/files $$TARGETDIR/qgroundcontrol.app/Contents/MacOS + # Copy libraries + QMAKE_POST_LINK += && cp -rf $$BASEDIR/lib/mac32-gcc40/lib/* $$TARGETDIR/qgroundcontrol.app/Contents/MacOS # Copy model files #QMAKE_POST_LINK += && cp -f $$BASEDIR/models/*.dae $$TARGETDIR/qgroundcontrol.app/Contents/MacOs - exists(/Library/Frameworks/osg.framework):exists(/Library/Frameworks/OpenThreads.framework) { + #exists(/Library/Frameworks/osg.framework):exists(/Library/Frameworks/OpenThreads.framework) { # No check for GLUT.framework since it's a MAC default message("Building support for OpenSceneGraph") DEPENDENCIES_PRESENT += osg @@ -103,24 +105,19 @@ macx { # Include OpenSceneGraph libraries INCLUDEPATH += -framework GLUT \ -framework Cocoa \ - -framework OpenThreads \ - -framework osg \ - -framework osgViewer \ - -framework osgGA \ - -framework osgDB \ - -framework osgText \ - -framework osgWidget + $$BASEDIR/lib/mac32-gcc40/include LIBS += -framework GLUT \ -framework Cocoa \ - -framework OpenThreads \ - -framework osg \ - -framework osgViewer \ - -framework osgGA \ - -framework osgDB \ - -framework osgText \ - -framework osgWidget - } + -L$$BASEDIR/lib/mac32-gcc40/lib \ + -lOpenThreads \ + -losg \ + -losgViewer \ + -losgGA \ + -losgDB \ + -losgText \ + -losgWidget + #} exists(/opt/local/include/libfreenect)|exists(/usr/local/include/libfreenect) { message("Building support for libfreenect") @@ -182,15 +179,6 @@ message("Compiling for linux 32") DEFINES += QGC_OSG_ENABLED } - exists(/usr/include/osgEarth):exists(/usr/include/osg) | exists(/usr/local/include/osgEarth):exists(/usr/include/osg) { - message("Building support for osgEarth") - DEPENDENCIES_PRESENT += osgearth - # Include osgEarth libraries - LIBS += -losgEarth \ - -losgEarthUtil - DEFINES += QGC_OSGEARTH_ENABLED - } - exists(/usr/local/include/libfreenect/libfreenect.h) { message("Building support for libfreenect") DEPENDENCIES_PRESENT += libfreenect @@ -261,15 +249,6 @@ linux-g++-64 { DEFINES += QGC_OSG_ENABLED } - exists(/usr/include/osgEarth) { - message("Building support for osgEarth") - DEPENDENCIES_PRESENT += osgearth - # Include osgEarth libraries - LIBS += -losgEarth \ - -losgEarthUtil - DEFINES += QGC_OSGEARTH_ENABLED - } - exists(/usr/local/include/libfreenect) { message("Building support for libfreenect") DEPENDENCIES_PRESENT += libfreenect diff --git a/qgroundcontrol.pro b/qgroundcontrol.pro index 16f860b3aad4c26f235ad774129c37330822aff5..69d02482fdc69939d96fe39ef0f02c67f0f527a6 100644 --- a/qgroundcontrol.pro +++ b/qgroundcontrol.pro @@ -232,7 +232,8 @@ FORMS += src/ui/MainWindow.ui \ src/ui/map/QGCMapToolBar.ui \ src/ui/QGCMAVLinkInspector.ui \ src/ui/WaypointViewOnlyView.ui \ - src/ui/WaypointEditableView.ui + src/ui/WaypointEditableView.ui \ + src/ui/UnconnectedUASInfoWidget.ui INCLUDEPATH += src \ src/ui \ src/ui/linechart \ @@ -348,7 +349,8 @@ HEADERS += src/MG.h \ src/ui/MAVLinkDecoder.h \ src/ui/WaypointViewOnlyView.h \ src/ui/WaypointViewOnlyView.h \ - src/ui/WaypointEditableView.h + src/ui/WaypointEditableView.h \ + src/ui/UnconnectedUASInfoWidget.h # Google Earth is only supported on Mac OS and Windows with Visual Studio Compiler macx|win32-msvc2008|win32-msvc2010::HEADERS += src/ui/map3D/QGCGoogleEarthView.h @@ -359,7 +361,6 @@ contains(DEPENDENCIES_PRESENT, osg) { HEADERS += src/ui/map3D/Q3DWidget.h \ src/ui/map3D/GCManipulator.h \ src/ui/map3D/ImageWindowGeode.h \ - src/ui/map3D/QOSGWidget.h \ src/ui/map3D/PixhawkCheetahGeode.h \ src/ui/map3D/Pixhawk3DWidget.h \ src/ui/map3D/Q3DWidgetFactory.h \ @@ -370,12 +371,6 @@ contains(DEPENDENCIES_PRESENT, osg) { src/ui/map3D/Imagery.h \ src/ui/map3D/HUDScaleGeode.h \ src/ui/map3D/WaypointGroupNode.h - contains(DEPENDENCIES_PRESENT, osgearth) { - message("Including headers for OSGEARTH") - - # Enable only if OpenSceneGraph is available - HEADERS += src/ui/map3D/QMap3D.h - } } contains(DEPENDENCIES_PRESENT, libfreenect) { message("Including headers for libfreenect") @@ -475,7 +470,8 @@ SOURCES += src/main.cc \ src/ui/QGCMAVLinkInspector.cc \ src/ui/MAVLinkDecoder.cc \ src/ui/WaypointViewOnlyView.cc \ - src/ui/WaypointEditableView.cc + src/ui/WaypointEditableView.cc \ + src/ui/UnconnectedUASInfoWidget.cc # Enable Google Earth only on Mac OS and Windows with Visual Studio compiler macx|win32-msvc2008|win32-msvc2010::SOURCES += src/ui/map3D/QGCGoogleEarthView.cc @@ -488,7 +484,6 @@ contains(DEPENDENCIES_PRESENT, osg) { SOURCES += src/ui/map3D/Q3DWidget.cc \ src/ui/map3D/ImageWindowGeode.cc \ src/ui/map3D/GCManipulator.cc \ - src/ui/map3D/QOSGWidget.cc \ src/ui/map3D/PixhawkCheetahGeode.cc \ src/ui/map3D/Pixhawk3DWidget.cc \ src/ui/map3D/Q3DWidgetFactory.cc \ diff --git a/src/uas/UASWaypointManager.cc b/src/uas/UASWaypointManager.cc index ab870dcbafc16ae88451132604b032afb047a764..e37bd25df5e7a997154785880dbc7e9fb7de8faa 100644 --- a/src/uas/UASWaypointManager.cc +++ b/src/uas/UASWaypointManager.cc @@ -343,7 +343,7 @@ int UASWaypointManager::setCurrentEditable(quint16 seq) void UASWaypointManager::addWaypointViewOnly(Waypoint *wp) { if (wp) - { + { waypointsViewOnly.insert(waypointsViewOnly.size(), wp); connect(wp, SIGNAL(changed(Waypoint*)), this, SLOT(notifyOfChangeViewOnly(Waypoint*))); @@ -451,7 +451,7 @@ void UASWaypointManager::saveWaypoints(const QString &saveFile) QTextStream out(&file); //write the waypoint list version to the first line for compatibility check - out << "QGC WPL 110\r\n"; + out << "QGC WPL 120\r\n"; for (int i = 0; i < waypointsEditable.size(); i++) { @@ -477,7 +477,7 @@ void UASWaypointManager::loadWaypoints(const QString &loadFile) const QStringList &version = in.readLine().split(" "); - if (!(version.size() == 3 && version[0] == "QGC" && version[1] == "WPL" && version[2] == "110")) + if (!(version.size() == 3 && version[0] == "QGC" && version[1] == "WPL" && version[2] == "120")) { emit updateStatusString(tr("The waypoint file is not compatible with the current version of QGroundControl.")); } diff --git a/src/uas/UASWaypointManager.h b/src/uas/UASWaypointManager.h index 0e1bbea4c0a82fcbb7273fb21c75372b27375545..d195fcd4976f5dc0c791565f3478e69b51fc3767 100644 --- a/src/uas/UASWaypointManager.h +++ b/src/uas/UASWaypointManager.h @@ -172,7 +172,7 @@ private: QVector waypoint_buffer; ///< buffer for waypoints during communication QTimer protocol_timer; ///< Timer to catch timeouts bool standalone; ///< If standalone is set, do not write to UAS - int uasid; + quint16 uasid; }; #endif // UASWAYPOINTMANAGER_H diff --git a/src/ui/QGCWaypointListMulti.cc b/src/ui/QGCWaypointListMulti.cc index d460d9b49f08801884f2f9f600a241342b3f2052..2bf3462c84956102c001e0483590a39d93c53e03 100644 --- a/src/ui/QGCWaypointListMulti.cc +++ b/src/ui/QGCWaypointListMulti.cc @@ -4,12 +4,17 @@ QGCWaypointListMulti::QGCWaypointListMulti(QWidget *parent) : QWidget(parent), - ui(new Ui::QGCWaypointListMulti) + ui(new Ui::QGCWaypointListMulti), + offline_uas_id(0) { ui->setupUi(this); setMinimumSize(600, 80); connect(UASManager::instance(), SIGNAL(UASCreated(UASInterface*)), this, SLOT(systemCreated(UASInterface*))); connect(UASManager::instance(), SIGNAL(activeUASSet(int)), this, SLOT(systemSetActive(int))); + + WaypointList* list = new WaypointList(ui->stackedWidget, NULL); + lists.insert(offline_uas_id, list); + ui->stackedWidget->addWidget(list); } void QGCWaypointListMulti::systemDeleted(QObject* uas) diff --git a/src/ui/QGCWaypointListMulti.h b/src/ui/QGCWaypointListMulti.h index 13bfb4ecfa957c944735dc135184c074cc6b0aba..392d79ec1ef197b4bd00c913c2ab14126a02c9db 100644 --- a/src/ui/QGCWaypointListMulti.h +++ b/src/ui/QGCWaypointListMulti.h @@ -26,6 +26,7 @@ public slots: void systemSetActive(int uas); protected: + quint16 offline_uas_id; void changeEvent(QEvent *e); QMap lists; diff --git a/src/ui/UnconnectedUASInfoWidget.cc b/src/ui/UnconnectedUASInfoWidget.cc new file mode 100644 index 0000000000000000000000000000000000000000..84b8e5ae1afc844e95320d4f24ce0e717827be49 --- /dev/null +++ b/src/ui/UnconnectedUASInfoWidget.cc @@ -0,0 +1,14 @@ +#include "UnconnectedUASInfoWidget.h" +#include "ui_UnconnectedUASInfoWidget.h" + +UnconnectedUASInfoWidget::UnconnectedUASInfoWidget(QWidget *parent) : + QGroupBox(parent), + ui(new Ui::UnconnectedUASInfoWidget) +{ + ui->setupUi(this); +} + +UnconnectedUASInfoWidget::~UnconnectedUASInfoWidget() +{ + delete ui; +} diff --git a/src/ui/UnconnectedUASInfoWidget.h b/src/ui/UnconnectedUASInfoWidget.h new file mode 100644 index 0000000000000000000000000000000000000000..ea349f85790f126ad526313e9c490fc63af3dbe6 --- /dev/null +++ b/src/ui/UnconnectedUASInfoWidget.h @@ -0,0 +1,22 @@ +#ifndef UNCONNECTEDUASINFOWIDGET_H +#define UNCONNECTEDUASINFOWIDGET_H + +#include + +namespace Ui { + class UnconnectedUASInfoWidget; +} + +class UnconnectedUASInfoWidget : public QGroupBox +{ + Q_OBJECT + +public: + explicit UnconnectedUASInfoWidget(QWidget *parent = 0); + ~UnconnectedUASInfoWidget(); + +private: + Ui::UnconnectedUASInfoWidget *ui; +}; + +#endif // UNCONNECTEDUASINFOWIDGET_H diff --git a/src/ui/UnconnectedUASInfoWidget.ui b/src/ui/UnconnectedUASInfoWidget.ui new file mode 100644 index 0000000000000000000000000000000000000000..b87164620b55abc7709a3c236a25121bd5e13e4d --- /dev/null +++ b/src/ui/UnconnectedUASInfoWidget.ui @@ -0,0 +1,59 @@ + + + UnconnectedUASInfoWidget + + + + 0 + 0 + 279 + 114 + + + + + + + border:0; + + + + + + + + + 0 + + + Qt::ScrollBarAlwaysOff + + + Qt::ScrollBarAlwaysOff + + + QTextEdit::AutoAll + + + false + + + true + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:20pt; font-weight:600; color:#b5b5b5;">NO UAV</span></p></td></tr></table></body></html> + + + + + + + + diff --git a/src/ui/WaypointEditableView.cc b/src/ui/WaypointEditableView.cc index 156a2189c8026c3d00ad7d69e9027b83968dfd98..378f69bfb29f2ce62f5737f9608906e12bc358ca 100644 --- a/src/ui/WaypointEditableView.cc +++ b/src/ui/WaypointEditableView.cc @@ -364,13 +364,13 @@ void WaypointEditableView::changedCurrent(int state) { if (wp->getCurrent() == true) //User clicked on the waypoint, that is already current { - qDebug() << "Editable " << wp->getId() << " changedCurrent: State 0, current true" ; + //qDebug() << "Editable " << wp->getId() << " changedCurrent: State 0, current true" ; m_ui->selectedBox->setChecked(true); m_ui->selectedBox->setCheckState(Qt::Checked); } else { - qDebug() << "Editable " << wp->getId() << " changedCurrent: State 0, current false"; + //qDebug() << "Editable " << wp->getId() << " changedCurrent: State 0, current false"; m_ui->selectedBox->setChecked(false); m_ui->selectedBox->setCheckState(Qt::Unchecked); //wp->setCurrent(false); @@ -378,7 +378,7 @@ void WaypointEditableView::changedCurrent(int state) } else { - qDebug() << "Editable " << wp->getId() << " changedCurrent: State 2"; + //qDebug() << "Editable " << wp->getId() << " changedCurrent: State 2"; wp->setCurrent(true); emit changeCurrentWaypoint(wp->getId()); //the slot changeCurrentWaypoint() in WaypointList sets all other current flags to false } diff --git a/src/ui/WaypointList.cc b/src/ui/WaypointList.cc index 4b323e44239db05f604727167eb62d40d7ad7c6a..09db4ec4e11f28537390caf50073a141d8184e2f 100644 --- a/src/ui/WaypointList.cc +++ b/src/ui/WaypointList.cc @@ -49,6 +49,7 @@ WaypointList::WaypointList(QWidget *parent, UASInterface* uas) : mavYaw(0.0), m_ui(new Ui::WaypointList) { + m_ui->setupUi(this); //EDIT TAB @@ -70,6 +71,9 @@ WaypointList::WaypointList(QWidget *parent, UASInterface* uas) : // SEND WAYPOINTS connect(m_ui->transmitButton, SIGNAL(clicked()), this, SLOT(transmit())); + // DELETE ALL WAYPOINTS + connect(m_ui->clearWPListButton, SIGNAL(clicked()), this, SLOT(clearWPWidget())); + // REQUEST WAYPOINTS connect(m_ui->readButton, SIGNAL(clicked()), this, SLOT(read())); @@ -93,6 +97,25 @@ WaypointList::WaypointList(QWidget *parent, UASInterface* uas) : // SET UAS AFTER ALL SIGNALS/SLOTS ARE CONNECTED + if (uas) + { + qDebug() << "setUAS" ; + WPM = uas->getWaypointManager(); + } + else + { + qDebug() << "setUAS failed" ; + // Hide buttons, which don't make sense without valid UAS + m_ui->positionAddButton->hide(); + m_ui->transmitButton->hide(); + m_ui->readButton->hide(); + //FIXME: The whole "Onboard Waypoints"-tab should be hidden, instead of "refresh" button + m_ui->refreshButton->hide(); + UnconnectedUASInfoWidget* inf = new UnconnectedUASInfoWidget(this); + viewOnlyListLayout->insertWidget(0, inf); + WPM = new UASWaypointManager(NULL); + } + setUAS(uas); // STATUS LABEL @@ -131,47 +154,46 @@ void WaypointList::updateAttitude(UASInterface* uas, double roll, double pitch, void WaypointList::setUAS(UASInterface* uas) { - if (this->uas == NULL && uas != NULL) + //if (this->uas == NULL && uas != NULL) + if (this->uas == NULL) { this->uas = uas; connect(uas, SIGNAL(localPositionChanged(UASInterface*,double,double,double,quint64)), this, SLOT(updatePosition(UASInterface*,double,double,double,quint64))); connect(uas, SIGNAL(attitudeChanged(UASInterface*,double,double,double,quint64)), this, SLOT(updateAttitude(UASInterface*,double,double,double,quint64))); - connect(uas->getWaypointManager(), SIGNAL(updateStatusString(const QString &)), this, SLOT(updateStatusLabel(const QString &))); - connect(uas->getWaypointManager(), SIGNAL(waypointEditableListChanged(void)), this, SLOT(waypointEditableListChanged(void))); - connect(uas->getWaypointManager(), SIGNAL(waypointEditableChanged(int,Waypoint*)), this, SLOT(updateWaypointEditable(int,Waypoint*))); - connect(uas->getWaypointManager(), SIGNAL(waypointViewOnlyListChanged(void)), this, SLOT(waypointViewOnlyListChanged(void))); - connect(uas->getWaypointManager(), SIGNAL(waypointViewOnlyChanged(int,Waypoint*)), this, SLOT(updateWaypointViewOnly(int,Waypoint*))); - connect(uas->getWaypointManager(), SIGNAL(currentWaypointChanged(quint16)), this, SLOT(currentWaypointViewOnlyChanged(quint16))); - //connect(uas->getWaypointManager(),SIGNAL(loadWPFile()),this,SLOT(setIsLoadFileWP())); - //connect(uas->getWaypointManager(),SIGNAL(readGlobalWPFromUAS(bool)),this,SLOT(setIsReadGlobalWP(bool))); + connect(WPM, SIGNAL(updateStatusString(const QString &)), this, SLOT(updateStatusLabel(const QString &))); + connect(WPM, SIGNAL(waypointEditableListChanged(void)), this, SLOT(waypointEditableListChanged(void))); + connect(WPM, SIGNAL(waypointEditableChanged(int,Waypoint*)), this, SLOT(updateWaypointEditable(int,Waypoint*))); + connect(WPM, SIGNAL(waypointViewOnlyListChanged(void)), this, SLOT(waypointViewOnlyListChanged(void))); + connect(WPM, SIGNAL(waypointViewOnlyChanged(int,Waypoint*)), this, SLOT(updateWaypointViewOnly(int,Waypoint*))); + connect(WPM, SIGNAL(currentWaypointChanged(quint16)), this, SLOT(currentWaypointViewOnlyChanged(quint16))); + //connect(WPM,SIGNAL(loadWPFile()),this,SLOT(setIsLoadFileWP())); + //connect(WPM,SIGNAL(readGlobalWPFromUAS(bool)),this,SLOT(setIsReadGlobalWP(bool))); } } void WaypointList::saveWaypoints() { - if (uas) - { + QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"), "./waypoints.txt", tr("Waypoint File (*.txt)")); - uas->getWaypointManager()->saveWaypoints(fileName); - } + WPM->saveWaypoints(fileName); + } void WaypointList::loadWaypoints() { - if (uas) - { + QString fileName = QFileDialog::getOpenFileName(this, tr("Load File"), ".", tr("Waypoint File (*.txt)")); - uas->getWaypointManager()->loadWaypoints(fileName); - } + WPM->loadWaypoints(fileName); + } void WaypointList::transmit() { if (uas) { - uas->getWaypointManager()->writeWaypoints(); + WPM->writeWaypoints(); } } @@ -179,7 +201,7 @@ void WaypointList::read() { if (uas) { - uas->getWaypointManager()->readWaypoints(true); + WPM->readWaypoints(true); } } @@ -187,38 +209,14 @@ void WaypointList::refresh() { if (uas) { - uas->getWaypointManager()->readWaypoints(false); + WPM->readWaypoints(false); } } void WaypointList::addEditable() { - if (uas) - { - const QVector &waypoints = uas->getWaypointManager()->getWaypointEditableList(); - Waypoint *wp; - if (waypoints.size() > 0) - { - // Create waypoint with last frame - Waypoint *last = waypoints.at(waypoints.size()-1); - wp = new Waypoint(0, last->getX(), last->getY(), last->getZ(), last->getParam1(), last->getParam2(), last->getParam3(), last->getParam4(), - last->getAutoContinue(), false, last->getFrame(), last->getAction()); - uas->getWaypointManager()->addWaypointEditable(wp); - } - else - { - // Create first waypoint at current MAV position - addCurrentPositionWaypoint(); - } - } -} -/* -void WaypointList::addViewOnly() -{ - if (uas) - { - const QVector &waypoints = uas->getWaypointManager()->getWaypointViewOnlyList(); + const QVector &waypoints = WPM->getWaypointEditableList(); Waypoint *wp; if (waypoints.size() > 0) { @@ -226,22 +224,32 @@ void WaypointList::addViewOnly() Waypoint *last = waypoints.at(waypoints.size()-1); wp = new Waypoint(0, last->getX(), last->getY(), last->getZ(), last->getParam1(), last->getParam2(), last->getParam3(), last->getParam4(), last->getAutoContinue(), false, last->getFrame(), last->getAction()); - uas->getWaypointManager()->addWaypointEditable(wp); + WPM->addWaypointEditable(wp); } else - { - // Create first waypoint at current MAV position - addCurrentPositionWaypoint(); + { + if (uas) + { + // Create first waypoint at current MAV position + addCurrentPositionWaypoint(); + } + else + { + //Since no UAV available, create first default waypoint. + updateStatusLabel(tr("No UAV. Added default LOCAL (NED) waypoint")); + wp = new Waypoint(0, 0, 0, -0.50, 0, 0.20, 0, 0,true, true, MAV_FRAME_LOCAL_NED, MAV_CMD_NAV_WAYPOINT); + WPM->addWaypointEditable(wp); + } } - } + } -*/ + void WaypointList::addCurrentPositionWaypoint() -{ +{ if (uas) { - const QVector &waypoints = uas->getWaypointManager()->getWaypointEditableList(); + const QVector &waypoints = WPM->getWaypointEditableList(); Waypoint *wp; Waypoint *last = 0; if (waypoints.size() > 0) @@ -262,7 +270,7 @@ void WaypointList::addCurrentPositionWaypoint() } // Create global frame waypoint per default wp = new Waypoint(0, uas->getLatitude(), uas->getLongitude(), uas->getAltitude(), 0, acceptanceRadiusGlobal, holdTime, yawGlobal, true, true, MAV_FRAME_GLOBAL_RELATIVE_ALT, MAV_CMD_NAV_WAYPOINT); - uas->getWaypointManager()->addWaypointEditable(wp); + WPM->addWaypointEditable(wp); updateStatusLabel(tr("Added GLOBAL, ALTITUDE OVER GROUND waypoint")); } else if (uas->localPositionKnown()) @@ -276,13 +284,13 @@ void WaypointList::addCurrentPositionWaypoint() } // Create local frame waypoint as second option wp = new Waypoint(0, uas->getLocalX(), uas->getLocalY(), uas->getLocalZ(), uas->getYaw(), acceptanceRadiusLocal, holdTime, 0.0, true, true, MAV_FRAME_LOCAL_NED, MAV_CMD_NAV_WAYPOINT); - uas->getWaypointManager()->addWaypointEditable(wp); + WPM->addWaypointEditable(wp); updateStatusLabel(tr("Added LOCAL (NED) waypoint")); } else { // Do nothing - updateStatusLabel(tr("Not adding waypoint, no position known of MAV known yet.")); + updateStatusLabel(tr("Not adding waypoint, no position of MAV known yet.")); } } } @@ -295,24 +303,20 @@ void WaypointList::updateStatusLabel(const QString &string) m_ui->viewStatusLabel->setText(string); } +// Request UASWaypointManager to send the SET_CURRENT message to UAV void WaypointList::changeCurrentWaypoint(quint16 seq) { if (uas) { - uas->getWaypointManager()->setCurrentWaypoint(seq); + WPM->setCurrentWaypoint(seq); } } - +// Request UASWaypointManager to set the new "current" and make sure all other waypoints are not "current" void WaypointList::currentWaypointEditableChanged(quint16 seq) { - qDebug() << "WaypointList::currentWaypointEditableChanged"; - - if (uas) - { - uas->getWaypointManager()->setCurrentEditable(seq); - /* - const QVector &waypoints = uas->getWaypointManager()->getWaypointEditableList(); + WPM->setCurrentEditable(seq); + const QVector &waypoints = WPM->getWaypointEditableList(); if (seq < waypoints.size()) { @@ -330,31 +334,26 @@ void WaypointList::currentWaypointEditableChanged(quint16 seq) } } } - */ - } - } +// Update waypointViews to correctly indicate the new current waypoint void WaypointList::currentWaypointViewOnlyChanged(quint16 seq) { - if (uas) - { - const QVector &waypoints = uas->getWaypointManager()->getWaypointViewOnlyList(); + const QVector &waypoints = WPM->getWaypointViewOnlyList(); - if (seq < waypoints.size()) + if (seq < waypoints.size()) + { + for(int i = 0; i < waypoints.size(); i++) { - for(int i = 0; i < waypoints.size(); i++) - { - WaypointViewOnlyView* widget = wpViewOnlyViews.find(waypoints[i]).value(); + WaypointViewOnlyView* widget = wpViewOnlyViews.find(waypoints[i]).value(); - if (waypoints[i]->getId() == seq) - { - widget->setCurrent(true); - } - else - { - widget->setCurrent(false); - } + if (waypoints[i]->getId() == seq) + { + widget->setCurrent(true); + } + else + { + widget->setCurrent(false); } } } @@ -376,263 +375,149 @@ void WaypointList::updateWaypointViewOnly(int uas, Waypoint* wp) void WaypointList::waypointViewOnlyListChanged() { - if (uas) { - // Prevent updates to prevent visual flicker - this->setUpdatesEnabled(false); - const QVector &waypoints = uas->getWaypointManager()->getWaypointViewOnlyList(); - - if (!wpViewOnlyViews.empty()) { - QMapIterator viewIt(wpViewOnlyViews); - viewIt.toFront(); - while(viewIt.hasNext()) { - viewIt.next(); - Waypoint *cur = viewIt.key(); - int i; - for (i = 0; i < waypoints.size(); i++) { - if (waypoints[i] == cur) { - break; - } - } - if (i == waypoints.size()) { - WaypointViewOnlyView* widget = wpViewOnlyViews.find(cur).value(); - widget->hide(); - viewOnlyListLayout->removeWidget(widget); - wpViewOnlyViews.remove(cur); + // Prevent updates to prevent visual flicker + this->setUpdatesEnabled(false); + const QVector &waypoints = WPM->getWaypointViewOnlyList(); + + if (!wpViewOnlyViews.empty()) { + QMapIterator viewIt(wpViewOnlyViews); + viewIt.toFront(); + while(viewIt.hasNext()) { + viewIt.next(); + Waypoint *cur = viewIt.key(); + int i; + for (i = 0; i < waypoints.size(); i++) { + if (waypoints[i] == cur) { + break; } } - } - - // then add/update the views for each waypoint in the list - for(int i = 0; i < waypoints.size(); i++) { - Waypoint *wp = waypoints[i]; - if (!wpViewOnlyViews.contains(wp)) { - WaypointViewOnlyView* wpview = new WaypointViewOnlyView(wp, this); - wpViewOnlyViews.insert(wp, wpview); - connect(wpview, SIGNAL(changeCurrentWaypoint(quint16)), this, SLOT(changeCurrentWaypoint(quint16))); - viewOnlyListLayout->insertWidget(i, wpview); + if (i == waypoints.size()) { + WaypointViewOnlyView* widget = wpViewOnlyViews.find(cur).value(); + widget->hide(); + viewOnlyListLayout->removeWidget(widget); + wpViewOnlyViews.remove(cur); } - WaypointViewOnlyView *wpv = wpViewOnlyViews.value(wp); + } + } - //check if ordering has changed - if(viewOnlyListLayout->itemAt(i)->widget() != wpv) { - viewOnlyListLayout->removeWidget(wpv); - viewOnlyListLayout->insertWidget(i, wpv); - } + // then add/update the views for each waypoint in the list + for(int i = 0; i < waypoints.size(); i++) { + Waypoint *wp = waypoints[i]; + if (!wpViewOnlyViews.contains(wp)) { + WaypointViewOnlyView* wpview = new WaypointViewOnlyView(wp, this); + wpViewOnlyViews.insert(wp, wpview); + connect(wpview, SIGNAL(changeCurrentWaypoint(quint16)), this, SLOT(changeCurrentWaypoint(quint16))); + viewOnlyListLayout->insertWidget(i, wpview); + } + WaypointViewOnlyView *wpv = wpViewOnlyViews.value(wp); - wpv->updateValues(); // update the values of the ui elements in the view + //check if ordering has changed + if(viewOnlyListLayout->itemAt(i)->widget() != wpv) { + viewOnlyListLayout->removeWidget(wpv); + viewOnlyListLayout->insertWidget(i, wpv); } - this->setUpdatesEnabled(true); - loadFileGlobalWP = false; + + wpv->updateValues(); // update the values of the ui elements in the view } + this->setUpdatesEnabled(true); + loadFileGlobalWP = false; + } void WaypointList::waypointEditableListChanged() { - if (uas) { - // Prevent updates to prevent visual flicker - this->setUpdatesEnabled(false); - const QVector &waypoints = uas->getWaypointManager()->getWaypointEditableList(); - - if (!wpEditableViews.empty()) { - QMapIterator viewIt(wpEditableViews); - viewIt.toFront(); - while(viewIt.hasNext()) { - viewIt.next(); - Waypoint *cur = viewIt.key(); - int i; - for (i = 0; i < waypoints.size(); i++) { - if (waypoints[i] == cur) { - break; - } - } - if (i == waypoints.size()) { - WaypointEditableView* widget = wpEditableViews.find(cur).value(); - widget->hide(); - editableListLayout->removeWidget(widget); - wpEditableViews.remove(cur); + // Prevent updates to prevent visual flicker + this->setUpdatesEnabled(false); + const QVector &waypoints = WPM->getWaypointEditableList(); + + if (!wpEditableViews.empty()) { + QMapIterator viewIt(wpEditableViews); + viewIt.toFront(); + while(viewIt.hasNext()) { + viewIt.next(); + Waypoint *cur = viewIt.key(); + int i; + for (i = 0; i < waypoints.size(); i++) { + if (waypoints[i] == cur) { + break; } } - } - - // then add/update the views for each waypoint in the list - for(int i = 0; i < waypoints.size(); i++) { - Waypoint *wp = waypoints[i]; - if (!wpEditableViews.contains(wp)) { - WaypointEditableView* wpview = new WaypointEditableView(wp, this); - wpEditableViews.insert(wp, wpview); - connect(wpview, SIGNAL(moveDownWaypoint(Waypoint*)), this, SLOT(moveDown(Waypoint*))); - connect(wpview, SIGNAL(moveUpWaypoint(Waypoint*)), this, SLOT(moveUp(Waypoint*))); - connect(wpview, SIGNAL(removeWaypoint(Waypoint*)), this, SLOT(removeWaypoint(Waypoint*))); - //connect(wpview, SIGNAL(currentWaypointChanged(quint16)), this, SLOT(currentWaypointChanged(quint16))); - connect(wpview, SIGNAL(changeCurrentWaypoint(quint16)), this, SLOT(currentWaypointEditableChanged(quint16))); - editableListLayout->insertWidget(i, wpview); + if (i == waypoints.size()) { + WaypointEditableView* widget = wpEditableViews.find(cur).value(); + widget->hide(); + editableListLayout->removeWidget(widget); + wpEditableViews.remove(cur); } - WaypointEditableView *wpv = wpEditableViews.value(wp); + } + } - //check if ordering has changed - if(editableListLayout->itemAt(i)->widget() != wpv) { - editableListLayout->removeWidget(wpv); - editableListLayout->insertWidget(i, wpv); - } + // then add/update the views for each waypoint in the list + for(int i = 0; i < waypoints.size(); i++) { + Waypoint *wp = waypoints[i]; + if (!wpEditableViews.contains(wp)) { + WaypointEditableView* wpview = new WaypointEditableView(wp, this); + wpEditableViews.insert(wp, wpview); + connect(wpview, SIGNAL(moveDownWaypoint(Waypoint*)), this, SLOT(moveDown(Waypoint*))); + connect(wpview, SIGNAL(moveUpWaypoint(Waypoint*)), this, SLOT(moveUp(Waypoint*))); + connect(wpview, SIGNAL(removeWaypoint(Waypoint*)), this, SLOT(removeWaypoint(Waypoint*))); + //connect(wpview, SIGNAL(currentWaypointChanged(quint16)), this, SLOT(currentWaypointChanged(quint16))); + connect(wpview, SIGNAL(changeCurrentWaypoint(quint16)), this, SLOT(currentWaypointEditableChanged(quint16))); + editableListLayout->insertWidget(i, wpview); + } + WaypointEditableView *wpv = wpEditableViews.value(wp); - wpv->updateValues(); // update the values of the ui elements in the view + //check if ordering has changed + if(editableListLayout->itemAt(i)->widget() != wpv) { + editableListLayout->removeWidget(wpv); + editableListLayout->insertWidget(i, wpv); } - this->setUpdatesEnabled(true); - loadFileGlobalWP = false; - } -} -//void WaypointList::waypointEditableListChanged() -//{ -// if (uas) -// { -// // Prevent updates to prevent visual flicker -// this->setUpdatesEnabled(false); -// // Get all waypoints -// const QVector &waypoints = uas->getWaypointManager()->getWaypointEditableList(); - -//// // Store the current state, then check which widgets to update -//// // and which ones to delete -//// QList oldWaypoints = wpEditableViews.keys(); - -//// foreach (Waypoint* wp, waypoints) -//// { -//// WaypointEditableView* wpview; -//// // Create any new waypoint -//// if (!wpEditableViews.contains(wp)) -//// { -//// wpview = new WaypointEditableView(wp, this); -//// wpEditableViews.insert(wp, wpview); -//// connect(wpview, SIGNAL(moveDownWaypoint(Waypoint*)), this, SLOT(moveDown(Waypoint*))); -//// connect(wpview, SIGNAL(moveUpWaypoint(Waypoint*)), this, SLOT(moveUp(Waypoint*))); -//// connect(wpview, SIGNAL(removeWaypoint(Waypoint*)), this, SLOT(removeWaypoint(Waypoint*))); -//// connect(wpview, SIGNAL(currentWaypointChanged(quint16)), this, SLOT(currentWaypointChanged(quint16))); -//// connect(wpview, SIGNAL(changeCurrentWaypoint(quint16)), this, SLOT(changeCurrentWaypoint(quint16))); -//// editableListLayout->addWidget(wpview); -//// } -//// else -//// { -//// // Update existing waypoints -//// wpview = wpEditableViews.value(wp); - -//// } -//// // Mark as updated by removing from old list -//// oldWaypoints.removeAt(oldWaypoints.indexOf(wp)); - -//// wpview->updateValues(); // update the values of the ui elements in the view - -//// } - -//// // The old list now contains all wps to be deleted -//// foreach (Waypoint* wp, oldWaypoints) -//// { -//// // Delete waypoint view and entry in list -//// WaypointEditableView* wpv = wpEditableViews.value(wp); -//// if (wpv) -//// { -//// editableListLayout->removeWidget(wpv); -//// delete wpv; -//// } -//// wpEditableViews.remove(wp); -//// } - -// if (!wpEditableViews.empty()) -// { -// QMapIterator viewIt(wpEditableViews); -// viewIt.toFront(); -// while(viewIt.hasNext()) -// { -// viewIt.next(); -// Waypoint *cur = viewIt.key(); -// int i; -// for (i = 0; i < waypoints.size(); i++) -// { -// if (waypoints[i] == cur) -// { -// break; -// } -// } -// if (i == waypoints.size()) -// { -// WaypointEditableView* widget = wpEditableViews.find(cur).value(); -// if (widget) -// { -// widget->hide(); -// editableListLayout->removeWidget(widget); -// } -// wpEditableViews.remove(cur); -// } -// } -// } + wpv->updateValues(); // update the values of the ui elements in the view + } + this->setUpdatesEnabled(true); + loadFileGlobalWP = false; -// // then add/update the views for each waypoint in the list -// for(int i = 0; i < waypoints.size(); i++) -// { -// Waypoint *wp = waypoints[i]; -// if (!wpEditableViews.contains(wp)) -// { -// WaypointEditableView* wpview = new WaypointEditableView(wp, this); -// wpEditableViews.insert(wp, wpview); -// connect(wpview, SIGNAL(moveDownWaypoint(Waypoint*)), this, SLOT(moveDown(Waypoint*))); -// connect(wpview, SIGNAL(moveUpWaypoint(Waypoint*)), this, SLOT(moveUp(Waypoint*))); -// connect(wpview, SIGNAL(removeWaypoint(Waypoint*)), this, SLOT(removeWaypoint(Waypoint*))); -// connect(wpview, SIGNAL(currentWaypointChanged(quint16)), this, SLOT(currentWaypointChanged(quint16))); -// connect(wpview, SIGNAL(changeCurrentWaypoint(quint16)), this, SLOT(changeCurrentWaypoint(quint16))); -// } -// WaypointEditableView *wpv = wpEditableViews.value(wp); -// wpv->updateValues(); // update the values of the ui elements in the view -// editableListLayout->addWidget(wpv); -// } -// this->setUpdatesEnabled(true); -// } -//// loadFileGlobalWP = false; -//} +} void WaypointList::moveUp(Waypoint* wp) { - if (uas) { - const QVector &waypoints = uas->getWaypointManager()->getWaypointEditableList(); + const QVector &waypoints = WPM->getWaypointEditableList(); - //get the current position of wp in the local storage - int i; - for (i = 0; i < waypoints.size(); i++) { - if (waypoints[i] == wp) - break; - } + //get the current position of wp in the local storage + int i; + for (i = 0; i < waypoints.size(); i++) { + if (waypoints[i] == wp) + break; + } - // if wp was found and its not the first entry, move it - if (i < waypoints.size() && i > 0) { - uas->getWaypointManager()->moveWaypoint(i, i-1); - } + // if wp was found and its not the first entry, move it + if (i < waypoints.size() && i > 0) { + WPM->moveWaypoint(i, i-1); } } void WaypointList::moveDown(Waypoint* wp) -{ - if (uas) { - const QVector &waypoints = uas->getWaypointManager()->getWaypointEditableList(); - - //get the current position of wp in the local storage - int i; - for (i = 0; i < waypoints.size(); i++) { - if (waypoints[i] == wp) - break; - } +{ + const QVector &waypoints = WPM->getWaypointEditableList(); + + //get the current position of wp in the local storage + int i; + for (i = 0; i < waypoints.size(); i++) { + if (waypoints[i] == wp) + break; + } - // if wp was found and its not the last entry, move it - if (i < waypoints.size()-1) { - uas->getWaypointManager()->moveWaypoint(i, i+1); - } + // if wp was found and its not the last entry, move it + if (i < waypoints.size()-1) { + WPM->moveWaypoint(i, i+1); } } void WaypointList::removeWaypoint(Waypoint* wp) -{ - if (uas) { - uas->getWaypointManager()->removeWaypoint(wp->getId()); - } +{ + WPM->removeWaypoint(wp->getId()); } void WaypointList::changeEvent(QEvent *e) @@ -654,7 +539,7 @@ void WaypointList::on_clearWPListButton_clicked() if (uas) { emit clearPathclicked(); - const QVector &waypoints = uas->getWaypointManager()->getWaypointEditableList(); + const QVector &waypoints = WPM->getWaypointEditableList(); while(!waypoints.isEmpty()) { //for(int i = 0; i <= waypoints.size(); i++) WaypointEditableView* widget = wpEditableViews.find(waypoints[0]).value(); widget->remove(); @@ -673,7 +558,7 @@ void WaypointList::on_clearWPListButton_clicked() //{ // if (uas) // { -// const QVector &waypoints = uas->getWaypointManager()->getWaypointEditableList(); +// const QVector &waypoints = WPM->getWaypointEditableList(); // if (waypoints.size() > 0) // { // Waypoint *temp = waypoints.at(indexWP); @@ -703,14 +588,12 @@ void WaypointList::on_clearWPListButton_clicked() //} void WaypointList::clearWPWidget() -{ - if (uas) { - const QVector &waypoints = uas->getWaypointManager()->getWaypointEditableList(); +{ + const QVector &waypoints = WPM->getWaypointEditableList(); while(!waypoints.isEmpty()) { //for(int i = 0; i <= waypoints.size(); i++) WaypointEditableView* widget = wpEditableViews.find(waypoints[0]).value(); widget->remove(); - } - } + } } //void WaypointList::setIsLoadFileWP() diff --git a/src/ui/WaypointList.h b/src/ui/WaypointList.h index 3af991589ba29b71afcd1b619db3ff57d93ad5a2..d773fa76e0a3b5e9fe24cffffb9c2999abb0b659 100644 --- a/src/ui/WaypointList.h +++ b/src/ui/WaypointList.h @@ -42,6 +42,8 @@ This file is part of the QGROUNDCONTROL project #include "UASInterface.h" #include "WaypointEditableView.h" #include "WaypointViewOnlyView.h" +#include "UnconnectedUASInfoWidget.h" + namespace Ui { @@ -130,6 +132,7 @@ protected: QVBoxLayout* viewOnlyListLayout; QVBoxLayout* editableListLayout; UASInterface* uas; + UASWaypointManager* WPM; double mavX; double mavY; double mavZ; diff --git a/src/ui/WaypointList.ui b/src/ui/WaypointList.ui index b728e5271dac9c4484a87f3d3859a8a85a88911b..a3cacaec41fe2618c1b50b8e458aedbf41567d50 100644 --- a/src/ui/WaypointList.ui +++ b/src/ui/WaypointList.ui @@ -70,8 +70,8 @@ 0 0 - 834 - 325 + 836 + 316 @@ -300,8 +300,8 @@ 0 0 - 834 - 331 + 836 + 316 @@ -367,7 +367,7 @@ - TextLabel + diff --git a/src/ui/map3D/PixhawkCheetahGeode.cc b/src/ui/map3D/PixhawkCheetahGeode.cc index 561f111b01380f0742ecf93ded3082b872d401db..7853519b3bc2e3b93e86e89b7c0923855cc11e14 100644 --- a/src/ui/map3D/PixhawkCheetahGeode.cc +++ b/src/ui/map3D/PixhawkCheetahGeode.cc @@ -30,9 +30,8 @@ This file is part of the QGROUNDCONTROL project * */ -#include "PixhawkCheetahGeode.h" - #include +#include "PixhawkCheetahGeode.h" struct sample_MATERIAL { GLfloat ambient[3]; diff --git a/src/ui/map3D/QOSGWidget.cc b/src/ui/map3D/QOSGWidget.cc deleted file mode 100644 index 0efaba80459bdf91525d1967c3c907e8e22ac2f0..0000000000000000000000000000000000000000 --- a/src/ui/map3D/QOSGWidget.cc +++ /dev/null @@ -1,289 +0,0 @@ -/* OpenSceneGraph example, osganimate. -* -* Permission is hereby granted, free of charge, to any person obtaining a copy -* of this software and associated documentation files (the "Software"), to deal -* in the Software without restriction, including without limitation the rights -* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -* copies of the Software, and to permit persons to whom the Software is -* furnished to do so, subject to the following conditions: -* -* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -* THE SOFTWARE. -*/ - -#include "QOSGWidget.h" - -#ifdef Q_OS_MACX - -#endif - -QOSGWidget::QOSGWidget( QWidget * parent, const char * name, WindowFlags f, bool overrideTraits): - QWidget(parent, f), _overrideTraits (overrideTraits) -{ - createContext(); - Q_UNUSED(name); - setAttribute(Qt::WA_PaintOnScreen); - setAttribute(Qt::WA_NoSystemBackground); - setFocusPolicy(Qt::ClickFocus); -} - -void QOSGWidget::createContext() -{ - osg::DisplaySettings* ds = osg::DisplaySettings::instance(); - - osg::ref_ptr traits = new osg::GraphicsContext::Traits; - - traits->readDISPLAY(); - if (traits->displayNum<0) traits->displayNum = 0; - - traits->windowName = "osgViewerQt"; - traits->screenNum = 0; - traits->x = x(); - traits->y = y(); - traits->width = width(); - traits->height = height(); - traits->alpha = ds->getMinimumNumAlphaBits(); - traits->stencil = ds->getMinimumNumStencilBits(); - traits->windowDecoration = false; - traits->doubleBuffer = true; - traits->sharedContext = 0; - traits->sampleBuffers = ds->getMultiSamples(); - traits->samples = ds->getNumMultiSamples(); - -#if defined(__APPLE__) - // Extract a WindowPtr from the HIViewRef that QWidget::winId() returns. - // Without this change, the peer tries to call GetWindowPort on the HIViewRef - // which returns 0 and we only render white. - traits->inheritedWindowData = new WindowData(HIViewGetWindow((HIViewRef)winId())); - -#else // all others - traits->inheritedWindowData = new WindowData(winId()); -#endif - - - if (ds->getStereo()) { - switch(ds->getStereoMode()) { - case(osg::DisplaySettings::QUAD_BUFFER): - traits->quadBufferStereo = true; - break; - case(osg::DisplaySettings::VERTICAL_INTERLACE): - case(osg::DisplaySettings::CHECKERBOARD): - case(osg::DisplaySettings::HORIZONTAL_INTERLACE): - traits->stencil = 8; - break; - default: - break; - } - } - - osg::ref_ptr gc = osg::GraphicsContext::createGraphicsContext(traits.get()); - _gw = dynamic_cast(gc.get()); - - // get around dearanged traits on X11 (MTCompositeViewer only) - if (_overrideTraits) { - traits->x = x(); - traits->y = y(); - traits->width = width(); - traits->height = height(); - } - -} - -#ifndef WIN32 -void QOSGWidget::destroyEvent(bool destroyWindow, bool destroySubWindows) -{ - Q_UNUSED(destroyWindow); - Q_UNUSED(destroySubWindows); - _gw->getEventQueue()->closeWindow(); -} - - -void QOSGWidget::closeEvent( QCloseEvent * event ) -{ - event->accept(); - - _gw->getEventQueue()->closeWindow(); -} - - -void QOSGWidget::resizeEvent( QResizeEvent * event ) -{ - const QSize & size = event->size(); - _gw->getEventQueue()->windowResize(0, 0, size.width(), size.height() ); - _gw->resized(0, 0, size.width(), size.height()); -} - -void QOSGWidget::keyPressEvent( QKeyEvent* event ) -{ - _gw->getEventQueue()->keyPress( (osgGA::GUIEventAdapter::KeySymbol) *(event->text().toAscii().data() ) ); -} - -void QOSGWidget::keyReleaseEvent( QKeyEvent* event ) -{ - int c = *event->text().toAscii().data(); - - _gw->getEventQueue()->keyRelease( (osgGA::GUIEventAdapter::KeySymbol) (c) ); -} - -void QOSGWidget::mousePressEvent( QMouseEvent* event ) -{ - int button = 0; - switch(event->button()) { - case(Qt::LeftButton): - button = 1; - break; - case(Qt::MidButton): - button = 2; - break; - case(Qt::RightButton): - button = 3; - break; - case(Qt::NoButton): - button = 0; - break; - default: - button = 0; - break; - } - _gw->getEventQueue()->mouseButtonPress(event->x(), event->y(), button); -} -void QOSGWidget::mouseDoubleClickEvent ( QMouseEvent * event ) -{ - int button = 0; - switch(event->button()) { - case(Qt::LeftButton): - button = 1; - break; - case(Qt::MidButton): - button = 2; - break; - case(Qt::RightButton): - button = 3; - break; - case(Qt::NoButton): - button = 0; - break; - default: - button = 0; - break; - } - _gw->getEventQueue()->mouseDoubleButtonPress(event->x(), event->y(), button); -} -void QOSGWidget::mouseReleaseEvent( QMouseEvent* event ) -{ - int button = 0; - switch(event->button()) { - case(Qt::LeftButton): - button = 1; - break; - case(Qt::MidButton): - button = 2; - break; - case(Qt::RightButton): - button = 3; - break; - case(Qt::NoButton): - button = 0; - break; - default: - button = 0; - break; - } - _gw->getEventQueue()->mouseButtonRelease(event->x(), event->y(), button); -} - -void QOSGWidget::mouseMoveEvent( QMouseEvent* event ) -{ - _gw->getEventQueue()->mouseMotion(event->x(), event->y()); -} -#endif - - - - -void CompositeViewerQOSG::Tile() -{ - int n = getNumViews() - 1; // -1 to account for dummy view - - for ( int i = 0; i < n; ++i ) { - osgViewer::View * view = getView(i+1); // +1 to account for dummy view - view->getCamera()->setViewport( new osg::Viewport( 0, i*height()/n , width(), height()/n ) ); - view->getCamera()->setProjectionMatrixAsPerspective( 30.0f, double( width() ) / double( height()/n ), 1.0f, 10000.0f ); - } -} - - -void CompositeViewerQOSG::AddView( osg::Node * scene ) -{ - osgViewer::View* view = new osgViewer::View; - addView(view); - - view->setSceneData( scene ); - view->setCameraManipulator(new osgGA::TrackballManipulator); - - // add the state manipulator - osg::ref_ptr statesetManipulator = new osgGA::StateSetManipulator; - statesetManipulator->setStateSet(view->getCamera()->getOrCreateStateSet()); - - view->getCamera()->setGraphicsContext( getGraphicsWindow() ); - view->getCamera()->setClearColor( osg::Vec4( 0.08, 0.08, 0.5, 1.0 ) ); - Tile(); -} - -void CompositeViewerQOSG::RemoveView() -{ - if ( getNumViews() > 1 ) { - removeView( getView( getNumViews() - 1 ) ); - } - Tile(); -} - -// we use this wrapper for CompositeViewer ONLY because of the timer -// NOTE: this is a workaround because we're not using QT's moc precompiler here. -// -class QViewerTimer : public QWidget -{ - -public: - - QViewerTimer (int fps = 20, QWidget * parent = 0, WindowFlags f = 0): - QWidget (parent, f) { - _viewer = new osgViewer::CompositeViewer (); - _viewer->setThreadingModel(osgViewer::CompositeViewer::DrawThreadPerContext); - connect(&_timer, SIGNAL(timeout()), this, SLOT(repaint())); - _timer.start(1000.0f/fps); - } - - ~QViewerTimer () { - _timer.stop (); - } - - virtual void paintEvent (QPaintEvent * event) { - Q_UNUSED(event); - _viewer->frame(); - } - - osg::ref_ptr _viewer; - QTimer _timer; - -}; - -void setupHandlers(osgViewer::View * viewer) -{ - // add the state manipulator - viewer->addEventHandler( new osgGA::StateSetManipulator(viewer->getCamera()->getOrCreateStateSet()) ); - - // add the thread model handler - viewer->addEventHandler(new osgViewer::ThreadingHandler); - - // add the window size toggle handler - viewer->addEventHandler(new osgViewer::WindowSizeHandler); - - // add the stats handler - viewer->addEventHandler(new osgViewer::StatsHandler); -} diff --git a/src/ui/map3D/QOSGWidget.h b/src/ui/map3D/QOSGWidget.h deleted file mode 100644 index 85a2128926e58140075ae43d1747319465c5c96c..0000000000000000000000000000000000000000 --- a/src/ui/map3D/QOSGWidget.h +++ /dev/null @@ -1,197 +0,0 @@ -/* OpenSceneGraph example, osganimate. -* -* Permission is hereby granted, free of charge, to any person obtaining a copy -* of this software and associated documentation files (the "Software"), to deal -* in the Software without restriction, including without limitation the rights -* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -* copies of the Software, and to permit persons to whom the Software is -* furnished to do so, subject to the following conditions: -* -* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -* THE SOFTWARE. -*/ - -#include - -#if defined(_MSC_VER) && defined(OSG_DISABLE_MSVC_WARNINGS) -// disable warning "'QtConcurrent::BlockSizeManager' : assignment operator could not be generated" -#pragma warning( disable : 4512 ) -#endif - -#include -#include -#include -#include -#include -#include -using Qt::WindowFlags; - -#include -#include -#include -#include - -#include - -#if defined(WIN32) && !defined(__CYGWIN__) -#include -typedef HWND WindowHandle; -typedef osgViewer::GraphicsWindowWin32::WindowData WindowData; -#elif defined(__APPLE__) // Assume using Carbon on Mac. -#include -typedef WindowRef WindowHandle; -typedef osgViewer::GraphicsWindowCarbon::WindowData WindowData; -#else // all other unix -#include -typedef Window WindowHandle; -typedef osgViewer::GraphicsWindowX11::WindowData WindowData; -#endif - - -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include - -#ifndef QOSGWIDGET_H -#define QOSGWIDGET_H - -class QOSGWidget : public QWidget -{ -public: - - QOSGWidget( QWidget * parent = 0, const char * name = 0, WindowFlags f = 0, bool overrideTraits = false); - - virtual ~QOSGWidget() {} - - osgViewer::GraphicsWindow* getGraphicsWindow() { - return _gw.get(); - } - const osgViewer::GraphicsWindow* getGraphicsWindow() const { - return _gw.get(); - } - -protected: - - void init(); - void createContext(); - - // The GraphincsWindowWin32 implementation already takes care of message handling. - // We don't want to relay these on Windows, it will just cause duplicate messages - // with further problems downstream (i.e. not being able to throw the trackball -#ifndef WIN32 - virtual void mouseDoubleClickEvent ( QMouseEvent * event ); - virtual void closeEvent( QCloseEvent * event ); - virtual void destroyEvent( bool destroyWindow = true, bool destroySubWindows = true); - virtual void resizeEvent( QResizeEvent * event ); - virtual void keyPressEvent( QKeyEvent* event ); - virtual void keyReleaseEvent( QKeyEvent* event ); - virtual void mousePressEvent( QMouseEvent* event ); - virtual void mouseReleaseEvent( QMouseEvent* event ); - virtual void mouseMoveEvent( QMouseEvent* event ); -#endif - osg::ref_ptr _gw; - bool _overrideTraits; -}; - -class ViewerQOSG : public osgViewer::Viewer, public QOSGWidget -{ -public: - - ViewerQOSG(QWidget * parent = 0, const char * name = 0, WindowFlags f = 0, int fps = 20): - QOSGWidget( parent, name, f ) { - setThreadingModel(osgViewer::Viewer::SingleThreaded); - - connect(&_timer, SIGNAL(timeout()), this, SLOT(update())); - _timer.start(1000.0f/fps); - } - - void updateCamera() { - getCamera()->setViewport(new osg::Viewport(0,0,width(),height())); - getCamera()->setProjectionMatrixAsPerspective(30.0f, 1.0f , static_cast(width())/static_cast(height()), 10000.0f); - getCamera()->setGraphicsContext(getGraphicsWindow()); - } - - virtual void paintEvent( QPaintEvent * event ) { - Q_UNUSED(event); - frame(); - } - -protected: - - QTimer _timer; -}; - - -class CompositeViewerQOSG : public osgViewer::CompositeViewer, public QOSGWidget -{ -public: - CompositeViewerQOSG(QWidget * parent = 0, const char * name = 0, WindowFlags f = 0, int fps = 20) - : QOSGWidget( parent, name, f ) { - setThreadingModel(osgViewer::CompositeViewer::SingleThreaded); - - connect(&_timer, SIGNAL(timeout()), this, SLOT(repaint())); - - // The composite viewer needs at least one view to work - // Create a dummy view with a zero sized viewport and no - // scene to keep the viewer alive. - osgViewer::View * pView = new osgViewer::View; - pView->getCamera()->setGraphicsContext( getGraphicsWindow() ); - pView->getCamera()->setViewport( 0, 0, 0, 0 ); - addView( pView ); - - // Clear the viewer of removed views - getGraphicsWindow()->setClearMask( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - getGraphicsWindow()->setClearColor( osg::Vec4( 0.08, 0.08, 0.5, 1.0 ) ); - - // The app would hang on exit when using start(1). Behaves better with 10 - // like the non-composite viewer. Was this just a typo? - _timer.start(1000.0f/fps); - } - - virtual void paintEvent( QPaintEvent * event ) { - Q_UNUSED(event); - frame(); - } - - void keyPressEvent( QKeyEvent* event ) { - if ( event->text() == "a" ) { - AddView( _scene.get() ); - } - - if ( event->text() == "r" ) { - RemoveView(); - } - - QOSGWidget::keyPressEvent( event ); - } - - - void AddView( osg::Node * scene ); - void RemoveView(); - void Tile(); - - osg::ref_ptr< osg::Node > _scene; - -protected: - QTimer _timer; -}; - -void setupHandlers(osgViewer::View * viewer); - - -#endif // QOSGWIDGET_H - diff --git a/src/ui/uas/QGCUnconnectedInfoWidget.ui b/src/ui/uas/QGCUnconnectedInfoWidget.ui index f7e30998cb458bd9241713b99a0c1964c2cbfb0e..4e57211109a1a18fb99d8aa4eb4959c788e01d63 100644 --- a/src/ui/uas/QGCUnconnectedInfoWidget.ui +++ b/src/ui/uas/QGCUnconnectedInfoWidget.ui @@ -35,19 +35,19 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:12pt; font-weight:600;">Unmanned System List</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:6pt; font-weight:600;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt; font-weight:600;">No Systems are connected yet.</span><span style=" font-family:'Ubuntu'; font-size:10pt;"> Please either connect a link or use the simulation function to see QGroundControl in action.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt; font-style:italic;">Click on the simulation button below to simulate a micro air vehicle or on the connect link button to connect a serial port link. A UDP link is already open for connections on port </span><span style=" font-family:'Ubuntu'; font-size:10pt; font-weight:600; font-style:italic;">14550</span><span style=" font-family:'Ubuntu'; font-size:10pt; font-style:italic;">.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:11pt; font-style:italic;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt; font-weight:600;">Communication Link Help:</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:6pt; font-style:italic;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">If you encounter communication problems on your link (e.g. no MAV is shown in the list after connecting the link), please check if you receive data on the link using the communication console. Select </span><span style=" font-family:'Ubuntu'; font-size:10pt; font-weight:600;">Tools -&gt; Communication Console</span><span style=" font-family:'Ubuntu'; font-size:10pt;"> to enable it. The console should show incoming traffic and some used bandwidth (e.g. 1.43 kB/s on the indicator).</span></p></td></tr></table></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Unmanned System List</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:6pt; font-weight:600;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; font-weight:600;">No Systems are connected yet.</span><span style=" font-size:10pt;"> Please either connect a link or use the simulation function to see QGroundControl in action.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; font-style:italic;">Click on the simulation button below to simulate a micro air vehicle or on the connect link button to connect a serial port link. A UDP link is already open for connections on port </span><span style=" font-size:10pt; font-weight:600; font-style:italic;">14550</span><span style=" font-size:10pt; font-style:italic;">.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-style:italic;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; font-weight:600;">Communication Link Help:</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:6pt; font-style:italic;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">If you encounter communication problems on your link (e.g. no MAV is shown in the list after connecting the link), please check if you receive data on the link using the communication console. Select </span><span style=" font-size:10pt; font-weight:600;">Tools -&gt; Communication Console</span><span style=" font-size:10pt;"> to enable it. The console should show incoming traffic and some used bandwidth (e.g. 1.43 kB/s on the indicator).</span></p></td></tr></table></body></html> diff --git a/thirdParty/qserialport/src/win32/commdcbhelper.cpp b/thirdParty/qserialport/src/win32/commdcbhelper.cpp index 6d93bf3a1130670fc248f4f7e708779bf7abe969..d2df293a609715027e8361f91aad3ae13f08553a 100644 --- a/thirdParty/qserialport/src/win32/commdcbhelper.cpp +++ b/thirdParty/qserialport/src/win32/commdcbhelper.cpp @@ -316,9 +316,18 @@ void CommDCBHelper::setBaudRate(QPortSettings::BaudRate baudRate) case QPortSettings::BAUDR_128000: baud = CBR_128000; break; + case QPortSettings::BAUDR_230400: + baud = 230400; + break; case QPortSettings::BAUDR_256000: baud = CBR_256000; break; + case QPortSettings::BAUDR_460800: + baud = 460800; + break; + case QPortSettings::BAUDR_921600: + baud = 921600; + break; default: qWarning() << "CommDCBHelper::setBaudRate(" << baudRate << "): " \ "Unsupported baud rate"; @@ -347,43 +356,50 @@ QPortSettings::BaudRate CommDCBHelper::baudRate() const baud = currentAttrs_->BaudRate; } else { - baud = dcb.BaudRate; + baud = dcb.BaudRate; } Q_ASSERT(currentAttrs_->BaudRate == baud); switch ( baud ) { - case CBR_110: + case CBR_110: return QPortSettings::BAUDR_110; - case CBR_300: + case CBR_300: return QPortSettings::BAUDR_300; - case CBR_600: + case CBR_600: return QPortSettings::BAUDR_600; - case CBR_1200: + case CBR_1200: return QPortSettings::BAUDR_1200; - case CBR_2400: + case CBR_2400: return QPortSettings::BAUDR_2400; - case CBR_4800: + case CBR_4800: return QPortSettings::BAUDR_4800; - case CBR_9600: + case CBR_9600: return QPortSettings::BAUDR_9600; - case CBR_14400: + case CBR_14400: return QPortSettings::BAUDR_14400; - case CBR_19200: + case CBR_19200: return QPortSettings::BAUDR_19200; - case CBR_38400: + case CBR_38400: return QPortSettings::BAUDR_38400; - case CBR_56000: + case CBR_56000: return QPortSettings::BAUDR_56000; - case CBR_57600: + case CBR_57600: return QPortSettings::BAUDR_57600; - case CBR_115200: + case CBR_115200: return QPortSettings::BAUDR_115200; - case CBR_128000: + case CBR_128000: return QPortSettings::BAUDR_128000; - case CBR_256000: + case 230400: + return QPortSettings::BAUDR_230400; + case CBR_256000: return QPortSettings::BAUDR_256000; - default: + case 460800: + return QPortSettings::BAUDR_460800; + case 921600: + return QPortSettings::BAUDR_921600; + break; + default: qWarning() << "CommDCBHelper::baudRate(): Unknown baud rate"; }