Mercurial > octave-nkf
diff scripts/plot/private/__uiobject_split_args__.m @ 13703:22ce748da25f
Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
* graphics.h.in (uicontextmenu, uitoolbar, uipushtool, uitoggletool): New
graphic object classes.
(uicontrol::properties::cdata): Allow "single" and "uint8" data.
* graphics.cc (uitoolbar): New class implementation.
* gl-render.cc (opengl_renderer::draw): Skip new object types.
* plot/private/__uiobject_split_args__.m: Don't use varargin. Add parent_type
and use_gcf arguments. Check that number of arguments is a multiple of 2.
* plot/uicontrol.m: Adapt call to __uiobject_split_args__.
* plot/uipanel.m: Likewise.
* plot/uimenu.m: Rewrite to use __uiobject_split_args__.
* plot/uicontextmenu.m: New file.
* plot/uitoolbar.m: Likewise.
* plot/uipushtool.m: Likewise.
* plot/uitoggletool.m: Likewise.
* plot/modules.mk (plot_FCN_FILES): Add uicontextmenu.m, uitoolbar.m,
uipushtool.m and uitoggletool.m.
author | Michael Goffioul <michael.goffioul@gmail.com> |
---|---|
date | Fri, 14 Oct 2011 23:19:06 +0100 |
parents | 5ab9c721ce59 |
children | 9cae456085c2 |
line wrap: on
line diff
--- a/scripts/plot/private/__uiobject_split_args__.m Fri Oct 14 17:06:49 2011 -0400 +++ b/scripts/plot/private/__uiobject_split_args__.m Fri Oct 14 23:19:06 2011 +0100 @@ -17,28 +17,30 @@ ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {[@var{p}, @var{args}] =} __uiobject_split_args__ (@var{who}, @dots{}) +## @deftypefn {Function File} {[@var{p}, @var{args}] =} __uiobject_split_args__ (@var{who}, @var{args}, @var{parent_type}, @var{use_gcf}) ## @end deftypefn ## Author: goffioul -function [parent, args] = __uiobject_split_args__ (who, varargin) +function [parent, args] = __uiobject_split_args__ (who, in_args, parent_type = {}, use_gcf = 1) parent = []; args = {}; offset = 1; - if (nargin > 1) - if (ishandle (varargin{1})) - parent = varargin{1}; + if (! isempty (in_args)) + if (ishandle (in_args{1})) + parent = in_args{1}; offset = 2; - elseif (! ischar (varargin{1})) + elseif (! ischar (in_args{1})) error ("%s: invalid parent handle.", who); endif - if (nargin > offset) - args = varargin(offset:end); - endif + args = in_args(offset:end); + endif + + if (rem (length (args), 2)) + error ("%s: expecting PROPERTY/VALUE pairs", who); endif if (! isempty (args)) @@ -53,10 +55,11 @@ endif if (! isempty (parent)) - if (isempty (find (strcmpi (get (parent, "type"), {"figure", "uipanel", "uibuttongroup"})))) - error ("%s: invalid parent, the parent must be a figure, uipanel or uibuttongroup handle", who); + if (! isempty (parent_type) && isempty (find (strcmpi (get (parent, "type"), parent_type)))) + error ("%s: invalid parent, the parent type must be: %s", ... + who, sprintf ("%s, ", parent_type{:})(1:end-2)); endif - else + elseif (use_gcf) parent = gcf (); endif