Blame tests/testtreefocus.c

Packit 98cdb6
/* testtreefocus.c
Packit 98cdb6
 * Copyright (C) 2001 Red Hat, Inc
Packit 98cdb6
 * Author: Jonathan Blandford
Packit 98cdb6
 *
Packit 98cdb6
 * This library is free software; you can redistribute it and/or
Packit 98cdb6
 * modify it under the terms of the GNU Library General Public
Packit 98cdb6
 * License as published by the Free Software Foundation; either
Packit 98cdb6
 * version 2 of the License, or (at your option) any later version.
Packit 98cdb6
 *
Packit 98cdb6
 * This library is distributed in the hope that it will be useful,
Packit 98cdb6
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 98cdb6
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 98cdb6
 * Library General Public License for more details.
Packit 98cdb6
 *
Packit 98cdb6
 * You should have received a copy of the GNU Library General Public
Packit 98cdb6
 * License along with this library; if not, write to the
Packit 98cdb6
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Packit 98cdb6
 * Boston, MA 02111-1307, USA.
Packit 98cdb6
 */
Packit 98cdb6
Packit 98cdb6
#include "config.h"
Packit 98cdb6
#include <gtk/gtk.h>
Packit 98cdb6
Packit 98cdb6
typedef struct _TreeStruct TreeStruct;
Packit 98cdb6
struct _TreeStruct
Packit 98cdb6
{
Packit 98cdb6
  const gchar *label;
Packit 98cdb6
  gboolean alex;
Packit 98cdb6
  gboolean havoc;
Packit 98cdb6
  gboolean tim;
Packit 98cdb6
  gboolean owen;
Packit 98cdb6
  gboolean dave;
Packit 98cdb6
  gboolean world_holiday; /* shared by the european hackers */
Packit 98cdb6
  TreeStruct *children;
Packit 98cdb6
};
Packit 98cdb6
Packit 98cdb6
Packit 98cdb6
static TreeStruct january[] =
Packit 98cdb6
{
Packit 98cdb6
  {"New Years Day", TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL },
Packit 98cdb6
  {"Presidential Inauguration", FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, NULL },
Packit 98cdb6
  {"Martin Luther King Jr. day", FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, NULL },
Packit 98cdb6
  { NULL }
Packit 98cdb6
};
Packit 98cdb6
Packit 98cdb6
static TreeStruct february[] =
Packit 98cdb6
{
Packit 98cdb6
  { "Presidents' Day", FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, NULL },
Packit 98cdb6
  { "Groundhog Day", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
Packit 98cdb6
  { "Valentine's Day", FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, NULL },
Packit 98cdb6
  { NULL }
Packit 98cdb6
};
Packit 98cdb6
Packit 98cdb6
static TreeStruct march[] =
Packit 98cdb6
{
Packit 98cdb6
  { "National Tree Planting Day", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
Packit 98cdb6
  { "St Patrick's Day", FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, NULL },
Packit 98cdb6
  { NULL }
Packit 98cdb6
};
Packit 98cdb6
Packit 98cdb6
static TreeStruct april[] =
Packit 98cdb6
{
Packit 98cdb6
  { "April Fools' Day", FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, NULL },
Packit 98cdb6
  { "Army Day", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
Packit 98cdb6
  { "Earth Day", FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, NULL },
Packit 98cdb6
  { "Administrative Professionals' Day", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
Packit 98cdb6
  { NULL }
Packit 98cdb6
};
Packit 98cdb6
Packit 98cdb6
static TreeStruct may[] =
Packit 98cdb6
{
Packit 98cdb6
  { "Nurses' Day", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
Packit 98cdb6
  { "National Day of Prayer", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
Packit 98cdb6
  { "Mothers' Day", FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, NULL },
Packit 98cdb6
  { "Armed Forces Day", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
Packit 98cdb6
  { "Memorial Day", TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL },
Packit 98cdb6
  { NULL }
Packit 98cdb6
};
Packit 98cdb6
Packit 98cdb6
static TreeStruct june[] =
Packit 98cdb6
{
Packit 98cdb6
  { "June Fathers' Day", FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, NULL },
Packit 98cdb6
  { "Juneteenth (Liberation of Slaves)", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
Packit 98cdb6
  { "Flag Day", FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, NULL },
Packit 98cdb6
  { NULL }
Packit 98cdb6
};
Packit 98cdb6
Packit 98cdb6
static TreeStruct july[] =
Packit 98cdb6
{
Packit 98cdb6
  { "Parents' Day", FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, NULL },
Packit 98cdb6
  { "Independence Day", FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, NULL },
Packit 98cdb6
  { NULL }
Packit 98cdb6
};
Packit 98cdb6
Packit 98cdb6
static TreeStruct august[] =
Packit 98cdb6
{
Packit 98cdb6
  { "Air Force Day", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
Packit 98cdb6
  { "Coast Guard Day", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
Packit 98cdb6
  { "Friendship Day", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
Packit 98cdb6
  { NULL }
Packit 98cdb6
};
Packit 98cdb6
Packit 98cdb6
static TreeStruct september[] =
Packit 98cdb6
{
Packit 98cdb6
  { "Grandparents' Day", FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, NULL },
Packit 98cdb6
  { "Citizenship Day or Constitution Day", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
Packit 98cdb6
  { "Labor Day", TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL },
Packit 98cdb6
  { NULL }
Packit 98cdb6
};
Packit 98cdb6
Packit 98cdb6
static TreeStruct october[] =
Packit 98cdb6
{
Packit 98cdb6
  { "National Children's Day", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
Packit 98cdb6
  { "Bosses' Day", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
Packit 98cdb6
  { "Sweetest Day", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
Packit 98cdb6
  { "Mother-in-Law's Day", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
Packit 98cdb6
  { "Navy Day", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
Packit 98cdb6
  { "Columbus Day", FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, NULL },
Packit 98cdb6
  { "Halloween", FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, NULL },
Packit 98cdb6
  { NULL }
Packit 98cdb6
};
Packit 98cdb6
Packit 98cdb6
static TreeStruct november[] =
Packit 98cdb6
{
Packit 98cdb6
  { "Marine Corps Day", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
Packit 98cdb6
  { "Veterans' Day", TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL },
Packit 98cdb6
  { "Thanksgiving", FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, NULL },
Packit 98cdb6
  { NULL }
Packit 98cdb6
};
Packit 98cdb6
Packit 98cdb6
static TreeStruct december[] =
Packit 98cdb6
{
Packit 98cdb6
  { "Pearl Harbor Remembrance Day", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
Packit 98cdb6
  { "Christmas", TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL },
Packit 98cdb6
  { "Kwanzaa", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
Packit 98cdb6
  { NULL }
Packit 98cdb6
};
Packit 98cdb6
Packit 98cdb6
Packit 98cdb6
static TreeStruct toplevel[] =
Packit 98cdb6
{
Packit 98cdb6
  {"January", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, january},
Packit 98cdb6
  {"February", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, february},
Packit 98cdb6
  {"March", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, march},
Packit 98cdb6
  {"April", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, april},
Packit 98cdb6
  {"May", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, may},
Packit 98cdb6
  {"June", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, june},
Packit 98cdb6
  {"July", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, july},
Packit 98cdb6
  {"August", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, august},
Packit 98cdb6
  {"September", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, september},
Packit 98cdb6
  {"October", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, october},
Packit 98cdb6
  {"November", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, november},
Packit 98cdb6
  {"December", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, december},
Packit 98cdb6
  {NULL}
Packit 98cdb6
};
Packit 98cdb6
Packit 98cdb6
Packit 98cdb6
enum
Packit 98cdb6
{
Packit 98cdb6
  HOLIDAY_COLUMN = 0,
Packit 98cdb6
  ALEX_COLUMN,
Packit 98cdb6
  HAVOC_COLUMN,
Packit 98cdb6
  TIM_COLUMN,
Packit 98cdb6
  OWEN_COLUMN,
Packit 98cdb6
  DAVE_COLUMN,
Packit 98cdb6
  VISIBLE_COLUMN,
Packit 98cdb6
  WORLD_COLUMN,
Packit 98cdb6
  NUM_COLUMNS
Packit 98cdb6
};
Packit 98cdb6
Packit 98cdb6
static GtkTreeModel *
Packit 98cdb6
make_model (void)
Packit 98cdb6
{
Packit 98cdb6
  GtkTreeStore *model;
Packit 98cdb6
  TreeStruct *month = toplevel;
Packit 98cdb6
  GtkTreeIter iter;
Packit 98cdb6
Packit 98cdb6
  model = gtk_tree_store_new (NUM_COLUMNS,
Packit 98cdb6
			      G_TYPE_STRING,
Packit 98cdb6
			      G_TYPE_BOOLEAN,
Packit 98cdb6
			      G_TYPE_BOOLEAN,
Packit 98cdb6
			      G_TYPE_BOOLEAN,
Packit 98cdb6
			      G_TYPE_BOOLEAN,
Packit 98cdb6
			      G_TYPE_BOOLEAN,
Packit 98cdb6
			      G_TYPE_BOOLEAN,
Packit 98cdb6
			      G_TYPE_BOOLEAN);
Packit 98cdb6
Packit 98cdb6
  while (month->label)
Packit 98cdb6
    {
Packit 98cdb6
      TreeStruct *holiday = month->children;
Packit 98cdb6
Packit 98cdb6
      gtk_tree_store_append (model, &iter, NULL);
Packit 98cdb6
      gtk_tree_store_set (model, &iter,
Packit 98cdb6
			  HOLIDAY_COLUMN, month->label,
Packit 98cdb6
			  ALEX_COLUMN, FALSE,
Packit 98cdb6
			  HAVOC_COLUMN, FALSE,
Packit 98cdb6
			  TIM_COLUMN, FALSE,
Packit 98cdb6
			  OWEN_COLUMN, FALSE,
Packit 98cdb6
			  DAVE_COLUMN, FALSE,
Packit 98cdb6
			  VISIBLE_COLUMN, FALSE,
Packit 98cdb6
			  WORLD_COLUMN, FALSE,
Packit 98cdb6
			  -1);
Packit 98cdb6
      while (holiday->label)
Packit 98cdb6
	{
Packit 98cdb6
	  GtkTreeIter child_iter;
Packit 98cdb6
Packit 98cdb6
	  gtk_tree_store_append (model, &child_iter, &iter);
Packit 98cdb6
	  gtk_tree_store_set (model, &child_iter,
Packit 98cdb6
			      HOLIDAY_COLUMN, holiday->label,
Packit 98cdb6
			      ALEX_COLUMN, holiday->alex,
Packit 98cdb6
			      HAVOC_COLUMN, holiday->havoc,
Packit 98cdb6
			      TIM_COLUMN, holiday->tim,
Packit 98cdb6
			      OWEN_COLUMN, holiday->owen,
Packit 98cdb6
			      DAVE_COLUMN, holiday->dave,
Packit 98cdb6
			      VISIBLE_COLUMN, TRUE,
Packit 98cdb6
			      WORLD_COLUMN, holiday->world_holiday,
Packit 98cdb6
			      -1);
Packit 98cdb6
Packit 98cdb6
	  holiday ++;
Packit 98cdb6
	}
Packit 98cdb6
      month ++;
Packit 98cdb6
    }
Packit 98cdb6
Packit 98cdb6
  return GTK_TREE_MODEL (model);
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
static void
Packit 98cdb6
alex_toggled (GtkCellRendererToggle *cell,
Packit 98cdb6
	      gchar                 *path_str,
Packit 98cdb6
	      gpointer               data)
Packit 98cdb6
{
Packit 98cdb6
  GtkTreeModel *model = (GtkTreeModel *) data;
Packit 98cdb6
  GtkTreeIter iter;
Packit 98cdb6
  GtkTreePath *path = gtk_tree_path_new_from_string (path_str);
Packit 98cdb6
  gboolean alex;
Packit 98cdb6
Packit 98cdb6
  gtk_tree_model_get_iter (model, &iter, path);
Packit 98cdb6
  gtk_tree_model_get (model, &iter, ALEX_COLUMN, &alex, -1);
Packit 98cdb6
Packit 98cdb6
  alex = !alex;
Packit 98cdb6
  gtk_tree_store_set (GTK_TREE_STORE (model), &iter, ALEX_COLUMN, alex, -1);
Packit 98cdb6
Packit 98cdb6
  gtk_tree_path_free (path);
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
static void
Packit 98cdb6
havoc_toggled (GtkCellRendererToggle *cell,
Packit 98cdb6
	       gchar                 *path_str,
Packit 98cdb6
	       gpointer               data)
Packit 98cdb6
{
Packit 98cdb6
  GtkTreeModel *model = (GtkTreeModel *) data;
Packit 98cdb6
  GtkTreeIter iter;
Packit 98cdb6
  GtkTreePath *path = gtk_tree_path_new_from_string (path_str);
Packit 98cdb6
  gboolean havoc;
Packit 98cdb6
Packit 98cdb6
  gtk_tree_model_get_iter (model, &iter, path);
Packit 98cdb6
  gtk_tree_model_get (model, &iter, HAVOC_COLUMN, &havoc, -1);
Packit 98cdb6
Packit 98cdb6
  havoc = !havoc;
Packit 98cdb6
  gtk_tree_store_set (GTK_TREE_STORE (model), &iter, HAVOC_COLUMN, havoc, -1);
Packit 98cdb6
Packit 98cdb6
  gtk_tree_path_free (path);
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
static void
Packit 98cdb6
owen_toggled (GtkCellRendererToggle *cell,
Packit 98cdb6
	      gchar                 *path_str,
Packit 98cdb6
	      gpointer               data)
Packit 98cdb6
{
Packit 98cdb6
  GtkTreeModel *model = (GtkTreeModel *) data;
Packit 98cdb6
  GtkTreeIter iter;
Packit 98cdb6
  GtkTreePath *path = gtk_tree_path_new_from_string (path_str);
Packit 98cdb6
  gboolean owen;
Packit 98cdb6
Packit 98cdb6
  gtk_tree_model_get_iter (model, &iter, path);
Packit 98cdb6
  gtk_tree_model_get (model, &iter, OWEN_COLUMN, &owen, -1);
Packit 98cdb6
Packit 98cdb6
  owen = !owen;
Packit 98cdb6
  gtk_tree_store_set (GTK_TREE_STORE (model), &iter, OWEN_COLUMN, owen, -1);
Packit 98cdb6
Packit 98cdb6
  gtk_tree_path_free (path);
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
static void
Packit 98cdb6
tim_toggled (GtkCellRendererToggle *cell,
Packit 98cdb6
	     gchar                 *path_str,
Packit 98cdb6
	     gpointer               data)
Packit 98cdb6
{
Packit 98cdb6
  GtkTreeModel *model = (GtkTreeModel *) data;
Packit 98cdb6
  GtkTreeIter iter;
Packit 98cdb6
  GtkTreePath *path = gtk_tree_path_new_from_string (path_str);
Packit 98cdb6
  gboolean tim;
Packit 98cdb6
Packit 98cdb6
  gtk_tree_model_get_iter (model, &iter, path);
Packit 98cdb6
  gtk_tree_model_get (model, &iter, TIM_COLUMN, &tim, -1);
Packit 98cdb6
Packit 98cdb6
  tim = !tim;
Packit 98cdb6
  gtk_tree_store_set (GTK_TREE_STORE (model), &iter, TIM_COLUMN, tim, -1);
Packit 98cdb6
Packit 98cdb6
  gtk_tree_path_free (path);
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
static void
Packit 98cdb6
dave_toggled (GtkCellRendererToggle *cell,
Packit 98cdb6
	      gchar                 *path_str,
Packit 98cdb6
	      gpointer               data)
Packit 98cdb6
{
Packit 98cdb6
  GtkTreeModel *model = (GtkTreeModel *) data;
Packit 98cdb6
  GtkTreeIter iter;
Packit 98cdb6
  GtkTreePath *path = gtk_tree_path_new_from_string (path_str);
Packit 98cdb6
  gboolean dave;
Packit 98cdb6
Packit 98cdb6
  gtk_tree_model_get_iter (model, &iter, path);
Packit 98cdb6
  gtk_tree_model_get (model, &iter, DAVE_COLUMN, &dave, -1);
Packit 98cdb6
Packit 98cdb6
  dave = !dave;
Packit 98cdb6
  gtk_tree_store_set (GTK_TREE_STORE (model), &iter, DAVE_COLUMN, dave, -1);
Packit 98cdb6
Packit 98cdb6
  gtk_tree_path_free (path);
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
static void
Packit 98cdb6
set_indicator_size (GtkTreeViewColumn *column,
Packit 98cdb6
		    GtkCellRenderer *cell,
Packit 98cdb6
		    GtkTreeModel *model,
Packit 98cdb6
		    GtkTreeIter *iter,
Packit 98cdb6
		    gpointer data)
Packit 98cdb6
{
Packit 98cdb6
  gint size;
Packit 98cdb6
  GtkTreePath *path;
Packit 98cdb6
Packit 98cdb6
  path = gtk_tree_model_get_path (model, iter);
Packit 98cdb6
  size = gtk_tree_path_get_indices (path)[0]  * 2 + 10;
Packit 98cdb6
  gtk_tree_path_free (path);
Packit 98cdb6
Packit 98cdb6
  g_object_set (cell, "indicator_size", size, NULL);
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
int
Packit 98cdb6
main (int argc, char *argv[])
Packit 98cdb6
{
Packit 98cdb6
  GtkWidget *window;
Packit 98cdb6
  GtkWidget *vbox;
Packit 98cdb6
  GtkWidget *scrolled_window;
Packit 98cdb6
  GtkWidget *tree_view;
Packit 98cdb6
  GtkTreeModel *model;
Packit 98cdb6
  GtkCellRenderer *renderer;
Packit 98cdb6
  gint col_offset;
Packit 98cdb6
  GtkTreeViewColumn *column;
Packit 98cdb6
Packit 98cdb6
  gtk_init (&argc, &argv);
Packit 98cdb6
Packit 98cdb6
  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
Packit 98cdb6
  gtk_window_set_title (GTK_WINDOW (window), "Card planning sheet");
Packit 98cdb6
  g_signal_connect (window, "destroy", gtk_main_quit, NULL);
Packit 98cdb6
  vbox = gtk_vbox_new (FALSE, 8);
Packit 98cdb6
  gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
Packit 98cdb6
  gtk_box_pack_start (GTK_BOX (vbox), gtk_label_new ("Jonathan's Holiday Card Planning Sheet"), FALSE, FALSE, 0);
Packit 98cdb6
  gtk_container_add (GTK_CONTAINER (window), vbox);
Packit 98cdb6
Packit 98cdb6
  scrolled_window = gtk_scrolled_window_new (NULL, NULL);
Packit 98cdb6
  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), GTK_SHADOW_ETCHED_IN);
Packit 98cdb6
  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
Packit 98cdb6
  gtk_box_pack_start (GTK_BOX (vbox), scrolled_window, TRUE, TRUE, 0);
Packit 98cdb6
Packit 98cdb6
  model = make_model ();
Packit 98cdb6
  tree_view = gtk_tree_view_new_with_model (model);
Packit 98cdb6
  gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (tree_view), TRUE);
Packit 98cdb6
  gtk_tree_selection_set_mode (gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)),
Packit 98cdb6
			       GTK_SELECTION_MULTIPLE);
Packit 98cdb6
  renderer = gtk_cell_renderer_text_new ();
Packit 98cdb6
  col_offset = gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
Packit 98cdb6
							    -1, "Holiday",
Packit 98cdb6
							    renderer,
Packit 98cdb6
							    "text", HOLIDAY_COLUMN, NULL);
Packit 98cdb6
  column = gtk_tree_view_get_column (GTK_TREE_VIEW (tree_view), col_offset - 1);
Packit 98cdb6
  gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);
Packit 98cdb6
Packit 98cdb6
  /* Alex Column */
Packit 98cdb6
  renderer = gtk_cell_renderer_toggle_new ();
Packit 98cdb6
  g_signal_connect (renderer, "toggled", G_CALLBACK (alex_toggled), model);
Packit 98cdb6
Packit 98cdb6
  g_object_set (renderer, "xalign", 0.0, NULL);
Packit 98cdb6
  col_offset = gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
Packit 98cdb6
							    -1, "Alex",
Packit 98cdb6
							    renderer,
Packit 98cdb6
							    "active", ALEX_COLUMN,
Packit 98cdb6
							    "visible", VISIBLE_COLUMN,
Packit 98cdb6
							    "activatable", WORLD_COLUMN,
Packit 98cdb6
							    NULL);
Packit 98cdb6
  column = gtk_tree_view_get_column (GTK_TREE_VIEW (tree_view), col_offset - 1);
Packit 98cdb6
  gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (column), GTK_TREE_VIEW_COLUMN_FIXED);
Packit 98cdb6
  gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (column), 50);
Packit 98cdb6
  gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);
Packit 98cdb6
Packit 98cdb6
  /* Havoc Column */
Packit 98cdb6
  renderer = gtk_cell_renderer_toggle_new ();
Packit 98cdb6
  g_signal_connect (renderer, "toggled", G_CALLBACK (havoc_toggled), model);
Packit 98cdb6
Packit 98cdb6
  g_object_set (renderer, "xalign", 0.0, NULL);
Packit 98cdb6
  col_offset = gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
Packit 98cdb6
							    -1, "Havoc",
Packit 98cdb6
							    renderer,
Packit 98cdb6
							    "active", HAVOC_COLUMN,
Packit 98cdb6
							    "visible", VISIBLE_COLUMN,
Packit 98cdb6
							    NULL);
Packit 98cdb6
  column = gtk_tree_view_get_column (GTK_TREE_VIEW (tree_view), col_offset - 1);
Packit 98cdb6
  gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (column), GTK_TREE_VIEW_COLUMN_FIXED);
Packit 98cdb6
  gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (column), 50);
Packit 98cdb6
  gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);
Packit 98cdb6
Packit 98cdb6
  /* Tim Column */
Packit 98cdb6
  renderer = gtk_cell_renderer_toggle_new ();
Packit 98cdb6
  g_signal_connect (renderer, "toggled", G_CALLBACK (tim_toggled), model);
Packit 98cdb6
Packit 98cdb6
  g_object_set (renderer, "xalign", 0.0, NULL);
Packit 98cdb6
  col_offset = gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
Packit 98cdb6
					       -1, "Tim",
Packit 98cdb6
					       renderer,
Packit 98cdb6
					       "active", TIM_COLUMN,
Packit 98cdb6
					       "visible", VISIBLE_COLUMN,
Packit 98cdb6
					       "activatable", WORLD_COLUMN,
Packit 98cdb6
					       NULL);
Packit 98cdb6
  column = gtk_tree_view_get_column (GTK_TREE_VIEW (tree_view), col_offset - 1);
Packit 98cdb6
  gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (column), GTK_TREE_VIEW_COLUMN_FIXED);
Packit 98cdb6
  gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);
Packit 98cdb6
  gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (column), 50);
Packit 98cdb6
Packit 98cdb6
  /* Owen Column */
Packit 98cdb6
  renderer = gtk_cell_renderer_toggle_new ();
Packit 98cdb6
  g_signal_connect (renderer, "toggled", G_CALLBACK (owen_toggled), model);
Packit 98cdb6
  g_object_set (renderer, "xalign", 0.0, NULL);
Packit 98cdb6
  col_offset = gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
Packit 98cdb6
					       -1, "Owen",
Packit 98cdb6
					       renderer,
Packit 98cdb6
					       "active", OWEN_COLUMN,
Packit 98cdb6
					       "visible", VISIBLE_COLUMN,
Packit 98cdb6
					       NULL);
Packit 98cdb6
  column = gtk_tree_view_get_column (GTK_TREE_VIEW (tree_view), col_offset - 1);
Packit 98cdb6
  gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (column), GTK_TREE_VIEW_COLUMN_FIXED);
Packit 98cdb6
  gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);
Packit 98cdb6
  gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (column), 50);
Packit 98cdb6
Packit 98cdb6
  /* Owen Column */
Packit 98cdb6
  renderer = gtk_cell_renderer_toggle_new ();
Packit 98cdb6
  g_signal_connect (renderer, "toggled", G_CALLBACK (dave_toggled), model);
Packit 98cdb6
  g_object_set (renderer, "xalign", 0.0, NULL);
Packit 98cdb6
  col_offset = gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
Packit 98cdb6
					       -1, "Dave",
Packit 98cdb6
					       renderer,
Packit 98cdb6
					       "active", DAVE_COLUMN,
Packit 98cdb6
					       "visible", VISIBLE_COLUMN,
Packit 98cdb6
					       NULL);
Packit 98cdb6
  column = gtk_tree_view_get_column (GTK_TREE_VIEW (tree_view), col_offset - 1);
Packit 98cdb6
  gtk_tree_view_column_set_cell_data_func (column, renderer, set_indicator_size, NULL, NULL);
Packit 98cdb6
  gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (column), GTK_TREE_VIEW_COLUMN_FIXED);
Packit 98cdb6
  gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (column), 50);
Packit 98cdb6
  gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);
Packit 98cdb6
Packit 98cdb6
  gtk_container_add (GTK_CONTAINER (scrolled_window), tree_view);
Packit 98cdb6
Packit 98cdb6
  g_signal_connect (tree_view, "realize",
Packit 98cdb6
		    G_CALLBACK (gtk_tree_view_expand_all),
Packit 98cdb6
		    NULL);
Packit 98cdb6
  gtk_window_set_default_size (GTK_WINDOW (window),
Packit 98cdb6
			       650, 400);
Packit 98cdb6
  gtk_widget_show_all (window);
Packit 98cdb6
Packit 98cdb6
  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
Packit 98cdb6
  gtk_window_set_title (GTK_WINDOW (window), "Model");
Packit 98cdb6
  g_signal_connect (window, "destroy", gtk_main_quit, NULL);
Packit 98cdb6
  vbox = gtk_vbox_new (FALSE, 8);
Packit 98cdb6
  gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
Packit 98cdb6
  gtk_box_pack_start (GTK_BOX (vbox), gtk_label_new ("The model revealed"), FALSE, FALSE, 0);
Packit 98cdb6
  gtk_container_add (GTK_CONTAINER (window), vbox);
Packit 98cdb6
Packit 98cdb6
  scrolled_window = gtk_scrolled_window_new (NULL, NULL);
Packit 98cdb6
  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), GTK_SHADOW_ETCHED_IN);
Packit 98cdb6
  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
Packit 98cdb6
  gtk_box_pack_start (GTK_BOX (vbox), scrolled_window, TRUE, TRUE, 0);
Packit 98cdb6
Packit 98cdb6
Packit 98cdb6
  tree_view = gtk_tree_view_new_with_model (model);
Packit 98cdb6
  g_object_unref (model);
Packit 98cdb6
  gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (tree_view), TRUE);
Packit 98cdb6
Packit 98cdb6
  gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
Packit 98cdb6
					       -1, "Holiday Column",
Packit 98cdb6
					       gtk_cell_renderer_text_new (),
Packit 98cdb6
					       "text", 0, NULL);
Packit 98cdb6
Packit 98cdb6
  gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
Packit 98cdb6
					       -1, "Alex Column",
Packit 98cdb6
					       gtk_cell_renderer_text_new (),
Packit 98cdb6
					       "text", 1, NULL);
Packit 98cdb6
Packit 98cdb6
  gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
Packit 98cdb6
					       -1, "Havoc Column",
Packit 98cdb6
					       gtk_cell_renderer_text_new (),
Packit 98cdb6
					       "text", 2, NULL);
Packit 98cdb6
Packit 98cdb6
  gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
Packit 98cdb6
					       -1, "Tim Column",
Packit 98cdb6
					       gtk_cell_renderer_text_new (),
Packit 98cdb6
					       "text", 3, NULL);
Packit 98cdb6
Packit 98cdb6
  gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
Packit 98cdb6
					       -1, "Owen Column",
Packit 98cdb6
					       gtk_cell_renderer_text_new (),
Packit 98cdb6
					       "text", 4, NULL);
Packit 98cdb6
Packit 98cdb6
  gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
Packit 98cdb6
					       -1, "Dave Column",
Packit 98cdb6
					       gtk_cell_renderer_text_new (),
Packit 98cdb6
					       "text", 5, NULL);
Packit 98cdb6
Packit 98cdb6
  gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
Packit 98cdb6
					       -1, "Visible Column",
Packit 98cdb6
					       gtk_cell_renderer_text_new (),
Packit 98cdb6
					       "text", 6, NULL);
Packit 98cdb6
Packit 98cdb6
  gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
Packit 98cdb6
					       -1, "World Holiday",
Packit 98cdb6
					       gtk_cell_renderer_text_new (),
Packit 98cdb6
					       "text", 7, NULL);
Packit 98cdb6
Packit 98cdb6
  g_signal_connect (tree_view, "realize",
Packit 98cdb6
		    G_CALLBACK (gtk_tree_view_expand_all),
Packit 98cdb6
		    NULL);
Packit 98cdb6
			   
Packit 98cdb6
  gtk_container_add (GTK_CONTAINER (scrolled_window), tree_view);
Packit 98cdb6
Packit 98cdb6
Packit 98cdb6
  gtk_window_set_default_size (GTK_WINDOW (window),
Packit 98cdb6
			       650, 400);
Packit 98cdb6
Packit 98cdb6
  gtk_widget_show_all (window);
Packit 98cdb6
  gtk_main ();
Packit 98cdb6
Packit 98cdb6
  return 0;
Packit 98cdb6
}
Packit 98cdb6