FlightGear Newsletter June 2014: Difference between revisions

Jump to navigation Jump to search
Remove empty sections, turn Cquotes into text, remove copy of Howto:Creating a Canvas GUI dialog file
m (add content as per Gijs' request)
(Remove empty sections, turn Cquotes into text, remove copy of Howto:Creating a Canvas GUI dialog file)
Line 93: Line 93:
}}
}}


== Creating Canvas GUI Dialogs ==
{{Newsletter-article-start|Boeing 777 EFB prototype|By [[User:I-NEMO|I-NEMO]]}}
'''Targeted FlightGear versions: >= 3.20'''
[[File:Canvas GUI Demo Dialog.png|400px|thumb|Screen shot showing a simple [[Canvas GUI]] dialog with a handful of [[Canvas Widgets|Button Widgets]].]]
== Editing Translations/en/menu.xml ==
Navigate to the sub-menu where you'd like to add your new dialog, e.g. "Equipment" in this case, and then add a key:
<syntaxhighlight lang="xml">
<equipment>Equipment</equipment>
<canvas-demo-dialog>Canvas Demo Dialog</canvas-demo-dialog>
</syntaxhighlight>
 
== Editing gui/menubar.xml ==
Next, open $FG_ROOT/gui/menubar.xml and navigate to the corresponding sub-menu and add a new item/binding to load your dialog:
<syntaxhighlight lang="xml">
<item>
<name>canvas-demo-dialog</name>
<binding>
<command>nasal</command>
<script>
canvas.loadDialog("CanvasDemo");
</script>
</binding>
</item>
</syntaxhighlight>
 
== Creating the actual dialog file ==
{{Note|These dialog files can be edited at run-time and simply closed/re-opened, because the Canvas system will reload them from disk whenever the menu binding is triggered. So this is very convenient for quickly developing and testing your dialogs.}}
Next, open/create $FG_ROOT/Nasal/canvas/gui/dialogs/CanvasDemo.nas and add some boilerplate code:
<syntaxhighlight lang="nasal">
var DemoDialog = {
  new: func
  {
    var m = {
      parents: [DemoDialog],
      _dlg: canvas.Window.new([400,300], "dialog")
                        .set("title", "Demo Dialog")
                        .set("resize", 1),
      _active_button: nil
    };
 
    m._dlg.getCanvas(1)
          .set("background", canvas.style.getColor("bg_color"));
    m._root = m._dlg.getCanvas().createGroup();
 
    var vbox = VBoxLayout.new();
    m._dlg.setLayout(vbox);
 
    return m;
  },
};
 
var demo = DemoDialog.new();
</syntaxhighlight>
 
Finally, start FlightGear and open your new dialog
 
== Adding Widgets ==
== Using Layouts ==
 
== Using Styling ==
 
 
=== 777 EFB Prototype by I-NEMO ===
[[File:777-EFB-MAIN.png|thumb|777-200ER EFB [http://forum.flightgear.org/viewtopic.php?f=71&t=23196]]]
[[File:777-EFB-MAIN.png|thumb|777-200ER EFB [http://forum.flightgear.org/viewtopic.php?f=71&t=23196]]]
[[File:777-EFB-AIRPORT-SEARCH.png|thumb|777-200 EFB AIRPORT SEARCH, see [http://forum.flightgear.org/viewtopic.php?f=71&t=23196&p=211410#p211410]]]
[[File:777-EFB-AIRPORT-SEARCH.png|thumb|777-200 EFB AIRPORT SEARCH, see [http://forum.flightgear.org/viewtopic.php?f=71&t=23196&p=211410#p211410]]]
Line 160: Line 99:
I-NEMO has started porting his 777/EFB prototype to [[Canvas]]
I-NEMO has started porting his 777/EFB prototype to [[Canvas]]


{{cquote
As I wrote several times, I finally decided to put hands on the EFB (Reason: No one ever took care of developing an EFB for the 777; a 'working' EFB, though) with two (2) main goals in mind:
  |<nowiki>As I wrote several times, I finally decided to put hands on the EFB (Reason: No one ever took care of developing an EFB for the 777; a 'working' EFB, though) with two (2) main goals in mind:</nowiki><br/><nowiki>
# do something to compensate for the lacking of an EFB inside the Boeing 777 Seattle.
</nowiki><br/><nowiki>
# actually try (I repeat it: 'try') to learn some first essentials of nasal.
1) to do something to compensate for the lacking of an EFB inside the Seattle.</nowiki><br/><nowiki>
2) to actually try (I repeat it: 'try') to learn some first essentials of nasal.</nowiki><br/><nowiki>
</nowiki>
  |{{cite web |url=http://forum.flightgear.org/viewtopic.php?p=211550#p211550
    |title=<nowiki>Re: 777 EFB status & plans  ?</nowiki>
    |author=<nowiki>I-NEMO</nowiki>
    |date=<nowiki>Mon Jun 02</nowiki>
  }}
}}
 
{{cquote
  |<nowiki> this Seattle EFB is just a 'rude' one: with this term, I mean (as a word's pun) 'unpolite'. I'm perfectly aware that the coding is horrible, clumsy, repetitive, silly and very, very far from what it should be. </nowiki><br/><nowiki>
My first aim was simply to have a somehow 'working' EFB inside the Seattle's Cockpit.</nowiki><br/><nowiki>
</nowiki><br/><nowiki>
My second aim was to use EFB.nas as a starting playground for a newbie as I am on 'nasal'. </nowiki>
  |{{cite web |url=http://forum.flightgear.org/viewtopic.php?p=211550#p211550
    |title=<nowiki>Re: 777 EFB status & plans  ?</nowiki>
    |author=<nowiki>I-NEMO</nowiki>
    |date=<nowiki>Mon Jun 02</nowiki>
  }}
}}
 
{{cquote
  |<nowiki>I do not pretend that current 777's EFB.nas is a piece of nice software; but - to my initial purpose - it works. Not completely, not nicely, not properly...but it's a starting point. At least, it works...</nowiki>
  |{{cite web |url=http://forum.flightgear.org/viewtopic.php?p=211550#p211550
    |title=<nowiki>Re: 777 EFB status & plans  ?</nowiki>
    |author=<nowiki>I-NEMO</nowiki>
    |date=<nowiki>Mon Jun 02</nowiki>
  }}
}}
 


{{FGCquote
This Seattle EFB is just a 'rude' one: with this term, I mean (as a word's pun) 'unpolite'. I'm perfectly aware that the coding is horrible, clumsy, repetitive, silly and very, very far from what it should be. My first aim was simply to have a somehow 'working' EFB inside the Seattle's Cockpit. I do not pretend that current 777's EFB.nas is a piece of nice software; but - to my initial purpose - it works. Not completely, not nicely, not properly...but it's a starting point. At least, it works...
  |Current development ('modernisation' phase) of the '''Boeing 777 Seattle's EFB''' is going on nicely; the code is shorter, more readable and cleaner.<br/>
Current development ('modernisation' phase) of the '''Boeing 777 Seattle's EFB''' is going on nicely; the code is shorter, more readable and cleaner.
I have not finished it, yet (I'd say that it's almost 50% done).
I have not finished it, yet (I'd say that it's almost 50% done).
  |{{cite web |url=http://forum.flightgear.org/viewtopic.php?p=213104#p213104
    |title=<nowiki>Re: 777 EFB: initial feedback</nowiki>
    |author=<nowiki>I-NEMO</nowiki>
    |date=<nowiki>Sat Jun 21</nowiki>
  }}
}}


{{FGCquote
At the moment I have a single Canvas group (i.e., ''EFB_group''), with 5 children: the text-matrix (16 left lines, 16 right lines), a Title line , an Helper line and the Display.<br/>
  |At the moment I have a single Canvas group (i.e., ''EFB_group''), with 5 children: the text-matrix (16 left lines, 16 right lines), a Title line , an Helper line and the Display.<br/>
The ''Display'' element is then textured with all the various pages' textures, called by the page-handler (''see'' here below).<br/>
The ''Display'' element is then textured with all the various pages' textures, called by the page-handler (''see'' here below).<br/>
Currently, I'm using the .jpg textures which I had previously generated through Photoshop; in the future they might be replaced by .svg files, depending from actual interactive use of some graphical objects (a few EFB pages do need interaction with graphical parts). Besides - if i'm not wrong - I've read somewhere on the FGWiki that gradients are not handled by the SVG parser...and I do like to use some gradients effects (antialiasing and such) to achieve a sort of realism on the displays.
Currently, I'm using the .jpg textures which I had previously generated through Photoshop; in the future they might be replaced by .svg files, depending from actual interactive use of some graphical objects (a few EFB pages do need interaction with graphical parts). Besides - if i'm not wrong - I've read somewhere on the FGWiki that gradients are not handled by the SVG parser...and I do like to use some gradients effects (antialiasing and such) to achieve a sort of realism on the displays.
  |{{cite web |url=http://forum.flightgear.org/viewtopic.php?p=213104#p213104
    |title=<nowiki>Re: 777 EFB: initial feedback</nowiki>
    |author=<nowiki>I-NEMO</nowiki>
    |date=<nowiki>Sat Jun 21</nowiki>
  }}
}}


{{FGCquote
that's the <u>current status</u> of the new 777 ''Seattle'''s EFB: it's still far from being perfect, but - as a newbie - I'm quite satisfied for the moment: I need to finish the first version fairly soon, because my to-do-list is long (I have to re-model all the aircraft fuselage [original model has wrong measures, ''sigh!''], produce better gears and flight-control surfaces model &amp; animations in Blender, and then to produce a new Paint-Kit in Photoshop; then all 3D models optimizations...and so forth; of course, we also have to take care of CDU, which will interface with the EFB. So, the job is still very, very long...
  |that's the <u>current status</u> of the new 777 ''Seattle'''s EFB: it's still far from being perfect, but - as a newbie - I'm quite satisfied for the moment: I need to finish the first version fairly soon, because my to-do-list is long (I have to re-model all the aircraft fuselage [original model has wrong measures, ''sigh!''], produce better gears and flight-control surfaces model &amp; animations in Blender, and then to produce a new Paint-Kit in Photoshop; then all 3D models optimizations...and so forth; of course, we also have to take care of CDU, which will interface with the EFB. So, the job is still very, very long...
  |{{cite web |url=http://forum.flightgear.org/viewtopic.php?p=213104#p213104
    |title=<nowiki>Re: 777 EFB: initial feedback</nowiki>
    |author=<nowiki>I-NEMO</nowiki>
    |date=<nowiki>Sat Jun 21</nowiki>
  }}
}}


{{FGCquote
The current EFB code is heavily focused on rendering raster images, which can be retained obviously, but in FG, we have additional means to render airport information that is 100% in sync with the FG side of things (navdb). <br/>
  |The current EFB code is heavily focused on rendering raster images, which can be retained obviously, but in FG, we have additional means to render airport information that is 100% in sync with the FG side of things (navdb). <br/>
<br/>
<br/>
For instance, we are going to "port" the airport-selection dialog to move rendering of airports/runways/taxiways/parking spots into dedicated MapStructure layers that can be properly styled and customized: [[Canvas_MapStructure#Porting_the_airports.xml_dialog]] <br/>
For instance, we are going to "port" the airport-selection dialog to move rendering of airports/runways/taxiways/parking spots into dedicated MapStructure layers that can be properly styled and customized: [[Canvas_MapStructure#Porting_the_airports.xml_dialog]] <br/>
Line 235: Line 122:
<br/>
<br/>
As long as the underlying design for a "page"-based MFD framework is sufficiently generic, we can easily replace/augment raster images and procedurally created charts - we could even use the built-in support for fetching via HTTP to download images on-line. In fact, we could then even extend Canvas to directly support rendering PDFs (OSG supports this out-of-the-box), this would make many steps unnecessary, because we could directly access [http://airnav.com http://airnav.com] without having to download/convert/ship any imagery. The code required to pull this off would be very compact in comparison.
As long as the underlying design for a "page"-based MFD framework is sufficiently generic, we can easily replace/augment raster images and procedurally created charts - we could even use the built-in support for fetching via HTTP to download images on-line. In fact, we could then even extend Canvas to directly support rendering PDFs (OSG supports this out-of-the-box), this would make many steps unnecessary, because we could directly access [http://airnav.com http://airnav.com] without having to download/convert/ship any imagery. The code required to pull this off would be very compact in comparison.
  |{{cite web |url=http://forum.flightgear.org/viewtopic.php?p=213084#p213084
    |title=<nowiki>Re: 777 EFB: initial feedback</nowiki>
    |author=<nowiki>Hooray</nowiki>
    |date=<nowiki>Sat Jun 21</nowiki>
  }}
}}
Learn more at [[Canvas EFB Framework]] ...


Learn more at [[Canvas EFB Framework]] or follow the [http://forum.flightgear.org/viewtopic.php?f=71&t=23204 forum discussion]...


{{Newsletter-article-start|Towards an Aircraft-agnostic MFD Framework|By [[User:Hooray|Hooray]]}}
Given the recent trend of having several MFD-related efforts without any kind of collaboration/code reuse going on here among our contributors (PFD, ND, Avidyne Entegra R9, EFB), I have started prototyping a generic MFD framework that is purely XML-based, inspired by discussions we've had over the last couple of weeks, and lessons learnt from the missions subsystem.


=== Towards an Aircraft-agnostic MFD Framework ===
It is intended to:
* support multiple independent instances
* be totally aircraft agnostic
* support a pure dialog-driven mode
* support skinning/theming


[[File:Gpsmap196-canvas-panel-page.png|thumb|F-JJTH has updated the SVG file implementing the panel page for the [[Garmin GPSMap 196]]]]
This is supposed to support modeling complex avionics like a PFD, ND, EFB, CDU etc - and, eventually, also the Avidyne Entegra R9. It's currently just a prototype, but it gets away with very little code and we really only need a few more "skins" for common avionics. I am willing to extend this over time and help maintain it if people can agree to use something like this. It should be straightforward to allow such "MFDs" to be reloaded from disk at run-time, i.e. for more rapid prototyping.
 
 
{{cquote
  |<nowiki>Given the recent trend of having several MFD-related efforts without any kind of collaboration/code reuse going on here among our contributors (PFD, ND, Avidyne Entegra R9, EFB), I have started prototyping a generic MFD framework that is purely XML-based, inspired by discussions we've had over the last couple of weeks, and lessons learnt from the missions subsystem.</nowiki>
  |{{cite web |url=http://forum.flightgear.org/viewtopic.php?p=212029#p212029
    |title=<nowiki>Framework-centric aircraft-agnostic avionics development</nowiki>
    |author=<nowiki>Hooray</nowiki>
    |date=<nowiki>Sat Jun 07</nowiki>
  }}
}}
 
{{cquote
  |<nowiki>It is intended to:</nowiki><br/>
*<nowiki> support multiple independent instances</nowiki><br/>
*<nowiki> be totally aircraft agnostic</nowiki><br/>
*<nowiki> support a pure dialog-driven mode</nowiki><br/>
*<nowiki> support skinning/theming</nowiki>
  |{{cite web |url=http://forum.flightgear.org/viewtopic.php?p=212029#p212029
    |title=<nowiki>Framework-centric aircraft-agnostic avionics development</nowiki>
    |author=<nowiki>Hooray</nowiki>
    |date=<nowiki>Sat Jun 07</nowiki>
  }}
}}
 
{{cquote
  |<nowiki>This is supposed to support modeling complex avionics like a PFD, ND, EFB, CDU etc - and, eventually, also the Avidyne Entegra R9.</nowiki><br/><nowiki>
</nowiki><br/><nowiki>
It's currently just a prototype, but it gets away with very little code and we really only need a few more "skins" for common avionics.</nowiki><br/><nowiki>
I am willing to extend this over time and help maintain it if people can agree to use something like this.</nowiki><br/><nowiki>
</nowiki><br/><nowiki>
It should be straightforward to allow such "MFDs" to be reloaded from disk at run-time, i.e. for more rapid prototyping.</nowiki><br/><nowiki>
</nowiki>
  |{{cite web |url=http://forum.flightgear.org/viewtopic.php?p=212029#p212029
    |title=<nowiki>Framework-centric aircraft-agnostic avionics development</nowiki>
    |author=<nowiki>Hooray</nowiki>
    |date=<nowiki>Sat Jun 07</nowiki>
  }}
}}


{{Note|This is work in progress - the idea is to identify required building blocks to easily specify most MFD functionality in a generic fashion, without requiring a ton of custom Nasal code and without being specific to a single type of MFD. The whole concept is based on [[FlightGear_Missions_and_Adventures#XML_Extension_Framework]], i.e. providing a Nasal-space mechanism to expose and re-define building blocks to XML space.
{{Note|This is work in progress - the idea is to identify required building blocks to easily specify most MFD functionality in a generic fashion, without requiring a ton of custom Nasal code and without being specific to a single type of MFD. The whole concept is based on [[FlightGear_Missions_and_Adventures#XML_Extension_Framework]], i.e. providing a Nasal-space mechanism to expose and re-define building blocks to XML space.
Line 293: Line 140:
The Nasal/Canvas data structures will be transparently created and compiled for each MFD. Each MFD consists of an arbitrary number of buttons, modes and pages. Each MFD can be instantiated multiple times, and each MFD is designed to be aircraft/instrument agnostic, i.e. also works just in a conventional Canvas dialog. Buttons can trigger and switch between modes, and modes may have pages (conventionally implemented through a single SVG file). Each page consists of an arbitrary number of page elements, which can in turn be animated/updated via listeners and timers.  Should look at existing displays, especially the [[NavDisplay]] and the update() method in navdisplay.mfd, but the most complete test-case would probably be the [[Avidyne Entegra R9]] }}
The Nasal/Canvas data structures will be transparently created and compiled for each MFD. Each MFD consists of an arbitrary number of buttons, modes and pages. Each MFD can be instantiated multiple times, and each MFD is designed to be aircraft/instrument agnostic, i.e. also works just in a conventional Canvas dialog. Buttons can trigger and switch between modes, and modes may have pages (conventionally implemented through a single SVG file). Each page consists of an arbitrary number of page elements, which can in turn be animated/updated via listeners and timers.  Should look at existing displays, especially the [[NavDisplay]] and the update() method in navdisplay.mfd, but the most complete test-case would probably be the [[Avidyne Entegra R9]] }}


<gallery mode=packed>
Gpsmap196-canvas-panel-page.png|F-JJTH has updated the SVG file implementing the panel page for the [[Garmin GPSMap 196]].
Canvas-mfd-framework-prototyping.png|This is an adapted version of the [[Garmin GPSMap 196]] that is currently being developed by F-JJTH. Here, the whole instrument is entirely set up in XML space, including buttons/event handling, but also the embedded canvas region that serves as the 'screen'. The idea is to allow arbitrary MFDs to be specified in an aircraft-agnostic fashion, including displays like a PFD, [[NavDisplay]] or EFB. For details, please see [[Canvas Glass Cockpit Efforts]].
Canvas-mfd-framework-prototyping-with-mapstructure.png|This demonstrates how a purely XML-based MFD framework can instantiate dynamic [[MapStructure]] layers - none of this involves any [[Nasal]] coding now, it's just an XML file - to learn more, see [[Canvas Glass Cockpit Efforts]].
Canvas-mfd-framework-prototyping-with-mapstructure-with-kln89-skin.png|This screen shot shows the texture of the hard-coded KLN89 instrument used as a skin/theme for the MFD instrument, with a MapStructure-powered map shown.
</gallery>


[[File:Canvas-mfd-framework-prototyping.png|thumb|This is an adapted version of the [[Garmin GPSMap 196]] that is currently being developed by F-JJTH. Here, the whole instrument is entirely set up in XML space, including buttons/event handling, but also the embedded canvas region that serves as the 'screen'. The idea is to allow arbitrary MFDs to be specified in an aircraft-agnostic fashion, including displays like a PFD, [[NavDisplay]] or EFB. For details, please see [[Canvas Glass Cockpit Efforts]].]]
{{Newsletter-article-start|Canvas System|By [[User:Hooray|Hooray]]}}
The upcoming FlightGear version (3.2) will contain a canvas-based map dialog, including a modular "plugin" system for creating custom map layers and charts with roughly ~50 lines of code, most of it boilerplate. This is entirely XML/Nasal based (scripted) - symbols can be pretty much anything, raster or vector images (png or svg), but even animated. Styling can be customized, too.


For more info, I suggest to check out: [[MapStructure#Porting the map dialog]]


<gallery mode=packed>
MapStructureDialog.png|You can basically create arbitrary layers, even for custom objects/positions
Map-canvas-chain-home-editor.png|The same method can be used for creating a "live" radar display
MapStructure-TFC-Troubleshooting.png|
Map-canvas-dialog-storms-overlay.png|But maps and layers can be fairly sophisticated, too - all 100% scripted
</gallery>


[[File:Canvas-mfd-framework-prototyping-with-mapstructure.png|400px|thumb|This demonstrates how a purely XML-based MFD framework can instantiate dynamic [[MapStructure]] layers - none of this involves any [[Nasal]] coding now, it's just an XML file - to learn more, see [[Canvas Glass Cockpit Efforts]].]]
As long as you use the MapStructure framework, all layers can be easily used in dialogs AND instruments<br><br>Coding-wise, there isn't too much involved these days, all the details are covered in the MapStructure article.


[[File:Canvas-mfd-framework-prototyping-with-mapstructure-with-kln89-skin.png|400px|thumb|This screen shot shows the texture of the hard-coded KLN89 instrument used as a skin/theme for the MFD instrument, with a MapStructure-powered map shown.]]
{{Newsletter-article-start|GUI Launcher|By [[User:Hooray|Hooray]]}}
[[File:Aircraft-center-prototype.png|270px|thumb|Canvas dialog showing the prototype for an [[Aircraft Center]] for directly installing/managing aircraft from within FlightGear, an upcoming feature scheduled for FlightGear 3.2, currently being developed by TheTom and Zakalawe]]
The "built-in" GUI/launcher is one of the longest-standing feature requests - but it's not just about the GUI (which is rather straightforward in comparison), but about the simulator never having  been developed with this requirement, i.e. run-time reinitialization, in mind - thus, things like "fgrun" (and a plethora of other external launchers) were developed, which acted as a front-end on top of FG, so that FG itself wouldn't need to be changed - i.e. kind of a "remote control" using command line arguments. So it's there for a reason - fgrun uses the FLTK GUI library, which while relatively simple, is much more powerful than our legacy GUI engine, PUI.


=== Canvas System ===
{{FGCquote
  |The upcoming FlightGear version (3.2) will contain a canvas-based map dialog, including a modular "plugin" system for creating custom map layers and charts with roughly ~50 lines of code, most of it boilerplate. <br><br>This is entirely XML/Nasal based (scripted) - symbols can be pretty much anything, raster or vector images (png or svg), but even animated. Styling can be customized, too.<br><br>For more info, I suggest to check out:<br><br>[[MapStructure#Porting_the_map_dialog|http://wiki.flightgear.org/MapStructure ... map_dialog]]<br>[[File:MapStructureDialog.png|250px]] <br><br>You can basically create arbitrary layers, even for custom objects/positions:<br>[[File:Map-canvas-chain-home-editor.png|250px]]<br><br>The same method can be used for creating a "live" radar display:<br>[[Canvas_Radar|http://wiki.flightgear.org/Canvas_Radar]]<br>[[File:MapStructure-TFC-Troubleshooting.png|250px]]<br><br>But maps and layers can be fairly sophisticated, too - all 100% scripted:<br>[[FlightGear_Newsletter_May_2014#A_Canvas-based_Map_dialog|http://wiki.flightgear.org/FlightGear_N ... Map_dialog]]<br>[[File:Map-canvas-dialog-storms-overlay.png|250px]]<br><br>As long as you use the MapStructure framework, all layers can be easily used in dialogs AND instruments<br><br>Coding-wise, there isn't too much involved these days, all the details are covered in the MapStructure article.
  |{{cite web |url=http://forum.flightgear.org/viewtopic.php?p=212558#p212558
    |title=<nowiki>Re: Get objects to show up on Map/Radar</nowiki>
    |author=<nowiki>Hooray</nowiki>
    |date=<nowiki>Sat Jun 14</nowiki>
  }}
}}
=== GUI Launcher ===
{{FGCquote
  |The "built-in" GUI/launcher is one of the longest-standing feature requests - but it's not just about the GUI (which is rather straightforward in comparison), but about the simulator never having  been developed with this requirement, i.e. run-time reinitialization, in mind - thus, things like "fgrun" (and a plethora of other external launchers) were developed, which acted as a front-end on top of FG, so that FG itself wouldn't need to be changed - i.e. kind of a "remote control" using command line arguments. So it's there for a reason - fgrun uses the FLTK GUI library, which while relatively simple, is much more powerful than our legacy GUI engine, PUI.<br/>
<br/>
Still, people have been asking for this for years, and it's thanks to pretty much a single person, Zakalawe, that switching aircraft is going to become possible pretty soon - he handled all the ugly work of cleaning up the simulator internals to make this happen - it's not exactly glamorous work, you gotta touch a ton of places, and you inevitably introduce a ton of regressions along the way.
Still, people have been asking for this for years, and it's thanks to pretty much a single person, Zakalawe, that switching aircraft is going to become possible pretty soon - he handled all the ugly work of cleaning up the simulator internals to make this happen - it's not exactly glamorous work, you gotta touch a ton of places, and you inevitably introduce a ton of regressions along the way.
  |{{cite web |url=http://forum.flightgear.org/viewtopic.php?p=213461#p213461
    |title=<nowiki>Re: About FlightGear being user-friendly or not</nowiki>
    |author=<nowiki>Hooray</nowiki>
    |date=<nowiki>Thu Jun 26</nowiki>
  }}
}}


{{FGCquote
And yes, even the legacy FG GUI is entirely based on XML and configurable through just editiing XML files - but the collection of "widgets" (GUI controls like buttons, checkboxes, labels etc) is extremely small and very inflexible.
  |And yes, even the legacy FG GUI is entirely based on XML and configurable through just editiing XML files - but the collection of "widgets" (GUI controls like buttons, checkboxes, labels etc) is extremely small and very inflexible.<br/>
<br/>
This is something that is currently being addressed by TheTom and Zakalawe, who've both been working on a new Canvas GUI, and a new Canvas GUI dialog called "Aircraft Center", which -while still experimental- is intended to eventually allow end-users to easily download/install aircraft right within the simulator, and also switch between aircraft at run-time without having to exit/restart the simulator.<br/>
<br/>
Thus, adopting Canvas is going to address a number of long-standing issues, but it's obviously a process that only just got started, and it will not happen overnight - 2-3 release cycles are not far-fetched, that's how long the whole migration could very well take, unless there are more people interested in helping.
  |{{cite web |url=http://forum.flightgear.org/viewtopic.php?p=213461#p213461
    |title=<nowiki>Re: About FlightGear being user-friendly or not</nowiki>
    |author=<nowiki>Hooray</nowiki>
    |date=<nowiki>Thu Jun 26</nowiki>
  }}
}}


This is something that is currently being addressed by TheTom and Zakalawe, who've both been working on a new Canvas GUI, and a new Canvas GUI dialog called "Aircraft Center", which -while still experimental- is intended to eventually allow end-users to easily download/install aircraft right within the simulator, and also switch between aircraft at run-time without having to exit/restart the simulator.


[[File:Aircraft-center-prototype.png|500px|thumb|Canvas dialog showing the prototype for an [[Aircraft Center]] for directly installing/managing aircraft from within FlightGear, an upcoming feature scheduled for FlightGear 3.2, currently being developed by TheTom and Zakalawe]]
Thus, adopting Canvas is going to address a number of long-standing issues, but it's obviously a process that only just got started, and it will not happen overnight - 2-3 release cycles are not far-fetched, that's how long the whole migration could very well take, unless there are more people interested in helping.


{{Newsletter-article-start|Damage and disintegration|By [[User:Algernon|Algernon]]|FlightGear addons and mods}}
{{Newsletter-article-start|Damage and disintegration|By [[User:Algernon|Algernon]]|FlightGear addons and mods}}

Navigation menu