示例#1
0
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);
}
示例#2
0
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);
}