/usr/share/octave/packages/java-1.2.8/listdlg.m is in octave-java 1.2.8-6.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | ## Copyright (C) 2010 Martin Hepperle
##
## This program 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 2 of the License, or
## (at your option) any later version.
##
## This program 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 this program; If not, see <http://www.gnu.org/licenses/>.
## -*- texinfo -*-
## @deftypefn {Function file} {@var{[SEL,OK]} =} listdlg (@var{KEY} ,@var{VALUE} [, @var{KEY} ,@var{VALUE}, ...]])
##
## Returns the user's inputs from a list dialog box in form of a vector of
## selection indices SEL and a flag OK indicating how the user closed the dialog box.
## The returned flag OK is 1 if the user closed the box with the OK button,
## otherwise it is 0 and SEL is empty.
## The indices in SEL are 1 based, i.e. the first list item carries the index 1.
##
## The arguments are specified in form of @var{KEY}, @var{VALUE} pairs.
## At least the 'ListString' argument pair must be specified.
##
## @var{KEY}s and @var{VALUE}s pairs can be selected from the following list:
##
## @table @samp
## @item ListString
## a cell array of strings comprising the content of the list.
## @item SelectionMode
## can be either @samp{Single} or @samp{Multiple}.
## @item ListSize
## a vector with two elements [width, height] defining the size of the list field in pixels.
## @item InitialValue
## a vector containing 1-based indices of preselected elements.
## @item Name
## a string to be used as the dialog caption.
## @item PromptString
## a cell array of strings to be displayed above the list field.
## @item OKString
## a string used to label the OK button.
## @item CancelString
## a string used to label the Cancel button.
## @end table
##
## Example:
##
## @example
## [sel, ok] = listdlg ( 'ListString',@{'An item', 'another', 'yet another'@}, 'SelectionMode','Multiple' );
## if ok == 1
## imax = length(sel);
## for i=1:1:imax
## disp(sel(i));
## end
## end
## @end example
##
## @end deftypefn
## @seealso{errordlg, helpdlg, inputdlg, questdlg, warndlg}
function varargout = listdlg(varargin)
if nargin < 2
print_usage ();
return;
end
listcell = {''};
selmode = 'single';
listsize = [300,160]; % vector!
initialvalue = [1]; % vector!
name = '';
prompt = {''};
okstring = 'OK';
cancelstring = 'Cancel';
% handle key, value pairs
for i=1:2:nargin-1
if strcmp(varargin{i},'ListString')
listcell = varargin{i+1};
elseif strcmp(varargin{i},'SelectionMode')
selmode = varargin{i+1};
elseif strcmp(varargin{i},'ListSize')
listsize = varargin{i+1};
elseif strcmp(varargin{i},'InitialValue')
initialvalue = varargin{i+1};
elseif strcmp(varargin{i},'Name')
name = varargin{i+1};
elseif strcmp(varargin{i},'PromptString')
prompt = varargin{i+1};
elseif strcmp(varargin{i},'OKString')
okstring = varargin{i+1};
elseif strcmp(varargin{i},'CancelString')
cancelstring = varargin{i+1};
end
end
% make sure prompt strings are a cell array
if ! iscell(prompt)
prompt = {prompt};
end
% make sure listcell strings are a cell array
if ! iscell(listcell)
listcell = {listcell};
end
% transform matrices to cell arrays of strings
listsize = arrayfun(@num2str,listsize,'UniformOutput',false);
initialvalue = arrayfun(@num2str,initialvalue,'UniformOutput',false);
ret = java_invoke ('org.octave.JDialogBox', 'listdlg', listcell, ...
selmode, listsize, initialvalue, name, prompt, ...
okstring, cancelstring );
if length(ret) > 0
varargout = {ret, 1};
else
varargout = {{}, 0};
end
end
|