Wednesday, March 7, 2012

GTK Hangout



Following is the code to draw a table in gtk :


#include <gtk/gtk.h>
enum
{
  BUY_IT = 0,
  QUANTITY,
  PRODUCT,
  COLUMNS
};

typedef struct
{
  gfloat tmt;
  gint em;
  gint di;
  gint dot;
} Sen_read ;

const Sen_read list[] = {
  {43431, 22, 42,72},
  {12121, 12, 42,82},
  {121212, 32, 62,92},
  {12121, 24, 62,20},
  {0,4, 62,20},
};

static void setup_tree_view (GtkWidget *);
int
main (int argc, char *argv[])
{
  GtkWidget *window, *treeview, *scrolled_win;
  GtkListStore *store;
  GtkTreeIter iter;
  guint i = 0;
  gtk_init (&argc, &argv);
  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_window_set_title (GTK_WINDOW (window), "Readings");
  gtk_container_set_border_width (GTK_CONTAINER (window), 10);
  gtk_widget_set_size_request (window, 450, 350);
  treeview = gtk_tree_view_new ();
  setup_tree_view (treeview);
/* Create a new tree model with three columns, as string, gint and guint. */
  store =
    gtk_list_store_new (COLUMNS,G_TYPE_INT,G_TYPE_INT,G_TYPE_INT);
/* Add all of the products to the GtkListStore. */
  while (list[i].tmt != 0)
    {
      gtk_list_store_append (store, &iter);
      gtk_list_store_set (store, &iter, BUY_IT, list[i].em,
              QUANTITY, list[i].di, PRODUCT,
              list[i].dot, -1);
      i++;
    }

/* Add the tree model to the tree view and unreference it so that the model will
* be destroyed along with the tree view. */
  gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), GTK_TREE_MODEL (store));
  g_object_unref (store);
  scrolled_win = gtk_scrolled_window_new (NULL, NULL);
  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
                  GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
  gtk_container_add (GTK_CONTAINER (scrolled_win), treeview);
  gtk_container_add (GTK_CONTAINER (window), scrolled_win);
  gtk_widget_show_all (window);
  gtk_main ();

  return 0;
}

/* Add three columns to the GtkTreeView. All three of the columns will be
* displayed as text, although one is a gboolean value and another is
* an integer. */
static void
setup_tree_view (GtkWidget * treeview)
{
  GtkCellRenderer *renderer;
  GtkTreeViewColumn *column;
/* Create a new GtkCellRendererText, add it to the tree view column and
* append the column to the tree view. */
  renderer = gtk_cell_renderer_text_new ();
  column = gtk_tree_view_column_new_with_attributes
    ("Tst", renderer, "text", BUY_IT, NULL);
  gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
  renderer = gtk_cell_renderer_text_new ();
  column = gtk_tree_view_column_new_with_attributes
    ("EM", renderer, "text", QUANTITY, NULL);
  gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
  renderer = gtk_cell_renderer_text_new ();
  column = gtk_tree_view_column_new_with_attributes
    ("DIO", renderer, "text", PRODUCT, NULL);
  gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);

 renderer = gtk_cell_renderer_text_new ();
  column = gtk_tree_view_column_new_with_attributes
    ("Temp", renderer, "text", PRODUCT, NULL);
  gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);

}

PS : You need to install the development libraries for gtk (libgtk-dev) from the synaptic manager.