From: <car...@us...> - 2010-04-16 00:42:13
|
Revision: 7204 http://octave.svn.sourceforge.net/octave/?rev=7204&view=rev Author: carandraug Date: 2010-04-16 00:42:06 +0000 (Fri, 16 Apr 2010) Log Message: ----------- API of zenity_message changed to the standard style. Help text changed to reflect this. Updated license for GPL v3 or later (at your option). Specific options and defaults for zenity_message added to _zenity_functions_. Changed _zenity_functions_ to use a function for the sanity checks instead of nested conditions which makes the code much more readable. Modified Paths: -------------- trunk/octave-forge/main/zenity/inst/_zenity_options_.m trunk/octave-forge/main/zenity/inst/zenity_message.m Modified: trunk/octave-forge/main/zenity/inst/_zenity_options_.m =================================================================== --- trunk/octave-forge/main/zenity/inst/_zenity_options_.m 2010-04-16 00:37:41 UTC (rev 7203) +++ trunk/octave-forge/main/zenity/inst/_zenity_options_.m 2010-04-16 00:42:06 UTC (rev 7204) @@ -18,7 +18,8 @@ ## This function is not intended for users but for the other functions of the ## zenity package. Returns the structure @var{options} that holds the processed ## @var{param} and @var{value} for the function of the zenity package -## @var{dialog}. @var{dialog} must be a string and one of the following: +## @var{dialog}, or the defaults when they are not defined.. @var{dialog} must +## be a string and one of the following: ## ## @table @samp ## @item calendar @@ -60,6 +61,7 @@ op.directory = op.filename = op.multiple = op.save = ""; elseif (strcmpi(dialog, "list")) elseif (strcmpi(dialog, "message")) + op.type = op.wrap = ""; elseif (strcmpi(dialog, "notification")) elseif (strcmpi(dialog, "progress")) elseif (strcmpi(dialog, "scale")) @@ -87,111 +89,136 @@ if (narg <= numel(varargin)) # Check if we are already in the last index value = varargin{narg}; # this is only for readability later on else # Writing varargin{narg} in all conditions - clear value; # is a pain and makes it even more confusing + value = ""; # is a pain and makes it even more confusing endif if ( !ischar(param) ) - error ("Parameter number %i is not a string", narg-1); + error ("All parameters must be strings."); ## Process ALL GENERAL OPTIONS first elseif (strcmpi(param,"title")) # General - title - if ( !exist("value", "var") || !ischar(value) ) - error ("Parameter 'title' requires a string as value."); - elseif (op.title) - error ("Parameter 'title' defined twice, with values '%s' and '%s'", ... - op.title(10:end-1), value); - endif - op.title = sprintf("--title=\"%s\"", value); - narg++; + narg = sanity_checks ("char", param, value, op.title, narg); + op.title = sprintf("--title=\"%s\"", value); elseif (strcmpi(param,"width")) # General - width - if ( !exist("value", "var") || !isscalar(value) ) - error ("Parameter 'width' requires a scalar as value."); - elseif (op.width) - error ("Parameter 'width' defined twice, with values '%s' and '%g'", ... - op.width(9:end), value); - endif - op.width = sprintf("--width=\"%s\"", num2str(value)); - narg++; + narg = sanity_checks ("scalar", param, value, op.width, narg); + op.width = sprintf("--width=\"%s\"", num2str(value)); elseif (strcmpi(param,"height")) # General - height - if ( !exist("value", "var") || !isscalar(value) ) - error ("Parameter 'height' requires a scalar as value."); - elseif (op.height) - error ("Parameter 'height' defined twice, with values '%s' and '%g'", ... - op.height(10:end), value); - endif - op.height = sprintf("--height=\"%s\"", num2str(value)); - narg++; + narg = sanity_checks ("scalar", param, value, op.height, narg); + op.height = sprintf("--height=\"%s\"", num2str(value)); elseif (strcmpi(param,"timeout")) # General - timeout - if ( !exist("value", "var") || !isscalar(value) ) - error ("Parameter 'timeout' requires a scalar as value."); - elseif (op.timeout) - error ("Parameter 'timeout' defined twice, with values '%s' and '%g'", ... - op.timeout(11:end), value); - endif - op.timeout = sprintf("--timeout=\"%s\"", num2str(value)); - narg++; + narg = sanity_checks ("scalar", param, value, op.timeout, narg); + op.timeout = sprintf("--timeout=\"%s\"", num2str(value)); ## Process options for ZENITY_ENTRY elseif ( strcmpi(dialog, "entry") ) - if (strcmpi(param,"entry")) # Entry - entry - if ( !exist("value", "var") || !ischar(value) ) - error ("Parameter 'entry' requires a string as value."); - elseif (op.entry) - error ("Parameter 'entry' defined twice, with values '%s' and '%s'", ... - op.entry(15:end-1), value); - endif - op.entry = sprintf("--entry-text=\"%s\"", value); - narg++; + if (strcmpi(param,"entry")) # Entry - entry text + narg = sanity_checks ("char", param, value, op.entry, narg); + op.entry = sprintf("--entry-text=\"%s\"", value); elseif (strcmpi(param,"password")) # Entry - password - if (op.password) - error ("Parameter 'password' set twice."); - endif - op.password = sprintf("--hide-text"); + narg = sanity_checks ("indie", param, value, op.password, narg); + op.password = "--hide-text"; else - error ("Parameter '%s' is not supported", param); + error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); endif ## Process options for ZENITY_FILE_SELECTION elseif ( strcmpi(dialog, "file selection") ) if (strcmpi(param,"directory")) # File selection - directory - if (op.directory) - error ("Parameter 'directory' set twice."); - endif - op.directory = sprintf("--directory"); + narg = sanity_checks ("indie", param, value, op.directory, narg); + op.directory = "--directory"; elseif (strcmpi(param,"filename")) # File selection - filename - if ( !exist("value", "var") || !ischar(value) ) - error ("Parameter 'filename' requires a string as value."); - elseif (op.filename) - error ("Parameter 'filename' defined twice, with values '%s' and '%s'", ... - op.filename(13:end-1), value); - endif + narg = sanity_checks ("char", param, value, op.filename, narg); op.filename = sprintf("--filename=\"%s\"", value); - narg++; elseif (strcmpi(param,"multiple")) # File selection - multiple - if (op.multiple) - error ("Parameter 'multiple' set twice"); - endif - op.multiple = sprintf("--multiple"); + narg = sanity_checks ("indie", param, value, op.multiple, narg); + op.multiple = "--multiple"; elseif (strcmpi(param,"overwrite")) # File selection - overwrite - if (op.overwrite) - error ("Parameter 'overwrite' set twice"); - endif - op.overwrite = sprintf("--confirm-overwrite"); + narg = sanity_checks ("indie", param, value, op.overwrite, narg); + op.overwrite = "--confirm-overwrite"; elseif (strcmpi(param,"save")) # File selection - save - if (op.save) - error ("Parameter 'save' set twice"); + narg = sanity_checks ("indie", param, value, op.save, narg); + op.save = "--save"; + else + error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); + endif + + ## Process options for ZENITY_MESSAGE + elseif ( strcmpi(dialog, "message") ) + if (strcmpi(param,"type")) # Message - type + narg = sanity_checks ("valueless", param, value, op.type, narg); + if (strcmpi(value,"error")) + op.type = "--error"; + elseif (strcmpi(value,"info")) + op.type = "--info"; + elseif (strcmpi(value,"question")) + op.type = "--question"; + elseif (strcmpi(value,"warning")) + op.type = "--warning"; + else + error ("Non supported type of message dialog '%s'", value); endif - op.save = sprintf("--save"); + elseif (strcmpi(param,"wrap")) # Message - wrap + narg = sanity_checks ("indie", param, value, op.wrap, narg); + op.wrap = "--no-wrap"; else - error ("Parameter '%s' is not supported", param); + error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); endif - else - error ("Parameter '%s' is not supported", param); + error ("Parameter '%s' is not supported.", param); endif endwhile + ## Set the DEFAULTS + if (strcmpi(dialog,"message")) # Defaults for Message + if ( isempty(op.type) ) + op.type = "--info"; + endif + endif + + endfunction + +################################################################################ +function narg = sanity_checks (type, param, value, previous, narg) + if (strcmpi(type,"char")) # Value must be string + if (previous) + idx = strfind(previous, "="); + error ("Parameter '%s' set twice, with values '%s' and '%s'.", ... + param, previous(idx(1)+2:end-1), value); + elseif ( isempty(value) || !ischar(value) ) + error ("Parameter '%s' requires a string as value.", param); + endif + narg++; + + elseif (strcmpi(type,"scalar")) # Value must be scalar + if (previous) + idx = strfind(previous, "="); + error ("Parameter '%s' set twice, with values '%s' and '%g'.", ... + param, previous(idx(1)+2:end-1), value); + elseif ( isempty(value) || !isscalar(value) ) + error ("Parameter '%s' requires a scalar as value.", param); + endif + narg++; + + elseif (strcmpi(type,"indie")) # Independent parameter + if (previous) + error ("Parameter '%s' set twice.", param); + endif + + elseif (strcmpi(type,"valueless")) # Valueless parameter + if (previous) + error ("Parameter '%s' set twice, with values '%s' and '%s'.", ... + param, previous(3:end), value); + elseif ( isempty(value) || !ischar(value) ) + error ("Parameter '%s' requires a string as value.", param); + endif + narg++; + + else + error ("Non supported type for sanity_checks '%s'.", type) + endif + +endfunction Modified: trunk/octave-forge/main/zenity/inst/zenity_message.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_message.m 2010-04-16 00:37:41 UTC (rev 7203) +++ trunk/octave-forge/main/zenity/inst/zenity_message.m 2010-04-16 00:42:06 UTC (rev 7204) @@ -3,7 +3,7 @@ ## ## 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 +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, @@ -65,83 +65,23 @@ elseif (!ischar(text)) error ("'text' argument must be a string") endif - text = ["--text=\"", text, "\""]; + text = sprintf("--text=\"%s\"", text); - ## Process of all options and values - type = "--info"; # Info is the default type - title = wrap = width = height = timeout = ""; + options = _zenity_options_ ("message", varargin); - narg = 1; - while (narg <= numel (varargin)) - option = varargin{narg++}; - if ( !ischar(option) ) - error ("Option/parameter number %i is not a string", narg) + cmd = sprintf("zenity %s %s %s %s %s %s %s %s %s", ... + options.type, text, options.wrap, options.title, ... + options.width, options.height, options.timeout); - elseif (strcmpi(option,"type")) - if ( !ischar(varargin{narg}) ) - error ("Parameter 'type' requires a string as value."); - endif - value = varargin{narg++}; - if (strcmpi(value,"error")) - type = "--error"; - elseif (strcmpi(value,"info")) - type = "--info"; - elseif (strcmpi(value,"question")) - type = "--question"; - elseif (strcmpi(value,"warning")) - type = "--warning"; - else - error ("Illegal value '%s' for parameter 'type'", value); - endif - - elseif (strcmpi(option,"title")) - if ( !ischar(varargin{narg}) ) - error ("Parameter 'title' requires a string as value."); - endif - title = ["--title=\"", varargin{narg++}, "\""]; - - elseif (strcmpi(option,"no-wrap")) - wrap = "--no-wrap"; - - elseif (strcmpi(option,"width")) - if ( !isscalar(varargin{narg}) ) - error ("Parameter 'width' requires a scalar as value."); - endif - value = num2str (varargin{narg++}); - width = ["--width=", value]; - - elseif (strcmpi(option,"height")) - if ( !isscalar(varargin{narg}) ) - error ("Parameter 'height' requires a scalar as value."); - endif - value = num2str (varargin{narg++}); - height = ["--height=", value]; - - elseif (strcmpi(option,"timeout")) - if ( !isscalar(varargin{narg}) ) - error ("Parameter 'timeout' requires a scalar as value."); - endif - value = num2str (varargin{narg++}); - timeout = ["--timeout=", value]; - - else - error ("Parameter '%s' not supported", option) - endif - - endwhile - - cmd = sprintf('zenity %s %s %s %s %s %s %s', ... - type, text, title, timeout, wrap, width, height); [status, output] = system(cmd); -# Exit code -1 = An unexpected error has occurred -# Exit code 0 = The user has pressed either OK or Close. -# Exit code 1 = The user has either pressed Cancel, or used the window -# functions to close the dialog -# Exit code 5 = The dialog has been closed because the timeout has been reached + # Exit code -1 = An unexpected error has occurred + # Exit code 0 = The user has pressed either OK or Close. + # Exit code 1 = The user has either pressed Cancel, or used the window + # functions to close the dialog + # Exit code 5 = The dialog has been closed because the timeout has been reached if (status == 0 || 1 || 5) return - else error("An unexpected error occurred with exit code '%i' and output '%s'",... status, output); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2010-04-19 01:17:37
|
Revision: 7209 http://octave.svn.sourceforge.net/octave/?rev=7209&view=rev Author: carandraug Date: 2010-04-19 01:17:31 +0000 (Mon, 19 Apr 2010) Log Message: ----------- Added option to add filter for the files to select and changed documentation of function accordingly. _zenity_options_ now supports settings that can have mutiple values. Modified Paths: -------------- trunk/octave-forge/main/zenity/inst/_zenity_options_.m trunk/octave-forge/main/zenity/inst/zenity_file_selection.m Modified: trunk/octave-forge/main/zenity/inst/_zenity_options_.m =================================================================== --- trunk/octave-forge/main/zenity/inst/_zenity_options_.m 2010-04-18 07:33:41 UTC (rev 7208) +++ trunk/octave-forge/main/zenity/inst/_zenity_options_.m 2010-04-19 01:17:31 UTC (rev 7209) @@ -58,7 +58,7 @@ elseif (strcmpi(dialog, "entry")) op.password = op.entry = ""; elseif (strcmpi(dialog, "file selection")) - op.directory = op.filename = op.multiple = op.save = ""; + op.directory = op.filename = op.filter = op.multiple = op.save = ""; elseif (strcmpi(dialog, "list")) elseif (strcmpi(dialog, "message")) op.type = op.wrap = ""; @@ -130,6 +130,9 @@ elseif (strcmpi(param,"filename")) # File selection - filename narg = sanity_checks ("char", param, value, op.filename, narg); op.filename = sprintf("--filename=\"%s\"", value); + elseif (strcmpi(param,"filter")) # File selection - file filter + narg = sanity_checks ("multiple", param, value, op.directory, narg); + op.filter = sprintf("%s --file-filter=\"%s\"", op.filter, value); elseif (strcmpi(param,"multiple")) # File selection - multiple narg = sanity_checks ("indie", param, value, op.multiple, narg); op.multiple = "--multiple"; @@ -217,6 +220,12 @@ endif narg++; + elseif (strcmpi(type,"multiple")) # Value can be set more than once + if ( isempty(value) || !ischar(value) ) + error ("Parameter '%s' requires a string as value.", param); + endif + narg++; + else error ("Non supported type for sanity_checks '%s'.", type) endif Modified: trunk/octave-forge/main/zenity/inst/zenity_file_selection.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_file_selection.m 2010-04-18 07:33:41 UTC (rev 7208) +++ trunk/octave-forge/main/zenity/inst/zenity_file_selection.m 2010-04-19 01:17:31 UTC (rev 7209) @@ -25,6 +25,13 @@ ## Activates directory-only selection. No value is required. ## @item filename ## Sets the default selected file. Requires a string as value. +## @item filter +## Sets a filename filter. Requires a string as value. Multiple filters can be +## set with multiple calls for this setting. The following example shows how to +## block users from selecting files that don't end in `.txt' or `.m': +## @example +## @code{zenity_file_selection ("filter", "*.txt", "filter", "*.m")} +## @end example ## @item height ## Sets the height of the dialog window. Requires a scalar as value. ## @item multiple @@ -56,10 +63,10 @@ # in most filesystems and so, unlikely to exist in the middle of filenames. # It's also the fileseparator so filenames will always already start with a # '/' which is good since we can look for double '//' as separator for filepaths - cmd = sprintf("zenity --file-selection --separator=\"/\" %s %s %s %s %s %s", ... + cmd = sprintf("zenity --file-selection --separator=\"/\" %s %s %s %s %s %s %s", ... options.directory, options.filename, options.height, ... options.multiple, options.save, options.timeout, ... - options.title, options.width); + options.title, options.width, options.filter); [status, output] = system(cmd); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2010-04-20 03:57:34
|
Revision: 7211 http://octave.svn.sourceforge.net/octave/?rev=7211&view=rev Author: carandraug Date: 2010-04-20 03:57:28 +0000 (Tue, 20 Apr 2010) Log Message: ----------- API of zenity_notification changed to the standard style. Help text changed to reflect this. Updated license for GPL v3 or later (at your option). Specific options and defaults for zenity_notification added to _zenity_functions_. Modified Paths: -------------- trunk/octave-forge/main/zenity/inst/_zenity_options_.m trunk/octave-forge/main/zenity/inst/zenity_notification.m Modified: trunk/octave-forge/main/zenity/inst/_zenity_options_.m =================================================================== --- trunk/octave-forge/main/zenity/inst/_zenity_options_.m 2010-04-19 01:24:22 UTC (rev 7210) +++ trunk/octave-forge/main/zenity/inst/_zenity_options_.m 2010-04-20 03:57:28 UTC (rev 7211) @@ -63,6 +63,7 @@ elseif (strcmpi(dialog, "message")) op.type = op.wrap = ""; elseif (strcmpi(dialog, "notification")) + op.text = ""; elseif (strcmpi(dialog, "progress")) elseif (strcmpi(dialog, "scale")) elseif (strcmpi(dialog, "text info")) @@ -111,7 +112,17 @@ op.timeout = sprintf("--timeout=\"%s\"", num2str(value)); elseif (strcmpi(param,"icon")) # General - icon narg = sanity_checks ("char", param, value, op.icon, narg); - op.icon = sprintf("--window-icon=\"%s\"", value); + if (strcmpi(value, "error")) + op.icon = "--window-icon=\"error\""; + elseif (strcmpi(value, "info")) + op.icon = "--window-icon=\"info\""; + elseif (strcmpi(value, "question")) + op.icon = "--window-icon=\"question\""; + elseif (strcmpi(value, "warning")) + op.icon = "--window-icon=\"warning\""; + else + op.icon = sprintf("--window-icon=\"%s\"", value); + endif ## Process options for ZENITY_ENTRY elseif ( strcmpi(dialog, "entry") ) @@ -171,6 +182,15 @@ error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); endif + ## Process options for ZENITY_NOTIFICATION + elseif ( strcmpi(dialog, "notification") ) + if (strcmpi(param,"text")) # Notification - text + narg = sanity_checks ("char", param, value, op.text, narg); + op.text = sprintf("--text=\"%s\"", value); + else + error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); + endif + else error ("Parameter '%s' is not supported.", param); endif @@ -182,9 +202,12 @@ if ( isempty(op.type) ) op.type = "--info"; endif + elseif (strcmpi(dialog,"notification")) # Defaults for Notification + if ( isempty(op.icon) ) + op.icon = "--window-icon=\"warning\""; + endif endif - endfunction ################################################################################ Modified: trunk/octave-forge/main/zenity/inst/zenity_notification.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_notification.m 2010-04-19 01:24:22 UTC (rev 7210) +++ trunk/octave-forge/main/zenity/inst/zenity_notification.m 2010-04-20 03:57:28 UTC (rev 7211) @@ -1,8 +1,9 @@ ## Copyright (C) 2006 S\xF8ren Hauberg +## Copyright (C) 2010 Carn\xEB Draug ## ## 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 +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, @@ -14,30 +15,49 @@ ## along with this program; If not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} zenity_notification(@var{text}, @var{icon}) -## Displays an icon with a text in the notification area. -## The variable @var{text} sets the text in the notification area, and the -## optional variable @var{icon} determines which icon to show. -## @var{icon} can be either @code{info}, @code{warning}, @code{question}, -## and @code{error}. +## @deftypefn {Function File} zenity_notification(@var{param1}, @var{value1}, ...) +## Displays an icon with a text in the notification area using Zenity. All +## variables are optional but if given, may require a corresponding +## @var{value}. All possible parameters are: ## -## @seealso{zenity_calendar, zenity_list, zenity_progress, zenity_entry, zenity_message, -## zenity_text_info, zenity_file_selection} +## @table @samp +## @item icon +## Sets the icon of notification. Requires a string as value. It can either be +## the path for an image or one of the four default icons: +## +## @table @samp +## @item error +## @item info +## @item question +## @item warning (default) +## @end table +## @item text +## Sets the notification text. Requires a string as value. +## @item timeout +## Sets the time in seconds after which the dialog is closed. Requires a scalar +## as value. +## @end table +## +## @seealso{zenity_progress, zenity_message} ## @end deftypefn -function zenity_notification(text, icon) - if (nargin == 0 || !ischar(text)) - print_usage(); - endif - - icon = ""; - if (nargin > 1 && ischar(icon)) - icon = sprintf('--window-icon="%s"', icon); - endif - - cmd = sprintf('zenity --notification --text="%s" %s', text, icon); +function zenity_notification(varargin) + + options = _zenity_options_ ("notification", varargin); + + cmd = sprintf("zenity --notification %s %s %s", + options.icon, options.text, options.timeout); + [status, output] = system(cmd); - if (status == -1) - error("zenity_notification: %s", output); + ## Exit code -1 = An unexpected error has occurred + ## Exit code 0 = The user has pressed either OK or Close. + ## Exit code 1 = The user has either pressed Cancel, or used the window + ## functions to close the dialog + ## Exit code 5 = The dialog has been closed because the timeout has been reached + if (status == 0 || 1 || 5) + return + else + error("An unexpected error occurred with exit code '%i' and output '%s'",... + status, output); endif endfunction This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2010-04-21 04:53:44
|
Revision: 7214 http://octave.svn.sourceforge.net/octave/?rev=7214&view=rev Author: carandraug Date: 2010-04-21 04:53:38 +0000 (Wed, 21 Apr 2010) Log Message: ----------- Corrected typo in zenity_file_selection warning messages. Condition status -1 is not checked anymore (else is used as in the otehr zenity functions). Bug fixes in _zenity_options_ to process zenity_list options. Modified Paths: -------------- trunk/octave-forge/main/zenity/inst/_zenity_options_.m trunk/octave-forge/main/zenity/inst/zenity_file_selection.m Modified: trunk/octave-forge/main/zenity/inst/_zenity_options_.m =================================================================== --- trunk/octave-forge/main/zenity/inst/_zenity_options_.m 2010-04-21 04:33:00 UTC (rev 7213) +++ trunk/octave-forge/main/zenity/inst/_zenity_options_.m 2010-04-21 04:53:38 UTC (rev 7214) @@ -223,11 +223,8 @@ for i = 1:numel(value) if (value(i) == 1) op.hide_one = 1; # Needed for sanity checks - elseif (value(i) == 0) - tmp = "all"; - break - elseif (value(i) < 0) - error ("Value %g is not accepted for parameter '%s', all must be non-negative.", value(i), param) + elseif (value(i) < 1) + error ("Value %g is not accepted for parameter '%s', must be larger than zero.", value(i), param) elseif (value(i) > list.col) error ("Value %g for the parameter '%s' is larger than the number of columns.", value(i), param) endif @@ -242,6 +239,9 @@ if (value(i) == 1) op.print_col_one = 1; # Needed for sanity checks elseif (value(i) == 0) + if (numel(value) > 1) + error ("Value 0 (all) found as value for parameter '%s'. If desired must be set alone as scalar.", param); + endif tmp = "all"; break elseif (value(i) < 0) @@ -320,7 +320,7 @@ elseif (strcmpi(type,"num")) # Value can be set more than once if ( isempty(value) || !isnumeric(value) ) - error ("Parameter '%g' requires a numeric as value.", param); + error ("Parameter '%s' requires a numeric as value.", param); endif narg++; Modified: trunk/octave-forge/main/zenity/inst/zenity_file_selection.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_file_selection.m 2010-04-21 04:33:00 UTC (rev 7213) +++ trunk/octave-forge/main/zenity/inst/zenity_file_selection.m 2010-04-21 04:53:38 UTC (rev 7214) @@ -103,14 +103,13 @@ warning("No file selected. Returning empty string."); files = ""; elseif (status == 5 && options.multiple) - warning("Timeout reached. No file selected selected. Returning empty cell array."); + warning("Timeout reached. No file selected. Returning empty cell array."); files = cell(1); elseif (status == 5) - warning("Timeout reached. No file selected selected. Returning empty string."); + warning("Timeout reached. No file selected. Returning empty string."); files = ""; - elseif (status == -1) - error("An unexpected error occurred: %s", output); else - error("zenity_file_selection: %s", output); + error("An unexpected error occurred with exit code '%i' and output '%s'",... + status, output); endif endfunction This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2010-04-21 20:40:26
|
Revision: 7217 http://octave.svn.sourceforge.net/octave/?rev=7217&view=rev Author: carandraug Date: 2010-04-21 20:40:20 +0000 (Wed, 21 Apr 2010) Log Message: ----------- API of zenity_list changed to the standard style. Help text changed to reflect this. Updated license for GPL v3 or later (at your option). Upgraded _zenity_options_ to process for zenity_list. Modified Paths: -------------- trunk/octave-forge/main/zenity/inst/_zenity_options_.m trunk/octave-forge/main/zenity/inst/zenity_list.m Modified: trunk/octave-forge/main/zenity/inst/_zenity_options_.m =================================================================== --- trunk/octave-forge/main/zenity/inst/_zenity_options_.m 2010-04-21 20:34:42 UTC (rev 7216) +++ trunk/octave-forge/main/zenity/inst/_zenity_options_.m 2010-04-21 20:40:20 UTC (rev 7217) @@ -52,10 +52,10 @@ varargin = varargin{1}; # because other functions varargin is this varargin ## A present from zenity_list. Take it out of varargin before before other stuff - if ( strcmpi(dialog, "list") ) - list.col = varargin{end}; - varargin(end) = []; # By using (end), it actually pulls the value out instead of leaving it empty - endif +# if ( strcmpi(dialog, "list") ) +# list.col = varargin{end}; +# varargin(end) = []; # By using (end), it actually pulls the value out instead of leaving it empty +# endif op.title = op.width = op.height = op.timeout = op.icon = ""; if ( !ischar(dialog) ) @@ -66,8 +66,10 @@ elseif (strcmpi(dialog, "file selection")) op.directory = op.filename = op.filter = op.multiple = op.save = ""; elseif (strcmpi(dialog, "list")) - op.separator = op.text = op.hide = op.print_col = op.print_col_one = ""; - op.multiple = op.radio = op.check = op.editable = op.hide_one = ""; + op.separator = op.text = op.hide = op.print_col = ""; + op.multiple = op.radio = op.check = op.editable = ""; + op.hide_max = op.hide_min = op.print_max = op.print_min = ""; + op.print_numel = ""; elseif (strcmpi(dialog, "message")) op.type = op.wrap = ""; elseif (strcmpi(dialog, "notification")) @@ -219,44 +221,34 @@ op.check = "--checklist"; elseif (strcmpi(param,"hide column")) # List - hide column narg = sanity_checks ("num", param, value, op.hide, narg); + op.hide_min = min(value(:)); + op.hide_max = max(value(:)); tmp = ""; for i = 1:numel(value) - if (value(i) == 1) - op.hide_one = 1; # Needed for sanity checks - elseif (value(i) < 1) - error ("Value %g is not accepted for parameter '%s', must be larger than zero.", value(i), param) - elseif (value(i) > list.col) - error ("Value %g for the parameter '%s' is larger than the number of columns.", value(i), param) - endif str = num2str(value(i)); tmp = sprintf("%s%s,", tmp, str); endfor - op.hide = sprintf("--hide-column=%s", tmp); + op.hide = sprintf("--hide-column=\"%s\"", tmp); elseif (strcmpi(param,"print column")) # List - print column narg = sanity_checks ("num", param, value, op.print_col, narg); + op.print_min = min(value(:)); + op.print_max = max(value(:)); + op.print_numel = numel(value); tmp = ""; for i = 1:numel(value) - if (value(i) == 1) - op.print_col_one = 1; # Needed for sanity checks - elseif (value(i) == 0) - if (numel(value) > 1) - error ("Value 0 (all) found as value for parameter '%s'. If desired must be set alone as scalar.", param); - endif - tmp = "all"; + if (value == 0) + tmp = "all" break - elseif (value(i) < 0) - error ("Value %g is not accepted for parameter '%s', all must be non-negative.", value(i), param) - elseif (value(i) > list.col) - error ("Value %g for the parameter '%s' is larger than the number of columns.", value(i), param) endif str = num2str(value(i)); tmp = sprintf("%s%s,", tmp, str); endfor - op.hide = sprintf("--print-column=%s", tmp); + op.print_col = sprintf("--print-column=\"%s\"", tmp); else error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); endif + else error ("Parameter '%s' is not supported.", param); endif @@ -281,7 +273,7 @@ if (strcmpi(type,"char")) # Value must be string if (previous) idx = strfind(previous, "="); - error ("Parameter '%s' set twice, with values '%s' and '%s'.", ... + error ("Parameter '%s' set twice, with values '%s' and '%g'.", ... param, previous(idx(1)+2:end-1), value); elseif ( isempty(value) || !ischar(value) ) error ("Parameter '%s' requires a string as value.", param); @@ -319,7 +311,11 @@ narg++; elseif (strcmpi(type,"num")) # Value can be set more than once - if ( isempty(value) || !isnumeric(value) ) + if (previous) + idx = strfind(previous, "="); + error ("Parameter '%s' set twice, with values '%s' and '%g'.", ... + param, previous(idx(1)+2:end-1), value); + elseif ( isempty(value) || !isnumeric(value) ) error ("Parameter '%s' requires a numeric as value.", param); endif narg++; Modified: trunk/octave-forge/main/zenity/inst/zenity_list.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_list.m 2010-04-21 20:34:42 UTC (rev 7216) +++ trunk/octave-forge/main/zenity/inst/zenity_list.m 2010-04-21 20:40:20 UTC (rev 7217) @@ -1,8 +1,9 @@ ## Copyright (C) 2006 S\xF8ren Hauberg +## Copyright (C) 2010 Carn\xEB Draug ## ## 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 +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, @@ -14,100 +15,309 @@ ## along with this program; If not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} @var{s} = zenity_list(@var{title}, @var{columns}, @var{data}, @var{options1}, ...) -## Displays a graphical list of data. -## The variable @var{title} sets the title of the list. The variable -## @var{columns} must be a cell array of strings of length N containing the headers -## of the list. The variable @var{data} must be cell array of strings of -## length NxM containing the data of the list. +## @deftypefn {Function File} [@var{selected}, @var{status}] = zenity_list(@var{columns}, @var{data}, @var{param1}, @var{value1}, ...) +## Displays a graphical list of data using Zenity. The values on the list can be +## selected and/or modified by the user. ## -## The code +## @var{columns} must be a cell array of strings of length N containing the +## headers for each column of the list. @var{data} must be a cell array of +## strings of size NxM containing the data for the list. +## +## The following code produces a list dialog with two columns. The first column, +## @code{Age}, will have the values @code{10} and @code{20}, while the second, +## @code{Height}, will have the values @code{120cm} and @code{180cm}: +## ## @example -## zenity_list("Age versus Height", @{"Age", "Height"@}, -## @{"10", "20"; "120cm", "180cm"@}) +## columns = @{"Age", "Height"@} +## data = @{"10", "120cm", +## "20"; "180cm"@} +## zenity_list(columns, data) ## @end example -## produces a list of the data. The user can select a row in the table, and it's -## first value will be returned by the function when the user closes the window. ## -## It's possible to alter the behaviour of the list window by passing more than -## three arguments to the funtion. Theese optional string arguments can be +## The output @var{selected} will hold a string with the value of the +## first column of the selected row. If the parameter @code{multiple} is set or +## the @code{print column} has multiple values, @var{selected} is a cell array +## of strings. If a value is empty, it returns @code{(null)}. The values of +## @var{selected} may come in any order since the user is allowed to sort them. +## +## The output @var{status} holds the exit code. 0 if user pressed cancel, 1 if +## pressed OK and selected at least one row, 5 if timeout has been reached, and +## 256 if user has pressed OK but selected no row. In the case no value has been +## selected when the window closes, @var{selected} will hold an empty string or +## cell array, the same size as it would be expected if one value had been +## selected. +## +## All @var{parameters} are optional, but if given, may require a corresponding +## @var{value}. All possible parameters are: +## ## @table @samp -## @item message -## Is a string that writes the main message of the menu list ## @item checklist -## The first row in the list will be a check box. The first value of each data row -## must be either "TRUE" or "FALSE". +## The first column in the list will be of check buttons. No value is required. If +## set, the first column of @var{data} must consist of strings with values +## @code{true} or @code{false} and the rows with values of @code{true} will be +## selected by default. This parameter cannot be set together with the +## parameters @code{editable}.or @code{checklist}. It automatically sets +## the parameter @code{multiple}. If set, @var{selected} will hold the +## values for the second column of data. +## +## The following example creates a list with the first and second row selected +## by default. If user presses OK, it will return a cell array with two rows, +## with the strings @code{FreeBSD} and @code{Linux}. +## +## @example +## columns = @{"", "OS"@} +## data = @{"true" , "FreeBSD", +## "true" , "Linux", +## "false", "NetBSD" +## "false", "OpenBSD", +## "false", "OpenSolaris"@} +## zenity_list(columns, data, "checklist") +## @end example +## +## @item editable +## Allows the user to edit the values. No value is required. It cannot be set +## together with the parameters @code{checklist} or @code{radiolist}. Since a +## value can be erased, if an empty value is selected, it returns @code{(null)}. +## +## @item height +## Sets the height of the dialog window. Requires a scalar as value. +## +## @item hide column +## Hides the specified columns from the user. Requires a numeric data type as +## value. Multiple columns can be selected with ranges or matrixes. If the +## parameters @code{radiolist} or @code{checklist} are set, the first +## column cannot cannot be hidden. The values of these columns will still be +## present in the output @var{selected}. +## +## @item multiple +## Allows multiple rows to be selected. No value is required. It cannot be set +## together with parameter @code{radiolist}. and it is automatically set when +## parameter @code{checklist} is set. +## +## @item print column +## The numbers of the columns whose values should be returned. Requires a numeric +## data type as value. Multiple columns can be selected with ranges or matrixes, +## and all columns can be selected with the scalar 0 (zero). If the +## parameters @code{radiolist} or @code{checklist} are set, the first +## column cannot cannot be returned. +## ## @item radiolist -## The first row in the list will be a radio list. The first value of each data row -## must be either "TRUE" or "FALSE". -## @item editable -## The values of the list will be editable by the user. -## @item A numeric value -## The user can pick a particular column. Substitute 'A numeric value' with -## an actual Integer value. This numeric value represents which column of the user selected row will be returned. -## @item all -## The value returned by the function will be the entire row selected by the user. +## The first column in the list will be of radio buttons. No value is required. If +## set, the first column of @var{data} must be consiste of strings with values +## @code{true} or @code{false}. If a row has a value of @code{true}, and only +## one row can have that value, it will be selected by default. This parameter +## cannot be set together with the parameters @code{multiple}, +## @code{editable}.or @code{checklist}. If set, @var{selected} will hold the +## values for the second column of data. +## +## @item text +## Sets the dialog text. Requires a string as value. +## +## @item timeout +## Sets the time in seconds after which the dialog is closed. Requires a scalar +## as value. +## +## @item title +## Sets the title of the window. Requires a string as value. +## +## @item width +## Sets the width of the dialog window. Requires a scalar as value. +## ## @end table ## -## @seealso{zenity_calendar, zenity_progress, zenity_entry, zenity_message, -## zenity_text_info, zenity_file_selection, zenity_notification} +## @seealso{input, menu, kbhit, zenity_message, zenity_file_selection, +## zenity_notification} ## @end deftypefn -function s = zenity_list(title, columns, data, varargin) - if (nargin < 3 || !ischar(title) || !iscellstr(columns) || !iscellstr(data)) - print_usage(); +function [val, status] = zenity_list(col, data, varargin) + + ## List of things that cannot be done: + ## * editable cannot be set at the same time of checklist or radiolist + ## * radiolist and checklist cannot be set at the same time + ## * multiple and radiolist cannot be set at the same time + ## * if radiolist or checklist are set, only 'true' and 'false' strings are + ## allowed in the first column of data + ## * if radiolist is set, only one row of the first column can have a string + ## value of 'true'. All others must be 'false' + ## * if print and hide column are set, they can't have a value of 1 (which is + ## the buttons column) + ## * if print and hide column are set, they can't have a value of larger than + ## the number of columns + ## * if print value is to be set to zero (all columns), it must be set alone + ## and not together with other values which contradict him + ## * number of columns 'data' must be the same size as 'columns' + ## * all cells in 'data' and 'column' must be strings + + + ## TODO + ## * should have the option to use logical values in the first column of data + ## when using radio or check buttons? + ## * parameters 'radiolist' and 'checklist' could take as value a cell array. The + ## first would have to be a string with the column tittle and the second either + ## a matrix of 1 and 0 (for the selected by default) or a scalar value with the + ## row number to select by default + ## * it could be possible to have a parameter that sets the divisor instead of + ## counting on the low chances of having a value with the string we use. However, + ## it's not so obvious how zenity will escape things, and same goes for the index + ## function used to split the output + + if (nargin < 1) + error ("'columns' argument is not optional.") + elseif (nargin < 2) + error ("'data' argument must be a string.") + elseif (!iscell(col)) + error ("'columns' argument must be a cell array.") + elseif (!iscell(data)) + error ("'data' argument must be a cell array.") endif - - checklist = radiolist = editable = ""; - print_column = "1"; - message = ""; - for i = 1:length(varargin) - option = varargin{i}; - isc = ischar(option); - if (isc && strcmpi(option, "checklist")) - checklist = "--checklist"; - elseif (isc && strcmpi(option, "radiolist")) - radiolist = "--radiolist"; - elseif (isc && strcmpi(option, "editable")) - editable = "--editable"; - elseif (isc && strcmpi(option, "all")) - print_column = "all"; - elseif (isnumeric(option)) - print_column = num2str(option); - elseif (isc) - message = ["--text=\"", option, "\""]; - else - error("zenity_list: unsupported option"); + + ## Sanity checks + ## by using numel(col) instead of columns, allows to not worry on the dimension they are placed + if (columns(data) != numel(col)) + error("Size of 'columns' (%g) is different than the number of columns in 'data' (%g).", ... + numel(col), columns(data)) + endif + for i = 1:numel(data) + if (!ischar(data{i})) + error ("Index '%g' of the argument 'data' is not a string.", i); endif endfor - - columns = sprintf('--column="%s" ', columns{:}); - data = sprintf("\"%s\" ", data{:}); - - ## Escape certain characters - data = strrep(data, "\\", "\\\\"); + for i = 1:numel(col) + if (!ischar(col{i})) + error ("Index '%g' of the argument 'columns' is not a string.", i); + endif + endfor - cmd = sprintf('zenity --list --title="%s" %s %s %s %s --print-column="%s" --separator=":" %s %s', ... - title, message, checklist, radiolist, editable, print_column, columns, data); - [status, output] = system(cmd); + options = _zenity_options_ ("list", varargin); + + ## More sanity checks + if ( !isempty(options.check) && !isempty(options.radio) ) + error ("Parameter 'checklist' cannot be set together with 'radiolist'.") + elseif( !isempty(options.multiple) && !isempty(options.radio) ) + error ("Parameter 'multiple' cannot be set together with 'radiolist'.") + elseif ( !isempty(options.editable) && !isempty(options.radio) ) + error ("Parameter 'editable' cannot be set together with 'radiolist'.") + elseif ( !isempty(options.editable) && !isempty(options.check) ) + error ("Parameter 'editable' cannot be set together with 'checklist'.") + elseif ( options.hide_min == 1 && (!isempty(options.check) || !isempty(options.radio)) ) + error ("'hide column' cannot have a value of 1 when 'checklist' and 'radiolist' are set."); + elseif ( options.print_min == 1 && (!isempty(options.check) || !isempty(options.radio)) ) + error ("'print column' cannot have a value of 1 when 'checklist' and 'radiolist' are set."); + elseif ( options.print_min == 0 && options.print_numel > 1) + error ("Value of 0 (all) found as value for parameter 'print column' as part of multiple values. If desired, it must be set as scalar."); + elseif ( options.hide_max > numel(col) ) + error ("Value %g found for the parameter 'hide column' and is larger than the number of columns.", options.hide_max) + elseif ( options.print_max > numel(col) ) + error ("Value %g found for the parameter 'print column' and is larger than the number of columns.", options.print_max) + elseif ( options.print_min < 0 ) + error ("Negative value '%g' found for the parameter 'print column'.", options.print_min) + elseif ( options.hide_min < 1 ) + error ("Parameter 'hide column' cannot have values smaller than 1 (found minimun as '%g').", options.hide_min) + endif + + if ( !isempty(options.check) ) + for i = 1:rows(data) + if ( !strcmpi(data{i,1},"true") && !strcmpi(data{i,1},"false") ) + error ("All cells on the first column of 'data' must be either 'true' or 'false' when 'radiolist' or 'checklist' are set."); + endif + endfor + elseif (!isempty(options.radio) ) + seen_true = 0; + for i = 1:rows(data) + if ( !strcmpi(data{i,1},"true") && !strcmpi(data{i,1},"false") ) + error ("All cells on the first column of 'data' must be either 'true' or 'false' when 'radiolist' or 'checklist' are set."); + elseif (strcmpi(data{i,1},"true")) + if (seen_true == 1) + error ("Only one cell on the first column of 'data' can be true, when 'radiolist is set."); + endif + seen_true = 1; + endif + endfor + endif + + ## Process for input + data = data'; + options.col = sprintf("--column=\"%s\" ", col{:}); + options.data = sprintf("\"%s\" ", data{:}); + + ## Set separator + options.separator = '--separator="/\\|/\\"'; # Will use /\|/\ as separator + + pre_cmd = sprintf("%s ", ... + options.title, options.width, options.height, ... + options.timeout, options.separator, options.text, ... + options.hide, options.print_col, options.multiple, ... + options.radio, options.check, options.editable, ... + options.col, options.data); + + cmd = sprintf ("zenity --list %s", pre_cmd); + [status, output] = system(cmd); + + # Exit code -1 = An unexpected error has occurred + # Exit code 0 = The user has pressed either OK or Close. + # Exit code 1 = The user has either pressed Cancel, or used the window + # functions to close the dialog + # Exit code 5 = The dialog has been closed because the timeout has been reached + + if ( options.print_min == 0 && (!isempty(options.check) || !isempty(options.radio)) ) + expec_col = numel(col) -1; + elseif (options.print_min == 0) + expec_col = numel(col); + elseif (options.print_min != 0) + expec_col = options.print_numel; + else + expec_col = 1; + endif + if (status == 0) - if (length(output) > 0 && output(end) == "\n") - output = output(1:end-1); + ## User can press OK without selecting anything which returns empty string + if (isempty(output) || (numel(output) == 1 && output(end) == "\n") ) + if (expec_col > 1) + val = cell(1,expec_col); + else + val = ""; + endif + status = 256; # zenity should never return this value, it's forged for octave + return endif - idx = strfind(output, ":"); - idx = [0, idx, length(output)+1]; - l = length(idx); - if (l == 2) - s = output; + if (output(end) == "\n") + output = output(1:end-1); + endif + ## When 'multiple' values are expected, always place the output in a cell + ##array, even if only one file is selected. + if (expec_col > 1) + idx = strfind(output, '/\|/\'); + if (idx) + tmp_val = cell(length(idx)+1, 1); + idx = [-4, idx, length(output)+1]; + for i = 1 : (length(idx)-1) + tmp_val{i} = output( idx(i)+5 : idx(i+1)-1 ); + endfor + ## Order of the output will have them ordered by row. Must create an + ## inversed cell array to allocate the values and transverse it at the end + val = cell(expec_col, numel(tmp_val)/expec_col); + for i = 1 : numel(tmp_val) + val(i) = tmp_val(i); + endfor + val = val'; + else + val = cell(1); + val{1} = output; + endif else - s = cell(1, l-1); - for i = 1:l-1 - s{i} = output((idx(i)+1):(idx(i+1)-1)); - endfor + val = output; endif + elseif (status == 1 && expec_col > 1) + val = cell(1, expec_col); elseif (status == 1) - s = ""; + val = ""; + elseif (status == 5 && expec_col > 1) + val = cell(1, expec_col); + elseif (status == 5) + val = ""; else - error("zenity_list: %s", output); + error("An unexpected error occurred with exit code '%i' and output '%s'.",... + status, output); endif + endfunction This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2010-04-22 09:01:00
|
Revision: 7220 http://octave.svn.sourceforge.net/octave/?rev=7220&view=rev Author: carandraug Date: 2010-04-22 09:00:50 +0000 (Thu, 22 Apr 2010) Log Message: ----------- Use of sprintf to create a pre command to prevent future bugs if the count of %s in the command is different that the number of options. Modified Paths: -------------- trunk/octave-forge/main/zenity/inst/zenity_entry.m trunk/octave-forge/main/zenity/inst/zenity_file_selection.m trunk/octave-forge/main/zenity/inst/zenity_message.m trunk/octave-forge/main/zenity/inst/zenity_notification.m Modified: trunk/octave-forge/main/zenity/inst/zenity_entry.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_entry.m 2010-04-22 08:30:37 UTC (rev 7219) +++ trunk/octave-forge/main/zenity/inst/zenity_entry.m 2010-04-22 09:00:50 UTC (rev 7220) @@ -51,10 +51,11 @@ options = _zenity_options_ ("entry", varargin); - cmd = sprintf("zenity --entry %s %s %s %s %s %s %s %s", ... - text, options.entry, options.title, options.password, ... - options.width, options.height, options.timeout); + pre_cmd = sprintf("%s ", ... + text, options.entry, options.title, options.password, ... + options.width, options.height, options.timeout); + cmd = sprintf("zenity --entry %s", pre_cmd); [status, output] = system(cmd); ## Exit code -1 = An unexpected error has occurred Modified: trunk/octave-forge/main/zenity/inst/zenity_file_selection.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_file_selection.m 2010-04-22 08:30:37 UTC (rev 7219) +++ trunk/octave-forge/main/zenity/inst/zenity_file_selection.m 2010-04-22 09:00:50 UTC (rev 7220) @@ -15,7 +15,7 @@ ## along with this program; If not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} [@var{files} @var{status}] = zenity_file_selection(@var{param1}, @var{value1}, ...) +## @deftypefn {Function File} [@var{files} @var{status}] = zenity_file_selection (@var{param1}, @var{value1}, ...) ## Opens a file selection dialog using Zenity. Output @var{files} is a string or ## a cell array of strings depending on whether the function has been set to ## allows selection of multiple files or directories. Status will be 0 if user @@ -69,11 +69,12 @@ # in most filesystems and so, unlikely to exist in the middle of filenames. # It's also the fileseparator so filenames will always already start with a # '/' which is good since we can look for double '//' as separator for filepaths - cmd = sprintf("zenity --file-selection --separator=\"/\" %s %s %s %s %s %s %s", ... - options.directory, options.filename, options.height, ... - options.multiple, options.save, options.timeout, ... - options.title, options.width, options.filter); + pre_cmd = sprintf("%s ", ... + options.directory, options.filename, options.height, ... + options.multiple, options.save, options.timeout, ... + options.title, options.width, options.filter); + cmd = sprintf("zenity --file-selection --separator=\"/\" %s", pre_cmd); [status, output] = system(cmd); # Exit code -1 = An unexpected error has occurred Modified: trunk/octave-forge/main/zenity/inst/zenity_message.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_message.m 2010-04-22 08:30:37 UTC (rev 7219) +++ trunk/octave-forge/main/zenity/inst/zenity_message.m 2010-04-22 09:00:50 UTC (rev 7220) @@ -69,10 +69,11 @@ options = _zenity_options_ ("message", varargin); - cmd = sprintf("zenity %s %s %s %s %s %s %s %s %s", ... - options.type, text, options.wrap, options.title, ... - options.width, options.height, options.timeout); + pre_cmd = sprintf("%s ", ... + options.type, text, options.wrap, options.title, ... + options.width, options.height, options.timeout); + cmd = sprintf("zenity %s", pre_cmd); [status, output] = system(cmd); # Exit code -1 = An unexpected error has occurred Modified: trunk/octave-forge/main/zenity/inst/zenity_notification.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_notification.m 2010-04-22 08:30:37 UTC (rev 7219) +++ trunk/octave-forge/main/zenity/inst/zenity_notification.m 2010-04-22 09:00:50 UTC (rev 7220) @@ -45,9 +45,10 @@ options = _zenity_options_ ("notification", varargin); - cmd = sprintf("zenity --notification %s %s %s", - options.icon, options.text, options.timeout); + pre_cmd = sprintf("%s ", ... + options.icon, options.text, options.timeout); + cmd = sprintf("zenity --notification %s", pre_cmd); [status, output] = system(cmd); ## Exit code -1 = An unexpected error has occurred ## Exit code 0 = The user has pressed either OK or Close. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2010-04-22 09:51:59
|
Revision: 7221 http://octave.svn.sourceforge.net/octave/?rev=7221&view=rev Author: carandraug Date: 2010-04-22 09:51:53 +0000 (Thu, 22 Apr 2010) Log Message: ----------- Documentation fixes. Added example to show use of 'print column' and 'hide column' in zenity_list. Modified Paths: -------------- trunk/octave-forge/main/zenity/inst/zenity_file_selection.m trunk/octave-forge/main/zenity/inst/zenity_list.m Modified: trunk/octave-forge/main/zenity/inst/zenity_file_selection.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_file_selection.m 2010-04-22 09:00:50 UTC (rev 7220) +++ trunk/octave-forge/main/zenity/inst/zenity_file_selection.m 2010-04-22 09:51:53 UTC (rev 7221) @@ -19,9 +19,9 @@ ## Opens a file selection dialog using Zenity. Output @var{files} is a string or ## a cell array of strings depending on whether the function has been set to ## allows selection of multiple files or directories. Status will be 0 if user -## closed the window without selecting something, 1 if user pressed OK (and -## selected something), and 5 if timeout has been reached (and therefore no file -## was selected). +## pressed OK (and selected something), 1 if closed the window without selecting +## something, and 5 if timeout has been reached (and therefore no file was +## selected). ## ## All @var{parameters} are optional, but if given, may require a corresponding ## @var{value}. All possible parameters are: Modified: trunk/octave-forge/main/zenity/inst/zenity_list.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_list.m 2010-04-22 09:00:50 UTC (rev 7220) +++ trunk/octave-forge/main/zenity/inst/zenity_list.m 2010-04-22 09:51:53 UTC (rev 7221) @@ -40,8 +40,8 @@ ## of strings. If a value is empty, it returns @code{(null)}. The values of ## @var{selected} may come in any order since the user is allowed to sort them. ## -## The output @var{status} holds the exit code. 0 if user pressed cancel, 1 if -## pressed OK and selected at least one row, 5 if timeout has been reached, and +## The output @var{status} holds the exit code. 0 if user pressed OK and +## selected at least one row, 1 if pressed cancel, 5 if timeout has been reached, and ## 256 if user has pressed OK but selected no row. In the case no value has been ## selected when the window closes, @var{selected} will hold an empty string or ## cell array, the same size as it would be expected if one value had been @@ -89,6 +89,19 @@ ## column cannot cannot be hidden. The values of these columns will still be ## present in the output @var{selected}. ## +## The following example will show a list with foods only and a column with +## radio buttons. It will return the third column of @var{data}, the one that is +## not shown and holds the numbers. +## +## @example +## columns = @{"", "Foods", "not visible"@} +## data = @{"true" , "Ice cream", "1" +## "false", "Danish", "2" +## "false", "Soup", "3" +## "false", "Lasagne", "4"@} +## zenity_list(columns, data, "radiolist", "hide column", 3, "print column", 3) +## @end example +## ## @item multiple ## Allows multiple rows to be selected. No value is required. It cannot be set ## together with parameter @code{radiolist}. and it is automatically set when This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2010-04-23 20:30:38
|
Revision: 7233 http://octave.svn.sourceforge.net/octave/?rev=7233&view=rev Author: carandraug Date: 2010-04-23 20:30:27 +0000 (Fri, 23 Apr 2010) Log Message: ----------- New option for zenity list named 'numeric output' and bug fix that returned string when array or matrix was expected. Modified Paths: -------------- trunk/octave-forge/main/zenity/inst/_zenity_options_.m trunk/octave-forge/main/zenity/inst/zenity_list.m Modified: trunk/octave-forge/main/zenity/inst/_zenity_options_.m =================================================================== --- trunk/octave-forge/main/zenity/inst/_zenity_options_.m 2010-04-23 14:19:17 UTC (rev 7232) +++ trunk/octave-forge/main/zenity/inst/_zenity_options_.m 2010-04-23 20:30:27 UTC (rev 7233) @@ -69,7 +69,7 @@ op.separator = op.text = op.hide = op.print_col = ""; op.multiple = op.radio = op.check = op.editable = ""; op.hide_max = op.hide_min = op.print_max = op.print_min = ""; - op.print_numel = ""; + op.print_numel = op.num_out = ""; elseif (strcmpi(dialog, "message")) op.type = op.wrap = ""; elseif (strcmpi(dialog, "notification")) @@ -202,7 +202,6 @@ endif ## Process options for ZENITY_LIST - ## TODO should an option to change the separator be set for list? elseif ( strcmpi(dialog, "list") ) if (strcmpi(param,"text")) # List - text narg = sanity_checks ("char", param, value, op.text, narg); @@ -219,6 +218,9 @@ elseif (strcmpi(param,"checklist")) # List - checklist narg = sanity_checks ("indie", param, value, op.check, narg); op.check = "--checklist"; + elseif (strcmpi(param,"numeric output")) # List - numeric output + narg = sanity_checks ("char", param, value, op.num_out, narg); + op.num_out = value; elseif (strcmpi(param,"hide column")) # List - hide column narg = sanity_checks ("num", param, value, op.hide, narg); op.hide_min = min(value(:)); Modified: trunk/octave-forge/main/zenity/inst/zenity_list.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_list.m 2010-04-23 14:19:17 UTC (rev 7232) +++ trunk/octave-forge/main/zenity/inst/zenity_list.m 2010-04-23 20:30:27 UTC (rev 7233) @@ -107,6 +107,18 @@ ## together with parameter @code{radiolist}. and it is automatically set when ## parameter @code{checklist} is set. ## +## @item numeric output +## Returns @var{selected} as a matrix and numeric values (double precision type) +## instead of cell array of strings. It uses the function str2double for the +## conversion. Requires a string as value. Possible values are: +## +## @table @samp +## @item error +## Abort the function and return an error if unable to covert into numeric form. +## @item nan +## Returns NaN for the values it is unable to convert. +## @end table +## ## @item print column ## The numbers of the columns whose values should be returned. Requires a numeric ## data type as value. Multiple columns can be selected with ranges or matrixes, @@ -142,7 +154,7 @@ ## zenity_notification} ## @end deftypefn -function [val, status] = zenity_list(col, data, varargin) +function [val, status, tmp] = zenity_list(col, data, varargin) ## List of things that cannot be done: ## * editable cannot be set at the same time of checklist or radiolist @@ -272,7 +284,15 @@ # functions to close the dialog # Exit code 5 = The dialog has been closed because the timeout has been reached - if ( options.print_min == 0 && (!isempty(options.check) || !isempty(options.radio)) ) + # If it would be possible for the function to return more than one value + if ( !isempty(options.check) || !isempty(options.multiple) || options.print_numel > 1) + multi = 1; + else + multi = 0; + endif + + # Calculate the number of expected columns + if ( options.print_min == 0 && (options.check || options.radio) ) expec_col = numel(col) -1; elseif (options.print_min == 0) expec_col = numel(col); @@ -285,7 +305,7 @@ if (status == 0) ## User can press OK without selecting anything which returns empty string if (isempty(output) || (numel(output) == 1 && output(end) == "\n") ) - if (expec_col > 1) + if (multi) val = cell(1,expec_col); else val = ""; @@ -296,9 +316,9 @@ if (output(end) == "\n") output = output(1:end-1); endif - ## When 'multiple' values are expected, always place the output in a cell - ##array, even if only one file is selected. - if (expec_col > 1) + ## When 'multiple' values are expected, always place the output in a cell + ## array, even if only one file is selected. + if (multi) idx = strfind(output, '/\|/\'); if (idx) tmp_val = cell(length(idx)+1, 1); @@ -320,17 +340,26 @@ else val = output; endif - elseif (status == 1 && expec_col > 1) + elseif (multi && (status == 1 || status == 5)) val = cell(1, expec_col); - elseif (status == 1) + elseif (status == 1 || status ==5) val = ""; - elseif (status == 5 && expec_col > 1) - val = cell(1, expec_col); - elseif (status == 5) - val = ""; else error("An unexpected error occurred with exit code '%i' and output '%s'.",... status, output); endif + if (options.num_out) + [val, sta] = str2double(val); + if (strcmpi(options.num_out, "error")) + if ( any(sta(:)) ) + error("Conversion of output to numeric form was unsucessful") + endif + elseif (strcmpi(options.num_out, "nan")) + ## Do nothing + else + error("Unknow value '%s' for the parameter 'numeric output'", option) + endif + endif + endfunction This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2010-04-23 23:46:46
|
Revision: 7234 http://octave.svn.sourceforge.net/octave/?rev=7234&view=rev Author: carandraug Date: 2010-04-23 23:46:40 +0000 (Fri, 23 Apr 2010) Log Message: ----------- Bug fix on the conditions to check exit code. Improved documentation. Functions now return exit code instead of warnings. Modified Paths: -------------- trunk/octave-forge/main/zenity/inst/zenity_entry.m trunk/octave-forge/main/zenity/inst/zenity_file_selection.m trunk/octave-forge/main/zenity/inst/zenity_list.m trunk/octave-forge/main/zenity/inst/zenity_message.m trunk/octave-forge/main/zenity/inst/zenity_notification.m Modified: trunk/octave-forge/main/zenity/inst/zenity_entry.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_entry.m 2010-04-23 20:30:27 UTC (rev 7233) +++ trunk/octave-forge/main/zenity/inst/zenity_entry.m 2010-04-23 23:46:40 UTC (rev 7234) @@ -15,12 +15,23 @@ ## along with this program; If not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} @var{s} = zenity_entry(@var{text}, @var{parameter1}, @var{value1}, ...) -## Displays a text entry dialog using Zenity. The variable @var{text} sets the dialog text -## and is the only mandatory argument. +## @deftypefn {Function File} [@var{entry}, @var{status}] = zenity_entry(@var{text}, @var{parameter1}, @var{value1}, ...) +## Displays a text entry dialog using Zenity. ## -## All @var{parameter1} are optional, but if given, may require a corresponding +## The variable @var{text} sets the dialog text and is the only mandatory +## argument. +## +## @var{entry} is a string with the text from the entry field and @var{status} +## is a scalar with the exit code. @var{status} will have a value of @code{0} if +## @option{OK} is pressed; @code{1} if @option{Close} is pressed or the window +## functions are used to close it; or @code{5} if timeout has been reached. +## +## Note that unless @option{OK} is used to close the window, @var{entry} will be +## an empty string, despite whatever text was in the entry field. +## +## All @var{parameters} are optional, but if given, may require a corresponding ## @var{value1}. All possible parameters are: +## ## @table @samp ## @item entry ## Sets the default text in the entry field. Requires a string as value. @@ -40,7 +51,7 @@ ## @seealso{input, menu, kbhit, zenity_message, zenity_file_selection} ## @end deftypefn -function out = zenity_entry(text, varargin) +function [out, status] = zenity_entry(text, varargin) if (nargin < 1) error ("'text' argument is not optional") @@ -68,12 +79,8 @@ output = output(1:end-1); endif out = output; - elseif (status == 1) - warning("No value entered. Returning empty string."); + elseif (status == 1 || status == 5) out = ""; - elseif (status == 5) - warning("Timeout reached. Returning empty string."); - out = ""; else error("An unexpected error occurred with exit code '%i' and output '%s'",... status, output); Modified: trunk/octave-forge/main/zenity/inst/zenity_file_selection.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_file_selection.m 2010-04-23 20:30:27 UTC (rev 7233) +++ trunk/octave-forge/main/zenity/inst/zenity_file_selection.m 2010-04-23 23:46:40 UTC (rev 7234) @@ -16,13 +16,15 @@ ## -*- texinfo -*- ## @deftypefn {Function File} [@var{files} @var{status}] = zenity_file_selection (@var{param1}, @var{value1}, ...) -## Opens a file selection dialog using Zenity. Output @var{files} is a string or -## a cell array of strings depending on whether the function has been set to -## allows selection of multiple files or directories. Status will be 0 if user -## pressed OK (and selected something), 1 if closed the window without selecting -## something, and 5 if timeout has been reached (and therefore no file was -## selected). +## Opens a file selection dialog using Zenity. ## +## @var{files} is a string or a cell array of strings depending on whether the +## function has been set to allow selection of multiple files or directories. +## +## @var{status} will be @code{0} if user pressed @option{OK} (and selected +## something), @code{1} if closed the window without selecting something, and +## @code{5} if timeout has been reached (and therefore no file was selected). +## ## All @var{parameters} are optional, but if given, may require a corresponding ## @var{value}. All possible parameters are: ## @@ -103,14 +105,10 @@ else files = output; endif - elseif (status == 1 && options.multiple) + elseif (options.multiple && (status == 1 || status == 5) ) files = cell(1); - elseif (status == 1) + elseif (status == 1 || status == 5) files = ""; - elseif (status == 5 && options.multiple) - files = cell(1); - elseif (status == 5) - files = ""; else error("An unexpected error occurred with exit code '%i' and output '%s'",... status, output); Modified: trunk/octave-forge/main/zenity/inst/zenity_list.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_list.m 2010-04-23 20:30:27 UTC (rev 7233) +++ trunk/octave-forge/main/zenity/inst/zenity_list.m 2010-04-23 23:46:40 UTC (rev 7234) @@ -34,19 +34,22 @@ ## zenity_list(columns, data) ## @end example ## -## The output @var{selected} will hold a string with the value of the -## first column of the selected row. If the parameter @code{multiple} is set or -## the @code{print column} has multiple values, @var{selected} is a cell array -## of strings. If a value is empty, it returns @code{(null)}. The values of -## @var{selected} may come in any order since the user is allowed to sort them. +## @var{selected} holds a string with the value of the first column of the +## selected row. If the parameter @code{multiple} is set, or the @code{print +## column} has multiple values, @var{selected} is a cell array of strings. If a +## value is empty, it returns @code{(null)}. The values of @var{selected} may +## come in any order since the user is allowed to sort them. Instead, use of the +## parameter @code{hide column}, together with a numbered column is recomended. ## -## The output @var{status} holds the exit code. 0 if user pressed OK and -## selected at least one row, 1 if pressed cancel, 5 if timeout has been reached, and -## 256 if user has pressed OK but selected no row. In the case no value has been -## selected when the window closes, @var{selected} will hold an empty string or -## cell array, the same size as it would be expected if one value had been -## selected. +## In the case no value has been selected when the window closes, @var{selected} +## will hold an empty string or cell array, the same size as it would be +## expected if one value had been selected. ## +## @var{status} holds the exit code. @code{0} if user pressed @option{OK} and +## selected at least one row, @code{1} if pressed @option{cancel}, @code{5} if +## timeout has been reached, and @code{256} if user has pressed @option{OK} but +## selected no row. +## ## All @var{parameters} are optional, but if given, may require a corresponding ## @var{value}. All possible parameters are: ## @@ -349,6 +352,7 @@ status, output); endif + ## If user asked for numeric output, convert it to matrix if (options.num_out) [val, sta] = str2double(val); if (strcmpi(options.num_out, "error")) Modified: trunk/octave-forge/main/zenity/inst/zenity_message.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_message.m 2010-04-23 20:30:27 UTC (rev 7233) +++ trunk/octave-forge/main/zenity/inst/zenity_message.m 2010-04-23 23:46:40 UTC (rev 7234) @@ -18,12 +18,13 @@ ## @deftypefn {Function File} @var{status} = zenity_message(@var{text}, @var{parameter1}, @var{value1}, ...) ## Displays different types of graphical message dialogs using Zenity. ## -## Returns 0 if `OK' is pressed; 1 if `Close' is pressed or the window -## functions are used to close it; or 5 if timeout has been reached. +## Returns @code{0} if @option{OK} is pressed; @code{1} if @option{Close} is +## pressed or the window functions are used to close it; or @code{5} if timeout +## has been reached. ## ## The variable @var{text} sets the message of the dialog and is the only -## mandatory argument. All @var{parameter1} are optional, but if given, may require -## a corresponding @var{value1}. All possible parameters are: +## mandatory argument. All @var{parameters} are optional, but if given, may require +## a corresponding @var{value}. All possible parameters are: ## ## @table @samp ## @item type @@ -81,7 +82,7 @@ # Exit code 1 = The user has either pressed Cancel, or used the window # functions to close the dialog # Exit code 5 = The dialog has been closed because the timeout has been reached - if (status == 0 || 1 || 5) + if (status == 0 || status == 1 || status == 5) return else error("An unexpected error occurred with exit code '%i' and output '%s'",... Modified: trunk/octave-forge/main/zenity/inst/zenity_notification.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_notification.m 2010-04-23 20:30:27 UTC (rev 7233) +++ trunk/octave-forge/main/zenity/inst/zenity_notification.m 2010-04-23 23:46:40 UTC (rev 7234) @@ -15,9 +15,14 @@ ## along with this program; If not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} zenity_notification(@var{param1}, @var{value1}, ...) -## Displays an icon with a text in the notification area using Zenity. All -## variables are optional but if given, may require a corresponding +## @deftypefn {Function File} status = zenity_notification(@var{param1}, @var{value1}, ...) +## Displays an icon with a text in the notification area using Zenity. +## +## @var{status} is the exit code of the function and has a value of @code{0} if +## it is pressed; @code{1} if @option{Close} is pressed or the window +## functions are used to close it; or @code{5} if timeout has been reached. +## +## All variables are optional but if given, may require a corresponding ## @var{value}. All possible parameters are: ## ## @table @samp @@ -41,21 +46,21 @@ ## @seealso{zenity_progress, zenity_message} ## @end deftypefn -function zenity_notification(varargin) +function [output status] = zenity_notification (varargin) options = _zenity_options_ ("notification", varargin); pre_cmd = sprintf("%s ", ... options.icon, options.text, options.timeout); - cmd = sprintf("zenity --notification %s", pre_cmd); + cmd = sprintf("zenity --notification --listen %s", pre_cmd); [status, output] = system(cmd); ## Exit code -1 = An unexpected error has occurred ## Exit code 0 = The user has pressed either OK or Close. ## Exit code 1 = The user has either pressed Cancel, or used the window ## functions to close the dialog ## Exit code 5 = The dialog has been closed because the timeout has been reached - if (status == 0 || 1 || 5) + if (status == 0 || status == 1 || status == 5) return else error("An unexpected error occurred with exit code '%i' and output '%s'",... This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2010-04-25 06:20:18
|
Revision: 7236 http://octave.svn.sourceforge.net/octave/?rev=7236&view=rev Author: carandraug Date: 2010-04-25 06:20:12 +0000 (Sun, 25 Apr 2010) Log Message: ----------- Complete rewrite of the function which now does something completely different. Start the process and creates a pipe instead of a sync process. The pipe can be used to create pop up messages, change the icon and close the icon. Modified Paths: -------------- trunk/octave-forge/main/zenity/inst/_zenity_options_.m trunk/octave-forge/main/zenity/inst/zenity_notification.m Modified: trunk/octave-forge/main/zenity/inst/_zenity_options_.m =================================================================== --- trunk/octave-forge/main/zenity/inst/_zenity_options_.m 2010-04-24 00:17:57 UTC (rev 7235) +++ trunk/octave-forge/main/zenity/inst/_zenity_options_.m 2010-04-25 06:20:12 UTC (rev 7236) @@ -57,7 +57,7 @@ # varargin(end) = []; # By using (end), it actually pulls the value out instead of leaving it empty # endif - op.title = op.width = op.height = op.timeout = op.icon = ""; + op.title = op.width = op.height = op.timeout = ""; if ( !ischar(dialog) ) error ("Type of dialog should be a string"); elseif (strcmpi(dialog, "calendar")) @@ -72,8 +72,10 @@ op.print_numel = op.num_out = ""; elseif (strcmpi(dialog, "message")) op.type = op.wrap = ""; - elseif (strcmpi(dialog, "notification")) - op.text = ""; + elseif (strcmpi(dialog, "new notification")) + op.text = op.icon = ""; + elseif (strcmpi(dialog, "piped notification")) + op.text = op.icon = op.message = ""; elseif (strcmpi(dialog, "progress")) elseif (strcmpi(dialog, "scale")) elseif (strcmpi(dialog, "text info")) @@ -110,35 +112,22 @@ ## Process ALL GENERAL OPTIONS first elseif (strcmpi(param,"title")) # General - title narg = sanity_checks ("char", param, value, op.title, narg); - op.title = sprintf("--title=\"%s\"", value); + op.title = sprintf('--title="%s"', value); elseif (strcmpi(param,"width")) # General - width narg = sanity_checks ("scalar", param, value, op.width, narg); - op.width = sprintf("--width=\"%s\"", num2str(value)); + op.width = sprintf('--width="%s"', num2str(value)); elseif (strcmpi(param,"height")) # General - height narg = sanity_checks ("scalar", param, value, op.height, narg); - op.height = sprintf("--height=\"%s\"", num2str(value)); + op.height = sprintf('--height="%s"', num2str(value)); elseif (strcmpi(param,"timeout")) # General - timeout narg = sanity_checks ("scalar", param, value, op.timeout, narg); - op.timeout = sprintf("--timeout=\"%s\"", num2str(value)); - elseif (strcmpi(param,"icon")) # General - icon - narg = sanity_checks ("char", param, value, op.icon, narg); - if (strcmpi(value, "error")) - op.icon = "--window-icon=\"error\""; - elseif (strcmpi(value, "info")) - op.icon = "--window-icon=\"info\""; - elseif (strcmpi(value, "question")) - op.icon = "--window-icon=\"question\""; - elseif (strcmpi(value, "warning")) - op.icon = "--window-icon=\"warning\""; - else - op.icon = sprintf("--window-icon=\"%s\"", value); - endif + op.timeout = sprintf('--timeout="%s"', num2str(value)); ## Process options for ZENITY_ENTRY elseif ( strcmpi(dialog, "entry") ) if (strcmpi(param,"entry")) # Entry - entry text narg = sanity_checks ("char", param, value, op.entry, narg); - op.entry = sprintf("--entry-text=\"%s\"", value); + op.entry = sprintf('--entry-text="%s"', value); elseif (strcmpi(param,"password")) # Entry - password narg = sanity_checks ("indie", param, value, op.password, narg); op.password = "--hide-text"; @@ -153,10 +142,10 @@ op.directory = "--directory"; elseif (strcmpi(param,"filename")) # File selection - filename narg = sanity_checks ("char", param, value, op.filename, narg); - op.filename = sprintf("--filename=\"%s\"", value); + op.filename = sprintf('--filename="%s"', value); elseif (strcmpi(param,"filter")) # File selection - file filter narg = sanity_checks ("multiple-char", param, value, op.directory, narg); - op.filter = sprintf("%s --file-filter=\"%s\"", op.filter, value); + op.filter = sprintf('%s --file-filter="%s"', op.filter, value); elseif (strcmpi(param,"multiple")) # File selection - multiple narg = sanity_checks ("indie", param, value, op.multiple, narg); op.multiple = "--multiple"; @@ -192,20 +181,59 @@ error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); endif - ## Process options for ZENITY_NOTIFICATION - elseif ( strcmpi(dialog, "notification") ) + ## Process options for ZENITY_NOTIFICATION (creating new) + elseif ( strcmpi(dialog, "new notification") ) if (strcmpi(param,"text")) # Notification - text narg = sanity_checks ("char", param, value, op.text, narg); - op.text = sprintf("--text=\"%s\"", value); + op.text = sprintf('--text="%s"', value); + elseif (strcmpi(param,"icon")) # Notification - icon + narg = sanity_checks ("char", param, value, op.icon, narg); + if (strcmpi(value, "error")) + op.icon = '--window-icon="error"'; + elseif (strcmpi(value, "info")) + op.icon = '--window-icon="info"'; + elseif (strcmpi(value, "question")) + op.icon = '--window-icon="question"'; + elseif (strcmpi(value, "warning")) + op.icon = '--window-icon="warning"'; + else + op.icon = sprintf('--window-icon="%s"', value); + endif else error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); endif + ## Process options for ZENITY_NOTIFICATION (pipelining) + elseif ( strcmpi(dialog, "piped notification") ) + if (strcmpi(param,"text")) # Notification - text + narg = sanity_checks ("char", param, value, op.text, narg); + op.text = sprintf('tooltip: %s', value); + elseif (strcmpi(param,"message")) # Notification - message + narg = sanity_checks ("char", param, value, op.message, narg); + op.message = sprintf('message: %s', value); + elseif (strcmpi(param,"icon")) # Notification - icon + narg = sanity_checks ("char", param, value, op.icon, narg); + if (strcmpi(value, "error")) + op.icon = 'icon: error'; + elseif (strcmpi(value, "info")) + op.icon = 'icon: info'; + elseif (strcmpi(value, "question")) + op.icon = 'icon: question'; + elseif (strcmpi(value, "warning")) + op.icon = 'icon: warning'; + else + op.icon = sprintf('icon: %s', value); + endif + else + error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); + endif + + ## Process options for ZENITY_LIST elseif ( strcmpi(dialog, "list") ) if (strcmpi(param,"text")) # List - text narg = sanity_checks ("char", param, value, op.text, narg); - op.text = sprintf("--text=\"%s\"", value); + op.text = sprintf('--text="%s"', value); elseif (strcmpi(param,"editable")) # List - editable narg = sanity_checks ("indie", param, value, op.editable, narg); op.editable = "--editable"; @@ -228,9 +256,9 @@ tmp = ""; for i = 1:numel(value) str = num2str(value(i)); - tmp = sprintf("%s%s,", tmp, str); + tmp = sprintf('%s%s,', tmp, str); endfor - op.hide = sprintf("--hide-column=\"%s\"", tmp); + op.hide = sprintf('--hide-column="%s"', tmp); elseif (strcmpi(param,"print column")) # List - print column narg = sanity_checks ("num", param, value, op.print_col, narg); op.print_min = min(value(:)); @@ -243,9 +271,9 @@ break endif str = num2str(value(i)); - tmp = sprintf("%s%s,", tmp, str); + tmp = sprintf('%s%s,', tmp, str); endfor - op.print_col = sprintf("--print-column=\"%s\"", tmp); + op.print_col = sprintf('--print-column="%s"', tmp); else error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); endif @@ -262,9 +290,9 @@ if ( isempty(op.type) ) op.type = "--info"; endif - elseif (strcmpi(dialog,"notification")) # Defaults for notification + elseif (strcmpi(dialog,"new notification")) # Defaults for notification if ( isempty(op.icon) ) - op.icon = "--window-icon=\"warning\""; + op.icon = '--window-icon="warning"'; endif endif Modified: trunk/octave-forge/main/zenity/inst/zenity_notification.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_notification.m 2010-04-24 00:17:57 UTC (rev 7235) +++ trunk/octave-forge/main/zenity/inst/zenity_notification.m 2010-04-25 06:20:12 UTC (rev 7236) @@ -15,20 +15,55 @@ ## along with this program; If not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} status = zenity_notification(@var{param1}, @var{value1}, ...) -## Displays an icon with a text in the notification area using Zenity. +## @deftypefn {Function File} @var{h} = zenity_notification +## @deftypefnx {Function File} @var{h} = zenity_notification (@var{param1}, @var{value1}, ...) +## @deftypefnx {Function File} @var{s} = zenity_notification (@var{h}, @var{param1}, @var{value1}, ...) +## @deftypefnx {Function File} @var{s} = zenity_notification (@var{h}, "close") +## Displays an icon with a text in the notification area, and pop up messages +## using Zenity. ## -## @var{status} is the exit code of the function and has a value of @code{0} if -## it is pressed; @code{1} if @option{Close} is pressed or the window -## functions are used to close it; or @code{5} if timeout has been reached. +## The first and second forms of the @code{zenity_notification} function creates +## a new notification icon with whatever parameters are set, and return the +## handle @var{h} for later interaction with the notification icon. ## -## All variables are optional but if given, may require a corresponding +## The third form of the @code{zenity_notification} function changes the +## parameteres of the existing icon and/or displays popup messages given the +## handle @var{h}. Returns @code{0} on success and @code{1} on error. +## +## The fourth form of the @code{zenity_notification} function closes the +## notification icon given the handle @var{h} followed by the string +## @code{close}. Returns @code{0} on success and @code{1} on error. +## +## The following example, creates a notification info icon in the notification +## panel that shows the text @samp{working} when the mouse is over the +## icon. Then shows a pop up message saying @samp{step 1 started} followed by +## another saying @samp{"error during step 1} all the while changing the icon +## from info to error. It then finnaly closes the icon, removing it from the +## notification panel. Trough all the example, the text stays @samp{working}. +## +## @example +## h = zenity_notification ("text", "working", "icon", "info") +## zenity_notification (h, "message", "step 1 started") +## zenity_notification (h, "message", "error during step 1", "icon", "error") +## zenity_notification (h, "close") +## @end example +## +## All @var{parameters} are optional but if given, may require a corresponding ## @var{value}. All possible parameters are: ## ## @table @samp +## @item message +## Shows a pop up notification. Requires a string as value and Can only be used +## is the notification icon already exists. Newline characters are illegal +## characters and will be replaced by a space from the message. +## +## Note: the duration of the message as well as the time interval between +## consequent messages is defined by the user's system preferences. +## ## @item icon -## Sets the icon of notification. Requires a string as value. It can either be -## the path for an image or one of the four default icons: +## Sets or changes new or existent notification icons. Requires a string as +## value. It can either be the path for an image or one of the four default +## icons: ## ## @table @samp ## @item error @@ -36,34 +71,91 @@ ## @item question ## @item warning (default) ## @end table +## +## Note: The icon will also appear next to any message. +## ## @item text -## Sets the notification text. Requires a string as value. +## Sets the notification text. Requires a string as value. This text appears +## when the mouse is placed over the icon. To show a popup notification, use +## @code{message}. +## ## @item timeout ## Sets the time in seconds after which the dialog is closed. Requires a scalar -## as value. +## as value and can only be set when creating a new icon. ## @end table ## ## @seealso{zenity_progress, zenity_message} ## @end deftypefn -function [output status] = zenity_notification (varargin) +function sta = zenity_notification (varargin) - options = _zenity_options_ ("notification", varargin); + ## If no arguments, open a new notification + if ( nargin == 0 ) + pipelining = 0; + ## If first argument is the fid for an already open notification, remove it + ## from varargin (remove it != empty it) before feeding to _zenity_options_ + elseif (isscalar (varargin{1}) && isnumeric(varargin{1}) ) + pipelining = 1; + handle = varargin{1}; + varargin(1) = []; + elseif ( ischar(varargin{1}) && strcmpi(varargin{1}, "close") ) + error("Argument to close was given, but not the handle.") + else + pipelining = 0; + endif - pre_cmd = sprintf("%s ", ... - options.icon, options.text, options.timeout); - - cmd = sprintf("zenity --notification --listen %s", pre_cmd); - [status, output] = system(cmd); - ## Exit code -1 = An unexpected error has occurred - ## Exit code 0 = The user has pressed either OK or Close. - ## Exit code 1 = The user has either pressed Cancel, or used the window - ## functions to close the dialog - ## Exit code 5 = The dialog has been closed because the timeout has been reached - if (status == 0 || status == 1 || status == 5) - return + if (pipelining) + ## If the first argument after the handle is the string 'close' say 'bye bye' + if ( ischar(varargin{1}) && strcmpi(varargin{1}, "close") ) + if (nargin > 2) + warning ("There's %g argument(s) after '%s' which will be ignored", (nargin-2), varargin{1}) + endif + try + pclose(handle); + sta = 0; + catch + sta = -1; + end_try_catch +# ## Commented because function should return the exit code +# if (sta != 0) +# error ("Error when closing zenity notification"); +# endif + return + endif + options = _zenity_options_ ("piped notification", varargin); + ## Must add the new line only if they exist or zenity will complain about + ## not being able to parse some of the lines. + ## Atention to whitespace after the command. Example: + ## " icon:question" <-- no error, changes icon for question correctly + ## "icon:question " <-- error, unable to fid the icon + options.icon = add_newline (options.icon); + options.text = add_newline (options.text); + options.message = add_newline (options.message); + ## icon comes first so that if there's a new message it already comes + ## with the new icon (the icon is also present on the messages, not only in + ## the panel) + pre_cmd = sprintf("%s", ... + options.icon, options.text, options.message); + try + fputs(handle, pre_cmd); + sta = 0; + catch + sta = -1; + end_try_catch else - error("An unexpected error occurred with exit code '%i' and output '%s'",... - status, output); + options = _zenity_options_ ("new notification", varargin); + pre_cmd = sprintf("%s ", ... + options.icon, options.text, options.timeout); + cmd = sprintf("zenity --notification --listen %s", pre_cmd); + sta = popen(cmd, "w"); endif + endfunction + +### Add new lines only if the option exist and replace other newlines that may be +function val = add_newline (val) + if(!isempty(val)) + val = strrep (val, "\n", " "); + val = sprintf("%s\n", val); + endif +endfunction This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2010-04-26 16:04:16
|
Revision: 7257 http://octave.svn.sourceforge.net/octave/?rev=7257&view=rev Author: carandraug Date: 2010-04-26 16:04:09 +0000 (Mon, 26 Apr 2010) Log Message: ----------- New option for notification (visibility of the icon). More robust code (fflush after fputs and proper exit code). Improved documentation. Modified Paths: -------------- trunk/octave-forge/main/zenity/inst/_zenity_options_.m trunk/octave-forge/main/zenity/inst/zenity_notification.m Modified: trunk/octave-forge/main/zenity/inst/_zenity_options_.m =================================================================== --- trunk/octave-forge/main/zenity/inst/_zenity_options_.m 2010-04-26 14:58:26 UTC (rev 7256) +++ trunk/octave-forge/main/zenity/inst/_zenity_options_.m 2010-04-26 16:04:09 UTC (rev 7257) @@ -51,13 +51,7 @@ varargin = varargin{1}; # because other functions varargin is this varargin - ## A present from zenity_list. Take it out of varargin before before other stuff -# if ( strcmpi(dialog, "list") ) -# list.col = varargin{end}; -# varargin(end) = []; # By using (end), it actually pulls the value out instead of leaving it empty -# endif - - op.title = op.width = op.height = op.timeout = ""; + op.title = op.width = op.height = op.timeout = op.icon = ""; if ( !ischar(dialog) ) error ("Type of dialog should be a string"); elseif (strcmpi(dialog, "calendar")) @@ -73,9 +67,9 @@ elseif (strcmpi(dialog, "message")) op.type = op.wrap = ""; elseif (strcmpi(dialog, "new notification")) - op.text = op.icon = ""; + op.text = ""; elseif (strcmpi(dialog, "piped notification")) - op.text = op.icon = op.message = ""; + op.text = op.message = op.visible = ""; elseif (strcmpi(dialog, "progress")) elseif (strcmpi(dialog, "scale")) elseif (strcmpi(dialog, "text info")) @@ -88,7 +82,15 @@ return endif - ## Here's the guidelines of the processing: + ## Identifies when it's being called to process stuff to send through pipes + ## since they'll have major differences in the processing + if ( strcmpi(dialog, "piped notification") ) + pipelining = 1; + else + pipelining = 0; + endif + + ## Here's the guidelines for the processing: ## - the parameteres and values are case insensitive ## - if a parameter is being defined twice, return an error ## - if a parameter requires a value but this is not given, return an error @@ -96,7 +98,12 @@ ## error if not narg = 1; + ## This will ONLY process the input when the output won't be send through a + ## pipe. See the next while block for that. while (narg <= numel (varargin)) + if (pipelining) + break # Move to the next while to process the input + endif param = varargin{narg++}; if (narg <= numel(varargin)) # Check if we are already in the last index @@ -105,7 +112,6 @@ value = ""; # is a pain and makes it even more confusing endif - if ( !ischar(param) ) error ("All parameters must be strings."); @@ -122,6 +128,19 @@ elseif (strcmpi(param,"timeout")) # General - timeout narg = sanity_checks ("scalar", param, value, op.timeout, narg); op.timeout = sprintf('--timeout="%s"', num2str(value)); + elseif (strcmpi(param,"icon")) # General - icon + narg = sanity_checks ("char", param, value, op.icon, narg); + if (strcmpi(value, "error")) + op.icon = '--window-icon="error"'; + elseif (strcmpi(value, "info")) + op.icon = '--window-icon="info"'; + elseif (strcmpi(value, "question")) + op.icon = '--window-icon="question"'; + elseif (strcmpi(value, "warning")) + op.icon = '--window-icon="warning"'; + else + op.icon = sprintf('--window-icon="%s"', value); + endif ## Process options for ZENITY_ENTRY elseif ( strcmpi(dialog, "entry") ) @@ -186,49 +205,10 @@ if (strcmpi(param,"text")) # Notification - text narg = sanity_checks ("char", param, value, op.text, narg); op.text = sprintf('--text="%s"', value); - elseif (strcmpi(param,"icon")) # Notification - icon - narg = sanity_checks ("char", param, value, op.icon, narg); - if (strcmpi(value, "error")) - op.icon = '--window-icon="error"'; - elseif (strcmpi(value, "info")) - op.icon = '--window-icon="info"'; - elseif (strcmpi(value, "question")) - op.icon = '--window-icon="question"'; - elseif (strcmpi(value, "warning")) - op.icon = '--window-icon="warning"'; - else - op.icon = sprintf('--window-icon="%s"', value); - endif else error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); endif - ## Process options for ZENITY_NOTIFICATION (pipelining) - elseif ( strcmpi(dialog, "piped notification") ) - if (strcmpi(param,"text")) # Notification - text - narg = sanity_checks ("char", param, value, op.text, narg); - op.text = sprintf('tooltip: %s', value); - elseif (strcmpi(param,"message")) # Notification - message - narg = sanity_checks ("char", param, value, op.message, narg); - op.message = sprintf('message: %s', value); - elseif (strcmpi(param,"icon")) # Notification - icon - narg = sanity_checks ("char", param, value, op.icon, narg); - if (strcmpi(value, "error")) - op.icon = 'icon: error'; - elseif (strcmpi(value, "info")) - op.icon = 'icon: info'; - elseif (strcmpi(value, "question")) - op.icon = 'icon: question'; - elseif (strcmpi(value, "warning")) - op.icon = 'icon: warning'; - else - op.icon = sprintf('icon: %s', value); - endif - else - error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); - endif - - ## Process options for ZENITY_LIST elseif ( strcmpi(dialog, "list") ) if (strcmpi(param,"text")) # List - text @@ -278,13 +258,64 @@ error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); endif - else error ("Parameter '%s' is not supported.", param); endif endwhile + + while (narg <= numel (varargin)) + if (!pipelining) + break # It should have already been processed in the previous while block + endif + param = varargin{narg++}; + + if (narg <= numel(varargin)) # Check if we are already in the last index + value = varargin{narg}; # this is only for readability later on + else # Writing varargin{narg} in all conditions + value = ""; # is a pain and makes it even more confusing + endif + + ## Process options for ZENITY_NOTIFICATION (pipelining) + if ( strcmpi(dialog, "piped notification") ) + if (strcmpi(param,"text")) # Notification - text + narg = sanity_checks ("char", param, value, op.text, narg); + op.text = sprintf('tooltip: %s', value); + elseif (strcmpi(param,"message")) # Notification - message + narg = sanity_checks ("char", param, value, op.message, narg); + op.message = sprintf('message: %s', value); + elseif (strcmpi(param,"visible")) # Notification - message + narg = sanity_checks ("char", param, value, op.message, narg); + if (strcmpi(value, "on")) + op.visible = "visible: true"; + elseif (strcmpi(value, "off")) + op.visible = "visible: false"; + else + error ("'%s' is not a valid value for the parameter '%s'", value, param) + endif + elseif (strcmpi(param,"icon")) # Notification - icon + narg = sanity_checks ("char", param, value, op.icon, narg); + if (strcmpi(value, "error")) + op.icon = 'icon: error'; + elseif (strcmpi(value, "info")) + op.icon = 'icon: info'; + elseif (strcmpi(value, "question")) + op.icon = 'icon: question'; + elseif (strcmpi(value, "warning")) + op.icon = 'icon: warning'; + else + op.icon = sprintf('icon: %s', value); + endif + else + error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); + endif + + else + error ("Parameter '%s' is not supported.", param); + endif + endwhile + ## Set the DEFAULTS if (strcmpi(dialog,"message")) # Defaults for message if ( isempty(op.type) ) Modified: trunk/octave-forge/main/zenity/inst/zenity_notification.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_notification.m 2010-04-26 14:58:26 UTC (rev 7256) +++ trunk/octave-forge/main/zenity/inst/zenity_notification.m 2010-04-26 16:04:09 UTC (rev 7257) @@ -24,15 +24,16 @@ ## ## The first and second forms of the @code{zenity_notification} function creates ## a new notification icon with whatever parameters are set, and return the -## handle @var{h} for later interaction with the notification icon. +## handle @var{h} for later interaction with the notification icon or @code{-1} +## on error. ## ## The third form of the @code{zenity_notification} function changes the ## parameteres of the existing icon and/or displays popup messages given the -## handle @var{h}. Returns @code{0} on success and @code{1} on error. +## handle @var{h}. Returns @code{0} on success and @code{-1} on error. ## ## The fourth form of the @code{zenity_notification} function closes the ## notification icon given the handle @var{h} followed by the string -## @code{close}. Returns @code{0} on success and @code{1} on error. +## @code{close}. Returns @code{0} on success and @code{-1} on error. ## ## The following example, creates a notification info icon in the notification ## panel that shows the text @samp{working} when the mouse is over the @@ -54,12 +55,9 @@ ## @table @samp ## @item message ## Shows a pop up notification. Requires a string as value and Can only be used -## is the notification icon already exists. Newline characters are illegal +## if the notification icon already exists. Newline characters are illegal ## characters and will be replaced by a space from the message. ## -## Note: the duration of the message as well as the time interval between -## consequent messages is defined by the user's system preferences. -## ## @item icon ## Sets or changes new or existent notification icons. Requires a string as ## value. It can either be the path for an image or one of the four default @@ -82,8 +80,17 @@ ## @item timeout ## Sets the time in seconds after which the dialog is closed. Requires a scalar ## as value and can only be set when creating a new icon. +## +## @item visible +## Sets the visibility pf the icon in the notification area. Requires the string +## @code{'on'} or @code{'off'} as value and can only be used if the notification +## icon already exists. @code{'on'} makes the icon visible, while @code{'off'} +## makes it invisible. ## @end table ## +## @strong{Note:} ultimately, the availability of some parameters is dependent +## on the user's system preferences and zenity version. +## ## @seealso{zenity_progress, zenity_message} ## @end deftypefn @@ -111,12 +118,11 @@ warning ("There's %g argument(s) after '%s' which will be ignored", (nargin-2), varargin{1}) endif try - pclose(handle); - sta = 0; + sta = pclose(handle); catch sta = -1; end_try_catch -# ## Commented because function should return the exit code +# ## Commented because function should return the exit code, not give an error # if (sta != 0) # error ("Error when closing zenity notification"); # endif @@ -131,14 +137,15 @@ options.icon = add_newline (options.icon); options.text = add_newline (options.text); options.message = add_newline (options.message); + options.visible = add_newline (options.visible); ## icon comes first so that if there's a new message it already comes ## with the new icon (the icon is also present on the messages, not only in ## the panel) pre_cmd = sprintf("%s", ... - options.icon, options.text, options.message); + options.icon, options.text, options.message, options.visible); try - fputs(handle, pre_cmd); - sta = 0; + sta = fputs(handle, pre_cmd); + fflush (handle); catch sta = -1; end_try_catch @@ -147,7 +154,11 @@ pre_cmd = sprintf("%s ", ... options.icon, options.text, options.timeout); cmd = sprintf("zenity --notification --listen %s", pre_cmd); - sta = popen(cmd, "w"); + try + sta = popen(cmd, "w"); + catch + sta = -1 + end_try_catch endif endfunction This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2010-04-26 16:39:18
|
Revision: 7259 http://octave.svn.sourceforge.net/octave/?rev=7259&view=rev Author: carandraug Date: 2010-04-26 16:33:22 +0000 (Mon, 26 Apr 2010) Log Message: ----------- Added new options to message to change the text of OK and cancel buttons when type is question. Modifed documentation accordingly. Modified Paths: -------------- trunk/octave-forge/main/zenity/inst/_zenity_options_.m trunk/octave-forge/main/zenity/inst/zenity_message.m Modified: trunk/octave-forge/main/zenity/inst/_zenity_options_.m =================================================================== --- trunk/octave-forge/main/zenity/inst/_zenity_options_.m 2010-04-26 16:19:29 UTC (rev 7258) +++ trunk/octave-forge/main/zenity/inst/_zenity_options_.m 2010-04-26 16:33:22 UTC (rev 7259) @@ -65,7 +65,7 @@ op.hide_max = op.hide_min = op.print_max = op.print_min = ""; op.print_numel = op.num_out = ""; elseif (strcmpi(dialog, "message")) - op.type = op.wrap = ""; + op.type = op.wrap = op.ok = op.cancel = ""; elseif (strcmpi(dialog, "new notification")) op.text = ""; elseif (strcmpi(dialog, "piped notification")) @@ -196,6 +196,12 @@ elseif (strcmpi(param,"wrap")) # Message - wrap narg = sanity_checks ("indie", param, value, op.wrap, narg); op.wrap = "--no-wrap"; + elseif (strcmpi(param,"ok button")) # Message - OK button + narg = sanity_checks ("char", param, value, op.ok, narg); + op.ok = sprintf('--ok-label="%s"', value); + elseif (strcmpi(param,"cancel button")) # Message - cancel button + narg = sanity_checks ("char", param, value, op.cancel, narg); + op.cancel = sprintf('--cancel-label="%s"', value); else error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); endif Modified: trunk/octave-forge/main/zenity/inst/zenity_message.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_message.m 2010-04-26 16:19:29 UTC (rev 7258) +++ trunk/octave-forge/main/zenity/inst/zenity_message.m 2010-04-26 16:33:22 UTC (rev 7259) @@ -33,13 +33,13 @@ ## ## @table @samp ## @item error -## Creates an error dialog. +## Creates an error dialog with an @option{OK} button. ## @item info -## Creates an information dialog (default). +## Creates an information dialog with an @option{OK} button (default). ## @item question -## Creates a question dialog. +## Creates a question dialog with an @option{OK} and a @option{cancel} button. ## @item warning -## Creates a warning dialog. +## Creates a warning dialog with an @option{OK} button. ## @end table ## ## @item icon @@ -54,6 +54,12 @@ ## @item warning ## @end table ## +## @item OK button +## Sets the the text to show on the @option{OK} button if type of message is set +## to @option{question}. Requires a string as value. +## @item cancel button +## Sets the the text to show on the @option{cancel} button if type of message is +## set to @option{question}. Requires a string as value. ## @item title ## Sets the title of the window. Requires a string as value. ## @item no-wrap @@ -85,9 +91,15 @@ options = _zenity_options_ ("message", varargin); + ## Sanity checks + if ( !strcmpi(options.type, "--question") && (options.ok || options.cancel)) + error("Paremeters 'ok button' and 'cancel button' can only bet set in 'question' messages") + endif + pre_cmd = sprintf("%s ", ... options.type, text, options.wrap, options.title, ... - options.icon, options.width, options.height, options.timeout); + options.icon, options.width, options.height, ... + options.timeout, options.ok, options.cancel); cmd = sprintf("zenity %s", pre_cmd); [status, output] = system(cmd); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2010-04-26 16:39:22
|
Revision: 7258 http://octave.svn.sourceforge.net/octave/?rev=7258&view=rev Author: carandraug Date: 2010-04-26 16:19:29 +0000 (Mon, 26 Apr 2010) Log Message: ----------- Added new option to set the icon on the window. Added note on documentation saying that ultimately, some parameters may be overwritten by the user's system preferences or not available in some zenity versions. Modified Paths: -------------- trunk/octave-forge/main/zenity/inst/zenity_entry.m trunk/octave-forge/main/zenity/inst/zenity_file_selection.m trunk/octave-forge/main/zenity/inst/zenity_list.m trunk/octave-forge/main/zenity/inst/zenity_message.m Modified: trunk/octave-forge/main/zenity/inst/zenity_entry.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_entry.m 2010-04-26 16:04:09 UTC (rev 7257) +++ trunk/octave-forge/main/zenity/inst/zenity_entry.m 2010-04-26 16:19:29 UTC (rev 7258) @@ -43,11 +43,25 @@ ## Sets the width of the dialog window. Requires a scalar as value. ## @item height ## Sets the height of the dialog window. Requires a scalar as value. +## @item icon +## Sets the icon of the window. Requires a string as value with the file path to +## an image, or one of the four stock icons: +## +## @table @samp +## @item error +## @item info +## @item question +## @item warning +## @end table +## ## @item timeout ## Sets the time in seconds after which the dialog is closed. Requires a scalar ## as value. ## @end table ## +## @strong{Note:} ultimately, the availability of some parameters is dependent +## on the user's system preferences and zenity version. +## ## @seealso{input, menu, kbhit, zenity_message, zenity_file_selection} ## @end deftypefn @@ -64,7 +78,7 @@ pre_cmd = sprintf("%s ", ... text, options.entry, options.title, options.password, ... - options.width, options.height, options.timeout); + options.icon, options.width, options.height, options.timeout); cmd = sprintf("zenity --entry %s", pre_cmd); [status, output] = system(cmd); Modified: trunk/octave-forge/main/zenity/inst/zenity_file_selection.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_file_selection.m 2010-04-26 16:04:09 UTC (rev 7257) +++ trunk/octave-forge/main/zenity/inst/zenity_file_selection.m 2010-04-26 16:19:29 UTC (rev 7258) @@ -42,6 +42,18 @@ ## @end example ## @item height ## Sets the height of the dialog window. Requires a scalar as value. +## +## @item icon +## Sets the icon of the window. Requires a string as value with the file path to +## an image, or one of the four stock icons: +## +## @table @samp +## @item error +## @item info +## @item question +## @item warning +## @end table +## ## @item multiple ## Allows selection of multiple files. No value is required. @var{files} will ## hold a cell array, even if user selects only one or no file. @@ -56,6 +68,9 @@ ## Sets the width of the dialog window. Requires a scalar as value. ## @end table ## +## @strong{Note:} ultimately, the availability of some parameters is dependent +## on the user's system preferences and zenity version. +## ## @seealso{zenity_list, zenity_entry, zenity_message, zenity_text_info} ## @end deftypefn @@ -74,7 +89,7 @@ pre_cmd = sprintf("%s ", ... options.directory, options.filename, options.height, ... options.multiple, options.save, options.timeout, ... - options.title, options.width, options.filter); + options.title, options.width, options.filter, options.icon); cmd = sprintf("zenity --file-selection --separator=\"/\" %s", pre_cmd); [status, output] = system(cmd); Modified: trunk/octave-forge/main/zenity/inst/zenity_list.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_list.m 2010-04-26 16:04:09 UTC (rev 7257) +++ trunk/octave-forge/main/zenity/inst/zenity_list.m 2010-04-26 16:19:29 UTC (rev 7258) @@ -105,6 +105,17 @@ ## zenity_list(columns, data, "radiolist", "hide column", 3, "print column", 3) ## @end example ## +## @item icon +## Sets the icon of the window. Requires a string as value with the file path to +## an image, or one of the four stock icons: +## +## @table @samp +## @item error +## @item info +## @item question +## @item warning +## @end table +## ## @item multiple ## Allows multiple rows to be selected. No value is required. It cannot be set ## together with parameter @code{radiolist}. and it is automatically set when @@ -153,6 +164,9 @@ ## ## @end table ## +## @strong{Note:} ultimately, the availability of some parameters is dependent +## on the user's system preferences and zenity version. +## ## @seealso{input, menu, kbhit, zenity_message, zenity_file_selection, ## zenity_notification} ## @end deftypefn @@ -276,7 +290,7 @@ options.timeout, options.separator, options.text, ... options.hide, options.print_col, options.multiple, ... options.radio, options.check, options.editable, ... - options.col, options.data); + options.icon, options.col, options.data); cmd = sprintf ("zenity --list %s", pre_cmd); [status, output] = system(cmd); Modified: trunk/octave-forge/main/zenity/inst/zenity_message.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_message.m 2010-04-26 16:04:09 UTC (rev 7257) +++ trunk/octave-forge/main/zenity/inst/zenity_message.m 2010-04-26 16:19:29 UTC (rev 7258) @@ -42,6 +42,18 @@ ## Creates a warning dialog. ## @end table ## +## @item icon +## Sets the icon of the window. Requires a string as value with the file path to +## an image, or one of the four stock icons (default is the same as the type of +## of message): +## +## @table @samp +## @item error +## @item info +## @item question +## @item warning +## @end table +## ## @item title ## Sets the title of the window. Requires a string as value. ## @item no-wrap @@ -55,6 +67,9 @@ ## as value. ## @end table ## +## @strong{Note:} ultimately, the availability of some parameters is dependent +## on the user's system preferences and zenity version. +## ## @seealso{zenity_text_info, warning, error, disp, puts, printf, zenity_entry, ## zenity_notification} ## @end deftypefn @@ -66,13 +81,13 @@ elseif (!ischar(text)) error ("'text' argument must be a string") endif - text = sprintf("--text=\"%s\"", text); + text = sprintf('--text="%s"', text); options = _zenity_options_ ("message", varargin); pre_cmd = sprintf("%s ", ... options.type, text, options.wrap, options.title, ... - options.width, options.height, options.timeout); + options.icon, options.width, options.height, options.timeout); cmd = sprintf("zenity %s", pre_cmd); [status, output] = system(cmd); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2010-04-26 16:47:10
|
Revision: 7260 http://octave.svn.sourceforge.net/octave/?rev=7260&view=rev Author: carandraug Date: 2010-04-26 16:47:04 +0000 (Mon, 26 Apr 2010) Log Message: ----------- Added new option to hide the headers of the list. Changed documentation accordingly. Bug fix in returned value that didn't exist. Modified Paths: -------------- trunk/octave-forge/main/zenity/inst/_zenity_options_.m trunk/octave-forge/main/zenity/inst/zenity_list.m Modified: trunk/octave-forge/main/zenity/inst/_zenity_options_.m =================================================================== --- trunk/octave-forge/main/zenity/inst/_zenity_options_.m 2010-04-26 16:33:22 UTC (rev 7259) +++ trunk/octave-forge/main/zenity/inst/_zenity_options_.m 2010-04-26 16:47:04 UTC (rev 7260) @@ -60,7 +60,7 @@ elseif (strcmpi(dialog, "file selection")) op.directory = op.filename = op.filter = op.multiple = op.save = ""; elseif (strcmpi(dialog, "list")) - op.separator = op.text = op.hide = op.print_col = ""; + op.separator = op.text = op.hide = op.print_col = op.no_head = ""; op.multiple = op.radio = op.check = op.editable = ""; op.hide_max = op.hide_min = op.print_max = op.print_min = ""; op.print_numel = op.num_out = ""; @@ -220,6 +220,9 @@ if (strcmpi(param,"text")) # List - text narg = sanity_checks ("char", param, value, op.text, narg); op.text = sprintf('--text="%s"', value); + elseif (strcmpi(param,"no headers")) # List - no headers + narg = sanity_checks ("indie", param, value, op.no_head, narg); + op.no_head = "--hide-header"; elseif (strcmpi(param,"editable")) # List - editable narg = sanity_checks ("indie", param, value, op.editable, narg); op.editable = "--editable"; Modified: trunk/octave-forge/main/zenity/inst/zenity_list.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_list.m 2010-04-26 16:33:22 UTC (rev 7259) +++ trunk/octave-forge/main/zenity/inst/zenity_list.m 2010-04-26 16:47:04 UTC (rev 7260) @@ -105,6 +105,12 @@ ## zenity_list(columns, data, "radiolist", "hide column", 3, "print column", 3) ## @end example ## +## @item no headers +## Doesn't show the headers. No value is required. @var{columns} still needs to +## be defined and have the right size but may be a cell array of empty +## strings. Since the headers are hidden, the user cannot sort the values of the +## columns. +## ## @item icon ## Sets the icon of the window. Requires a string as value with the file path to ## an image, or one of the four stock icons: @@ -171,7 +177,7 @@ ## zenity_notification} ## @end deftypefn -function [val, status, tmp] = zenity_list(col, data, varargin) +function [val, status] = zenity_list(col, data, varargin) ## List of things that cannot be done: ## * editable cannot be set at the same time of checklist or radiolist @@ -206,7 +212,7 @@ if (nargin < 1) error ("'columns' argument is not optional.") elseif (nargin < 2) - error ("'data' argument must be a string.") + error ("'data' argument is not optional.") elseif (!iscell(col)) error ("'columns' argument must be a cell array.") elseif (!iscell(data)) @@ -286,11 +292,22 @@ options.separator = '--separator="/\\|/\\"'; # Will use /\|/\ as separator pre_cmd = sprintf("%s ", ... - options.title, options.width, options.height, ... - options.timeout, options.separator, options.text, ... - options.hide, options.print_col, options.multiple, ... - options.radio, options.check, options.editable, ... - options.icon, options.col, options.data); + options.title, ... + options.width, ... + options.height, ... + options.timeout, ... + options.separator, ... + options.text, ... + options.hide, ... + options.print_col, ... + options.multiple, ... + options.radio, ... + options.check, ... + options.editable, ... + options.icon, ... + options.col, ... + options.no_head, ... + options.data); cmd = sprintf ("zenity --list %s", pre_cmd); [status, output] = system(cmd); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2010-04-26 16:50:55
|
Revision: 7261 http://octave.svn.sourceforge.net/octave/?rev=7261&view=rev Author: carandraug Date: 2010-04-26 16:50:49 +0000 (Mon, 26 Apr 2010) Log Message: ----------- Small changes to make code easier to read. Modified Paths: -------------- trunk/octave-forge/main/zenity/inst/zenity_entry.m trunk/octave-forge/main/zenity/inst/zenity_file_selection.m trunk/octave-forge/main/zenity/inst/zenity_message.m trunk/octave-forge/main/zenity/inst/zenity_notification.m Modified: trunk/octave-forge/main/zenity/inst/zenity_entry.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_entry.m 2010-04-26 16:47:04 UTC (rev 7260) +++ trunk/octave-forge/main/zenity/inst/zenity_entry.m 2010-04-26 16:50:49 UTC (rev 7261) @@ -77,8 +77,14 @@ options = _zenity_options_ ("entry", varargin); pre_cmd = sprintf("%s ", ... - text, options.entry, options.title, options.password, ... - options.icon, options.width, options.height, options.timeout); + text, ... + options.entry, ... + options.title, ... + options.password, ... + options.icon, ... + options.width, ... + options.height, ... + options.timeout); cmd = sprintf("zenity --entry %s", pre_cmd); [status, output] = system(cmd); Modified: trunk/octave-forge/main/zenity/inst/zenity_file_selection.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_file_selection.m 2010-04-26 16:47:04 UTC (rev 7260) +++ trunk/octave-forge/main/zenity/inst/zenity_file_selection.m 2010-04-26 16:50:49 UTC (rev 7261) @@ -87,9 +87,16 @@ # It's also the fileseparator so filenames will always already start with a # '/' which is good since we can look for double '//' as separator for filepaths pre_cmd = sprintf("%s ", ... - options.directory, options.filename, options.height, ... - options.multiple, options.save, options.timeout, ... - options.title, options.width, options.filter, options.icon); + options.directory, ... + options.filename, ... + options.height, ... + options.multiple, ... + options.save, ... + options.timeout, ... + options.title, ... + options.width, ... + options.filter, ... + options.icon); cmd = sprintf("zenity --file-selection --separator=\"/\" %s", pre_cmd); [status, output] = system(cmd); Modified: trunk/octave-forge/main/zenity/inst/zenity_message.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_message.m 2010-04-26 16:47:04 UTC (rev 7260) +++ trunk/octave-forge/main/zenity/inst/zenity_message.m 2010-04-26 16:50:49 UTC (rev 7261) @@ -97,9 +97,16 @@ endif pre_cmd = sprintf("%s ", ... - options.type, text, options.wrap, options.title, ... - options.icon, options.width, options.height, ... - options.timeout, options.ok, options.cancel); + options.type, ... + text, ... + options.wrap, ... + options.title, ... + options.icon, ... + options.width, ... + options.height, ... + options.timeout, ... + options.ok, ... + options.cancel); cmd = sprintf("zenity %s", pre_cmd); [status, output] = system(cmd); Modified: trunk/octave-forge/main/zenity/inst/zenity_notification.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_notification.m 2010-04-26 16:47:04 UTC (rev 7260) +++ trunk/octave-forge/main/zenity/inst/zenity_notification.m 2010-04-26 16:50:49 UTC (rev 7261) @@ -142,7 +142,10 @@ ## with the new icon (the icon is also present on the messages, not only in ## the panel) pre_cmd = sprintf("%s", ... - options.icon, options.text, options.message, options.visible); + options.icon, ... + options.text, ... + options.message, ... + options.visible); try sta = fputs(handle, pre_cmd); fflush (handle); @@ -152,7 +155,9 @@ else options = _zenity_options_ ("new notification", varargin); pre_cmd = sprintf("%s ", ... - options.icon, options.text, options.timeout); + options.icon, ... + options.text, ... + options.timeout); cmd = sprintf("zenity --notification --listen %s", pre_cmd); try sta = popen(cmd, "w"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2010-04-26 18:53:04
|
Revision: 7262 http://octave.svn.sourceforge.net/octave/?rev=7262&view=rev Author: carandraug Date: 2010-04-26 18:52:58 +0000 (Mon, 26 Apr 2010) Log Message: ----------- Functins now call drawnow at the start, in similarity to the functions 'pause' and 'input'. zenity_notification now also fflush before fputs, just in case someone has been playing with the pipes. Modified Paths: -------------- trunk/octave-forge/main/zenity/inst/zenity_entry.m trunk/octave-forge/main/zenity/inst/zenity_file_selection.m trunk/octave-forge/main/zenity/inst/zenity_list.m trunk/octave-forge/main/zenity/inst/zenity_message.m trunk/octave-forge/main/zenity/inst/zenity_notification.m Modified: trunk/octave-forge/main/zenity/inst/zenity_entry.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_entry.m 2010-04-26 16:50:49 UTC (rev 7261) +++ trunk/octave-forge/main/zenity/inst/zenity_entry.m 2010-04-26 18:52:58 UTC (rev 7262) @@ -67,6 +67,11 @@ function [out, status] = zenity_entry(text, varargin) + ## Update figures so they are show before the dialog. To not be shown at this + ## step, turn them off with 'figure(N, "visible", "off") + ## This is similar to the functions input and pause + drawnow; + if (nargin < 1) error ("'text' argument is not optional") elseif (!ischar(text)) Modified: trunk/octave-forge/main/zenity/inst/zenity_file_selection.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_file_selection.m 2010-04-26 16:50:49 UTC (rev 7261) +++ trunk/octave-forge/main/zenity/inst/zenity_file_selection.m 2010-04-26 18:52:58 UTC (rev 7262) @@ -76,6 +76,11 @@ function [files, status] = zenity_file_selection(varargin) + ## Update figures so they are show before the dialog. To not be shown at this + ## step, turn them off with 'figure(N, "visible", "off") + ## This is similar to the functions input and pause + drawnow; + options = _zenity_options_ ("file selection", varargin); if ( !isempty(options.save) && (!isempty(options.multiple) || !isempty(options.directory)) ) Modified: trunk/octave-forge/main/zenity/inst/zenity_list.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_list.m 2010-04-26 16:50:49 UTC (rev 7261) +++ trunk/octave-forge/main/zenity/inst/zenity_list.m 2010-04-26 18:52:58 UTC (rev 7262) @@ -209,6 +209,11 @@ ## it's not so obvious how zenity will escape things, and same goes for the index ## function used to split the output + ## Update figures so they are show before the dialog. To not be shown at this + ## step, turn them off with 'figure(N, "visible", "off") + ## This is similar to the functions input and pause + drawnow; + if (nargin < 1) error ("'columns' argument is not optional.") elseif (nargin < 2) Modified: trunk/octave-forge/main/zenity/inst/zenity_message.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_message.m 2010-04-26 16:50:49 UTC (rev 7261) +++ trunk/octave-forge/main/zenity/inst/zenity_message.m 2010-04-26 18:52:58 UTC (rev 7262) @@ -82,6 +82,11 @@ function status = zenity_message(text, varargin) + ## Update figures so they are show before the dialog. To not be shown at this + ## step, turn them off with 'figure(N, "visible", "off") + ## This is similar to the functions input and pause + drawnow; + if (nargin < 1) error ("'text' argument is not optional") elseif (!ischar(text)) Modified: trunk/octave-forge/main/zenity/inst/zenity_notification.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_notification.m 2010-04-26 16:50:49 UTC (rev 7261) +++ trunk/octave-forge/main/zenity/inst/zenity_notification.m 2010-04-26 18:52:58 UTC (rev 7262) @@ -96,6 +96,11 @@ function sta = zenity_notification (varargin) + ## Update figures so they are show before the dialog. To not be shown at this + ## step, turn them off with 'figure(N, "visible", "off") + ## This is similar to the functions input and pause + drawnow; + ## If no arguments, open a new notification if ( nargin == 0 ) pipelining = 0; @@ -147,7 +152,10 @@ options.message, ... options.visible); try + ## just in case someone has been playing with the pipe, flush it before + fflush (handle); sta = fputs(handle, pre_cmd); + ## make sure there's no input buffered fflush (handle); catch sta = -1; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2010-04-27 04:14:40
|
Revision: 7264 http://octave.svn.sourceforge.net/octave/?rev=7264&view=rev Author: carandraug Date: 2010-04-27 04:14:34 +0000 (Tue, 27 Apr 2010) Log Message: ----------- API changed to the standard style. Added the new options: hide cancel, auto kill, icon, timeout, height and width. Changed help text to reflect new API. Uses the function _zenity_options_ for the processing of the options. Updated license for GPL v3 or later (at your option). Modified Paths: -------------- trunk/octave-forge/main/zenity/inst/_zenity_options_.m trunk/octave-forge/main/zenity/inst/zenity_progress.m Modified: trunk/octave-forge/main/zenity/inst/_zenity_options_.m =================================================================== --- trunk/octave-forge/main/zenity/inst/_zenity_options_.m 2010-04-26 22:08:25 UTC (rev 7263) +++ trunk/octave-forge/main/zenity/inst/_zenity_options_.m 2010-04-27 04:14:34 UTC (rev 7264) @@ -23,23 +23,16 @@ ## ## @table @samp ## @item calendar -## If used by zenity_calendar ## @item entry -## If used by zenity_entry ## @item file selection -## If used by zenity_file_selection ## @item list -## If used by zenity_list ## @item message -## If used by zenity_message -## @item notification -## If used by zenity_notification -## @item progress -## If used by zenity_progress +## @item new notification +## @item piped notification +## @item new progress +## @item piped progress ## @item scale -## If used by zenity_scale ## @item text info -## If used by zenity_text_info ## @end table ## ## @seealso{zenity_calendar, zenity_entry, zenity_file_selection, zenity_list, @@ -70,7 +63,11 @@ op.text = ""; elseif (strcmpi(dialog, "piped notification")) op.text = op.message = op.visible = ""; - elseif (strcmpi(dialog, "progress")) + elseif (strcmpi(dialog, "new progress")) + op.percent = op.text = op.auto_close = ""; + op.pulsate = op.auto_kill = op.hide_cancel = ""; + elseif (strcmpi(dialog, "piped progress")) + op.percent = op.text = ""; elseif (strcmpi(dialog, "scale")) elseif (strcmpi(dialog, "text info")) else @@ -84,7 +81,7 @@ ## Identifies when it's being called to process stuff to send through pipes ## since they'll have major differences in the processing - if ( strcmpi(dialog, "piped notification") ) + if ( strcmpi(dialog, "piped notification") || strcmpi(dialog, "piped progress") ) pipelining = 1; else pipelining = 0; @@ -121,13 +118,13 @@ op.title = sprintf('--title="%s"', value); elseif (strcmpi(param,"width")) # General - width narg = sanity_checks ("scalar", param, value, op.width, narg); - op.width = sprintf('--width="%s"', num2str(value)); + op.width = sprintf('--width="%i"', value); elseif (strcmpi(param,"height")) # General - height narg = sanity_checks ("scalar", param, value, op.height, narg); - op.height = sprintf('--height="%s"', num2str(value)); + op.height = sprintf('--height="%i"', value); elseif (strcmpi(param,"timeout")) # General - timeout narg = sanity_checks ("scalar", param, value, op.timeout, narg); - op.timeout = sprintf('--timeout="%s"', num2str(value)); + op.timeout = sprintf('--timeout="%i"', value); elseif (strcmpi(param,"icon")) # General - icon narg = sanity_checks ("char", param, value, op.icon, narg); if (strcmpi(value, "error")) @@ -220,7 +217,7 @@ if (strcmpi(param,"text")) # List - text narg = sanity_checks ("char", param, value, op.text, narg); op.text = sprintf('--text="%s"', value); - elseif (strcmpi(param,"no headers")) # List - no headers + elseif (strcmpi(param,"no headers")) # List - no headers narg = sanity_checks ("indie", param, value, op.no_head, narg); op.no_head = "--hide-header"; elseif (strcmpi(param,"editable")) # List - editable @@ -229,16 +226,16 @@ elseif (strcmpi(param,"multiple")) # List - multiple narg = sanity_checks ("indie", param, value, op.multiple, narg); op.multiple = "--multiple"; - elseif (strcmpi(param,"radiolist")) # List - radiolist + elseif (strcmpi(param,"radiolist")) # List - radiolist narg = sanity_checks ("indie", param, value, op.radio, narg); op.radio = "--radiolist"; - elseif (strcmpi(param,"checklist")) # List - checklist + elseif (strcmpi(param,"checklist")) # List - checklist narg = sanity_checks ("indie", param, value, op.check, narg); op.check = "--checklist"; - elseif (strcmpi(param,"numeric output")) # List - numeric output + elseif (strcmpi(param,"numeric output")) # List - numeric output narg = sanity_checks ("char", param, value, op.num_out, narg); op.num_out = value; - elseif (strcmpi(param,"hide column")) # List - hide column + elseif (strcmpi(param,"hide column")) # List - hide column narg = sanity_checks ("num", param, value, op.hide, narg); op.hide_min = min(value(:)); op.hide_max = max(value(:)); @@ -267,6 +264,35 @@ error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); endif + ## Process options for ZENITY_PROGRESS (creating new) + elseif ( strcmpi(dialog, "new progress") ) + if (strcmpi(param,"text")) # Progress - text + narg = sanity_checks ("char", param, value, op.text, narg); + op.text = sprintf('--text="%s"', value); + elseif (strcmpi(param,"auto close")) # Progress - auto close + narg = sanity_checks ("indie", param, value, op.auto_close, narg); + op.auto_close = "--auto-close"; + elseif (strcmpi(param,"auto kill")) # Progress - auto close + narg = sanity_checks ("indie", param, value, op.auto_kill, narg); + op.auto_kill = "--auto-kill"; + elseif (strcmpi(param,"hide cancel")) # Progress - hide cancel + narg = sanity_checks ("indie", param, value, op.hide_cancel, narg); + op.hide_cancel = "--no-cancel"; + elseif (strcmpi(param,"pulsate")) # Progress - pulsate + narg = sanity_checks ("indie", param, value, op.pulsate, narg); + op.pulsate = "--pulsate"; + elseif (strcmpi(param,"percentage")) # Progress - percentage + narg = sanity_checks ("scalar", param, value, op.percent, narg); + if (value < 0 || value > 100) + error("Percentage must be between '0' and '100' but it was set to '%g'", value) + endif + ## floor must be used to round, so to avoid returning 100, which in the + ## the case of having auto-close set, would close the dialog too soon + op.percent = sprintf('--percentage="%i"', floor(value)); + else + error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); + endif + else error ("Parameter '%s' is not supported.", param); endif @@ -320,6 +346,23 @@ error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); endif + ## Process options for ZENITY_PROGRESS (pipelining) + elseif ( strcmpi(dialog, "piped progress") ) + if (strcmpi(param,"text")) # Progress - text + narg = sanity_checks ("char", param, value, op.text, narg); + op.text = sprintf('# %s', value); + elseif (strcmpi(param,"percentage")) # Progress - percentage + narg = sanity_checks ("scalar", param, value, op.percent, narg); + if (value < 0 || value > 100) + error("Percentage must be between '0' and '100' but it was set to '%g'", value) + endif + ## floor must be used to round, so to avoid returning 100, which in the + ## the case of having auto-close set, would close the dialog too soon + op.percent = sprintf('%i', floor(value)); + else + error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); + endif + else error ("Parameter '%s' is not supported.", param); endif Modified: trunk/octave-forge/main/zenity/inst/zenity_progress.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_progress.m 2010-04-26 22:08:25 UTC (rev 7263) +++ trunk/octave-forge/main/zenity/inst/zenity_progress.m 2010-04-27 04:14:34 UTC (rev 7264) @@ -1,8 +1,9 @@ -## Copyright (C) 2006 S\xF8ren Hauberg +## Copyright (C) 2006 S\xF8ren Hauberg +## Copyright (C) 2010 Carn\xEB Draug ## ## 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 +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, @@ -14,74 +15,164 @@ ## along with this program; If not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} @var{h} = zenity_progress(@var{title}, @var{option1}, @var{option2}) -## @deftypefnx {Function File} zenity_progress(@var{h}, @var{progress}) -## @deftypefnx {Function File} zenity_progress(@var{h}, @var{progress}, @var{text}) -## Displays a graphical progress bar. -## If the first argument is either non-present or a string, a new progress bar is -## created and a handle is returned. If the first argument is a string it will be -## used as the title of the progress bar. The two optional arguments @var{option1} -## and @var{option2} can be +## @deftypefn {Function File} @var{h} = zenity_progress +## @deftypefnx {Function File} @var{h} = zenity_progress (@var{param1}, @var{value1}, ...) +## @deftypefnx {Function File} @var{s} = zenity_progress (@var{h}, @var{param1}, @var{value1}, ...) +## @deftypefnx {Function File} @var{s} = zenity_progress (@var{h}, "close") +## Displays a progress bar dialog using Zenity. +## +## The first and second forms of the @command{zenity_progress} function creates +## a new progress bar dialog with whatever parameters are set, and return the +## handle @var{h} for later interaction with the progress bar or @code{-1} +## on error. All @var{parameters} for this form are optional but if given, may +## require a corresponding @var{value}. All possibilities are: +## ## @table @samp -## @item auto-close -## The progress bar will be closed when it reaches 100. +## @item percentage +## Sets the initial value of the progress bar. Requires a scalar between @code{0} and +## @code{100} as value. +## +## @item text +## Sets the text of the dialog window. Requires a string as value. +## +## @item auto close +## When the bar reachs @code{100}, automatically closes the dialog window. Requires no value. +## +## @item auto kill +## If the @option{cancel} button is pressed, it will kill the parent process +## (@abbr{i.e.} the program that is calling the function). Requires no value. +## +## @item hide cancel +## Hides the @option{cancel} button from the dialog window (the user can still +## close the window with its functions). Requires no value. +## ## @item pulsate -## The progress bar will pulsate. +## The progress bar will be pulsing instead of showing a bar increasing with +## percentage. Setting the percentage, will have no effect. Requires no value. +## +## @item icon +## Sets the icon of the window. Requires a string as value with the file path to +## an image, or one of the four stock icons: +## +## @table @samp +## @item error +## @item info +## @item question +## @item warning ## @end table ## -## If the first argument is a handle to a progress bar and the second -## argument is an integer, the progress bar will set its current value -## to the given integer. If the second argument is a string, the text -## of the progress bar will be set to the given string. -## It is possible to pass both an integer and a string to the function -## in one function call. +## @item timeout +## Sets the time in seconds after which the dialog is closed. Requires a scalar +## as value. ## -## @seealso{zenity_calendar, zenity_list, zenity_entry, zenity_message, -## zenity_text_info, zenity_file_selection, zenity_notification} +## @item title +## Sets the title of the window. Requires a string as value. +## +## @item height +## Sets the height of the dialog window. Requires a scalar as value. +## +## @item width +## Sets the width of the dialog window. Requires a scalar as value. +## +## @end table +## +## The third form of the @command{zenity_progress} function changes the +## parameteres of the existing progress bar given the handle @var{h}. The only +## parameters allowed are @option{percentage} and @option{text}. Returns @code{0} on +## success and @code{-1} on error. +## +## The fourth form of the @command{zenity_progress} function finishes the progress +## bar, given the handle @var{h} followed by the string @code{close}. This will +## move the progress bar to the end and wait for the user to press +## @option{OK}. To avoid this behaviour, @option{auto close} can be set when +## creating the progress bar. Returns @code{0} on success and @code{-1} on error. +## +## @strong{Note:} ultimately, the availability of some parameters is dependent +## on the user's system preferences and zenity version. +## +## @seealso{zenity_notification, zenity_message} ## @end deftypefn -function pid = zenity_progress(h, progress, text) - ## Create a progress bar? - if (nargin == 0 || (nargin >= 1 && ischar(h))) - ## Title - title = options = ""; - if (nargin == 1) - title = sprintf('--title="%s" --text="%s"', h, h); - endif - ## Options - if (nargin > 1 && ischar(progress)) - if (strcmpi(progress, "auto-close")) - options = sprintf("%s --auto-close", options); - elseif (strcmpi(progress, "pulsate")) - options = sprintf("%s --pulsate", options); +function sta = zenity_progress(varargin) + + ## If no arguments, open a new progress bar + if ( nargin == 0 ) + pipelining = 0; + ## If first argument is the fid for an already open progress, remove it + ## from varargin (remove it != empty it) before feeding to _zenity_options_ + elseif (isscalar (varargin{1}) && isnumeric(varargin{1}) ) + pipelining = 1; + handle = varargin{1}; + varargin(1) = []; + elseif ( ischar(varargin{1}) && strcmpi(varargin{1}, "close") ) + error("Argument to close was given, but not the handle.") + else + pipelining = 0; + endif + + if (pipelining) + ## If the first argument after the handle is the string 'close' say 'bye bye' + if ( ischar(varargin{1}) && strcmpi(varargin{1}, "close") ) + if (nargin > 2) + warning ("There's %g argument(s) after '%s' which will be ignored", (nargin-2), varargin{1}) endif + try + sta = pclose(handle); + catch + sta = -1; + end_try_catch + return endif - if (nargin > 2 && ischar(text)) - if (strcmpi(text, "auto-close")) - options = sprintf("%s --auto-close", options); - elseif (strcmpi(text, "pulsate")) - options = sprintf("%s --pulsate", options); - endif - endif - ## Start the process - pid = popen(["zenity --progress ", title, " ", options], "w"); - ## Handle an existing process - elseif (nargin > 0 && isnumeric(h)) - out = ""; - if (nargin > 1 && isnumeric(progress)) - out = sprintf("%s\n%d\n", out, progress); - endif - if (nargin > 1 && ischar(progress)) - out = sprintf("%s\n#%s\n", out, progress); - endif - if (nargin > 2 && isnumeric(text)) - out = sprintf("%s\n%d\n", out, text); - endif - if (nargin > 2 && ischar(text)) - out = sprintf("%s\n#%s\n", out, text); - endif - fputs(h, out); + options = _zenity_options_ ("piped progress", varargin); + ## Must add the new line only if they exist or zenity will complain about + ## not being able to parse some of the lines. + ## Atention to whitespace. First character must be digit or # + ## " #test text" <-- no error, but does nothing + ## "#test text" <-- changes text for 'test text + ## "# test text" <-- exactly the same as above + options.text = add_newline (options.text); + options.percent = add_newline (options.percent); + + pre_cmd = sprintf("%s", ... + options.text, ... + options.percent); + try + ## just in case someone has been playing with the pipe, flush it before + fflush (handle); + sta = fputs(handle, pre_cmd); + ## make sure there's no input buffered + fflush (handle); + catch + sta = -1; + end_try_catch else - print_usage(); + options = _zenity_options_ ("new progress", varargin); + pre_cmd = sprintf("%s ", ... + options.title, ... + options.width, ... + options.height,... + options.timeout, ... + options.icon, ... + options.text, ... + options.percent, ... + options.auto_close, ... + options.pulsate, ... + options.auto_kill,... + options.hide_cancel); + cmd = sprintf("zenity --progress %s", pre_cmd); + try + sta = popen(cmd, "w"); + catch + sta = -1 + end_try_catch endif + endfunction + +### Add new lines only if the option exist and replace other newlines that may be +function val = add_newline (val) + if(!isempty(val)) + val = strrep (val, "\n", " "); + val = sprintf("%s\n", val); + endif +endfunction This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2010-04-27 04:39:43
|
Revision: 7265 http://octave.svn.sourceforge.net/octave/?rev=7265&view=rev Author: carandraug Date: 2010-04-27 04:39:37 +0000 (Tue, 27 Apr 2010) Log Message: ----------- Improved documentation. Modified Paths: -------------- trunk/octave-forge/main/zenity/inst/zenity_entry.m trunk/octave-forge/main/zenity/inst/zenity_file_selection.m trunk/octave-forge/main/zenity/inst/zenity_list.m trunk/octave-forge/main/zenity/inst/zenity_message.m trunk/octave-forge/main/zenity/inst/zenity_notification.m Modified: trunk/octave-forge/main/zenity/inst/zenity_entry.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_entry.m 2010-04-27 04:14:34 UTC (rev 7264) +++ trunk/octave-forge/main/zenity/inst/zenity_entry.m 2010-04-27 04:39:37 UTC (rev 7265) @@ -30,19 +30,24 @@ ## an empty string, despite whatever text was in the entry field. ## ## All @var{parameters} are optional, but if given, may require a corresponding -## @var{value1}. All possible parameters are: +## @var{value}. All possible parameters are: ## ## @table @samp ## @item entry ## Sets the default text in the entry field. Requires a string as value. +## ## @item title ## Sets the title of the window. Requires a string as value. +## ## @item password ## Hides the text in the text entry field. No value is required. +## ## @item width ## Sets the width of the dialog window. Requires a scalar as value. +## ## @item height ## Sets the height of the dialog window. Requires a scalar as value. +## ## @item icon ## Sets the icon of the window. Requires a string as value with the file path to ## an image, or one of the four stock icons: Modified: trunk/octave-forge/main/zenity/inst/zenity_file_selection.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_file_selection.m 2010-04-27 04:14:34 UTC (rev 7264) +++ trunk/octave-forge/main/zenity/inst/zenity_file_selection.m 2010-04-27 04:39:37 UTC (rev 7265) @@ -31,17 +31,23 @@ ## @table @samp ## @item directory ## Activates directory-only selection. No value is required. +## ## @item filename ## Sets the default selected file. Requires a string as value. +## ## @item filter ## Sets a filename filter. Requires a string as value. Multiple filters can be -## set with multiple calls for this setting. The following example shows how to -## block users from selecting files that don't end in `.txt' or `.m': +## set with multiple calls of this parameter, or one filter can be made with +## multiple regexp. Filters can also be named which blocks the user from actualy +## seeing the filter.. The following examples shows how to create two filters, +## two named filters, one filter for two different extensions, and the same +## filter but named: ## @example ## @code{zenity_file_selection ("filter", "*.txt", "filter", "*.m")} +## @code{zenity_file_selection ("filter", "text files| *.txt", "filter", "octave files| *.m")} +## @code{zenity_file_selection ("filter", "*.tif *.png")} +## @code{zenity_file_selection ("filter", "Images | *.tif *.png")} ## @end example -## @item height -## Sets the height of the dialog window. Requires a scalar as value. ## ## @item icon ## Sets the icon of the window. Requires a string as value with the file path to @@ -57,13 +63,20 @@ ## @item multiple ## Allows selection of multiple files. No value is required. @var{files} will ## hold a cell array, even if user selects only one or no file. +## ## @item save ## The file selection dialog is a dialog for saving files. No value is required. +## ## @item timeout ## Sets the time in seconds after which the dialog is closed. Requires a scalar ## as value. +## ## @item title ## Sets the title of the window. Requires a string as value. +## +## @item height +## Sets the height of the dialog window. Requires a scalar as value. +## ## @item width ## Sets the width of the dialog window. Requires a scalar as value. ## @end table Modified: trunk/octave-forge/main/zenity/inst/zenity_list.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_list.m 2010-04-27 04:14:34 UTC (rev 7264) +++ trunk/octave-forge/main/zenity/inst/zenity_list.m 2010-04-27 04:39:37 UTC (rev 7265) @@ -35,11 +35,11 @@ ## @end example ## ## @var{selected} holds a string with the value of the first column of the -## selected row. If the parameter @code{multiple} is set, or the @code{print +## selected row. If the parameter @option{multiple} is set, or the @option{print ## column} has multiple values, @var{selected} is a cell array of strings. If a ## value is empty, it returns @code{(null)}. The values of @var{selected} may ## come in any order since the user is allowed to sort them. Instead, use of the -## parameter @code{hide column}, together with a numbered column is recomended. +## parameter @option{hide column}, together with a numbered column is recomended. ## ## In the case no value has been selected when the window closes, @var{selected} ## will hold an empty string or cell array, the same size as it would be @@ -58,13 +58,13 @@ ## The first column in the list will be of check buttons. No value is required. If ## set, the first column of @var{data} must consist of strings with values ## @code{true} or @code{false} and the rows with values of @code{true} will be -## selected by default. This parameter cannot be set together with the -## parameters @code{editable}.or @code{checklist}. It automatically sets -## the parameter @code{multiple}. If set, @var{selected} will hold the +## selected by default. This parameter cannot be set together with +## @option{editable}.or @option{checklist}. It automatically sets +## the parameter @option{multiple}. @var{selected} will return the ## values for the second column of data. ## ## The following example creates a list with the first and second row selected -## by default. If user presses OK, it will return a cell array with two rows, +## by default. If user press @option{OK}, it will return a cell array with two rows, ## with the strings @code{FreeBSD} and @code{Linux}. ## ## @example @@ -79,7 +79,7 @@ ## ## @item editable ## Allows the user to edit the values. No value is required. It cannot be set -## together with the parameters @code{checklist} or @code{radiolist}. Since a +## together with @option{checklist} or @option{radiolist}. Since a ## value can be erased, if an empty value is selected, it returns @code{(null)}. ## ## @item height @@ -87,10 +87,10 @@ ## ## @item hide column ## Hides the specified columns from the user. Requires a numeric data type as -## value. Multiple columns can be selected with ranges or matrixes. If the -## parameters @code{radiolist} or @code{checklist} are set, the first +## value. Multiple columns can be selected with ranges or matrixes. If +## @option{radiolist} or @option{checklist} are set, the first ## column cannot cannot be hidden. The values of these columns will still be -## present in the output @var{selected}. +## present in @var{selected}. ## ## The following example will show a list with foods only and a column with ## radio buttons. It will return the third column of @var{data}, the one that is @@ -124,8 +124,7 @@ ## ## @item multiple ## Allows multiple rows to be selected. No value is required. It cannot be set -## together with parameter @code{radiolist}. and it is automatically set when -## parameter @code{checklist} is set. +## with @option{radiolist} and is automatically set when @option{checklist} is set. ## ## @item numeric output ## Returns @var{selected} as a matrix and numeric values (double precision type) @@ -134,26 +133,25 @@ ## ## @table @samp ## @item error -## Abort the function and return an error if unable to covert into numeric form. +## Abort the function and give an error if unable to covert into numeric form. ## @item nan -## Returns NaN for the values it is unable to convert. +## Returns @code{NaN} for the values it is unable to convert. ## @end table ## ## @item print column ## The numbers of the columns whose values should be returned. Requires a numeric ## data type as value. Multiple columns can be selected with ranges or matrixes, -## and all columns can be selected with the scalar 0 (zero). If the -## parameters @code{radiolist} or @code{checklist} are set, the first +## and all columns can be selected with the scalar @code{0}. If the +## @option{radiolist} or @option{checklist} are set, the first ## column cannot cannot be returned. ## ## @item radiolist ## The first column in the list will be of radio buttons. No value is required. If ## set, the first column of @var{data} must be consiste of strings with values ## @code{true} or @code{false}. If a row has a value of @code{true}, and only -## one row can have that value, it will be selected by default. This parameter -## cannot be set together with the parameters @code{multiple}, -## @code{editable}.or @code{checklist}. If set, @var{selected} will hold the -## values for the second column of data. +## one row can have that value, it will be selected by default. Cannot be set +## with @option{multiple}, @option{editable}.or @option{checklist}. @var{selected} +## will return the values for the second column of data. ## ## @item text ## Sets the dialog text. Requires a string as value. Modified: trunk/octave-forge/main/zenity/inst/zenity_message.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_message.m 2010-04-27 04:14:34 UTC (rev 7264) +++ trunk/octave-forge/main/zenity/inst/zenity_message.m 2010-04-27 04:39:37 UTC (rev 7265) @@ -57,17 +57,23 @@ ## @item OK button ## Sets the the text to show on the @option{OK} button if type of message is set ## to @option{question}. Requires a string as value. +## ## @item cancel button ## Sets the the text to show on the @option{cancel} button if type of message is ## set to @option{question}. Requires a string as value. +## ## @item title ## Sets the title of the window. Requires a string as value. +## ## @item no-wrap ## Disables text wrapping. No value is required. +## ## @item width ## Sets the width of the dialog window. Requires a scalar as value. +## ## @item height ## Sets the height of the dialog window. Requires a scalar as value. +## ## @item timeout ## Sets the time in seconds after which the dialog is closed. Requires a scalar ## as value. Modified: trunk/octave-forge/main/zenity/inst/zenity_notification.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_notification.m 2010-04-27 04:14:34 UTC (rev 7264) +++ trunk/octave-forge/main/zenity/inst/zenity_notification.m 2010-04-27 04:39:37 UTC (rev 7265) @@ -22,23 +22,23 @@ ## Displays an icon with a text in the notification area, and pop up messages ## using Zenity. ## -## The first and second forms of the @code{zenity_notification} function creates +## The first and second forms of the @command{zenity_notification} function creates ## a new notification icon with whatever parameters are set, and return the ## handle @var{h} for later interaction with the notification icon or @code{-1} ## on error. ## -## The third form of the @code{zenity_notification} function changes the +## The third form of the @command{zenity_notification} function changes the ## parameteres of the existing icon and/or displays popup messages given the ## handle @var{h}. Returns @code{0} on success and @code{-1} on error. ## -## The fourth form of the @code{zenity_notification} function closes the +## The fourth form of the @command{zenity_notification} function closes the ## notification icon given the handle @var{h} followed by the string ## @code{close}. Returns @code{0} on success and @code{-1} on error. ## ## The following example, creates a notification info icon in the notification ## panel that shows the text @samp{working} when the mouse is over the ## icon. Then shows a pop up message saying @samp{step 1 started} followed by -## another saying @samp{"error during step 1} all the while changing the icon +## another saying @samp{error during step 1} all the while changing the icon ## from info to error. It then finnaly closes the icon, removing it from the ## notification panel. Trough all the example, the text stays @samp{working}. ## @@ -75,7 +75,7 @@ ## @item text ## Sets the notification text. Requires a string as value. This text appears ## when the mouse is placed over the icon. To show a popup notification, use -## @code{message}. +## @option{message}. ## ## @item timeout ## Sets the time in seconds after which the dialog is closed. Requires a scalar @@ -83,9 +83,8 @@ ## ## @item visible ## Sets the visibility pf the icon in the notification area. Requires the string -## @code{'on'} or @code{'off'} as value and can only be used if the notification -## icon already exists. @code{'on'} makes the icon visible, while @code{'off'} -## makes it invisible. +## @code{on} or @code{off} as value and can only be used if the notification +## icon already exists. ## @end table ## ## @strong{Note:} ultimately, the availability of some parameters is dependent @@ -147,7 +146,7 @@ ## with the new icon (the icon is also present on the messages, not only in ## the panel) pre_cmd = sprintf("%s", ... - options.icon, ... + options.icon, ... # This one (icon), must come first options.text, ... options.message, ... options.visible); @@ -163,7 +162,7 @@ else options = _zenity_options_ ("new notification", varargin); pre_cmd = sprintf("%s ", ... - options.icon, ... + options.icon, ... options.text, ... options.timeout); cmd = sprintf("zenity --notification --listen %s", pre_cmd); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2010-04-28 01:10:23
|
Revision: 7272 http://octave.svn.sourceforge.net/octave/?rev=7272&view=rev Author: carandraug Date: 2010-04-28 01:10:16 +0000 (Wed, 28 Apr 2010) Log Message: ----------- _zenity_options_ function goes private. Modified Paths: -------------- trunk/octave-forge/main/zenity/inst/zenity_entry.m trunk/octave-forge/main/zenity/inst/zenity_file_selection.m trunk/octave-forge/main/zenity/inst/zenity_list.m trunk/octave-forge/main/zenity/inst/zenity_message.m trunk/octave-forge/main/zenity/inst/zenity_notification.m trunk/octave-forge/main/zenity/inst/zenity_progress.m Added Paths: ----------- trunk/octave-forge/main/zenity/inst/private/ trunk/octave-forge/main/zenity/inst/private/zenity_options.m Removed Paths: ------------- trunk/octave-forge/main/zenity/inst/_zenity_options_.m Deleted: trunk/octave-forge/main/zenity/inst/_zenity_options_.m =================================================================== --- trunk/octave-forge/main/zenity/inst/_zenity_options_.m 2010-04-27 13:19:51 UTC (rev 7271) +++ trunk/octave-forge/main/zenity/inst/_zenity_options_.m 2010-04-28 01:10:16 UTC (rev 7272) @@ -1,441 +0,0 @@ -## Copyright (C) 2010 Carnë Draug -## -## 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 3 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{options} = _zenity_options (@var{dialog}, @var{param1}, @var{value1}, ...) -## This function is not intended for users but for the other functions of the -## zenity package. Returns the structure @var{options} that holds the processed -## @var{param} and @var{value} for the function of the zenity package -## @var{dialog}, or the defaults when they are not defined.. @var{dialog} must -## be a string and one of the following: -## -## @table @samp -## @item calendar -## @item entry -## @item file selection -## @item list -## @item message -## @item new notification -## @item piped notification -## @item new progress -## @item piped progress -## @item scale -## @item text info -## @end table -## -## @seealso{zenity_calendar, zenity_entry, zenity_file_selection, zenity_list, -## zenity_message, zenity_notification, zenity_progress, zenity_scale, -## zenity_text_info} -## @end deftypefn - -function op = _zenity_options_ (dialog, varargin) - - varargin = varargin{1}; # because other functions varargin is this varargin - - op.title = op.width = op.height = op.timeout = op.icon = ""; - if ( !ischar(dialog) ) - error ("Type of dialog should be a string"); - elseif (strcmpi(dialog, "calendar")) - elseif (strcmpi(dialog, "entry")) - op.password = op.entry = ""; - elseif (strcmpi(dialog, "file selection")) - op.directory = op.filename = op.filter = op.multiple = op.save = ""; - elseif (strcmpi(dialog, "list")) - op.separator = op.text = op.hide = op.print_col = op.no_head = ""; - op.multiple = op.radio = op.check = op.editable = ""; - op.hide_max = op.hide_min = op.print_max = op.print_min = ""; - op.print_numel = op.num_out = ""; - elseif (strcmpi(dialog, "message")) - op.type = op.wrap = op.ok = op.cancel = ""; - elseif (strcmpi(dialog, "new notification")) - op.text = ""; - elseif (strcmpi(dialog, "piped notification")) - op.text = op.message = op.visible = ""; - elseif (strcmpi(dialog, "new progress")) - op.percent = op.text = op.auto_close = ""; - op.pulsate = op.auto_kill = op.hide_cancel = ""; - elseif (strcmpi(dialog, "piped progress")) - op.percent = op.text = ""; - elseif (strcmpi(dialog, "scale")) - elseif (strcmpi(dialog, "text info")) - else - error ("The type of dialog '%s' is not supported", dialog); - endif - - ## In case no options were set, returns the empty strings - if (numel(varargin) == 1 && isempty(varargin{1})) - return - endif - - ## Identifies when it's being called to process stuff to send through pipes - ## since they'll have major differences in the processing - if ( strcmpi(dialog, "piped notification") || strcmpi(dialog, "piped progress") ) - pipelining = 1; - else - pipelining = 0; - endif - - ## Here's the guidelines for the processing: - ## - the parameteres and values are case insensitive - ## - if a parameter is being defined twice, return an error - ## - if a parameter requires a value but this is not given, return an error - ## - check if the rigth type of value is given (char or scalar) and return an - ## error if not - - narg = 1; - ## This will ONLY process the input when the output won't be send through a - ## pipe. See the next while block for that. - while (narg <= numel (varargin)) - if (pipelining) - break # Move to the next while to process the input - endif - param = varargin{narg++}; - - if (narg <= numel(varargin)) # Check if we are already in the last index - value = varargin{narg}; # this is only for readability later on - else # Writing varargin{narg} in all conditions - value = ""; # is a pain and makes it even more confusing - endif - - if ( !ischar(param) ) - error ("All parameters must be strings."); - - ## Process ALL GENERAL OPTIONS first - elseif (strcmpi(param,"title")) # General - title - narg = sanity_checks ("char", param, value, op.title, narg); - op.title = sprintf('--title="%s"', value); - elseif (strcmpi(param,"width")) # General - width - narg = sanity_checks ("scalar", param, value, op.width, narg); - op.width = sprintf('--width="%i"', value); - elseif (strcmpi(param,"height")) # General - height - narg = sanity_checks ("scalar", param, value, op.height, narg); - op.height = sprintf('--height="%i"', value); - elseif (strcmpi(param,"timeout")) # General - timeout - narg = sanity_checks ("scalar", param, value, op.timeout, narg); - op.timeout = sprintf('--timeout="%i"', value); - elseif (strcmpi(param,"icon")) # General - icon - narg = sanity_checks ("char", param, value, op.icon, narg); - if (strcmpi(value, "error")) - op.icon = '--window-icon="error"'; - elseif (strcmpi(value, "info")) - op.icon = '--window-icon="info"'; - elseif (strcmpi(value, "question")) - op.icon = '--window-icon="question"'; - elseif (strcmpi(value, "warning")) - op.icon = '--window-icon="warning"'; - else - op.icon = sprintf('--window-icon="%s"', value); - endif - - ## Process options for ZENITY_ENTRY - elseif ( strcmpi(dialog, "entry") ) - if (strcmpi(param,"entry")) # Entry - entry text - narg = sanity_checks ("char", param, value, op.entry, narg); - op.entry = sprintf('--entry-text="%s"', value); - elseif (strcmpi(param,"password")) # Entry - password - narg = sanity_checks ("indie", param, value, op.password, narg); - op.password = "--hide-text"; - else - error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); - endif - - ## Process options for ZENITY_FILE_SELECTION - elseif ( strcmpi(dialog, "file selection") ) - if (strcmpi(param,"directory")) # File selection - directory - narg = sanity_checks ("indie", param, value, op.directory, narg); - op.directory = "--directory"; - elseif (strcmpi(param,"filename")) # File selection - filename - narg = sanity_checks ("char", param, value, op.filename, narg); - op.filename = sprintf('--filename="%s"', value); - elseif (strcmpi(param,"filter")) # File selection - file filter - narg = sanity_checks ("multiple-char", param, value, op.directory, narg); - op.filter = sprintf('%s --file-filter="%s"', op.filter, value); - elseif (strcmpi(param,"multiple")) # File selection - multiple - narg = sanity_checks ("indie", param, value, op.multiple, narg); - op.multiple = "--multiple"; - elseif (strcmpi(param,"overwrite")) # File selection - overwrite - narg = sanity_checks ("indie", param, value, op.overwrite, narg); - op.overwrite = "--confirm-overwrite"; - elseif (strcmpi(param,"save")) # File selection - save - narg = sanity_checks ("indie", param, value, op.save, narg); - op.save = "--save"; - else - error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); - endif - - ## Process options for ZENITY_MESSAGE - elseif ( strcmpi(dialog, "message") ) - if (strcmpi(param,"type")) # Message - type - narg = sanity_checks ("valueless", param, value, op.type, narg); - if (strcmpi(value,"error")) - op.type = "--error"; - elseif (strcmpi(value,"info")) - op.type = "--info"; - elseif (strcmpi(value,"question")) - op.type = "--question"; - elseif (strcmpi(value,"warning")) - op.type = "--warning"; - else - error ("Non supported type of message dialog '%s'", value); - endif - elseif (strcmpi(param,"wrap")) # Message - wrap - narg = sanity_checks ("indie", param, value, op.wrap, narg); - op.wrap = "--no-wrap"; - elseif (strcmpi(param,"ok button")) # Message - OK button - narg = sanity_checks ("char", param, value, op.ok, narg); - op.ok = sprintf('--ok-label="%s"', value); - elseif (strcmpi(param,"cancel button")) # Message - cancel button - narg = sanity_checks ("char", param, value, op.cancel, narg); - op.cancel = sprintf('--cancel-label="%s"', value); - else - error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); - endif - - ## Process options for ZENITY_NOTIFICATION (creating new) - elseif ( strcmpi(dialog, "new notification") ) - if (strcmpi(param,"text")) # Notification - text - narg = sanity_checks ("char", param, value, op.text, narg); - op.text = sprintf('--text="%s"', value); - else - error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); - endif - - ## Process options for ZENITY_LIST - elseif ( strcmpi(dialog, "list") ) - if (strcmpi(param,"text")) # List - text - narg = sanity_checks ("char", param, value, op.text, narg); - op.text = sprintf('--text="%s"', value); - elseif (strcmpi(param,"no headers")) # List - no headers - narg = sanity_checks ("indie", param, value, op.no_head, narg); - op.no_head = "--hide-header"; - elseif (strcmpi(param,"editable")) # List - editable - narg = sanity_checks ("indie", param, value, op.editable, narg); - op.editable = "--editable"; - elseif (strcmpi(param,"multiple")) # List - multiple - narg = sanity_checks ("indie", param, value, op.multiple, narg); - op.multiple = "--multiple"; - elseif (strcmpi(param,"radiolist")) # List - radiolist - narg = sanity_checks ("indie", param, value, op.radio, narg); - op.radio = "--radiolist"; - elseif (strcmpi(param,"checklist")) # List - checklist - narg = sanity_checks ("indie", param, value, op.check, narg); - op.check = "--checklist"; - elseif (strcmpi(param,"numeric output")) # List - numeric output - narg = sanity_checks ("char", param, value, op.num_out, narg); - op.num_out = value; - elseif (strcmpi(param,"hide column")) # List - hide column - narg = sanity_checks ("num", param, value, op.hide, narg); - op.hide_min = min(value(:)); - op.hide_max = max(value(:)); - tmp = ""; - for i = 1:numel(value) - str = num2str(value(i)); - tmp = sprintf('%s%s,', tmp, str); - endfor - op.hide = sprintf('--hide-column="%s"', tmp); - elseif (strcmpi(param,"print column")) # List - print column - narg = sanity_checks ("num", param, value, op.print_col, narg); - op.print_min = min(value(:)); - op.print_max = max(value(:)); - op.print_numel = numel(value); - tmp = ""; - for i = 1:numel(value) - if (value == 0) - tmp = "all" - break - endif - str = num2str(value(i)); - tmp = sprintf('%s%s,', tmp, str); - endfor - op.print_col = sprintf('--print-column="%s"', tmp); - else - error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); - endif - - ## Process options for ZENITY_PROGRESS (creating new) - elseif ( strcmpi(dialog, "new progress") ) - if (strcmpi(param,"text")) # Progress - text - narg = sanity_checks ("char", param, value, op.text, narg); - op.text = sprintf('--text="%s"', value); - elseif (strcmpi(param,"auto close")) # Progress - auto close - narg = sanity_checks ("indie", param, value, op.auto_close, narg); - op.auto_close = "--auto-close"; - elseif (strcmpi(param,"auto kill")) # Progress - auto close - narg = sanity_checks ("indie", param, value, op.auto_kill, narg); - op.auto_kill = "--auto-kill"; - elseif (strcmpi(param,"hide cancel")) # Progress - hide cancel - narg = sanity_checks ("indie", param, value, op.hide_cancel, narg); - op.hide_cancel = "--no-cancel"; - elseif (strcmpi(param,"pulsate")) # Progress - pulsate - narg = sanity_checks ("indie", param, value, op.pulsate, narg); - op.pulsate = "--pulsate"; - elseif (strcmpi(param,"percentage")) # Progress - percentage - narg = sanity_checks ("scalar", param, value, op.percent, narg); - if (value < 0 || value > 100) - error("Percentage must be between '0' and '100' but it was set to '%g'", value) - endif - ## floor must be used to round, so to avoid returning 100, which in the - ## the case of having auto-close set, would close the dialog too soon - op.percent = sprintf('--percentage="%i"', floor(value)); - else - error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); - endif - - else - error ("Parameter '%s' is not supported.", param); - endif - - endwhile - - - while (narg <= numel (varargin)) - if (!pipelining) - break # It should have already been processed in the previous while block - endif - param = varargin{narg++}; - - if (narg <= numel(varargin)) # Check if we are already in the last index - value = varargin{narg}; # this is only for readability later on - else # Writing varargin{narg} in all conditions - value = ""; # is a pain and makes it even more confusing - endif - - ## Process options for ZENITY_NOTIFICATION (pipelining) - if ( strcmpi(dialog, "piped notification") ) - if (strcmpi(param,"text")) # Notification - text - narg = sanity_checks ("char", param, value, op.text, narg); - op.text = sprintf('tooltip: %s', value); - elseif (strcmpi(param,"message")) # Notification - message - narg = sanity_checks ("char", param, value, op.message, narg); - op.message = sprintf('message: %s', value); - elseif (strcmpi(param,"visible")) # Notification - message - narg = sanity_checks ("char", param, value, op.message, narg); - if (strcmpi(value, "on")) - op.visible = "visible: true"; - elseif (strcmpi(value, "off")) - op.visible = "visible: false"; - else - error ("'%s' is not a valid value for the parameter '%s'", value, param) - endif - elseif (strcmpi(param,"icon")) # Notification - icon - narg = sanity_checks ("char", param, value, op.icon, narg); - if (strcmpi(value, "error")) - op.icon = 'icon: error'; - elseif (strcmpi(value, "info")) - op.icon = 'icon: info'; - elseif (strcmpi(value, "question")) - op.icon = 'icon: question'; - elseif (strcmpi(value, "warning")) - op.icon = 'icon: warning'; - else - op.icon = sprintf('icon: %s', value); - endif - else - error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); - endif - - ## Process options for ZENITY_PROGRESS (pipelining) - elseif ( strcmpi(dialog, "piped progress") ) - if (strcmpi(param,"text")) # Progress - text - narg = sanity_checks ("char", param, value, op.text, narg); - op.text = sprintf('# %s', value); - elseif (strcmpi(param,"percentage")) # Progress - percentage - narg = sanity_checks ("scalar", param, value, op.percent, narg); - if (value < 0 || value > 100) - error("Percentage must be between '0' and '100' but it was set to '%g'", value) - endif - ## floor must be used to round, so to avoid returning 100, which in the - ## the case of having auto-close set, would close the dialog too soon - op.percent = sprintf('%i', floor(value)); - else - error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); - endif - - else - error ("Parameter '%s' is not supported.", param); - endif - endwhile - - ## Set the DEFAULTS - if (strcmpi(dialog,"message")) # Defaults for message - if ( isempty(op.type) ) - op.type = "--info"; - endif - elseif (strcmpi(dialog,"new notification")) # Defaults for notification - if ( isempty(op.icon) ) - op.icon = '--window-icon="warning"'; - endif - endif - -endfunction - -################################################################################ -function narg = sanity_checks (type, param, value, previous, narg) - if (strcmpi(type,"char")) # Value must be string - if (previous) - idx = strfind(previous, "="); - error ("Parameter '%s' set twice, with values '%s' and '%g'.", ... - param, previous(idx(1)+2:end-1), value); - elseif ( isempty(value) || !ischar(value) ) - error ("Parameter '%s' requires a string as value.", param); - endif - narg++; - - elseif (strcmpi(type,"scalar")) # Value must be scalar - if (previous) - idx = strfind(previous, "="); - error ("Parameter '%s' set twice, with values '%s' and '%g'.", ... - param, previous(idx(1)+2:end-1), value); - elseif ( isempty(value) || !isscalar(value) ) - error ("Parameter '%s' requires a scalar as value.", param); - endif - narg++; - - elseif (strcmpi(type,"indie")) # Independent parameter - if (previous) - error ("Parameter '%s' set twice.", param); - endif - - elseif (strcmpi(type,"valueless")) # Valueless parameter - if (previous) - error ("Parameter '%s' set twice, with values '%s' and '%s'.", ... - param, previous(3:end), value); - elseif ( isempty(value) || !ischar(value) ) - error ("Parameter '%s' requires a string as value.", param); - endif - narg++; - - elseif (strcmpi(type,"multiple-char")) # Value can be set more than once - if ( isempty(value) || !ischar(value) ) - error ("Parameter '%s' requires a string as value.", param); - endif - narg++; - - elseif (strcmpi(type,"num")) # Value can be set more than once - if (previous) - idx = strfind(previous, "="); - error ("Parameter '%s' set twice, with values '%s' and '%g'.", ... - param, previous(idx(1)+2:end-1), value); - elseif ( isempty(value) || !isnumeric(value) ) - error ("Parameter '%s' requires a numeric as value.", param); - endif - narg++; - - - else - error ("Non supported type for sanity_checks '%s'.", type) - endif - -endfunction Copied: trunk/octave-forge/main/zenity/inst/private/zenity_options.m (from rev 7271, trunk/octave-forge/main/zenity/inst/_zenity_options_.m) =================================================================== --- trunk/octave-forge/main/zenity/inst/private/zenity_options.m (rev 0) +++ trunk/octave-forge/main/zenity/inst/private/zenity_options.m 2010-04-28 01:10:16 UTC (rev 7272) @@ -0,0 +1,441 @@ +## Copyright (C) 2010 Carnë Draug +## +## 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 3 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{options} = _zenity_options (@var{dialog}, @var{param1}, @var{value1}, ...) +## This function is not intended for users but for the other functions of the +## zenity package. Returns the structure @var{options} that holds the processed +## @var{param} and @var{value} for the function of the zenity package +## @var{dialog}, or the defaults when they are not defined.. @var{dialog} must +## be a string and one of the following: +## +## @table @samp +## @item calendar +## @item entry +## @item file selection +## @item list +## @item message +## @item new notification +## @item piped notification +## @item new progress +## @item piped progress +## @item scale +## @item text info +## @end table +## +## @seealso{zenity_calendar, zenity_entry, zenity_file_selection, zenity_list, +## zenity_message, zenity_notification, zenity_progress, zenity_scale, +## zenity_text_info} +## @end deftypefn + +function op = zenity_options (dialog, varargin) + + varargin = varargin{1}; # because other functions varargin is this varargin + + op.title = op.width = op.height = op.timeout = op.icon = ""; + if ( !ischar(dialog) ) + error ("Type of dialog should be a string"); + elseif (strcmpi(dialog, "calendar")) + elseif (strcmpi(dialog, "entry")) + op.password = op.entry = ""; + elseif (strcmpi(dialog, "file selection")) + op.directory = op.filename = op.filter = op.multiple = op.save = ""; + elseif (strcmpi(dialog, "list")) + op.separator = op.text = op.hide = op.print_col = op.no_head = ""; + op.multiple = op.radio = op.check = op.editable = ""; + op.hide_max = op.hide_min = op.print_max = op.print_min = ""; + op.print_numel = op.num_out = ""; + elseif (strcmpi(dialog, "message")) + op.type = op.wrap = op.ok = op.cancel = ""; + elseif (strcmpi(dialog, "new notification")) + op.text = ""; + elseif (strcmpi(dialog, "piped notification")) + op.text = op.message = op.visible = ""; + elseif (strcmpi(dialog, "new progress")) + op.percent = op.text = op.auto_close = ""; + op.pulsate = op.auto_kill = op.hide_cancel = ""; + elseif (strcmpi(dialog, "piped progress")) + op.percent = op.text = ""; + elseif (strcmpi(dialog, "scale")) + elseif (strcmpi(dialog, "text info")) + else + error ("The type of dialog '%s' is not supported", dialog); + endif + + ## In case no options were set, returns the empty strings + if (numel(varargin) == 1 && isempty(varargin{1})) + return + endif + + ## Identifies when it's being called to process stuff to send through pipes + ## since they'll have major differences in the processing + if ( strcmpi(dialog, "piped notification") || strcmpi(dialog, "piped progress") ) + pipelining = 1; + else + pipelining = 0; + endif + + ## Here's the guidelines for the processing: + ## - the parameteres and values are case insensitive + ## - if a parameter is being defined twice, return an error + ## - if a parameter requires a value but this is not given, return an error + ## - check if the rigth type of value is given (char or scalar) and return an + ## error if not + + narg = 1; + ## This will ONLY process the input when the output won't be send through a + ## pipe. See the next while block for that. + while (narg <= numel (varargin)) + if (pipelining) + break # Move to the next while to process the input + endif + param = varargin{narg++}; + + if (narg <= numel(varargin)) # Check if we are already in the last index + value = varargin{narg}; # this is only for readability later on + else # Writing varargin{narg} in all conditions + value = ""; # is a pain and makes it even more confusing + endif + + if ( !ischar(param) ) + error ("All parameters must be strings."); + + ## Process ALL GENERAL OPTIONS first + elseif (strcmpi(param,"title")) # General - title + narg = sanity_checks ("char", param, value, op.title, narg); + op.title = sprintf('--title="%s"', value); + elseif (strcmpi(param,"width")) # General - width + narg = sanity_checks ("scalar", param, value, op.width, narg); + op.width = sprintf('--width="%i"', value); + elseif (strcmpi(param,"height")) # General - height + narg = sanity_checks ("scalar", param, value, op.height, narg); + op.height = sprintf('--height="%i"', value); + elseif (strcmpi(param,"timeout")) # General - timeout + narg = sanity_checks ("scalar", param, value, op.timeout, narg); + op.timeout = sprintf('--timeout="%i"', value); + elseif (strcmpi(param,"icon")) # General - icon + narg = sanity_checks ("char", param, value, op.icon, narg); + if (strcmpi(value, "error")) + op.icon = '--window-icon="error"'; + elseif (strcmpi(value, "info")) + op.icon = '--window-icon="info"'; + elseif (strcmpi(value, "question")) + op.icon = '--window-icon="question"'; + elseif (strcmpi(value, "warning")) + op.icon = '--window-icon="warning"'; + else + op.icon = sprintf('--window-icon="%s"', value); + endif + + ## Process options for ZENITY_ENTRY + elseif ( strcmpi(dialog, "entry") ) + if (strcmpi(param,"entry")) # Entry - entry text + narg = sanity_checks ("char", param, value, op.entry, narg); + op.entry = sprintf('--entry-text="%s"', value); + elseif (strcmpi(param,"password")) # Entry - password + narg = sanity_checks ("indie", param, value, op.password, narg); + op.password = "--hide-text"; + else + error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); + endif + + ## Process options for ZENITY_FILE_SELECTION + elseif ( strcmpi(dialog, "file selection") ) + if (strcmpi(param,"directory")) # File selection - directory + narg = sanity_checks ("indie", param, value, op.directory, narg); + op.directory = "--directory"; + elseif (strcmpi(param,"filename")) # File selection - filename + narg = sanity_checks ("char", param, value, op.filename, narg); + op.filename = sprintf('--filename="%s"', value); + elseif (strcmpi(param,"filter")) # File selection - file filter + narg = sanity_checks ("multiple-char", param, value, op.directory, narg); + op.filter = sprintf('%s --file-filter="%s"', op.filter, value); + elseif (strcmpi(param,"multiple")) # File selection - multiple + narg = sanity_checks ("indie", param, value, op.multiple, narg); + op.multiple = "--multiple"; + elseif (strcmpi(param,"overwrite")) # File selection - overwrite + narg = sanity_checks ("indie", param, value, op.overwrite, narg); + op.overwrite = "--confirm-overwrite"; + elseif (strcmpi(param,"save")) # File selection - save + narg = sanity_checks ("indie", param, value, op.save, narg); + op.save = "--save"; + else + error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); + endif + + ## Process options for ZENITY_MESSAGE + elseif ( strcmpi(dialog, "message") ) + if (strcmpi(param,"type")) # Message - type + narg = sanity_checks ("valueless", param, value, op.type, narg); + if (strcmpi(value,"error")) + op.type = "--error"; + elseif (strcmpi(value,"info")) + op.type = "--info"; + elseif (strcmpi(value,"question")) + op.type = "--question"; + elseif (strcmpi(value,"warning")) + op.type = "--warning"; + else + error ("Non supported type of message dialog '%s'", value); + endif + elseif (strcmpi(param,"wrap")) # Message - wrap + narg = sanity_checks ("indie", param, value, op.wrap, narg); + op.wrap = "--no-wrap"; + elseif (strcmpi(param,"ok button")) # Message - OK button + narg = sanity_checks ("char", param, value, op.ok, narg); + op.ok = sprintf('--ok-label="%s"', value); + elseif (strcmpi(param,"cancel button")) # Message - cancel button + narg = sanity_checks ("char", param, value, op.cancel, narg); + op.cancel = sprintf('--cancel-label="%s"', value); + else + error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); + endif + + ## Process options for ZENITY_NOTIFICATION (creating new) + elseif ( strcmpi(dialog, "new notification") ) + if (strcmpi(param,"text")) # Notification - text + narg = sanity_checks ("char", param, value, op.text, narg); + op.text = sprintf('--text="%s"', value); + else + error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); + endif + + ## Process options for ZENITY_LIST + elseif ( strcmpi(dialog, "list") ) + if (strcmpi(param,"text")) # List - text + narg = sanity_checks ("char", param, value, op.text, narg); + op.text = sprintf('--text="%s"', value); + elseif (strcmpi(param,"no headers")) # List - no headers + narg = sanity_checks ("indie", param, value, op.no_head, narg); + op.no_head = "--hide-header"; + elseif (strcmpi(param,"editable")) # List - editable + narg = sanity_checks ("indie", param, value, op.editable, narg); + op.editable = "--editable"; + elseif (strcmpi(param,"multiple")) # List - multiple + narg = sanity_checks ("indie", param, value, op.multiple, narg); + op.multiple = "--multiple"; + elseif (strcmpi(param,"radiolist")) # List - radiolist + narg = sanity_checks ("indie", param, value, op.radio, narg); + op.radio = "--radiolist"; + elseif (strcmpi(param,"checklist")) # List - checklist + narg = sanity_checks ("indie", param, value, op.check, narg); + op.check = "--checklist"; + elseif (strcmpi(param,"numeric output")) # List - numeric output + narg = sanity_checks ("char", param, value, op.num_out, narg); + op.num_out = value; + elseif (strcmpi(param,"hide column")) # List - hide column + narg = sanity_checks ("num", param, value, op.hide, narg); + op.hide_min = min(value(:)); + op.hide_max = max(value(:)); + tmp = ""; + for i = 1:numel(value) + str = num2str(value(i)); + tmp = sprintf('%s%s,', tmp, str); + endfor + op.hide = sprintf('--hide-column="%s"', tmp); + elseif (strcmpi(param,"print column")) # List - print column + narg = sanity_checks ("num", param, value, op.print_col, narg); + op.print_min = min(value(:)); + op.print_max = max(value(:)); + op.print_numel = numel(value); + tmp = ""; + for i = 1:numel(value) + if (value == 0) + tmp = "all" + break + endif + str = num2str(value(i)); + tmp = sprintf('%s%s,', tmp, str); + endfor + op.print_col = sprintf('--print-column="%s"', tmp); + else + error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); + endif + + ## Process options for ZENITY_PROGRESS (creating new) + elseif ( strcmpi(dialog, "new progress") ) + if (strcmpi(param,"text")) # Progress - text + narg = sanity_checks ("char", param, value, op.text, narg); + op.text = sprintf('--text="%s"', value); + elseif (strcmpi(param,"auto close")) # Progress - auto close + narg = sanity_checks ("indie", param, value, op.auto_close, narg); + op.auto_close = "--auto-close"; + elseif (strcmpi(param,"auto kill")) # Progress - auto close + narg = sanity_checks ("indie", param, value, op.auto_kill, narg); + op.auto_kill = "--auto-kill"; + elseif (strcmpi(param,"hide cancel")) # Progress - hide cancel + narg = sanity_checks ("indie", param, value, op.hide_cancel, narg); + op.hide_cancel = "--no-cancel"; + elseif (strcmpi(param,"pulsate")) # Progress - pulsate + narg = sanity_checks ("indie", param, value, op.pulsate, narg); + op.pulsate = "--pulsate"; + elseif (strcmpi(param,"percentage")) # Progress - percentage + narg = sanity_checks ("scalar", param, value, op.percent, narg); + if (value < 0 || value > 100) + error("Percentage must be between '0' and '100' but it was set to '%g'", value) + endif + ## floor must be used to round, so to avoid returning 100, which in the + ## the case of having auto-close set, would close the dialog too soon + op.percent = sprintf('--percentage="%i"', floor(value)); + else + error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); + endif + + else + error ("Parameter '%s' is not supported.", param); + endif + + endwhile + + + while (narg <= numel (varargin)) + if (!pipelining) + break # It should have already been processed in the previous while block + endif + param = varargin{narg++}; + + if (narg <= numel(varargin)) # Check if we are already in the last index + value = varargin{narg}; # this is only for readability later on + else # Writing varargin{narg} in all conditions + value = ""; # is a pain and makes it even more confusing + endif + + ## Process options for ZENITY_NOTIFICATION (pipelining) + if ( strcmpi(dialog, "piped notification") ) + if (strcmpi(param,"text")) # Notification - text + narg = sanity_checks ("char", param, value, op.text, narg); + op.text = sprintf('tooltip: %s', value); + elseif (strcmpi(param,"message")) # Notification - message + narg = sanity_checks ("char", param, value, op.message, narg); + op.message = sprintf('message: %s', value); + elseif (strcmpi(param,"visible")) # Notification - message + narg = sanity_checks ("char", param, value, op.message, narg); + if (strcmpi(value, "on")) + op.visible = "visible: true"; + elseif (strcmpi(value, "off")) + op.visible = "visible: false"; + else + error ("'%s' is not a valid value for the parameter '%s'", value, param) + endif + elseif (strcmpi(param,"icon")) # Notification - icon + narg = sanity_checks ("char", param, value, op.icon, narg); + if (strcmpi(value, "error")) + op.icon = 'icon: error'; + elseif (strcmpi(value, "info")) + op.icon = 'icon: info'; + elseif (strcmpi(value, "question")) + op.icon = 'icon: question'; + elseif (strcmpi(value, "warning")) + op.icon = 'icon: warning'; + else + op.icon = sprintf('icon: %s', value); + endif + else + error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); + endif + + ## Process options for ZENITY_PROGRESS (pipelining) + elseif ( strcmpi(dialog, "piped progress") ) + if (strcmpi(param,"text")) # Progress - text + narg = sanity_checks ("char", param, value, op.text, narg); + op.text = sprintf('# %s', value); + elseif (strcmpi(param,"percentage")) # Progress - percentage + narg = sanity_checks ("scalar", param, value, op.percent, narg); + if (value < 0 || value > 100) + error("Percentage must be between '0' and '100' but it was set to '%g'", value) + endif + ## floor must be used to round, so to avoid returning 100, which in the + ## the case of having auto-close set, would close the dialog too soon + op.percent = sprintf('%i', floor(value)); + else + error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); + endif + + else + error ("Parameter '%s' is not supported.", param); + endif + endwhile + + ## Set the DEFAULTS + if (strcmpi(dialog,"message")) # Defaults for message + if ( isempty(op.type) ) + op.type = "--info"; + endif + elseif (strcmpi(dialog,"new notification")) # Defaults for notification + if ( isempty(op.icon) ) + op.icon = '--window-icon="warning"'; + endif + endif + +endfunction + +################################################################################ +function narg = sanity_checks (type, param, value, previous, narg) + if (strcmpi(type,"char")) # Value must be string + if (previous) + idx = strfind(previous, "="); + error ("Parameter '%s' set twice, with values '%s' and '%g'.", ... + param, previous(idx(1)+2:end-1), value); + elseif ( isempty(value) || !ischar(value) ) + error ("Parameter '%s' requires a string as value.", param); + endif + narg++; + + elseif (strcmpi(type,"scalar")) # Value must be scalar + if (previous) + idx = strfind(previous, "="); + error ("Parameter '%s' set twice, with values '%s' and '%g'.", ... + param, previous(idx(1)+2:end-1), value); + elseif ( isempty(value) || !isscalar(value) ) + error ("Parameter '%s' requires a scalar as value.", param); + endif + narg++; + + elseif (strcmpi(type,"indie")) # Independent parameter + if (previous) + error ("Parameter '%s' set twice.", param); + endif + + elseif (strcmpi(type,"valueless")) # Valueless parameter + if (previous) + error ("Parameter '%s' set twice, with values '%s' and '%s'.", ... + param, previous(3:end), value); + elseif ( isempty(value) || !ischar(value) ) + error ("Parameter '%s' requires a string as value.", param); + endif + narg++; + + elseif (strcmpi(type,"multiple-char")) # Value can be set more than once + if ( isempty(value) || !ischar(value) ) + error ("Parameter '%s' requires a string as value.", param); + endif + narg++; + + elseif (strcmpi(type,"num")) # Value can be set more than once + if (previous) + idx = strfind(previous, "="); + error ("Parameter '%s' set twice, with values '%s' and '%g'.", ... + param, previous(idx(1)+2:end-1), value); + elseif ( isempty(value) || !isnumeric(value) ) + error ("Parameter '%s' requires a numeric as value.", param); + endif + narg++; + + + else + error ("Non supported type for sanity_checks '%s'.", type) + endif + +endfunction Modified: trunk/octave-forge/main/zenity/inst/zenity_entry.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_entry.m 2010-04-27 13:19:51 UTC (rev 7271) +++ trunk/octave-forge/main/zenity/inst/zenity_entry.m 2010-04-28 01:10:16 UTC (rev 7272) @@ -84,7 +84,7 @@ endif text = sprintf("--text=\"%s\"", text); - options = _zenity_options_ ("entry", varargin); + options = zenity_options ("entry", varargin); pre_cmd = sprintf("%s ", ... text, ... Modified: trunk/octave-forge/main/zenity/inst/zenity_file_selection.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_file_selection.m 2010-04-27 13:19:51 UTC (rev 7271) +++ trunk/octave-forge/main/zenity/inst/zenity_file_selection.m 2010-04-28 01:10:16 UTC (rev 7272) @@ -94,7 +94,7 @@ ## This is similar to the functions input and pause drawnow; - options = _zenity_options_ ("file selection", varargin); + options = zenity_options ("file selection", varargin); if ( !isempty(options.save) && (!isempty(options.multiple) || !isempty(options.directory)) ) error ("Parameter 'save' cannot be set together with 'multiple' or directory'."); Modified: trunk/octave-forge/main/zenity/inst/zenity_list.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_list.m 2010-04-27 13:19:51 UTC (rev 7271) +++ trunk/octave-forge/main/zenity/inst/zenity_list.m 2010-04-28 01:10:16 UTC (rev 7272) @@ -239,7 +239,7 @@ endif endfor - options = _zenity_options_ ("list", varargin); + options = zenity_options ("list", varargin); ## More sanity checks if ( !isempty(options.check) && !isempty(options.radio) ) Modified: trunk/octave-forge/main/zenity/inst/zenity_message.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_message.m 2010-04-27 13:19:51 UTC (rev 7271) +++ trunk/octave-forge/main/zenity/inst/zenity_message.m 2010-04-28 01:10:16 UTC (rev 7272) @@ -100,7 +100,7 @@ endif text = sprintf('--text="%s"', text); - options = _zenity_options_ ("message", varargin); + options = zenity_options ("message", varargin); ## Sanity checks if ( !strcmpi(options.type, "--question") && (options.ok || options.cancel)) Modified: trunk/octave-forge/main/zenity/inst/zenity_notification.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_notification.m 2010-04-27 13:19:51 UTC (rev 7271) +++ trunk/octave-forge/main/zenity/inst/zenity_notification.m 2010-04-28 01:10:16 UTC (rev 7272) @@ -104,7 +104,7 @@ if ( nargin == 0 ) pipelining = 0; ## If first argument is the fid for an already open notification, remove it - ## from varargin (remove it != empty it) before feeding to _zenity_options_ + ## from varargin (remove it != empty it) before feeding to zenity_options elseif (isscalar (varargin{1}) && isnumeric(varargin{1}) ) pipelining = 1; handle = varargin{1}; @@ -132,7 +132,7 @@ # endif return endif - options = _zenity_options_ ("piped notification", varargin); + options = zenity_options ("piped notification", varargin); ## Must add the new line only if they exist or zenity will complain about ## not being able to parse some of the lines. ## Atention to whitespace after the command. Example: @@ -160,7 +160,7 @@ sta = -1; end_try_catch else - options = _zenity_options_ ("new notification", varargin); + options = zenity_options ("new notification", varargin); pre_cmd = sprintf("%s ", ... options.icon, ... options.text, ... Modified: trunk/octave-forge/main/zenity/inst/zenity_progress.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_progress.m 2010-04-27 13:19:51 UTC (rev 7271) +++ trunk/octave-forge/main/zenity/inst/zenity_progress.m 2010-04-28 01:10:16 UTC (rev 7272) @@ -99,7 +99,7 @@ if ( nargin == 0 ) pipelining = 0; ## If first argument is the fid for an already open progress, remove it - ## from varargin (remove it != empty it) before feeding to _zenity_options_ + ## from varargin (remove it != empty it) before feeding to zenity_options elseif (isscalar (varargin{1}) && isnumeric(varargin{1}) ) pipelining = 1; handle = varargin{1}; @@ -123,7 +123,7 @@ end_try_catch return endif - options = _zenity_options_ ("piped progress", varargin); + options = zenity_options ("piped progress", varargin); ## Must add the new line only if they exist or zenity will complain about ## not being able to parse some of the lines. ## Atention to whitespace. First character must be digit or # @@ -146,7 +146,7 @@ sta = -1; end_try_catch else - options = _zenity_options_ ("new progress", varargin); + options = zenity_options ("new progress", varargin); pre_cmd = sprintf("%s ", ... options.title, ... options.width, ... This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2010-07-07 16:48:10
|
Revision: 7468 http://octave.svn.sourceforge.net/octave/?rev=7468&view=rev Author: carandraug Date: 2010-07-07 16:48:03 +0000 (Wed, 07 Jul 2010) Log Message: ----------- API of zenity_calendar changed to the standard style. Added the new options: icon, title, timeout, height and width. Changed help text to reflect new API. Uses the function _zenity_options_ for the processing of the options. Updated license for GPL v3 or later (at your option). Modified Paths: -------------- trunk/octave-forge/main/zenity/inst/private/zenity_options.m trunk/octave-forge/main/zenity/inst/zenity_calendar.m Modified: trunk/octave-forge/main/zenity/inst/private/zenity_options.m =================================================================== --- trunk/octave-forge/main/zenity/inst/private/zenity_options.m 2010-07-07 16:12:09 UTC (rev 7467) +++ trunk/octave-forge/main/zenity/inst/private/zenity_options.m 2010-07-07 16:48:03 UTC (rev 7468) @@ -44,10 +44,12 @@ varargin = varargin{1}; # because other functions varargin is this varargin + ## Create empty variables in case user does not set them op.title = op.width = op.height = op.timeout = op.icon = ""; if ( !ischar(dialog) ) error ("Type of dialog should be a string"); elseif (strcmpi(dialog, "calendar")) + op.text = op.day = op.month = op.year = ""; elseif (strcmpi(dialog, "entry")) op.password = op.entry = ""; elseif (strcmpi(dialog, "file selection")) @@ -74,13 +76,13 @@ error ("The type of dialog '%s' is not supported", dialog); endif - ## In case no options were set, returns the empty strings + ## In case no options were set, stop here and return the empty strings if (numel(varargin) == 1 && isempty(varargin{1})) return endif ## Identifies when it's being called to process stuff to send through pipes - ## since they'll have major differences in the processing + ## since that will have major differences in the processing if ( strcmpi(dialog, "piped notification") || strcmpi(dialog, "piped progress") ) pipelining = 1; else @@ -94,9 +96,11 @@ ## - check if the rigth type of value is given (char or scalar) and return an ## error if not + ## This will hold the index of varargin that's currently being processed narg = 1; - ## This will ONLY process the input when the output won't be send through a - ## pipe. See the next while block for that. + + ## This will ONLY process the input when the output WON'T be sent through a + ## pipe. See the next while block for when it is while (narg <= numel (varargin)) if (pipelining) break # Move to the next while to process the input @@ -104,7 +108,7 @@ param = varargin{narg++}; if (narg <= numel(varargin)) # Check if we are already in the last index - value = varargin{narg}; # this is only for readability later on + value = varargin{narg}; # this is only for readability later on. else # Writing varargin{narg} in all conditions value = ""; # is a pain and makes it even more confusing endif @@ -293,6 +297,29 @@ error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); endif + ## Process options for ZENITY_CALENDAR + elseif ( strcmpi(dialog, "calendar") ) + if (strcmpi(param,"text")) # Calendar - text + narg = sanity_checks ("char", param, value, op.text, narg); + op.text = sprintf('--text="%s"', value); + elseif (strcmpi(param,"day")) # Calendar - day + narg = sanity_checks ("scalar", param, value, op.day, narg); + value = round (value); + if (value < 1 || value > 31) error("Default selection '%d' for day", value); endif + op.day = sprintf('--day="%d"', value); + elseif (strcmpi(param,"month")) # Calendar - month + narg = sanity_checks ("scalar", param, value, op.month, narg); + value = round (value); + if (value < 1 || value > 12) error("Invalid default selection '%d' for month", value); endif + op.month = sprintf('--month="%d"', value); + elseif (strcmpi(param,"year")) # Calendar - day + narg = sanity_checks ("scalar", param, value, op.year, narg); + value = round (value); + op.year = sprintf('--year="%d"', value); + else + error ("Parameter '%s' is not supported for '%s' dialog.", param, dialog); + endif + else error ("Parameter '%s' is not supported.", param); endif @@ -300,9 +327,11 @@ endwhile + ## This will ONLY process the input when the output WILL be sent through a + ## pipe. See the previous while block when creating new dialogs while (narg <= numel (varargin)) if (!pipelining) - break # It should have already been processed in the previous while block + break # It should have already been processed in the previous while block but it doesn't hurt to check again endif param = varargin{narg++}; @@ -382,6 +411,8 @@ endfunction ################################################################################ +## Extra functions +################################################################################ function narg = sanity_checks (type, param, value, previous, narg) if (strcmpi(type,"char")) # Value must be string if (previous) @@ -423,7 +454,7 @@ endif narg++; - elseif (strcmpi(type,"num")) # Value can be set more than once + elseif (strcmpi(type,"num")) # Value can be set more than once if (previous) idx = strfind(previous, "="); error ("Parameter '%s' set twice, with values '%s' and '%g'.", ... Modified: trunk/octave-forge/main/zenity/inst/zenity_calendar.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_calendar.m 2010-07-07 16:12:09 UTC (rev 7467) +++ trunk/octave-forge/main/zenity/inst/zenity_calendar.m 2010-07-07 16:48:03 UTC (rev 7468) @@ -1,8 +1,9 @@ ## Copyright (C) 2006 S\xF8ren Hauberg +## Copyright (C) 2010 Carn\xEB Draug ## ## 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 +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, @@ -14,6 +15,68 @@ ## along with this program; If not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- +## @deftypefn {Function File} [@var{date} @var{status}] = zenity_calendar (@var{param1}, @var{value1}, ...) +## Opens a date selection dialog using Zenity. +## +## @var{date} is the first three members of the date vector of the selected date, +## representing the year, month and day respectively. +## +## @var{status} will be @code{0} if user pressed @option{OK} (and selected +## something), @code{1} if closed the window without selecting something, and +## @code{5} if timeout has been reached (and therefore no date was selected). +## +## If user does not select a date, all members of @var{date} will have a value +## of zero. +## +## All @var{parameters} are optional, but if given, may require a corresponding +## @var{value}. All possible parameters are: +## +## @table @samp +## +## @item text +## Sets the text of the dialog window. Requires a string as value. +## +## @item year +## Sets the default selected year. Requires a scalar as value. +## +## @item month +## Sets the default selected months. Requires a scalar as value. +## +## @item day +## Sets the default selected day. Requires a scalar as value. +## +## @item icon +## Sets the icon of the window. Requires a string as value with the file path to +## an image, or one of the four stock icons: +## +## @table @samp +## @item error +## @item info +## @item question +## @item warning +## @end table +## +## @item timeout +## Sets the time in seconds after which the dialog is closed. Requires a scalar +## as value. +## +## @item title +## Sets the title of the window. Requires a string as value. +## +## @item height +## Sets the height of the dialog window. Requires a scalar as value. +## +## @item width +## Sets the width of the dialog window. Requires a scalar as value. +## @end table +## +## @strong{Note:} ultimately, the availability of some parameters is dependent +## on the user's system preferences and zenity version. +## +## @seealso{datevec, datestr, date, clock, zenity_entry, zenity_message, zenity_text_info} +## @end deftypefn + +## -*- texinfo -*- ## @deftypefn {Function File} @var{d} = zenity_calendar(@var{title}, @var{day}, @var{month}, @var{year}) ## Displays a date selection window. ## The variable @var{title} sets the title of the calendar. @@ -24,25 +87,47 @@ ## zenity_text_info, zenity_file_selection, zenity_notification} ## @end deftypefn -function d = zenity_calendar(title, day, month, year) - [Y, M, D] = datevec(date); - if (nargin < 1), title = "Select a date"; endif - if (nargin < 2), day = D; endif - if (nargin < 3), month = M; endif - if (nargin < 4), year = Y; endif - - cmd = sprintf(['zenity --calendar --title="%s" --text="%s" ', ... - '--day=%d --month=%d --year=%d --date-format="%%m/%%d/%%Y"'], - title, title, day, month, year); +function [d, status] = zenity_calendar(varargin) + + ## Update figures so they are show before the dialog. To not be shown at this + ## step, turn them off with 'figure(N, "visible", "off") + ## This is similar to the functions input and pause + drawnow; + + options = zenity_options ("calendar", varargin); + + pre_cmd = sprintf("%s ", ... + options.title, ... + options.width, ... + options.height, ... + options.timeout, ... + options.icon, ... + options.text, ... + options.day, ... + options.month, ... + options.year); + + ## Ideal would be to use date format %%4Y%%2m%%2d (format number 29 of datestr) + ## but datevec doesn't support it yet (octave 3.2.4). In the mean time, uses + ## format number 24 + cmd = sprintf("zenity --calendar --date-format=%%4Y%%2m%%2d %s", pre_cmd); [status, output] = system(cmd); + + # Exit code -1 = An unexpected error has occurred + # Exit code 0 = The user has pressed either OK or Close. + # Exit code 1 = The user has either pressed Cancel, or used the window + # functions to close the dialog + # Exit code 5 = The dialog has been closed because the timeout has been reached if (status == 0) - if (length(output) > 0 && output(end) == "\n") - output = output(1:end-1); + if (output(end) == "\n") + output = output(1:end-1); endif - d = datestr(output); - elseif (status == 1) - d = ""; + d = datevec(output, "yyyymmdd"); + d(4:6) = []; # remove the hours, minutes and seconds field which are zeros + elseif (status == 1 || status == 5) + d (1:3) = 0; else - error("zenity_calendar: %s", output); + error("An unexpected error occurred with exit code '%i' and output '%s'",... + status, output); endif endfunction This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2011-06-03 15:26:15
|
Revision: 8302 http://octave.svn.sourceforge.net/octave/?rev=8302&view=rev Author: carandraug Date: 2011-06-03 15:26:07 +0000 (Fri, 03 Jun 2011) Log Message: ----------- zenity_list: bug fix related to how zenity uses GLib to handle input Modified Paths: -------------- trunk/octave-forge/main/zenity/inst/private/zenity_options.m trunk/octave-forge/main/zenity/inst/zenity_list.m trunk/octave-forge/main/zenity/inst/zenity_scale.m Modified: trunk/octave-forge/main/zenity/inst/private/zenity_options.m =================================================================== --- trunk/octave-forge/main/zenity/inst/private/zenity_options.m 2011-06-01 19:40:09 UTC (rev 8301) +++ trunk/octave-forge/main/zenity/inst/private/zenity_options.m 2011-06-03 15:26:07 UTC (rev 8302) @@ -70,7 +70,10 @@ op.pulsate = op.auto_kill = op.hide_cancel = ""; elseif (strcmpi(dialog, "piped progress")) op.percent = op.text = ""; - elseif (strcmpi(dialog, "scale")) + elseif (strcmpi(dialog, "new scale")) + op.text = op.ini = op.start = ""; + op.hide = op.end = op.step = ""; + elseif (strcmpi(dialog, "piped scale")) elseif (strcmpi(dialog, "text info")) else error ("The type of dialog '%s' is not supported", dialog); @@ -83,7 +86,7 @@ ## Identifies when it's being called to process stuff to send through pipes ## since that will have major differences in the processing - if ( strcmpi(dialog, "piped notification") || strcmpi(dialog, "piped progress") ) + if ( any (strcmpi(dialog, {"piped notification", "piped progress", "piped scale"})) ) pipelining = 1; else pipelining = 0; Modified: trunk/octave-forge/main/zenity/inst/zenity_list.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_list.m 2011-06-01 19:40:09 UTC (rev 8301) +++ trunk/octave-forge/main/zenity/inst/zenity_list.m 2011-06-03 15:26:07 UTC (rev 8302) @@ -292,7 +292,7 @@ options.data = sprintf("\"%s\" ", data{:}); ## Set separator - options.separator = '--separator="/\\|/\\"'; # Will use /\|/\ as separator + options.separator = '--separator="/\\\|/\\\\"'; # Will use /\|/\ as separator pre_cmd = sprintf("%s ", ... options.title, ... Modified: trunk/octave-forge/main/zenity/inst/zenity_scale.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_scale.m 2011-06-01 19:40:09 UTC (rev 8301) +++ trunk/octave-forge/main/zenity/inst/zenity_scale.m 2011-06-03 15:26:07 UTC (rev 8302) @@ -1,8 +1,9 @@ ## Copyright (C) 2006 Muthiah Annamalai +## Copyright (C) 2010 Carnë Draug ## ## 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 +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, @@ -14,8 +15,11 @@ ## along with this program; If not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} @var{output} = zenity_scale(@var{title},@var{text}, @var{value}, @var{minval}, @var{maxval},@var{step},@var{print_partial},@var{hideval}) -## Displays a selection scale (range widget) window. +## @deftypefn {Function File} @var{h} = zenity_scale +## @deftypefnx {Function File} @var{h} = zenity_scale (@var{param1}, @var{value1}, ...) +## @deftypefnx {Function File} @var{s} = zenity_scale (@var{h}) +## @deftypefnx {Function File} @var{s} = zenity_scale (@var{h}, "close") +## Displays a selection scale (range widget) window using zenity. ## Allows the user to choose a parameter within the set ranges, and sets ## default value, and step sizes. ## The variable @var{title} sets the title of the window. @@ -34,38 +38,125 @@ ## zenity_text_info, zenity_file_selection, zenity_notification} ## @end deftypefn -function output = zenity_scale(title,text, value, minval, maxval, step, print_partial, hideval) +function [val, status] = zenity_scale(varargin) - if (nargin < 1), title="Adjust the scale value"; endif - if (nargin < 2), text=""; endif - if (nargin < 3), value=0; endif - if (nargin < 4), minval= 0; endif - if (nargin < 5), maxval= 100; endif - if (nargin < 6), step = 1; endif - if (nargin < 7), print_partial = false; endif - if (nargin < 8), hideval = false; endif + ## If no arguments are given, open a new scale dialog + if ( nargin == 0 ) + pipelining = 0; + ## If first argument is the fid for an already open progress, remove it + ## from varargin (remove it != empty it) before feeding to zenity_options + elseif (isscalar (varargin{1}) && isnumeric(varargin{1}) ) + pipelining = 1; + handle = varargin{1}; + varargin(1) = []; + elseif ( ischar(varargin{1}) && strcmpi(varargin{1}, "close") ) + error("Argument to close was given, but not the handle.") + else + pipelining = 0; + endif - ppartial=""; - hvalue=""; + if (pipelining) + ## If the first argument after the handle is the string 'close' say 'bye bye' + if ( ischar(varargin{1}) && strcmpi(varargin{1}, "close") ) + if (nargin > 2) + warning ("There's %g argument(s) after '%s' which will be ignored", (nargin-2), varargin{1}) + endif + try + sta = pclose(handle); + catch + sta = -1; + end_try_catch + return + endif + options = zenity_options ("piped scale", varargin); + ## Must add the new line only if they exist or zenity will complain about + ## not being able to parse some of the lines. + ## Atention to whitespace. First character must be digit or # + ## " #test text" <-- no error, but does nothing + ## "#test text" <-- changes text for 'test text + ## "# test text" <-- exactly the same as above + options.text = add_newline (options.text); + options.percent = add_newline (options.percent); - if(length(title)==0), title="Adjust the scale value"; endif - if(print_partial), ppartial="--print-partial"; endif - if(hideval), hvalue="--hide-value"; endif - - cmd = sprintf(['zenity --scale --title="%s" --text="%s" ', ... - '--value=%d --min-value=%d --max-value=%d --step=%d ',... - '%s %s '],title, text, value, minval,maxval,step,ppartial,hvalue); - [status, output] = system(cmd); - if (status == 0) - output = str2num(output); - elseif (status == 1) - output = value; ##default when user kills it. + pre_cmd = sprintf("%s", ... + options.text, ... + options.percent); + try + ## just in case someone has been playing with the pipe, flush it before + fflush (handle); + sta = fputs(handle, pre_cmd); + ## make sure there's no input buffered + fflush (handle); + catch + sta = -1; + end_try_catch else - error("zenity_scale: %s", output); ##kill -9 + options = zenity_options ("new scale", varargin); + pre_cmd = sprintf("%s ", ... + options.title, ... + options.width, ... + options.height,... + options.timeout, ... + options.icon, ... + options.text, ... + options.ini, ... + options.end, ... + options.start, ... + options.step, ... + options.hide); + if (options.partial) + cmd = sprintf("zenity --progress --print-partial %s", pre_cmd); + else + cmd = sprintf("zenity --progress %s", pre_cmd); + endif + try + sta = popen(cmd, "r"); + catch + sta = -1 + end_try_catch endif + + + + + + + + + + + + + + +# ppartial=""; +# hvalue=""; + +# if(length(title)==0), title="Adjust the scale value"; endif +# if(print_partial), ppartial="--print-partial"; endif +# if(hideval), hvalue="--hide-value"; endif +# +# cmd = sprintf(['zenity --scale --title="%s" --text="%s" ', ... +# '--value=%d --min-value=%d --max-value=%d --step=%d ',... +# '%s %s '],title, text, value, minval,maxval,step,ppartial,hvalue); +# [status, output] = system(cmd); +# if (status == 0) +# output = str2num(output); +# elseif (status == 1) +# output = value; ##default when user kills it. +# else +# error("zenity_scale: %s", output); ##kill -9 +# endif + + +# ## In the future, this can be changed to return a file-handle if --print-partial +# ## is selected. If so, a pipe can be open with +# ## fid = fopen("zenity --scale --print-partial", "r") +# ## read = fgets(fid) +# ## +# ## However, fgets can't read the value currently selected, only the one right +# ## before the last selection + + + endfunction -% -%(Shamelessly copied from Søren Hauberg's zenity_calendar). -%zenity --scale --text 'What is in your Wallet' --value 10 --min-value 0 --max-value 100 --step 5 -%zenity_scale('','What is in your Wallet',10,0,100,5) -% \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2012-04-23 01:04:19
|
Revision: 10311 http://octave.svn.sourceforge.net/octave/?rev=10311&view=rev Author: carandraug Date: 2012-04-23 01:04:13 +0000 (Mon, 23 Apr 2012) Log Message: ----------- zenity: using @{} on texinfo Modified Paths: -------------- trunk/octave-forge/main/zenity/inst/private/zenity_options.m trunk/octave-forge/main/zenity/inst/zenity_calendar.m trunk/octave-forge/main/zenity/inst/zenity_entry.m trunk/octave-forge/main/zenity/inst/zenity_file_selection.m trunk/octave-forge/main/zenity/inst/zenity_list.m trunk/octave-forge/main/zenity/inst/zenity_message.m trunk/octave-forge/main/zenity/inst/zenity_notification.m trunk/octave-forge/main/zenity/inst/zenity_progress.m Modified: trunk/octave-forge/main/zenity/inst/private/zenity_options.m =================================================================== --- trunk/octave-forge/main/zenity/inst/private/zenity_options.m 2012-04-22 13:55:38 UTC (rev 10310) +++ trunk/octave-forge/main/zenity/inst/private/zenity_options.m 2012-04-23 01:04:13 UTC (rev 10311) @@ -14,7 +14,7 @@ ## this program; if not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} @var{options} = _zenity_options (@var{dialog}, @var{param1}, @var{value1}, ...) +## @deftypefn {Function File} {@var{options} =} zenity_options (@var{dialog}, @var{param1}, @var{value1}, @dots{}) ## This function is not intended for users but for the other functions of the ## zenity package. Returns the structure @var{options} that holds the processed ## @var{param} and @var{value} for the function of the zenity package Modified: trunk/octave-forge/main/zenity/inst/zenity_calendar.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_calendar.m 2012-04-22 13:55:38 UTC (rev 10310) +++ trunk/octave-forge/main/zenity/inst/zenity_calendar.m 2012-04-23 01:04:13 UTC (rev 10311) @@ -15,7 +15,7 @@ ## this program; if not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} [@var{date} @var{status}] = zenity_calendar (@var{param1}, @var{value1}, ...) +## @deftypefn {Function File} {[@var{date} @var{status}] =} zenity_calendar (@var{param1}, @var{value1}, @dots{}) ## Opens a date selection dialog using Zenity. ## ## @var{date} is the first three members of the date vector of the selected date, Modified: trunk/octave-forge/main/zenity/inst/zenity_entry.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_entry.m 2012-04-22 13:55:38 UTC (rev 10310) +++ trunk/octave-forge/main/zenity/inst/zenity_entry.m 2012-04-23 01:04:13 UTC (rev 10311) @@ -15,7 +15,7 @@ ## this program; if not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} [@var{entry}, @var{status}] = zenity_entry(@var{text}, @var{parameter1}, @var{value1}, ...) +## @deftypefn {Function File} {[@var{entry}, @var{status}] =} zenity_entry (@var{text}, @var{parameter1}, @var{value1}, @dots{}) ## Displays a text entry dialog using Zenity. ## ## The variable @var{text} sets the dialog text and is the only mandatory Modified: trunk/octave-forge/main/zenity/inst/zenity_file_selection.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_file_selection.m 2012-04-22 13:55:38 UTC (rev 10310) +++ trunk/octave-forge/main/zenity/inst/zenity_file_selection.m 2012-04-23 01:04:13 UTC (rev 10311) @@ -15,7 +15,7 @@ ## this program; if not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} [@var{files} @var{status}] = zenity_file_selection (@var{param1}, @var{value1}, ...) +## @deftypefn {Function File} {[@var{files} @var{status}] =} zenity_file_selection (@var{param1}, @var{value1}, @dots{}) ## Opens a file selection dialog using Zenity. ## ## @var{files} is a string or a cell array of strings depending on whether the Modified: trunk/octave-forge/main/zenity/inst/zenity_list.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_list.m 2012-04-22 13:55:38 UTC (rev 10310) +++ trunk/octave-forge/main/zenity/inst/zenity_list.m 2012-04-23 01:04:13 UTC (rev 10311) @@ -15,7 +15,7 @@ ## this program; if not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} [@var{selected}, @var{status}] = zenity_list(@var{columns}, @var{data}, @var{param1}, @var{value1}, ...) +## @deftypefn {Function File} {[@var{selected}, @var{status}] =} zenity_list (@var{columns}, @var{data}, @var{param1}, @var{value1}, @dots{}) ## Displays a graphical list of data using Zenity. The values on the list can be ## selected and/or modified by the user. ## Modified: trunk/octave-forge/main/zenity/inst/zenity_message.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_message.m 2012-04-22 13:55:38 UTC (rev 10310) +++ trunk/octave-forge/main/zenity/inst/zenity_message.m 2012-04-23 01:04:13 UTC (rev 10311) @@ -15,7 +15,7 @@ ## this program; if not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} @var{status} = zenity_message(@var{text}, @var{parameter1}, @var{value1}, ...) +## @deftypefn {Function File} {@var{status} =} zenity_message (@var{text}, @var{parameter1}, @var{value1}, @dots{}) ## Displays different types of graphical message dialogs using Zenity. ## ## Returns @code{0} if @option{OK} is pressed; @code{1} if @option{Close} is Modified: trunk/octave-forge/main/zenity/inst/zenity_notification.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_notification.m 2012-04-22 13:55:38 UTC (rev 10310) +++ trunk/octave-forge/main/zenity/inst/zenity_notification.m 2012-04-23 01:04:13 UTC (rev 10311) @@ -15,10 +15,10 @@ ## this program; if not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} @var{h} = zenity_notification -## @deftypefnx {Function File} @var{h} = zenity_notification (@var{param1}, @var{value1}, ...) -## @deftypefnx {Function File} @var{s} = zenity_notification (@var{h}, @var{param1}, @var{value1}, ...) -## @deftypefnx {Function File} @var{s} = zenity_notification (@var{h}, "close") +## @deftypefn {Function File} {@var{h} =} zenity_notification +## @deftypefnx {Function File} {@var{h} =} zenity_notification (@var{param1}, @var{value1}, @dots{}) +## @deftypefnx {Function File} {@var{s} =} zenity_notification (@var{h}, @var{param1}, @var{value1}, @dots{}) +## @deftypefnx {Function File} {@var{s} =} zenity_notification (@var{h}, "close") ## Displays an icon with a text in the notification area, and pop up messages ## using Zenity. ## Modified: trunk/octave-forge/main/zenity/inst/zenity_progress.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_progress.m 2012-04-22 13:55:38 UTC (rev 10310) +++ trunk/octave-forge/main/zenity/inst/zenity_progress.m 2012-04-23 01:04:13 UTC (rev 10311) @@ -15,10 +15,10 @@ ## this program; if not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} @var{h} = zenity_progress -## @deftypefnx {Function File} @var{h} = zenity_progress (@var{param1}, @var{value1}, ...) -## @deftypefnx {Function File} @var{s} = zenity_progress (@var{h}, @var{param1}, @var{value1}, ...) -## @deftypefnx {Function File} @var{s} = zenity_progress (@var{h}, "close") +## @deftypefn {Function File} {@var{h} =} zenity_progress +## @deftypefnx {Function File} {@var{h} =} zenity_progress (@var{param1}, @var{value1}, @dots{}) +## @deftypefnx {Function File} {@var{s} =} zenity_progress (@var{h}, @var{param1}, @var{value1}, @dots{}) +## @deftypefnx {Function File} {@var{s} =} zenity_progress (@var{h}, "close") ## Displays a progress bar dialog using Zenity. ## ## The first and second forms of the @command{zenity_progress} function creates This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |