Mercurial > octave-nkf
changeset 19987:028b2302f940
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
author | John Donoghue <john.donoghue@ieee.org> |
---|---|
date | Tue, 17 Mar 2015 21:54:53 -0400 |
parents | 8c20fb6caa16 |
children | ed51e17f6ccf |
files | libinterp/corefcn/octave-link.cc scripts/gui/inputdlg.m |
diffstat | 2 files changed, 7 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- 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<std::string>::iterator it = items_lst.begin (); it != items_lst.end (); it++)
--- 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