Feature #946 ยป 0035-gtk4x-Implement-bind-create-for-tech-list-item-facto.patch
| 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);
|
||