# HG changeset patch # User John Donoghue # Date 1426643693 14400 # Node ID 028b2302f9407720324f53f656133ff02801e66f # Parent 8c20fb6caa16e09c5d0eb1052254e1c1220b2393 inputdlg: allow input prompts of varied size, return answer as column vector (Bug 44552) * libinterp/corefcn/octave-link.cc: (__octave_link_input_dialog__): return result as column vector * scripts/gui/inputdlg.m: use prompt num elements to size rowscols value, verify inputline spec size matches prompt elements size diff -r 8c20fb6caa16 -r 028b2302f940 libinterp/corefcn/octave-link.cc --- a/libinterp/corefcn/octave-link.cc Tue Mar 17 20:56:47 2015 +0100 +++ b/libinterp/corefcn/octave-link.cc Tue Mar 17 21:54:53 2015 -0400 @@ -400,7 +400,7 @@ defaults_lst); nel = items_lst.size (); - Cell items (dim_vector (1, nel)); + Cell items (dim_vector (nel, 1)); octave_idx_type i = 0; for (std::list::iterator it = items_lst.begin (); it != items_lst.end (); it++) diff -r 8c20fb6caa16 -r 028b2302f940 scripts/gui/inputdlg.m --- a/scripts/gui/inputdlg.m Tue Mar 17 20:56:47 2015 +0100 +++ b/scripts/gui/inputdlg.m Tue Mar 17 21:54:53 2015 -0400 @@ -100,16 +100,20 @@ ## r3 3 30 third text field is 3x30 if (isscalar (linespec)) ## only scalar value in lineTo, copy from linespec and add defaults - rowscols = zeros (columns (prompt), 2); + rowscols = zeros (numel (prompt), 2); ## cols rowscols(:,2) = 25; rowscols(:,1) = linespec; elseif (isvector (linespec)) + if (numel (linespec) == numel (prompt)) ## only one column in lineTo, copy from vector linespec and add defaults - rowscols = zeros (columns (prompt), 2); + rowscols = zeros (numel (prompt), 2); ## rows from colum vector linespec, columns are set to default rowscols(:,2) = 25; rowscols(:,1) = linespec(:); + else + error ("inputdlg: 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