changeset 14576:4dbb47d09219

New Function, findfigs.m * findfigs.m: New File. * scripts/plot/module.mk: Add new file. * scripts/help/unimplmented.m: Remove findfigs.m from list. * NEWS: Mention new file.
author Carnë Draug <carandraug+dev@gmail.com>
date Sat, 21 Apr 2012 18:10:11 -0400
parents 2e23cd0a9e40
children 447038c2dde8
files NEWS scripts/help/unimplemented.m scripts/plot/findfigs.m scripts/plot/module.mk
diffstat 4 files changed, 83 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/NEWS	Wed Apr 11 12:54:41 2012 +0200
+++ b/NEWS	Sat Apr 21 18:10:11 2012 -0400
@@ -64,6 +64,7 @@
       colorcube   splinefit
       lines       tetramesh
       rgbplot     shrinkfaces
+      findfigs
 
  ** Deprecated functions.
 
--- a/scripts/help/unimplemented.m	Wed Apr 11 12:54:41 2012 +0200
+++ b/scripts/help/unimplemented.m	Sat Apr 21 18:10:11 2012 -0400
@@ -178,7 +178,6 @@
   "figurepalette",
   "filebrowser",
   "fill3",
-  "findfigs",
   "fitsinfo",
   "fitsread",
   "flow",
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/plot/findfigs.m	Sat Apr 21 18:10:11 2012 -0400
@@ -0,0 +1,81 @@
+## Copyright (C) 2008 Bill Denney
+## Copyright (C) 2012 Carnë Draug
+##
+## This file is part of Octave.
+##
+## Octave is free software; you can redistribute it and/or modify it
+## under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 3 of the License, or (at
+## your option) any later version.
+##
+## Octave is distributed in the hope that it will be useful, but
+## WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+## General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with Octave; see the file COPYING.  If not, see
+## <http://www.gnu.org/licenses/>.
+
+## -*- texinfo -*-
+## @deftypefn {Function File} {} findfigs ()
+## Find all visible figures that are currently off the screen and move them
+## onto the screen.
+## @seealso{allchild, figure, get, set}
+## @end deftypefn
+
+## Author: Bill Denney <bill@denney.ws>
+## Modified by: Carnë Draug <carandraug+dev@gmail.com>
+
+function findfigs ()
+
+  figh  = allchild (0);
+  units = get (0, "units");
+  unwind_protect
+    if (!strcmp (units, "pixels"))
+      set (0, "units", "pixels");
+    endif
+    screensize = get (0, "screensize");
+  unwind_protect_cleanup
+    set (0, "units", units);
+  end_unwind_protect
+
+  ## give the monitor a margin so that the figure must not just
+  ## marginally be on the monitor.
+  margin = 30;
+  screensize(1:2) += margin;
+  screensize(3:4) -= margin;
+
+  for i = 1:numel (figh)
+    if strcmp (get (figh(i), "visible"), "on")
+
+      units = get (figh(i), "units");
+      unwind_protect
+        if (!strcmp (units, "pixels"))
+          set (figh(i), "units", "pixels");
+        endif
+        pos = get (figh(i), "position");
+        ## Test if (in order):
+        ## The left side is outside the right side of the screen
+        ## The bottom is above the top of the screen
+        ## The right side is outside the left of the screen
+        ## the top is below the bottom of the screen
+        if (pos(1) > screensize(3)
+            || pos(2) > screensize(4)
+            || pos(1)+pos(3) < screensize(1)
+            || pos(2)+pos(4) < screensize(2))
+
+          ## the new position will be at the top left of the screen
+          ## (all moved figures will overlap).  The bottom left is chosen
+          ## instead of the top left because that allows for the unknown
+          ## amount of space for the menu bar and the title bar.
+          pos(1) = screensize(1);
+          pos(2) = screensize(2);
+          set (figh(i), "position", pos);
+        endif
+      unwind_protect_cleanup
+        set (figh(i), "units", units);
+      end_unwind_protect
+    endif
+  endfor
+endfunction
--- a/scripts/plot/module.mk	Wed Apr 11 12:54:41 2012 +0200
+++ b/scripts/plot/module.mk	Sat Apr 21 18:10:11 2012 -0400
@@ -98,6 +98,7 @@
   plot/figure.m \
   plot/fill.m \
   plot/findall.m \
+  plot/findfigs.m \
   plot/findobj.m \
   plot/fplot.m \
   plot/gca.m \