#include <iodbc.h>
#include <dlfcn.h>
#include <sys/stat.h>
#include <unistd.h>
#include <time.h>
#include "../gui.h"
#include "odbc4.xpm"
#if !defined(HAVE_DL_INFO)
typedef struct
{
const char *dli_fname;
void *dli_fbase;
const char *dli_sname;
void *dli_saddr;
} Dl_info;
#endif
static char *szDriverButtons[] = {
"_Add a driver",
"_Remove the driver",
"Confi_gure the driver"
};
static char *szCpLabels[] = {
"Name",
"Pool timeout (seconds)"
};
static struct
{
char *lib_name;
char *lib_desc;
char *lib_ver_sym;
} iODBC_Components[] =
{
{"libiodbc.so", "iODBC Driver Manager", "iodbc_version"},
{"libiodbcadm.so", "iODBC Administrator", "iodbcadm_version"},
{"libiodbcinst.so", "iODBC Installer", "iodbcinst_version"},
{"libdrvproxy.so", "iODBC Driver Setup Proxy", "iodbcproxy_version"},
{"libtranslator.so", "iODBC Translation Manager", "iodbctrans_version"}
};
static void
addcomponents_to_list (GtkWidget *widget)
{
char _date[1024], _size[1024];
char *data[5];
struct stat _stat;
#if defined(HAVE_DLADDR)
Dl_info info;
#endif
void *handle, *proc;
int i;
if (!GTK_IS_CLIST (widget))
return;
gtk_clist_clear (GTK_CLIST (widget));
for (i = 0; i < sizeof (iODBC_Components) / sizeof (iODBC_Components[0]);
i++)
{
data[0] = iODBC_Components[i].lib_desc;
data[1] = VERSION;
data[2] = iODBC_Components[i].lib_name;
data[3] = "";
data[4] = "";
if ((handle = dlopen (iODBC_Components[i].lib_name, RTLD_LAZY)))
{
if ((proc = dlsym (handle, iODBC_Components[i].lib_ver_sym)))
data[1] = *(char **) proc;
#ifdef HAVE_DLADDR
dladdr (proc, &info);
if (!stat (info.dli_fname, &_stat))
{
sprintf (_size, "%lu Kb",
(unsigned long) _stat.st_size / 1024L);
sprintf (_date, "%s", ctime (&_stat.st_mtime));
_date[strlen (_date) - 1] = '\0';
data[3] = _date;
data[4] = _size;
}
#endif
gtk_clist_append (GTK_CLIST (widget), data);
dlclose (handle);
}
}
if (GTK_CLIST (widget)->rows > 0)
{
gtk_clist_columns_autosize (GTK_CLIST (widget));
gtk_clist_sort (GTK_CLIST (widget));
}
}
static void
addconnectionpool_to_list (GtkWidget *widget)
{
char *curr, *buffer = (char *) malloc (sizeof (char) * 65536), *szDriver;
char driver[1024];
char *data[2];
int len, i;
BOOL careabout;
UWORD confMode = ODBC_USER_DSN;
if (!buffer || !GTK_IS_CLIST (widget))
return;
gtk_clist_clear (GTK_CLIST (widget));
while (confMode != ODBC_SYSTEM_DSN + 1)
{
SQLSetConfigMode (confMode);
#ifdef WIN32
len =
SQLGetPrivateProfileString ("ODBC 32 bit Drivers", NULL, "", buffer,
65535, "odbcinst.ini");
#else
len =
SQLGetPrivateProfileString ("ODBC Drivers", NULL, "", buffer, 65535,
"odbcinst.ini");
#endif
if (len)
goto process;
goto end;
process:
for (curr = buffer; *curr; curr += (STRLEN (curr) + 1))
{
for (i = 0, careabout = TRUE; i < GTK_CLIST (widget)->rows; i++)
{
gtk_clist_get_text (GTK_CLIST (widget), i, 0, &szDriver);
if (!strcmp (szDriver, curr))
{
careabout = FALSE;
break;
}
}
if (!careabout)
continue;
SQLSetConfigMode (confMode);
#ifdef WIN32
SQLGetPrivateProfileString ("ODBC 32 bit Drivers", curr, "", driver,
sizeof (driver), "odbcinst.ini");
#else
SQLGetPrivateProfileString ("ODBC Drivers", curr, "", driver,
sizeof (driver), "odbcinst.ini");
#endif
if (strcasecmp (driver, "Installed"))
goto end;
SQLSetConfigMode (confMode);
if (!SQLGetPrivateProfileString (curr, "CPTimeout", "<Not pooled>",
driver, sizeof (driver), "odbcinst.ini"))
{
SQLSetConfigMode (confMode);
SQLGetPrivateProfileString ("Default", "CPTimeout",
"<Not pooled>", driver, sizeof (driver), "odbcinst.ini");
}
if (STRLEN (curr) && STRLEN (driver))
{
data[0] = curr;
data[1] = driver;
gtk_clist_append (GTK_CLIST (widget), data);
}
}
end:
if (confMode == ODBC_USER_DSN)
confMode = ODBC_SYSTEM_DSN;
else
confMode = ODBC_SYSTEM_DSN + 1;
}
if (GTK_CLIST (widget)->rows > 0)
{
gtk_clist_columns_autosize (GTK_CLIST (widget));
gtk_clist_sort (GTK_CLIST (widget));
}
free (buffer);
}
static void
admin_apply_tracing (TTRACING *tracing_t)
{
SQLWritePrivateProfileString ("ODBC", "Trace",
(gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (tracing_t->
allthetime_rb)) == TRUE
|| gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (tracing_t->
onetime_rb)) == TRUE) ? "1" : "0", NULL);
SQLWritePrivateProfileString ("ODBC", "TraceAutoStop",
gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (tracing_t->
onetime_rb)) ? "1" : "0", NULL);
SQLWritePrivateProfileString ("ODBC", "TraceFile",
gtk_entry_get_text (GTK_ENTRY (tracing_t->logfile_entry)), NULL);
}
static void
admin_switch_page (GtkNotebook *notebook, GtkNotebookPage *page,
gint page_num, void **inparams)
{
TDSNCHOOSER *dsnchoose_t = (inparams) ? inparams[0] : NULL;
TDRIVERCHOOSER *driverchoose_t = (inparams) ? inparams[1] : NULL;
TTRACING *tracing_t = (inparams) ? inparams[2] : NULL;
TCOMPONENT *component_t = (inparams) ? inparams[3] : NULL;
TCONNECTIONPOOLING *connectionpool_t = (inparams) ? inparams[4] : NULL;
BOOL trace = FALSE, traceauto = FALSE, perfmon = FALSE;
char tokenstr[4096] = { 0 };
switch (page_num)
{
case 0:
if (dsnchoose_t)
{
dsnchoose_t->type_dsn = 0;
adddsns_to_list (dsnchoose_t->udsnlist, FALSE);
}
break;
case 1:
if (dsnchoose_t)
{
dsnchoose_t->type_dsn = 1;
adddsns_to_list (dsnchoose_t->sdsnlist, TRUE);
}
break;
case 2:
if (driverchoose_t)
{
adddrivers_to_list (driverchoose_t->driverlist,
driverchoose_t->mainwnd);
gtk_widget_set_sensitive (driverchoose_t->b_remove, FALSE);
gtk_widget_set_sensitive (driverchoose_t->b_configure, FALSE);
}
break;
case 3:
if (!connectionpool_t->changed)
{
SQLGetPrivateProfileString ("ODBC Connection Pooling", "Perfmon",
"", tokenstr, sizeof (tokenstr), "odbcinst.ini");
if (!strcasecmp (tokenstr, "1") || !strcasecmp (tokenstr, "On"))
perfmon = TRUE;
SQLGetPrivateProfileString ("ODBC Connection Pooling", "Retry Wait",
"", tokenstr, sizeof (tokenstr), "odbcinst.ini");
if (perfmon)
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
(connectionpool_t->enperfmon_rb), 1);
else
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
(connectionpool_t->disperfmon_rb), 1);
gtk_entry_set_text (GTK_ENTRY (connectionpool_t->retwait_entry),
tokenstr);
connectionpool_t->changed = TRUE;
}
addconnectionpool_to_list (connectionpool_t->driverlist);
break;
case 4:
if (!tracing_t->changed)
{
SQLGetPrivateProfileString ("ODBC", "Trace", "", tokenstr,
sizeof (tokenstr), NULL);
if (!strcasecmp (tokenstr, "1") || !strcasecmp (tokenstr, "On"))
trace = TRUE;
SQLGetPrivateProfileString ("ODBC", "TraceAutoStop", "", tokenstr,
sizeof (tokenstr), NULL);
if (!strcasecmp (tokenstr, "1") || !strcasecmp (tokenstr, "On"))
traceauto = TRUE;
SQLGetPrivateProfileString ("ODBC", "TraceFile", "", tokenstr,
sizeof (tokenstr), NULL);
if (trace)
{
if (!traceauto)
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tracing_t->
allthetime_rb), 1);
else
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tracing_t->
onetime_rb), 1);
}
else
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tracing_t->
donttrace_rb), 1);
gtk_entry_set_text (GTK_ENTRY (tracing_t->logfile_entry),
(STRLEN (tokenstr)) ? tokenstr : "sql.log");
tracing_t->changed = TRUE;
}
break;
case 5:
if (component_t)
addcomponents_to_list (component_t->componentlist);
break;
};
if (dsnchoose_t)
{
if (dsnchoose_t->uremove)
gtk_widget_set_sensitive (dsnchoose_t->uremove, FALSE);
if (dsnchoose_t->uconfigure)
gtk_widget_set_sensitive (dsnchoose_t->uconfigure, FALSE);
if (dsnchoose_t->utest)
gtk_widget_set_sensitive (dsnchoose_t->utest, FALSE);
if (dsnchoose_t->sremove)
gtk_widget_set_sensitive (dsnchoose_t->sremove, FALSE);
if (dsnchoose_t->sconfigure)
gtk_widget_set_sensitive (dsnchoose_t->sconfigure, FALSE);
if (dsnchoose_t->stest)
gtk_widget_set_sensitive (dsnchoose_t->stest, FALSE);
}
}
static void
tracing_start_clicked (GtkWidget *widget, TTRACING *tracing_t)
{
if (tracing_t)
admin_apply_tracing (tracing_t);
}
static void
tracing_logfile_choosen (GtkWidget *widget, TTRACING *tracing_t)
{
if (tracing_t)
{
gtk_entry_set_text (GTK_ENTRY (tracing_t->logfile_entry),
gtk_file_selection_get_filename (GTK_FILE_SELECTION (tracing_t->
filesel)));
tracing_t->filesel = NULL;
}
}
static void
tracing_browse_clicked (GtkWidget *widget, TTRACING *tracing_t)
{
GtkWidget *filesel;
if (tracing_t)
{
filesel = gtk_file_selection_new ("Choose your log file ...");
gtk_window_set_modal (GTK_WINDOW (filesel), TRUE);
gtk_file_selection_set_filename (GTK_FILE_SELECTION (filesel),
gtk_entry_get_text (GTK_ENTRY (tracing_t->logfile_entry)));
gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (filesel)->
ok_button), "clicked",
GTK_SIGNAL_FUNC (tracing_logfile_choosen), tracing_t);
gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (filesel)->
ok_button), "clicked", GTK_SIGNAL_FUNC (gtk_main_quit), NULL);
gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (filesel)->
cancel_button), "clicked", GTK_SIGNAL_FUNC (gtk_main_quit),
NULL);
gtk_signal_connect (GTK_OBJECT (filesel), "delete_event",
GTK_SIGNAL_FUNC (gtk_main_quit), NULL);
tracing_t->filesel = filesel;
gtk_widget_show_all (filesel);
gtk_main ();
gtk_widget_destroy (filesel);
tracing_t->filesel = NULL;
}
}
static void
cpdriver_list_select (GtkWidget *widget, gint row, gint column,
GdkEvent *event, TCONNECTIONPOOLING *connectionpool_t)
{
char *szDriver = NULL, *cptimeout;
char msg[1024] = { 0 };
if (connectionpool_t)
{
if (GTK_CLIST (connectionpool_t->driverlist)->selection != NULL)
{
gtk_clist_get_text (GTK_CLIST (connectionpool_t->driverlist),
GPOINTER_TO_INT (GTK_CLIST (connectionpool_t->driverlist)->
selection->data), 0, &szDriver);
gtk_clist_get_text (GTK_CLIST (connectionpool_t->driverlist),
GPOINTER_TO_INT (GTK_CLIST (connectionpool_t->driverlist)->
selection->data), 1, &cptimeout);
}
if (szDriver && event && event->type == GDK_2BUTTON_PRESS
&& (cptimeout =
create_connectionpool (connectionpool_t->mainwnd, szDriver,
cptimeout)))
{
sprintf (msg, "CPTimeout=%s", cptimeout);
if (!SQLConfigDriver (connectionpool_t->mainwnd, ODBC_CONFIG_DRIVER,
szDriver, msg, NULL, 0, NULL))
_iodbcdm_errorbox (connectionpool_t->mainwnd, szDriver,
"An error occured when trying to set the connection pooling time-out : ");
addconnectionpool_to_list (connectionpool_t->driverlist);
}
}
}
static void
driver_list_select (GtkWidget *widget, gint row, gint column,
GdkEvent *event, TDRIVERCHOOSER *choose_t)
{
char *szDriver = NULL;
if (choose_t)
{
if (GTK_CLIST (choose_t->driverlist)->selection != NULL)
gtk_clist_get_text (GTK_CLIST (choose_t->driverlist),
GPOINTER_TO_INT (GTK_CLIST (choose_t->driverlist)->selection->
data), 0, &szDriver);
if (szDriver && event && event->type == GDK_2BUTTON_PRESS)
gtk_signal_emit_by_name (GTK_OBJECT (choose_t->b_configure),
"clicked", choose_t);
else
{
gtk_widget_set_sensitive (choose_t->b_remove, TRUE);
gtk_widget_set_sensitive (choose_t->b_configure, TRUE);
}
}
}
static void
driver_list_unselect (GtkWidget *widget, gint row, gint column,
GdkEvent *event, TDRIVERCHOOSER *choose_t)
{
if (choose_t)
{
gtk_widget_set_sensitive (choose_t->b_remove, FALSE);
gtk_widget_set_sensitive (choose_t->b_configure, FALSE);
}
}
static void
driver_add_clicked (GtkWidget *widget, TDRIVERCHOOSER *choose_t)
{
char connstr[4096] = { 0 };
char tokenstr[4096] = { 0 };
char *cstr;
if (choose_t)
{
cstr = create_driversetup (choose_t->mainwnd, NULL, connstr, FALSE);
if (cstr && cstr != connstr && cstr != (LPSTR) - 1L)
{
SQLSetConfigMode (ODBC_USER_DSN);
if (!SQLInstallDriverEx (cstr, NULL, tokenstr, sizeof (tokenstr),
NULL, ODBC_INSTALL_COMPLETE, NULL))
{
_iodbcdm_errorbox (choose_t->mainwnd, NULL,
"An error occured when trying to add the driver : ");
goto done;
}
free (cstr);
}
adddrivers_to_list (choose_t->driverlist, choose_t->mainwnd);
done:
if (GTK_CLIST (choose_t->driverlist)->selection == NULL)
{
if (choose_t->b_remove)
gtk_widget_set_sensitive (choose_t->b_remove, FALSE);
if (choose_t->b_configure)
gtk_widget_set_sensitive (choose_t->b_configure, FALSE);
}
}
return;
}
static void
driver_remove_clicked (GtkWidget *widget, TDRIVERCHOOSER *choose_t)
{
char *szDriver = NULL;
if (choose_t)
{
if (GTK_CLIST (choose_t->driverlist)->selection != NULL)
gtk_clist_get_text (GTK_CLIST (choose_t->driverlist),
GPOINTER_TO_INT (GTK_CLIST (choose_t->driverlist)->selection->
data), 0, &szDriver);
if (szDriver
&& create_confirm (choose_t->mainwnd, szDriver,
"Are you sure you want to remove this driver ?"))
{
if (!SQLRemoveDriver (szDriver, create_confirm (choose_t->mainwnd,
szDriver,
"Do you want to remove all the DSN associated to this driver ?"),
NULL))
{
_iodbcdm_errorbox (choose_t->mainwnd, szDriver,
"An error occured when trying to remove the driver : ");
goto done;
}
adddrivers_to_list (choose_t->driverlist, choose_t->mainwnd);
}
done:
if (GTK_CLIST (choose_t->driverlist)->selection == NULL)
{
if (choose_t->b_remove)
gtk_widget_set_sensitive (choose_t->b_remove, FALSE);
if (choose_t->b_configure)
gtk_widget_set_sensitive (choose_t->b_configure, FALSE);
}
}
return;
}
static void
driver_configure_clicked (GtkWidget *widget, TDRIVERCHOOSER *choose_t)
{
char connstr[4096] = { 0 };
char tokenstr[4096] = { 0 };
char *szDriver = NULL, *curr, *cour, *cstr;
int size = sizeof (connstr);
if (choose_t)
{
if (GTK_CLIST (choose_t->driverlist)->selection != NULL)
gtk_clist_get_text (GTK_CLIST (choose_t->driverlist),
GPOINTER_TO_INT (GTK_CLIST (choose_t->driverlist)->selection->
data), 0, &szDriver);
if (szDriver)
{
SQLSetConfigMode (ODBC_USER_DSN);
if (!SQLGetPrivateProfileString (szDriver, NULL, "", tokenstr,
sizeof (tokenstr), "odbcinst.ini"))
{
_iodbcdm_errorbox (choose_t->mainwnd, szDriver,
"An error occured when trying to configure the driver : ");
goto done;
}
for (curr = tokenstr, cour = connstr; *curr;
curr += (STRLEN (curr) + 1), cour += (STRLEN (cour) + 1))
{
STRCPY (cour, curr);
cour[STRLEN (curr)] = '=';
SQLSetConfigMode (ODBC_USER_DSN);
SQLGetPrivateProfileString (szDriver, curr, "",
cour + STRLEN (curr) + 1, size - STRLEN (curr) - 1,
"odbcinst.ini");
size -= (STRLEN (cour) + 1);
}
*cour = 0;
cstr =
create_driversetup (choose_t->mainwnd, szDriver, connstr,
FALSE);
if (cstr && cstr != connstr && cstr != (LPSTR) - 1L)
{
SQLSetConfigMode (ODBC_USER_DSN);
if (!SQLInstallDriverEx (cstr, NULL, tokenstr,
sizeof (tokenstr), NULL, ODBC_INSTALL_COMPLETE, NULL))
{
_iodbcdm_errorbox (choose_t->mainwnd, NULL,
"An error occured when trying to configure the driver : ");
goto done;
}
free (cstr);
}
adddrivers_to_list (choose_t->driverlist, choose_t->mainwnd);
}
done:
if (GTK_CLIST (choose_t->driverlist)->selection == NULL)
{
if (choose_t->b_remove)
gtk_widget_set_sensitive (choose_t->b_remove, FALSE);
if (choose_t->b_configure)
gtk_widget_set_sensitive (choose_t->b_configure, FALSE);
}
}
return;
}
static void
admin_ok_clicked (GtkWidget *widget, void **inparams)
{
TDSNCHOOSER *dsnchoose_t = (inparams) ? inparams[0] : NULL;
TDRIVERCHOOSER *driverchoose_t = (inparams) ? inparams[1] : NULL;
TTRACING *tracing_t = (inparams) ? inparams[2] : NULL;
TCOMPONENT *component_t = (inparams) ? inparams[3] : NULL;
TCONNECTIONPOOLING *connectionpool_t = (inparams) ? inparams[4] : NULL;
GtkWidget *mainwnd = (inparams) ? inparams[5] : NULL;
if (dsnchoose_t)
{
dsnchoose_t->udsnlist = dsnchoose_t->sdsnlist = dsnchoose_t->dir_list =
NULL;
dsnchoose_t->fadd = dsnchoose_t->fremove = dsnchoose_t->ftest =
dsnchoose_t->fconfigure = NULL;
dsnchoose_t->uadd = dsnchoose_t->uremove = dsnchoose_t->utest =
dsnchoose_t->uconfigure = NULL;
dsnchoose_t->sadd = dsnchoose_t->sremove = dsnchoose_t->stest =
dsnchoose_t->sconfigure = NULL;
dsnchoose_t->file_list = dsnchoose_t->file_entry =
dsnchoose_t->dir_combo = NULL;
dsnchoose_t->type_dsn = -1;
dsnchoose_t->curr_dir = dsnchoose_t->dsn = NULL;
}
if (driverchoose_t)
driverchoose_t->driverlist = NULL;
if (component_t)
component_t->componentlist = NULL;
if (tracing_t)
{
if (tracing_t->changed)
admin_apply_tracing (tracing_t);
tracing_t->logfile_entry = tracing_t->tracelib_entry =
tracing_t->b_start_stop = NULL;
tracing_t->donttrace_rb = tracing_t->allthetime_rb =
tracing_t->onetime_rb = NULL;
}
if (connectionpool_t)
{
if (connectionpool_t->changed)
{
SQLWritePrivateProfileString ("ODBC Connection Pooling", "PerfMon",
(GTK_TOGGLE_BUTTON (connectionpool_t->enperfmon_rb)->
active) ? "1" : "0", "odbcinst.ini");
SQLWritePrivateProfileString ("ODBC Connection Pooling",
"Retry Wait",
gtk_entry_get_text (GTK_ENTRY (connectionpool_t->
retwait_entry)), "odbcinst.ini");
}
connectionpool_t->driverlist = connectionpool_t->mainwnd = NULL;
connectionpool_t->enperfmon_rb = connectionpool_t->disperfmon_rb = NULL;
connectionpool_t->retwait_entry = NULL;
}
if (mainwnd)
{
gtk_signal_disconnect_by_func (GTK_OBJECT (mainwnd),
GTK_SIGNAL_FUNC (gtk_main_quit), NULL);
gtk_main_quit ();
gtk_widget_destroy (mainwnd);
}
}
static void
admin_cancel_clicked (GtkWidget *widget, void **inparams)
{
TDSNCHOOSER *dsnchoose_t = (inparams) ? inparams[0] : NULL;
TDRIVERCHOOSER *driverchoose_t = (inparams) ? inparams[1] : NULL;
TTRACING *tracing_t = (inparams) ? inparams[2] : NULL;
TCOMPONENT *component_t = (inparams) ? inparams[3] : NULL;
TCONNECTIONPOOLING *connectionpool_t = (inparams) ? inparams[4] : NULL;
GtkWidget *mainwnd = (inparams) ? inparams[5] : NULL;
if (dsnchoose_t)
{
dsnchoose_t->udsnlist = dsnchoose_t->sdsnlist = dsnchoose_t->dir_list =
NULL;
dsnchoose_t->fadd = dsnchoose_t->fremove = dsnchoose_t->ftest =
dsnchoose_t->fconfigure = NULL;
dsnchoose_t->uadd = dsnchoose_t->uremove = dsnchoose_t->utest =
dsnchoose_t->uconfigure = NULL;
dsnchoose_t->sadd = dsnchoose_t->sremove = dsnchoose_t->stest =
dsnchoose_t->sconfigure = NULL;
dsnchoose_t->file_list = dsnchoose_t->file_entry =
dsnchoose_t->dir_combo = NULL;
dsnchoose_t->type_dsn = -1;
dsnchoose_t->curr_dir = dsnchoose_t->dsn = NULL;
}
if (driverchoose_t)
driverchoose_t->driverlist = NULL;
if (component_t)
component_t->componentlist = NULL;
if (tracing_t)
{
tracing_t->logfile_entry = tracing_t->tracelib_entry =
tracing_t->b_start_stop = NULL;
tracing_t->donttrace_rb = tracing_t->allthetime_rb =
tracing_t->onetime_rb = NULL;
}
if (connectionpool_t)
{
connectionpool_t->driverlist = connectionpool_t->mainwnd = NULL;
connectionpool_t->enperfmon_rb = connectionpool_t->disperfmon_rb = NULL;
connectionpool_t->retwait_entry = NULL;
}
if (mainwnd)
{
gtk_signal_disconnect_by_func (GTK_OBJECT (mainwnd),
GTK_SIGNAL_FUNC (gtk_main_quit), NULL);
gtk_main_quit ();
gtk_widget_destroy (mainwnd);
}
}
static gint
delete_event (GtkWidget *widget, GdkEvent *event, void **inparams)
{
admin_cancel_clicked (widget, inparams);
return FALSE;
}
void
create_administrator (HWND hwnd)
{
GtkWidget *admin, *dialog_vbox1, *notebook1, *vbox1, *fixed1,
*scrolledwindow1;
GtkWidget *clist1, *l_name, *l_description, *l_driver, *l_usdsn, *frame1,
*table1;
GtkWidget *l_explanation, *pixmap1, *vbuttonbox1, *b_add, *b_remove,
*b_configure;
GtkWidget *b_test, *udsn, *fixed2, *scrolledwindow2, *clist2, *hbuttonbox2;
GtkWidget *l_sdsn, *frame2, *table2, *pixmap2, *vbuttonbox2, *sdsn,
*dialog_action_area1;
GtkWidget *hbuttonbox1, *b_ok, *b_cancel, *fixed4, *scrolledwindow5,
*clist5, *l_file;
GtkWidget *l_date, *l_size, *frame4, *table4, *pixmap4, *l_drivers,
*fdrivers;
GtkWidget *fixed6, *frame6, *hbox1, *vbox2, *b_donottrace, *b_allthetime;
GtkWidget *b_onetime, *vbox3, *b_start, *frame7, *table6, *t_logfile,
*b_browse, *frame8;
GtkWidget *table7, *t_tracelib, *b_select, *frame5, *table5, *pixmap5,
*ftracing;
GtkWidget *fixed7, *frame9, *table8, *pixmap6, *l_about, *scrolledwindow6,
*clist6;
GtkWidget *l_version, *fabout, *pixmap3, *clist3, *clist4, *l_files,
*l_selected, *scrolledwindow4;
GtkWidget *t_fileselected, *l_lookin, *optionmenu1, *frame3, *table3, *fdsn,
*l_directory, *fixed3;
GtkWidget *optionmenu1_menu, *scrolledwindow3, *fpooling, *l_poolto,
*clist7, *l_odbcdrivers;
GtkWidget *fixed8, *frame11, *alignment1, *vbox4, *frame13, *fixed5,
*frame10, *table9, *vbuttonbox3;
GtkWidget *pixmap7, *frame12, *vbox5, *br_enable, *br_disable, *t_retrywait,
*scrolledwindow7;
GSList *vbox2_group = NULL, *vbox5_group = NULL;
GdkPixmap *pixmap;
GdkBitmap *mask;
GtkStyle *style;
GtkAccelGroup *accel_group;
TDSNCHOOSER dsnchoose_t;
TDRIVERCHOOSER driverchoose_t;
TCOMPONENT component_t;
TTRACING tracing_t;
TCONNECTIONPOOLING connectionpool_t;
void *inparams[6];
guint b_key;
if (hwnd == NULL || !GTK_IS_WIDGET (hwnd))
return;
accel_group = gtk_accel_group_new ();
admin = gtk_dialog_new ();
gtk_object_set_data (GTK_OBJECT (admin), "admin", admin);
gtk_widget_set_usize (admin, 565, 415);
gtk_window_set_title (GTK_WINDOW (admin),
"iODBC Data Source Administrator");
gtk_window_set_position (GTK_WINDOW (admin), GTK_WIN_POS_CENTER);
gtk_window_set_modal (GTK_WINDOW (admin), TRUE);
gtk_window_set_policy (GTK_WINDOW (admin), FALSE, FALSE, FALSE);
dialog_vbox1 = GTK_DIALOG (admin)->vbox;
gtk_object_set_data (GTK_OBJECT (admin), "dialog_vbox1", dialog_vbox1);
gtk_widget_show (dialog_vbox1);
notebook1 = gtk_notebook_new ();
gtk_widget_ref (notebook1);
gtk_object_set_data_full (GTK_OBJECT (admin), "notebook1", notebook1,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (notebook1);
gtk_box_pack_start (GTK_BOX (dialog_vbox1), notebook1, TRUE, TRUE, 0);
vbox1 = gtk_vbox_new (FALSE, 0);
gtk_widget_ref (vbox1);
gtk_object_set_data_full (GTK_OBJECT (admin), "vbox1", vbox1,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (vbox1);
gtk_container_add (GTK_CONTAINER (notebook1), vbox1);
fixed1 = gtk_fixed_new ();
gtk_widget_ref (fixed1);
gtk_object_set_data_full (GTK_OBJECT (admin), "fixed1", fixed1,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (fixed1);
gtk_box_pack_start (GTK_BOX (vbox1), fixed1, TRUE, TRUE, 0);
gtk_container_set_border_width (GTK_CONTAINER (fixed1), 6);
scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
gtk_widget_ref (scrolledwindow1);
gtk_object_set_data_full (GTK_OBJECT (admin), "scrolledwindow1",
scrolledwindow1, (GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (scrolledwindow1);
gtk_widget_set_usize (scrolledwindow1, 456, 232);
gtk_fixed_put (GTK_FIXED (fixed1), scrolledwindow1, 3, 19);
clist1 = gtk_clist_new (3);
gtk_widget_ref (clist1);
gtk_object_set_data_full (GTK_OBJECT (admin), "clist1", clist1,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (clist1);
gtk_container_add (GTK_CONTAINER (scrolledwindow1), clist1);
gtk_clist_set_column_width (GTK_CLIST (clist1), 0, 100);
gtk_clist_set_column_width (GTK_CLIST (clist1), 1, 162);
gtk_clist_set_column_width (GTK_CLIST (clist1), 2, 80);
gtk_clist_column_titles_show (GTK_CLIST (clist1));
l_name = gtk_label_new (szDSNColumnNames[0]);
gtk_widget_ref (l_name);
gtk_object_set_data_full (GTK_OBJECT (admin), "l_name", l_name,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (l_name);
gtk_clist_set_column_widget (GTK_CLIST (clist1), 0, l_name);
l_description = gtk_label_new (szDSNColumnNames[1]);
gtk_widget_ref (l_description);
gtk_object_set_data_full (GTK_OBJECT (admin), "l_description",
l_description, (GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (l_description);
gtk_clist_set_column_widget (GTK_CLIST (clist1), 1, l_description);
l_driver = gtk_label_new (szDSNColumnNames[2]);
gtk_widget_ref (l_driver);
gtk_object_set_data_full (GTK_OBJECT (admin), "l_driver", l_driver,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (l_driver);
gtk_clist_set_column_widget (GTK_CLIST (clist1), 2, l_driver);
l_usdsn = gtk_label_new ("User Data Sources :");
gtk_widget_ref (l_usdsn);
gtk_object_set_data_full (GTK_OBJECT (admin), "l_usdsn", l_usdsn,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (l_usdsn);
gtk_fixed_put (GTK_FIXED (fixed1), l_usdsn, 8, 8);
gtk_widget_set_uposition (l_usdsn, 8, 8);
gtk_widget_set_usize (l_usdsn, 112, 16);
gtk_label_set_justify (GTK_LABEL (l_usdsn), GTK_JUSTIFY_LEFT);
frame1 = gtk_frame_new (NULL);
gtk_widget_ref (frame1);
gtk_object_set_data_full (GTK_OBJECT (admin), "frame1", frame1,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (frame1);
gtk_fixed_put (GTK_FIXED (fixed1), frame1, 8, 264);
gtk_widget_set_uposition (frame1, 8, 264);
gtk_widget_set_usize (frame1, 546, 64);
table1 = gtk_table_new (1, 2, FALSE);
gtk_widget_ref (table1);
gtk_object_set_data_full (GTK_OBJECT (admin), "table1", table1,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (table1);
gtk_container_add (GTK_CONTAINER (frame1), table1);
gtk_container_set_border_width (GTK_CONTAINER (table1), 6);
gtk_table_set_row_spacings (GTK_TABLE (table1), 6);
gtk_table_set_col_spacings (GTK_TABLE (table1), 6);
l_explanation =
gtk_label_new
("An ODBC User data source stores information about how to connect to\nthe indicated data provider. A User data source is only available to you,\nand can only be used on the current machine.");
gtk_widget_ref (l_explanation);
gtk_object_set_data_full (GTK_OBJECT (admin), "l_explanation",
l_explanation, (GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (l_explanation);
gtk_table_attach (GTK_TABLE (table1), l_explanation, 1, 2, 0, 1,
(GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0);
gtk_label_set_justify (GTK_LABEL (l_explanation), GTK_JUSTIFY_LEFT);
style = gtk_widget_get_style (GTK_WIDGET (hwnd));
pixmap =
gdk_pixmap_create_from_xpm_d (GTK_WIDGET (hwnd)->window, &mask,
&style->bg[GTK_STATE_NORMAL], (gchar **) odbc4_xpm);
pixmap1 = gtk_pixmap_new (pixmap, mask);
gtk_widget_ref (pixmap1);
gtk_object_set_data_full (GTK_OBJECT (admin), "pixmap1", pixmap1,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (pixmap1);
gtk_table_attach (GTK_TABLE (table1), pixmap1, 0, 1, 0, 1,
(GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0);
vbuttonbox1 = gtk_vbutton_box_new ();
gtk_widget_ref (vbuttonbox1);
gtk_object_set_data_full (GTK_OBJECT (admin), "vbuttonbox1", vbuttonbox1,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (vbuttonbox1);
gtk_fixed_put (GTK_FIXED (fixed1), vbuttonbox1, 472, 16);
gtk_widget_set_uposition (vbuttonbox1, 472, 16);
gtk_widget_set_usize (vbuttonbox1, 85, 135);
b_add = gtk_button_new_with_label ("");
b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_add)->child),
szDSNButtons[0]);
gtk_widget_add_accelerator (b_add, "clicked", accel_group,
b_key, GDK_MOD1_MASK, 0);
gtk_widget_ref (b_add);
gtk_object_set_data_full (GTK_OBJECT (admin), "b_add", b_add,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (b_add);
gtk_container_add (GTK_CONTAINER (vbuttonbox1), b_add);
GTK_WIDGET_SET_FLAGS (b_add, GTK_CAN_DEFAULT);
gtk_widget_add_accelerator (b_add, "clicked", accel_group,
'A', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);
b_remove = gtk_button_new_with_label ("");
b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_remove)->child),
szDSNButtons[1]);
gtk_widget_add_accelerator (b_remove, "clicked", accel_group,
b_key, GDK_MOD1_MASK, 0);
gtk_widget_ref (b_remove);
gtk_object_set_data_full (GTK_OBJECT (admin), "b_remove", b_remove,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (b_remove);
gtk_container_add (GTK_CONTAINER (vbuttonbox1), b_remove);
GTK_WIDGET_SET_FLAGS (b_remove, GTK_CAN_DEFAULT);
gtk_widget_add_accelerator (b_remove, "clicked", accel_group,
'R', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);
gtk_widget_set_sensitive (b_remove, FALSE);
b_configure = gtk_button_new_with_label ("");
b_key =
gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_configure)->child),
szDSNButtons[2]);
gtk_widget_add_accelerator (b_configure, "clicked", accel_group,
b_key, GDK_MOD1_MASK, 0);
gtk_widget_ref (b_configure);
gtk_object_set_data_full (GTK_OBJECT (admin), "b_configure", b_configure,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (b_configure);
gtk_container_add (GTK_CONTAINER (vbuttonbox1), b_configure);
GTK_WIDGET_SET_FLAGS (b_configure, GTK_CAN_DEFAULT);
gtk_widget_add_accelerator (b_configure, "clicked", accel_group,
'G', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);
gtk_widget_set_sensitive (b_configure, FALSE);
b_test = gtk_button_new_with_label ("");
b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_test)->child),
szDSNButtons[3]);
gtk_widget_add_accelerator (b_test, "clicked", accel_group,
b_key, GDK_MOD1_MASK, 0);
gtk_widget_ref (b_test);
gtk_object_set_data_full (GTK_OBJECT (admin), "b_test", b_test,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (b_test);
gtk_container_add (GTK_CONTAINER (vbuttonbox1), b_test);
GTK_WIDGET_SET_FLAGS (b_test, GTK_CAN_DEFAULT);
gtk_widget_add_accelerator (b_test, "clicked", accel_group,
'T', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);
gtk_widget_set_sensitive (b_test, FALSE);
dsnchoose_t.uadd = b_add;
dsnchoose_t.uremove = b_remove;
dsnchoose_t.utest = b_test;
dsnchoose_t.uconfigure = b_configure;
udsn = gtk_label_new (szTabNames[0]);
gtk_widget_ref (udsn);
gtk_object_set_data_full (GTK_OBJECT (admin), "udsn", udsn,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (udsn);
gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1),
gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 0), udsn);
fixed2 = gtk_fixed_new ();
gtk_widget_ref (fixed2);
gtk_object_set_data_full (GTK_OBJECT (admin), "fixed2", fixed2,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (fixed2);
gtk_container_add (GTK_CONTAINER (notebook1), fixed2);
gtk_container_set_border_width (GTK_CONTAINER (fixed2), 6);
scrolledwindow2 = gtk_scrolled_window_new (NULL, NULL);
gtk_widget_ref (scrolledwindow2);
gtk_object_set_data_full (GTK_OBJECT (admin), "scrolledwindow2",
scrolledwindow2, (GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (scrolledwindow2);
gtk_widget_set_usize (scrolledwindow2, 456, 232);
gtk_fixed_put (GTK_FIXED (fixed2), scrolledwindow2, 3, 19);
clist2 = gtk_clist_new (3);
gtk_widget_ref (clist2);
gtk_object_set_data_full (GTK_OBJECT (admin), "clist2", clist2,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (clist2);
gtk_container_add (GTK_CONTAINER (scrolledwindow2), clist2);
gtk_clist_set_column_width (GTK_CLIST (clist2), 0, 100);
gtk_clist_set_column_width (GTK_CLIST (clist2), 1, 163);
gtk_clist_set_column_width (GTK_CLIST (clist2), 2, 80);
gtk_clist_column_titles_show (GTK_CLIST (clist2));
l_name = gtk_label_new (szDSNColumnNames[0]);
gtk_widget_ref (l_name);
gtk_object_set_data_full (GTK_OBJECT (admin), "l_name", l_name,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (l_name);
gtk_clist_set_column_widget (GTK_CLIST (clist2), 0, l_name);
l_description = gtk_label_new (szDSNColumnNames[1]);
gtk_widget_ref (l_description);
gtk_object_set_data_full (GTK_OBJECT (admin), "l_description",
l_description, (GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (l_description);
gtk_clist_set_column_widget (GTK_CLIST (clist2), 1, l_description);
l_driver = gtk_label_new (szDSNColumnNames[2]);
gtk_widget_ref (l_driver);
gtk_object_set_data_full (GTK_OBJECT (admin), "l_driver", l_driver,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (l_driver);
gtk_clist_set_column_widget (GTK_CLIST (clist2), 2, l_driver);
l_sdsn = gtk_label_new ("System Data Sources :");
gtk_widget_ref (l_sdsn);
gtk_object_set_data_full (GTK_OBJECT (admin), "l_sdsn", l_sdsn,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (l_sdsn);
gtk_fixed_put (GTK_FIXED (fixed2), l_sdsn, 8, 8);
gtk_widget_set_uposition (l_sdsn, 8, 8);
gtk_widget_set_usize (l_sdsn, 130, 16);
gtk_label_set_justify (GTK_LABEL (l_sdsn), GTK_JUSTIFY_LEFT);
frame2 = gtk_frame_new (NULL);
gtk_widget_ref (frame2);
gtk_object_set_data_full (GTK_OBJECT (admin), "frame2", frame2,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (frame2);
gtk_fixed_put (GTK_FIXED (fixed2), frame2, 8, 264);
gtk_widget_set_uposition (frame2, 8, 264);
gtk_widget_set_usize (frame2, 546, 64);
table2 = gtk_table_new (1, 2, FALSE);
gtk_widget_ref (table2);
gtk_object_set_data_full (GTK_OBJECT (admin), "table2", table2,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (table2);
gtk_container_add (GTK_CONTAINER (frame2), table2);
gtk_container_set_border_width (GTK_CONTAINER (table2), 6);
gtk_table_set_row_spacings (GTK_TABLE (table2), 6);
gtk_table_set_col_spacings (GTK_TABLE (table2), 6);
l_explanation =
gtk_label_new
("An ODBC System data source stores information about how to connect\nto the indicated data provider. A system data source is visible to all\nusers on this machine, including daemons.");
gtk_widget_ref (l_explanation);
gtk_object_set_data_full (GTK_OBJECT (admin), "l_explanation",
l_explanation, (GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (l_explanation);
gtk_table_attach (GTK_TABLE (table2), l_explanation, 1, 2, 0, 1,
(GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0);
gtk_label_set_justify (GTK_LABEL (l_explanation), GTK_JUSTIFY_LEFT);
pixmap2 = gtk_pixmap_new (pixmap, mask);
gtk_widget_ref (pixmap2);
gtk_object_set_data_full (GTK_OBJECT (admin), "pixmap2", pixmap2,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (pixmap2);
gtk_table_attach (GTK_TABLE (table2), pixmap2, 0, 1, 0, 1,
(GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0);
vbuttonbox2 = gtk_vbutton_box_new ();
gtk_widget_ref (vbuttonbox2);
gtk_object_set_data_full (GTK_OBJECT (admin), "vbuttonbox2", vbuttonbox2,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (vbuttonbox2);
gtk_fixed_put (GTK_FIXED (fixed2), vbuttonbox2, 472, 16);
gtk_widget_set_uposition (vbuttonbox2, 472, 16);
gtk_widget_set_usize (vbuttonbox2, 85, 135);
b_add = gtk_button_new_with_label ("");
b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_add)->child),
szDSNButtons[0]);
gtk_widget_add_accelerator (b_add, "clicked", accel_group,
b_key, GDK_MOD1_MASK, 0);
gtk_widget_ref (b_add);
gtk_object_set_data_full (GTK_OBJECT (admin), "b_add", b_add,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (b_add);
gtk_container_add (GTK_CONTAINER (vbuttonbox2), b_add);
GTK_WIDGET_SET_FLAGS (b_add, GTK_CAN_DEFAULT);
gtk_widget_add_accelerator (b_add, "clicked", accel_group,
'A', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);
b_remove = gtk_button_new_with_label ("");
b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_remove)->child),
szDSNButtons[1]);
gtk_widget_add_accelerator (b_remove, "clicked", accel_group,
b_key, GDK_MOD1_MASK, 0);
gtk_widget_ref (b_remove);
gtk_object_set_data_full (GTK_OBJECT (admin), "b_remove", b_remove,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (b_remove);
gtk_container_add (GTK_CONTAINER (vbuttonbox2), b_remove);
GTK_WIDGET_SET_FLAGS (b_remove, GTK_CAN_DEFAULT);
gtk_widget_add_accelerator (b_remove, "clicked", accel_group,
'R', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);
gtk_widget_set_sensitive (b_remove, FALSE);
b_configure = gtk_button_new_with_label ("");
b_key =
gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_configure)->child),
szDSNButtons[2]);
gtk_widget_add_accelerator (b_configure, "clicked", accel_group,
b_key, GDK_MOD1_MASK, 0);
gtk_widget_ref (b_configure);
gtk_object_set_data_full (GTK_OBJECT (admin), "b_configure", b_configure,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (b_configure);
gtk_container_add (GTK_CONTAINER (vbuttonbox2), b_configure);
GTK_WIDGET_SET_FLAGS (b_configure, GTK_CAN_DEFAULT);
gtk_widget_add_accelerator (b_configure, "clicked", accel_group,
'G', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);
gtk_widget_set_sensitive (b_configure, FALSE);
b_test = gtk_button_new_with_label ("");
b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_test)->child),
szDSNButtons[3]);
gtk_widget_add_accelerator (b_test, "clicked", accel_group,
b_key, GDK_MOD1_MASK, 0);
gtk_widget_ref (b_test);
gtk_object_set_data_full (GTK_OBJECT (admin), "b_test", b_test,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (b_test);
gtk_container_add (GTK_CONTAINER (vbuttonbox2), b_test);
GTK_WIDGET_SET_FLAGS (b_test, GTK_CAN_DEFAULT);
gtk_widget_add_accelerator (b_test, "clicked", accel_group,
'T', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);
gtk_widget_set_sensitive (b_test, FALSE);
dsnchoose_t.sadd = b_add;
dsnchoose_t.sremove = b_remove;
dsnchoose_t.stest = b_test;
dsnchoose_t.sconfigure = b_configure;
sdsn = gtk_label_new (szTabNames[1]);
gtk_widget_ref (sdsn);
gtk_object_set_data_full (GTK_OBJECT (admin), "sdsn", sdsn,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (sdsn);
gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1),
gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 1), sdsn);
dsnchoose_t.udsnlist = clist1;
dsnchoose_t.sdsnlist = clist2;
dsnchoose_t.type_dsn = 0;
dsnchoose_t.mainwnd = admin;
fixed4 = gtk_fixed_new ();
gtk_widget_ref (fixed4);
gtk_object_set_data_full (GTK_OBJECT (admin), "fixed4", fixed4,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (fixed4);
gtk_container_add (GTK_CONTAINER (notebook1), fixed4);
gtk_container_set_border_width (GTK_CONTAINER (fixed4), 6);
scrolledwindow5 = gtk_scrolled_window_new (NULL, NULL);
gtk_widget_ref (scrolledwindow5);
gtk_object_set_data_full (GTK_OBJECT (admin), "scrolledwindow5",
scrolledwindow5, (GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (scrolledwindow5);
gtk_fixed_put (GTK_FIXED (fixed4), scrolledwindow5, 8, 24);
gtk_widget_set_uposition (scrolledwindow5, 8, 24);
gtk_widget_set_usize (scrolledwindow5, 536, 200);
clist5 = gtk_clist_new (4);
gtk_widget_ref (clist5);
gtk_object_set_data_full (GTK_OBJECT (admin), "clist5", clist5,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (clist5);
gtk_container_add (GTK_CONTAINER (scrolledwindow5), clist5);
gtk_clist_set_column_width (GTK_CLIST (clist5), 0, 188);
gtk_clist_set_column_width (GTK_CLIST (clist5), 1, 170);
gtk_clist_set_column_width (GTK_CLIST (clist5), 2, 134);
gtk_clist_set_column_width (GTK_CLIST (clist5), 3, 80);
gtk_clist_column_titles_show (GTK_CLIST (clist5));
l_name = gtk_label_new (szDriverColumnNames[0]);
gtk_widget_ref (l_name);
gtk_object_set_data_full (GTK_OBJECT (admin), "l_name", l_name,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (l_name);
gtk_clist_set_column_widget (GTK_CLIST (clist5), 0, l_name);
l_file = gtk_label_new (szDriverColumnNames[1]);
gtk_widget_ref (l_file);
gtk_object_set_data_full (GTK_OBJECT (admin), "l_file", l_file,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (l_file);
gtk_clist_set_column_widget (GTK_CLIST (clist5), 1, l_file);
l_date = gtk_label_new (szDriverColumnNames[2]);
gtk_widget_ref (l_date);
gtk_object_set_data_full (GTK_OBJECT (admin), "l_date", l_date,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (l_date);
gtk_clist_set_column_widget (GTK_CLIST (clist5), 2, l_date);
l_size = gtk_label_new (szDriverColumnNames[3]);
gtk_widget_ref (l_size);
gtk_object_set_data_full (GTK_OBJECT (admin), "l_size", l_size,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (l_size);
gtk_clist_set_column_widget (GTK_CLIST (clist5), 3, l_size);
frame4 = gtk_frame_new (NULL);
gtk_widget_ref (frame4);
gtk_object_set_data_full (GTK_OBJECT (admin), "frame4", frame4,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (frame4);
gtk_fixed_put (GTK_FIXED (fixed4), frame4, 8, 264);
gtk_widget_set_uposition (frame4, 8, 264);
gtk_widget_set_usize (frame4, 546, 64);
table4 = gtk_table_new (1, 2, FALSE);
gtk_widget_ref (table4);
gtk_object_set_data_full (GTK_OBJECT (admin), "table4", table4,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (table4);
gtk_container_add (GTK_CONTAINER (frame4), table4);
gtk_container_set_border_width (GTK_CONTAINER (table4), 6);
gtk_table_set_row_spacings (GTK_TABLE (table4), 6);
gtk_table_set_col_spacings (GTK_TABLE (table4), 6);
l_explanation =
gtk_label_new
("An ODBC driver allows ODBC-enabled programs to get information from\nODBC data sources. To install new drivers, use the driver's setup\nprogram if available, or add it with the 'Add' button.");
gtk_widget_ref (l_explanation);
gtk_object_set_data_full (GTK_OBJECT (admin), "l_explanation",
l_explanation, (GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (l_explanation);
gtk_table_attach (GTK_TABLE (table4), l_explanation, 1, 2, 0, 1,
(GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0);
gtk_label_set_justify (GTK_LABEL (l_explanation), GTK_JUSTIFY_LEFT);
pixmap4 = gtk_pixmap_new (pixmap, mask);
gtk_widget_ref (pixmap4);
gtk_object_set_data_full (GTK_OBJECT (admin), "pixmap4", pixmap4,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (pixmap4);
gtk_table_attach (GTK_TABLE (table4), pixmap4, 0, 1, 0, 1,
(GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0);
l_drivers =
gtk_label_new ("ODBC Drivers that are installed on your system : ");
gtk_widget_ref (l_drivers);
gtk_object_set_data_full (GTK_OBJECT (admin), "l_drivers", l_drivers,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (l_drivers);
gtk_fixed_put (GTK_FIXED (fixed4), l_drivers, 8, 8);
gtk_widget_set_uposition (l_drivers, 8, 8);
gtk_widget_set_usize (l_drivers, 280, 16);
gtk_label_set_justify (GTK_LABEL (l_drivers), GTK_JUSTIFY_LEFT);
hbuttonbox2 = gtk_hbutton_box_new ();
gtk_widget_ref (hbuttonbox2);
gtk_object_set_data_full (GTK_OBJECT (admin), "hbuttonbox2", hbuttonbox2,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (hbuttonbox2);
gtk_fixed_put (GTK_FIXED (fixed4), hbuttonbox2, 16, 227);
gtk_widget_set_uposition (hbuttonbox2, 16, 227);
gtk_widget_set_usize (hbuttonbox2, 530, 33);
gtk_button_box_set_spacing (GTK_BUTTON_BOX (hbuttonbox2), 6);
gtk_button_box_set_child_size (GTK_BUTTON_BOX (hbuttonbox2), 64, -1);
b_add = gtk_button_new_with_label ("");
b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_add)->child),
szDriverButtons[0]);
gtk_widget_add_accelerator (b_add, "clicked", accel_group,
b_key, GDK_MOD1_MASK, 0);
gtk_widget_ref (b_add);
gtk_object_set_data_full (GTK_OBJECT (admin), "b_add", b_add,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (b_add);
gtk_container_add (GTK_CONTAINER (hbuttonbox2), b_add);
GTK_WIDGET_SET_FLAGS (b_add, GTK_CAN_DEFAULT);
gtk_widget_add_accelerator (b_add, "clicked", accel_group,
'A', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);
b_remove = gtk_button_new_with_label ("");
b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_remove)->child),
szDriverButtons[1]);
gtk_widget_add_accelerator (b_remove, "clicked", accel_group,
b_key, GDK_MOD1_MASK, 0);
gtk_widget_ref (b_remove);
gtk_object_set_data_full (GTK_OBJECT (admin), "b_remove", b_remove,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (b_remove);
gtk_container_add (GTK_CONTAINER (hbuttonbox2), b_remove);
GTK_WIDGET_SET_FLAGS (b_remove, GTK_CAN_DEFAULT);
gtk_widget_add_accelerator (b_remove, "clicked", accel_group,
'R', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);
b_configure = gtk_button_new_with_label ("");
b_key =
gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_configure)->child),
szDriverButtons[2]);
gtk_widget_add_accelerator (b_configure, "clicked", accel_group,
b_key, GDK_MOD1_MASK, 0);
gtk_widget_ref (b_configure);
gtk_object_set_data_full (GTK_OBJECT (admin), "b_configure", b_configure,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (b_configure);
gtk_container_add (GTK_CONTAINER (hbuttonbox2), b_configure);
GTK_WIDGET_SET_FLAGS (b_configure, GTK_CAN_DEFAULT);
gtk_widget_add_accelerator (b_configure, "clicked", accel_group,
'G', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);
fdrivers = gtk_label_new (szTabNames[3]);
gtk_widget_ref (fdrivers);
gtk_object_set_data_full (GTK_OBJECT (admin), "fdrivers", fdrivers,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (fdrivers);
gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1),
gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 2), fdrivers);
driverchoose_t.driverlist = clist5;
driverchoose_t.mainwnd = admin;
driverchoose_t.b_add = b_add;
driverchoose_t.b_remove = b_remove;
driverchoose_t.b_configure = b_configure;
fixed5 = gtk_fixed_new ();
gtk_widget_ref (fixed5);
gtk_object_set_data_full (GTK_OBJECT (admin), "fixed5", fixed5,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (fixed5);
gtk_container_add (GTK_CONTAINER (notebook1), fixed5);
gtk_container_set_border_width (GTK_CONTAINER (fixed5), 6);
frame10 = gtk_frame_new (NULL);
gtk_widget_ref (frame10);
gtk_object_set_data_full (GTK_OBJECT (admin), "frame10", frame10,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (frame10);
gtk_fixed_put (GTK_FIXED (fixed5), frame10, 8, 264);
gtk_widget_set_uposition (frame10, 8, 264);
gtk_widget_set_usize (frame10, 546, 64);
table9 = gtk_table_new (1, 2, FALSE);
gtk_widget_ref (table9);
gtk_object_set_data_full (GTK_OBJECT (admin), "table9", table9,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (table9);
gtk_container_add (GTK_CONTAINER (frame10), table9);
gtk_container_set_border_width (GTK_CONTAINER (table9), 6);
gtk_table_set_row_spacings (GTK_TABLE (table9), 6);
gtk_table_set_col_spacings (GTK_TABLE (table9), 6);
l_explanation =
gtk_label_new
("Connection pooling allows an application to reuse open connection\nhandles, which saves round-trips to the server.\n");
gtk_widget_ref (l_explanation);
gtk_object_set_data_full (GTK_OBJECT (admin), "l_explanation",
l_explanation, (GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (l_explanation);
gtk_table_attach (GTK_TABLE (table9), l_explanation, 1, 2, 0, 1,
(GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0);
gtk_label_set_justify (GTK_LABEL (l_explanation), GTK_JUSTIFY_LEFT);
pixmap7 = gtk_pixmap_new (pixmap, mask);
gtk_widget_ref (pixmap7);
gtk_object_set_data_full (GTK_OBJECT (admin), "pixmap7", pixmap7,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (pixmap7);
gtk_table_attach (GTK_TABLE (table9), pixmap7, 0, 1, 0, 1,
(GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0);
frame12 = gtk_frame_new (" PerfMon ");
gtk_widget_ref (frame12);
gtk_object_set_data_full (GTK_OBJECT (admin), "frame12", frame12,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (frame12);
gtk_fixed_put (GTK_FIXED (fixed5), frame12, 424, 8);
gtk_widget_set_uposition (frame12, 424, 8);
gtk_widget_set_usize (frame12, 128, 72);
vbox5 = gtk_vbox_new (TRUE, 6);
gtk_widget_ref (vbox5);
gtk_object_set_data_full (GTK_OBJECT (admin), "vbox5", vbox5,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (vbox5);
gtk_container_add (GTK_CONTAINER (frame12), vbox5);
gtk_container_set_border_width (GTK_CONTAINER (vbox5), 6);
br_enable = gtk_radio_button_new_with_label (vbox5_group, "");
b_key =
gtk_label_parse_uline (GTK_LABEL (GTK_BIN (br_enable)->child),
"_Enable");
gtk_widget_add_accelerator (br_enable, "clicked", accel_group,
b_key, GDK_MOD1_MASK, 0);
vbox5_group = gtk_radio_button_group (GTK_RADIO_BUTTON (br_enable));
gtk_widget_ref (br_enable);
gtk_object_set_data_full (GTK_OBJECT (admin), "br_enable", br_enable,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (br_enable);
gtk_box_pack_start (GTK_BOX (vbox5), br_enable, FALSE, FALSE, 0);
br_disable = gtk_radio_button_new_with_label (vbox5_group, "");
b_key =
gtk_label_parse_uline (GTK_LABEL (GTK_BIN (br_disable)->child),
"_Disable");
gtk_widget_add_accelerator (br_disable, "clicked", accel_group,
b_key, GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);
vbox5_group = gtk_radio_button_group (GTK_RADIO_BUTTON (br_disable));
gtk_widget_ref (br_disable);
gtk_object_set_data_full (GTK_OBJECT (admin), "br_disable", br_disable,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (br_disable);
gtk_box_pack_start (GTK_BOX (vbox5), br_disable, FALSE, FALSE, 0);
gtk_widget_add_accelerator (br_disable, "clicked", accel_group,
'D', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (br_disable), TRUE);
frame13 = gtk_frame_new (" Retry Wait time ");
gtk_widget_ref (frame13);
gtk_object_set_data_full (GTK_OBJECT (admin), "frame13", frame13,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (frame13);
gtk_fixed_put (GTK_FIXED (fixed5), frame13, 424, 88);
gtk_widget_set_uposition (frame13, 424, 88);
gtk_widget_set_usize (frame13, 128, 80);
vbox4 = gtk_vbox_new (TRUE, 0);
gtk_widget_ref (vbox4);
gtk_object_set_data_full (GTK_OBJECT (admin), "vbox4", vbox4,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (vbox4);
gtk_container_add (GTK_CONTAINER (frame13), vbox4);
gtk_container_set_border_width (GTK_CONTAINER (vbox4), 6);
t_retrywait = gtk_entry_new ();
gtk_widget_ref (t_retrywait);
gtk_object_set_data_full (GTK_OBJECT (admin), "t_retrywait", t_retrywait,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (t_retrywait);
gtk_box_pack_start (GTK_BOX (vbox4), t_retrywait, FALSE, FALSE, 0);
alignment1 = gtk_alignment_new (0.5, 0.5, 1, 1);
gtk_widget_ref (alignment1);
gtk_object_set_data_full (GTK_OBJECT (admin), "alignment1", alignment1,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (alignment1);
gtk_fixed_put (GTK_FIXED (fixed5), alignment1, 8, 8);
gtk_widget_set_uposition (alignment1, 8, 8);
gtk_widget_set_usize (alignment1, 410, 248);
frame11 = gtk_frame_new (" Connection Pooling Timeout ");
gtk_widget_ref (frame11);
gtk_object_set_data_full (GTK_OBJECT (admin), "frame11", frame11,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (frame11);
gtk_container_add (GTK_CONTAINER (alignment1), frame11);
gtk_widget_set_usize (frame11, 368, 248);
fixed8 = gtk_fixed_new ();
gtk_widget_ref (fixed8);
gtk_object_set_data_full (GTK_OBJECT (admin), "fixed8", fixed8,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (fixed8);
gtk_container_add (GTK_CONTAINER (frame11), fixed8);
gtk_container_set_border_width (GTK_CONTAINER (fixed8), 6);
l_odbcdrivers = gtk_label_new ("ODBC Drivers :");
gtk_widget_ref (l_odbcdrivers);
gtk_object_set_data_full (GTK_OBJECT (admin), "l_odbcdrivers",
l_odbcdrivers, (GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (l_odbcdrivers);
gtk_fixed_put (GTK_FIXED (fixed8), l_odbcdrivers, 8, 3);
gtk_widget_set_uposition (l_odbcdrivers, 8, 3);
gtk_widget_set_usize (l_odbcdrivers, 89, 16);
scrolledwindow7 = gtk_scrolled_window_new (NULL, NULL);
gtk_widget_ref (scrolledwindow7);
gtk_object_set_data_full (GTK_OBJECT (admin), "scrolledwindow7",
scrolledwindow7, (GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (scrolledwindow7);
gtk_fixed_put (GTK_FIXED (fixed8), scrolledwindow7, 8, 24);
gtk_widget_set_uposition (scrolledwindow7, 8, 24);
gtk_widget_set_usize (scrolledwindow7, 392, 200);
clist7 = gtk_clist_new (2);
gtk_widget_ref (clist7);
gtk_object_set_data_full (GTK_OBJECT (admin), "clist7", clist7,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (clist7);
gtk_container_add (GTK_CONTAINER (scrolledwindow7), clist7);
gtk_clist_set_column_width (GTK_CLIST (clist7), 0, 210);
gtk_clist_set_column_width (GTK_CLIST (clist7), 1, 80);
gtk_clist_column_titles_show (GTK_CLIST (clist7));
l_name = gtk_label_new (szCpLabels[0]);
gtk_widget_ref (l_name);
gtk_object_set_data_full (GTK_OBJECT (admin), "l_name", l_name,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (l_name);
gtk_clist_set_column_widget (GTK_CLIST (clist7), 0, l_name);
l_poolto = gtk_label_new (szCpLabels[1]);
gtk_widget_ref (l_poolto);
gtk_object_set_data_full (GTK_OBJECT (admin), "l_poolto", l_poolto,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (l_poolto);
gtk_clist_set_column_widget (GTK_CLIST (clist7), 1, l_poolto);
fpooling = gtk_label_new (szTabNames[4]);
gtk_widget_ref (fpooling);
gtk_object_set_data_full (GTK_OBJECT (admin), "fpooling", fpooling,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (fpooling);
gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1),
gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 3), fpooling);
connectionpool_t.driverlist = clist7;
connectionpool_t.enperfmon_rb = br_enable;
connectionpool_t.disperfmon_rb = br_disable;
connectionpool_t.retwait_entry = t_retrywait;
connectionpool_t.changed = FALSE;
connectionpool_t.mainwnd = admin;
fixed6 = gtk_fixed_new ();
gtk_widget_ref (fixed6);
gtk_object_set_data_full (GTK_OBJECT (admin), "fixed6", fixed6,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (fixed6);
gtk_container_add (GTK_CONTAINER (notebook1), fixed6);
gtk_container_set_border_width (GTK_CONTAINER (fixed6), 6);
frame6 = gtk_frame_new (" When to trace ");
gtk_widget_ref (frame6);
gtk_object_set_data_full (GTK_OBJECT (admin), "frame6", frame6,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (frame6);
gtk_fixed_put (GTK_FIXED (fixed6), frame6, 8, 8);
gtk_widget_set_uposition (frame6, 8, 8);
gtk_widget_set_usize (frame6, 280, 104);
hbox1 = gtk_hbox_new (TRUE, 0);
gtk_widget_ref (hbox1);
gtk_object_set_data_full (GTK_OBJECT (admin), "hbox1", hbox1,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (hbox1);
gtk_container_add (GTK_CONTAINER (frame6), hbox1);
gtk_container_set_border_width (GTK_CONTAINER (hbox1), 6);
vbox2 = gtk_vbox_new (FALSE, 0);
gtk_widget_ref (vbox2);
gtk_object_set_data_full (GTK_OBJECT (admin), "vbox2", vbox2,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (vbox2);
gtk_box_pack_start (GTK_BOX (hbox1), vbox2, TRUE, TRUE, 0);
b_donottrace = gtk_radio_button_new_with_label (vbox2_group, "");
b_key =
gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_donottrace)->child),
"_Don't trace");
gtk_widget_add_accelerator (b_donottrace, "clicked", accel_group,
b_key, GDK_MOD1_MASK, 0);
vbox2_group = gtk_radio_button_group (GTK_RADIO_BUTTON (b_donottrace));
gtk_widget_ref (b_donottrace);
gtk_object_set_data_full (GTK_OBJECT (admin), "b_donottrace", b_donottrace,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (b_donottrace);
gtk_box_pack_start (GTK_BOX (vbox2), b_donottrace, FALSE, FALSE, 0);
gtk_widget_add_accelerator (b_donottrace, "clicked", accel_group,
'D', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b_donottrace), TRUE);
b_allthetime = gtk_radio_button_new_with_label (vbox2_group, "");
b_key =
gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_allthetime)->child),
"All the t_ime");
gtk_widget_add_accelerator (b_allthetime, "clicked", accel_group,
b_key, GDK_MOD1_MASK, 0);
vbox2_group = gtk_radio_button_group (GTK_RADIO_BUTTON (b_allthetime));
gtk_widget_ref (b_allthetime);
gtk_object_set_data_full (GTK_OBJECT (admin), "b_allthetime", b_allthetime,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (b_allthetime);
gtk_box_pack_start (GTK_BOX (vbox2), b_allthetime, FALSE, FALSE, 0);
gtk_widget_add_accelerator (b_allthetime, "clicked", accel_group,
'I', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);
b_onetime = gtk_radio_button_new_with_label (vbox2_group, "");
b_key =
gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_onetime)->child),
"One-_time only");
gtk_widget_add_accelerator (b_onetime, "clicked", accel_group,
b_key, GDK_MOD1_MASK, 0);
vbox2_group = gtk_radio_button_group (GTK_RADIO_BUTTON (b_onetime));
gtk_widget_ref (b_onetime);
gtk_object_set_data_full (GTK_OBJECT (admin), "b_onetime", b_onetime,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (b_onetime);
gtk_box_pack_start (GTK_BOX (vbox2), b_onetime, FALSE, FALSE, 0);
gtk_widget_add_accelerator (b_onetime, "clicked", accel_group,
'T', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);
vbox3 = gtk_vbox_new (FALSE, 0);
gtk_widget_ref (vbox3);
gtk_object_set_data_full (GTK_OBJECT (admin), "vbox3", vbox3,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (vbox3);
gtk_box_pack_start (GTK_BOX (hbox1), vbox3, FALSE, FALSE, 0);
b_start = gtk_button_new_with_label ("");
b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_start)->child),
"_Apply tracing settings");
gtk_widget_add_accelerator (b_start, "clicked", accel_group,
b_key, GDK_MOD1_MASK, 0);
gtk_widget_ref (b_start);
gtk_object_set_data_full (GTK_OBJECT (admin), "b_start", b_start,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (b_start);
gtk_box_pack_start (GTK_BOX (vbox3), b_start, FALSE, FALSE, 0);
gtk_widget_add_accelerator (b_start, "clicked", accel_group,
'A', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);
frame7 = gtk_frame_new (" Log file path ");
gtk_widget_ref (frame7);
gtk_object_set_data_full (GTK_OBJECT (admin), "frame7", frame7,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (frame7);
gtk_fixed_put (GTK_FIXED (fixed6), frame7, 296, 8);
gtk_widget_set_uposition (frame7, 296, 8);
gtk_widget_set_usize (frame7, 256, 104);
table6 = gtk_table_new (2, 1, TRUE);
gtk_widget_ref (table6);
gtk_object_set_data_full (GTK_OBJECT (admin), "table6", table6,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (table6);
gtk_container_add (GTK_CONTAINER (frame7), table6);
gtk_container_set_border_width (GTK_CONTAINER (table6), 6);
gtk_table_set_row_spacings (GTK_TABLE (table6), 6);
t_logfile = gtk_entry_new ();
gtk_widget_ref (t_logfile);
gtk_object_set_data_full (GTK_OBJECT (admin), "t_logfile", t_logfile,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (t_logfile);
gtk_table_attach (GTK_TABLE (table6), t_logfile, 0, 1, 0, 1,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
b_browse = gtk_button_new_with_label ("");
b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_browse)->child),
"_Browse");
gtk_widget_add_accelerator (b_browse, "clicked", accel_group,
b_key, GDK_MOD1_MASK, 0);
gtk_widget_ref (b_browse);
gtk_object_set_data_full (GTK_OBJECT (admin), "b_browse", b_browse,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (b_browse);
gtk_table_attach (GTK_TABLE (table6), b_browse, 0, 1, 1, 2,
(GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0);
gtk_widget_add_accelerator (b_browse, "clicked", accel_group,
'B', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);
frame8 = gtk_frame_new (" Custom trace library ");
gtk_widget_ref (frame8);
gtk_object_set_data_full (GTK_OBJECT (admin), "frame8", frame8,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (frame8);
gtk_fixed_put (GTK_FIXED (fixed6), frame8, 8, 120);
gtk_widget_set_uposition (frame8, 8, 120);
gtk_widget_set_usize (frame8, 280, 96);
table7 = gtk_table_new (2, 1, TRUE);
gtk_widget_ref (table7);
gtk_object_set_data_full (GTK_OBJECT (admin), "table7", table7,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (table7);
gtk_container_add (GTK_CONTAINER (frame8), table7);
gtk_container_set_border_width (GTK_CONTAINER (table7), 6);
gtk_table_set_row_spacings (GTK_TABLE (table7), 6);
t_tracelib = gtk_entry_new ();
gtk_widget_ref (t_tracelib);
gtk_object_set_data_full (GTK_OBJECT (admin), "t_tracelib", t_tracelib,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (t_tracelib);
gtk_table_attach (GTK_TABLE (table7), t_tracelib, 0, 1, 0, 1,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
b_select = gtk_button_new_with_label ("");
b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_select)->child),
"_Select library");
gtk_widget_add_accelerator (b_select, "clicked", accel_group,
b_key, GDK_MOD1_MASK, 0);
gtk_widget_ref (b_select);
gtk_object_set_data_full (GTK_OBJECT (admin), "b_select", b_select,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (b_select);
gtk_table_attach (GTK_TABLE (table7), b_select, 0, 1, 1, 2,
(GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0);
gtk_widget_add_accelerator (b_select, "clicked", accel_group,
'S', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);
frame5 = gtk_frame_new (NULL);
gtk_widget_ref (frame5);
gtk_object_set_data_full (GTK_OBJECT (admin), "frame5", frame5,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (frame5);
gtk_fixed_put (GTK_FIXED (fixed6), frame5, 8, 264);
gtk_widget_set_uposition (frame5, 8, 264);
gtk_widget_set_usize (frame5, 546, 64);
table5 = gtk_table_new (1, 2, FALSE);
gtk_widget_ref (table5);
gtk_object_set_data_full (GTK_OBJECT (admin), "table5", table5,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (table5);
gtk_container_add (GTK_CONTAINER (frame5), table5);
gtk_container_set_border_width (GTK_CONTAINER (table5), 6);
gtk_table_set_row_spacings (GTK_TABLE (table5), 6);
gtk_table_set_col_spacings (GTK_TABLE (table5), 6);
l_explanation =
gtk_label_new
("ODBC tracing allows you to create logs of the calls to ODBC drivers for\nuse by support personnel or to aid you in debugging your applications.\nNote: log files can become very large.");
gtk_widget_ref (l_explanation);
gtk_object_set_data_full (GTK_OBJECT (admin), "l_explanation",
l_explanation, (GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (l_explanation);
gtk_table_attach (GTK_TABLE (table5), l_explanation, 1, 2, 0, 1,
(GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0);
gtk_label_set_justify (GTK_LABEL (l_explanation), GTK_JUSTIFY_LEFT);
pixmap5 = gtk_pixmap_new (pixmap, mask);
gtk_widget_ref (pixmap5);
gtk_object_set_data_full (GTK_OBJECT (admin), "pixmap5", pixmap5,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (pixmap5);
gtk_table_attach (GTK_TABLE (table5), pixmap5, 0, 1, 0, 1,
(GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0);
ftracing = gtk_label_new (szTabNames[5]);
gtk_widget_ref (ftracing);
gtk_object_set_data_full (GTK_OBJECT (admin), "ftracing", ftracing,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (ftracing);
gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1),
gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 4), ftracing);
tracing_t.logfile_entry = t_logfile;
tracing_t.tracelib_entry = t_tracelib;
tracing_t.b_start_stop = b_start;
tracing_t.donttrace_rb = b_donottrace;
tracing_t.allthetime_rb = b_allthetime;
tracing_t.onetime_rb = b_onetime;
tracing_t.changed = FALSE;
fixed7 = gtk_fixed_new ();
gtk_widget_ref (fixed7);
gtk_object_set_data_full (GTK_OBJECT (admin), "fixed7", fixed7,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (fixed7);
gtk_container_add (GTK_CONTAINER (notebook1), fixed7);
gtk_container_set_border_width (GTK_CONTAINER (fixed7), 6);
frame9 = gtk_frame_new (NULL);
gtk_widget_ref (frame9);
gtk_object_set_data_full (GTK_OBJECT (admin), "frame9", frame9,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (frame9);
gtk_fixed_put (GTK_FIXED (fixed7), frame9, 8, 264);
gtk_widget_set_uposition (frame9, 8, 264);
gtk_widget_set_usize (frame9, 546, 64);
table8 = gtk_table_new (1, 2, FALSE);
gtk_widget_ref (table8);
gtk_object_set_data_full (GTK_OBJECT (admin), "table8", table8,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (table8);
gtk_container_add (GTK_CONTAINER (frame9), table8);
gtk_container_set_border_width (GTK_CONTAINER (table8), 6);
gtk_table_set_row_spacings (GTK_TABLE (table8), 6);
gtk_table_set_col_spacings (GTK_TABLE (table8), 6);
l_explanation =
gtk_label_new
("ODBC is a programming interface that enables applications to access\ndata in database management systems that use Structured Query\nLanguage (SQL) as a data access standard.");
gtk_widget_ref (l_explanation);
gtk_object_set_data_full (GTK_OBJECT (admin), "l_explanation",
l_explanation, (GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (l_explanation);
gtk_table_attach (GTK_TABLE (table8), l_explanation, 1, 2, 0, 1,
(GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0);
gtk_label_set_justify (GTK_LABEL (l_explanation), GTK_JUSTIFY_LEFT);
pixmap6 = gtk_pixmap_new (pixmap, mask);
gtk_widget_ref (pixmap6);
gtk_object_set_data_full (GTK_OBJECT (admin), "pixmap6", pixmap6,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (pixmap6);
gtk_table_attach (GTK_TABLE (table8), pixmap6, 0, 1, 0, 1,
(GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0);
l_about = gtk_label_new ("ODBC components installed on your system : ");
gtk_widget_ref (l_about);
gtk_object_set_data_full (GTK_OBJECT (admin), "l_about", l_about,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (l_about);
gtk_fixed_put (GTK_FIXED (fixed7), l_about, 8, 8);
gtk_widget_set_uposition (l_about, 8, 8);
gtk_widget_set_usize (l_about, 260, 16);
gtk_label_set_justify (GTK_LABEL (l_about), GTK_JUSTIFY_LEFT);
scrolledwindow6 = gtk_scrolled_window_new (NULL, NULL);
gtk_widget_ref (scrolledwindow6);
gtk_object_set_data_full (GTK_OBJECT (admin), "scrolledwindow6",
scrolledwindow6, (GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (scrolledwindow6);
gtk_fixed_put (GTK_FIXED (fixed7), scrolledwindow6, 8, 24);
gtk_widget_set_uposition (scrolledwindow6, 8, 24);
gtk_widget_set_usize (scrolledwindow6, 536, 232);
clist6 = gtk_clist_new (5);
gtk_widget_ref (clist6);
gtk_object_set_data_full (GTK_OBJECT (admin), "clist6", clist6,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (clist6);
gtk_container_add (GTK_CONTAINER (scrolledwindow6), clist6);
gtk_clist_set_column_width (GTK_CLIST (clist6), 0, 80);
gtk_clist_set_column_width (GTK_CLIST (clist6), 1, 80);
gtk_clist_set_column_width (GTK_CLIST (clist6), 2, 131);
gtk_clist_set_column_width (GTK_CLIST (clist6), 3, 91);
gtk_clist_set_column_width (GTK_CLIST (clist6), 4, 80);
gtk_clist_column_titles_show (GTK_CLIST (clist6));
l_name = gtk_label_new (szDriverColumnNames[0]);
gtk_widget_ref (l_name);
gtk_object_set_data_full (GTK_OBJECT (admin), "l_name", l_name,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (l_name);
gtk_clist_set_column_widget (GTK_CLIST (clist6), 0, l_name);
l_version = gtk_label_new (szDriverColumnNames[4]);
gtk_widget_ref (l_version);
gtk_object_set_data_full (GTK_OBJECT (admin), "l_version", l_version,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (l_version);
gtk_clist_set_column_widget (GTK_CLIST (clist6), 1, l_version);
l_file = gtk_label_new (szDriverColumnNames[1]);
gtk_widget_ref (l_file);
gtk_object_set_data_full (GTK_OBJECT (admin), "l_file", l_file,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (l_file);
gtk_clist_set_column_widget (GTK_CLIST (clist6), 2, l_file);
l_date = gtk_label_new (szDriverColumnNames[2]);
gtk_widget_ref (l_date);
gtk_object_set_data_full (GTK_OBJECT (admin), "l_date", l_date,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (l_date);
gtk_clist_set_column_widget (GTK_CLIST (clist6), 3, l_date);
l_size = gtk_label_new (szDriverColumnNames[3]);
gtk_widget_ref (l_size);
gtk_object_set_data_full (GTK_OBJECT (admin), "l_size", l_size,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (l_size);
gtk_clist_set_column_widget (GTK_CLIST (clist6), 4, l_size);
fabout = gtk_label_new (szTabNames[6]);
gtk_widget_ref (fabout);
gtk_object_set_data_full (GTK_OBJECT (admin), "fabout", fabout,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (fabout);
gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1),
gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 5), fabout);
dialog_action_area1 = GTK_DIALOG (admin)->action_area;
gtk_object_set_data (GTK_OBJECT (admin), "dialog_action_area1",
dialog_action_area1);
gtk_widget_show (dialog_action_area1);
gtk_container_set_border_width (GTK_CONTAINER (dialog_action_area1), 5);
hbuttonbox1 = gtk_hbutton_box_new ();
gtk_widget_ref (hbuttonbox1);
gtk_object_set_data_full (GTK_OBJECT (admin), "hbuttonbox1", hbuttonbox1,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (hbuttonbox1);
gtk_box_pack_start (GTK_BOX (dialog_action_area1), hbuttonbox1, TRUE, TRUE,
0);
gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox1), GTK_BUTTONBOX_END);
gtk_button_box_set_spacing (GTK_BUTTON_BOX (hbuttonbox1), 10);
b_ok = gtk_button_new_with_label ("");
b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_ok)->child), "_Ok");
gtk_widget_add_accelerator (b_ok, "clicked", accel_group,
b_key, GDK_MOD1_MASK, 0);
gtk_widget_ref (b_ok);
gtk_object_set_data_full (GTK_OBJECT (admin), "b_ok", b_ok,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (b_ok);
gtk_container_add (GTK_CONTAINER (hbuttonbox1), b_ok);
GTK_WIDGET_SET_FLAGS (b_ok, GTK_CAN_DEFAULT);
gtk_widget_add_accelerator (b_ok, "clicked", accel_group,
'O', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);
b_cancel = gtk_button_new_with_label ("");
b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_cancel)->child),
"_Cancel");
gtk_widget_add_accelerator (b_cancel, "clicked", accel_group,
b_key, GDK_MOD1_MASK, 0);
gtk_widget_ref (b_cancel);
gtk_object_set_data_full (GTK_OBJECT (admin), "b_cancel", b_cancel,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (b_cancel);
gtk_container_add (GTK_CONTAINER (hbuttonbox1), b_cancel);
GTK_WIDGET_SET_FLAGS (b_cancel, GTK_CAN_DEFAULT);
gtk_widget_add_accelerator (b_cancel, "clicked", accel_group,
'C', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);
gtk_signal_connect_after (GTK_OBJECT (notebook1), "switch_page",
GTK_SIGNAL_FUNC (admin_switch_page), inparams);
gtk_signal_connect (GTK_OBJECT (b_ok), "clicked",
GTK_SIGNAL_FUNC (admin_ok_clicked), inparams);
gtk_signal_connect (GTK_OBJECT (b_cancel), "clicked",
GTK_SIGNAL_FUNC (admin_cancel_clicked), inparams);
gtk_signal_connect (GTK_OBJECT (admin), "delete_event",
GTK_SIGNAL_FUNC (delete_event), inparams);
gtk_signal_connect (GTK_OBJECT (admin), "destroy",
GTK_SIGNAL_FUNC (gtk_main_quit), NULL);
gtk_signal_connect (GTK_OBJECT (dsnchoose_t.uadd), "clicked",
GTK_SIGNAL_FUNC (userdsn_add_clicked), &dsnchoose_t);
gtk_signal_connect (GTK_OBJECT (dsnchoose_t.uremove), "clicked",
GTK_SIGNAL_FUNC (userdsn_remove_clicked), &dsnchoose_t);
gtk_signal_connect (GTK_OBJECT (dsnchoose_t.utest), "clicked",
GTK_SIGNAL_FUNC (userdsn_test_clicked), &dsnchoose_t);
gtk_signal_connect (GTK_OBJECT (dsnchoose_t.uconfigure), "clicked",
GTK_SIGNAL_FUNC (userdsn_configure_clicked), &dsnchoose_t);
gtk_signal_connect (GTK_OBJECT (dsnchoose_t.sadd), "clicked",
GTK_SIGNAL_FUNC (systemdsn_add_clicked), &dsnchoose_t);
gtk_signal_connect (GTK_OBJECT (dsnchoose_t.sremove), "clicked",
GTK_SIGNAL_FUNC (systemdsn_remove_clicked), &dsnchoose_t);
gtk_signal_connect (GTK_OBJECT (dsnchoose_t.stest), "clicked",
GTK_SIGNAL_FUNC (systemdsn_test_clicked), &dsnchoose_t);
gtk_signal_connect (GTK_OBJECT (dsnchoose_t.sconfigure), "clicked",
GTK_SIGNAL_FUNC (systemdsn_configure_clicked), &dsnchoose_t);
gtk_signal_connect (GTK_OBJECT (driverchoose_t.b_add), "clicked",
GTK_SIGNAL_FUNC (driver_add_clicked), &driverchoose_t);
gtk_signal_connect (GTK_OBJECT (driverchoose_t.b_remove), "clicked",
GTK_SIGNAL_FUNC (driver_remove_clicked), &driverchoose_t);
gtk_signal_connect (GTK_OBJECT (driverchoose_t.b_configure), "clicked",
GTK_SIGNAL_FUNC (driver_configure_clicked), &driverchoose_t);
gtk_signal_connect (GTK_OBJECT (clist1), "select_row",
GTK_SIGNAL_FUNC (userdsn_list_select), &dsnchoose_t);
gtk_signal_connect (GTK_OBJECT (clist1), "unselect_row",
GTK_SIGNAL_FUNC (userdsn_list_unselect), &dsnchoose_t);
gtk_signal_connect (GTK_OBJECT (clist2), "select_row",
GTK_SIGNAL_FUNC (systemdsn_list_select), &dsnchoose_t);
gtk_signal_connect (GTK_OBJECT (clist2), "unselect_row",
GTK_SIGNAL_FUNC (systemdsn_list_unselect), &dsnchoose_t);
gtk_signal_connect (GTK_OBJECT (b_start), "clicked",
GTK_SIGNAL_FUNC (tracing_start_clicked), &tracing_t);
gtk_signal_connect (GTK_OBJECT (b_browse), "clicked",
GTK_SIGNAL_FUNC (tracing_browse_clicked), &tracing_t);
gtk_signal_connect (GTK_OBJECT (clist5), "select_row",
GTK_SIGNAL_FUNC (driver_list_select), &driverchoose_t);
gtk_signal_connect (GTK_OBJECT (clist5), "unselect_row",
GTK_SIGNAL_FUNC (driver_list_unselect), &driverchoose_t);
gtk_signal_connect (GTK_OBJECT (clist7), "select_row",
GTK_SIGNAL_FUNC (cpdriver_list_select), &connectionpool_t);
gtk_window_add_accel_group (GTK_WINDOW (admin), accel_group);
adddsns_to_list (clist1, FALSE);
component_t.componentlist = clist6;
inparams[0] = &dsnchoose_t;
inparams[1] = &driverchoose_t;
inparams[2] = &tracing_t;
inparams[3] = &component_t;
inparams[4] = &connectionpool_t;
inparams[5] = admin;
gtk_widget_show_all (admin);
gtk_main ();
}