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 104 105 106 107 108 109 110 111 112 113 114 115 116
| gboolean gui_create_file_tab (GtkWidget * p_notebook,
gchar * s_filename,
gchar * s_buffer)
{
struct file_tab * p_file_tab = NULL;
gchar * s_title = NULL;
GtkTextBuffer * p_text_buffer;
GtkTextIter iter_start;
/*
* Allocation de la structure.
*/
p_file_tab = g_malloc (sizeof (* p_file_tab));
if (! p_file_tab)
{
ERROR_MSG ("Impossible d'allouer l'espace pour un nouvel onglet !");
return FALSE;
}
/*
* Creation des barre de defilement.
*/
p_file_tab->p_scrolled = gtk_scrolled_window_new (NULL, NULL);
gtk_widget_show (p_file_tab->p_scrolled);
gtk_scrolled_window_set_policy (
GTK_SCROLLED_WINDOW (p_file_tab->p_scrolled),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
/*
* Creation et mise en place de la zone de texte.
*/
p_file_tab->p_text_view = gtk_text_view_new ();
gtk_widget_show (p_file_tab->p_text_view);
gtk_scrolled_window_add_with_viewport (
GTK_SCROLLED_WINDOW (p_file_tab->p_scrolled),
p_file_tab->p_text_view);
/*
* Creation du label pour l'onglet.
*/
p_file_tab->p_label = gtk_label_new (NULL);
gtk_widget_show (p_file_tab->p_label);
/*
* Remplissagle du label.
*/
if (s_filename)
{
/*
* Affichage du nom du fichier dans l'onglet.
*/
s_title = strrchr (s_filename, G_DIR_SEPARATOR);
s_title [0] = ' ';
gtk_label_set_text (GTK_LABEL (p_file_tab->p_label), s_title);
/*
* Insertion du buffer dans la zone de texte.
*/
p_text_buffer = gtk_text_view_get_buffer (
GTK_TEXT_VIEW (p_file_tab->p_text_view));
gtk_text_buffer_get_start_iter (
GTK_TEXT_BUFFER (p_text_buffer),
&iter_start);
gtk_text_buffer_insert (
p_text_buffer,
&iter_start,
s_buffer,
-1);
}
else
{
i_new_file++;
s_title = g_strdup_printf ("Sans titre - %d", i_new_file);
gtk_label_set_text (GTK_LABEL (p_file_tab->p_label), s_title);
p_file_tab->s_filename = NULL;
g_free (s_title);
}
/*
* Remplissage du reste de la structure.
*/
p_file_tab->s_filename = s_filename;
p_file_tab->b_modified = FALSE;
/*
* Ajout de l'onglet.
*/
gtk_notebook_append_page (GTK_NOTEBOOK (p_notebook),
p_file_tab->p_scrolled,
p_file_tab->p_label);
/*
* Ajout de la structure dans la liste chainee.
*/
p_tab_list = g_list_append (p_tab_list, (struct file_tab *)p_file_tab);
return TRUE;
} |
Partager