Merge pull request #5623 from RosettaCommons/interactive/solberg/cysteineish_crashes
[Foldit] fix crash on loading certain alphafold predictions (edit: also simplify bands fix)
Merge pull request #5627 from RosettaCommons/roccomoretti/fix_help
[Foldit] Fix bug with help panel.
The files for help weren't being properly copied over to the resources component.
Merge pull request #5606 from RosettaCommons/interactive/petrides/density_selection_original_interface_fix
[Foldit] - Update Electron Density Panel to only contain "Select Cloud" button while in the selection interface
Merge pull request #5584 from RosettaCommons/roccomoretti/interactive_pseudolocalize
[ Foldit ] Add pseudolocalization
The log_untranslated feature is good for letting third-party translators know which messages are being passed through the translation system but are untranslated in their current translation files, but it's not too useful for developers looking for a way to check which strings aren't actually being passed to translation.
This PR adds a pseudolocalization language, which is basically just the English text with a bunch of diacritics added. The translated strings are also surrounded by `[` and `]`, so you can see the bounds of the string being sent through the translation machinery.
The translator code has been adjusted to recognize the special pseudolocalization language code and automatically perform the transform on otherwise-untranslated strings. This way a developer can simply set their language to "Ƥşêúđöľöçâľíżê" and quickly see if their strings are being passed through the translation machinery, or if they're coming through as plain English text.
RELEASE NOTES: Add a "pseudolocalization" language option, which should identify string not being set through the translator.
Merge pull request #5450 from RosettaCommons/roccomoretti/interactive_help_update
[ Foldit ] Update Help Panel to be more flexible.
The current Help Panel has its content hard-coded in the StandaloneApplication directly. This makes it hard to update content. Create a new HelpPanel class which generalizes the logic needed for displaying the current style help panel. The content of the panel is no longer hard-coded, but instead present in the resources/help/ directory as a series of JSON files. This should hopefully allow us to iterate/expand/update help text more readily.
The general organization is a series of "cards" which are organized based on "layouts"/lists which are a series of buttons in the left-hand pane. A small JSON-based domain-specific language lays out what the content of each card is. The implementation is somewhat general, so it should be straightforward to add additional content types and behaviors. (e.g. a button to launch a particular intro puzzle.)
Right now the content is basically the same as the current version, except for some slight layout differences. The big change is the alteration to how the "Gameplay" and "Glossay" submenus work. Instead of a bespoke popup, I re-use the lefthand pane for a list of topics. I think this will generalize better, and will allow us to do multiple such nested lists, with arbitrary depth.
An additional feature is context sensitivity. Items can be added/removed based on various settings. Right now it's just internal & secret keys availability, but we could theoretically add the ability to respond to puzzle type, or which actions are available on a given puzzle.
This PR also includes a number of changes to various widgets, adding functionality that was helpful for getting the various widgets to work with the automated system.
RELEASE NOTES: Update code behind the Help Menu, which should allow us to more easily improve the help content.