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 :
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.
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
La classe que j'utilise est du type :
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 :
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
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.
Partager