Feature #980 ยป 0043-gtk4x-Implement-bind-create-for-citydlg-prod-list-it.patch
| client/gui-gtk-5.0/citydlg.c | ||
|---|---|---|
|
G_DEFINE_TYPE(FcProdRow, fc_prod_row, G_TYPE_OBJECT)
|
||
|
#define PROD_ROW_PIXBUF 0
|
||
|
#define PROD_ROW_NAME 1
|
||
|
/**********************************************************************//**
|
||
|
Initialization method for FcImprRow class
|
||
|
**************************************************************************/
|
||
| ... | ... | |
|
return view;
|
||
|
}
|
||
|
/**********************************************************************//**
|
||
|
Prod table cell bind function
|
||
|
**************************************************************************/
|
||
|
static void prod_factory_bind(GtkSignalListItemFactory *self,
|
||
|
GtkListItem *list_item,
|
||
|
gpointer user_data)
|
||
|
{
|
||
|
FcProdRow *row;
|
||
|
GtkWidget *child = gtk_list_item_get_child(list_item);
|
||
|
row = gtk_list_item_get_item(list_item);
|
||
|
switch (GPOINTER_TO_INT(user_data)) {
|
||
|
case PROD_ROW_PIXBUF:
|
||
|
gtk_image_set_from_pixbuf(GTK_IMAGE(child), row->sprite);
|
||
|
break;
|
||
|
case PROD_ROW_NAME:
|
||
|
{
|
||
|
gtk_label_set_text(GTK_LABEL(child), row->name);
|
||
|
if (row->useless) {
|
||
|
PangoAttrList *attributes;
|
||
|
PangoAttribute *attr;
|
||
|
attributes = pango_attr_list_new();
|
||
|
attr = pango_attr_strikethrough_new(TRUE);
|
||
|
pango_attr_list_insert(attributes, attr);
|
||
|
gtk_label_set_attributes(GTK_LABEL(child), attributes);
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
/**********************************************************************//**
|
||
|
Prod table cell setup function
|
||
|
**************************************************************************/
|
||
|
static void prod_factory_setup(GtkSignalListItemFactory *self,
|
||
|
GtkListItem *list_item,
|
||
|
gpointer user_data)
|
||
|
{
|
||
|
switch (GPOINTER_TO_INT(user_data)) {
|
||
|
case PROD_ROW_PIXBUF:
|
||
|
gtk_list_item_set_child(list_item, gtk_image_new());
|
||
|
break;
|
||
|
case PROD_ROW_NAME:
|
||
|
gtk_list_item_set_child(list_item, gtk_label_new(""));
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
/***********************************************************************//**
|
||
|
**** Overview page ****
|
||
|
+- GtkWidget *page ------------------------------------------+
|
||
| ... | ... | |
|
gtk_notebook_append_page(GTK_NOTEBOOK(pdialog->notebook), page, label);
|
||
|
if (!low_citydlg) {
|
||
|
GtkListItemFactory *factory;
|
||
|
GtkWidget *middle;
|
||
|
GtkWidget *vbox;
|
||
|
GtkWidget *hbox;
|
||
| ... | ... | |
|
G_TYPE_INT, G_TYPE_BOOLEAN);
|
||
|
pdialog->overview.change_production_store = production_store;
|
||
|
factory = gtk_signal_list_item_factory_new();
|
||
|
g_signal_connect(factory, "bind", G_CALLBACK(prod_factory_bind),
|
||
|
GINT_TO_POINTER(PROD_ROW_PIXBUF));
|
||
|
g_signal_connect(factory, "setup", G_CALLBACK(prod_factory_setup),
|
||
|
GINT_TO_POINTER(PROD_ROW_PIXBUF));
|
||
|
bar = gtk_progress_bar_new();
|
||
|
gtk_progress_bar_set_show_text(GTK_PROGRESS_BAR(bar), TRUE);
|
||
|
pdialog->overview.production_bar = bar;
|
||