static void show_weightsystem(weightsystem_t *ws, struct ws_widget *weightsystem_widget) { const char *desc; int grams; /* Don't show uninitialized widgets */ if (!weightsystem_widget->description) return; desc = ws->description; if (!desc) desc = ""; grams = ws->weight.grams; add_weightsystem(weightsystem_widget, desc, grams); set_weight_weight_spinbutton(weightsystem_widget, ws->weight.grams); }
static void weight_cb(GtkComboBox *combo_box, gpointer data) { GtkTreeIter iter; GtkTreeModel *model = gtk_combo_box_get_model(combo_box); int weight; struct ws_widget *ws_widget = data; struct dive *dive; weightsystem_t *ws; if (ws_widget->w_idx == W_IDX_PRIMARY) dive = current_dive; else dive = &edit_dive; ws = dive->weightsystem + ws_widget->index; /* Did the user set it to some non-standard value? */ if (!get_active_item(combo_box, &iter, weightsystem_model)) { ws_widget->changed = 1; return; } /* * We get "change" signal callbacks just because we set * the description by hand. Whatever. So ignore them if * they are no-ops. */ if (!ws_widget->changed && ws->description) { int same; char *desc = gtk_combo_box_get_active_text(combo_box); same = !strcmp(desc, ws->description); g_free(desc); if (same) return; } ws_widget->changed = 1; gtk_tree_model_get(model, &iter, WS_WEIGHT, &weight, -1); set_weight_weight_spinbutton(ws_widget, weight); }