Project

General

Profile

Feature #946 ยป 0035-gtk4x-Implement-bind-create-for-tech-list-item-facto.patch

Marko Lindqvist, 10/09/2024 07:55 AM

View differences:

client/gui-gtk-5.0/inteldlg.c
G_DEFINE_TYPE(FcWonderRow, fc_wonder_row, G_TYPE_OBJECT)
#define TECH_ROW_NAME 0
#define TECH_ROW_KNOWN 1
/**********************************************************************//**
Initialization method for FcTechRow class
**************************************************************************/
......
intel_wonder_destroy_callback(NULL, pdialog);
}
/**********************************************************************//**
Tech table cell bind function
**************************************************************************/
static void tech_factory_bind(GtkSignalListItemFactory *self,
GtkListItem *list_item,
gpointer user_data)
{
FcTechRow *row;
row = gtk_list_item_get_item(list_item);
if (GPOINTER_TO_INT(user_data) == TECH_ROW_KNOWN) {
gtk_check_button_set_active(GTK_CHECK_BUTTON(gtk_list_item_get_child(list_item)),
row->known);
} else {
gtk_label_set_text(GTK_LABEL(gtk_list_item_get_child(list_item)),
row->name);
}
}
/**********************************************************************//**
Tech table cell setup function
**************************************************************************/
static void tech_factory_setup(GtkSignalListItemFactory *self,
GtkListItem *list_item,
gpointer user_data)
{
if (GPOINTER_TO_INT(user_data) == TECH_ROW_KNOWN) {
gtk_list_item_set_child(list_item, gtk_check_button_new());
} else {
gtk_list_item_set_child(list_item, gtk_label_new(""));
}
}
/**********************************************************************//**
Create new intelligence dialog between client user and player
given as parameter.
......
GtkWidget *shell, *notebook, *label, *sw, *view, *table;
GtkCellRenderer *rend;
GtkTreeViewColumn *col;
GtkListItemFactory *factory;
int i;
pdialog = fc_malloc(sizeof(*pdialog));
......
gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(pdialog->techs),
1, GTK_SORT_ASCENDING);
factory = gtk_signal_list_item_factory_new();
g_signal_connect(factory, "bind", G_CALLBACK(tech_factory_bind),
GINT_TO_POINTER(TECH_ROW_NAME));
g_signal_connect(factory, "setup", G_CALLBACK(tech_factory_setup),
GINT_TO_POINTER(TECH_ROW_NAME));
view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(pdialog->techs));
gtk_widget_set_margin_bottom(view, 6);
gtk_widget_set_margin_end(view, 6);
    (1-1/1)