Delay Updating of a Gizmo?

I am familiar with using the DelayUpdate/PauseUpdate command to temporarily stop any graphs/tables from updating when changes are made to their corresponding waves; however, I find PauseUpdate/DelayUpdate does not work to delay the updating of a Gizmo(e.g 3D scatter plot). When working with a 3D scatter plot, for example, the PauseUpdate/DelayUpdate command does not work to stop the Gizmo from updating when the waves it's graphing are changed.

Does anyone know of a way I can stop my Gizmo from updating when I edit a wave?
You did not state which version of Igor you are using. The following applies only to IP7. If for some reason you are still using earlier versions -- it's time to upgrade.

Gizmo will automatically update unless you hide its window. All updates due to changes in source waves are suspended when the window is hidden. As of the next nightly build you can use:
ModifyGizmo stopUpdates  // and
ModifyGizmo resumeUpdates



A.G.
WaveMetrics, Inc.
Thanks for your response! What sequence of code would I use if I wanted to...

-Hide my Gizmo
-Run some code to alter the constitute waves of the Gizmo
-Show and Update my Gizmo
-Repeat....

Thanks again, In Advance.
Try this in a new experiment:
newgizmo/junk=3
dowindow/Hide=1 gizmo0
redimension/n=(20,3) eee
dowindow/Hide=0 gizmo0  // will automatically update

Hi all

A quick follow-up question for that old topic:

Is there a way to stop ALL gizmos from updating (without iterating through all windows) while a user function is running in Igor 7?

(Yes, it's time to upgrade)

HJ

I can't think of a single command that blocks updating all Gizmo windows.  This is not version dependent.

 

AG

Thanks for the info.

This might be a request for a new feature since it affects computation time a lot:

Gizmo displayed: 38.0s
Gizmo minimized: 20.7s
Gizmo killed: 20.6s

It actually surprised me that the Gizmo is updating in each iteration while my function is still running (and not every 100 iterations with some progress report via DoUpdates).

Cheers
HJ

When you display a wave in Gizmo, you may have an expectation that changes in the wave are manifested in the display. 

Waves are marked as changed (or modified) every time an operation/function writes to the wave, even if you are executing

myWave+=0

Some procedure execution code is designed to allow Igor to update the display periodically so a Gizmo window may attempt to update the display of modified wave(s) at inopportune times.

Returning to the original question, I suspect that you can use WinList() to create a list of all Gizmo Windows and then iterate through the list with:

ModifyGizmo/N=gizmoName stopUpdates

 

Thank you,

I'm well aware of Winlist etc. It's just some 'different' behavior from what I encountered before. Displays are updated after a function executed (unless doupdates is called) in order to improve calculation performance afaik. My expectation was that Gizmos are behaving the same. They do not and if it's intendend, that's fine ;-). I might want to check when exactly the update is done; it doesn't seem to be voxel by voxel, but that might be my code.

I espcially appreciate the fast execution speed of Igor and it just hit me quite hard that there is a factor of ~2 (i.e. -50%) on a silver plate (usually I'm very happy to find -10% and gratefully take -5%).

As a solution to my original issue, I hard coded to Gizmo name to the name of my processed data set. Since I'm the only one using my code it should be fine (yes, I documented it for Me-from-in-a-month)

Cheers,
HJ