WIP: simplifications in add_columns()
This commit is contained in:
parent
cc899e13c9
commit
f0b8b70bfb
|
@ -13,6 +13,17 @@
|
||||||
/* */
|
/* */
|
||||||
/*************************************************************************************************************************************/
|
/*************************************************************************************************************************************/
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
|
||||||
|
|
||||||
|
/************************************************** <> *****************************************************/
|
||||||
|
/* */
|
||||||
|
/* https://developer-old.gnome.org/gtk4/stable/GtkTreeView.html */
|
||||||
|
/* GtkTreeViewColumn, GtkTreeSelection, GtkTreeModel, GtkTreeView drag-and-drop, GtkTreeSortable, GtkTreeModelSort, GtkListStore, */
|
||||||
|
/* GtkTreeStore, GtkCellRenderer, GtkCellEditable, GtkCellRendererPixbuf, GtkCellRendererText, GtkCellRendererToggle */
|
||||||
|
/* */
|
||||||
|
/* https://www.gnu.org/software/guile-gnome/docs/gtk/html/GtkCellRenderer.html */
|
||||||
|
/* */
|
||||||
|
/*************************************************************************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
/* The GtkTreeStore is used to store data in tree form, to be used later on by a GtkTreeView to display it.
|
/* The GtkTreeStore is used to store data in tree form, to be used later on by a GtkTreeView to display it.
|
||||||
|
@ -59,7 +70,7 @@ static TreeItem item_name_0[] =
|
||||||
static TreeItem item_name_1[] =
|
static TreeItem item_name_1[] =
|
||||||
{
|
{
|
||||||
{ "A", FALSE, TRUE, NULL },
|
{ "A", FALSE, TRUE, NULL },
|
||||||
{ "B", FALSE, FALSE, NULL },
|
{ "B", TRUE, FALSE, NULL },
|
||||||
{ "C", FALSE, TRUE, NULL },
|
{ "C", FALSE, TRUE, NULL },
|
||||||
{ "D", FALSE, TRUE, NULL },
|
{ "D", FALSE, TRUE, NULL },
|
||||||
{ NULL }
|
{ NULL }
|
||||||
|
@ -131,70 +142,25 @@ create_model (void)
|
||||||
return GTK_TREE_MODEL (model);
|
return GTK_TREE_MODEL (model);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void // https://www.gnu.org/software/guile-gnome/docs/gtk/html/GtkCellRendererToggle.html
|
|
||||||
item_toggled (GtkCellRendererToggle *cell,
|
|
||||||
char *path_str,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
GtkTreeModel *model = (GtkTreeModel *)data;
|
|
||||||
GtkTreePath *path = gtk_tree_path_new_from_string (path_str);
|
|
||||||
GtkTreeIter iter;
|
|
||||||
gboolean toggle_item;
|
|
||||||
|
|
||||||
int *column;
|
|
||||||
|
|
||||||
column = g_object_get_data (G_OBJECT (cell), "column");
|
|
||||||
|
|
||||||
/* get toggled iter */
|
|
||||||
gtk_tree_model_get_iter (model, &iter, path);
|
|
||||||
gtk_tree_model_get (model, &iter, column, &toggle_item, -1);
|
|
||||||
|
|
||||||
/* do something with the value */
|
|
||||||
toggle_item ^= 1;
|
|
||||||
|
|
||||||
/* set new value */
|
|
||||||
gtk_tree_store_set (GTK_TREE_STORE (model), &iter, column,
|
|
||||||
toggle_item, -1);
|
|
||||||
|
|
||||||
/* clean up */
|
|
||||||
gtk_tree_path_free (path);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
add_columns (GtkTreeView *treeview)
|
add_columns (GtkTreeView *treeview)
|
||||||
{
|
{
|
||||||
int col_offset;
|
|
||||||
GtkCellRenderer *renderer;
|
GtkCellRenderer *renderer;
|
||||||
// GtkTreeViewColumn *column;
|
|
||||||
GtkTreeModel *model = gtk_tree_view_get_model (treeview);
|
|
||||||
|
|
||||||
/* column for item_1 names */
|
/* column for item_1 names */
|
||||||
renderer = gtk_cell_renderer_text_new ();
|
renderer = gtk_cell_renderer_text_new ();
|
||||||
g_object_set (renderer, "xalign", 0.0, NULL);
|
g_object_set (renderer, "xalign", 0.0, NULL);
|
||||||
|
|
||||||
col_offset = gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), -1, "Col 0", renderer, "text",
|
gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), -1,
|
||||||
COLUMN_0, NULL);
|
"Col 0", renderer, "text", COLUMN_0, NULL);
|
||||||
/* column = */ gtk_tree_view_get_column (GTK_TREE_VIEW (treeview), col_offset - 1);
|
|
||||||
// gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);
|
|
||||||
|
|
||||||
/* AA column */
|
/* AA column */
|
||||||
renderer = gtk_cell_renderer_toggle_new ();
|
renderer = gtk_cell_renderer_toggle_new ();
|
||||||
g_object_set (renderer, "xalign", 0.0, NULL);
|
g_object_set (renderer, "xalign", 0.0, NULL);
|
||||||
g_object_set_data (G_OBJECT (renderer), "column", (int *)COLUMN_1);
|
g_object_set_data (G_OBJECT (renderer), "column", (int *)COLUMN_1);
|
||||||
|
|
||||||
// g_signal_connect (renderer, "toggled", G_CALLBACK (item_toggled), model);
|
gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), -1,
|
||||||
|
"Col 1", renderer, "active", COLUMN_1, "visible", VISIBLE_COLUMN, "activatable", WORLD_COLUMN, NULL);
|
||||||
col_offset = gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), -1, "Col 1", renderer, "active",
|
|
||||||
COLUMN_1, "visible", VISIBLE_COLUMN, "activatable", WORLD_COLUMN, NULL);
|
|
||||||
|
|
||||||
/* column = */ gtk_tree_view_get_column (GTK_TREE_VIEW (treeview), col_offset - 1);
|
|
||||||
// gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (column), GTK_TREE_VIEW_COLUMN_FIXED);
|
|
||||||
// gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);
|
|
||||||
|
|
||||||
/* column = */ gtk_tree_view_get_column (GTK_TREE_VIEW (treeview), col_offset - 1);
|
|
||||||
// gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (column), GTK_TREE_VIEW_COLUMN_FIXED);
|
|
||||||
// gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GtkWidget *
|
GtkWidget *
|
||||||
|
@ -223,8 +189,7 @@ do_tree_store (GtkWidget *do_widget)
|
||||||
gtk_widget_set_margin_bottom (vbox, 8);
|
gtk_widget_set_margin_bottom (vbox, 8);
|
||||||
gtk_window_set_child (GTK_WINDOW (window), vbox);
|
gtk_window_set_child (GTK_WINDOW (window), vbox);
|
||||||
|
|
||||||
gtk_box_append (GTK_BOX (vbox),
|
gtk_box_append (GTK_BOX (vbox), gtk_label_new ("Learning GTK trees"));
|
||||||
gtk_label_new ("Learning GTK trees"));
|
|
||||||
|
|
||||||
sw = gtk_scrolled_window_new ();
|
sw = gtk_scrolled_window_new ();
|
||||||
gtk_scrolled_window_set_has_frame (GTK_SCROLLED_WINDOW (sw), TRUE);
|
gtk_scrolled_window_set_has_frame (GTK_SCROLLED_WINDOW (sw), TRUE);
|
||||||
|
|
Loading…
Reference in New Issue