/* * _gdaui_provider_auth_editor_set_provider * @auth: a #GdauiProviderAuthEditor widget * @provider: the provider to be used * * Updates the displayed fields in @auth to represent the required * and possible arguments that a connection to a database through * @provider would require */ void _gdaui_provider_auth_editor_set_provider (GdauiProviderAuthEditor *auth, const gchar *provider) { g_return_if_fail (GDAUI_IS_PROVIDER_AUTH_EDITOR (auth)); g_return_if_fail (auth->priv); auth->priv->pinfo = NULL; if (auth->priv->provider) g_free (auth->priv->provider); auth->priv->provider = NULL; auth->priv->auth_needed = FALSE; if (auth->priv->auth_widget) { gtk_widget_destroy (auth->priv->auth_widget); auth->priv->auth_widget = NULL; } if (provider) { auth->priv->pinfo = gda_config_get_provider_info (provider); if (auth->priv->pinfo) { auth->priv->provider = g_strdup (auth->priv->pinfo->id); if (auth->priv->pinfo->auth_params && auth->priv->pinfo->auth_params->holders) auth->priv->auth_needed = TRUE; } } if (auth->priv->auth_needed) { g_assert (auth->priv->pinfo); GdaSet *set; set = gda_set_copy (auth->priv->pinfo->auth_params); auth->priv->auth_widget = gdaui_basic_form_new (set); g_signal_connect (G_OBJECT (auth->priv->auth_widget), "holder-changed", G_CALLBACK (auth_form_changed), auth); g_object_unref (set); } if (auth->priv->auth_widget) { gtk_container_add (GTK_CONTAINER (auth), auth->priv->auth_widget); gtk_widget_show (auth->priv->auth_widget); if (auth->priv->labels_size_group) gdaui_basic_form_add_to_size_group (GDAUI_BASIC_FORM (auth->priv->auth_widget), auth->priv->labels_size_group, GDAUI_BASIC_FORM_LABELS); if (auth->priv->entries_size_group) gdaui_basic_form_add_to_size_group (GDAUI_BASIC_FORM (auth->priv->auth_widget), auth->priv->entries_size_group, GDAUI_BASIC_FORM_ENTRIES); } g_signal_emit_by_name (auth, "changed"); }
static void adapt_form_widget (GdauiProviderSpecEditor *spec) { /* destroy any previous widget */ if (spec->priv->form) { gtk_container_foreach (GTK_CONTAINER (spec), (GtkCallback) gtk_widget_destroy, NULL); spec->priv->form = NULL; } spec->priv->type = NO_PROVIDER; if (!spec->priv->provider) return; /* fetch DSN parameters */ GdaProviderInfo *pinfo; pinfo = gda_config_get_provider_info (spec->priv->provider); if (!pinfo) { g_warning (_("Unknown provider '%s'"), spec->priv->provider); return; } if (!pinfo->dsn_params) { g_warning (_("Provider '%s' does not report the required parameters for DSN"), spec->priv->provider); return; } /* create new widget */ GdaSet *dset; dset = gda_set_copy (pinfo->dsn_params); if (dset) { GtkWidget *wid; spec->priv->type = PROVIDER_FORM; wid = gdaui_basic_form_new (dset); g_object_set ((GObject*) wid, "show-actions", FALSE, NULL); g_object_unref (dset); spec->priv->form = wid; if (spec->priv->labels_size_group) gdaui_basic_form_add_to_size_group (GDAUI_BASIC_FORM (spec->priv->form), spec->priv->labels_size_group, GDAUI_BASIC_FORM_LABELS); if (spec->priv->entries_size_group) gdaui_basic_form_add_to_size_group (GDAUI_BASIC_FORM (spec->priv->form), spec->priv->entries_size_group, GDAUI_BASIC_FORM_ENTRIES); update_form_contents (spec); g_signal_connect (G_OBJECT (wid), "holder-changed", G_CALLBACK (dsn_form_changed), spec); gtk_widget_show (wid); gtk_container_add (GTK_CONTAINER (spec), wid); } }
/* * _gdaui_provider_spec_editor_add_to_size_group * @spec: a #GdauiProviderSpecEditor widget */ void _gdaui_provider_spec_editor_add_to_size_group (GdauiProviderSpecEditor *spec, GtkSizeGroup *size_group, GdauiBasicFormPart part) { g_return_if_fail (GDAUI_IS_PROVIDER_SPEC_EDITOR (spec)); g_return_if_fail (GTK_IS_SIZE_GROUP (size_group)); g_return_if_fail (! ((spec->priv->labels_size_group && (part == GDAUI_BASIC_FORM_LABELS)) || (spec->priv->entries_size_group && (part == GDAUI_BASIC_FORM_ENTRIES)))); if (part == GDAUI_BASIC_FORM_LABELS) spec->priv->labels_size_group = g_object_ref (size_group); else spec->priv->entries_size_group = g_object_ref (size_group); gdaui_basic_form_add_to_size_group (GDAUI_BASIC_FORM (spec->priv->form), size_group, part); }
/* * _gdaui_provider_auth_editor_add_to_size_group * @auth: a #GdauiProviderAuthEditor widget */ void _gdaui_provider_auth_editor_add_to_size_group (GdauiProviderAuthEditor *auth, GtkSizeGroup *size_group, GdauiBasicFormPart part) { g_return_if_fail (GDAUI_IS_PROVIDER_AUTH_EDITOR (auth)); g_return_if_fail (GTK_IS_SIZE_GROUP (size_group)); g_return_if_fail (! ((auth->priv->labels_size_group && (part == GDAUI_BASIC_FORM_LABELS)) || (auth->priv->entries_size_group && (part == GDAUI_BASIC_FORM_ENTRIES)))); if (part == GDAUI_BASIC_FORM_LABELS) auth->priv->labels_size_group = g_object_ref (size_group); else auth->priv->entries_size_group = g_object_ref (size_group); if (auth->priv->auth_widget) gdaui_basic_form_add_to_size_group (GDAUI_BASIC_FORM (auth->priv->auth_widget), size_group, part); }