GTK+ par l'exempleDate de publication : 28 juin 2006
IX. Créer un nouveau document
IX-A. Aperçu
IX-B. Nouveau fichier
IX-C. Code source
IX. Créer un nouveau document
IX-A. Aperçu
 Cliquez pour agrandir
IX-B. Nouveau fichier
Maintenant que l'utilisateur peut ouvrir et fermer un fichier, il est intéressant de lui donner la possibilité d'en créer un nouveau. Je ne reviens pas sur la création du bouton (ça devrait déjà être fait :D), passons directement à la fonction cb_new :
callback.c | void cb_new (GtkWidget *p_widget, gpointer user_data)
{
docs.actif = g_malloc (sizeof (*docs.actif));
docs.actif->chemin = NULL;
docs.actif->p_text_view = GTK_TEXT_VIEW (user_data);
docs.actif->sauve = TRUE;
gtk_widget_set_sensitive (GTK_WIDGET (docs.actif->p_text_view), TRUE);
} |
Je ne sais pas vous mais pour ma part j'ai fait un copier/coller de la fonction open_file ! Et oui, ouvrir un document peut se résumer à créer un document vide puis remplir le GtkTextView avec le fichier souhaité ! On peut donc simplifier notre fonction open_file ainsi :
callback.c | static void open_file (const gchar *file_name, GtkTextView *p_text_view)
{
g_return_if_fail (file_name && p_text_view);
{
gchar *contents = NULL;
if (g_file_get_contents (file_name, &contents, NULL, NULL))
{
GtkTextIter iter;
GtkTextBuffer *p_text_buffer = NULL;
cb_new (NULL, p_text_view);
gtk_widget_set_sensitive (GTK_WIDGET (docs.actif->p_text_view), TRUE);
p_text_buffer = gtk_text_view_get_buffer (p_text_view);
gtk_text_buffer_get_iter_at_line (p_text_buffer, &iter, 0);
gtk_text_buffer_insert (p_text_buffer, &iter, contents, -1);
docs.actif->sauve = TRUE;
}
else
{
print_warning ("Impossible d'ouvrir le fichier %s\n", file_name);
}
}
} |
C'est beau la factorisation du code ! Par contre nous sommes obligés de remettre sauve à TRUE car nous avons modifié le GtkTextBuffer.
IX-C. Code source
Les sources présentés sur cette pages sont libre de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2006 Nicolas Joseph.
Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu :
textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets.
Cette page est déposée à la SACD.
|