On 29-Feb-2008, Ben Abbott wrote:
| On Friday, February 29, 2008, at 10:40AM, "Søren Hauberg" <address@hidden
> wrote:
| >
| >fre, 29 02 2008 kl. 07:05 -0800, skrev Ben Abbott:
| >> I modified print.m to support a figure handle as an input.
| >>
| >> It is a trivial change, but permits printing as is often done
(by me) in Matlab. For example,
| >>
| >> print (gcf, '-pdf', 'foo.pdf')
| >>
| >> Please consider the attached changeset.
| >I don't know how matlab works, but wouldn't it make sense to do
| >something like
| >
| >if (ishandle (arg))
| > old_fig = gcf();
| > figure (arg);
| >endif
| >
| >...
| >
| >if (ishandle(arg))
| > figure(old_fig);
| >endif
| >
| >such that the current figure is still the current figure after
the call
| >to 'print' ?
| >
| >Søren
| >
|
| Good point. Matlab respects that behavior as well.
|
| I've attached the correct changeset.
When you want to make a temporary change to some global state like the
current figure, you should use unwind_protect to prevent the change
from sticking in case an error occurs or an interrupt arrives while
the setting is in the changed state. For example
old_fig = get (0, 'currentfigure');
unwind_protect
figure (arg);
...
unwind_protect_cleanup
if (ishandle (old_fig))
figure (old_fig)
endif
end_unwind_protect
jwe