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 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
|
#include <stdlib.h>
#include <gtk/gtk.h>
#include <glib/gprintf.h>
#include <string.h>
enum
{
TEXT_COLUMN,
TOGGLE_COLUMN,
N_COLUMN
};
void gtk_toggled_test (GtkCellRendererToggle *cell, gchar *path_str, GtkTreeModel *model)
{
GtkTreePath *path = gtk_tree_path_new_from_string (path_str);
GtkTreeIter iter;
gboolean old_state;
gtk_tree_model_get_iter (model, &iter, path);
gtk_tree_path_free (path);
gtk_tree_model_get (model, &iter,
TOGGLE_COLUMN, &old_state,
-1);
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
TOGGLE_COLUMN, !old_state,
-1);
}
void check_box_one(GtkCellRendererToggle *cell, gchar *path_str, GtkTreeModel *model)
{
GtkTreePath *path = gtk_tree_path_new_from_string (path_str);
GtkTreeIter iter;
gboolean old_state;
gtk_tree_model_get_iter (model, &iter, path);
gtk_tree_path_free (path);
gtk_tree_model_get (model, &iter,
TOGGLE_COLUMN, &old_state,
-1);
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
TOGGLE_COLUMN, !old_state,
-1);
}
int main(int argc, char **argv)
{
GtkWidget *pWindow;
GtkWidget *pListView;
GtkWidget *pScrollbar;
GtkListStore *pListStore;
GtkTreeViewColumn *pColumn;
GtkCellRenderer *pCellRenderer;
gchar *sTexte;
gint i;
GtkWidget *pQuitBtn;
GtkWidget *pTable;
gtk_init(&argc, &argv);
/* Creation de la fenetre principale */
pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(pWindow), 320, 200);
gtk_window_set_title(GTK_WINDOW(pWindow), "IHM telemac");
g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
/*INIT TABLE*/
pTable=gtk_table_new(2,0,TRUE);
gtk_container_add(GTK_CONTAINER(pWindow), GTK_WIDGET(pTable));
/* Creation du modele */
pListStore = gtk_list_store_new(N_COLUMN, G_TYPE_STRING, G_TYPE_BOOLEAN);
sTexte = g_malloc(12);
/* Insertion des elements */
for(i = 0 ; i < 10 ; ++i)
{
GtkTreeIter pIter;
g_sprintf(sTexte, "Ligne %d", i);
/* Creation de la nouvelle ligne */
gtk_list_store_append(pListStore, &pIter);
/* Mise a jour des donnees */
gtk_list_store_set(pListStore, &pIter,
TEXT_COLUMN, sTexte,
TOGGLE_COLUMN, FALSE,
-1);
}
g_free(sTexte);
/* Creation de la vue */
pListView = gtk_tree_view_new_with_model(GTK_TREE_MODEL(pListStore));
/* Creation de la premiere colonne */
pCellRenderer = gtk_cell_renderer_text_new();
pColumn = gtk_tree_view_column_new_with_attributes("Titre",
pCellRenderer,
"text", TEXT_COLUMN,
NULL);
/* Ajout de la colonne à la vue */
gtk_tree_view_append_column(GTK_TREE_VIEW(pListView), pColumn);
/* Creation de la deuxieme colonne */
pCellRenderer = gtk_cell_renderer_toggle_new();
pColumn = gtk_tree_view_column_new_with_attributes("Select",
pCellRenderer,
"active", TOGGLE_COLUMN,
NULL);
/* Connection au signal "toggled" */
g_signal_connect(pCellRenderer, "toggled", G_CALLBACK(gtk_toggled_test),
pListStore);
/* Ajout de la colonne à la vue */
gtk_tree_view_append_column(GTK_TREE_VIEW(pListView), pColumn);
/* Ajout de la vue a la fenetre */
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), pListView);
gtk_table_attach_defaults(GTK_TABLE(pTable), pScrollbar,
0, 2, 0, 2);
/*Ajout bouton a la vue*/
/*On valide la selection*/
pQuitBtn = gtk_button_new_from_stock(GTK_STOCK_OK);
g_signal_connect(G_OBJECT(pQuitBtn), "clicked", G_CALLBACK(check_box_one), pListStore);
gtk_table_attach_defaults(GTK_TABLE(pTable), pQuitBtn,
0, 2, 2, 3);
/*On quit pour le moment avec le bouton quitter de l'ihm*/
pQuitBtn = gtk_button_new_from_stock(GTK_STOCK_QUIT);
g_signal_connect(G_OBJECT(pQuitBtn), "clicked", G_CALLBACK(gtk_main_quit), NULL);
gtk_table_attach_defaults(GTK_TABLE(pTable), pQuitBtn,
0, 2, 3, 4);
/*on montre tout les contenaire de la fenetre*/
gtk_widget_show_all(pWindow);
gtk_main();
return EXIT_SUCCESS;
} |
Partager