Merge pull request #5485 from RosettaCommons/roccomoretti/interactive_fix_disulfide_bug
[Foldit] Fix bug with use_disulfide_tool in puzzle setup.
Recent changes introduced a bug with puzzle_setups which contain an explicit '0' with use_disulfide_tool. This should fix it.
Merge pull request #5494 from RosettaCommons/interactive/solberg/undo_graph_clear_crash_fix
[foldit] add check for no last value to temporary frame deletion
Merge pull request #5473 from RosettaCommons/roccomoretti/interactive_fix_rdkit_rotamers
[Foldit] Fix ThreadedRDKitRotamerLibrarySpecification
The merge with master resulted in a crash with ligand design puzzles, due to the need of using the clone() method (which was unimplemented before, due to uncopyable mutex. By moving the thread-related code to a dedicated helper class, we can make the ThreadedRDKitRotamerLibrarySpecification::clone() method functional. (Clones share the thread-using class.)
Merge pull request #4598 from RosettaCommons/roccomoretti/interactive/develop_master_merge2020
Foldit: Merge a recent(ish) version of master into the interactive/develop branch.
Update the Rosetta version for Foldit to a recent-ish version.
Due to the update on submodules, this includes a change on how Foldit on Windows needs to be downloaded/built (Powershell instead of cygwin, to allow MSVC to properly work with native symlinks.)
Merge pull request #5462 from RosettaCommons/joshmiller/dojo-adjust
[Foldit] Don't make client-side adjustments to Dojo goal scores or match results
Release notes:
- Slight changes to Dojo's matchmaking behavior
Merge pull request #5446 from RosettaCommons/roccomoretti/interactive_fix_puzzle_setup_crash
[ Foldit ] Hotfix segfault in puzzle setup
With my recent changes, I was effectively modifying a container while iterating over it, which can lead to memory corruption. This didn't show up on my machine, but was causing crashes on some players machines when they accessed the tutorial levels.
This correct that. It also addresses several uninitialized variable issues which Valgrind noticed while I was debugging the crash.
Merge pull request #5443 from RosettaCommons/roccomoretti/interactive_fix_selection_blueprint
[Foldit] Hotfix of blueprint button in selection mode.
The new layout code was missing the button to access the Blueprint tool. This hotfix puts it back in.
Merge pull request #5081 from RosettaCommons/roccomoretti/interactive_tool_activation_merge
[Foldit] Harmonize action/tool display between intro and regular puzzle setups.
(This should be internal restructuring only -- there ideally shouldn't be any user-facing changes, aside from some slight button reorganization due to better consistency.)
Right now the intro puzzles can control which actions/tools/widgets are being displayed, but there's no way to control that on a per-puzzle basis for regular puzzles. This PR attempts to allow such control in regular puzzles by moving the canonical location of this data from the IntroPuzzleData object to the SessionConfig object. The Puzzle object acts as a control nexus, transforming the data currently extracted from the intro puzzle setups into the new form, as well as centralizing puzzle-type default handling.
The main approach here is to remove the hud_setup, tool_setup and selection_tool settings from the intro puzzle files. Instead, we now can control those settings from within the .puzzle_setup file. The bulk of it is controlled by the actions settings. For convenience, I put in a facility to be able to set actions/<actionname> on each line, with explicit disable/enable settings. For those things which aren't really actions, I have gui/<settingname> settings instead. These are then stored long-term in the SessionConfig object, and can be accessed accordingly. (Existing places have been transitioned to use the SessionConfig object, rather than going through the Intro object. I've also transitioned some of the other puzzle_settup settings to go through the action framework instead.) All of this framework works with non-Intro-like puzzles (e.g. the ones from the server.)
To keep the puzzle setup file from being excessively long in the standard case, I've also added a puzzle_setup option to the puzzle_setup file. This looks in the database for a corresponding file, and loads those values as defaults. (This is written such that it should work with all settings in puzzle_setup, not just the action and gui settings.) You can chain these settings, and the most recent version should override anything earlier. I've populated that directory with defaults for various intro and dojo puzzles -- we can theoretically add additional such defaults for other (non intro-like) puzzles.