void math_converter_set_conversion(MathConverter *converter, /*const gchar *category,*/ const gchar *unit_a, const gchar *unit_b) { Unit *ua; Unit *ub; g_return_if_fail (converter != NULL); g_return_if_fail (unit_a != NULL); g_return_if_fail (unit_b != NULL); ua = unit_manager_get_unit_by_name(unit_manager_get_default(), unit_a); ub = unit_manager_get_unit_by_name(unit_manager_get_default(), unit_b); if (!ua || !ub) { GtkTreeModel *model; GtkTreeIter iter; /* Select the first unit */ model = gtk_combo_box_get_model(GTK_COMBO_BOX(converter->priv->from_combo)); if (gtk_tree_model_get_iter_first(model, &iter)) { GtkTreeIter child_iter; while (gtk_tree_model_iter_children(model, &child_iter, &iter)) iter = child_iter; gtk_combo_box_set_active_iter(GTK_COMBO_BOX(converter->priv->from_combo), &iter); } return; } set_active_unit(GTK_COMBO_BOX(converter->priv->from_combo), NULL, ua); set_active_unit(GTK_COMBO_BOX(converter->priv->to_combo), NULL, ub); }
static void update_from_model(MathConverter *converter) { GtkTreeStore *from_model; from_model = gtk_tree_store_new(3, G_TYPE_STRING, G_TYPE_OBJECT, G_TYPE_OBJECT); if (converter->priv->category == NULL) { const GList *categories, *iter; categories = unit_manager_get_categories(unit_manager_get_default()); for (iter = categories; iter; iter = iter->next) { UnitCategory *category = iter->data; GtkTreeIter parent; const GList *unit_iter; gtk_tree_store_append(from_model, &parent, NULL); gtk_tree_store_set(from_model, &parent, 0, unit_category_get_display_name(category), 1, category, -1); for (unit_iter = unit_category_get_units(category); unit_iter; unit_iter = unit_iter->next) { Unit *unit = unit_iter->data; GtkTreeIter iter; gtk_tree_store_append(from_model, &iter, &parent); gtk_tree_store_set(from_model, &iter, 0, unit_get_display_name(unit), 1, category, 2, unit, -1); } } } else { UnitCategory *category; const GList *unit_iter; category = unit_manager_get_category(unit_manager_get_default(), converter->priv->category); for (unit_iter = unit_category_get_units(category); unit_iter; unit_iter = unit_iter->next) { Unit *unit = unit_iter->data; GtkTreeIter iter; gtk_tree_store_append(from_model, &iter, NULL); gtk_tree_store_set(from_model, &iter, 0, unit_get_display_name(unit), 1, category, 2, unit, -1); } } gtk_combo_box_set_model(GTK_COMBO_BOX(converter->priv->from_combo), GTK_TREE_MODEL(from_model)); }
static int do_convert(const MPNumber *x, const char *x_units, const char *z_units, MPNumber *z, void *data) { return unit_manager_convert_by_symbol(unit_manager_get_default(), x, x_units, z_units, z); }