Eric, I'm glad you are looking at sync. I'll take a look myself and see 
what I can come up with.



Eric Martz wrote:

>Dear Bob,
>
>1. Bug: At http://moleculesinmotion.com/patterson_aas2/aminoacids/ 
>(Jmol 11.5.50)
>
>If you open one console and enter "sync * on", and then rotate any 
>molecule with the mouse, the entire bottom row "flips upside down" 
>(does a 180 degree X rotation). I see this in both Safari/OSX and 
>Firefox/Win98.
>  
>
cool effect. ;)

>I have seen intermittant problems of this sort many times in my JTAT 
>sync demos, but never had one so reproducible that I could report it 
>as a bug. The above page seems to demonstrate the bug nicely.
>
>  
>
I'll look at that page.

>2. Why is it that when "show syncmouse" reports "synchmouse = false" 
>(the default), a "sync * on" command nevertheless synchronizes 
>mouse-initiated movements? What is the effect of "set syncmouse true"?
>
>  
>
The code at http://chemapps.stolaf.edu/jmol/docs/examples-11/sync4.htm 
uses the following. "drive" is a checkbox.

function sync() {
 var syncing = document.getElementById("drive").checked
 var s = (syncing ? 'sync * on;sync * "set syncMouse on;set syncScript 
off";sync jmolAppletC SLAVE;sync jmolAppletD SLAVE': 'sync * off')
 jmolScript(s, "A");
}

Applet A is being designated as the driver. It gets sent

  sync * on

which enables all the sync on all four applets.

  sync * "set syncMouse on;set syncScript off"

sends the message to all applets to turn mouse syncing on and script 
syncing off. Script syncing is off so that you can selectively render 
structures in any one of the four applets.

  sync jmolAppletC SLAVE;sync jmolAppletD SLAVE

sets both C and D as slaves, but leaves A and B as drivers.

The difference between

  set syncMouse TRUE

and

  set syncMouse FALSE

is that in the first case, the mouse syncing is carried out at a lower 
level using special non-script commands. Using

  set LogLevel 5

you can check that out. Just look at the Java Console:

 sync * "set syncMouse TRUE"

jmolAppletB__3539942059766625__ sending to 
jmolAppletC__3539942059766625__: Mouse: rotateXYBy 2 2
jmolAppletC__3539942059766625__ syncing with script: Mouse: rotateXYBy 2 2
jmolAppletB__3539942059766625__ sending to 
jmolAppletD__3539942059766625__: Mouse: rotateXYBy 1 1
jmolAppletD__3539942059766625__ syncing with script: Mouse: rotateXYBy 1 1
jmolAppletB__3539942059766625__ sending to 
jmolAppletA__3539942059766625__: Mouse: rotateXYBy 1 1
jmolAppletA__3539942059766625__ syncing with script: Mouse: rotateXYBy 1 1
jmolAppletA__3539942059766625__ sync mode=3; synced? true; driving? 
true; disabled? true


 sync * "set syncMouse FALSE"

jmolAppletB__3539942059766625__ sending to 
jmolAppletD__3539942059766625__: !moveto 0.1 { -344 540 -768 158.35} 
100.0 0.0 0.0 {10.5935 10.2105 6.079} 17.392593 {0.0 0.0 0.0} 11.275982 
-43.427624 50.0;
jmolAppletD__3539942059766625__ syncing with script: !moveto 0.1 { -344 
540 -768 158.35} 100.0 0.0 0.0 {10.5935 10.2105 6.079} 17.392593 {0.0 
0.0 0.0} 11.275982 -43.427624 50.0;
jmolAppletB__3539942059766625__ sending to 
jmolAppletA__3539942059766625__: !moveto 0.1 { -344 540 -768 158.35} 
100.0 0.0 0.0 {10.5935 10.2105 6.079} 17.392593 {0.0 0.0 0.0} 11.275982 
-43.427624 50.0;
jmolAppletA__3539942059766625__ syncing with script: !moveto 0.1 { -344 
540 -768 158.35} 100.0 0.0 0.0 {10.5935 10.2105 6.079} 17.392593 {0.0 
0.0 0.0} 11.275982 -43.427624 50.0;
jmolAppletA__3539942059766625__ sync mode=3; synced? true; driving? 
true; disabled? true


So the difference there is mostly efficiency. The first should be cleaner.

>3. After "sync * on", "show sync" reports "synchronize = <not set>". ???
>
>  
>
There is no variable "synchronize". "sync * on" is a command, not a 
variable definition. Right now there is no way for the applet to find 
out what its sync state is.

>4. I do not see syncMouse or syncScript in the state report. Should 
>they be there if they remain at defaults?
>  
>

I thought not. The state is the state of the isolated applet, not its 
state relative to other applets. Right now, at least, you can't save the 
state, reset the sync, and then restore the state to the earlier sync 
state. Sounds like a real can of worms to me. Or, to put it another way, 
applet synchonization is "above" the state. Note that you can zap and 
load models and "initialize" and all the synchronization is still intact.

>Thanks, -Eric
>
>
>
>-------------------------------------------------------------------------
>This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
>Build the coolest Linux based applications with Moblin SDK & win great prizes
>Grand prize is a trip for two to an Open Source event anywhere in the world
>http://moblin-contest.org/redirect.php?banner_id=100&url=/
>_______________________________________________
>Jmol-users mailing list
>[email protected]
>https://lists.sourceforge.net/lists/listinfo/jmol-users
>  
>


-- 
Robert M. Hanson
Professor of Chemistry
St. Olaf College
Northfield, MN
http://www.stolaf.edu/people/hansonr


If nature does not answer first what we want,
it is better to take what answer we get. 

-- Josiah Willard Gibbs, Lecture XXX, Monday, February 5, 1900



-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Jmol-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jmol-users

Reply via email to