Difference between revisions of "Recycling Corner"

From Jmol
Jump to navigation Jump to search
m (Jmol icons)
(scripts for toggling spin state)
Line 22: Line 22:
  
 
== Reusable scripts ==
 
== Reusable scripts ==
 +
 +
=== "Basic" spin toggle ===
 +
Quite trivial, but compact and useful. However, if other scripts, controls, or the user change the spin status, the checkbox will need to be reset using javascript.
 +
 +
(''To avoid this limitation, see the "universal" solution below'')
 +
 +
Will work with any version of Jmol (as long as <code>Jmol.js</code> is being used in the web page).
 +
 +
<pre>jmolCheckbox("spin on", "spin off", "spin", false)</pre>
 +
if the model is initially not spinning (the default)
 +
 +
or
 +
<pre>jmolCheckbox("spin on", "spin off", "spin", true)</pre>
 +
if the model is initially spinning (due to another script)
 +
 +
 +
 +
=== "Universal" spin toggle ===
 +
Works by reading the current spin status from the applet and changing it, so it accounts for any other previous change via script, popup menu, page controls, etc.
 +
 +
Only compatible with '''Jmol 11.x''' (as long as <code>Jmol.js</code> is being used in the web page).
 +
 +
<pre>jmolButton("show spin", "toggle spin")</pre>
 +
 +
You '''must''' include these additional pieces of code:
 +
 +
Somewhere between <code>&lt;script&gt;</code> tags (recommended: within the <code>head</code> section):
 +
<pre>function messageProcess(a,b)
 +
{ a = a.substring("jmolApplet".length)
 +
        // a will start with "jmolApplet": strip and leave just the ID part
 +
/*  SPIN DETECTION AND TOGGLE */
 +
if ( b.indexOf("set spin") != -1 )
 +
{ if ( b.indexOf("spin on") != -1 ) //was spinning
 +
{ jmolScript("spin off", a)
 +
}
 +
else //was not spinning
 +
{ jmolScript("spin on", a)
 +
}
 +
}
 +
/*  END of SPIN DETECTION AND TOGGLE  */
 +
}</pre>
 +
 +
and somewhere between <code>&lt;script&gt;</code> tags, '''after''' the call to <code>jmolInitialize()</code>  '''and before''' the call to <code>jmolApplet()</code>:
 +
<pre>jmolSetCallback("messageCallback", "messageProcess")</pre>

Revision as of 17:32, 17 January 2007

This section intends to collect material by some users that may be useful to other users.

Feel free to add your material!

For example:

Jmol icons

(.ico files cannot be shown on the webpage, but you can download them)

These are not very good-looking, but something for a start.

File:Jmol75x29x8.ico Windows icon, with just "Jm" taken from Jmol logo. 256 colors, transparent background.

File:Jmol 16 32.ico Windows icon, "J" from Jmol logo, together with a ball&sticks small model. 2 resolutions (16, 32px), 256 colors, transparent background.

Jmol images, graphics or logos

on a separate page


Templates for creating Jmol webpages

Reusable scripts

"Basic" spin toggle

Quite trivial, but compact and useful. However, if other scripts, controls, or the user change the spin status, the checkbox will need to be reset using javascript.

(To avoid this limitation, see the "universal" solution below)

Will work with any version of Jmol (as long as Jmol.js is being used in the web page).

jmolCheckbox("spin on", "spin off", "spin", false)

if the model is initially not spinning (the default)

or

jmolCheckbox("spin on", "spin off", "spin", true)

if the model is initially spinning (due to another script)


"Universal" spin toggle

Works by reading the current spin status from the applet and changing it, so it accounts for any other previous change via script, popup menu, page controls, etc.

Only compatible with Jmol 11.x (as long as Jmol.js is being used in the web page).

jmolButton("show spin", "toggle spin")

You must include these additional pieces of code:

Somewhere between <script> tags (recommended: within the head section):

function messageProcess(a,b)
{	a = a.substring("jmolApplet".length)	
        // a will start with "jmolApplet": strip and leave just the ID part
	/*  SPIN DETECTION AND TOGGLE */
	if ( b.indexOf("set spin") != -1 )
	{	if ( b.indexOf("spin on") != -1 ) //was spinning
		{	jmolScript("spin off", a) 
		}
		else //was not spinning
		{ 	jmolScript("spin on", a) 
		}
	}
	/*  END of SPIN DETECTION AND TOGGLE  */
}

and somewhere between <script> tags, after the call to jmolInitialize() and before the call to jmolApplet():

jmolSetCallback("messageCallback", "messageProcess")