-*- mode: text; coding: utf-8; fill-column: 78; -*- Prior changes belong to the FGo! program by Robert 'erobo' Leda and are listed in the file 'ChangeLog.FGo'. For more details about any change listed below, you may want to consult the Git repository log. ****************************************************************************** 1.0.0 [FEATURE] Import the code from FGo! 1.5.5 onwards (Python 2 at that time) into a Git repository. (Florent Rougon) [FEATURE] Port the code to Python 3. (Robert) [FEATURE] Add the file docs/INSTALL/INSTALL_en to guide users through the process of installing the dependencies. (Florent Rougon) [BUGFIX] Fix typo in "help_it" file. (Philip Lacroix) [FEATURE] Add conditional config based on CondConfigParser. This is documented for FGo! users in docs/README.conditional-config/. (Florent Rougon) [BUGFIX] Fix logic behind the Reset button. (Robert) [FEATURE] Add keyboard shortcuts for "Run FG" (Ctrl-f), "Reset" (Ctrl-r) and "Save & Quit" (Ctrl-q). (Florent Rougon) [FEATURE] Move the "FG is running..." message from the separate "info" window to the main window. (Florent Rougon) * The separate window was annoying, because when switching from a workspace with FlightGear on top and FGo! below, to another workspace and back to the initial workspace, the "FG is running..." little window appeared on top of FlightGear, which prevented the user from controlling it until he explicitely switched to FlightGear's window. * The "FG is running..." message is now displayed in red in FGo!'s main window (in a Label widget) instead of the separate InfoWindow. When FlightGear is not running, this message is replaced by a "Ready" indication in green. * This new behaviour allows to interact with FGo! while FlightGear is running, except for the things that rely on stuff started in App.startLoops(). Among others, it makes it possible to modify the configuration before the fgfs process is completely terminated. It would be possible to keep the loops running even after FlightGear has been started, but that would sacrifice a small amount of performance, for IMHO very little benefit. I prefer freeing the CPU as much as possible for FlightGear. * As a bonus, the new Label widget indicates the exit status of the last FlightGear run, or the signal number in case the fgfs process was terminated by a signal. * While FlightGear is running, the "Run FG" button is now greyed out. [FEATURE] Add preview of FlightGear command. (Robert & Florent Rougon) [FEATURE] Add FlightGear output window and log saving. (Robert & Florent Rougon) [USABILITY] Remove everything related to running a standalone TerraSync program in the background. As TerraSync has been integrated into FlightGear several years ago, this feature was probably more confusing than useful to users nowadays. (Robert & Florent Rougon) [FEATURE] Allow the command preview and FG output windows to be detached, reattached and hidden. Store their geometry when reattaching, closing them or choosing "Save & Quit" to be able to restore it when they are later shown again. (Florent Rougon) [FEATURE] Improve initialization of locales and translations at application startup. (Florent Rougon) [FEATURE] Change USER_DATA_DIR to ~/.ffgo on Unix, %APPDATA%/FFGo on Windows. (Florent Rougon) [FEATURE] New dialogs at application startup to offer to copy FGo!'s config file to USER_DATA_DIR when this is safe, start with "factory defaults", or abort. (Florent Rougon) [FEATURE] Rename the 'fgo' script to 'ffgo' in order to avoid confusing users concerning the FGo! program distributed by Robert Leda. (Florent Rougon) [USABILITY] Allow closing the Preferences window with the Escape key. (Florent Rougon) [USABILITY] Rename the 'Reset' button to 'Reload config', which is more self-explanatory in my opinion. Add a tooltip to this button that indicates the config file path. (Florent Rougon) [USABILITY] Add menu entries in the File menu to reload the config file and to run FlightGear. These entries show the new keyboard shortcuts. [FEATURE] Help files: update installation instructions, add description of new features and add a tip about config file reloading. (Robert & Florent Rougon) [FEATURE] Add top-level README.rst and move first sections of data/help/help_en to it. (Florent Rougon) [FEATURE] Update data/config/config_en: slightly reorder, improve wording (IMHO), remove reference to now-invalid URL (list of callsigns in use), introduce new options, give hint about 'fgfs --help --verbose'. (Florent Rougon) [FEATURE] New ffgo.svg icon and new thumbnail.jpg (with xcf source). (Florent Rougon) [FEATURE] Add Makefiles to automate generation of many files (messages.pot, *.po and *.mo files, ffgo.png in all sizes from ffgo.svg, HTML rendering of docs/README.conditional-config.source, release tarball...). (Florent Rougon) [FEATURE] Rename messages.{pot,po,mo} to FFGo.{pot,po,mo}. This will make it much easier for downstream distributors to create FHS-compliant packages with .mo files in /usr/share/locale//LC_MESSAGES/ (which is shared by all programs on a given system, therefore using such a generic name as 'messages' is unacceptable there). (Florent Rougon) [FEATURE] Improve the thumbnail situation. cf. the Git log for 6bf65f453ba28920397371d932b3b2ef491827bc for details (information maybe relevant to packagers but not users; in short, data/pics/thumbnail.ppm is replaced by data/pics/thumbnail-no-Pillow.gif and data/pics/thumbnail.jpg by data/pics/thumbnail-not-avail.png, and the two new files are both automatically generated from their respective sources). ImageMagick's convert program is now required by the Makefiles when installing from the Git repository. (Florent Rougon) [BUGFIX] Fix a bug introduced in 1.0.0b2 that would prevent FFGo from working properly when Pillow is not installed. (Florent Rougon) [BUGFIX] Include FFGo.pot in release tarballs. It is not needed by FFGo, but may be useful for people wanting to add new translations. (Florent Rougon) [FEATURE] Add Setuptools packaging. This will make it easier (once you have learnt how to use pip) to install, upgrade, remove, or check when FFGo or one of its dependencies has a newer upstream version. Please read docs/INSTALL/INSTALL_en for user-level details and the Git log for developer-level details. This change impacts a lot of files. The top-level 'src' directory is renamed to 'ffgo' (necessary to be able to install FFGo with 'pip install --editable'). The 'data' top-level directory is not top-level anymore: moved under the top-level 'ffgo' directory. This should improve FFGo's portability to non-Linux platforms with a minimum of platform-specific code. (Florent Rougon) [BUGFIX] Fix missing import for a Windows-specific code path (this prevented FFGo from starting under Windows; I hope that is the last remaining problem of this kind on Windows. I definitely need testers for this platform. Please report on your experiences!). (Florent Rougon) [USABILITY] Improve tooltips of the Preferences dialog. (Florent Rougon) [USABILITY] Use CRLF line endings for the top-level README.rst file as well as for docs/INSTALL/INSTALL_* because the Windows Notepad program used not to be able to read LF line endings (ahem). Is it still the case in 2015? These files should be enough to get users started. (Florent Rougon) 1.1.0 [USABILITY] Show the FlightGear arguments and output in the default configuration (i.e., the Command Window and the Output Window). This will hopefully improve the first-time user experience. (Florent Rougon) [FEATURE] Slightly better algorithm for preparing the fgfs command line. Mostly: order of the UI-exposed options such as airport, aircraft, parking, etc. as well as avoid passing empty '--fg-root=' or '--fg-scenery=' options unless they are written as is in the Command Line Options Window. In other words: an empty field in the Preferences dialog for FG_ROOT or FG_SCENERY will not by itself cause an empty '--fg-root=' or '--fg-scenery=' option to be passed to 'fgfs'. (Florent Rougon) [USABILITY] Document the following new parameters in the 'presets' file: SHOW_FG_COMMAND, SHOW_FG_COMMAND_IN_SEPARATE_WINDOW, FG_COMMAND_GEOMETRY, SHOW_FG_OUTPUT, SHOW_FG_OUTPUT_IN_SEPARATE_WINDOW and FG_OUTPUT_GEOMETRY. These parameters were already present in FFGo 1.0.0 but not in FGo! 1.5.5. (Florent Rougon) [“BUGFIX”] Distribute images derived from the CC0 helicopter image under the CC0 license too. The original intent was to distribute the images under the same license as the rest of FFGo for unity, i.e. WTFPL version 2. I think it was, and is still legal to do under most juridictions. However, legal matters being what they are, the safest course of action IMHO is to publish the derived images under the same license as the original image, i.e. CC0 1.0 Universal. (Florent Rougon) [BUGFIX] Improve restoring of geometry upon reset (“reload config”). Before this change, and contrary to the Command Window and Output Window, the dimensions of the main window were not restored when using the “Reload config” button; they were only restored at program startup. Of course, something can only be restored if it has been previously saved! (Florent Rougon) [FEATURE] New option to save the main window position. For user convenience, as well as consistency with the Command Window and Output Window, add a new check box in the Miscellaneous tab of the Preferences dialog to tell FFGo to “Remember the main window position” whenever saving to a configuration file or using “Save & Quit”. This option is enabled by default in FFGo. This means that the whole geometry of the main window 'widthxheight+x+y' is saved as WINDOW_GEOMETRY into the configuration file, instead of its size only ('widthxheight'). To revert to the previous behavior, simply uncheck “Remember the main window position” in the Preferences dialog. This option corresponds to SAVE_WINDOW_POSITION in the configuration file. (Florent Rougon) [USABILITY] Mention the FG_BIN name in the tooltip for the fgfs executable path. This is likely to be helpful to new users, because FG_BIN is used in the hint displayed when fgfs can't be executed, but new users might not know what this refers to. (Florent Rougon) [USABILITY] Improve installation instructions. Most notably, make the suitable changes now that Debian packages are available for FFGo and CondConfigParser. (Florent Rougon) 1.2.0 [FEATURE] New logging system. Automatically write a log file containing the start and end date, OS, FFGo and Python versions, and all other usual messages (including exceptions and FlightGear messages). The log file is ~/.ffgo/Logs/FFGo.log (%APPDATA%/FFGo/Logs/FFGo.log on Windows). It is automatically rotated at application startup, keeping at most ten log files (FFGo.log, FFGo_1.log, FFGo_2.log, ..., FFGo_9.log). (Florent Rougon) [FEATURE] Support command line options --help and --verbose. (Florent Rougon) [FEATURE] New command line option --log-level to choose the log level for terminal output (defaults to 'notice', which makes the terminal less verbose than the log file by default). Run 'ffgo --help' to see the available log levels. (Florent Rougon) [FEATURE] Add logging calls in a few key places to help debug problems. FFGo logs things such as XML parking/groundnet files about to be parsed (among others) with level 'info' or above to make it easy to spot the culprit in case there is a problem. Thus, in such a case, you can either look into the log file or rerun FFGo in a terminal, like this: 'ffgo --log-level=info' or 'ffgo --log-level=debug' (also possible with ffgo-launcher.py, of course). (Florent Rougon) [BUGFIX] Exceptions raised from a Tkinter callback cause an error window to appear, not only a traceback on the terminal. (Florent Rougon) [FEATURE] New command line option --test-mode for developers, useful for running test code from the FFGo GUI. (Florent Rougon) [BUGFIX] Improve parsing of XML files (parking/groundnet and scenario files). This should work better in a few cases and make it clear there is an error when one of these files is really invalid. (Florent Rougon) [BUGFIX] Small fixes with respect to file operations (be explicit about the encoding... this notably affects USER_DATA_DIR/apt, which can have a few non-ASCII airport names such as EDRZ = Zweibrücken; properly use writelines() in Config.makeInstalledAptList() too...). (Florent Rougon) [BUGFIX] Improve parsing of directory names under /Terrain for those using the 'Show installed airports only' option. Some custom scenery directories may have subdirs such as 'Scenery/Terrain/e020n50/e020n52.old'. Ignore them instead of raising an exception because "52.old" is not an integer. (Florent Rougon) [USABILITY] Display an explanation when building airport lists. The operation may be a bit long and freezes the interface. Display a window so that the user knows what is happening and patiently waits. (Florent Rougon) [FEATURE] Update the French translation of the interface. (Florent Rougon) 1.2.1 [BUGFIX] Fix crash at initialization when Pillow is not installed (bug introduced in 1.2.0). (Florent Rougon) 1.3.0 [FEATURE] Improve gathering and handling of parking data. All of the parking metadata is available internally through a Parking class. Errors in groundnet files generate warnings on the terminal and a popup window if particularly serious. Refactoring of this part of FFGo. (Florent Rougon) [FEATURE] Better sorting of parking positions in the parking popup menu (by flight type first, then by name using a better algorithm than before, so that A9 comes before A10, which itself comes before A10a, A10b, A11, etc.). Here, "flight type" corresponds to the 'type' attribute value of Parking elements in groundnet files: ga, cargo, gate, mil-fighter, mil-cargo, vtol. (Florent Rougon) [BUGFIX] Change the default for “Airport data source” to “Scenery”. This reflects FlightGear's current behavior when processing --parkpos and should provide much better parking data for people using TerraSync. The old default didn't make use of the TerraSync data, which was a pity. As indicated in ffgo/data/help/help_en, it is necessary to have downloaded data for the desired airport in one of the FG_SCENERY components before parking positions can be shown for this airport with the new default setting. Actually, “Airport data source” is a misnomer. What it really means is “Parking data source”. But since it corresponds to the APT_DATA_SOURCE parameter in the config file, and has been so for years (in FGo!), I'll leave it as is for now and just try to describe the effects as clearly as possible in the associated tooltip. (Florent Rougon) [BUGFIX] When “Airport data source” is set to “Scenery”, stop at the first groundnet file found in FG_SCENERY for the selected airport, even if it doesn't declare any parking position. This is what FlightGear (3.7) does, therefore doing otherwise and offer, in case of redundant FG_SCENERY components, parking positions that FlightGear won't find is not a good idea IMHO. (Florent Rougon) [BUGFIX] For the same reason, don't attempt to read parking data from FG_SCENERY/Airports/I/C/A/ICAO.parking.xml. This was used when "Airport data source" was set to Scenery, but FlightGear doesn't read these files. (Florent Rougon) [USABILITY] Change the default for “Airport database update” to “Automatic”. I think this is more likely to improve user experience than to degrade it. (Florent Rougon) [FEATURE] Interactive dialogs proposing to change the “Airport data source” and “Airport database update” settings to their new defaults. Each question is asked only once (if applicable). Give an empty value to ALREADY_PROPOSED_CHANGES in the config file if you want to see the questions again. (Florent Rougon) [BUGFIX] Don't special-case FILTER_APT_LIST in Config.update(). It seems counter-intuitive to me that the “Reload config” button reloads everything from the config file, except the FILTER_APT_LIST setting (which corresponds to the “Show installed airports only” entry of the Settings menu). Remove this special case. (Florent Rougon) [USABILITY] Enabled/disabled state for the “Update list of installed airports” menu entry. Since this menu entry is only applicable when “Show installed airports only” is selected, enable or disable it as appropriate. (Florent Rougon) [BUGFIX] Fix button size (“Reload config” & Co). In non-English translations, some buttons were too narrow for the text to fit. This should be better now. (Florent Rougon) [FEATURE] Print the Python and CondConfigParser versions in the About dialog box. This should make it easier to help users or even to help them help themselves. :-) (Florent Rougon) [FEATURE] Update the French translation of the interface. (Florent Rougon) 1.4.0 [BUGFIX] Don't hardcode ':' as path list separator for FG_AIRCRAFT and FG_SCENERY. Use os.pathsep instead, which should work better on Windows a least (normally uses ';' since ':' appears in things suchs as 'C:\path\to\foobar'). Having received no single report from users using FFGo to run FlightGear under a non-Linux OS, the only way I can find such portability issues is via code analysis. (Florent Rougon) [BUGFIX] Support use of the FG_AIRCRAFT environment variable. Mix its contents with that of the 'Additional aircraft path(s)' setting from the Preferences dialog, which is mapped to --fg-aircraft. This better reflects what FlightGear does. (Florent Rougon) [FEATURE] Detect, log and display in Help → About the FlightGear version that FFGo is going to run based on the FG_bin setting from the Preferences dialog. Nicer display of the Python version too. (Florent Rougon) [BUGFIX] Hide tooltips when the mouse pointer is moved. (Florent Rougon) [FEATURE] Tooltip refactoring. New ListBoxToolTip allowing to have a tooltip that depends on the ListBox item under the mouse pointer, using a function of the item index. (Florent Rougon) [FEATURE] Distinguish between identically-named aircrafts; aircraft tooltips. FFGo stops using only the aircraft name to identify an aircraft. From now on, it uses the aircraft name in combination with the directory containing its -set.xml file. This directory is stored in a new config file parameter (AIRCRAFT_DIR) to allow reliably using the same aircraft between sessions even if there are other aircrafts with the same name in the aircraft paths. The aircraft list now has tooltips showing the aircraft directory, i.e. the directory containing the -set.xml file for the aircraft under the mouse pointer. Pass the --aircraft-dir option to fgfs (FlightGear) according to the selected aircraft. If the FlightGear version is lower than 3.8, use os.path.realpath() on its value (workaround for the FlightGear bug fixed in commit 7198dec355144fbb0eaccb39f0c241dd07ebaee0, dated October 6, 2015). New 'aircraftDir' external variable that can be used in the configuration processed by CondConfigParser. This variable contains the selected aircraft's directory. (Florent Rougon) [BUGFIX] Slightly more efficient aircraft search. Make sure there is always a selected item in the aircraft list except when it is empty, in particular after doing a search (an aircraft could previously be selected for FFGo but not highlighted in the aircraft list). (Florent Rougon) 1.5.0 [FEATURE] Add support for context-sensitive translations. (Florent Rougon) [MAINT] Clean up handling of airport, parking, runway and carrier settings. (Florent Rougon) [MAINT] Cleaner handling of runway and parking changes. Most notably, replace old code checking for runway and parking changes every 250 ms by event handlers (observers in Tkinter-speak). This increases the interface responsiveness and reduces FFGo's CPU usage. (Florent Rougon) [MAINT] Simplify and accelerate the airport list build process. Rewrite the airport and aircraft search code using Tkinter observers to make the interface more reactive and reduce CPU usage at the same time. (Florent Rougon) [USABILITY] When clicking on the Clear button for the aircraft or airport search, set focus to the corresponding entry widget to allow immediate typing of the search text. (Florent Rougon) [FEATURE] New function, under the Tools menu, to copy a POSIX shell command equivalent to the current FG command to the clipboard. Due to limitations in Tk/Tkinter as it seems, this new function can only copy FG commands that can be encoded to ISO 8859-1 (which should be sufficient in most cases). An error dialog is displayed if this is not possible. On X11, the Tkinter clipboard functions used here seem to use the PRIMARY selection. (Florent Rougon) [USABILITY] Use a lighter background color for the FlightGear Command Window. [MAINT] Overhaul of the tooltip infrastructure. New tooltip class: MenuToolTip. (Florent Rougon) [BUGFIX] Tooltips could be displayed outside their master widget due to the fact that (at least with Tk 8.6 and Python 3.4.3) Tkinter sometimes sends Motion events even though the mouse pointer is largely out of the master widget. Work around this problem. (Florent Rougon) [FEATURE] Add airport parking tooltips in the parking popup. The newly-added tooltips contain most of the metadata available for parking positions (i.e., everything pilots are likely to be concerned about, but not FlightGear implementation details such as the parking 'index' or its 'pushBackRoute'). The parking name/number and its associated flight type are not repeated in the tooltip since they are already displayed in the parking popup. (Florent Rougon) [MAINT] Remove polling for: - comments highlighting in the Option Window; - the code that updates various elements when a different aircraft is selected in the aircraft list; - the code that updates various elements when a different airport is selected in the airport list. Again, replace this mechanism by Tkinter observers that are called immediately after the relevant change without causing unjustified overhead. Together with the previous optimizations, this causes the FFGo CPU load when idle to drop from about 2-3 % in version 1.4.0 to 0.0 % in this version on my computer. Note: in previous versions, the FFGo CPU load was already very low while FlightGear was running because certain functions were disabled in this case to save CPU time for FlightGear. (Florent Rougon) [BUGFIX] Thanks to the previously-mentioned changes, changing the aircraft or airport in FFGo, or comment out/decommenting text in the Options Window while FlightGear is running should work perfectly now, without leaving related fields unchanged (such as the aircraft thumbnail when selecting a different aircraft). All this should now work exactly the same as when FlightGear is not running. (Florent Rougon) 1.6.0 [FEATURE] New parser for apt.dat/apt.dat.gz. Should be compliant with the v1000 spec. Currently, it is only used to lookup fallback parking positions for a given airport as described below. (Florent Rougon) [FEATURE] Read parking positions from apt.dat.gz as a fallback. If the standard lookup from the groundnet files gives no result, look up the parking data in apt.dat.gz. This is slow, but the last 50 results are cached in memory to mitigate the inconvenience. With the apt.dat.gz file distributed with current FlightGear 3.7 (which is identical to the latest file distributed on [and very outdated with respect to contributions by FlightGear users]), the number of airports having at least one startup location declared in apt.dat.gz is 3437. This means that FFGo can offer parking positions/startup locations for at least this number of airports (the parking data from FlightGear groundnet files is used preferentially to this data from apt.dat.gz, but it is maybe possible that some airports have parking positions declared in a groundnet file but not in apt.dat.gz). (Florent Rougon; thanks to pommesschranke/d-laser for the suggestion) [USABILITY] Small color changes. (Florent Rougon) [MAINT] Cleanup of code related to the METAR widget (most notably, threading code). Apart from possible more or less random crashes which should not happen anymore, the most user-visible result of these changes is that the widget contents is automatically updated whenever the state of the “Decoded” checkbox is changed (and every such update is the result of a new HTTP request). (Florent Rougon) [MAINT] Various InfoWindow improvements. (Florent Rougon) [FEATURE] Update the German translation. (chris_blues) 1.6.1 [BUGFIX] Apparently, the HOME environment variable is not always defined on Windows. This prevents FFGo from starting in such a case (). Remove FG_HOME and DEFAULT_TERRASYNC_DIR from ffgo/constants.py as well as the default setting to DEFAULT_TERRASYNC_DIR for Config.FG_scenery. The default value for Config.FG_scenery is now empty, as it used to be some time ago... (Florent Rougon) [MAINT] Small changes to the AptDat and ToolTip classes. (Florent Rougon) [FEATURE] Update the German translation. (chris_blues) 1.7.0 [FEATURE] New apt.dat parser; new apt digest file format with an index for very fast access to all the data present in apt.dat.gz. * Replace the old apt.dat parser with a new parser. This new parser should be compliant with the APT1000 specification[1], provide better error reporting and fix a few small bugs (see below). It also extracts more information about airports and runways, unifies recently added extraction of parking metadata from apt.dat.gz with this airport metadata, and generates an “apt digest file”[2] in a new format bringing the following improvements: - more robust (proper header including magic number, encoding declaration and format version; fields separated by the NUL char ('\0') instead of '='); - contains only the information FFGo must read on startup in order to make this startup as fast as possible; in particular, runway names for *all* airports are not read anymore on startup and held into memory, they are loaded on demand when needed for the selected airport; - since runway and parking metadata are loaded on demand from apt.dat (after trying the groundnet file in the case of parkings), the new format includes an index for each airport allowing to quickly find its data in apt.dat.gz. Of course, this requires keeping the apt digest file in sync with apt.dat.gz, which should not be much of a problem since the default for “Airport database update” is “Automatic” since version 1.3.0. [1] See . [2] Also known as “airport database”: ~/.ffgo/apt everywhere except on Windows, where it is %APPDATA%/FFGo/apt. * The creation of the apt digest file is a bit slower than before (about 25 seconds on my system, as opposed to 10 or 11 before), but this should only be necessary when apt.dat.gz changes---which does not happen very often, the current version in FG 3.7 dating from 2013---or if I have to again change the format of the apt digest file. Note: the slowdown is essentially caused by gzip.GzipFile.tell() being slow, however this is necessary to create an efficient index. So, it's a bit slower once in a while when rebuilding the airport database, but pays off the rest of the time when using FFGo and looking at the airport, runway or parking tooltips, or simply choosing among the newly-available startup locations read (since version 1.6.0) from apt.dat.gz. * Startup and config reloading should now be significantly faster when the airport list is “filtered” (the configuration option that causes FFGo to only show the airports you already have scenery for). (Florent Rougon) [USABILITY] Add a colored, disabled (i.e., not clickable) and empty header to the runway popup menu. This makes it more visible, visually similar to the parking popup, and avoids it disappearing in a flash with the first entry being accidentally selected if the user just clicked without holding the button down. (Florent Rougon) [FEATURE] Add tooltips to the airport list giving basic information about the airport under the mouse pointer (type of airport [land airport, seaplane base or heliport], latitude, longitude, elevation and, if applicable, the lists of land runways, water runways and helipads). The magnetic variation (also called magnetic declination) at the airport is also displayed in the airport tooltip if GeographicLib's MagneticField program is available. If this program is not in your PATH, you can indicate its location using the Preferences dialog. Note: MagneticField requires a particular dataset to be installed in order to work properly. In Debian, it is part of the geographiclib-tools package, which also provides a script called 'geographiclib-get-magnetic'. Running a command such as '/usr/sbin/geographiclib-get-magnetic minimal' with root privileges will automatically download and install a minimal dataset under /usr/share/GeographicLib/magnetic, where it can be found by MagneticField (not registering the added files with dpkg, which is a bit ugly, cf. ). (Florent Rougon) [BUGFIX] Fix slightly incorrect calculations of v810 airport coordinates (two opposite runway ends counted as one). This bugfix comes with the new apt.dat parser. (Florent Rougon) [BUGFIX] Fix computation of runway names from v810 data (“6” instead of “06” for the “other runway” opposed to “24”). This also comes with the new apt.dat parser. Note: these fixes are untested, as there is no single runway in v810 format in my apt.dat 2013.10, build 20131335. (Florent Rougon) [FEATURE] Display magnetic heading in parking tooltips when 'MagneticField' is available (see above for details concerning 'MagneticField'). (Florent Rougon) [FEATURE] Tooltip for each runway in the runway popup menu, giving: latitude, longitude (of the runway end), heading (true and magnetic if 'MagneticField' is available, otherwise only the true heading), length, width, surface type, shoulder surface type, type of markings, smoothness. Helipads also have a line specifying whether they have edge lighting. Water runways have less fields because things such as shoulder surface type and smoothness are obviously not applicable. They have all the data that is present for them in apt.dat.gz, except for the “perimeter buoys” flag. The code to handle this flag is ready, but the way it is used in apt.dat.gz is completely bogus and in contradiction with the APT1000 spec. I'll activate the code when this is fixed. Since they are not directly available in apt.dat.gz, the length and heading of runways are computed from the latitude and longitude of opposite runway ends. FFGo ships with an implementation of Vincenty's formula to do this with better than 1 mm precision (assuming the coordinates of the runway ends are that accurate in apt.dat.gz!), as well as a few more things to deal with the cases that Vincenty's formula doesn't handle well. If GeographicLib's Python implementation is installed, it will be used in preference to these methods, because it is even more accurate (about 5 nanometers according to its website), was written by an expert in geodetic calculations (Charles F. F. Karney), and apparently handles all cases of the geodetic inverse problem, contrary to Vincenty's formula. (Florent Rougon) [BUGFIX] Correct calculation to find the nearest METAR station. The previous code didn't behave properly for points located on either side of the ±180° meridian, or close to one of the poles. Use a fast method (GeodCalc.modifiedFccDistance()) that gives reasonably correct results to find the best 15 candidates for the title of “closest station”, then find the closest among these using GeodCalc.inverse() (which is an FFGo abstraction layer for the algorithms mentioned above: Karney's algorithm from GeographicLib if available, otherwise Vincenty's formula plus a few others for the cases that Vincenty's formula doesn't handle well). (Florent Rougon) [BUGFIX] Always write the timestamp file after rebuilding the apt digest file (i.e., after “rebuilding the airport database”). With the previous code, if the airport database was manually rebuilt and afterwards the “Airport database update” setting was changed from Manual to Automatic, then the database would be unnecessarily rebuilt. This should be fixed now. (Florent Rougon) [USABILITY] Improve some tooltips of the Preferences dialog. (Florent Rougon) [FEATURE] Update the German translation. (chris_blues) 1.8.0 [FEATURE] New “Airport Finder” dialog. This dialog, accessible under the Tools menu, allows one to easily find airports using various criteria: distance to a chosen, “reference airport”; number of land runways, water runways, or helipads; length of the longest or shortest runway in the airport, etc. Results are listed in a table giving these criteria for each airport as well as the initial and final bearings for the shortest path from or to the reference airport. The table of results can be sorted according to airport ICAO code, name or any of the aforementioned criteria (click on a column header to sort according to the corresponding field; click a second time on the same column header to reverse the sort order). The Airport Finder dialog uses a new widget set for airport selection, that is mainly based on Ttk's Treeview widget. See and the following message for more details. (Florent Rougon) [FEATURE] Add the number of land runways, water runways, helipads, plus the minimum and maximum runway lengths for each airport to the apt digest file (aka “airport database”). This allows to perform quick searches over all airports known from apt.dat using these criteria (used in the Airport Finder dialog). The format version of the apt digest file changed from 1 to 2 to reflect this change. Migration for users should be completely automatic. (Florent Rougon) [USABILITY] Previously, when in carrier mode, clicking on a different airport in the airport list didn't really select it, as it didn't leave carrier mode. This is not the case anymore. (Florent Rougon) [USABILITY] Allow resizing the main parts of FFGo's main window by dragging with the mouse (this uses a Ttk PanedWindow). (Florent Rougon) [BUGFIX] More tolerant parsing of apt.dat, in order to make it possible to use current apt.dat files distributed at . (Florent Rougon) [MAINT] Tolerate invalid smoothness values in apt.dat. This is not really needed, since invalid values only cause an error when looking up buggy runway metadata, but this will allow users to access the rest of these particular runway metadata... Change mainly motivated by . (Florent Rougon) [BUGFIX] Fix calculation of airport centroid coordinates. Use n-vectors to compute the latitude and longitude of the centroid of each airport. The previous method, a simple arithmetic mean, could give incorrect results with airports having runway ends located on either side of the 180° meridian or very close to the North or South pole (not that I encountered any such problem, but I prefer a correct method, all the more since the performance impact is negligible). (Florent Rougon) [BUGFIX] Fix wrong unit for runway width in apt.dat v850 and later data. In v850 format, runway widths and helipad lengths and widths are given in meters, whereas in v810 format, they were given in feet. This led to confusion and before this version, runway widths were wrongly converted as if they had been given in feet (for > v810 data). This is now fixed. In runway tooltips, print the length and width first in meters, then in feet, instead of the other way around (since this is how they are specified in the primary source...). (Florent Rougon) [MAINT] Behind-the-scenes tooltip improvements. Most notably, the new TreeviewToolTip class allows to have dynamic tooltips in the Treeview widgets used in the new Airport Finder dialog. (Florent Rougon) [FEATURE] Update the German translation. (chris_blues) 1.8.1 [BUGFIX] Support MagneticField from GeographicLib versions < 1.39. In these versions, the MagneticField program doesn't support the special string "now" for the time field. Use the current date in order to support these versions (i.e., released before 2014-11-11). (Florent Rougon) [BUGFIX] Layout improvements: make sure that the most important widgets in FFGo's main window are the last to be shrunk when the window is too small to display all of its widgets at their natural size. Most notably, the frame containing the "Run FG" button could be completely invisible in version 1.8.0 if started with a main window that is not very tall. With this change, the text and list widgets, as well as the aircraft thumbnail, are all shrunk before starting to “touch” to any of the buttons or labels. (Florent Rougon) [BUGFIX] Fix wrong line numbers in error reports for index-based apt.dat requests. AptDat.readAirportDataUsingIndex() used to seek into the apt.dat.gz file using the specified index, but it did not modify AptDat.lineNb accordingly. As a consequence, the line numbers for error reports concerning apt.dat parsing raised by this method were usually wrong. In order to properly fix this, it has been necessary to modify be the apt digest file format a little bit (storing a line number along with each index value), and therefore to change its format version from 2 to 3. Migration for users should be completely automatic. (Florent Rougon) [DOC] Add notes concerning the 'pkg_resources' Python 3 module to docs/INSTALL/INSTALL_en. Users might need to install this module in somewhat unusual situations. (Florent Rougon) 1.9.0 [FEATURE] Use the new airport chooser (widgets.AirportChooser) for the airport list in the main window. The airport list in the main window used to be a simple list; replace it with a real multicolumn widget (Ttk Treeview), reusing the logic already implemented in widgets.AirportChooser. This fixes small alignment problems in the previous implementation (due to the ICAO codes not having the same display width), allows one to sort the airport list by ICAO code or airport name, in ascending or descending order, with a simple click on the relevant column header, and brings the nice logic from widgets.AirportChooser to the main window airport list (such as preferring an exact match on ICAO code when there are also substring matches on airport names for a given search string). The airport chooser has also been modified to better handle navigation keys (Up and Down arrows, Page Up and Page Down, Home and End). Most notably, holding down one of the first four mentioned here should work as expected (this might need some tuning, because the thing is to delay the time-consuming task of updating everything that depends on the selected airport enough so that Tk has sufficient time between two consecutive “arrow-pressed” keyboard events to refresh the GUI---please report if that doesn't work for you in an airport list [the aircraft list still has this little problem when an arrow key is held down, I know]). (Florent Rougon) [FEATURE] New GPS Tool dialog allowing one to find the distance, initial and final bearings for the shortest path between two given airports. This dialog should be more convenient than the Airport Finder dialog for the cases where you already know the start and destination airports you are interested in, and you just want to get the results for these airports. Or you want to check several pairs of airports, and you know precisely *which* ones you want the calculations to be done for. The dialog also computes the flight duration for a given ground speed, and vice versa. It reuses the AirportChooser widget already used in FFGo's main window and in the Airport Finder dialog. (Florent Rougon) [FEATURE] New setting: "Automatically scroll the Output Window". Add a checkbox to the Miscellaneous tab of the Preferences dialog to control whether FFGo should automatically scroll the FlightGear Output Window to the end whenever new text is received from FlightGear's stdout or stderr stream. This corresponds to the config file parameter AUTOSCROLL_FG_OUTPUT. (Florent Rougon, feature request by pommesschranke/d-laser) [FEATURE] Add option to translate --parkpos into --lat, --lon and --heading. This option can be enabled using the “Fake the --parkpos option” checkbox found in the Miscellaneous tab of the Preferences dialog. It is useful when --parkpos is broken in FlightGear (which is currently the case in the 'next' branch of FlightGear's Git repository). (Florent Rougon) [BUGFIX] Fix bug preventing FFGo from starting when there was no translation file for the current locale (thanks to legoboyvdlp for the report). (Florent Rougon) [BUGFIX] Add missing 'tkinter.messagebox' import for 'showerror' in ffgo/fgdata/parking.py. The problematic code could only be reached when FFGo opens an erroneous groundnet file. Problem was: the error reporting could not be done properly. (Florent Rougon) [BUGFIX] Fix two options from the Preferences dialog whose lastest-updated values were used by FFGo even if the dialog was closed with Cancel. These are the 'Remember the main window position' and 'Automatically scroll the Output Window' options. (Florent Rougon) [BUGFIX] Airport Finder: display an explanatory error message when the user chooses an airport that is not present in FFGo's main window due to the fact that the “Show installed airports only” option (from the Settings menu) has been enabled. (Florent Rougon) [BUGFIX] Hide item-specific tooltips when the underlying List or Treeview is scrolled. Once a list or Treeview is scrolled, item-specific tooltips are likely not to match the item under the mouse pointer anymore. For this reason, hide the item-specific tooltip whenever each of the following Lists or Treeviews is scrolled: aircraft and airport lists in FFGo's main window; “reference airport” chooser and results table in the Airport Finder dialog (the GPS Tool dialog has never had this little problem AFAICT). (Florent Rougon) [USABILITY] Main window: set the initial focus in the airport search entry. I think this is the most useful thing to do in general. (Florent Rougon) [USABILITY] Add a colored, disabled (i.e., not clickable) and empty header to the carrier popup menu. This makes it more visible, visually similar to the runway and parking popup menus, and avoids it disappearing in a flash with the first entry being accidentally selected (i.e., 'carrier = None', return to airport mode) if the user just clicked without holding the left mouse button down. (Florent Rougon) [FEATURE] Update the German translation. (chris_blues) 1.9.1 [FEATURE] Installing on Windows should create an ffgo-noconsole.exe executable (typically in C:\PythonXY\Scripts) that doesn't open any terminal window (“console”) when run. (Florent Rougon) [BUGFIX] Fix a bug in the Airport Finder: if the airport search text in FFGo's main window was non-empty, the “Choose selected airport” button of the Airport Finder dialog could fail to find the chosen airport. (Florent Rougon) [BUGFIX] Fix the “Open Log Directory” feature to hopefully work on Windows and MacOS X (in addition to Unix-like systems, of course). (Florent Rougon) [FEATURE] Update the German translation. (chris_blues) 1.10.0 [MAINT] Rebase widgets.AirportChooser on a generic, abstract class: widgets.IncrementalChooser. (Florent Rougon) [FEATURE] Reimplement the aircraft chooser using widgets.IncrementalChooser. This improves its behavior in several respects: - smarter automatic selection of an aircraft when the search query is changed, based on the new search query and the previous selection; - better handling of navigation keys (up and down arrows, Page Up and Page Down, Home and End; most notably, holding down one of the first four of these, and pressing one of the last two should have the expected effect); - ability to display several proper columns of data and sort by clicking on a column header; - short delay before starting to search after the search query is modified, in order to allow smooth typing in the search field. (Florent Rougon) [FEATURE] Aircraft chooser: approximate matching of aircraft names * With this commit, you don't have to remember that the 'f-14b' aircraft has a hyphen, the 'EC-137D' also, but not the 'ec130b4' nor the 'ec135p2'. Characters in the following string are simply ignored during the first phase (filtering) of an aircraft search: ' -_.,;:!?' (the list starts with a space). This means that an aircraft search query can find an aircraft even if it has hyphens, underscores, etc. missing or in excess compared to the actual aircraft name. * Note that this only concerns the aircraft list *filtering*. Given a set of aircrafts that match the search query, one of them may be automatically selected after the aircraft list is filtered if: - it is either an exact (case-insensitive) match of the search query (and for this purpose, characters such as hyphens and underscores are *not* ignored: autoselection requires an exact match); - or it is the previously-selected aircraft (option only taken if the first one couldn't be satisfied, and of course if the previously-selected aircraft is in the just-updated, filtered list). * As said, both types of matching are case-insensitive: 1) the approximate matching process used to determine which aircrafts will be displayed in the aircraft list after a change to the search field; 2) the exact matching process used to autoselect the “best” among the matches found in 1), falling back to the first one if none of these fulfills any of the two conditions given in the previous paragraph. (Florent Rougon) [FEATURE] Airport and aircraft statistics (“use counts” / “visit counts” for customizable periods) * New classes AirportStatsManager and AircraftStatsManager that are used to maintain lists of dates when each airport was visited (resp. each aircraft used). Old data is automatically expired (new config file parameters AIRPORT_STATS_EXPIRY_PERIOD and AIRCRAFT_STATS_EXPIRY_PERIOD). Counts of how many days in a chosen period (new parameters AIRPORT_STATS_SHOW_PERIOD and AIRCRAFT_STATS_SHOW_PERIOD) each airport has been visited or each aircraft used are stored in memory and maintained by the AirportStatsManager and AircraftStatsManager classes. These counts are obtained from the dates of visit/use of each airport/aircraft by counting the dates selected with AIRPORT_STATS_SHOW_PERIOD and AIRCRAFT_STATS_SHOW_PERIOD. * All this data is loaded from $USER_DATA_DIR/Stats/airports.json.gz and $USER_DATA_DIR/Stats/aircrafts.json.gz when FFGo is started, and saved to the same files when it is quit. It is also saved just before the airports/aircrafts set is possibly changed and reloaded afterwards in order to avoid losing data stored in the .json.gz files if it can't be applied to the current airports/aircrafts set. * Add a new column to the aircraft list showing how many days each aircraft has been used at least once (“use count”) during the period defined by AIRCRAFT_STATS_SHOW_PERIOD (which is interpreted as a number of days). Similarly, add a column to the airport list showing how many days each airport has been visited at least once during the period defined by AIRPORT_STATS_SHOW_PERIOD (again, number of days). The use (resp. visit) count for an aircraft (resp. airport) is incremented whenever FlightGear is started from FFGo with this aircraft (resp. at that airport). This is only done in memory until $USER_DATA_DIR/Stats/airports.json.gz and $USER_DATA_DIR/Stats/aircrafts.json.gz are saved, as mentioned above. * By default, these two .json.gz files are stored in the most possible compact format (no space or newline to separate syntactical elements in the uncompressed data stream). For users who would like to examine or even modify these files (for instance, in order to keep aircrafts use counts despite having changed one's aircraft paths), FFGo supports a new command-line option: '--save-stats-in-pretty-form' (pretty long, but I surmise it should not be needed often). Start FFGo with this option, then either do a reset (“Reload config file”) or quit FFGo; at this point, both .json.gz files should be in human-readable form. * AIRPORT_STATS_EXPIRY_PERIOD and AIRCRAFT_STATS_EXPIRY_PERIOD default to 3652 days (ten years). AIRPORT_STATS_SHOW_PERIOD and AIRCRAFT_STATS_SHOW_PERIOD default to 365 days (one year). * The Preferences dialog has a new “Statistics” tab allowing to configure these four parameters. * This feature was presented in this message on the FlightGear forum (maybe it has better/different explanations...): http://forum.flightgear.org/viewtopic.php?f=18&t=27054&p=275923#p275774 (Florent Rougon) [FEATURE] Change the initial sorting of the aircraft and airport lists. These two lists in FFGo's main window are now initially sorted: - primarily, by decreasing use/visit count; - secondarily, by aircraft or airport name for aircrafts/airports having the same use/visit count. Note that this only concerns the initial sorting at FFGo startup; it is always possible to click on a column header to change the sort order. (Florent Rougon) [BUGFIX] Fix loading of aircraft thumbnails: - fix a long-standing little bug (present in FGo!): aircraft thumbnails that don't have 171×128 dimensions are now displayed correctly (appropriately scaled to fit in the 171×128 space reserved for that). For maximum performance, this is bypassed for aircraft thumbnails that already have the desired dimensions. An aircraft for which the difference is very visible is the 707. - replace the catch-all “except:” clause with a more specific “except OSError:” one. If another type of error is raised in that place, it should be fixed where the actual problem belongs, instead of sweeping the whole thing under the rug. (Florent Rougon) [BUGFIX] Fix detection of the FlightGear version: debug builds of FlightGear have a different 'fgfs --version' output than normal builds, and that extended output wasn't properly recognized by FFGo. (Florent Rougon) [BUGFIX] Pass --fg-root when running 'fgfs --version' to avoid the new popup. FlightGear 2016.1.0 (from February 2016) can spawn an annoying popup dialog when 'fgfs --version' is run, which is very confusing for FFGo users and broke FFGo's detection of the FlightGear version (this popup is apparently meant to let the user graphically choose the FG_ROOT path to use in the built-in Qt launcher). Pass the --fg-root option as well (assuming Config.FG_root is non-empty, otherwise FlightGear version detection is not attempted) to work around this new behavior of 'fgfs --version'. (Florent Rougon) [BUGFIX] Run 'fgfs --fg-root=... --version' in the directory defined by FG_WORKING_DIR (which can be configured from the Settings dialog). This is a good idea, as FlightGear has a nasty tendency to leave core files around, even when just trying to print the version... (Florent Rougon) [MAINT] Preferences dialog: use a Ttk Notebook widget instead of the home-made one. This will be better for maintainability, and hopefully is also an improvement regarding ergonomy and appearance on various OSes. (Florent Rougon) [MAINT] Preferences dialog: reimplement the whole dialog layout using the grid() layout manager instead of pack(). This allows to have proper horizontal and vertical alignments in the new “Statistics” tab. This should also make it easier to add things or make changes to the dialog in the future. Also replace Tk widgets with Ttk ones whenever there is a Ttk equivalent, and get rid of the 'from tkinter import *' wildcard import. (Florent Rougon) [USABILITY] Enable automatic line wrapping in the About box. Otherwise, the box can get very large depending on the text we display inside... (Florent Rougon) [USABILITY] Update the translated template config files ffgo/data/config/config_. * Remove the --multiplay option from all templates: nowadays, most people should connect using the in-sim menu when they are ready (not on a runway, not on someone else's aircraft, and ready to answer to an eventual ATC operator, for a start). Other people can find the option on the FlightGear wiki or forum, as well as in the output of 'fgfs --help --verbose' anyway. * Update the French and German templates; both should now be up-to-date. (Florent Rougon & chris_blues) [USABILITY] Small update to the template config files ffgo/data/config/config_* (only the English, French and German files have an active maintainer; we can only do “blind corrections” for other languages). (Florent Rougon & chris_blues) [FEATURE] Update the German translation. (chris_blues) 1.10.1 [BUGFIX] Fix image scaling to work with Pillow versions older than 2.9.0 (the 'width' and 'height' attributes of PIL.Image instances were only added to Pillow in version 2.9.0, released on 2015-07-01 according to Pillow's ChangeLog). (Florent Rougon) 1.11.0 [FEATURE] New Pressure Converter dialog. This dialog, accessible from the Tools menu, allows one to quickly convert a pressure value from inches of mercury (inHg) to hectoPascals (hPa) and vice versa. This is useful when the QNH value obtained from METAR or ATIS (the “altimeter setting”) is not in a unit that is directly usable with your aircraft's instruments. (Florent Rougon) [FEATURE] Help menu: add an entry (“Show available fgfs options”) to show the output of 'fgfs --help --verbose'. This allows one to easily see (a subset of) what can be put in the Options Window (command-line options such as --enable-fullscreen or --disable-hud-3d). (Florent Rougon) [BUGFIX] Fix state management for the runway and parking buttons. With the default, empty config (FG_ROOT config parameter not filled, etc.), clicking on either the runway or the parking button was possible, but triggered an error (a harmless one, though). FFGo now ensures that said buttons are disabled when appropriate. (Florent Rougon) [USABILITY] Use a color suitable for prolonged reading when displaying potentially long texts (e.g., the FFGo help file accessible from the Help menu, or when doing Help → Show available fgfs options). (Florent Rougon) [USABILITY] Improve the documentation concerning FFGo installation (docs/INSTALL/INSTALL_en and ). Among other changes, there is now a precise description of how to install MagneticField on Windows. Thanks to jaxsin on the FlightGear forum for testing things on Windows and reporting. (Florent Rougon) [USABILITY] Don't attempt to run FlightGear if Config.FG_bin is empty or whitespace-only. Rather, display a helpful message. (Florent Rougon) [USABILITY] Improve the error reporting dialog boxes displayed when FlightGear can't be run or when trying to start FlightGear while it is already running. (Florent Rougon) [USABILITY] Add commented-out property settings for anti-aliasing to the default FlightGear options. The commented-out lines are: --prop:/sim/rendering/multi-sample-buffers=true and --prop:/sim/rendering/multi-samples=4 as mentioned on the Anti-aliasing page of the FlightGear wiki (). Thanks to jaxsin on the FlightGear forum for the suggestion. (Florent Rougon) [USABILITY] Update other comments in the default FlightGear options: - the comment about --terrasync-dir, which benefits from a fix in FlightGear 2016.2.0 (FlightGear commit 41b78ce1505aced494f588d6f3591c8af68a8bbe of Sunday, Feb 21); - the comment about running 'fgfs --help --verbose', which can now be easily done from FFGo's Help menu. (Florent Rougon) [USABILITY] Improve or polish several tooltip texts and labels. (Florent Rougon) [FEATURE] Update the German translation. (chris_blues) 1.11.1 [BUGFIX] Prevent unwanted selection changes in the airport and aircraft choosers. The airport and aircraft choosers suffered from the following problem: if the associated search field was not empty, some operations such as running FlightGear or changing the sort order in the airport or aircraft list, could cause the selected item to be changed based on the contents of the search field. Such unwanted changes could only happen after FlightGear was started, which somehow mitigated the impact of the bug, but still, this was clearly undesirable and could be confusing. (Florent Rougon) [MAINT] Declare Python 3.5 support in the setup.py metadata. (Florent Rougon) 1.11.2 [BUGFIX] Fix FG_SCENERY tooltip concerning the default TerraSync directory. The previously-indicated default ($FG_HOME/TerraSync) was correct for non-Windows systems, but for Windows it wasn't. This is because Windows uses a different code path in FlightGear to determine FlightGear's download directory, and the FlightGear wiki page for TerraSync () was incorrect. Both FFGo's tooltip and the TerraSync wiki page are now fixed. (Florent Rougon) [BUGFIX] There was a similar problem in config_en, config_de and config_fr (default config options). Don't mention $FG_HOME/TerraSync anymore, point to instead. (Florent Rougon) [BUGFIX] Make the file and directory selectors more robust in case the HOME environment variable points to a non-existent file or directory. (Florent Rougon) [USABILITY] Add more commented out options to the default configuration. * Example for --metar (to choose specific weather conditions). * How to enable the Phi web interface to FlightGear, using --httpd=127.0.0.1:8080 or --httpd=8080. * Example of --multiplay options to establish direct multiplayer connection between two FlightGear instances running on the same computer, without going through an fgms server (FlightGear multiplayer server). (Florent Rougon) [USABILITY] Remove useless --enable-real-weather-fetch option from unmaintained config_ll files (Italian, Japanese and Polish outdated translations of ffgo/data/config/config_en). This option is already enabled by default in contemporary FlightGear. We already have to choose between useful options, so let's not waste config space/add complexity with useless ones... (Florent Rougon) [USABILITY] Improve the installation instructions. Actually, most of the recent improvements in this area went to , but some of these have been “backported” to docs/INSTALL/INSTALL_en in this release. Moreover, this file now clearly suggests users to start with the installation instructions from the FFGo wiki page first, then to consult docs/INSTALL/INSTALL_en in case they need more information on certain subjects. (Florent Rougon) [MAINT] Aircraft is an invariable noun. Argh. Fix spelling in all places where this is safe for a “stable update”. (Florent Rougon) [FEATURE] Update the German translation. (chris_blues) [FEATURE] Update the Spanish translation of ffgo/data/config/config_en. (carmen890) 1.12.0 [FEATURE] Support reading and merging of in-scenery-paths apt.dat files. * Adapt to the new feature introduced in FlightGear commit 516a5cf0 that allows FlightGear to read and merge an arbitrary number of uncompressed or gzip-compressed apt.dat files located in the NavData/apt subdirectory of each scenery path (plus, at least for now, the usual $FG_ROOT/Airports/apt.dat.gz considered with lowest priority). * Users of FlightGear 2016.4.0 must have their FlightGear more recent than November 9, 2016 (FlightGear commit fb10f76e). For FlightGear < 2016.4.0, only $FG_ROOT/Airports/apt.dat.gz is read (old behavior). (Florent Rougon) [FEATURE] Introduce a new “download directory” setting, tunable from the Preferences dialog. This is necessary, because the directory specified with the --download-dir fgfs option contributes a scenery path when TerraSync is enabled ($download_dir/TerraSync except when --terrasync-dir is used, but this last option is not very useful, only kept as legacy since --download-dir was added to FlightGear). IMPORTANT: Using --download-dir or --terrasync-dir inside the Options Window is not supported anymore, as doing this correctly would potentially require to rebuild the apt digest file every time a character is added to, or removed from the corresponding line in the Options Window. To compensate for this, users can set the download directory in the Preferences dialog. Print an explanatory message when trying to use --download-dir or --terrasync-dir in the Options Window. (Florent Rougon) [USABILITY] Add a progress bar to the window displayed when rebuilding the apt digest file/airport database. (Florent Rougon) [FEATURE] Add config parameters and drop-down lists for the season (summer or winter textures) and time of day. (Florent Rougon) [FEATURE] Add “Enable automatic scenery download” (i.e., TerraSync), “Start FlightGear in full screen”, “Start FlightGear paused”, “Enable multi-sample anti-aliasing” and “Enable deferred rendering (Rembrandt)” config parameters and check buttons. (Florent Rougon) [MAINT] Try to simplify and make more understandable the logic deciding when to rebuild the apt digest file (especially in automatic mode). (Florent Rougon) [BUGFIX] Small fix in Config._findInstalledApt() (used for the “Show installed airports only” feature, when choosing “Update list of installed airports” in the Settings menu). In the corner case where TerraSync is enabled and the TerraSync directory isn't listed in Config.FG_scenery, then FlightGear *is* going to use it as a scenery path, so visiting Config.FG_scenery only is not quite right. This is fixed for FlightGear versions that have --json-report (option which appeared in FlightGear 2016.4.0, commit fb10f76e from November 9, 2016). Anyway, I recommend to *always* explicitly list the TerraSync directory in Config.FG_scenery: this is IMHO more logical, and the resulting behavior is more predictable. Otherwise, the list of scenery paths used by FlightGear can change whenever you enable or disable TerraSync---eeek! (Florent Rougon) [USABILITY] Disable the error popup dialog when parsing broken groundnet files. This dialog box was quite ugly and annoying, and didn't have the effect I hoped (i.e., people fixing the groundnet files---at least, not in many airports distributed via TerraSync). The errors are still logged to the terminal and to FFGo's log file for those who care about providing sane groundnet files. (Florent Rougon) [USABILITY] Print a helpful message when the fallback localization file ffgo/data/locale/en/LC_MESSAGES/FFGo.mo can't be found. This happens every time someone tries to run FFGo from the Git repository without preparing it as per the instructions in docs/INSTALL/INSTALL_en. And then people think it's a bug! This message should help prevent such confusion. (Florent Rougon) [MAINT/FEATURE] Update the “FFGo conditional config documentation” (aka README.conditional-config). * Don't use options such as --timeofday, --season, --enable-fullscreen, --enable-terrasync and --terrasync-dir in the examples, since these are now specifically managed by FFGo, thus using them in the Options Window is redundant and confusing (e.g., if a checkbox is unchecked but the corresponding option is added from the Options Window). * Give a hint about how to automatically load specific joystick binding files depending on the aircraft (this is in an example regarding helicopters, using the 'heli_class' CondConfigParser variable). (Florent Rougon) [FEATURE] Update the German translation. (chris_blues) 1.12.1 [BUGFIX] Update changed URL to retrieve METAR reports. The old URL doesn't work anymore, use instead. I thought FFGo wasn't affected, and since nobody reported the problem... (Florent Rougon) 1.12.2 [BUGFIX] Layout improvements in the main window. The goal is to increase the likelihood of the main window fitting on screens that are not very wide (1280 pixels wide with font size 11 should now be OK in English as well as in French—this of course depends on the particular fonts used). (Florent Rougon) [FEATURE] Use a Ttk PanedWindow for the top part of the main window, thus allowing users to choose how to distribute horizontal space in the top “row” containing the aircraft list, the two middle panes and the airport list (at run time, using the mouse). (Florent Rougon) [BUGFIX] Stricter check for FlightGear versions having the --json-report option. Now that FlightGear 2016.4.1 is out, check for this version rather than 2016.4.0, because 2016.4.1 guarantees the availability of --json-report while 2016.4.0 does not (only the very last FG commits labelled 2016.4.0 have this option). (Florent Rougon) [FEATURE] Small addition to README.conditional-config (ATCChatter example). (Florent Rougon) 1.12.3 [BUGFIX] Pass --disable-terrasync when automatic scenery download is disabled. Omitting --enable-terrasync is not enough, FlightGear remembers the setting! (Florent Rougon) [FEATURE] Add a configuration parameter and check box in the main window to enable or disable automatic download of weather data (also known as “real weather fetch”). This is convenient when one repeatedly runs FlightGear to debug something and wants it to start as quickly as possible. (Florent Rougon) [USABILITY] Small layout adjustments in FFGo's main window. (Florent Rougon) [USABILITY] Rewording of the MSAA tooltip: it doesn't seem to impact frame rate that badly. (Florent Rougon) 1.12.4 [USABILITY] Minor update to the default config regarding real weather fetching (only the comment is changed). (Florent Rougon) [USABILITY] Update the German translation. (chris_blues) 1.12.5 [USABILITY] Fix a mistake in the German translation. (chris_blues) 1.12.6 [MAINT] Change protocol from HTTP to HTTPS for METAR reports retrieval. tgftp.nws.noaa.gov doesn't offer METAR reports over HTTP anymore. This was still working for FFGo because the connection was automatically upgraded to https. Now, we connect directly using https when retrieving METAR info. (Florent Rougon) [MAINT] Cheap optimizations in the generic code for aircraft and airport lists. (Florent Rougon) [BUGFIX] Fix crash due to incompatible changes in Ttk from Python 3.8. See for details. Thanks to pav-rez for reporting this issue and providing patches. (Florent Rougon) [BUGFIX] Fix ugly 'Run FG' behavior when the selected airport or aircraft is invalid (this used to print a half-baked error message that wasn't designed for end-users). Thanks to pav-rez for reporting it (in the same issue as above: ). (Florent Rougon) [MAINT] Change the default airport to BIKF. Keflavík International Airport (BIKF) is currently the default airport in FlightGear. It is not important for us to follow it, but doesn't hurt. (Florent Rougon) [FEATURE] Update the French and German translations. (Florent Rougon and chris_blues) [MAINT] Update old URLs (mainly, change http ones to https when possible). (Florent Rougon) [MAINT/FEATURE] Refresh the setup.py script (Python packaging). FFGo is now available in wheel format (see for the specification of this Python packaging format). (Florent Rougon) [SECURITY] In README.rst, which yields , explain how to fetch my OpenPGP key over https and where to find FFGo official tarballs available over https too. (Florent Rougon) 1.12.7 [USABILITY] Update and improve docs/INSTALL/INSTALL_en. (Florent Rougon) 1.12.8 [FEATURE] Update the Polish translation. (PlayeRom Roman Ludwicki) [MAINT] Update documentation and config_* files (oldish info, links). (PlayeRom Roman Ludwicki and Florent Rougon) [MAINT] Packaging fixes. (Florent Rougon)