1
+ function loadGUIstate(GUIstate , h )
2
+ % Write better documentation here <-
3
+ %
4
+ % Input is a structure containing the saved GUI state output by
5
+ % saveGUIstate along with the handles structure of the target GUI.
6
+ % This function modifies the GUI handles directly so there is no output
7
+ %
8
+ % Assumes the GUI state is being loaded into the same GUI that it was saved
9
+ % from
10
+
11
+ savedobjlist = fieldnames(GUIstate );
12
+
13
+ for ii = 1 : length(savedobjlist )
14
+ % Verify that our saved handle is part of the passed handles structure,
15
+ % otherwise ignore it
16
+ if isfield(h , savedobjlist{ii }) && ~isempty(GUIstate.(savedobjlist{ii }))
17
+ % set can address properties of multiple objects at the same time,
18
+ % which is useful for nested structure arrays of handles (e.g. 3
19
+ % sliders stored as h.slider(1), h.slider(2), ...)
20
+ nsubhandles = length(h.(savedobjlist{ii }));
21
+
22
+ % set can also set multiple properties at once, where each row of
23
+ % the passed cell array is the value to pass for each object
24
+ % handle. This syntax will not be utilized until a robust method
25
+ % for generating the cell array is developed. Get something
26
+ % functional first, then prettify...
27
+ propstoset = fieldnames(GUIstate.(savedobjlist{ii }));
28
+ for jj = 1 : length(propstoset )
29
+ if nsubhandles == 1
30
+ ValueArray = {GUIstate.(savedobjlist{ii }).(propstoset{jj })};
31
+ elseif nsubhandles > 1
32
+ ValueArray = GUIstate.(savedobjlist{ii }).(propstoset{jj });
33
+ end
34
+ set(h.(savedobjlist{ii }), propstoset(jj ), ValueArray );
35
+ end
36
+ end
37
+ end
38
+ end
0 commit comments