/** * gdaui_dsn_editor_get_dsn * @config: * * * * Returns: a pointer to the currently configured DSN (do not modify) */ const GdaDsnInfo * gdaui_dsn_editor_get_dsn (GdauiDsnEditor *config) { GdaDsnInfo *dsn_info; g_return_val_if_fail (GDAUI_IS_DSN_EDITOR (config), NULL); dsn_info = config->priv->dsn_info; g_free (dsn_info->provider); dsn_info->provider = NULL; g_free (dsn_info->cnc_string); dsn_info->cnc_string = NULL; g_free (dsn_info->description); dsn_info->description = NULL; g_free (dsn_info->auth_string); dsn_info->auth_string = NULL; g_free (dsn_info->name); dsn_info->name = NULL; dsn_info->name = g_strdup (config->priv->name); dsn_info->provider = g_strdup (gdaui_provider_selector_get_provider (GDAUI_PROVIDER_SELECTOR (config->priv->wprovider))); dsn_info->cnc_string = _gdaui_provider_spec_editor_get_specs (GDAUI_PROVIDER_SPEC_EDITOR (config->priv->dsn_spec)); GtkTextBuffer *buf; GtkTextIter start, end; buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (config->priv->wdesc)); gtk_text_buffer_get_start_iter (buf, &start); gtk_text_buffer_get_end_iter (buf, &end); dsn_info->description = gtk_text_buffer_get_text (buf, &start, &end, FALSE); dsn_info->auth_string = _gdaui_provider_auth_editor_get_auth (GDAUI_PROVIDER_AUTH_EDITOR (config->priv->dsn_auth)); dsn_info->is_system = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (config->priv->is_system)); return dsn_info; }
static void field_changed_cb (GtkWidget *widget, GdauiDsnEditor *config) { if (widget == config->priv->wprovider) { /* replace the expander's contents */ const gchar *pname; pname = gdaui_provider_selector_get_provider (GDAUI_PROVIDER_SELECTOR (config->priv->wprovider)); _gdaui_provider_spec_editor_set_provider (GDAUI_PROVIDER_SPEC_EDITOR (config->priv->dsn_spec), pname); _gdaui_provider_auth_editor_set_provider (GDAUI_PROVIDER_AUTH_EDITOR (config->priv->dsn_auth), pname); GdaProviderInfo *pinfo; pinfo = gda_config_get_provider_info (pname); GdkPixbuf *pix; pix = support_create_pixbuf_for_provider (pinfo); if (pix) { gtk_image_set_from_pixbuf (GTK_IMAGE (config->priv->icon), pix); g_object_unref (pix); } else gtk_image_clear (GTK_IMAGE (config->priv->icon)); if (pinfo) gtk_widget_hide (config->priv->warning); else gtk_widget_show (config->priv->warning); } if (! config->priv->no_change_signal) g_signal_emit (config, gdaui_dsn_editor_signals[CHANGED], 0, NULL); }
static gboolean settings_are_valid (GdauiLogin *login) { GdauiLoginPrivate *priv = gdaui_login_get_instance_private (login); /* validate cnc information */ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->rb_dsn))) { /* using a DSN */ gchar *dsn; dsn = _gdaui_dsn_selector_get_dsn (GDAUI_DSN_SELECTOR (priv->dsn_selector)); if (dsn) g_free (dsn); else return FALSE; } else { /* using a direct CNC string */ const gchar *prov; prov = gdaui_provider_selector_get_provider (GDAUI_PROVIDER_SELECTOR (priv->prov_selector)); if (!prov) return FALSE; if (! _gdaui_provider_spec_editor_is_valid (GDAUI_PROVIDER_SPEC_EDITOR (priv->cnc_params_editor))) return FALSE; } /* validate authentication */ if (! _gdaui_provider_auth_editor_is_valid (GDAUI_PROVIDER_AUTH_EDITOR (priv->auth_widget))) return FALSE; return TRUE; }
static GdaServerOperation * get_specs_database_creation (GdauiDsnAssistant *assistant) { if (! assistant->priv->create_db_op) assistant->priv->create_db_op = gda_server_operation_prepare_create_database (gdaui_provider_selector_get_provider ( GDAUI_PROVIDER_SELECTOR (assistant->priv->general_provider)), NULL, NULL); return assistant->priv->create_db_op; }
/** * gdaui_provider_selector_get_provider_obj: * @selector: a #GdauiProviderSelector widget * * Get the selected provider as a #GdaServerProvider object * * Returns: (transfer none): a #GdaServerProvider or %NULL if an error occurred * * Since: 4.2 */ GdaServerProvider * gdaui_provider_selector_get_provider_obj (GdauiProviderSelector *selector) { const gchar *pname; g_return_val_if_fail (GDAUI_IS_PROVIDER_SELECTOR (selector), NULL); pname = gdaui_provider_selector_get_provider (selector); if (pname) return gda_config_get_provider (pname, NULL); else return NULL; }
static void prov_entry_changed_cb (GdauiProviderSelector *sel, GdauiLogin *login) { GdauiLoginPrivate *priv = gdaui_login_get_instance_private (login); const gchar *prov; g_signal_handlers_block_by_func (priv->dsn_selector, G_CALLBACK (dsn_entry_changed_cb), login); _gdaui_dsn_selector_set_dsn (GDAUI_DSN_SELECTOR (priv->dsn_selector), NULL); g_signal_handlers_unblock_by_func (priv->dsn_selector, G_CALLBACK (dsn_entry_changed_cb), login); prov = gdaui_provider_selector_get_provider (sel); _gdaui_provider_spec_editor_set_provider (GDAUI_PROVIDER_SPEC_EDITOR (priv->cnc_params_editor), prov); _gdaui_provider_auth_editor_set_provider (GDAUI_PROVIDER_AUTH_EDITOR (priv->auth_widget), prov); if (priv->auth_widget) gtk_widget_grab_focus (priv->auth_widget); g_signal_emit (login, gdaui_login_signals [CHANGED], 0, settings_are_valid (login)); }
static gint forward_page_function (gint current_page, GdauiDsnAssistant *assistant) { switch (current_page) { case PAGE_START: return PAGE_GENERAL_INFO; case PAGE_GENERAL_INFO: if (assistant->priv->newdb_params) return PAGE_OPT_CREATE_DB; else return PAGE_CONNECT_INFO; case PAGE_OPT_CREATE_DB: if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (assistant->priv->choose_toggle))) return PAGE_CREATE_DB_INFO; else return PAGE_CONNECT_INFO; case PAGE_CREATE_DB_INFO: return PAGE_LAST; case PAGE_CONNECT_INFO: { GdaProviderInfo *pinfo; const gchar *provider; provider = gdaui_provider_selector_get_provider (GDAUI_PROVIDER_SELECTOR (assistant->priv->general_provider)); g_assert (provider); pinfo = gda_config_get_provider_info (provider); g_assert (pinfo); if (pinfo->auth_params && pinfo->auth_params->holders) return PAGE_AUTH_INFO; else return PAGE_LAST; } case PAGE_AUTH_INFO: return PAGE_LAST; case PAGE_LAST: break; default: g_assert_not_reached (); } return -1; }
/** * gdaui_login_get_connection_information: * @login: a #GdauiLogin object * * Get the information specified in @login as a pointer to a (read-only) #GdaDsnInfo. * If the connection is not specified by a DSN, then the 'name' attribute of the returned * #GdaDsnInfo will be %NULL, and otherwise it will contain the name of the selected DSN. * * Returns: (transfer none): a pointer to a (read-only) #GdaDsnInfo. * * Since: 4.2 */ const GdaDsnInfo * gdaui_login_get_connection_information (GdauiLogin *login) { g_return_val_if_fail (GDAUI_IS_LOGIN (login), NULL); GdauiLoginPrivate *priv = gdaui_login_get_instance_private (login); clear_dsn_info (login); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->rb_dsn))) { GdaDsnInfo *info = NULL; gchar *dsn; dsn = _gdaui_dsn_selector_get_dsn (GDAUI_DSN_SELECTOR (priv->dsn_selector)); if (dsn && *dsn) info = gda_config_get_dsn_info (dsn); g_free (dsn); if (info) { priv->dsn_info.name = g_strdup (info->name); if (info->provider) priv->dsn_info.provider = g_strdup (info->provider); if (info->description) priv->dsn_info.description = g_strdup (info->description); if (info->cnc_string) priv->dsn_info.cnc_string = g_strdup (info->cnc_string); priv->dsn_info.is_system = info->is_system; } priv->dsn_info.auth_string = _gdaui_provider_auth_editor_get_auth (GDAUI_PROVIDER_AUTH_EDITOR (priv->auth_widget)); } else { const gchar *str; str = gdaui_provider_selector_get_provider (GDAUI_PROVIDER_SELECTOR (priv->prov_selector)); if (str) priv->dsn_info.provider = g_strdup (str); priv->dsn_info.cnc_string = _gdaui_provider_spec_editor_get_specs (GDAUI_PROVIDER_SPEC_EDITOR (priv->cnc_params_editor)); priv->dsn_info.auth_string = _gdaui_provider_auth_editor_get_auth (GDAUI_PROVIDER_AUTH_EDITOR (priv->auth_widget)); } return &(priv->dsn_info); }
static void selection_changed_cb (GdauiProviderSelector *psel, G_GNUC_UNUSED gpointer data) { g_print ("Provider selected: %s\n", gdaui_provider_selector_get_provider (psel)); }
static void gdaui_dsn_editor_init (GdauiDsnEditor *config, G_GNUC_UNUSED GdauiDsnEditorClass *klass) { GtkWidget *grid; GtkWidget *label; GtkWidget *exp; gchar *str; g_return_if_fail (GDAUI_IS_DSN_EDITOR (config)); gtk_orientable_set_orientation (GTK_ORIENTABLE (config), GTK_ORIENTATION_VERTICAL); /* allocate private structure */ config->priv = g_new0 (GdauiDsnEditorPrivate, 1); config->priv->dsn_info = g_new0 (GdaDsnInfo, 1); config->priv->no_change_signal = TRUE; /* data source's name and icon */ GtkWidget *hbox_header; hbox_header = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start (GTK_BOX (config), hbox_header, FALSE, FALSE, 6); config->priv->icon = gtk_image_new (); gtk_widget_set_size_request (config->priv->icon, -1, SUPPORT_ICON_SIZE); gtk_box_pack_start (GTK_BOX (hbox_header), config->priv->icon, FALSE, FALSE, 0); config->priv->wname = gtk_label_new (""); gtk_box_pack_start (GTK_BOX (hbox_header), config->priv->wname, FALSE, FALSE, 10); GtkWidget *menu_button; menu_button = gtk_menu_button_new (); gtk_box_pack_end (GTK_BOX (hbox_header), menu_button, FALSE, FALSE, 0); GtkWidget *menu_icon; menu_icon = gtk_image_new_from_icon_name ("open-menu-symbolic", GTK_ICON_SIZE_MENU); gtk_button_set_image (GTK_BUTTON (menu_button), menu_icon); GMenu *smenu; smenu = g_menu_new (); gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (menu_button), G_MENU_MODEL (smenu)); GMenuItem *mitem; mitem = g_menu_item_new ("Test data source", "win.DSNTest"); g_menu_insert_item (smenu, -1, mitem); mitem = g_menu_item_new ("Reset data source's changes", "win.DSNReset"); g_menu_insert_item (smenu, -1, mitem); mitem = g_menu_item_new ("Duplicate data source", "win.DSNCopy"); g_menu_insert_item (smenu, -1, mitem); GtkWindow *win; win = gtk_application_get_active_window (GTK_APPLICATION (g_application_get_default ())); g_action_map_add_action_entries (G_ACTION_MAP (win), win_entries, G_N_ELEMENTS (win_entries), config); /* stack in a scrolled window */ GtkWidget *sw; sw = gtk_scrolled_window_new (NULL, NULL); gtk_widget_set_vexpand (sw, TRUE); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), GTK_SHADOW_NONE); gtk_box_pack_start (GTK_BOX (config), sw, TRUE, TRUE, 6); /* Stack */ config->priv->stack = gtk_stack_new (); gtk_stack_set_transition_type (GTK_STACK (config->priv->stack), GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT_RIGHT); gtk_container_add (GTK_CONTAINER (sw), config->priv->stack); /* set up widgets */ grid = gtk_grid_new (); gtk_grid_set_row_spacing (GTK_GRID (grid), 6); gtk_grid_set_column_spacing (GTK_GRID (grid), 6); gtk_widget_show (grid); label = gtk_label_new_with_mnemonic (_("_System wide data source:")); gtk_widget_set_halign (label, GTK_ALIGN_START); gtk_widget_set_hexpand (label, FALSE); g_object_set (G_OBJECT (label), "xalign", 0., NULL); gtk_widget_show (label); gtk_grid_attach (GTK_GRID (grid), label, 0, 1, 1, 1); config->priv->is_system = gtk_check_button_new (); gtk_widget_show (config->priv->is_system); g_signal_connect (G_OBJECT (config->priv->is_system), "toggled", G_CALLBACK (field_toggled_cb), config); gtk_grid_attach (GTK_GRID (grid), config->priv->is_system, 1, 1, 1, 1); str = g_strdup_printf ("%s <span foreground='red' weight='bold'>*</span>", _("_Provider:")); label = gtk_label_new (""); gtk_label_set_markup_with_mnemonic (GTK_LABEL (label), str); g_free (str); gtk_widget_set_halign (label, GTK_ALIGN_START); gtk_widget_set_hexpand (label, FALSE); g_object_set (G_OBJECT (label), "xalign", 0., NULL); gtk_widget_show (label); gtk_grid_attach (GTK_GRID (grid), label, 0, 2, 1, 1); config->priv->wprovider = gdaui_provider_selector_new (); gtk_widget_set_hexpand (config->priv->wprovider, TRUE); gtk_label_set_mnemonic_widget (GTK_LABEL (label), config->priv->wprovider); gtk_widget_show (config->priv->wprovider); g_signal_connect (G_OBJECT (config->priv->wprovider), "changed", G_CALLBACK (field_changed_cb), config); gtk_grid_attach (GTK_GRID (grid), config->priv->wprovider, 1, 2, 1, 1); label = gtk_label_new_with_mnemonic (_("_Description:")); gtk_widget_set_halign (label, GTK_ALIGN_START); gtk_widget_set_hexpand (label, FALSE); g_object_set (G_OBJECT (label), "xalign", 0., NULL); gtk_widget_show (label); gtk_grid_attach (GTK_GRID (grid), label, 0, 3, 1, 1); sw = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), GTK_SHADOW_ETCHED_IN); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER); config->priv->wdesc = gtk_text_view_new (); gtk_container_add (GTK_CONTAINER (sw), config->priv->wdesc); gtk_text_view_set_editable (GTK_TEXT_VIEW (config->priv->wdesc), TRUE); gtk_widget_set_vexpand (config->priv->wdesc, TRUE); gtk_label_set_mnemonic_widget (GTK_LABEL (label), config->priv->wdesc); g_signal_connect (gtk_text_view_get_buffer (GTK_TEXT_VIEW (config->priv->wdesc)), "changed", G_CALLBACK (field_changed_cb), config); gtk_grid_attach (GTK_GRID (grid), sw, 1, 3, 1, 1); config->priv->warning = gtk_label_new (NULL); gtk_label_set_markup (GTK_LABEL (config->priv->warning), _("<span foreground='red'>The database provider used by this data source is not available,\n" "editing the data source's attributes is disabled</span>")); gtk_widget_set_halign (config->priv->warning, GTK_ALIGN_CENTER); gtk_widget_set_hexpand (config->priv->warning, TRUE); g_object_set (G_OBJECT (config->priv->warning), "xalign", 0.5, NULL); gtk_label_set_justify (GTK_LABEL (config->priv->warning), GTK_JUSTIFY_CENTER); gtk_label_set_line_wrap (GTK_LABEL (config->priv->warning), TRUE); gtk_grid_attach (GTK_GRID (grid), config->priv->warning, 0, 8, 2, 1); gtk_stack_add_named (GTK_STACK (config->priv->stack), grid, PANE_DEFINITION); /* connection's spec */ config->priv->dsn_spec = _gdaui_provider_spec_editor_new (gdaui_provider_selector_get_provider (GDAUI_PROVIDER_SELECTOR (config->priv->wprovider))); g_signal_connect (G_OBJECT (config->priv->dsn_spec), "changed", G_CALLBACK (field_changed_cb), config); gtk_widget_show (config->priv->dsn_spec); gtk_stack_add_named (GTK_STACK (config->priv->stack), config->priv->dsn_spec, PANE_PARAMS); /* connection's authentication */ config->priv->dsn_auth = _gdaui_provider_auth_editor_new (gdaui_provider_selector_get_provider (GDAUI_PROVIDER_SELECTOR (config->priv->wprovider))); g_signal_connect (G_OBJECT (config->priv->dsn_auth), "changed", G_CALLBACK (field_changed_cb), config); gtk_widget_show (config->priv->dsn_auth); gtk_stack_add_named (GTK_STACK (config->priv->stack), config->priv->dsn_auth, PANE_AUTH); config->priv->no_change_signal = FALSE; }
static void provider_changed_cb (G_GNUC_UNUSED GtkWidget *combo, GdauiDsnAssistant *assistant) { GdaServerOperation *op; const gchar *provider; /* clean any previous Provider specific stuff */ if (assistant->priv->newdb_params) { gtk_widget_destroy (assistant->priv->newdb_params); assistant->priv->newdb_params = NULL; } if (assistant->priv->create_db_op) { g_object_unref (assistant->priv->create_db_op); assistant->priv->create_db_op = NULL; } if (!assistant->priv->size_group) assistant->priv->size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); /* is the database creation supported by the chosen provider? */ op = get_specs_database_creation (assistant); if (op) { assistant->priv->newdb_params = g_object_new (GDAUI_TYPE_SERVER_OPERATION, "hide-single-header", TRUE, "server-operation", op, NULL); gtk_widget_show (assistant->priv->newdb_params); gtk_container_add (GTK_CONTAINER (assistant->priv->newdb_box), assistant->priv->newdb_params); assistant->priv->create_db_op = op; gtk_widget_set_sensitive (assistant->priv->choose_toggle, TRUE); } else { gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (assistant->priv->choose_toggle), FALSE); gtk_widget_set_sensitive (assistant->priv->choose_toggle, FALSE); } /* dsn spec for the selected provider */ provider = gdaui_provider_selector_get_provider (GDAUI_PROVIDER_SELECTOR (assistant->priv->general_provider)); g_assert (provider); if (!assistant->priv->provider_detail) { assistant->priv->provider_detail = _gdaui_provider_spec_editor_new (provider); gtk_box_pack_start (GTK_BOX (assistant->priv->provider_container), assistant->priv->provider_detail, TRUE, TRUE, 0); gtk_widget_show (assistant->priv->provider_detail); g_signal_connect (assistant->priv->provider_detail, "changed", G_CALLBACK (dsn_spec_changed_cb), assistant); _gdaui_provider_spec_editor_add_to_size_group (GDAUI_PROVIDER_SPEC_EDITOR (assistant->priv->provider_detail), assistant->priv->size_group, GDAUI_BASIC_FORM_LABELS); } else _gdaui_provider_spec_editor_set_provider (GDAUI_PROVIDER_SPEC_EDITOR (assistant->priv->provider_detail), provider); /* dsn authentication for the selected provider */ if (!assistant->priv->auth_detail) { assistant->priv->auth_detail = _gdaui_provider_auth_editor_new (provider); gtk_box_pack_start (GTK_BOX (assistant->priv->auth_container), assistant->priv->auth_detail, TRUE, TRUE, 0); gtk_widget_show (assistant->priv->auth_detail); g_signal_connect (assistant->priv->auth_detail, "changed", G_CALLBACK (dsn_auth_changed_cb), assistant); _gdaui_provider_auth_editor_add_to_size_group (GDAUI_PROVIDER_AUTH_EDITOR (assistant->priv->auth_detail), assistant->priv->size_group, GDAUI_BASIC_FORM_LABELS); } else _gdaui_provider_auth_editor_set_provider (GDAUI_PROVIDER_AUTH_EDITOR (assistant->priv->auth_detail), provider); }
static void assistant_applied_cb (GtkAssistant *assist, G_GNUC_UNUSED gpointer data) { gboolean allok = TRUE; GString *cnc_string = NULL; GdauiDsnAssistant *assistant = (GdauiDsnAssistant *) assist; g_return_if_fail (GDAUI_IS_DSN_ASSISTANT (assistant)); /* clear the internal dsn_info */ if (assistant->priv->dsn_info) { data_source_info_free (assistant->priv->dsn_info); assistant->priv->dsn_info = NULL; } /* New database creation first */ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (assistant->priv->choose_toggle))) { if (!gda_server_operation_is_valid (assistant->priv->create_db_op, NULL, NULL)) { _gdaui_utility_show_error (NULL, _("Missing mandatory information, to create database")); gtk_assistant_set_current_page (assist, PAGE_CREATE_DB_INFO); return; } else { GdaProviderInfo *prov_info; GSList *dsn_params; GError *error = NULL; allok = gda_server_operation_perform_create_database (assistant->priv->create_db_op, NULL, &error); if (!allok) { gchar *str; str = g_strdup_printf (_("Error creating database: %s"), error && error->message ? error->message : _("Unknown error")); _gdaui_utility_show_error (NULL, str); g_free (str); gtk_assistant_set_current_page (assist, PAGE_CREATE_DB_INFO); return; } /* make the connection string for the data source */ prov_info = gda_config_get_provider_info (gdaui_provider_selector_get_provider (GDAUI_PROVIDER_SELECTOR (assistant->priv->general_provider))); g_return_if_fail (prov_info); for (dsn_params = prov_info->dsn_params->holders; dsn_params; dsn_params = dsn_params->next) { GdaHolder *param = GDA_HOLDER (dsn_params->data); const GValue *value; value = gda_server_operation_get_value_at (assistant->priv->create_db_op, "/DB_DEF_P/%s", gda_holder_get_id (param)); if (!value) value = gda_server_operation_get_value_at (assistant->priv->create_db_op, "/SERVER_CNX_P/%s", gda_holder_get_id (param)); if (value && !gda_value_is_null ((GValue *) value)) { gchar *str; if (dsn_params == prov_info->dsn_params->holders) cnc_string = g_string_new (""); else g_string_append (cnc_string, ";"); str = gda_value_stringify ((GValue *) value); g_string_append_printf (cnc_string, "%s=%s", gda_holder_get_id (param), str); g_free (str); } } } } /* Data source declaration */ if (allok) { assistant->priv->dsn_info = g_new0 (GdaDsnInfo, 1); assistant->priv->dsn_info->name = g_strdup (gtk_entry_get_text (GTK_ENTRY (assistant->priv->general_name))); assistant->priv->dsn_info->provider = g_strdup ( gdaui_provider_selector_get_provider ( GDAUI_PROVIDER_SELECTOR (assistant->priv->general_provider))); if (cnc_string) { assistant->priv->dsn_info->cnc_string = cnc_string->str; g_string_free (cnc_string, FALSE); } else assistant->priv->dsn_info->cnc_string = _gdaui_provider_spec_editor_get_specs (GDAUI_PROVIDER_SPEC_EDITOR (assistant->priv->provider_detail)); assistant->priv->dsn_info->description = g_strdup (gtk_entry_get_text (GTK_ENTRY (assistant->priv->general_description))); assistant->priv->dsn_info->auth_string = NULL; if (assistant->priv->auth_detail) assistant->priv->dsn_info->auth_string = _gdaui_provider_auth_editor_get_auth (GDAUI_PROVIDER_AUTH_EDITOR (assistant->priv->auth_detail)); if (gda_config_can_modify_system_config ()) assistant->priv->dsn_info->is_system = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (assistant->priv->general_is_system)); else assistant->priv->dsn_info->is_system = FALSE; } /* notify listeners */ g_signal_emit (G_OBJECT (assistant), config_assistant_signals[FINISHED], 0, !allok); }