bonjour à tous,

J'ai un petit soucis avec les arborescences matlab (et le composant uitree), non documenté bien sur ...

En fait, j'ai une arborescence qui me permet de récupérer toute l'arborescence de fichiers et dossiers, jusque là tout va bien. Voilà le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
function figure1_CreateFcn(hObject, eventdata, handles)
 
root = uitreenode('v0','c:\','C:\',[], false);
t = uitree('v0','Root',root,'ExpandFcn',@Expfcn);
position = get(hObject,'Position');
setPosition(t,[5 5 300 650]);
set(t,'NodeSelectedCallback', @SelectedNode);
 
function node = SelectedNode(tree,value)
%
%
cNode = value.getCurrentNode;
disp(cNode.getName);
 
 
 
function nodes = Expfcn(tree, value)
  try
      count = 0;
      disp(value);
      ch = dir(value);
      disp(ch);
      for i=1:length(ch)
          if (any(strcmp(ch(i).name, {'.', '..', ''})) == 0)
              count = count + 1;
              if ch(i).isdir
                  iconpath = [matlabroot, '/toolbox/matlab/icons/foldericon.gif'];
              else
                  iconpath = [matlabroot, '/toolbox/matlab/icons/pageicon.gif'];
              end
              nodes(count) = uitreenode('v0',[value, ch(i).name, filesep], ...
                  ch(i).name, iconpath, ~ch(i).isdir);
          end
      end
  catch
      error(['The uitree node type is not recognized. You may need to ', ...
          'define an ExpandFcn for the nodes.']);
  end
 
  if (count == 0)
      nodes = [];
 end
Après, j'aimerai remplacer l'arborescence de fichiers / dossiers par 'une arborescence' quelconque dont les éléments du dernier niveau sont stockés dans une classe matlab.
La classe que j'utilise est du type :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
classdef arbo
 
%Attributes
    properties (SetAccess = private)
        name
        name parent
        name grand parent
    end     
 
    methods 
        ...
    end
end %end-classdef
Et pour chaque élément de la classe arbo, je voudrais récupérer les parent, grand parent communs pour créer l'arborescence comme suit :


name grand parent
_____name parent
_________name
_________name
_____name parent
_________name
_________name
_________name
name grand parent
_____name parent
_________name
_________name

En fait, les éléments de la classe arbo sont les derniers éléments de mon arborescence et les attributs parent et grand parent sont les niveaux supérieurs.

Finalement, mon principal problème est de créer l'arborescence à partir de données Matlab et pas à partir de dossiers / fichiers avec lesquels on peut utiliser les commandes de style 'dir', 'isdir', ...
Mon second problème est de récupérer et comparer mes attributs de façon propre et en minimisant les temps de calcul, mais c'est secondaire.

Toutes les idées seront les bienvenues!!

Merci par avance,
Mary.