changeset 16508:f19e24c97b20

move common warndlg, errordlg, helpdlg, and msgbox code to private function * message_dialog.m: New file. * scripts/ui/module.mk: Include it in the list of functions. * errordlg.m, helpdlg.m, warndlg.m, msgbox.m: Call message_dialog to do most of the work.
author John W. Eaton <jwe@octave.org>
date Fri, 12 Apr 2013 18:17:26 -0400
parents 8cb12cf9ca32
children 14045b872a3d
files scripts/ui/errordlg.m scripts/ui/helpdlg.m scripts/ui/module.mk scripts/ui/msgbox.m scripts/ui/private/message_dialog.m scripts/ui/warndlg.m
diffstat 6 files changed, 78 insertions(+), 74 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/ui/errordlg.m	Fri Apr 12 22:40:20 2013 +0200
+++ b/scripts/ui/errordlg.m	Fri Apr 12 18:17:26 2013 -0400
@@ -36,20 +36,7 @@
     print_usage ();
   endif
 
-  if (! ischar (msg))
-    if (iscell (msg))
-      msg = sprintf ("%s\n", msg{:});
-      msg(end) = "";
-    else
-      error ("errordlg: MSG must be a string or cellstr array");
-    endif
-  endif
-
-  if (! ischar (title))
-    error ("errordlg: TITLE must be a character string");
-  endif
-
-  h = javaMethod ("errordlg", "org.octave.JDialogBox", msg, title);
+  retval = message_dialog ("errdlg", msg, title);
 
 endfunction
 
--- a/scripts/ui/helpdlg.m	Fri Apr 12 22:40:20 2013 +0200
+++ b/scripts/ui/helpdlg.m	Fri Apr 12 18:17:26 2013 -0400
@@ -36,20 +36,7 @@
     print_usage ();
   endif
 
-  if (! ischar (msg))
-    if (iscell (msg))
-      msg = sprintf ("%s\n", msg{:});
-      msg(end) = "";
-    else
-      error ("helpdlg: MSG must be a string or cellstr array");
-    endif
-  endif
-
-  if (! ischar (title))
-    error ("helpdlg: TITLE must be a character string");
-  endif
-
-  h = javaMethod ("helpdlg", "org.octave.JDialogBox", msg, title);
+  retval = message_dialog ("helpdlg", msg, title);
 
 endfunction
 
--- a/scripts/ui/module.mk	Fri Apr 12 22:40:20 2013 +0200
+++ b/scripts/ui/module.mk	Fri Apr 12 18:17:26 2013 -0400
@@ -1,5 +1,8 @@
 FCN_FILE_DIRS += ui
 
+ui_PRIVATE_FCN_FILES = \
+  ui/private/message_dialog.m
+
 ui_FCN_FILES = \
   ui/errordlg.m \
   ui/helpdlg.m \
@@ -7,7 +10,8 @@
   ui/listdlg.m \
   ui/msgbox.m \
   ui/questdlg.m \
-  ui/warndlg.m
+  ui/warndlg.m \
+  $(ui_PRIVATE_FCN_FILES)
 
 FCN_FILES += $(ui_FCN_FILES)
 
--- a/scripts/ui/msgbox.m	Fri Apr 12 22:40:20 2013 +0200
+++ b/scripts/ui/msgbox.m	Fri Apr 12 18:17:26 2013 -0400
@@ -35,42 +35,13 @@
 ## @seealso{errordlg, helpdlg, inputdlg, listdlg, questdlg, warndlg}
 ## @end deftypefn
 
-function h = msgbox (msg, title = "", icon)
+function retval = msgbox (msg, title = "", varargin)
 
   if (nargin < 1 || nargin > 3)
     print_usage ();
   endif
 
-  if (! ischar (msg))
-    if (iscell (msg))
-      msg = sprintf ("%s\n", msg{:});
-      msg(end) = "";
-    else
-      error ("msgbox: MSG must be a character string or cellstr array");
-    endif
-  endif
-
-  if (! ischar (title))
-    error ("msgbox: TITLE must be a character string");
-  endif
-  
-  dlg = "emptydlg";
-  if (nargin == 3)
-    switch (icon)
-      case "error"
-        dlg = "errordlg";
-      case "help"
-        dlg = "helpdlg";
-      case "warn"
-        dlg = "warndlg";
-      case "none"
-        dlg = "emptydlg";
-      otherwise
-        error ("msgbox: ICON is not a valid type");
-    endswitch
-  endif
-
-  h = javaMethod (dlg, "org.octave.JDialogBox", msg, title);
+  retval = message_dialog ("msgbox", msg, title, varargin{:});
 
 endfunction
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/ui/private/message_dialog.m	Fri Apr 12 18:17:26 2013 -0400
@@ -0,0 +1,68 @@
+## Copyright (C) 2010 Martin Hepperle
+##
+## 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} {@var{h} =} message_dialog (@var{caller}, @var{msg}, @var{title}, @var{icon})
+## Undocumented internal function.
+## @end deftypefn
+
+function retval = message_dialog (caller, msg, title = "", icon)
+
+  if (! ischar (msg))
+    if (iscell (msg))
+      msg = sprintf ("%s\n", msg{:});
+      msg(end) = "";
+    else
+      error ("%s: MSG must be a character string or cellstr array", caller);
+    endif
+  endif
+
+  if (! ischar (title))
+    error ("%s: TITLE must be a character string", caller);
+  endif
+  
+  dlg = "emptydlg";
+  if (nargin == 4)
+    switch (icon)
+      case "error"
+        dlg = "errordlg";
+      case "help"
+        dlg = "helpdlg";
+      case "warn"
+        dlg = "warndlg";
+      case "none"
+        dlg = "emptydlg";
+      otherwise
+        error ("%s: ICON is not a valid type", caller);
+    endswitch
+  endif
+
+  if (__have_feature__ ("JAVA"))
+    retval = javaMethod (dlg, "org.octave.JDialogBox", msg, title);
+    if (retval)
+      return;
+    endif
+  endif
+
+  ## FIXME -- provide terminal-based implementation here?
+
+  if (! retval)
+    error ("%s is not available in this version of Octave", dlg);
+  endif
+
+endfunction
--- a/scripts/ui/warndlg.m	Fri Apr 12 22:40:20 2013 +0200
+++ b/scripts/ui/warndlg.m	Fri Apr 12 18:17:26 2013 -0400
@@ -35,20 +35,7 @@
     print_usage ();
   endif
 
-  if (! ischar (msg))
-    if (iscell (msg))
-      msg = sprintf ("%s\n", msg{:});
-      msg(end) = "";
-    else
-      error ("warndlg: MSG must be a string or cellstr array");
-    endif
-  endif
-
-  if (! ischar (title))
-    error ("warndlg: TITLE must be a character string");
-  endif
-
-  retval = javaMethod ("warndlg", "org.octave.JDialogBox", msg, title);
+  retval = message_dialog ("warndlg", msg, title);
 
 endfunction