IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques Discussion :

répartir les callbacks d'un GUI dans plusieurs fichiers


Sujet :

Interfaces Graphiques

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 56
    Points : 50
    Points
    50
    Par défaut répartir les callbacks d'un GUI dans plusieurs fichiers
    Bonjour,

    J'ai une interface graphique avec un nombre relativement important de boutons ou autres (panel, axes, etc...). Mon fichier .m commence à prendre une taille assez ingérable : tous les callbacks, les CreateFcn, les menus contextuels, etc... Ma question est : est il possible de répartir toutes ces fonctions dans quelques fichiers ? Par exemple : panel 1 -> fichier panel1.m, panel 2 -> fichier panel2.m, ou qqch dans le genre.
    Je ne pense pas que ca existe, mais on ne sait jamais.

    Merci

  2. #2
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Bien sûr tu peux, bien que l'intérêt soit limité.
    Il faut bien penser aux variables à passer en entrées et en sorties de chaque fonction.


    Je ne vois pas trop l'intérêt car même si ton fichier est de taille importante il me semble qu'avec les dernières versions (je n'ai jamais essayé) tu peux faire des blocs que tu peux afficher ou non.

    Voir : http://www.mathworks.com/access/help...rqxeeu-49.html

    Et plus particulièrement : http://www.mathworks.com/access/help...html#brazeg3-1

    Personnellement même sans cet outil j'ai fait des fonctions qui étaient énormes et je n'ai jamais eu de souci : tant que les noms donnés au sous-fonctions sont parlants on s'y retrouve toujours (tip : pour ouvrir une fonction ou aller à une sous-fonction : CTRL+D et le début du nom de la fonction)
    Règles du Forum

    Adepte de la maïeutique

  3. #3
    Membre éclairé Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    Par défaut
    pour ma dernière GUI j'ai fait quelque-chose dont je ne sais pas si c'est très catholique.
    j'ai séparé toute ma figure en objets (par exemple un objet par panel...) qui va contenir d'autres objets suivant l'organisation
    les callback vont notifier de évènements.
    j'ai une classe principale qui va être à l'écoute de tous ces évènements et faire les traitements adéquats (ici pour toutes les fonctions tu peux faire un fichier du moment que tu la déclares comme il faut dans ton fichier définissant ta classe).
    voilà. si certains ont des critiques sur ma méthode qu'ils n'hésitent pas !

  4. #4
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 56
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par Caro-Line Voir le message
    Bien sûr tu peux, bien que l'intérêt soit limité.
    Il faut bien penser aux variables à passer en entrées et en sorties de chaque fonction.


    Je ne vois pas trop l'intérêt car même si ton fichier est de taille importante il me semble qu'avec les dernières versions (je n'ai jamais essayé) tu peux faire des blocs que tu peux afficher ou non.

    Voir : http://www.mathworks.com/access/help...rqxeeu-49.html

    Et plus particulièrement : http://www.mathworks.com/access/help...html#brazeg3-1

    Personnellement même sans cet outil j'ai fait des fonctions qui étaient énormes et je n'ai jamais eu de souci : tant que les noms donnés au sous-fonctions sont parlants on s'y retrouve toujours (tip : pour ouvrir une fonction ou aller à une sous-fonction : CTRL+D et le début du nom de la fonction)
    J'ai dû mal exprimer mon besoin puisque ta réponse ne répond pas du tout à mon problème.

    Pour tes liens : je sais cliquer sur le '-' de chaque fonction, merci. Cela ne va pas changer le nombre de fonctions dans mon fichier (j'en ai actuellement 111, et tout n'est pas écrit). Ce n'est pas tant la taille des fonctions qui est génante que leur nombre, notamment à cause du grand nombre de boutons et autres éléments graphiques sur mon interface (49 *_Callback et 23 *_CreateFcn). Donc pour naviguer dans le fichier, ce n'est pas super pratique (notamment la liste des fonctions à rallonge, ou bien par Ctrl+G).

    Pour ta premiere remarque, cela ne va pas non plus il me semble : je ne souhaite pas créer un fichier juste pour le panel1 par exemple, mais un fichier qui contiendrait les callbacks de tous les éléments graphiques de ce panel. De meme panel2.m contiendrait tous les callbacks de ses éléments graphiques et pas juste le callback/createFcn du panel. Si j'ai mal compris ce que tu proposais, merci de m'éclairer

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 56
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par tubaas Voir le message
    pour ma dernière GUI j'ai fait quelque-chose dont je ne sais pas si c'est très catholique.
    j'ai séparé toute ma figure en objets (par exemple un objet par panel...) qui va contenir d'autres objets suivant l'organisation
    les callback vont notifier de évènements.
    j'ai une classe principale qui va être à l'écoute de tous ces évènements et faire les traitements adéquats (ici pour toutes les fonctions tu peux faire un fichier du moment que tu la déclares comme il faut dans ton fichier définissant ta classe).
    voilà. si certains ont des critiques sur ma méthode qu'ils n'hésitent pas !
    c'est une approche intéressante dans le principe et qui pourrait correspondre à mon besoin, mais je ne vois pas du tout comment tu la mets en oeuvre. Si tu as un exemple de ce que tu as fait, je suis preneur !

  6. #6
    Membre éclairé Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    Par défaut
    en fait c'est un travail en cours et je n'ai pas du tout le temps en ce moment de faire un exemple 'propre' (la méthodologie s'affine petit à petit).
    sinon ce n'est rien d'autre que de la programmation objet.
    tu doit pouvoir t'en sortir avec le chapitre de la doc Matlab sur le sujet.
    encore une fois je ne sais pas si cette approche est réellement efficace.
    elle l'est en fait d'autant plus que tu as des objets identiques, qui peuvent impliquer généralement des lignes de copier-coller.
    ensuite la circulation dans les fichiers est plus aisée (tu dois pouvoir t'arranger pour avoir moins de 100 lignes par fichiers si tu n'as pas de fonctions trop complexes ou de trop gros objets) mais cela implique une bonne construction parce que le problème est déplacé transversalement ; il faut avoir une bonne vision globale du programme.
    j'avoue que c'est un peu mon problème en ce moment. je m'y retrouve très bien mais le code doit être impossible pour quelqu'un d'autre. ce n'est pas si facile de faire quelque chose de très intuitif (ce qui est tout de même le but).
    cependant si ta conception est bonne (encore une fois c'est loin d'être le plus facile !), le reste doit couler de source.

  7. #7
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Tu peux mettre ce que tu veux dans les CreateFcn et Callback de tes objets sans être obligé de passer par les trucs horribles créés automatiquement par GUIDE (car je suppose que tu as utilisé GUIDE d'où les problèmes)

    Donc dans le property editor tu associes à tous les objets contenus dans panel1 la fonction panel1 en lui passant les arguments qui vont bien pour faire le traitement adéquat.

    Imaginons que mon panel contient 2 boutons OK et Cancel :
    Pour OK :
    Pour Cancel :
    GCBO permettant de récupérer le handle de l'objet courant.

    En fait le handle seul devrait permettre de savoir l'action à faire.


    Sinon, tu es sur d'avoir besoin de 23 CreateFcn ?
    Pour moi les CreateFcn ne servent à rien (mais je n'utilise pas GUIDE il faut dire...)
    Règles du Forum

    Adepte de la maïeutique

  8. #8
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Citation Envoyé par Caro-Line Voir le message
    Sinon, tu es sur d'avoir besoin de 23 CreateFcn ?
    Pour moi les CreateFcn ne servent à rien (mais je n'utilise pas GUIDE il faut dire...)
    J'utilise GUIDE et pour moi aussi les CreateFcn ne servent à rien, tout ce qui concerne l'initialisation de la fenêtre doit être dans l'OpeningFcn selon moi
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  9. #9
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 56
    Points : 50
    Points
    50
    Par défaut
    Effectivement j'utilise Guide (à cause du trop grand nombre de boutons à programmer à la main sinon...).

    Les fonctions CreateFcn : elles sont créées automatiquement par guide, je n'ai pas pensé qu'on pouvait les supprimer. Ca fonctionne sans ces fonctions ? C'est vrai que la plupart sont vides, sauf pour le backgroundcolor des champs edit, à vrai dire, mais ca pourrait surement etre regroupé dans l'OpeningFcn. J'essaierai de les supprimer.

    Je ne connaissais pas la méthode proposée pour les panels (exemple de Caro-Line) : a priori, c'est justement ce que je voulais faire, merci ! J'essaie

  10. #10
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Attention quand tu supprimes les CreateFcn à bien les supprimer aussi dans GUIDE (dans la propriété CreateFcn de ton objet) pour éviter d'avoir des erreurs
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer textes dans plusieurs fichiers RTF sans les ouvrir
    Par jpvba65 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 25/01/2014, 17h13
  2. Répartir les données d'un XML dans un tableau
    Par GrandFather dans le forum Télécharger
    Réponses: 0
    Dernier message: 10/01/2012, 16h15
  3. Comment répartir son script dans plusieurs fichiers
    Par volkukan dans le forum Général Python
    Réponses: 2
    Dernier message: 25/11/2009, 12h40
  4. Réponses: 6
    Dernier message: 07/10/2009, 11h17
  5. répartir son code dans plusieurs fichiers
    Par peuf23 dans le forum Débuter
    Réponses: 5
    Dernier message: 10/09/2008, 12h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo