bonjour
j'ai developpé une application matlab avec des figures et UI control dans la version R2012b
je dois maintenant la porter en R 2016b et je rencontre des problemes car, si je comprends bien, le systemes graphique a été modifié avec R2014.
Le site de matlab indique que certains codes graphiques devront être revisités (= adaptés ?) pour fonctionner.
Parmi les modifications, il semble que les UIcontrol aient été modifiés:
avant h= uicontrol (parametres) retournait un handle qui pouvait si besoin être utilisé comme un nombre.
R2014 et plus , la même commande h= uicontrol (parametres) retourne une structure et donc h ne peut plus être utilisé comme un nombre.
Mon code ne marche plus à cause de cela...d'autant que il y a des commandes callback d'autre éléments graphique qui utilise le handle du UI control en tant que "nombre".
exemple
la ligne qui ne fonctionne plus est "TextCallback=['RepositionneBouttonState(' num2str(StatePanel.HandleState(indice)) ', ' StatePanel.Name '.WithHighDessin );'];"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 StatePanel.HandleState(indice)=uicontrol('Style','pushbutton','Position',PositionUIControl,'String',NomState,'FontSize',TaillePolice,'Parent',StatePanel.HDessin); % Hpanel StatePanel.ListUIControlInclus(IndiceUIControl)=StatePanel.HandleState(indice); % pour fonctionnementdes sliders du panel IndiceUIControl=IndiceUIControl+1; % TextCallback=['RepositionneBouttonState(' num2str(StatePanel.HandleState(indice)) ');']; TextCallback=['RepositionneBouttonState(' num2str(StatePanel.HandleState(indice)) ', ' StatePanel.Name '.WithHighDessin );']; % RepositionneBouttonState(Handle) est une fonction pour deplacer % le bouton a la sourie set(StatePanel.HandleState(indice),'callback',TextCallback);
car StatePanel.HandleState(indice) n'est plus un handle mais une structure. (c'est donc num2str qui plante, logique)
je n'ai pour le moment aucune idee de la façon de corriger et j'ai bien peur de devoir réécrire une bonne partie de l'application. (qui n'est pas petite)
Dans les propriétés de la structure retournée par la commande UIControl, je ne vois rien qui ressemble à un handle.
Sur le site de Matworks j'ai trouvé un utilitaire censé faciliter ce type de portage ("analyse du code et propositions de corrections" ; Il se nomme "R2014b Graphics Update Tools" et le fichier à telecharger est "R2014b Graphics Update Tools.mltbx" (je comprends vu l'extension que c'est une toolbox ?) mais je n'ai aucune idée de comment installer et utiliser cet utilitaire.
Des idées ?
Merci
Partager