Re: Combobox disable item
- From: cecashon aol com
- To: mike redtux org uk
- Cc: gtk-app-devel-list gnome org
- Subject: Re: Combobox disable item
- Date: Fri, 23 Jun 2017 15:28:58 -0400
Add an extra column to your list and use that to set your "sensitive" property for the row.
Eric
/*
gcc -Wall combo_filter2.c -o combo_filter2 `pkg-config --cflags --libs gtk+-3.0`
Tested on GTK3.18 and Ubuntu16.04
*/
#include<gtk/gtk.h>
static void combo2_changed(GtkComboBox *combo2, gpointer data)
{
gint combo_row=gtk_combo_box_get_active(combo2);
if(combo_row==1)
{
GtkTreeIter iter;
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(data), &iter, "1");
gtk_list_store_set(GTK_LIST_STORE(data), &iter, 1, FALSE, -1);
}
else
{
GtkTreeIter iter;
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(data), &iter, "1");
gtk_list_store_set(GTK_LIST_STORE(data), &iter, 1, TRUE, -1);
}
}
int main(int argc, char *argv[])
{
gtk_init(&argc, &argv);
GtkWidget *window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "Combo Filter2");
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_window_set_default_size(GTK_WINDOW(window), 300, 100);
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
GtkTreeIter iter;
GtkListStore *store=gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_BOOLEAN);
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter, 0, "Scandvb", 1, TRUE, -1);
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter, 0, "DVB module", 1, TRUE, -1);
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter, 0, "DVDb5-Scan", 1, TRUE, -1);
gtk_list_store_append(store, &iter);
GtkCellRenderer *renderer=gtk_cell_renderer_text_new();
GtkWidget *combo1=gtk_combo_box_new_with_model(GTK_TREE_MODEL(store));
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo1), renderer, TRUE);
gtk_widget_set_hexpand(combo1, TRUE);
gtk_widget_set_vexpand(combo1, TRUE);
gtk_combo_box_set_active(GTK_COMBO_BOX(combo1), 0);
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo1), GTK_CELL_RENDERER(renderer), "text", 0,
"sensitive", 1, NULL);
GtkWidget *combo2=gtk_combo_box_text_new();
gtk_combo_box_text_insert(GTK_COMBO_BOX_TEXT(combo2), 0, "1", "Show All");
gtk_combo_box_text_insert(GTK_COMBO_BOX_TEXT(combo2), 1, "2", "Disable DVB module");
gtk_combo_box_set_active(GTK_COMBO_BOX(combo2), 0);
gtk_widget_set_hexpand(combo2, TRUE);
gtk_widget_set_vexpand(combo2, TRUE);
g_signal_connect(combo2, "changed", G_CALLBACK(combo2_changed), store);
g_object_unref(G_OBJECT(store));
GtkWidget *grid=gtk_grid_new();
gtk_grid_attach(GTK_GRID(grid), combo1, 0, 0, 1, 1);
gtk_grid_attach(GTK_GRID(grid), combo2, 0, 1, 1, 1);
gtk_container_add(GTK_CONTAINER(window), grid);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]