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 :

Afficher une liste de fichier dans un popupmenu [Débutant]


Sujet :

Interfaces Graphiques

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 20
    Points : 10
    Points
    10
    Par défaut Afficher une liste de fichier dans un popupmenu
    Bonjour à tous,

    Je suis de nouveau confronté à de petits soucis qui m'ont fait perdre ma matiné .

    Je viens donc ici chercher conseils et réconfort

    J'ai un GUI constitué de plusieurs pages, chacune d'elles contient des popupmenus censé affiché une liste de fichiers ayant une extension bien particulière.

    J'ai bien regardé l'aide Matlab et un peu partout sur internet à propos des fonctions uigetfile, uiimport, load, uigetdir etc ... mais, à moins que je ne soit passé à coté de quelque chose, ces fonctions ouvre systématiquement une fenetre de sélection.

    J'aimerai que le popupmenu affiche sans actions de la part de l'utilisateur la liste des fichiers.

    L'avantage c'est que chaque popupmenu est exclusiement destiné à l'affichage d'un type de fichier, ceux_ci sont dans un répertoire qui leurs est propre et qui est toujours placé au même endroit.

    Merci d'avance,

  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 828
    Points
    14 828
    Par défaut
    Regarde du côté des fonctions DIR et LS

  3. #3
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Points : 59
    Points
    59
    Par défaut
    salut
    alors voici quelques conseils, car j'ai fait la meme chose que toi sauf que dans mon cas tout est dynamique et je trouve cela mieux (notamment si tu souhaites faired es MAJ)
    Dans le cas statiques il faut :
    1) que tu fournisses le path ou se trouvent tes fichiers . cela tu le fais de la maniere suivante:
    de ce fait p est une structure contenant tout tes elelements du path. Tu peux alors consulter leur nom avec p(1).name, p(2).name etc.
    Attention ca prend aussi les dossiers.
    Si tu veux en faire le tri il te faudra alors utiliser isdir ou bytes pour savoir si ton element est un fichier ou un dossier et cela avec une boucle

    2)
    que tu affiches le nom de tes fichiers dans un popumenu. Pour cela je te conseil d'utiliser une concatenation verticale de tes chaines de caracteres a l'aide de ce type de boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    temporary_field=''
    for w=1:nb_files;
            temporary_field= strvcat(temporary_field,p(w).name)
    end
    note que nb_files est le nombre de fichiers qu'il y a dans ta structure (il faut utiliser la commande size pour connaitre le nombre d'elements)

    3)
    a afficher le tout dans ton popup menu avec cetet commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set(gcbo,'str',cellstr(temporary_field)
    ou
    avec handles.ton_popupmenu a la place de gcbo

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 309
    Points : 52 895
    Points
    52 895
    Par défaut
    Ou en utilisant DEAL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    d=dir;
    [str{1:numel(d)}]=deal(d.name);
     
    set(<handle de l'objet popupmenu>,'string',str)

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    Merci beaucoup pour vos réponses j'essai ça tout de suite

  6. #6
    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 828
    Points
    14 828
    Par défaut
    Si je puis donner mon avis, dans ce cas le LS est quand même le plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    liste=ls('mon_repertoire')
    Et pour n'avoir que les fichiers avec une certaine extension :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    liste=ls('mon_repertoire/*.mat')
    Ce qui donne un objet cell qui se met direct en argument du set :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set(<handle de l'objet popupmenu>,'string',liste)
    Ce qui donne exactement (en format ligne alors que LS le donne en format colonne) la même chose que ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    d=dir('mon_repertoire/*.mat');
    liste={d(:).name}

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    Bon, j'étais revenu pour dire que la réponse de cococococo fonctionnait bien, pour la récupération et l'affichage.
    Il ne me restait plus qu'a régler le problème des extensions qui s'annonce un tout petit peu plus génant.

    Je vais donc essayer ta solution qui à l'air plutot simple.

    J'y vais de ce pas, merci.



    Me revoila.

    En m'inspirant de ce que tu m'a dit, j'ai écrit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function test2
     
    liste = ls('M:\BR62\esmorphe\accel\points/*.100');
     
    handle = findobj(gcbf,'tag','menu_fichier_rapport1');
     
    set(handle,'string',liste);
     
    end
    Mais j'ai ensuite l'erreur suivante:

    ??? Error using ==> ls
    Too many output arguments.

    Error in ==> C:\Documents and Settings\mesures\My Documents\64862_BR62_Scripts_Depouillement\Scripts\test2.m
    On line 3 ==> liste = ls('M:\BR62\esmorphe\accel\points/*.100');

    ??? Error while evaluating uicontrol Callback.

  8. #8
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Points : 59
    Points
    59
    Par défaut
    concernant les pb de l'extension je peux te conseiller d'utiliser la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [nom_de_fichier, extension] = strtok(rem, '.')
    ou rem est ta chaine de caractere (il est possible qu'il faille la convertir en char avant)

    strtok permet de couper les chaines de caracteres suivant un delimiteur qui dans ton cas serait le point "."
    tu coupes ta chaines en deux avant de l'afficher et tu affiches que la partie gauche. De ce fait tu as tes noms de fichiers sans l'extension

  9. #9
    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 828
    Points
    14 828
    Par défaut
    Citation Envoyé par Maickeul
    Mais j'ai ensuite l'erreur suivante:
    ??? Error using ==> ls
    Too many output arguments.

    Error in ==> C:\Documents and Settings\mesures\My Documents\64862_BR62_Scripts_Depouillement\Scripts\test2.m
    On line 3 ==> liste = ls('M:\BR62\esmorphe\accel\points/*.100');

    ??? Error while evaluating uicontrol Callback.
    Argh, tu ne m'avais pas dit que tu avais la version 6.5.1 dans un post précédent par hasard ?
    Dans ce cas la fonction ls ne peut être utilisée car il me semble que dans cette version elle ne retournait pas d'argument...
    Donc il faut donc utiliser dir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    d=dir('M:\BR62\esmorphe\accel\points\*.100');
    liste={d(:).name};
    handle = findobj(gcbf,'tag','menu_fichier_rapport1');
    set(handle,'string',liste);
    @cococococococo => la fonction FILEPARTS est la mieux adaptée pour récupérer les extensions.

  10. #10
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Points : 59
    Points
    59
    Par défaut
    J'avoue: Je ne fait pas toujours dans la dentelle

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    Oui effectivement j'ai la version 6.5.1, c'est d'ailleur à un problème de version que j'ai pensé quand j'ai eu cette erreur, j'aurai du le repréciser.

    Sinon je vien de modifier ma fonction grace aux précisions que vous avez apportées (voir ci-dessous).
    Ca marche très bien.

    Ce que je n'avais pas précisé, c'est qu'en fait les fichiers que je voulais récupérer n'avaient pas tous la même extension, mais le même début d'extension, à savoir, dans le cas présent, *.1xx .
    j'ai donc remplacé *.100 par *.1* et ça marche très bien, j'ai bien tous mes fichiers *.100, *.101, etc... et il me filtre les fichiers *.2xx qui devront apparaitres dans un 2ème popupmenu.

    Comme la fonction, n'est pas très longue je vous la met:

    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
    function FichierDansPopupmenuAvecExtension()
     
    liste_fichier = dir('M:\BR62\esmorphe\accel\points/*.1*');  % Liste des fichiers à l'adresse indiqué dont l'extension est .1xx
     
    nb_fichier = size(liste_fichier);                           % Renvoi le nombre de fichiers trouvés dans la variable nb_fichier
     
       handle_rapport1 = findobj(gcbf,'tag','menu_fichier_rapport1');   % Récupère le handle du popupmenu des fichiers du rapport 1
     
       liste_menu = 'Rapport 1 (*.1xx)';                        % Initialisation de la variable liste_menu
     
        for i=1:nb_fichier;                                     % Boucle comptant de 1 à nb_fichier
     
            liste_menu = strvcat(liste_menu,liste_fichier(i).name);     % Concaténation des noms de fichiers récupérés avec liste_menu
     
        end
     
       set(handle_rapport1,'string',liste_menu);                % Insertion de la liste de fichier dans le popupmenu du rapport 1
     
    end
    Gros merci à vous pour toutça, explications, précisions, etc...

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

Discussions similaires

  1. Afficher une liste de fichiers dans Excel
    Par EmmaZL dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/12/2007, 19h41
  2. [Débutant] Afficher une liste de fichiers dans un ListBox
    Par Zwblirgx dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 03/10/2007, 09h47
  3. Réponses: 4
    Dernier message: 19/10/2006, 17h19
  4. Recheche commande AWK pour afficher une liste de fichiers
    Par Krispy dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 21/07/2006, 11h36
  5. Réponses: 1
    Dernier message: 24/05/2006, 11h00

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