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

GTK+ avec C & C++ Discussion :

Faire un bouton copier. [FAQ]


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    Software engineer
    Inscrit en
    Août 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Software engineer

    Informations forums :
    Inscription : Août 2006
    Messages : 73
    Par défaut Faire un bouton copier.
    Bonjour,

    Je réalise un éditeur de texte avec gtk+, mais je n'arrive pas à faire un simple copier! Voici ma fonction callback:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void cb_copy(GtkWidget *widget, gpointer data)
    {
        Editor *editor = data;
     
        gtk_text_buffer_copy_clipboard(editor->buffer, editor->clipboard);
     
    }
    Toute simple mais quand je fais un copier dans mon programme (biensur sans utiliser ctrl + c ou le bouton droit de la souris + copier) j'obtiens cette erreur dans la console:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (Gtk.exe:256): Gtk-CRITICAL **: gtk_clipboard_set_with_data: assertion `clipboar
    d != NULL' failed
    Mais je ne comprends pas comment puis-je faire pour résoudre le problème.
    Merci d'avance pour vos réponses,
    Kuppidon.

    ps: je vous met la structure "Editor" si vous en avez besoin:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    typedef struct
    {
        GtkWidget *textEdit;
        GtkTextBuffer *buffer;
        GtkClipboard *clipboard;
        gboolean modified;
        gboolean alrdySave;
        gchar *chemin;
        gchar *filename;
     
    }Editor;

  2. #2
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Bonjour,

    GTK+ te dis gentillement que ton argument editor->clipboard est NULL. As tu créé un GtkClipboard ?

  3. #3
    Membre éclairé

    Homme Profil pro
    Software engineer
    Inscrit en
    Août 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Software engineer

    Informations forums :
    Inscription : Août 2006
    Messages : 73
    Par défaut
    Ah, je ne pense pas, j'ai juste déclaré la variable. Mais je ne trouve pas dans la documentation le moyen de le créer (excusez-moi) pouvez-vous me donner la fonction ?

    Merci.

  4. #4
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Citation Envoyé par kuppidon
    Ah, je ne pense pas, j'ai juste déclaré la variable. Mais je ne trouve pas dans la documentation le moyen de le créer (excusez-moi) pouvez-vous me donner la fonction ?

    Merci.
    Effectivement il n'y a pas de gtk_clipboard_new et aucun moyen pour le récupérer du GtkTextBuffer

    Le plus simple serait peut être d'envoyer le signal copy-clipboard au GtkTextView (avec g_signal_emit)

  5. #5
    Membre éclairé

    Homme Profil pro
    Software engineer
    Inscrit en
    Août 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Software engineer

    Informations forums :
    Inscription : Août 2006
    Messages : 73
    Par défaut
    Merci de votre réponse, mais je ne suis pas sûr d'avoir compris ce raisonnement. Pourriez-vous peut-être me donner un exemple de "création" du GtkClipboard s'il vous plait?

    Merci d'avance.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 32
    Par défaut Presse Papier
    Voici le code que j'utilise pour mettre le contenu d'un TextView/TextBuffer dans le presse papier principal :

    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
    GtkClipboard *clipboard; // LE presse papier
    GtkTextBuffer *tb;   // Le textbuffer
    GtkTextIter iter1, iter2;  // Deux iter
    
    gchar *text;
    
            tb = monTextBuffer;
    
    	clipboard = gtk_clipboard_get(gdk_atom_intern("CLIPBOARD",false));  // Je récupère le presse papier principal (celui que l'on utilise normalement)
    
    	gtk_text_buffer_get_start_iter(tb,&iter1);
    	gtk_text_buffer_get_end_iter(tb,&iter2);
    	text = gtk_text_buffer_get_text(
    		tb,
    		&iter1,
    		&iter2,
    		false
    	);
    
    	gtk_clipboard_set_text(clipboard,text,-1);   // Je mets le texte dans le presse-papier
    
    	g_free(text);   // Je libère le texte qui n'a plus d'intérêt
    Le plus important est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    clipboard = gtk_clipboard_get(gdk_atom_intern("CLIPBOARD",false)); 

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

Discussions similaires

  1. Source LaTeX : faire un bouton poussoir dans le PDF
    Par pierrot_latex dans le forum Editeurs / Outils
    Réponses: 3
    Dernier message: 24/02/2006, 14h52
  2. utiliser des morceaux d'une image pour faire des boutons
    Par Battosaiii dans le forum Interfaces Graphiques en Java
    Réponses: 7
    Dernier message: 14/12/2005, 00h05
  3. Comment faire un bouton multi-choix ?
    Par richard038 dans le forum Composants VCL
    Réponses: 9
    Dernier message: 03/10/2005, 21h58
  4. Réponses: 1
    Dernier message: 22/09/2005, 16h15
  5. [FLASH MX2004] Problème pour faire un bouton play
    Par melanie075 dans le forum Flash
    Réponses: 13
    Dernier message: 16/12/2004, 22h55

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