Bonjour,
J'ai des problèmes, surement dus à une mauvaise compréhension, en utilisant les fonction guihandles et guidata.
Je précise que j'aimerais éviter les variables globales

Je déclare dans ma fonction principale une figure globale et une variable new_choix dans la structure data.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
function gui_simu
% Création de l'objet Figure (fenêtre principale de la gui)
figure('units','pixels',...
    'position',[resol(3)*0.1,resol(4)*0.1,resol(3)*0.8,resol(4)*0.8],...
    'color',[1.0 1.0 1.0],...
    'numbertitle','off',...
    'name','Simulateur d images US',...
    'menubar','none',...
    'tag','interface');
data=guihandles(gcf);
data.new_choix=0;
guidata(gcf,data);
J'appelle ensuite une nouvelle fonction 'param_deplacement'

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
 
function param_deplacement
 
y_top=0.3;
x_top=0.01;
dy=0.03;
dx=0.3;
 
 
% Titre général
% Création de l'objet Uicontrol popup-menu
uicontrol('style','popupmenu',...
    'units','normalized',...
    'position',[x_top y_top-dy dx/2*0.9 dy*2/3],...
    'string','Flux parabolique|Translation',...
    'callback',@choix_dep,...
    'tag','bouton_popup_dep');
qui appelle une fonction 'choix_dep' via un callback sur un menu popup.

Mon problème se situe ici
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
function choix_dep(obj,event)
 
% Fonction appelée lors de l'utilisation du menu popup de choix de type de déplacement
data=guidata(gcbf)
 
choix=get(data.bouton_popup_dep,'value');
switch(choix)
    case(1)
        param_vaisseau
    case(2)
        param_lineaire
end
Je ne vois pas data.new_choix que j'aimerais utiliser pour savoir si cette fonction choix_dep a déjà été appelée.

J'ai généralement du mal avec guihandles et guidata. Je ne comprends pas bien comment faire pour que tout ce qui est dans data soit visible tout le temps en appelant guidata(gcbf).

Merci de votre aide,
Adrien