# HG changeset patch # User Michael Goffioul # Date 1317940745 -3600 # Node ID 5ab9c721ce59a9a5ad84c77887680dd57f8cab57 # Parent 5d3d802c772e0a0b9c921a86ddbf71b5dce1e62b Add uicontrol and uipanel m-scripts. * scripts/plot/uicontrol.m: New file * scripts/plot/uipanel.m: Likewise. * scripts/plot/private/__uiobject_split_args__.m: Likewise. * scripts/plot/modules.mk (plot_PRIVATE_FCN_FILES): Add __uiobject_split_args__.m. (plot_FCN_FILES): Add uicontrol.m and uipanel.m. diff -r 5d3d802c772e -r 5ab9c721ce59 scripts/plot/module.mk --- a/scripts/plot/module.mk Thu Oct 06 14:57:15 2011 -0700 +++ b/scripts/plot/module.mk Thu Oct 06 23:39:05 2011 +0100 @@ -46,7 +46,8 @@ plot/private/__quiver__.m \ plot/private/__scatter__.m \ plot/private/__stem__.m \ - plot/private/__tight_eps_bbox__.m + plot/private/__tight_eps_bbox__.m \ + plot/private/__uiobject_split_args__.m plot_FCN_FILES = \ plot/__gnuplot_drawnow__.m \ @@ -174,9 +175,11 @@ plot/trimesh.m \ plot/triplot.m \ plot/trisurf.m \ + plot/uicontrol.m \ plot/uigetdir.m \ plot/uigetfile.m \ plot/uimenu.m \ + plot/uipanel.m \ plot/uiputfile.m \ plot/view.m \ plot/waitforbuttonpress.m \ diff -r 5d3d802c772e -r 5ab9c721ce59 scripts/plot/private/__uiobject_split_args__.m --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/plot/private/__uiobject_split_args__.m Thu Oct 06 23:39:05 2011 +0100 @@ -0,0 +1,63 @@ +## Copyright (C) 2011 Michael Goffioul +## +## This file is part of Octave. +## +## Octave is free software; you can redistribute it and/or modify it +## under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 3 of the License, or (at +## your option) any later version. +## +## Octave is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with Octave; see the file COPYING. If not, see +## . + +## -*- texinfo -*- +## @deftypefn {Function File} {[@var{p}, @var{args}] =} __uiobject_split_args__ (@var{who}, @dots{}) +## @end deftypefn + +## Author: goffioul + +function [parent, args] = __uiobject_split_args__ (who, varargin) + + parent = []; + args = {}; + offset = 1; + + if (nargin > 1) + if (ishandle (varargin{1})) + parent = varargin{1}; + offset = 2; + elseif (! ischar (varargin{1})) + error ("%s: invalid parent handle.", who); + endif + + if (nargin > offset) + args = varargin(offset:end); + endif + endif + + if (! isempty (args)) + i = find (strcmpi (args(1:2:end), "parent"), 1, "first"); + if (! isempty (i) && length (args) >= 2*i) + parent = args{2*i}; + if (! ishandle (parent)) + error ("%s: invalid parent handle.", who); + endif + args([2*i-1, 2*i]) = []; + endif + 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); + endif + else + parent = gcf (); + endif + +endfunction diff -r 5d3d802c772e -r 5ab9c721ce59 scripts/plot/uicontrol.m --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/plot/uicontrol.m Thu Oct 06 23:39:05 2011 +0100 @@ -0,0 +1,36 @@ +## Copyright (C) 2011 Michael Goffioul +## +## This file is part of Octave. +## +## Octave is free software; you can redistribute it and/or modify it +## under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 3 of the License, or (at +## your option) any later version. +## +## Octave is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with Octave; see the file COPYING. If not, see +## . + +## -*- texinfo -*- +## @deftypefn {Function File} {@var{handle} =} uicontrol ('Name', value, @dots{}) +## @deftypefnx {Function File} {@var{handle} =} uicontrol (@var{parent}, 'Name', value, @dots{}) +## @deftypefnx {Function File} uicontrol (@var{handle}) +## @end deftypefn + +## Author: goffioul + +function handle = uicontrol (varargin) + + if (nargin == 1 && ishandle (varargin{1}) && strcmpi (get (varargin{1}, "type"), "uicontrol")) + error ("uicontrol focusing not implemented yet."); + else + [h, args] = __uiobject_split_args__ ("uicontrol", varargin{:}); + handle = __go_uicontrol__ (h, args{:}); + endif + +endfunction diff -r 5d3d802c772e -r 5ab9c721ce59 scripts/plot/uipanel.m --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/plot/uipanel.m Thu Oct 06 23:39:05 2011 +0100 @@ -0,0 +1,31 @@ +## Copyright (C) 2011 Michael Goffioul +## +## This file is part of Octave. +## +## Octave is free software; you can redistribute it and/or modify it +## under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 3 of the License, or (at +## your option) any later version. +## +## Octave is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with Octave; see the file COPYING. If not, see +## . + +## -*- texinfo -*- +## @deftypefn {Function File} {@var{handle} =} uipanel ('Name', value, @dots{}) +## @deftypefnx {Function File} {@var{handle} =} uipanel (@var{parent}, 'Name', value, @dots{}) +## @end deftypefn + +## Author: goffioul + +function handle = uipanel (varargin) + + [h, args] = __uiobject_split_args__ ("uipanel", varargin{:}); + handle = __go_uipanel__ (h, args{:}); + +endfunction