octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ChangeSet] print.m: support for figure handles


From: Ben Abbott
Subject: Re: [ChangeSet] print.m: support for figure handles
Date: Fri, 29 Feb 2008 18:58:47 -0500


On Feb 29, 2008, at 5:24 PM, John W. Eaton wrote:

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

ahhh-ha ... very cool!

I'll make the change!

The indent between unwind_protect and the cleanup will mean nearly all lines will be included in the changeset. Is that ok?

Ben





reply via email to

[Prev in Thread] Current Thread [Next in Thread]