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
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).
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:
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)
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.
May 23, 2017 at 01:00 pm - Permalink
-Hide my Gizmo
-Run some code to alter the constitute waves of the Gizmo
-Show and Update my Gizmo
-Repeat....
Thanks again, In Advance.
May 23, 2017 at 12:55 pm - Permalink
May 23, 2017 at 01:22 pm - Permalink
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
May 1, 2025 at 12:24 am - Permalink
I can't think of a single command that blocks updating all Gizmo windows. This is not version dependent.
AG
May 2, 2025 at 12:26 pm - Permalink
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
May 2, 2025 at 11:45 pm - Permalink
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
May 13, 2025 at 10:56 am - Permalink
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
May 13, 2025 at 01:24 pm - Permalink