Macro language/API suggestion: separate the UI from Foldit engine
|Opened on:||Thursday, February 12, 2009 - 01:38|
|Last modified:||Friday, January 6, 2012 - 21:49|
There has been some chat regarding open source of FoldIt and the proprietary nature of the "folding" keep it from becoming "open Source"
I think it would be excellent if FoldIt could be overhauled to permit the UI interaction portion to be Open Source. Kind of a UI skin.
UI Handler Event API events===> FoldIt Engine Event Handler
This would permit all kinds of possible User Interface. As an extreme example a voice activated UI. The user would say
"Lock segment 21"
"Lock Segment 25"
"Local Wiggle Segment 22"
and the voice activated open source UI skin would package and send the appropriate events th FoldIt display engine.
This would require a formal specification events supported by Foldit. Clearly some interaction don't translate well to verbal commands or event scripting. The unattached bands and the pull operation are vectors and this can be a bit tricky.
Another example might help illustrate my point. In structure mode on can select a segment and then drag to another segment changing all segments in between the starting and ending segment. This is a number of operations caused by (down-click, mouse move events over segments, mouse up-click event).
0. set Structure mode event
1. Select starting segment event (down-click)
2. begin change struct mode event
3. select ending segemt event ( this changes the elements when the mouses passes over a segment)
4. repeat 3 for each segment "touched"
5. end change mode event (up-click)
6. set Pull Mode event
One could just as easily implement a double click select start segments, double click select end segment interaction model.
1. set structure mode event and select starting segment event and begin change mode event(double click)
2. select ending segment event and end change mode event and set Pull Mode event (double click)
Or write a script interface that would post the same events with some language specification
set S-Mode ______(set structure mode event)
pick 21 _________(select starting segment)
begin change ____(begin change mode event)
pick 37 _________(select ending segment event )
end change _____(end change mode event )
set P-Mode ______(set Pull Mode event)
The key point being a clear separation of the UI from the FoldIt display and compute engine proving support for all possible interaction events.