Mercurial > hg > octave-lyh
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 +++ b/scripts/ui/errordlg.m @@ -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 +++ b/scripts/ui/helpdlg.m @@ -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 +++ b/scripts/ui/module.mk @@ -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 +++ b/scripts/ui/msgbox.m @@ -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
new file mode 100644 --- /dev/null +++ b/scripts/ui/private/message_dialog.m @@ -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 +++ b/scripts/ui/warndlg.m @@ -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