#include <gtk/gtk.h>

GtkTreeStore *pTreeStore;

/* =============================================================================
 * Clic sur le TreeView ********************************************************
==============================================================================*/
//gboolean TreeView_Click()
gboolean TreeView_Click (GtkWidget *TV, GdkEventButton *event, gpointer userdata)
{
  GtkTreeModel	*pTreeModel;
  GtkTreePath 	*path;
  GtkTreeIter	iter;
  //gchar		*str = NULL;
  gint id;

  //g_print("clic\n");
  pTreeModel = gtk_tree_view_get_model (GTK_TREE_VIEW (TV));
  if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(TV),(gint) event->x, (gint) event->y, &path, NULL, NULL, NULL))
  {
    if (gtk_tree_model_get_iter(pTreeModel, &iter, path))
    {
      //gtk_tree_model_get (pTreeModel, &iter, 2, &str, -1);
      //g_print("str = %s\n",str);
      //g_free (str);
      gtk_tree_model_get (pTreeModel, &iter, 0, &id, -1);
      g_print("id = %d\n",id);
    }
  }
  return FALSE;
}
/* =============================================================================
 * TreeView: Création **********************************************************
==============================================================================*/
GtkWidget* Creer_TreeView(GtkWidget *fen)//, GtkWidget *panneau)
{
  GtkWidget		*pTView		= NULL;
  GtkWidget		*pScrollWin	= NULL;
  GtkCellRenderer	*p_renderer	= NULL;
  GtkTreeViewColumn	*p_column	= NULL;

  // Crée scrolled window pour treeview
  pScrollWin = gtk_scrolled_window_new (NULL, NULL);
  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (pScrollWin),
                                  GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
  gtk_container_add (GTK_CONTAINER (fen), pScrollWin);
  pTreeStore = gtk_tree_store_new (3, G_TYPE_INT, GDK_TYPE_PIXBUF, G_TYPE_STRING);

  // Crée treeview
  pTView = gtk_tree_view_new_with_model (GTK_TREE_MODEL (pTreeStore));
  gtk_container_add (GTK_CONTAINER (pScrollWin), pTView);
  // colonne d'index
  p_renderer = gtk_cell_renderer_text_new ();
  p_column = gtk_tree_view_column_new_with_attributes (NULL, p_renderer, "int", 0, NULL);
  gtk_tree_view_append_column (GTK_TREE_VIEW (pTView), p_column);
  gtk_tree_view_column_set_visible(p_column, FALSE);

  // colonne image
  p_renderer = gtk_cell_renderer_pixbuf_new ();
  p_column = gtk_tree_view_column_new_with_attributes (NULL, p_renderer, "pixbuf", 1, NULL);
  gtk_tree_view_append_column (GTK_TREE_VIEW (pTView), p_column);
  //colonne texte
  p_renderer = gtk_cell_renderer_text_new ();
  p_column = gtk_tree_view_column_new_with_attributes (NULL, p_renderer, "text", 2, NULL);
  gtk_tree_view_append_column (GTK_TREE_VIEW (pTView), p_column);
  gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (pTView), FALSE);

  //g_signal_connect (G_OBJECT (pTView), "row-activated", G_CALLBACK (TreeView_Click), NULL);
  g_signal_connect(pTView, "button-press-event", G_CALLBACK(TreeView_Click), NULL);

  return pTView;
}
/* =============================================================================
 * TreeView: Ajouter Item  au Treeview *****************************************
==============================================================================*/
GtkTreeIter Ajouter_TreeviewItem(GtkWidget *pTView, GtkTreeIter *parent, gint id, gchar* unNom, gchar *img)
{
  GtkTreeIter fils;
  GdkPixbuf *pImg;

  pImg = gdk_pixbuf_new_from_file (img, NULL);
  gtk_tree_store_append (pTreeStore, &fils, parent);
  gtk_tree_store_set (pTreeStore, &fils, 0,id, 1,pImg, 2,unNom, -1);
  return fils;
}
/* =============================================================================
 * Point d'entrée **************************************************************
==============================================================================*/
int main (int argc, char **argv)
{
  GtkWidget *fenetre;
  GtkWidget *Tview;
  GtkTreeIter iter;

  gtk_init(&argc, &argv);
  fenetre = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  gtk_window_set_default_size(GTK_WINDOW(fenetre), 200, 200);
  g_signal_connect(fenetre, "delete_event", gtk_main_quit, NULL);

  Tview = Creer_TreeView(fenetre);
  iter = Ajouter_TreeviewItem(Tview, NULL ,0, "Dossier 1", "../onglets/img/comp.png");
         Ajouter_TreeviewItem(Tview, &iter,1, "Fils 1-1" , "../onglets/img/icon.gif");
         Ajouter_TreeviewItem(Tview, &iter,2, "Fils 1-2" , "../onglets/img/icon.gif");

  iter = Ajouter_TreeviewItem(Tview, NULL ,3, "Dossier 2", "../onglets/img/comp.png");
         Ajouter_TreeviewItem(Tview, &iter,4, "Fils 2-1" , "../onglets/img/icon.gif");
         Ajouter_TreeviewItem(Tview, &iter,5, "Fils 2-2" , "../onglets/img/icon.gif");
  gtk_tree_view_expand_all(GTK_TREE_VIEW (Tview));

  gtk_widget_show_all(fenetre);
  gtk_main();
  return 0;
}