From: Rolf H. <rh...@fl...> - 2010-12-01 11:56:34
|
On 12/01/2010 05:56 AM, Yingjie Lin wrote: > Dear Jmol Users, > > I would like to be able to count the number of times a jmolbutton has been clicked by a user, and then > to make this button do three different things upon the 1st, 2nd and 3rd clicks. > > To be more specific, I would like to have one "zoom" buttom which zooms in to 3 different levels. > I know that > > jmolButton("zoomto 1 selected;", buttomText, buttomID, buttomTitle) > > does this, however, I don't want zoom in any more after the first three clicks. > > Any thoughts? Thank you! > Instead of using Javascript to control the button function (like Mike proposed) you could also do it with Jmol scripting instead and still use "jmolButton". I guess you will have two buttons, one for zooming in and one for zooming out. So you could define a function like this (just a rough proposal, not tested): function buttonZoom(zoomMode) { if (zoomMode = "in") { if (zoomLevel < 4) { zoomLevel++ } switch(zoomLevel) { case 1: zoom... break case 2: zoom... break case 3: zoom... break } } else { if (zoomLevel > 0) { zoomLevel-- } switch(zoomLevel) { case 1: zoom... break case 2: zoom... break case 3: zoom... break } } } "zoomLevel" must be defined as a global Jmol script variable and initialized with "0". You could do this together with the function definition within a script file that is loaded with "script scriptfile" during Jmol initialization. Your button definitions would then look like this: jmolButton('buttonZoom("in")', buttonText, buttonID, buttonTitle) jmolButton('buttonZoom("out")', buttonText, buttonID, buttonTitle) Regards, Rolf |