diff scripts/gui/inputdlg.m @ 21630:b5d9b95d1e1a

Removing Java dialog boxes. * scripts/gui/module.mk: removed message_dialog.m entry. * scripts/gui/private/message_dialog.m: merged code to msgbox. * scripts/gui/errordlg.m: function now redirects to msgbox. New tests. * scripts/gui/helpdlg.m: function now redirects to msgbox. New tests. * scripts/gui/warndlg.m: function now redirects to msgbox. New tests. * scripts/gui/msgbox.m: merged code from message_dialog. Stripped Java dialog boxes. New tests. * scripts/gui/inputdlg.m: stripped Java dialog boxes. Improved doc. New tests. * scripts/gui/listdlg.m: stripped Java dialog boxes. Improved doc. New tests. * scripts/gui/questdlg.m: stripped Java dialog boxes. Improved doc. New tests. * scripts/miscellaneous/menu.m: stripped Java dialog boxes. Improved doc. * scripts/java/module.mk: removed entries of deleted files. * scripts/java/org/octave/DlgListener.java: removed Java dialog box Listener. * scripts/java/org/octave/images/error.png: removed unused image. * scripts/java/org/octave/images/information.png: removed unused image. * scripts/java/org/octave/images/octave.png: removed unused image. * scripts/java/org/octave/images/question.png: removed unused image. * scripts/java/org/octave/images/warning.png: removed unused image. * scripts/java/org/octave/JDialogBox.java: removed Java dialog box class. * scripts/java/org/octave/TeXcode.java: removed class used by Java dialogs. * scripts/java/org/octave/TeXtranslator.java: removed class used by Java dialogs. * doc/module.mk: removed unused java images and java.txi. * doc/interpreter/java.txi: merged content as minor sections to following files. * doc/interpreter/bugs.txi: moved Java distinguish section here. * doc/interpreter/external.txi: moved Java Interface description here. * doc/interpreter/gui.txi: moved dialog box docstrings here. * doc/interpreter/octave.texi: corrected TOC. * doc/interpreter/java-images/image001.png: removed unused image. * doc/interpreter/java-images/image002.png: removed unused image. * doc/interpreter/java-images/image003.png: removed unused image. * doc/interpreter/java-images/image004.png: removed unused image. * doc/interpreter/java-images/image005.png: removed unused image. * doc/interpreter/java-images/image006.png: removed unused image. * doc/interpreter/java-images/image007.png: removed unused image. * doc/interpreter/java-images/image008.png: removed unused image. * doc/interpreter/java-images/image009.png: removed unused image. * NEWS: Announced changes.
author Kai T. Ohlhus <k.ohlhus@gmail.com>
date Tue, 19 Apr 2016 15:27:19 +0200
parents 3be6a07e8bad
children 59ebef9680ef
line wrap: on
line diff
--- a/scripts/gui/inputdlg.m	Tue Apr 19 12:30:18 2016 +0200
+++ b/scripts/gui/inputdlg.m	Tue Apr 19 15:27:19 2016 +0200
@@ -50,14 +50,24 @@
 ## A list of default values to place in each text fields.  It must be a cell
 ## array of strings with the same size as @var{prompt}.
 ## @end table
+##
+## Example:
+##
+## @example
+## @group
+## prompt = @{"Width", "Height", "Depth"@};
+## defaults = @{"1.10", "2.20", "3.30"@};
+## rowscols = [1,10; 2,20; 3,30];
+## dims = inputdlg (prompt, "Enter Box Dimensions", rowscols, defaults);
+## @end group
+## @end example
+##
 ## @seealso{errordlg, helpdlg, listdlg, msgbox, questdlg, warndlg}
 ## @end deftypefn
 
-function cstr = inputdlg (prompt, title = "Input Dialog", varargin)
+function cstr = inputdlg (prompt, varargin)
 
-  if (nargin < 1 || nargin > 4)
-    print_usage ();
-  endif
+  narginchk (1, 4);
 
   if (iscell (prompt))
     ## Silently extract only char elements
@@ -65,26 +75,26 @@
   elseif (ischar (prompt))
     prompt = {prompt};
   else
-    error ("inputdlg: PROMPT must be a character string or cellstr array");
-  endif
-
-  if (! ischar (title))
-    error ("inputdlg: TITLE must be a character string");
+    error ("PROMPT must be a character string or cellstr array");
   endif
 
-  switch (numel (varargin))
-    case 0
-      linespec = 1;
-      defaults = cellstr (cell (size (prompt)));
+  dlg_title = "Input Dialog";
+  if (nargin > 1)
+    dlg_title = varargin{1};
+    if (! ischar (dlg_title))
+      error ("TITLE must be a character string");
+    endif
+  endif
 
-    case 1
-      linespec = varargin{1};
-      defaults = cellstr (cell (size (prompt)));
+  linespec = 1;
+  if (nargin > 2)
+    linespec = varargin{2};
+  endif
 
-    case 2
-      linespec = varargin{1};
-      defaults = varargin{2};
-  endswitch
+  defaults = cellstr (cell (size (prompt)));
+  if (nargin > 3)
+    defaults = varargin{3};
+  endif
 
   ## specification of text field sizes as in Matlab
   ## Matlab requires a matrix for linespec, not a cell array...
@@ -94,7 +104,7 @@
   ## r2  2   20   second text field is 2x20
   ## r3  3   30   third  text field is 3x30
   if (! isnumeric (linespec))
-    error ("inputdlg: ROWSCOLS must be numeric");
+    error ("ROWSCOLS must be numeric");
   endif
 
   if (isscalar (linespec))
@@ -111,35 +121,26 @@
       rowscols(:,2) = 25;
       rowscols(:,1) = linespec(:);
     else
-      error ("inputdlg: ROWSCOLS vector does not match size of PROMPT");
+      error ("ROWSCOLS vector does not match size of PROMPT");
     endif
   elseif (ismatrix (linespec))
     if (rows (linespec) == columns (prompt) && columns (linespec) == 2)
       ## (rows x columns) match, copy array linespec
       rowscols = linespec;
     else
-      error ("inputdlg: ROWSCOLS matrix does not match size of PROMPT");
+      error ("ROWSCOLS matrix does not match size of PROMPT");
     endif
   else
     ## dunno
-    error ("inputdlg: unknown form of ROWSCOLS argument");
+    error ("unknown form of ROWSCOLS argument");
   endif
   rowscols = ceil (rowscols);
 
   ## convert numeric values in defaults cell array to strings
   defs = cellfun (@num2str, defaults, "UniformOutput", false);
-  rc = arrayfun (@num2str, rowscols, "UniformOutput", false);
 
   if (__octave_link_enabled__ ())
-    cstr = __octave_link_input_dialog__ (prompt, title, rowscols, defs);
-  elseif (__have_feature__ ("JAVA"))
-    user_inputs = javaMethod ("inputdlg", "org.octave.JDialogBox",
-                              prompt, title, rc, defs);
-    if (isempty (user_inputs))
-      cstr = {};
-    else
-      cstr = cellstr (user_inputs);
-    endif
+    cstr = __octave_link_input_dialog__ (prompt, dlg_title, rowscols, defs);
   else
     error ("inputdlg is not available in this version of Octave");
   endif
@@ -209,3 +210,9 @@
 %!   helpdlg (sprintf ('Results:\nVolume = %.3f\nSurface = %.3f', volume, surface), 'Box Dimensions');
 %! end
 
+%!error<narginchk> inputdlg (1, 2, 3, 4, 5)
+%!error<PROMPT must be a character string> inputdlg (1)
+%!error<TITLE must be a character string> inputdlg ("msg", 1)
+%!error<ROWSCOLS must be numeric> inputdlg ("msg", "title", "1")
+%!error<ROWSCOLS vector does not match size>
+%! inputdlg ({"a1", "a2"}, "title", [1, 2, 3])