1
0
Fork 0
Commit graph

1604 commits

Author SHA1 Message Date
James Turner
f7b0b77abb PU.h sprintf fixing
Adjust our customised pu.h to use snprintf, with correct buffer
size information. Also adjust includes so our custom version is used, ]
even when including the system puAux.h.
2023-01-09 10:55:58 +00:00
Gianfranco Costamagna
11eca7825d Fix build on riscv64 by using atomic int instead of atomic bool.
gcc on riscv64 is not able to compile natively atomic int, because of hw constraints, leading
to an additional to link external atomic libraries, making the code really slower to run.

Instead, using std::atomic<int> can be compiled and optimized natively without any additional -latomic linking.
2022-12-11 08:48:15 +01:00
Edward d'Auvergne
c1c7b043ac SGSubsystemMgr::get_subsystem(): Universal switch to the templated function.
The globals non-templated get_subsystem() helper function has been made private
to enforce the switch.
2022-11-17 15:57:39 +00:00
Edward d'Auvergne
ad33e50324 SGSubsystem classes: Registration of all subsystems added since mid 2018. 2022-11-17 15:57:39 +00:00
James Turner
6bb22caea2 PUI Compat: handle failed loads without crash 2022-11-08 22:38:04 +00:00
Roman Ludwicki
fd0bb74a92 Replace displaying in Launcher --on-ground=false to --in-air for on final
The option`--on-ground=false` doesn't exist which can be misleading.
2022-10-26 21:52:40 +02:00
James Turner
a7d13e0736 Fix missing untie in NewGui::shutdown 2022-09-30 09:36:20 +01:00
James Turner
190d393cd2 Refactor graphics init to pass in the context 2022-09-22 11:39:15 +03:00
James Turner
97c7b6402e PUICompat: fix Nasal module for bindings 2022-09-09 08:01:13 +01:00
James Turner
8b036f9353 GeneralInitOperation: guard against duplicate calls 2022-09-05 12:53:40 +01:00
James Turner
e5aee5adf6 open-browser: always prefix paths with file://
Make opening a local file explicit as a URI, on all platforms (before,
this was only done on macOS)
2022-09-05 12:53:21 +01:00
Florent Rougon
a502de9e81 FGPUIMenuBar: small optimization (requires C++17) 2022-08-18 17:39:08 +02:00
Florent Rougon
afe7d996af FGPUIMenuBar: fix bug when several menu entries have the same label
Before this commit, if several menu entries (possibly in different
menus) had the same label after translation and latin1-ization by
FGLocale::utf8toLatin1(), selecting one of them used to fire the
bindings associated to all such entries. This is because the bindings
used to be stored in an std::map whose keys were the
translated-and-latin1-ized labels.

This commit fixes the problem in the following way:
  - the std::map (_bindings) is turned into an std::forward_list;
  - each element of this std::forward_list references the bindings
    assigned to a menu entry;
  - in order to allow FGPUIMenuBar::fireItem() to find the bindings
    assigned to the menu entry that triggered it,
    FGPUIMenuBar::make_menu() calls puMenuBar::add_submenu() with an
    additional argument ("user data") that attaches to the puObject for
    each menu entry a pointer to the relevant element of _bindings.

Note: given how the menubar is created, an std::vector wouldn't be
appropriate for _bindings, because we need the pointers to its elements
to be stable when new elements are added to _bindings.

Reported by Wayne Bragg: https://sourceforge.net/p/flightgear/mailman/message/37682605/
2022-07-27 00:30:12 +02:00
James Turner
a46d71930a Launcher: add settings for TerraSync DNS
Add advanced settings to speciofy the TerraSync DNS server.
This shoud allow some work-around of problems with some
ISP DNS.
2022-06-07 23:17:13 +01:00
James Turner
55c9c61fc3 Launcher: add logging around aircraft installs
Trying to understand ‘aircraft not found’ errors around packaged
aircraft
2022-06-01 11:50:38 +01:00
James Turner
dbe2734e2c Launcher and startup support for TACANs
The launcher diagram and navaid-search now include TACANs, using
the current NavCache encoding (DME whose name ends in TACAN). A new
‘—tacan’ option works similar to —vor etc to set position (with 
optional offset). 

Tuning the Tacan instrument from the command line is not yet supported,
but could be easily added.
2022-05-31 10:18:16 +01:00
Lars Toenning
5051d90487 Use std::function for callbacks 2022-05-25 10:38:20 +01:00
James Turner
0df1109d93 Fix warnings / breakage from previous change. 2022-05-11 21:24:37 +01:00
PlayeRom
446299ddaf Fix using SI units like speed in km/h and altitude in meters for flight plan in Launcher. 2022-05-10 16:40:06 +01:00
James Turner
7a0be3f000 GUICompat: fix binding activation, close callback
With this change, binding can be activated mostly-correctly from
the compatability layer. Closing still isn't working quite right, more
changes to follow.
2022-03-24 10:36:06 +00:00
James Turner
0e079a7ebe More #ifdefs around PUI in the UI code 2022-03-09 16:52:19 +00:00
James Turner
7613cb3ce7 Canvas GUIMgr: remove coupling on FGRenderer 2022-03-09 16:52:19 +00:00
James Turner
cbd5ef9e7b GUI: XML to Nasal bridge, to keep PUI dialogs working
(Disabled by a CMake option)

This builds equivalent C++ objects to what the PUI dialogs build, with
properties exposed to Nasal. Peer objects are created by Nasal callbacks,
which can implement the various dialog functions needed to keep
compatibility, especially the ‘update’ and ‘apply’ hooks.
2022-03-09 16:52:19 +00:00
James Turner
3fb81a34f5 Launcher: Add altenrate UI style file
Keep forgetitng to add this, commiting so it
doesn't get lost in the shuffle.
2022-02-26 17:43:15 +00:00
Julian Smith
da7434f2e2 src/GUI/Highlight.cxx: fixed bug in FdmInitialisedListener destructor.
Use m_fdm_initialised to unregister our listener, as it waill always be valid,
unlike globals->get_props()->getNode(...).
2022-02-02 15:25:07 +00:00
James Turner
d59db8ea54 FlightPlan: distuinguish routes from flight-plans
Add a bool flag isRoute to flight-plan, and use it to model
routes (which contain VIAs) from plans/legs, which do not.

Default isRoute to false, so most users only see expanded
Vias, and hence something that can be flown directly.
2022-01-15 22:23:38 +00:00
PlayeRom
cef5dc6544 Add anti-aliasing 8x in Launcher 2022-01-12 11:15:24 +00:00
Florent Rougon
b191f0a57d Use current "getstart" URL
Two affected places:
  - the built-in launcher (command line options link);
  - package/org.flightgear.FlightGear.metainfo.in.

The previous link points to an old version of the manual.
2022-01-08 14:09:01 +01:00
James Turner
d5bc2d4629 Map: make POI display optional 2022-01-07 11:16:19 +00:00
SDeAstis
560e7a3d12 Solved the problem with custom menu labels not properly displayed. 2021-12-26 12:51:37 +00:00
Roman Ludwicki
82f967ab92 Cope with SGPropertyNode::getStringValue() now returning std::string by value.
This is by Lars Toenning <dev@ltoenning.de>, Roman Ludwicki <romek21@op.pl> and
SDeAstis <salvatore.deastis@gmail.com>, in 2021 Hackathon.

Also cope with removal of SGPropertyNode::getName() - use getNameString()
instead.
2021-12-24 14:49:06 +00:00
James Turner
c3beaee307 Launcher: fix a lingering season reference 2021-12-19 18:44:21 +00:00
PlayeRom
271073d869 Remove 'Season' option from Qt Launcher 2021-12-19 11:45:58 +00:00
Gonzalo Pesquero
8d4bd24235 Modified AircraftRating item width 2021-12-17 12:49:50 +00:00
Gonzalo Pesquero
cf5b724776 Add missing translation calls in aircraft download panel 2021-11-20 23:30:21 +01:00
Julian Smith
5023e9786a Highlighting: cope if Highlight subsystem is not present.
This should allow things to run ok if globals->get_subsystem<Highlight>()
returns null, e.g. in a unit test or similar.
2021-11-20 17:15:58 +00:00
Julian Smith
77b4e6a713 Highlighting: changed implementation to use camelCase for method names. 2021-11-20 16:53:22 +00:00
Julian Smith
3b5bd7a5ff Highlighting: changed FGInterface::property_associations() callback to use std::function.
Replaces previous function pointer plus void*.
2021-11-20 16:53:22 +00:00
Julian Smith
0c6f4983dc Highlighting: use camelCase for method names in Highlight API. 2021-11-20 16:53:22 +00:00
Julian Smith
0571418fe6 src/GUI/GettingStartedTip.hxx: fixed clang++ warning. 2021-11-09 21:47:00 +00:00
Richard Harrison
380e647d6f Fix compile error for Highlight on windows 2021-10-18 18:11:28 +02:00
Richard Harrison
be39d5b6ef Fix compile warnings 2021-10-18 18:10:40 +02:00
Julian Smith
96dee79873 src/GUI/Highlight.cxx: fixed bug in ::bind() that causes crash on startup.
We need to create sim/highlighting/enabled if it doesn't already exist.
2021-10-08 23:13:39 +01:00
Julian Smith
1bafe15c4c Added highlighting system.
If /sim/highlighting/enabled is true, we highlight animated objects under the
pointer, and also highlight other objects that are animated by the same or
related properties.

The intent here is to be able to give a visual indication of what cockpit
controls do or what cockpit controls affect particular aircraft objects - for
example moving the pointer over the flaps will highlight the flaps and also
highlight any controls or rotary indicators in the cockpit that are associated
with the flaps.

To make this work, we have to discover associations between properties. This
is currently done for YASim (e.g. associations between /controls/flight/flaps
and /surface-positions/flap-pos-norm) and autopilot filters (e.g. with
the 777, digital filters associate /controls/flight/rudder-nul with
/fcs/fbw/yaw/rudder-ratio-out). We don't currently gather associations between
properties in JSBSim

We also detect associations between dialogs, menus and keypresses and
properties, which is used to populate /sim/highlighting/current with
information about dialogs, menus and keypresses that are associated with the
currently highlighted nodes' properties.

Details:

src/GUI/Highlight.cxx
src/GUI/Highlight.hxx
src/GUI/CMakeLists.txt
src/Main/fg_init.cxx
    New subsystem called 'highlight', with support for registering and
    recovering links between menus, dialogs, keypresses and OSG node
    animations.

    Provides a function Highlight::highlight_nodes() which highlights
    related nodes using internal NodeHighlighting class, and populates
    /sim/highlighting/current with information about related dialogs, menus and
    keypresses.

    The NodeHighlighting class works by making nodes use an alternative
    StateSet which shows up as a distinct material on screen. We remember each
    highlighted node's original StateSet so that we can un-highlight. We update
    the material parameters using a listener for /sim/highlighting/material,
    which allows some control over the appearence of highlighted nodes.

src/FDM/flight.cxx
src/FDM/flight.hxx
    Added virtual method FGInterface::property_associations() which returns
    property associations from the FDM. Default implementation returns empty
    set. Implemented in YASim, but not (yet) in JSBSim. Uses a simple function
    pointer at the moment to avoid requring FDMs to use recent C++ features.

src/FDM/YASim/FGFDM.cpp
src/FDM/YASim/FGFDM.hpp
src/FDM/YASim/YASim.cxx
src/FDM/YASim/YASim.hxx
    Gathers information about property associations on startup such as
    /controls/flight/flaps => /surface-positions/flap-pos-norm, then
    YASim::property_associations() overrides default implementation to return
    these associations.

src/Autopilot/analogcomponent.cxx
src/Autopilot/analogcomponent.hxx
src/Autopilot/digitalfilter.cxx
src/Autopilot/inputvalue.cxx
src/Autopilot/inputvalue.hxx
    Filters now gather information about their input/output properties and
    register with Highlight::add_property_property(). For example this makes
    highlighting work on the 777, where pilot controls affect control surfaces
    only via filters.

src/GUI/new_gui.cxx
    Scan menus, keypresses and dialogs and register associations with
    Highlight::add_*().

src/GUI/property_list.cxx
src/GUI/property_list.hxx
src/GUI/FGPUIDialog.cxx
    Added <readonly> flag to property-list. If set, we don't show .. or . items
    and don't respond to mouse/keyboard.

    Used by fgdata's new Highlighting dialogue.

src/Model/acmodel.cxx
src/Model/acmodel.hxx
    Visit the user aircraft's scene graph when it is loaded, gathering
    information about osg::Node's that are animated by properties, and register
    these associations with Highlight::add_property_node().

src/Viewer/renderer.cxx
    When scanning for pick highlights, use Highlight::highlight_nodes() to
    highlight animated objects under the pointer and related objects.
2021-10-08 06:13:04 +01:00
James Turner
8574b4f1bc Launcher: improve local acft rescan behaviour 2021-09-30 11:19:41 +01:00
James Turner
06c03a0672 Tolerate Aircraft/ prefix in preview paths
Reuqested by Jonathan R, allow Aircraft/<acft-dir>/foo paths to work
for preview iamges.

SF-ID: https://sourceforge.net/p/flightgear/codetickets/2644/
2021-08-31 08:57:18 +01:00
James Turner
049b3dcba6 Fix Map initial position
Since 'center on aircraft' is now persistent, we need to expliictly init
this value when showing the map. Thanks to Michael Danilov and Colin
Geniet for the fix.

SF-Id: https://sourceforge.net/p/flightgear/codetickets/2637/
2021-08-20 11:26:13 +01:00
Michael Danilov
abbfa6578c Property browser: show values assigned to property folders in non-verbose mode as well (ticket 2479). 2021-08-19 17:47:20 +02:00
James Turner
fc40caf40e Launcher: remove obsolete variable
Also imrpvoe abandoning behaviour of the natural earth loader.
2021-08-04 09:51:23 +01:00
James Turner
dab9e6ba5f Launcher: fix Fly! menu enablement 2021-08-04 09:08:32 +01:00