in setupgui/gtk/odbcdialogparams.cc [551:804]
int ShowOdbcParamsDialog(DataSource* params, HWND ParentWnd, BOOL isPrompt)
{
GtkWidget *dummy;
GtkEntry *entry;
GError *error= NULL;
GdkPixbuf *pixbuf;
SQLINTEGER len= SQL_NTS;
int i = 0;
db_popped_up= FALSE;
cs_popped_up= FALSE;
assert(!BusyIndicator);
pParams= params;
g_isPrompt= isPrompt;
gtk_init(nullptr, nullptr);
/*
If prompting (with a DSN name), or not prompting (add/edit DSN),
we translate the lib path to the actual driver name.
*/
if (params->opt_DSN || !isPrompt)
{
Driver driver;
if (params->opt_DRIVER)
driver.lib = params->opt_DRIVER;
if (driver.lookup_name())
{
GtkWidget *msg_box;
msg_box= gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
"Failure to lookup driver entry at path '%s'('%s')",
(const char*)driver.lib, params->opt_DSN);
gtk_dialog_run (GTK_DIALOG (msg_box));
gtk_widget_hide(msg_box);
gtk_widget_destroy(msg_box);
return 0;
}
params->opt_DRIVER = driver.name;
}
dummy= gtk_vbox_new(0,0);
g_object_ref_sink(G_OBJECT (dummy));
dummy= gtk_image_new();
g_object_ref_sink(G_OBJECT (dummy));
dummy= gtk_frame_new(0);
g_object_ref_sink(G_OBJECT (dummy));
dummy= gtk_table_new(0,0,0);
g_object_ref_sink(G_OBJECT (dummy));
dummy= gtk_label_new(NULL);
g_object_ref_sink(G_OBJECT (dummy));
dummy= gtk_entry_new();
g_object_ref_sink(G_OBJECT (dummy));
dummy= gtk_spin_button_new(0, 0., 0);
g_object_ref_sink(G_OBJECT (dummy));
dummy= gtk_hseparator_new();
g_object_ref_sink(G_OBJECT (dummy));
dummy= gtk_combo_box_new();
g_object_ref_sink(G_OBJECT (dummy));
#if GTK_MAJOR_VERSION >= 3
dummy= gtk_combo_box_text_new();
g_object_ref_sink(G_OBJECT (dummy));
#endif
builder = gtk_builder_new ();
/* add GUI definitions from ui_xml.h */
gtk_builder_add_from_string(builder, ui_xml, -1 /* NULL-terminated */,
&error);
if (error)
{
g_error ("ERROR: %s\n", error->message);
return 0;
}
pixbuf= gdk_pixbuf_new_from_xpm_data((const char **)aws_connector_odbc_header_xpm);
dummy= GTK_WIDGET (gtk_builder_get_object (builder, "header"));
g_object_set(dummy, "pixbuf", pixbuf, NULL);
dsnEditDialog= GTK_WIDGET (gtk_builder_get_object (builder, "odbcdialog"));
details_note= GTK_WIDGET (gtk_builder_get_object (builder, "details_note"));
show_details= GTK_WIDGET (gtk_builder_get_object (builder, "show_details"));
hide_details= GTK_WIDGET (gtk_builder_get_object (builder, "hide_details"));
g_signal_connect ((gpointer) show_details, "clicked",
G_CALLBACK (on_show_details_clicked), NULL);
g_signal_connect ((gpointer) hide_details, "clicked",
G_CALLBACK (on_hide_details_clicked), NULL);
dummy= GTK_WIDGET (gtk_builder_get_object (builder, "ok"));
g_signal_connect ((gpointer) dummy, "clicked",
G_CALLBACK (on_ok_clicked), NULL);
dummy= GTK_WIDGET (gtk_builder_get_object (builder, "cancel"));
g_signal_connect ((gpointer) dummy, "clicked",
G_CALLBACK (on_cancel_clicked), NULL);
dummy= GTK_WIDGET (gtk_builder_get_object (builder, "help"));
g_signal_connect ((gpointer) dummy, "clicked",
G_CALLBACK (on_help_clicked), NULL);
dummy= GTK_WIDGET (gtk_builder_get_object (builder, "test"));
g_signal_connect ((gpointer) dummy, "clicked",
G_CALLBACK (on_test_clicked), NULL);
dummy= GTK_WIDGET (gtk_builder_get_object (builder, "DATABASE"));
#if GTK_MAJOR_VERSION >= 3
g_signal_connect ((gpointer) dummy, "set-focus-child",
G_CALLBACK (on_database_popup), NULL);
#else
g_signal_connect ((gpointer) dummy, "notify::popup-shown",
G_CALLBACK (on_database_popup), NULL);
#endif
/* Work around the keyboard-trapping bug in GTKComboBox */
g_signal_connect ((gpointer) dummy, "key-press-event",
G_CALLBACK (on_tab_press), NULL);
dummy= GTK_WIDGET (gtk_builder_get_object (builder, "CHARSET"));
#if GTK_MAJOR_VERSION >= 3
g_signal_connect ((gpointer) dummy, "set-focus-child",
G_CALLBACK (on_charset_popup), NULL);
#else
g_signal_connect ((gpointer) dummy, "notify::popup-shown",
G_CALLBACK (on_charset_popup), NULL);
#endif
/* Work around the keyboard-trapping bug in GTKComboBox */
g_signal_connect ((gpointer) dummy, "key-press-event",
G_CALLBACK (on_tab_press), (gpointer)1);
dummy= GTK_WIDGET (gtk_builder_get_object (builder, "use_tcp_ip_server"));
g_signal_connect ((gpointer) dummy, "toggled",
G_CALLBACK (on_use_tcp_ip_server_toggled), NULL);
dummy= GTK_WIDGET (gtk_builder_get_object (builder, "use_socket_file"));
g_signal_connect ((gpointer) dummy, "toggled",
G_CALLBACK (on_use_socket_file_toggled), NULL);
dummy= GTK_WIDGET (gtk_builder_get_object (builder, "ENABLE_DNS_SRV"));
g_signal_connect ((gpointer) dummy, "toggled",
G_CALLBACK (on_enable_DNS_SRV_toggled), NULL);
dummy= GTK_WIDGET (gtk_builder_get_object (builder, "SSL_KEY_button"));
entry= GTK_ENTRY (gtk_builder_get_object (builder, "SSL_KEY"));
g_signal_connect ((gpointer) dummy, "clicked",
G_CALLBACK (on_file_button_clicked), entry);
dummy= GTK_WIDGET (gtk_builder_get_object (builder, "SSL_CERT_button"));
entry= GTK_ENTRY (gtk_builder_get_object (builder, "SSL_CERT"));
g_signal_connect ((gpointer) dummy, "clicked",
G_CALLBACK (on_file_button_clicked), entry);
dummy= GTK_WIDGET (gtk_builder_get_object (builder, "SSL_CA_button"));
entry= GTK_ENTRY (gtk_builder_get_object (builder, "SSL_CA"));
g_signal_connect ((gpointer) dummy, "clicked",
G_CALLBACK (on_file_button_clicked), entry);
dummy= GTK_WIDGET (gtk_builder_get_object (builder, "SSL_CAPATH_button"));
entry= GTK_ENTRY (gtk_builder_get_object (builder, "SSL_CAPATH"));
g_signal_connect ((gpointer) dummy, "clicked",
G_CALLBACK (on_folder_button_clicked), entry);
dummy= GTK_WIDGET (gtk_builder_get_object (builder, "RSAKEY_button"));
entry= GTK_ENTRY (gtk_builder_get_object (builder, "RSAKEY"));
g_signal_connect ((gpointer) dummy, "clicked",
G_CALLBACK (on_file_button_clicked), entry);
dummy= GTK_WIDGET (gtk_builder_get_object (builder, "SSL_CRL_button"));
entry= GTK_ENTRY (gtk_builder_get_object (builder, "SSL_CRL"));
g_signal_connect ((gpointer) dummy, "clicked",
G_CALLBACK (on_file_button_clicked), entry);
dummy= GTK_WIDGET (gtk_builder_get_object (builder, "SSL_CRLPATH_button"));
entry= GTK_ENTRY (gtk_builder_get_object (builder, "SSL_CRLPATH"));
g_signal_connect ((gpointer) dummy, "clicked",
G_CALLBACK (on_folder_button_clicked), entry);
dummy= GTK_WIDGET (gtk_builder_get_object (builder, "cursor_prefetch_active"));
g_signal_connect ((gpointer) dummy, "toggled",
G_CALLBACK (on_check_cursor_prefetch_toggled), NULL);
dummy= GTK_WIDGET (gtk_builder_get_object (builder, "plugindir_button"));
entry= GTK_ENTRY (gtk_builder_get_object (builder, "PLUGIN_DIR"));
g_signal_connect ((gpointer) dummy, "clicked",
G_CALLBACK (on_folder_button_clicked), entry);
dummy= GTK_WIDGET (gtk_builder_get_object (builder, "LOAD_DATA_LOCAL_DIR_button"));
entry= GTK_ENTRY (gtk_builder_get_object (builder, "LOAD_DATA_LOCAL_DIR"));
g_signal_connect ((gpointer) dummy, "clicked",
G_CALLBACK (on_folder_button_clicked), entry);
dummy= GTK_WIDGET (gtk_builder_get_object (builder, "OCI_CONFIG_FILE_button"));
entry= GTK_ENTRY (gtk_builder_get_object (builder, "OCI_CONFIG_FILE"));
g_signal_connect ((gpointer) dummy, "clicked",
G_CALLBACK (on_file_button_clicked), entry);
gtk_builder_connect_signals(builder, NULL);
gtk_widget_hide(hide_details);
{
GtkListStore *store;
GtkTreeIter iter;
GtkComboBox *ssl_mode_combo;
ssl_mode_combo = GTK_COMBO_BOX(gtk_builder_get_object(builder, "SSL_MODE"));
store = gtk_list_store_new(1, G_TYPE_STRING);
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter, 0, "", -1);
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter, 0, ODBC_SSL_MODE_DISABLED, -1);
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter, 0, ODBC_SSL_MODE_PREFERRED, -1);
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter, 0, ODBC_SSL_MODE_REQUIRED, -1);
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter, 0, ODBC_SSL_MODE_VERIFY_CA, -1);
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter, 0, ODBC_SSL_MODE_VERIFY_IDENTITY, -1);
gtk_combo_box_set_model(ssl_mode_combo, NULL);
gtk_combo_box_set_model(ssl_mode_combo, GTK_TREE_MODEL(store));
g_object_unref(store);
}
syncForm(ParentWnd, params);
syncTabs(ParentWnd, params);
gtk_widget_grab_focus(GTK_WIDGET (dsnEditDialog));
gtk_widget_show_all(dsnEditDialog);
gtk_main();
BusyIndicator= FALSE;
return OkPressed;
}