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

Discussion :

Utiliser le glisser-déposer

  1. #1
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut Utiliser le glisser-déposer
    Bonjour à tous j'essaye de faire un glisser déposer avec QT pour une applicationd e recherche afin de glisser directement un fichier dans ma textedit, mais j'ai un problème le prototypage de fonction n'ai pas bonne ou j'ai mal déclarer quelque chose pourriez-vous m'aider voici mon code pour textfinder.cpp:

    Code C++ : 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    #include "textfinder.h"
    #include "ui_textfinder.h"
    #include <QFile>
    #include <QTextStream>
    #include <iostream>
    #include <QFileDialog>
    #include <QSyntaxHighlighter>
    #include <QMessageBox>
     
     
    textfinder::textfinder(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::textfinder)
    {
        ui->setupUi(this);
        setAcceptDrops(true);//ici j'autorise le glisser déposer
    }
     
    textfinder::~textfinder()
    {
        delete ui;
    }
     
    void textfinder::on_findbutton_clicked()
    {
         //on vérifie que le text edit contient bien du text
        if(ui->textEdit->toPlainText().isEmpty()){
           QMessageBox::critical(this, "Erreur", "Veuillez s'il vous plaît charger un texte à l'aide avec le menu en haut à gauche.");
         }
        //on vérifier qu'un mot à bien était entré
        if(ui->lineEdit->text().isEmpty()){
             QMessageBox::critical(this, "Erreur", "Veuillez saisir un mot à rechercher s'il vous plaît.");
        }
     
        QPalette palette = ui->textEdit->palette();
        palette.setColor(QPalette::Highlight, Qt::green);
     
      QString searchString = ui->lineEdit->text();
      if(ui->radioButton->isChecked()){
        ui->textEdit->find(searchString,QTextDocument::FindWholeWords);
      }else{
         ui->textEdit->find(searchString,QTextDocument::FindBackward);
      }
    }
     
     
    void textfinder::dropEvent(QDropEvent *event)
    {
        ui->textEdit->setPlainText(event->mimeData()->text());
        mimeTypeCombo->clear();
        mimeTypeCombo->addItems(event->mimeData()->formats());
     
        event->acceptProposedAction();
     
    }
     
     
    void textfinder::loadTextFile()
    {    QString cheminfichier;
         cheminfichier = QFileDialog::getOpenFileName(this,tr("Open file"),"C:/Users/kevin/Documents", tr(" File (*.txt;*.cpp;*.java;)"));
         QFile inputFile;
         inputFile.setFileName (cheminfichier);
        inputFile.open(QIODevice::ReadOnly);
        QTextStream in(&inputFile);
        QString line = in.readAll();
        inputFile.close();
        ui->textEdit->setPlainText(line);
        QTextCursor cursor = ui->textEdit->textCursor();
        cursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor, 0);
     
    }
     
    void textfinder::on_actionOuvrir_triggered()
    {   loadTextFile();
    }

    voici mon fichier .h:

    Code C++ : 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
    20
    21
    22
    class textfinder : public QMainWindow
    {
        Q_OBJECT
     
    public:
        explicit textfinder(QWidget *parent = 0);
        ~textfinder();
     
    private slots:
        void on_findbutton_clicked();
     
        void on_actionOuvrir_triggered();
      //  void mousePressEvent();
        void dropEvent();
     
    private:
        Ui::textfinder *ui;
        void loadTextFile();
     
    };
     
    #endif // TEXTFINDER_H

    et enfin voici les erreurs retourné :

    Nom : drop.PNG
Affichages : 303
Taille : 15,3 Ko

    merci à vous cordialement.

  2. #2
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Points : 5 545
    Points
    5 545
    Par défaut
    Bonjour,

    Vous vous êtes pour l'erreur tout simplement trompé dans le prototype du dropEvent() dans le .h :

    =>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void dropEvent(QDropEvent *event);
    Bonne journée,
    Louis
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  3. #3
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    Je vous remercie de votre réponse Louis en effet sa fonctionne,mais pour le glissement cela ne fonctionne pas je ne comprends pas:

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void textfinder::dropEvent(QDropEvent *event)
    {
        ui->textEdit->setPlainText(event->mimeData()->text());
        mimeTypeCombo->clear();
        mimeTypeCombo->addItems(event->mimeData()->formats());
     
        event->acceptProposedAction();
     
    }

    le compilateur me dis 'mimeTypeCombo' was not declared in this scope.J'avais vue se code sur developpez mais de quel type doit-il être et cette instruction est-elle absolument nécessaire pour déposer mon fichier dans mon textEdit cordialement.

  4. #4
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Points : 5 545
    Points
    5 545
    Par défaut
    Bonjour,

    J'imagine qu'il s'agit d'un QListView ou quelque chose dans le genre, c'est-à-dire un élément graphique contenant une liste d'éléments. Dans le cas présent, je ne pense pas que vous en ayez besoin, par conséquent je vous suggère de retirer les deux lignes contenant ce widget, ce qui devrait vous éviter cette erreur.

    Bonne journée,
    Louis
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  5. #5
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    Merci de votre réponse en effet je n'ai plus l'erreur l'application se lance mais quand je veux déposer un fichier texte dans ma textedit sa m'affiche le path du fichier je ne comprend pas pourquoi me manque t-il une fonction?

  6. #6
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Points : 5 545
    Points
    5 545
    Par défaut
    Bonsoir,

    En gros, vous souhaitez faire un drag'n'drop d'un fichier et que le contenu de ce fichier s'ajoute au champ de texte ?
    Si c'est le cas, je vous propose ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    QFile file(event->mimeData()->text());
    if (file.open(QIODevice::ReadOnly | QIODevice::Text))
        ui->textEdit->setPlainText(QString(file.readAll()));
    else
        qDebug(qPrintable(file.errorString()));
    En théorie cela devrait fonctionner, sinon cela affichera un warning dans les logs de l'application.

    Bonne soirée,
    Louis
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  7. #7
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    j'ai fais comme vous me l'avais dit mais même problème :

    voici mon fichier textfinder.cpp:

    Code C++ : 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    #include "textfinder.h"
    #include "ui_textfinder.h"
    #include <QFile>
    #include <QTextStream>
    #include <iostream>
    #include <QFileDialog>
    #include <QSyntaxHighlighter>
    #include <QMessageBox>
    #include <QMimeData>
     
     
    textfinder::textfinder(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::textfinder)
    {
        ui->setupUi(this);
        setAcceptDrops(true);
    }
     
    textfinder::~textfinder()
    {
        delete ui;
    }
     
    void textfinder::on_findbutton_clicked()
    {
         //on vérifie que le text edit contient bien du text
        if(ui->textEdit->toPlainText().isEmpty()){
           QMessageBox::critical(this, "Erreur", "Veuillez s'il vous plaît charger un texte à l'aide avec le menu en haut à gauche.");
         }
        //on vérifier qu'un mot à bien était entré
        if(ui->lineEdit->text().isEmpty()){
             QMessageBox::critical(this, "Erreur", "Veuillez saisir un mot à rechercher s'il vous plaît.");
        }
     
        QPalette palette = ui->textEdit->palette();
        palette.setColor(QPalette::Highlight, Qt::green);
     
      QString searchString = ui->lineEdit->text();
      if(ui->radioButton->isChecked()){
        ui->textEdit->find(searchString,QTextDocument::FindWholeWords);
      }else{
         ui->textEdit->find(searchString,QTextDocument::FindBackward);
      }
    }
     
     
    void textfinder::dropEvent(QDropEvent *event)
    {
        QFile file(event->mimeData()->text());
        if(file.open(QIODevice::ReadOnly))
        ui->textEdit->setPlainText(QString(file.readAll()));
        else
                qDebug(qPrintable(file.errorString()));
     
        event->acceptProposedAction();
     
    }
     
     
    void textfinder::loadTextFile()
    {    QString cheminfichier;
         cheminfichier = QFileDialog::getOpenFileName(this,tr("Open file"),"C:/Users/kevin/Documents", tr(" File (*.txt;*.cpp;*.java;)"));
         QFile inputFile;
         inputFile.setFileName (cheminfichier);
        inputFile.open(QIODevice::ReadOnly);
        QTextStream in(&inputFile);
        QString line = in.readAll();
        inputFile.close();
        ui->textEdit->setPlainText(line);
        QTextCursor cursor = ui->textEdit->textCursor();
        cursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor, 0);
     
    }
     
    void textfinder::on_actionOuvrir_triggered()
    {   loadTextFile();
    }

    et voici ce que sa fait quand j'effectue un glisser déposer:

    Nom : Capture.PNG
Affichages : 390
Taille : 143,8 Ko

    la fonction n'ai pas appelait je pense peut-être qu'il manque quelque chose seriez-vous quoi s'il vous plaît?

  8. #8
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Points : 5 545
    Points
    5 545
    Par défaut
    Bonsoir,

    En fait, la classe qui reçoit le dropEvent doit être votre TextEdit et non votre MainWindow, d'où le fait que cela ne soit pas appelé. Vous devrez donc écrire une sous-classe de QTextEdit/QPlainTextEdit dans lequel vous placerez le setAcceptDrops(true) ainsi que le dropEvent(). Voici un exemple simple qui fonctionne :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    #include <QApplication>
    #include <QtWidgets>
     
    class MyTextEdit : public QPlainTextEdit
    {
    public:
        MyTextEdit() : QPlainTextEdit()
        {
            setAcceptDrops(true);
        }
     
    protected:
        virtual void dropEvent(QDropEvent *event)
        {
            QFile file(QUrl(event->mimeData()->text()).toLocalFile());
     
            if (file.open(QIODevice::ReadOnly | QIODevice::Text))
                setPlainText(QString(file.readAll()));
            else
                qDebug(qPrintable(file.errorString()));
     
            event->acceptProposedAction();
        }
    };
     
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
     
        MyTextEdit e;
        e.show();
     
        return a.exec();
    }
    J'ai changé la ligne du QFile, j'avais oublié qu'il fallait avoir un chemin en C:/etc. et non en file:// pour que le QFile fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QFile file(QUrl(event->mimeData()->text()).toLocalFile());
    N'hésitez pas si vous avez des questions,
    Bonne soirée,
    Louis
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  9. #9
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    Excusez moi mais j'ai pas trop compris,la classe que je dois crée ou dois-je la mettre,et comment je m'est en rapport cette classe et mon textEdit désoler encore de prendre de votre temps.

  10. #10
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Points : 5 545
    Points
    5 545
    Par défaut
    Bonsoir,

    En fait, il vous faut complètement remplacer votre textEdit de QTextEdit ou autre en cette nouvelle classe. Pour cela, créez un fichier mytextedit.h, et mettez-y le code suivant dedans :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #ifndef MYTEXTEDIT_H
    #define MYTEXTEDIT_H
     
    #include <QtWidgets>
     
    class MyTextEdit : public QTextEdit
    {
    public:
        MyTextEdit(QWidget *parent = 0)
            : QTextEdit(parent)
        {
            setAcceptDrops(true);
        }
     
    protected:
        virtual void dropEvent(QDropEvent *event)
        {
            QFile file(QUrl(event->mimeData()->text()).toLocalFile());
     
            if (file.open(QIODevice::ReadOnly | QIODevice::Text))
                setPlainText(QString(file.readAll()));
            else
                qDebug(qPrintable(file.errorString()));
     
            event->acceptProposedAction();
        }
    };
     
    #endif // MYTEXTEDIT_H
    Cela fait, dans votre fichier .ui, faites un clic droit sur votre textedit > Promouvoir en...
    Dans la fenêtre qui s'ouvre, sélectionnez comme classe de base QTextEdit, indiquez comme nom de la classe promue "MyTextEdit" (ou le nom de la classe que vous aurez mis), fichier d'en-tête mytextedit.h. Cochez ou non global, je ne sais pas trop ce que ça change (j'imagine que ça change juste le fait que d'autres fichier .ui y auront accès ou non). Cliquez sur Ajouter, cochez l'entrée de la liste qui s'est ajoutée, et cliquez sur Promouvoir. En théorie, il ne reste plus qu'à compiler et ce sera bon.

    Bonne soirée,
    Louis
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  11. #11
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    J'ai fais comme vous avez dis me cela me retourne plein d'erreur,de plus si je procède comme sa mon textedit n'ai plus utilisable pour les autres paramétrage que j'avais fait c'est à dire je ne peux plus aire ui->textedit:

    Nom : Capture1.PNG
Affichages : 287
Taille : 13,3 Ko

    Nom : Capture2.PNG
Affichages : 289
Taille : 16,3 Ko

    Bonne soirée

  12. #12
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Points : 5 545
    Points
    5 545
    Par défaut
    Bonsoir,

    En fait, si, c'est bien fonctionnel et vous pouvez toujours utiliser ui->textedit. Cependant, vous devez bien respecter le nom précis de la classe. Si jamais vous mettez mytextedit dans la fenêtre de Promotion alors que le nom de la classe est MyTextEdit, alors cela produira les erreurs que vous avez obtenues.

    Bonne soirée,
    Louis
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  13. #13
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    En effet sa marche c'est super encore merci pour votre patience et pour m'avoir aidé je m'est la discussion en résolu.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/02/2006, 14h33
  2. Listes Simples et propriétés / Glisser déposer
    Par MeRc|LeSs dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 03/12/2005, 23h14
  3. Paramétrage du glisser-déposer selon l'application cible
    Par annedeblois dans le forum Windows
    Réponses: 3
    Dernier message: 17/10/2005, 21h57
  4. Glisser déposer sur formulaire
    Par norvel dans le forum Access
    Réponses: 5
    Dernier message: 03/10/2005, 11h20
  5. [MFC] Glisser/Déposer dans une CView
    Par octopus984 dans le forum MFC
    Réponses: 2
    Dernier message: 26/04/2005, 10h15

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