Petit textviewer [code en c] [gcc]

Contenu du snippet

Cet exempel va jsute vous montrer et expliquer ;-) comment creer une zone de texte, et comment y ranger le contenu d'un fichier.
Peut etre que par la suite je mettrait un petit editeur de text complet , mais seulement si j'ai le temps ;-)

Source / Exemple :


#include <gtk/gtk.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main(int argc, char *argv[])
{
  GtkWidget *fenetre, *boite, *texte, *scrollbar; //Declare les widget
  int file; 
  gtk_init(&argc,&argv); //Intialisation de GTK

  fenetre = gtk_window_new(GTK_WINDOW_TOPLEVEL); //Creer uen fenetre
  boite = gtk_hbox_new(FALSE, 5); //Creer une boite de type hbox
  gtk_container_add(GTK_CONTAINER(fenetre), boite); //Ajoute la boite au container de la fenetre
  
  texte = gtk_text_new(NULL, NULL); //Creer une zone de texte
  gtk_widget_set_usize(GTK_WIDGET(texte), 200, 200);  //Attribut la taille initiale de la zone de texte
  gtk_text_set_editable(GTK_TEXT (texte), TRUE); //Met TRUE pour indiquer que l'on peut modifier le texte, car si FALSE le texte peut etre afficher mais on peut pas modifier le contenu de la zone de texte
  gtk_box_pack_start_defaults(GTK_BOX(boite), texte); //Ajoute la zone de texte a la boite 
  gtk_widget_show(texte); //Affiche la zone de texte
  
  scrollbar = gtk_vscrollbar_new(GTK_TEXT(texte)->vadj); //Ajoute une scrollbar vertical a la zone 
  
  gtk_box_pack_end(GTK_BOX(boite), scrollbar, FALSE, FALSE, 0); //Ajoute la scrollbar a la zone de texte
  gtk_widget_show(scrollbar);  //Affiche la scrollbar
 
  file = open(argv[1], O_RDONLY); //Ouvre le fichier passer en parametre au programme en lecture seule
  if (file!=-1) //Si le fichier n'est pas vide
  {
    char buf[100]; //Declare un buffer
    int nbre;
    while ((nbre=read(file, buf, 100))!=0)  //Tant que l'on est pas a la fin du fichier
      //On ajoute les lignes du fichier a la zone de texte
      gtk_text_insert (GTK_TEXT (texte), NULL, 
		       NULL, NULL, buf, nbre);
    close (file); //ferme le fichier
 }
 
  gtk_widget_show(boite); //Affiche la boite
  gtk_widget_show(fenetre); //Affiche la fenetre
  gtk_main(); //Rend la main a l'application
}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.