static void dsn_reset_cb (G_GNUC_UNUSED GSimpleAction *action, GVariant *state, gpointer data) { GdauiDsnEditor *editor; editor = GDAUI_DSN_EDITOR (data); GdaDsnInfo *orig; orig = gda_config_get_dsn_info (editor->priv->name); gdaui_dsn_editor_set_dsn (editor, orig); }
static void save_cb (GtkButton *button, GtkWidget *dsn) { DsnConfigPrivate *priv; priv = g_object_get_data (G_OBJECT (dsn), DSN_CONFIG_DATA); const GdaDsnInfo *newdsn; newdsn = gdaui_dsn_editor_get_dsn (priv->dsn_editor); GError *error = NULL; if (! gda_config_define_dsn (newdsn, &error)) { _gdaui_utility_show_error (NULL, _("Could not save DSN definition: %s"), error ? error->message : _("No detail")); g_clear_error (&error); } /* update reference DSN and UI */ GdaDsnInfo *dsn_info; dsn_info = gda_config_get_dsn_info (newdsn->name); gdaui_dsn_editor_set_dsn (priv->dsn_editor, dsn_info); }
static void list_selection_changed_cb (GdauiRawGrid *grid, gpointer user_data) { DsnConfigPrivate *priv; GdaDataModel *model; GArray *selection; gchar *str; const GValue *cvalue; GtkWidget *win = gtk_widget_get_toplevel (GTK_WIDGET (grid)); if (gtk_widget_is_toplevel (win)) { g_simple_action_set_enabled (G_SIMPLE_ACTION (g_action_map_lookup_action (G_ACTION_MAP (win), "DatasourceDelete")), FALSE); } priv = g_object_get_data (G_OBJECT (user_data), DSN_CONFIG_DATA); selection = gdaui_data_selector_get_selected_rows (GDAUI_DATA_SELECTOR (priv->dsn_list)); if (!selection) { gtk_stack_set_visible_child_name (GTK_STACK (priv->stack), ST_NOPROP); return; } model = gdaui_data_selector_get_model (GDAUI_DATA_SELECTOR (priv->dsn_list)); if (!GDA_IS_DATA_MODEL (model)) { g_array_free (selection, TRUE); gtk_stack_set_visible_child_name (GTK_STACK (priv->stack), ST_NOPROP); return; } cvalue = gda_data_model_get_value_at (model, 0, g_array_index (selection, gint, 0), NULL); g_array_free (selection, TRUE); if (!cvalue) { gtk_stack_set_visible_child_name (GTK_STACK (priv->stack), ST_NOPROP); return; } str = gda_value_stringify ((GValue *) cvalue); g_print ("==> %s\n", str); GdaDsnInfo *dsn_info; dsn_info = gda_config_get_dsn_info (str); g_free (str); if (!dsn_info) { /* something went wrong here... */ gtk_stack_set_visible_child_name (GTK_STACK (priv->stack), ST_NOPROP); return; } gdaui_dsn_editor_set_dsn (priv->dsn_editor, dsn_info); if (gdaui_dsn_editor_need_authentication (priv->dsn_editor)) gtk_widget_show (GTK_WIDGET (priv->view_buttons [GDAUI_DSN_EDITOR_PANE_AUTH])); else gtk_widget_hide (GTK_WIDGET (priv->view_buttons [GDAUI_DSN_EDITOR_PANE_AUTH])); gtk_toggle_button_set_active (priv->view_buttons [GDAUI_DSN_EDITOR_PANE_DEFINITION], TRUE); gtk_stack_set_visible_child_name (GTK_STACK (priv->stack), ST_PROP); if (gtk_widget_is_toplevel (win)) { g_simple_action_set_enabled (G_SIMPLE_ACTION (g_action_map_lookup_action (G_ACTION_MAP (win), "DatasourceDelete")), TRUE); } }