Soyez le premier à donner votre avis sur cette source.
Snippet vu 12 487 fois - Téléchargée 31 fois
#include <gtk/gtk.h> #include <stdlib.h> #include <stdio.h> // gcc pdf_maker_v3.c -o pdf_maker.exe `pkg-config --cflags --libs gtk+-2.0` static GtkWidget *fenetre; static GtkWidget *vbox; static GtkWidget *label1; static GtkWidget *entrynom; static GtkWidget *label2; static GtkObject *spinbutton_adj; static GtkWidget *spinbutton; static GtkWidget *bout_creer; void creer_un_pdf(void); int main(int argc, char **argv) { gtk_init(&argc, &argv); fenetre = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_set_size_request (fenetre, 420, 240); gtk_window_set_title (GTK_WINDOW (fenetre), "PDF-Maker"); g_signal_connect(G_OBJECT(fenetre),"destroy",G_CALLBACK(gtk_main_quit), NULL); vbox = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (fenetre), vbox); gtk_container_set_border_width (GTK_CONTAINER (vbox), 15); label1 = gtk_label_new ("Tapez votre nom"); gtk_box_pack_start (GTK_BOX (vbox), label1, FALSE, FALSE, 0); entrynom = gtk_entry_new (); gtk_box_pack_start (GTK_BOX (vbox), entrynom, TRUE, TRUE, 0); label2 = gtk_label_new ("Entrez votre âge :"); gtk_box_pack_start (GTK_BOX (vbox), label2, FALSE, FALSE, 0); spinbutton_adj = gtk_adjustment_new (1, 0, 100, 1, 10, 10); spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adj), 1, 0); gtk_box_pack_start (GTK_BOX (vbox), spinbutton, TRUE, TRUE, 0); bout_creer = gtk_button_new_with_label("Créer le PDF"); gtk_box_pack_start (GTK_BOX (vbox), bout_creer, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (bout_creer), 11); g_signal_connect(G_OBJECT(bout_creer),"clicked",G_CALLBACK(creer_un_pdf), NULL); gtk_widget_show_all(fenetre); gtk_main(); return EXIT_SUCCESS; } //------------------------------------------------------------ void creer_un_pdf(void) { FILE *futur_pdf; const gchar* nom; gdouble age; nom = gtk_entry_get_text(GTK_ENTRY(entrynom)); age = gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinbutton)); futur_pdf = fopen("./pdf_maker.tex","w"); fprintf( futur_pdf, "\\documentclass{article}\n"); fprintf( futur_pdf, "\\begin{document}\n"); fprintf( futur_pdf, "Nom : %s \\\\ \n",nom); fprintf( futur_pdf, "Age : %.0f \n",age); fprintf( futur_pdf, "\\end{document}\n"); fclose(futur_pdf); // lance la compilation du fichier *.tex créé plus haut system("pdflatex ./pdf_maker.tex"); // lance kpdf une fois que le fichier pdf a été créé system("kpdf ./pdf_maker.pdf"); // Si on lance le programme gtk depuis la console, le chemin où se trouvera // le pdf sera l'endroit où l'on est // Si on lance le programme depuis l'environnement graphique KDE, le pdf // se trouvera dans le folder par défaut, càd /home/utilisteur } //------------------------------------------------------------
7 juil. 2005 à 15:52
Le fils s'occupe de la gestion des pdf, et le père reprends le contrôle de lui-même :
==============================================================
#include <gtk/gtk.h>
#include <stdlib.h>
#include <stdio.h>
// gcc pdf_maker_v4.c -o pdf_maker.exe `pkg-config --cflags --libs gtk+-2.0`
static GtkWidget *fenetre;
static GtkWidget *vbox;
static GtkWidget *label1;
static GtkWidget *entrynom;
static GtkWidget *label2;
static GtkObject *spinbutton_adj;
static GtkWidget *spinbutton;
static GtkWidget *bout_creer;
void creer_un_pdf(void);
int main(int argc, char **argv)
{
gtk_init(&argc, &argv);
fenetre = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_set_size_request (fenetre, 420, 240);
gtk_window_set_title (GTK_WINDOW (fenetre), "PDF-Maker");
g_signal_connect(G_OBJECT(fenetre),"destroy",G_CALLBACK(gtk_main_quit), NULL);
vbox = gtk_vbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (fenetre), vbox);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 15);
label1 = gtk_label_new ("Tapez votre nom");
gtk_box_pack_start (GTK_BOX (vbox), label1, FALSE, FALSE, 0);
entrynom = gtk_entry_new ();
gtk_box_pack_start (GTK_BOX (vbox), entrynom, TRUE, TRUE, 0);
label2 = gtk_label_new ("Entrez votre âge :");
gtk_box_pack_start (GTK_BOX (vbox), label2, FALSE, FALSE, 0);
spinbutton_adj = gtk_adjustment_new (1, 0, 100, 1, 10, 10);
spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adj), 1, 0);
gtk_box_pack_start (GTK_BOX (vbox), spinbutton, TRUE, TRUE, 0);
bout_creer = gtk_button_new_with_label("Créer le PDF");
gtk_box_pack_start (GTK_BOX (vbox), bout_creer, FALSE, FALSE, 0);
gtk_container_set_border_width (GTK_CONTAINER (bout_creer), 11);
g_signal_connect(G_OBJECT(bout_creer),"clicked",G_CALLBACK(creer_un_pdf), NULL);
gtk_widget_show_all(fenetre);
gtk_main();
return EXIT_SUCCESS;
}
//------------------------------------------------------------
void creer_un_pdf(void)
{
FILE *futur_pdf;
const gchar* nom;
gdouble age;
nom = gtk_entry_get_text(GTK_ENTRY(entrynom));
age = gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinbutton));
futur_pdf = fopen("./pdf_maker.tex","w");
fprintf( futur_pdf, "\\documentclass{article}\n");
fprintf( futur_pdf, "\\begin{document}\n");
fprintf( futur_pdf, "Nom : %s \\\\ \n",nom);
fprintf( futur_pdf, "Age : %.0f \n",age);
fprintf( futur_pdf, "\\end{document}\n");
fclose(futur_pdf);
// on sépare en deux processus le programme :
if (fork() == 0)
{
gtk_main_quit();
// lance la compilation du fichier *.tex créé plus haut
system("pdflatex ./pdf_maker.tex");
// lance kpdf une fois que le fichier pdf a été créé
system("kpdf ./pdf_maker.pdf");
// Si on lance le programme gtk depuis la console, le chemin où se trouvera
// le pdf sera l'endroit où l'on est
// Si on lance le programme depuis l'environnement graphique KDE, le pdf
// se trouvera dans le folder par défaut, càd /home/utilisteur
exit(0);
}
else {
// le processus père continue...
}
}
//------------------------------------------------------------
===========================================================
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.