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 :

Boite de dialogue


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 74
    Par défaut Boite de dialogue
    Salut,
    j'ai un pb avec ma boite de dialogue. J'arrive pas à insérer un pscroller et une textview (comme je l'ai fait dans ma fenêtre principale). J'ai donc choisi de crée simplement une autre fenêtre mais j'arrive pas a envoyer du texte dans ma textview. Je l'ai déjà fait pour ma fenêtre principale mais là g sè pas pkoi ça passe pas.
    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
     
        GtkTextIter Buffer_Start_v;
        GtkTextIter Buffer_End_v;
        GtkWidget *pTextview = gtk_text_view_new(); 
        GtkWidget *Buffer_v = gtk_text_view_get_buffer(GTK_TEXT_VIEW(pTextView));
        gtk_text_buffer_get_start_iter(Buffer_v, &Buffer_Start_v); 
        gtk_text_buffer_get_end_iter(Buffer_v, &Buffer_End_v);         
        gtk_widget_set_size_request(pTextview, 500, 300);
        gtk_text_view_set_editable(GTK_TEXT_VIEW(pTextview), FALSE);  
     
        GtkWidget *pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title(GTK_WINDOW(pWindow), "Visualisation");
     
        GtkWidget *pScrollbar = gtk_scrolled_window_new(NULL, NULL);
      gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(pScrollbar),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
        gtk_container_add(GTK_CONTAINER(pScrollbar), pTextview);
        gtk_container_add(GTK_CONTAINER(pWindow), pScrollbar);
     
    /* Ecriture des Intitulés dans la textview */
    for( i = 0 ; i < nb_int ; i++)
    {
    gtk_text_buffer_insert(Buffer_v, &Buffer_Start_v, *(title + i), strlen(*(title + i )));
    gtk_text_buffer_insert(Buffer_v, &Buffer_Start_v, "\n", 1);
    }
    .....
     
    gtk_widget_show_all(pWindow);
    return;
    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par cupidette92
    j'ai un pb avec ma boite de dialogue. J'arrive pas à insérer un pscroller et une textview (comme je l'ai fait dans ma fenêtre principale).
    Si tu pouvais montrer comment tu as essayé ... on doit accéder au conteneur de la boîte de dialogue à savoir un VBox qu'on accède de cette manière:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GTK_BOX (GTK_DIALOG (dialog)->vbox)
    Par exemple, pour ajouter un GtkFrame dans la boîte de dialogue:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    gtk_box_pack_start (
       GTK_BOX (GTK_DIALOG (dialog)->vbox),
       frame,
       TRUE, TRUE, 5
    );
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 74
    Par défaut
    voici ce que j'ai fais:

    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
    35
     
     
    void visualisation(GtkWidget *widget, gpointer data)
    {
        FILE  *fich, *fich_tmp;
        gchar *title[NB_INT_MAX];
        gchar tmp[50];
        GtkWidget *pTextView = NULL;
        GtkWidget *pScrolled = NULL;
        GtkTextBuffer *Buffer_v;
        GtkTextIter Buffer_Start_v;
        GtkTextIter Buffer_End_v;
    	int nb_int, i;
        GtkWidget *pBoite;
     
        Struct_Widget *pt = (Struct_Widget *) data;
        pTextView = GTK_WIDGET(pt->TextView_v);
        Buffer_v = gtk_text_view_get_buffer(GTK_TEXT_VIEW(pTextView));
        gtk_text_buffer_get_start_iter(Buffer_v, &Buffer_Start_v); /* On recupere l'origine du buffer */
        gtk_text_buffer_get_end_iter(Buffer_v, &Buffer_End_v);     /* On recupere la fin du buffer */
     
        pBoite = gtk_dialog_new_with_buttons("Visualisation Intitules.",GTK_WINDOW(pt->Main_win),GTK_DIALOG_MODAL,GTK_STOCK_OK,GTK_RESPONSE_OK,NULL);
       /* Creation de la zone de saisie */
        GtkWidget *pTextview = gtk_text_view_new(); 
        pScrolled = gtk_scrolled_window_new(NULL,NULL);
     
        Buffer_v = gtk_text_view_get_buffer(GTK_TEXT_VIEW(pTextView));
        gtk_text_buffer_get_start_iter(Buffer_v, &Buffer_Start_v); /* On recupere l'origine du buffer */
        gtk_text_buffer_get_end_iter(Buffer_v, &Buffer_End_v);     /* On recupere la fin du buffer */
     
        gtk_widget_set_size_request(pTextview, 500, 300);
        gtk_text_view_set_editable(GTK_TEXT_VIEW(pTextview), FALSE);  /* permet de ne pas écrire */
        gtk_container_add(GTK_BOX(GTK_DIALOG(pBoite)->vbox), pScrolled);
        gtk_box_pack_start(GTK_CONTAINER(pScrolled,pTextview,TRUE, TRUE, 5
    );
    Ca ne fonctionne pas et je n'arrive pas à envoyer du texte...
    De plus quand je click pour fermer la fenêtre, ça beug.

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 74
    Par défaut
    Dsl, Voici tout le code:

    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
    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
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
     
     
    void visualisation(GtkWidget *widget, gpointer data)
    {
        FILE  *fich, *fich_tmp;
        gchar *title[NB_INT_MAX];
        gchar tmp[50];
        GtkWidget *pTextView = NULL;
        GtkWidget *pScrolled = NULL;
        GtkTextBuffer *Buffer_v;
        GtkTextIter Buffer_Start_v;
        GtkTextIter Buffer_End_v;
    	int nb_int, i;
        GtkWidget *pBoite;
     
        Struct_Widget *pt = (Struct_Widget *) data;
        pTextView = GTK_WIDGET(pt->TextView_v);
        Buffer_v = gtk_text_view_get_buffer(GTK_TEXT_VIEW(pTextView));
        gtk_text_buffer_get_start_iter(Buffer_v, &Buffer_Start_v); /* On recupere l'origine du buffer */
        gtk_text_buffer_get_end_iter(Buffer_v, &Buffer_End_v);     /* On recupere la fin du buffer */
     
        pBoite = gtk_dialog_new_with_buttons("Visualisation Intitules.",GTK_WINDOW(pt->Main_win),GTK_DIALOG_MODAL,GTK_STOCK_OK,GTK_RESPONSE_OK,NULL);
       /* Creation de la zone de saisie */
        GtkWidget *pTextview = gtk_text_view_new(); 
        pScrolled = gtk_scrolled_window_new(NULL,NULL);
     
        Buffer_v = gtk_text_view_get_buffer(GTK_TEXT_VIEW(pTextView));
        gtk_text_buffer_get_start_iter(Buffer_v, &Buffer_Start_v); /* On recupere l'origine du buffer */
        gtk_text_buffer_get_end_iter(Buffer_v, &Buffer_End_v);     /* On recupere la fin du buffer */
     
        gtk_widget_set_size_request(pTextview, 500, 300);
        gtk_text_view_set_editable(GTK_TEXT_VIEW(pTextview), FALSE);  /* permet de ne pas écrire */
        gtk_container_add(GTK_BOX(GTK_DIALOG(pBoite)->vbox), pScrolled);
        gtk_box_pack_start(GTK_CONTAINER(pScrolled,pTextview,TRUE, TRUE, 5
     
    	/*  ouverture du fichier .txt en lecture seule */
    	fich = fopen("memo.txt","r");
    	if(fich == NULL)
    	{
    		perror("Erreur d'ouverture du fichier\n");
    		exit(0);
        }
     
     
       	fich_tmp = fopen("test.txt","w");
    	if(fich_tmp == NULL)
    	{
    		perror("Erreur d'ouverture du fichier\n");
    		exit(0) ;
        }
     
    	/* Extraire les intitulés */
        nb_int = 0; 
        while( feof(fich) == 0 ) 
        { 
          /* Extraire une ligne (exple) */ 
          fgets(tmp, 50, fich); 
          /* Allocation */ 
          *(title + nb_int) = (gchar *)malloc(NB_INT_MAX * sizeof(gchar)); 
          /* Recherche du " parcours du fichier */ 
          if( strncmp(&tmp[0],"\"", 1) == 0 ) 
          { 
              ...
              /* On copie la categorie */ 
              strcpy(*(title + nb_int), tmp); 
              ...
          } 
        } 
     
     
        /* Sauvegarde du intitulé  */
        pt->dernier_memo = title[nb_int - 1];
    	fprintf(fich_tmp,"Dernier intitule ====> %s\n", (pt->dernier_memo));
     
    	/* Ecriture des Intitulés dans la textview */
    	for( i = 0 ; i < nb_int ; i++)
    	{
    		gtk_text_buffer_insert(Buffer_v, &Buffer_Start_v, *(title + i), strlen(*(title + i )));
    		gtk_text_buffer_insert(Buffer_v, &Buffer_Start_v, "\n", 1);
    	}
     
        /* fermeture du flux associé au fichier */  
    	fclose(fich);
        fclose(fich_tmp);
     
     
       /* Affichage des elements de la boite de dialogue */
        gtk_widget_show_all(GTK_DIALOG(pBoite)->vbox);
     
        /* Destruction de la boite de dialogue */
        switch (gtk_dialog_run (GTK_DIALOG (pBoite)))
        {
           case GTK_RESPONSE_YES:
               gtk_widget_destroy (pBoite);
               return;
               break;
        }
     
        free(title);
        gtk_widget_destroy (pBoite);
     
     
    }

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Il y'a des fautes, certaines d'innatention certainement:

    Au lieu de ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_container_add(GTK_BOX(GTK_DIALOG(pBoite)->vbox), pScrolled);
    Faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_box_pack_start(GTK_BOX(GTK_DIALOG(pBoite)->vbox), pScrolled, TRUE, TRUE, 0);
    Au lieu de ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    gtk_box_pack_start(GTK_CONTAINER(pScrolled,pTextview,TRUE, TRUE, 5
    );
    Faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (pScrolled), pTextview);
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 74
    Par défaut
    Merci beaucoooooooooooop Franck....
    Mais l'écriture dans la text view avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    Buffer_v = gtk_text_view_get_buffer(GTK_TEXT_VIEW(pTextView));
    gtk_text_buffer_get_start_iter(Buffer_v, &Buffer_Start_v);
    gtk_text_buffer_get_end_iter(Buffer_v, &Buffer_End_v);
     
    ...
     
    for( i = 0 ; i < nb_int ; i++)
    {
    gtk_text_buffer_insert(Buffer_v, &Buffer_Start_v, *(title + i), strlen(*(title + i )));
    gtk_text_buffer_insert(Buffer_v, &Buffer_Start_v, "\n", 1);
    }
    ne fonctionne pas.
    C'est peut être encore une erreur de syntaxe, mais j'ai fais un copier coller de ce que j'avais fais précédemment et ça passe pas...

    j'obtiens cette erreur:Pièce jointe 10876

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

Discussions similaires

  1. Pb plusieurs boites de dialogues
    Par schnito dans le forum MFC
    Réponses: 10
    Dernier message: 25/02/2004, 21h44
  2. [MFC] rendre une boite de dialogue inactive
    Par Vestaproman dans le forum MFC
    Réponses: 8
    Dernier message: 22/01/2004, 14h09
  3. Affichage d'une boite de dialogue nonmodale avec MFC
    Par the.cable.guy dans le forum Windows
    Réponses: 3
    Dernier message: 04/07/2003, 17h59
  4. Réponses: 5
    Dernier message: 04/04/2003, 15h02
  5. Comment cree une boite de dialogue parcourir
    Par kenshi dans le forum MFC
    Réponses: 5
    Dernier message: 06/01/2003, 10h30

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