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

wxWidgets Discussion :

Glisser-déposer vers CtrlList


Sujet :

wxWidgets

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 48
    Points : 17
    Points
    17
    Par défaut Glisser-déposer vers CtrlList
    Bonjour à tous,

    Je suis plutôt débutant en programmation avec wxWidgets, et je suis confronté à quelques problèmes...
    Je vais vous décrire ce que je souhaite faire pour que cela soit plus clair.

    J'ai un CtrlList dans une fenêtre et je souhaiterais que je puisse glisser uniquement des fichiers (pas de dossier) vers cette liste. Quand je dis glisser des fichiers je souhaite uniquement récupérer le chemin complet du fichier.

    Une fois glissé j'aimerais ajouter la ligne dans la liste (ça c'est OK), et conserver pour chaque ligne (fichier glissé) une donnée supplémentaire (l'identifiant du thread qui sera lancé).

    En regardant la doc officielle, un tuto pour créer un serveur FTP, je ne parviens pas à faire ce que je souhaite.

    Quelqu'un pourrait-il m'expliquer comment procéder? J'ai lu sur la doc "Override this function to receive dropped files.", mais je ne comprends pas vraiment ce qu'est une surcharge, et pourquoi devoir surcharger (je le comprends très bien pour un constructeur mais là non).
    http://docs.wxwidgets.org/stable/wx_...filedroptarget

    Donc pour résumer je ne dois accepter que les fichiers (toutes extensions) dans cette liste, et conserver pour chaque ligne les infos du thread pour mettre des boutons dans la liste et que l'appui sur ces derniers permettent de stopper, ou mettre en pause un téléchargement.

    Mais là je nage complètement...

    Merci à vous

  2. #2
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Oui le fonctionnement se trouve dans "wxFileDropTarget"


    Au départ il faut connecter un événement sur la CtrlList

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Connect(LaCtrlList->GetId(), wxEVT_COMMAND_LIST_BEGIN_DRAG, wxListEventHandler(LaClass::OnDragInit));
    Cette fonction permet de valider ou non si il faut créer une "wxDropSource"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void LaClass::OnDragInit(wxListEvent& evt)
    Si c'est le cas, on créer un objet "wxDropSource" et on appel "DoDragDrop".

    Pour indiquer quel élément peut recevoir ce "wxDropSource", il faut créer une classe qui hérite de wxDropTarget
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class wxDropTargetPersonal: public wxDropTarget
    Puis affecter un nouvel objet de ce type à un composant wxWidgets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Composant->SetDropTarget(new wxDropTargetPersonal(this));
    Ensuite il faut quand même un peu lire la documentation pour finir le système, mais déjà avec tout cela en place, 90% de l'architecture est mise en place, il suffit de compléter chaque classe.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 48
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    Merci pour cette réponse je vois un peu mieux le cheminement.

    Mais j'ai deux questions:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class wxDropTargetPersonal: public wxDropTarget
    pourquoi on ne dérive pas de wxFileDropTarget?

    et pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Composant->SetDropTarget(new wxDropTargetPersonal(this));
    pourquoi passe-t-on "this" lors de l'apel du constructeur alors que la déclaration n'attends aucun paramètre.

    De plus je ne comprends pas pourquoi je doit créer un wxDropSource alors que je ne souhaite qu'être une cible de drag and drop et récupérer le nom du fichier glissé.

    Merci.

  4. #4
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Je pensais que le problème était entre 2 "CtrlList" ?
    Effectivement, si c'est directement des fichiers depuis l'explorateur de fichiers.

    Il vaut mieux utiliser wxFileDropTarget

    "this" était un besoin interne à mon code (j'ai oublié de le supprimer au copier/coller)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Composant->SetDropTarget(new wxDropTargetPersonal());
    Donc oui dans ce cas, pas besoin de faire une "DropSource".

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 48
    Points : 17
    Points
    17
    Par défaut
    Merci pour ta réponse.

    Tout fonctionne parfaitement.

    Bonne continuation

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

Discussions similaires

  1. [XL-2003] Glisser déposer depuis une frame vers une autre frame
    Par sebrou01 dans le forum Excel
    Réponses: 4
    Dernier message: 27/04/2015, 10h03
  2. Réponses: 1
    Dernier message: 16/09/2011, 18h28
  3. Glisser déposer vers barre perso
    Par alexdevl dans le forum Firefox
    Réponses: 1
    Dernier message: 02/07/2009, 07h07
  4. Glisser/déposer une image du net vers le bureau à l'endroit déposé
    Par yakkusa dans le forum RedHat / CentOS / Fedora
    Réponses: 3
    Dernier message: 07/06/2009, 18h58
  5. Réponses: 6
    Dernier message: 15/09/2006, 17h52

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