/** * gdaui_login_set_connection_information: * @login: a #GdauiLogin object * @cinfo: a pointer to a structure representing the information to display. * * Changes the information displayed in @login, to represent @cinfo. * If @login's mode has %GDA_UI_LOGIN_HIDE_DIRECT_CONNECTION_MODE, then * if @cinfo->name is not %NULL it is displayed in the DSN selector, otherwise * a warning is shown and the result * is the same as having passed %NULL for the @cinfo argument. * * In any case @login's mode (set by gdaui_login_set_mode()) is not changed. */ void gdaui_login_set_connection_information (GdauiLogin *login, const GdaDsnInfo *cinfo) { g_return_if_fail (GDAUI_IS_LOGIN (login)); GdauiLoginPrivate *priv = gdaui_login_get_instance_private (login); if (!cinfo) { _gdaui_dsn_selector_set_dsn (GDAUI_DSN_SELECTOR (priv->dsn_selector), NULL); } else { GdaDsnInfo *info = NULL; if (cinfo->name) info = gda_config_get_dsn_info (cinfo->name); if (info) _gdaui_dsn_selector_set_dsn (GDAUI_DSN_SELECTOR (priv->dsn_selector), cinfo->name); else { /* force switch to */ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->rb_dsn), FALSE); } g_signal_handlers_block_by_func (priv->prov_selector, G_CALLBACK (prov_entry_changed_cb), login); gdaui_provider_selector_set_provider (GDAUI_PROVIDER_SELECTOR (priv->prov_selector), cinfo->provider); g_signal_handlers_unblock_by_func (priv->prov_selector, G_CALLBACK (prov_entry_changed_cb), login); _gdaui_provider_spec_editor_set_provider (GDAUI_PROVIDER_SPEC_EDITOR (priv->cnc_params_editor), cinfo->provider); _gdaui_provider_spec_editor_set_specs (GDAUI_PROVIDER_SPEC_EDITOR (priv->cnc_params_editor), cinfo->cnc_string); _gdaui_provider_auth_editor_set_provider (GDAUI_PROVIDER_AUTH_EDITOR (priv->auth_widget), cinfo->provider); _gdaui_provider_auth_editor_set_auth (GDAUI_PROVIDER_AUTH_EDITOR (priv->auth_widget), cinfo->auth_string); } }
static void dsn_entry_changed_cb (GdauiDsnSelector *sel, GdauiLogin *login) { GdauiLoginPrivate *priv = gdaui_login_get_instance_private (login); gchar *dsn; GdaDsnInfo *info = NULL; dsn = _gdaui_dsn_selector_get_dsn (sel); if (dsn) { info = gda_config_get_dsn_info (dsn); g_free (dsn); } /* update prov_selector */ g_signal_handlers_block_by_func (priv->prov_selector, G_CALLBACK (prov_entry_changed_cb), login); gdaui_provider_selector_set_provider (GDAUI_PROVIDER_SELECTOR (priv->prov_selector), info ? info->provider : NULL); g_signal_handlers_unblock_by_func (priv->prov_selector, G_CALLBACK (prov_entry_changed_cb), login); /* update auth editor */ _gdaui_provider_auth_editor_set_provider (GDAUI_PROVIDER_AUTH_EDITOR (priv->auth_widget), info ? info->provider : NULL); _gdaui_provider_auth_editor_set_auth (GDAUI_PROVIDER_AUTH_EDITOR (priv->auth_widget), info && info->auth_string ? info->auth_string : NULL); /* update spec editor */ _gdaui_provider_spec_editor_set_provider (GDAUI_PROVIDER_SPEC_EDITOR (priv->cnc_params_editor), info ? info->provider : NULL); _gdaui_provider_spec_editor_set_specs (GDAUI_PROVIDER_SPEC_EDITOR (priv->cnc_params_editor), info ? info->cnc_string : NULL); if (priv->auth_widget) gtk_widget_grab_focus (priv->auth_widget); g_signal_emit (login, gdaui_login_signals [CHANGED], 0, settings_are_valid (login)); }
/** * gdaui_dsn_editor_set_dsn * @editor: a #GdauiDsnEditor widget * @dsn_info: (allow-none): a #GdaDsnInfo pointer or %NULL * * * Requests that @editor update its contents with @dsn_info's contents */ void gdaui_dsn_editor_set_dsn (GdauiDsnEditor *editor, const GdaDsnInfo *dsn_info) { g_return_if_fail (GDAUI_IS_DSN_EDITOR (editor)); editor->priv->no_change_signal = TRUE; if (dsn_info) { GdaProviderInfo *pinfo; pinfo = gda_config_get_provider_info (dsn_info->provider); GdkPixbuf *pix; pix = support_create_pixbuf_for_provider (pinfo); if (pix) { gtk_image_set_from_pixbuf (GTK_IMAGE (editor->priv->icon), pix); g_object_unref (pix); } else gtk_image_clear (GTK_IMAGE (editor->priv->icon)); if (pinfo) gtk_widget_hide (editor->priv->warning); else gtk_widget_show (editor->priv->warning); gchar *tmp; tmp = g_markup_printf_escaped ("<big><b>%s</b></big>", dsn_info->name); gtk_label_set_markup (GTK_LABEL (editor->priv->wname), tmp); g_free (tmp); g_free (editor->priv->name); editor->priv->name = g_strdup (dsn_info->name); gdaui_provider_selector_set_provider (GDAUI_PROVIDER_SELECTOR (editor->priv->wprovider), dsn_info->provider); _gdaui_provider_spec_editor_set_provider (GDAUI_PROVIDER_SPEC_EDITOR (editor->priv->dsn_spec), dsn_info->provider); _gdaui_provider_spec_editor_set_specs (GDAUI_PROVIDER_SPEC_EDITOR (editor->priv->dsn_spec), dsn_info->cnc_string); gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW (editor->priv->wdesc)), dsn_info->description ? dsn_info->description : "", -1); _gdaui_provider_auth_editor_set_provider (GDAUI_PROVIDER_AUTH_EDITOR (editor->priv->dsn_auth), dsn_info->provider); _gdaui_provider_auth_editor_set_auth (GDAUI_PROVIDER_AUTH_EDITOR (editor->priv->dsn_auth), dsn_info->auth_string); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (editor->priv->is_system), dsn_info->is_system); if (dsn_info->is_system && !gda_config_can_modify_system_config ()) { gtk_widget_set_sensitive (editor->priv->wprovider, FALSE); gtk_text_view_set_editable (GTK_TEXT_VIEW (editor->priv->wdesc), pinfo ? TRUE : FALSE); gtk_widget_set_sensitive (editor->priv->dsn_spec, FALSE); gtk_widget_set_sensitive (editor->priv->dsn_auth, FALSE); gtk_widget_set_sensitive (editor->priv->is_system, FALSE); } else { gtk_widget_set_sensitive (editor->priv->wprovider, pinfo ? TRUE : FALSE); gtk_text_view_set_editable (GTK_TEXT_VIEW (editor->priv->wdesc), pinfo ? TRUE : FALSE); gtk_widget_set_sensitive (editor->priv->dsn_spec, TRUE); gtk_widget_set_sensitive (editor->priv->dsn_auth, TRUE); gtk_widget_set_sensitive (editor->priv->is_system, pinfo && gda_config_can_modify_system_config () ? TRUE : FALSE); } } else { gtk_image_clear (GTK_IMAGE (editor->priv->icon)); gtk_label_set_text (GTK_LABEL (editor->priv->wname), ""); gdaui_provider_selector_set_provider (GDAUI_PROVIDER_SELECTOR (editor->priv->wprovider), NULL); _gdaui_provider_spec_editor_set_provider (GDAUI_PROVIDER_SPEC_EDITOR (editor->priv->dsn_spec), NULL); gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW (editor->priv->wdesc)), "", -1); _gdaui_provider_auth_editor_set_provider (GDAUI_PROVIDER_AUTH_EDITOR (editor->priv->dsn_auth), NULL); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (editor->priv->is_system), FALSE); gtk_widget_set_sensitive (editor->priv->wprovider, FALSE); gtk_text_view_set_editable (GTK_TEXT_VIEW (editor->priv->wdesc), FALSE); gtk_widget_set_sensitive (editor->priv->dsn_spec, FALSE); gtk_widget_set_sensitive (editor->priv->dsn_auth, FALSE); gtk_widget_set_sensitive (editor->priv->is_system, FALSE); } editor->priv->no_change_signal = FALSE; g_signal_emit (editor, gdaui_dsn_editor_signals[CHANGED], 0, NULL); }
GtkWidget * do_ddl_queries (GtkWidget *do_widget) { if (!window) { GtkWidget *grid; GtkWidget *label; GtkWidget *wid; DemoData *data; GtkWidget *bbox; GtkWidget *sw, *vp; data = g_new0 (DemoData, 1); window = gtk_dialog_new_with_buttons ("DDL queries", GTK_WINDOW (do_widget), 0, "Close", GTK_RESPONSE_NONE, NULL); data->top_window = window; g_signal_connect (window, "response", G_CALLBACK (gtk_widget_destroy), NULL); g_signal_connect (window, "destroy", G_CALLBACK (gtk_widget_destroyed), &window); grid = gtk_grid_new (); gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (window))), grid, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (grid), 5); label = gtk_label_new ("<b>Tested provider and operation:</b>"); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_widget_set_halign (label, GTK_ALIGN_START); gtk_grid_attach (GTK_GRID (grid), label, 0, 0, 2, 1); /* provider selection */ label = gtk_label_new ("Tested provider:"); gtk_widget_set_halign (label, GTK_ALIGN_START); gtk_grid_attach (GTK_GRID (grid), label, 0, 1, 1, 1); wid = gdaui_provider_selector_new (); gdaui_provider_selector_set_provider (GDAUI_PROVIDER_SELECTOR (wid), "SQLite"); gtk_grid_attach (GTK_GRID (grid), wid, 1, 1, 1, 1); data->prov_sel = GDAUI_PROVIDER_SELECTOR (wid); g_signal_connect (G_OBJECT (data->prov_sel), "changed", G_CALLBACK (tested_provider_changed_cb), data); /* operation selection */ label = gtk_label_new ("Tested operation:"); gtk_widget_set_halign (label, GTK_ALIGN_START); gtk_grid_attach (GTK_GRID (grid), label, 0, 2, 1, 1); wid = gdaui_combo_new (); gtk_grid_attach (GTK_GRID (grid), wid, 1, 2, 1, 1); g_signal_connect (G_OBJECT (wid), "changed", G_CALLBACK (tested_operation_changed_cb), data); data->op_combo = wid; /* container for GdauiServerOperation */ label = gtk_label_new ("<b>GdauiServerOperation widget:</b>"); gtk_widget_set_halign (label, GTK_ALIGN_START); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_grid_attach (GTK_GRID (grid), label, 0, 3, 2, 1); sw = gtk_scrolled_window_new (FALSE, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_widget_set_size_request (sw, 600, 450); gtk_grid_attach (GTK_GRID (grid), sw, 0, 4, 2, 1); vp = gtk_viewport_new (NULL, NULL); gtk_widget_set_name (vp, "gdaui-transparent-background"); gtk_viewport_set_shadow_type (GTK_VIEWPORT (vp), GTK_SHADOW_NONE); gtk_container_add (GTK_CONTAINER (sw), vp); data->op_container = vp; /* bottom buttons */ bbox = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL); gtk_grid_attach (GTK_GRID (grid), bbox, 0, 5, 2, 1); wid = gtk_button_new_with_label ("Show named parameters"); data->show_button = wid; gtk_box_pack_start (GTK_BOX (bbox), wid, TRUE, TRUE, 0); g_signal_connect (G_OBJECT (wid), "clicked", G_CALLBACK (show_named_parameters), data); wid = gtk_button_new_with_label ("Show SQL"); data->sql_button = wid; gtk_box_pack_start (GTK_BOX (bbox), wid, TRUE, TRUE, 0); g_signal_connect (G_OBJECT (wid), "clicked", G_CALLBACK (show_sql), data); tested_provider_changed_cb (data->prov_sel, data); gtk_combo_box_set_active (GTK_COMBO_BOX (data->op_combo), 1); } gboolean visible; g_object_get (G_OBJECT (window), "visible", &visible, NULL); if (!visible) gtk_widget_show_all (window); else { gtk_widget_destroy (window); window = NULL; } return window; }