1/* 2 * administrator.c 3 * 4 * $Id: administrator.c,v 1.13 2007/02/02 11:58:14 source Exp $ 5 * 6 * The iODBC driver manager. 7 * 8 * Copyright (C) 1996-2006 by OpenLink Software <iodbc@openlinksw.com> 9 * All Rights Reserved. 10 * 11 * This software is released under the terms of either of the following 12 * licenses: 13 * 14 * - GNU Library General Public License (see LICENSE.LGPL) 15 * - The BSD License (see LICENSE.BSD). 16 * 17 * Note that the only valid version of the LGPL license as far as this 18 * project is concerned is the original GNU Library General Public License 19 * Version 2, dated June 1991. 20 * 21 * While not mandated by the BSD license, any patches you make to the 22 * iODBC source code may be contributed back into the iODBC project 23 * at your discretion. Contributions will benefit the Open Source and 24 * Data Access community as a whole. Submissions may be made at: 25 * 26 * http://www.iodbc.org 27 * 28 * 29 * GNU Library Generic Public License Version 2 30 * ============================================ 31 * This library is free software; you can redistribute it and/or 32 * modify it under the terms of the GNU Library General Public 33 * License as published by the Free Software Foundation; only 34 * Version 2 of the License dated June 1991. 35 * 36 * This library is distributed in the hope that it will be useful, 37 * but WITHOUT ANY WARRANTY; without even the implied warranty of 38 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 39 * Library General Public License for more details. 40 * 41 * You should have received a copy of the GNU Library General Public 42 * License along with this library; if not, write to the Free 43 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 44 * 45 * 46 * The BSD License 47 * =============== 48 * Redistribution and use in source and binary forms, with or without 49 * modification, are permitted provided that the following conditions 50 * are met: 51 * 52 * 1. Redistributions of source code must retain the above copyright 53 * notice, this list of conditions and the following disclaimer. 54 * 2. Redistributions in binary form must reproduce the above copyright 55 * notice, this list of conditions and the following disclaimer in 56 * the documentation and/or other materials provided with the 57 * distribution. 58 * 3. Neither the name of OpenLink Software Inc. nor the names of its 59 * contributors may be used to endorse or promote products derived 60 * from this software without specific prior written permission. 61 * 62 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 63 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 64 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 65 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL OPENLINK OR 66 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 67 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 68 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 69 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 70 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 71 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 72 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 73 */ 74 75#include <iodbc.h> 76#include <dlfcn.h> 77#include <sys/stat.h> 78#include <unistd.h> 79#include <time.h> 80 81#include "../gui.h" 82#include "odbc4.xpm" 83 84 85#if !defined(HAVE_DL_INFO) 86typedef struct 87{ 88 const char *dli_fname; /* File name of defining object. */ 89 void *dli_fbase; /* Load address of that object. */ 90 const char *dli_sname; /* Name of nearest symbol. */ 91 void *dli_saddr; /* Exact value of nearest symbol. */ 92} Dl_info; 93#endif /* HAVE_DL_INFO */ 94 95static char *szDriverButtons[] = { 96 "_Add a driver", 97 "_Remove the driver", 98 "Confi_gure the driver" 99}; 100 101static char *szCpLabels[] = { 102 "Name", 103 "Pool timeout (seconds)", 104 "Probe query" 105}; 106 107static struct 108{ 109 char *lib_name; 110 char *lib_desc; 111 char *lib_ver_sym; 112} iODBC_Components[] = 113{ 114 {"libiodbc.so", "iODBC Driver Manager", "iodbc_version"}, 115 {"libiodbcadm.so", "iODBC Administrator", "iodbcadm_version"}, 116 {"libiodbcinst.so", "iODBC Installer", "iodbcinst_version"}, 117 {"libdrvproxy.so", "iODBC Driver Setup Proxy", "iodbcproxy_version"}, 118 {"libtranslator.so", "iODBC Translation Manager", "iodbctrans_version"} 119}; 120 121 122static void 123addcomponents_to_list (GtkWidget *widget) 124{ 125 char _date[1024], _size[1024]; 126 char *data[5]; 127 struct stat _stat; 128#if defined(HAVE_DLADDR) 129 Dl_info info; 130#endif 131 void *handle, *proc; 132 int i; 133 134 if (!GTK_IS_CLIST (widget)) 135 return; 136 137 gtk_clist_clear (GTK_CLIST (widget)); 138 139 for (i = 0; i < sizeof (iODBC_Components) / sizeof (iODBC_Components[0]); 140 i++) 141 { 142 /* 143 * Collect basic info on the components 144 */ 145 data[0] = iODBC_Components[i].lib_desc; 146 data[1] = VERSION; 147 data[2] = iODBC_Components[i].lib_name; 148 data[3] = ""; /* Modification Date */ 149 data[4] = ""; /* Size */ 150 151 if ((handle = dlopen (iODBC_Components[i].lib_name, RTLD_LAZY))) 152 { 153 /* Find out the version of the library */ 154 if ((proc = dlsym (handle, iODBC_Components[i].lib_ver_sym))) 155 data[1] = *(char **) proc; 156 157 /* Check the size and modification date of the library */ 158#ifdef HAVE_DLADDR 159 dladdr (proc, &info); 160 if (!stat (info.dli_fname, &_stat)) 161 { 162 sprintf (_size, "%lu Kb", 163 (unsigned long) _stat.st_size / 1024L); 164 sprintf (_date, "%s", ctime (&_stat.st_mtime)); 165 _date[strlen (_date) - 1] = '\0'; /* remove last \n */ 166 data[3] = _date; 167 data[4] = _size; 168 } 169#endif 170 gtk_clist_append (GTK_CLIST (widget), data); 171 172 dlclose (handle); 173 } 174 } 175 176 if (GTK_CLIST (widget)->rows > 0) 177 { 178 gtk_clist_columns_autosize (GTK_CLIST (widget)); 179 gtk_clist_sort (GTK_CLIST (widget)); 180 } 181} 182 183 184static void 185addconnectionpool_to_list (GtkWidget *widget) 186{ 187 char *curr, *buffer = (char *) malloc (sizeof (char) * 65536), *szDriver; 188 char cptime[128], cpprobe[1024]; 189 char *data[3]; 190 int len, i; 191 BOOL careabout; 192 UWORD confMode = ODBC_USER_DSN; 193 194 if (!buffer || !GTK_IS_CLIST (widget)) 195 return; 196 gtk_clist_clear (GTK_CLIST (widget)); 197 198 /* Get the current config mode */ 199 while (confMode != ODBC_SYSTEM_DSN + 1) 200 { 201 /* Get the list of drivers in the user context */ 202 SQLSetConfigMode (confMode); 203#ifdef WIN32 204 len = 205 SQLGetPrivateProfileString ("ODBC 32 bit Drivers", NULL, "", buffer, 206 65535, "odbcinst.ini"); 207#else 208 len = 209 SQLGetPrivateProfileString ("ODBC Drivers", NULL, "", buffer, 65535, 210 "odbcinst.ini"); 211#endif 212 if (len) 213 goto process; 214 215 goto end; 216 217 process: 218 for (curr = buffer; *curr; curr += (STRLEN (curr) + 1)) 219 { 220 /* Shadowing system odbcinst.ini */ 221 for (i = 0, careabout = TRUE; i < GTK_CLIST (widget)->rows; i++) 222 { 223 gtk_clist_get_text (GTK_CLIST (widget), i, 0, &szDriver); 224 if (!strcmp (szDriver, curr)) 225 { 226 careabout = FALSE; 227 break; 228 } 229 } 230 231 if (!careabout) 232 continue; 233 234 SQLSetConfigMode (confMode); 235#ifdef WIN32 236 SQLGetPrivateProfileString ("ODBC 32 bit Drivers", curr, "", cpprobe, 237 sizeof (cpprobe), "odbcinst.ini"); 238#else 239 SQLGetPrivateProfileString ("ODBC Drivers", curr, "", cpprobe, 240 sizeof (cpprobe), "odbcinst.ini"); 241#endif 242 243 /* Check if the driver is installed */ 244 if (strcasecmp (cpprobe, "Installed")) 245 goto end; 246 247 /* Get the driver library name */ 248 SQLSetConfigMode (confMode); 249 if (!SQLGetPrivateProfileString (curr, "CPTimeout", "<Not pooled>", 250 cptime, sizeof (cptime), "odbcinst.ini")) 251 { 252 SQLSetConfigMode (confMode); 253 SQLGetPrivateProfileString ("Default", "CPTimeout", 254 "<Not pooled>", cptime, sizeof (cptime), "odbcinst.ini"); 255 } 256 if (!SQLGetPrivateProfileString (curr, "CPProbe", "", 257 cpprobe, sizeof (cpprobe), "odbcinst.ini")) 258 { 259 SQLSetConfigMode (confMode); 260 SQLGetPrivateProfileString ("Default", "CPProbe", 261 "", cpprobe, sizeof (cpprobe), "odbcinst.ini"); 262 } 263 264 if (STRLEN (curr) && STRLEN (cptime)) 265 { 266 data[0] = curr; 267 data[1] = cptime; 268 data[2] = cpprobe; 269 gtk_clist_append (GTK_CLIST (widget), data); 270 } 271 } 272 273 end: 274 if (confMode == ODBC_USER_DSN) 275 confMode = ODBC_SYSTEM_DSN; 276 else 277 confMode = ODBC_SYSTEM_DSN + 1; 278 } 279 280 if (GTK_CLIST (widget)->rows > 0) 281 { 282 gtk_clist_columns_autosize (GTK_CLIST (widget)); 283 gtk_clist_sort (GTK_CLIST (widget)); 284 } 285 286 /* Make the clean up */ 287 free (buffer); 288} 289 290 291static void 292admin_apply_tracing (TTRACING *tracing_t) 293{ 294 /* Write keywords for tracing in the ini file */ 295 SQLWritePrivateProfileString ("ODBC", "Trace", 296 (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (tracing_t-> 297 allthetime_rb)) == TRUE 298 || gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (tracing_t-> 299 onetime_rb)) == TRUE) ? "1" : "0", NULL); 300 SQLWritePrivateProfileString ("ODBC", "TraceAutoStop", 301 gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (tracing_t-> 302 onetime_rb)) ? "1" : "0", NULL); 303 SQLWritePrivateProfileString ("ODBC", "TraceFile", 304 gtk_entry_get_text (GTK_ENTRY (tracing_t->logfile_entry)), NULL); 305} 306 307 308static void 309admin_switch_page (GtkNotebook *notebook, GtkNotebookPage *page, 310 gint page_num, void **inparams) 311{ 312 TDSNCHOOSER *dsnchoose_t = (inparams) ? inparams[0] : NULL; 313 TDRIVERCHOOSER *driverchoose_t = (inparams) ? inparams[1] : NULL; 314 TTRACING *tracing_t = (inparams) ? inparams[2] : NULL; 315 TCOMPONENT *component_t = (inparams) ? inparams[3] : NULL; 316 TCONNECTIONPOOLING *connectionpool_t = (inparams) ? inparams[4] : NULL; 317 BOOL trace = FALSE, traceauto = FALSE, perfmon = FALSE; 318 char tokenstr[4096] = { 0 }; 319 320 switch (page_num) 321 { 322 /* The User DSN panel */ 323 case 0: 324 if (dsnchoose_t) 325 { 326 dsnchoose_t->type_dsn = USER_DSN; 327 adddsns_to_list (dsnchoose_t->udsnlist, FALSE); 328 } 329 break; 330 331 /* The System DSN panel */ 332 case 1: 333 if (dsnchoose_t) 334 { 335 dsnchoose_t->type_dsn = SYSTEM_DSN; 336 adddsns_to_list (dsnchoose_t->sdsnlist, TRUE); 337 } 338 break; 339 340 /* The File DSN panel */ 341 case 2: 342 if (dsnchoose_t) 343 { 344 dsnchoose_t->type_dsn = FILE_DSN; 345 346 addlistofdir_to_optionmenu(dsnchoose_t->dir_combo, 347 dsnchoose_t->curr_dir, dsnchoose_t); 348 adddirectories_to_list(dsnchoose_t->mainwnd, 349 dsnchoose_t->dir_list, dsnchoose_t->curr_dir); 350 addfiles_to_list(dsnchoose_t->mainwnd, 351 dsnchoose_t->file_list, dsnchoose_t->curr_dir); 352 } 353 break; 354 355 /* The ODBC Driver panel */ 356 case 3: 357 if (driverchoose_t) 358 { 359 adddrivers_to_list (driverchoose_t->driverlist, 360 driverchoose_t->mainwnd); 361 gtk_widget_set_sensitive (driverchoose_t->b_remove, FALSE); 362 gtk_widget_set_sensitive (driverchoose_t->b_configure, FALSE); 363 } 364 break; 365 366 /* The Connection Pooling */ 367 case 4: 368 if (!connectionpool_t->changed) 369 { 370 /* Get the connection pooling options */ 371 SQLGetPrivateProfileString ("ODBC Connection Pooling", "Perfmon", 372 "", tokenstr, sizeof (tokenstr), "odbcinst.ini"); 373 if (!strcasecmp (tokenstr, "1") || !strcasecmp (tokenstr, "On")) 374 perfmon = TRUE; 375 SQLGetPrivateProfileString ("ODBC Connection Pooling", "Retry Wait", 376 "", tokenstr, sizeof (tokenstr), "odbcinst.ini"); 377 378 if (perfmon) 379 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 380 (connectionpool_t->enperfmon_rb), 1); 381 else 382 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 383 (connectionpool_t->disperfmon_rb), 1); 384 385 gtk_entry_set_text (GTK_ENTRY (connectionpool_t->retwait_entry), 386 tokenstr); 387 388 connectionpool_t->changed = TRUE; 389 } 390 391 addconnectionpool_to_list (connectionpool_t->driverlist); 392 393 break; 394 395 /* The tracing panel */ 396 case 5: 397 if (!tracing_t->changed) 398 { 399 /* Get the traces options */ 400 SQLGetPrivateProfileString ("ODBC", "Trace", "", tokenstr, 401 sizeof (tokenstr), NULL); 402 if (!strcasecmp (tokenstr, "1") || !strcasecmp (tokenstr, "On")) 403 trace = TRUE; 404 SQLGetPrivateProfileString ("ODBC", "TraceAutoStop", "", tokenstr, 405 sizeof (tokenstr), NULL); 406 if (!strcasecmp (tokenstr, "1") || !strcasecmp (tokenstr, "On")) 407 traceauto = TRUE; 408 SQLGetPrivateProfileString ("ODBC", "TraceFile", "", tokenstr, 409 sizeof (tokenstr), NULL); 410 411 /* Set the widgets */ 412 if (trace) 413 { 414 if (!traceauto) 415 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tracing_t-> 416 allthetime_rb), 1); 417 else 418 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tracing_t-> 419 onetime_rb), 1); 420 } 421 else 422 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tracing_t-> 423 donttrace_rb), 1); 424 425 gtk_entry_set_text (GTK_ENTRY (tracing_t->logfile_entry), 426 (STRLEN (tokenstr)) ? tokenstr : "sql.log"); 427 428 tracing_t->changed = TRUE; 429 } 430 break; 431 432 /* The About panel */ 433 case 6: 434 if (component_t) 435 addcomponents_to_list (component_t->componentlist); 436 break; 437 }; 438 439 if (dsnchoose_t) 440 { 441 if (dsnchoose_t->uremove) 442 gtk_widget_set_sensitive (dsnchoose_t->uremove, FALSE); 443 if (dsnchoose_t->uconfigure) 444 gtk_widget_set_sensitive (dsnchoose_t->uconfigure, FALSE); 445 if (dsnchoose_t->utest) 446 gtk_widget_set_sensitive (dsnchoose_t->utest, FALSE); 447 if (dsnchoose_t->sremove) 448 gtk_widget_set_sensitive (dsnchoose_t->sremove, FALSE); 449 if (dsnchoose_t->sconfigure) 450 gtk_widget_set_sensitive (dsnchoose_t->sconfigure, FALSE); 451 if (dsnchoose_t->stest) 452 gtk_widget_set_sensitive (dsnchoose_t->stest, FALSE); 453 if (dsnchoose_t->fremove) 454 gtk_widget_set_sensitive(dsnchoose_t->fremove, FALSE); 455 if (dsnchoose_t->fconfigure) 456 gtk_widget_set_sensitive(dsnchoose_t->fconfigure, FALSE); 457 if (dsnchoose_t->ftest) 458 gtk_widget_set_sensitive(dsnchoose_t->ftest, FALSE); 459 } 460} 461 462 463static void 464tracing_start_clicked (GtkWidget *widget, TTRACING *tracing_t) 465{ 466 if (tracing_t) 467 admin_apply_tracing (tracing_t); 468} 469 470 471static void 472tracing_logfile_choosen (GtkWidget *widget, TTRACING *tracing_t) 473{ 474 if (tracing_t) 475 { 476 gtk_entry_set_text (GTK_ENTRY (tracing_t->logfile_entry), 477 gtk_file_selection_get_filename (GTK_FILE_SELECTION (tracing_t-> 478 filesel))); 479 tracing_t->filesel = NULL; 480 } 481} 482 483 484static void 485tracing_browse_clicked (GtkWidget *widget, TTRACING *tracing_t) 486{ 487 GtkWidget *filesel; 488 489 if (tracing_t) 490 { 491 filesel = gtk_file_selection_new ("Choose your log file ..."); 492 gtk_window_set_modal (GTK_WINDOW (filesel), TRUE); 493 gtk_file_selection_set_filename (GTK_FILE_SELECTION (filesel), 494 gtk_entry_get_text (GTK_ENTRY (tracing_t->logfile_entry))); 495 /* Ok button events */ 496 gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (filesel)-> 497 ok_button), "clicked", 498 GTK_SIGNAL_FUNC (tracing_logfile_choosen), tracing_t); 499 gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (filesel)-> 500 ok_button), "clicked", GTK_SIGNAL_FUNC (gtk_main_quit), NULL); 501 /* Cancel button events */ 502 gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (filesel)-> 503 cancel_button), "clicked", GTK_SIGNAL_FUNC (gtk_main_quit), 504 NULL); 505 /* Close window button events */ 506 gtk_signal_connect (GTK_OBJECT (filesel), "delete_event", 507 GTK_SIGNAL_FUNC (gtk_main_quit), NULL); 508 509 tracing_t->filesel = filesel; 510 511 gtk_widget_show_all (filesel); 512 gtk_main (); 513 gtk_widget_destroy (filesel); 514 515 tracing_t->filesel = NULL; 516 } 517} 518 519 520static void 521cpdriver_list_select (GtkWidget *widget, gint row, gint column, 522 GdkEvent *event, TCONNECTIONPOOLING *connectionpool_t) 523{ 524 char *szDriver = NULL, *cptimeout, *cpprobe; 525 char sztime[1024] = { 0 }; 526 char szprobe[1024] = { 0 }; 527 TCONNECTIONPOOLING choose_t; 528 529 if (connectionpool_t) 530 { 531 choose_t = *connectionpool_t; 532 if (GTK_CLIST (connectionpool_t->driverlist)->selection != NULL) 533 { 534 memset(choose_t.timeout, 0, sizeof(choose_t.timeout)); 535 memset(choose_t.probe, 0, sizeof(choose_t.probe)); 536 537 gtk_clist_get_text (GTK_CLIST (choose_t.driverlist), 538 GPOINTER_TO_INT (GTK_CLIST (choose_t.driverlist)-> 539 selection->data), 0, &szDriver); 540 gtk_clist_get_text (GTK_CLIST (choose_t.driverlist), 541 GPOINTER_TO_INT (GTK_CLIST (choose_t.driverlist)-> 542 selection->data), 1, &cptimeout); 543 gtk_clist_get_text (GTK_CLIST (choose_t.driverlist), 544 GPOINTER_TO_INT (GTK_CLIST (choose_t.driverlist)-> 545 selection->data), 2, &cpprobe); 546 547 strncpy (choose_t.timeout, cptimeout, sizeof(choose_t.timeout)-1); 548 strncpy (choose_t.probe, cpprobe, sizeof(choose_t.probe)-1); 549 } 550 551 if (szDriver && event && event->type == GDK_2BUTTON_PRESS 552 && (create_connectionpool (connectionpool_t->mainwnd, &choose_t) == TRUE)) 553 { 554 sprintf (sztime, "CPTimeout=%s", choose_t.timeout); 555 if (!SQLConfigDriver (connectionpool_t->mainwnd, ODBC_CONFIG_DRIVER, 556 szDriver, sztime, NULL, 0, NULL)) 557 _iodbcdm_errorbox (connectionpool_t->mainwnd, szDriver, 558 "An error occured when trying to set the connection pooling time-out : "); 559 560 sprintf (szprobe, "CPProbe=%s", choose_t.probe); 561 if (!SQLConfigDriver (connectionpool_t->mainwnd, ODBC_CONFIG_DRIVER, 562 szDriver, szprobe, NULL, 0, NULL)) 563 _iodbcdm_errorbox (connectionpool_t->mainwnd, szDriver, 564 "An error occured when trying to set the connection probe query : "); 565 566 addconnectionpool_to_list (connectionpool_t->driverlist); 567 } 568 } 569} 570 571 572static void 573driver_list_select (GtkWidget *widget, gint row, gint column, 574 GdkEvent *event, TDRIVERCHOOSER *choose_t) 575{ 576 char *szDriver = NULL; 577 578 if (choose_t) 579 { 580 if (GTK_CLIST (choose_t->driverlist)->selection != NULL) 581 gtk_clist_get_text (GTK_CLIST (choose_t->driverlist), 582 GPOINTER_TO_INT (GTK_CLIST (choose_t->driverlist)->selection-> 583 data), 0, &szDriver); 584 585 if (szDriver && event && event->type == GDK_2BUTTON_PRESS) 586 gtk_signal_emit_by_name (GTK_OBJECT (choose_t->b_configure), 587 "clicked", choose_t); 588 else 589 { 590 gtk_widget_set_sensitive (choose_t->b_remove, TRUE); 591 gtk_widget_set_sensitive (choose_t->b_configure, TRUE); 592 } 593 } 594} 595 596 597static void 598driver_list_unselect (GtkWidget *widget, gint row, gint column, 599 GdkEvent *event, TDRIVERCHOOSER *choose_t) 600{ 601 if (choose_t) 602 { 603 gtk_widget_set_sensitive (choose_t->b_remove, FALSE); 604 gtk_widget_set_sensitive (choose_t->b_configure, FALSE); 605 } 606} 607 608 609static void 610driver_add_clicked (GtkWidget *widget, TDRIVERCHOOSER *choose_t) 611{ 612 char connstr[4096] = { 0 }; 613 char tokenstr[4096] = { 0 }; 614 char *cstr; 615 616 if (choose_t) 617 { 618 cstr = create_driversetup (choose_t->mainwnd, NULL, connstr, FALSE, TRUE); 619 620 if (cstr && cstr != connstr && cstr != (LPSTR) - 1L) 621 { 622 SQLSetConfigMode (ODBC_USER_DSN); 623 if (!SQLInstallDriverEx (cstr, NULL, tokenstr, sizeof (tokenstr), 624 NULL, ODBC_INSTALL_COMPLETE, NULL)) 625 { 626 _iodbcdm_errorbox (choose_t->mainwnd, NULL, 627 "An error occured when trying to add the driver : "); 628 goto done; 629 } 630 631 free (cstr); 632 } 633 634 adddrivers_to_list (choose_t->driverlist, choose_t->mainwnd); 635 636 done: 637 if (GTK_CLIST (choose_t->driverlist)->selection == NULL) 638 { 639 if (choose_t->b_remove) 640 gtk_widget_set_sensitive (choose_t->b_remove, FALSE); 641 if (choose_t->b_configure) 642 gtk_widget_set_sensitive (choose_t->b_configure, FALSE); 643 } 644 } 645 646 return; 647} 648 649 650static void 651driver_remove_clicked (GtkWidget *widget, TDRIVERCHOOSER *choose_t) 652{ 653 char *szDriver = NULL; 654 655 if (choose_t) 656 { 657 /* Retrieve the driver name */ 658 if (GTK_CLIST (choose_t->driverlist)->selection != NULL) 659 gtk_clist_get_text (GTK_CLIST (choose_t->driverlist), 660 GPOINTER_TO_INT (GTK_CLIST (choose_t->driverlist)->selection-> 661 data), 0, &szDriver); 662 663 /* Call the right function */ 664 if (szDriver 665 && create_confirm (choose_t->mainwnd, szDriver, 666 "Are you sure you want to remove this driver ?")) 667 { 668 if (!SQLRemoveDriver (szDriver, create_confirm (choose_t->mainwnd, 669 szDriver, 670 "Do you want to remove all the DSN associated to this driver ?"), 671 NULL)) 672 { 673 _iodbcdm_errorbox (choose_t->mainwnd, szDriver, 674 "An error occured when trying to remove the driver : "); 675 goto done; 676 } 677 678 adddrivers_to_list (choose_t->driverlist, choose_t->mainwnd); 679 } 680 681 done: 682 if (GTK_CLIST (choose_t->driverlist)->selection == NULL) 683 { 684 if (choose_t->b_remove) 685 gtk_widget_set_sensitive (choose_t->b_remove, FALSE); 686 if (choose_t->b_configure) 687 gtk_widget_set_sensitive (choose_t->b_configure, FALSE); 688 } 689 } 690 691 return; 692} 693 694 695static void 696driver_configure_clicked (GtkWidget *widget, TDRIVERCHOOSER *choose_t) 697{ 698 char connstr[4096] = { 0 }; 699 char tokenstr[4096] = { 0 }; 700 char *szDriver = NULL, *curr, *cour, *cstr; 701 int size = sizeof (connstr); 702 703 if (choose_t) 704 { 705 /* Retrieve the driver name */ 706 if (GTK_CLIST (choose_t->driverlist)->selection != NULL) 707 gtk_clist_get_text (GTK_CLIST (choose_t->driverlist), 708 GPOINTER_TO_INT (GTK_CLIST (choose_t->driverlist)->selection-> 709 data), 0, &szDriver); 710 711 /* Call the right function */ 712 if (szDriver) 713 { 714 SQLSetConfigMode (ODBC_USER_DSN); 715 if (!SQLGetPrivateProfileString (szDriver, NULL, "", tokenstr, 716 sizeof (tokenstr), "odbcinst.ini")) 717 { 718 _iodbcdm_errorbox (choose_t->mainwnd, szDriver, 719 "An error occured when trying to configure the driver : "); 720 goto done; 721 } 722 723 for (curr = tokenstr, cour = connstr; *curr; 724 curr += (STRLEN (curr) + 1), cour += (STRLEN (cour) + 1)) 725 { 726 STRCPY (cour, curr); 727 cour[STRLEN (curr)] = '='; 728 SQLSetConfigMode (ODBC_USER_DSN); 729 SQLGetPrivateProfileString (szDriver, curr, "", 730 cour + STRLEN (curr) + 1, size - STRLEN (curr) - 1, 731 "odbcinst.ini"); 732 size -= (STRLEN (cour) + 1); 733 } 734 735 *cour = 0; 736 737 cstr = 738 create_driversetup (choose_t->mainwnd, szDriver, connstr, 739 FALSE, TRUE); 740 741 if (cstr && cstr != connstr && cstr != (LPSTR) - 1L) 742 { 743 SQLSetConfigMode (ODBC_USER_DSN); 744 if (!SQLInstallDriverEx (cstr, NULL, tokenstr, 745 sizeof (tokenstr), NULL, ODBC_INSTALL_COMPLETE, NULL)) 746 { 747 _iodbcdm_errorbox (choose_t->mainwnd, NULL, 748 "An error occured when trying to configure the driver : "); 749 goto done; 750 } 751 752 free (cstr); 753 } 754 755 adddrivers_to_list (choose_t->driverlist, choose_t->mainwnd); 756 } 757 758 done: 759 if (GTK_CLIST (choose_t->driverlist)->selection == NULL) 760 { 761 if (choose_t->b_remove) 762 gtk_widget_set_sensitive (choose_t->b_remove, FALSE); 763 if (choose_t->b_configure) 764 gtk_widget_set_sensitive (choose_t->b_configure, FALSE); 765 } 766 } 767 768 return; 769} 770 771 772static void 773admin_ok_clicked (GtkWidget *widget, void **inparams) 774{ 775 TDSNCHOOSER *dsnchoose_t = (inparams) ? inparams[0] : NULL; 776 TDRIVERCHOOSER *driverchoose_t = (inparams) ? inparams[1] : NULL; 777 TTRACING *tracing_t = (inparams) ? inparams[2] : NULL; 778 TCOMPONENT *component_t = (inparams) ? inparams[3] : NULL; 779 TCONNECTIONPOOLING *connectionpool_t = (inparams) ? inparams[4] : NULL; 780 GtkWidget *mainwnd = (inparams) ? inparams[5] : NULL; 781 782 if (dsnchoose_t) 783 { 784 dsnchoose_t->udsnlist = dsnchoose_t->sdsnlist = dsnchoose_t->dir_list = 785 NULL; 786 dsnchoose_t->fadd = dsnchoose_t->fremove = dsnchoose_t->ftest = 787 dsnchoose_t->fconfigure = dsnchoose_t->fsetdir = NULL; 788 dsnchoose_t->uadd = dsnchoose_t->uremove = dsnchoose_t->utest = 789 dsnchoose_t->uconfigure = NULL; 790 dsnchoose_t->sadd = dsnchoose_t->sremove = dsnchoose_t->stest = 791 dsnchoose_t->sconfigure = NULL; 792 dsnchoose_t->file_list = dsnchoose_t->file_entry = 793 dsnchoose_t->dir_combo = NULL; 794 dsnchoose_t->type_dsn = -1; 795 dsnchoose_t->dsn = NULL; 796 } 797 798 if (driverchoose_t) 799 driverchoose_t->driverlist = NULL; 800 801 if (component_t) 802 component_t->componentlist = NULL; 803 804 if (tracing_t) 805 { 806 if (tracing_t->changed) 807 admin_apply_tracing (tracing_t); 808 809 tracing_t->logfile_entry = tracing_t->tracelib_entry = 810 tracing_t->b_start_stop = NULL; 811 tracing_t->donttrace_rb = tracing_t->allthetime_rb = 812 tracing_t->onetime_rb = NULL; 813 } 814 815 if (connectionpool_t) 816 { 817 if (connectionpool_t->changed) 818 { 819 /* Write keywords for tracing in the ini file */ 820 SQLWritePrivateProfileString ("ODBC Connection Pooling", "PerfMon", 821 (GTK_TOGGLE_BUTTON (connectionpool_t->enperfmon_rb)-> 822 active) ? "1" : "0", "odbcinst.ini"); 823 SQLWritePrivateProfileString ("ODBC Connection Pooling", 824 "Retry Wait", 825 gtk_entry_get_text (GTK_ENTRY (connectionpool_t-> 826 retwait_entry)), "odbcinst.ini"); 827 } 828 829 connectionpool_t->driverlist = connectionpool_t->mainwnd = NULL; 830 connectionpool_t->enperfmon_rb = connectionpool_t->disperfmon_rb = NULL; 831 connectionpool_t->retwait_entry = NULL; 832 } 833 834 if (mainwnd) 835 { 836 gtk_signal_disconnect_by_func (GTK_OBJECT (mainwnd), 837 GTK_SIGNAL_FUNC (gtk_main_quit), NULL); 838 gtk_main_quit (); 839 gtk_widget_destroy (mainwnd); 840 } 841} 842 843 844static void 845admin_cancel_clicked (GtkWidget *widget, void **inparams) 846{ 847 TDSNCHOOSER *dsnchoose_t = (inparams) ? inparams[0] : NULL; 848 TDRIVERCHOOSER *driverchoose_t = (inparams) ? inparams[1] : NULL; 849 TTRACING *tracing_t = (inparams) ? inparams[2] : NULL; 850 TCOMPONENT *component_t = (inparams) ? inparams[3] : NULL; 851 TCONNECTIONPOOLING *connectionpool_t = (inparams) ? inparams[4] : NULL; 852 GtkWidget *mainwnd = (inparams) ? inparams[5] : NULL; 853 854 if (dsnchoose_t) 855 { 856 dsnchoose_t->udsnlist = dsnchoose_t->sdsnlist = dsnchoose_t->dir_list = 857 NULL; 858 dsnchoose_t->fadd = dsnchoose_t->fremove = dsnchoose_t->ftest = 859 dsnchoose_t->fconfigure = dsnchoose_t->fsetdir = NULL; 860 dsnchoose_t->uadd = dsnchoose_t->uremove = dsnchoose_t->utest = 861 dsnchoose_t->uconfigure = NULL; 862 dsnchoose_t->sadd = dsnchoose_t->sremove = dsnchoose_t->stest = 863 dsnchoose_t->sconfigure = NULL; 864 dsnchoose_t->file_list = dsnchoose_t->file_entry = 865 dsnchoose_t->dir_combo = NULL; 866 dsnchoose_t->type_dsn = -1; 867 dsnchoose_t->dsn = NULL; 868 } 869 870 if (driverchoose_t) 871 driverchoose_t->driverlist = NULL; 872 873 if (component_t) 874 component_t->componentlist = NULL; 875 876 if (tracing_t) 877 { 878 tracing_t->logfile_entry = tracing_t->tracelib_entry = 879 tracing_t->b_start_stop = NULL; 880 tracing_t->donttrace_rb = tracing_t->allthetime_rb = 881 tracing_t->onetime_rb = NULL; 882 } 883 884 if (connectionpool_t) 885 { 886 connectionpool_t->driverlist = connectionpool_t->mainwnd = NULL; 887 connectionpool_t->enperfmon_rb = connectionpool_t->disperfmon_rb = NULL; 888 connectionpool_t->retwait_entry = NULL; 889 } 890 891 if (mainwnd) 892 { 893 gtk_signal_disconnect_by_func (GTK_OBJECT (mainwnd), 894 GTK_SIGNAL_FUNC (gtk_main_quit), NULL); 895 gtk_main_quit (); 896 gtk_widget_destroy (mainwnd); 897 } 898} 899 900 901static gint 902delete_event (GtkWidget *widget, GdkEvent *event, void **inparams) 903{ 904 admin_cancel_clicked (widget, inparams); 905 return FALSE; 906} 907 908 909void 910create_administrator (HWND hwnd) 911{ 912 GtkWidget *admin, *dialog_vbox1, *notebook1, *vbox1, *fixed1, 913 *scrolledwindow1; 914 GtkWidget *clist1, *l_name, *l_description, *l_driver, *l_usdsn, *frame1, 915 *table1; 916 GtkWidget *l_explanation, *pixmap1, *vbuttonbox1, *b_add, *b_remove, 917 *b_configure; 918 GtkWidget *b_test, *udsn, *fixed2, *scrolledwindow2, *clist2, *hbuttonbox2; 919 GtkWidget *l_sdsn, *frame2, *table2, *pixmap2, *vbuttonbox2, *sdsn, 920 *dialog_action_area1; 921 GtkWidget *hbuttonbox1, *b_ok, *b_cancel, *fixed4, *scrolledwindow5, 922 *clist5, *l_file; 923 GtkWidget *l_date, *l_size, *frame4, *table4, *pixmap4, *l_drivers, 924 *fdrivers; 925 GtkWidget *fixed6, *frame6, *hbox1, *vbox2, *b_donottrace, *b_allthetime; 926 GtkWidget *b_onetime, *vbox3, *b_start, *frame7, *table6, *t_logfile, 927 *b_browse, *frame8; 928 GtkWidget *table7, *t_tracelib, *b_select, *frame5, *table5, *pixmap5, 929 *ftracing; 930 GtkWidget *fixed7, *frame9, *table8, *pixmap6, *l_about, *scrolledwindow6, 931 *clist6; 932 GtkWidget *l_version, *fabout, *pixmap3, *clist3, *clist4, *l_files, 933 *l_selected, *scrolledwindow4; 934 GtkWidget *t_fileselected, *l_lookin, *optionmenu1, *frame3, *table3, *fdsn, 935 *l_directory, *fixed3; 936 GtkWidget *optionmenu1_menu, *scrolledwindow3, *fpooling, *l_poolto, 937 *l_poolprobe, *clist7, *l_odbcdrivers; 938 GtkWidget *fixed8, *frame11, *alignment1, *vbox4, *frame13, *fixed5, 939 *frame10, *table9, *vbuttonbox3; 940 GtkWidget *pixmap7, *frame12, *vbox5, *br_enable, *br_disable, *t_retrywait, 941 *scrolledwindow7; 942 GtkWidget *b_setdir; 943 GSList *vbox2_group = NULL, *vbox5_group = NULL; 944 GdkPixmap *pixmap; 945 GdkBitmap *mask; 946 GtkStyle *style; 947 GtkAccelGroup *accel_group; 948 TDSNCHOOSER dsnchoose_t; 949 TDRIVERCHOOSER driverchoose_t; 950 TCOMPONENT component_t; 951 TTRACING tracing_t; 952 TCONNECTIONPOOLING connectionpool_t; 953 void *inparams[6]; 954 guint b_key; 955 956 if (hwnd == NULL || !GTK_IS_WIDGET (hwnd)) 957 return; 958 959 accel_group = gtk_accel_group_new (); 960 961 admin = gtk_dialog_new (); 962 gtk_object_set_data (GTK_OBJECT (admin), "admin", admin); 963 gtk_widget_set_usize (admin, 565, 415); 964 gtk_window_set_title (GTK_WINDOW (admin), 965 "iODBC Data Source Administrator"); 966 gtk_window_set_position (GTK_WINDOW (admin), GTK_WIN_POS_CENTER); 967 gtk_window_set_modal (GTK_WINDOW (admin), TRUE); 968 gtk_window_set_policy (GTK_WINDOW (admin), FALSE, FALSE, FALSE); 969 970#if GTK_CHECK_VERSION(2,0,0) 971 gtk_widget_show (admin); 972#endif 973 974 dialog_vbox1 = GTK_DIALOG (admin)->vbox; 975 gtk_object_set_data (GTK_OBJECT (admin), "dialog_vbox1", dialog_vbox1); 976 gtk_widget_show (dialog_vbox1); 977 978 notebook1 = gtk_notebook_new (); 979 gtk_widget_ref (notebook1); 980 gtk_object_set_data_full (GTK_OBJECT (admin), "notebook1", notebook1, 981 (GtkDestroyNotify) gtk_widget_unref); 982 gtk_widget_show (notebook1); 983 gtk_box_pack_start (GTK_BOX (dialog_vbox1), notebook1, TRUE, TRUE, 0); 984 985 vbox1 = gtk_vbox_new (FALSE, 0); 986 gtk_widget_ref (vbox1); 987 gtk_object_set_data_full (GTK_OBJECT (admin), "vbox1", vbox1, 988 (GtkDestroyNotify) gtk_widget_unref); 989 gtk_widget_show (vbox1); 990 gtk_container_add (GTK_CONTAINER (notebook1), vbox1); 991 992 /* User DSN panel */ 993 fixed1 = gtk_fixed_new (); 994 gtk_widget_ref (fixed1); 995 gtk_object_set_data_full (GTK_OBJECT (admin), "fixed1", fixed1, 996 (GtkDestroyNotify) gtk_widget_unref); 997 gtk_widget_show (fixed1); 998 gtk_box_pack_start (GTK_BOX (vbox1), fixed1, TRUE, TRUE, 0); 999 gtk_container_set_border_width (GTK_CONTAINER (fixed1), 6); 1000 1001 scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL); 1002 gtk_widget_ref (scrolledwindow1); 1003 gtk_object_set_data_full (GTK_OBJECT (admin), "scrolledwindow1", 1004 scrolledwindow1, (GtkDestroyNotify) gtk_widget_unref); 1005 gtk_widget_show (scrolledwindow1); 1006 gtk_widget_set_usize (scrolledwindow1, 456, 232); 1007 gtk_fixed_put (GTK_FIXED (fixed1), scrolledwindow1, 3, 19); 1008 1009 clist1 = gtk_clist_new (3); 1010 gtk_widget_ref (clist1); 1011 gtk_object_set_data_full (GTK_OBJECT (admin), "clist1", clist1, 1012 (GtkDestroyNotify) gtk_widget_unref); 1013 gtk_widget_show (clist1); 1014 gtk_container_add (GTK_CONTAINER (scrolledwindow1), clist1); 1015 gtk_clist_set_column_width (GTK_CLIST (clist1), 0, 100); 1016 gtk_clist_set_column_width (GTK_CLIST (clist1), 1, 162); 1017 gtk_clist_set_column_width (GTK_CLIST (clist1), 2, 80); 1018 gtk_clist_column_titles_show (GTK_CLIST (clist1)); 1019 1020 l_name = gtk_label_new (szDSNColumnNames[0]); 1021 gtk_widget_ref (l_name); 1022 gtk_object_set_data_full (GTK_OBJECT (admin), "l_name", l_name, 1023 (GtkDestroyNotify) gtk_widget_unref); 1024 gtk_widget_show (l_name); 1025 gtk_clist_set_column_widget (GTK_CLIST (clist1), 0, l_name); 1026 1027 l_description = gtk_label_new (szDSNColumnNames[1]); 1028 gtk_widget_ref (l_description); 1029 gtk_object_set_data_full (GTK_OBJECT (admin), "l_description", 1030 l_description, (GtkDestroyNotify) gtk_widget_unref); 1031 gtk_widget_show (l_description); 1032 gtk_clist_set_column_widget (GTK_CLIST (clist1), 1, l_description); 1033 1034 l_driver = gtk_label_new (szDSNColumnNames[2]); 1035 gtk_widget_ref (l_driver); 1036 gtk_object_set_data_full (GTK_OBJECT (admin), "l_driver", l_driver, 1037 (GtkDestroyNotify) gtk_widget_unref); 1038 gtk_widget_show (l_driver); 1039 gtk_clist_set_column_widget (GTK_CLIST (clist1), 2, l_driver); 1040 1041 l_usdsn = gtk_label_new ("User Data Sources :"); 1042 gtk_widget_ref (l_usdsn); 1043 gtk_object_set_data_full (GTK_OBJECT (admin), "l_usdsn", l_usdsn, 1044 (GtkDestroyNotify) gtk_widget_unref); 1045 gtk_widget_show (l_usdsn); 1046 gtk_fixed_put (GTK_FIXED (fixed1), l_usdsn, 8, 8); 1047 1048#if GTK_CHECK_VERSION(2,0,0) 1049 gtk_widget_set_uposition (l_usdsn, 12, 35); 1050 gtk_widget_set_usize (l_usdsn, 120, 16); 1051#else 1052 gtk_widget_set_uposition (l_usdsn, 8, 8); 1053 gtk_widget_set_usize (l_usdsn, 112, 16); 1054#endif 1055 gtk_label_set_justify (GTK_LABEL (l_usdsn), GTK_JUSTIFY_LEFT); 1056 1057 frame1 = gtk_frame_new (NULL); 1058 gtk_widget_ref (frame1); 1059 gtk_object_set_data_full (GTK_OBJECT (admin), "frame1", frame1, 1060 (GtkDestroyNotify) gtk_widget_unref); 1061 gtk_widget_show (frame1); 1062#if GTK_CHECK_VERSION(2,0,0) 1063 gtk_fixed_put (GTK_FIXED (fixed1), frame1, 8, 295); 1064 gtk_widget_set_uposition (frame1, 8, 295); 1065#else 1066 gtk_fixed_put (GTK_FIXED (fixed1), frame1, 8, 264); 1067 gtk_widget_set_uposition (frame1, 8, 264); 1068#endif 1069 gtk_widget_set_usize (frame1, 546, 64); 1070 1071 table1 = gtk_table_new (1, 2, FALSE); 1072 gtk_widget_ref (table1); 1073 gtk_object_set_data_full (GTK_OBJECT (admin), "table1", table1, 1074 (GtkDestroyNotify) gtk_widget_unref); 1075 gtk_widget_show (table1); 1076 gtk_container_add (GTK_CONTAINER (frame1), table1); 1077 gtk_container_set_border_width (GTK_CONTAINER (table1), 6); 1078 gtk_table_set_row_spacings (GTK_TABLE (table1), 6); 1079 gtk_table_set_col_spacings (GTK_TABLE (table1), 6); 1080 1081 l_explanation = 1082 gtk_label_new 1083 ("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."); 1084 gtk_widget_ref (l_explanation); 1085 gtk_object_set_data_full (GTK_OBJECT (admin), "l_explanation", 1086 l_explanation, (GtkDestroyNotify) gtk_widget_unref); 1087 gtk_widget_show (l_explanation); 1088 gtk_table_attach (GTK_TABLE (table1), l_explanation, 1, 2, 0, 1, 1089 (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); 1090 gtk_label_set_justify (GTK_LABEL (l_explanation), GTK_JUSTIFY_LEFT); 1091 1092#if GTK_CHECK_VERSION(2,0,0) 1093 style = gtk_widget_get_style (admin); 1094 pixmap = 1095 gdk_pixmap_create_from_xpm_d (admin->window, &mask, 1096 &style->bg[GTK_STATE_NORMAL], (gchar **) odbc4_xpm); 1097#else 1098 style = gtk_widget_get_style (GTK_WIDGET (hwnd)); 1099 pixmap = 1100 gdk_pixmap_create_from_xpm_d (GTK_WIDGET (hwnd)->window, &mask, 1101 &style->bg[GTK_STATE_NORMAL], (gchar **) odbc4_xpm); 1102#endif 1103 pixmap1 = gtk_pixmap_new (pixmap, mask); 1104 gtk_widget_ref (pixmap1); 1105 gtk_object_set_data_full (GTK_OBJECT (admin), "pixmap1", pixmap1, 1106 (GtkDestroyNotify) gtk_widget_unref); 1107 gtk_widget_show (pixmap1); 1108 gtk_table_attach (GTK_TABLE (table1), pixmap1, 0, 1, 0, 1, 1109 (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); 1110 1111 vbuttonbox1 = gtk_vbutton_box_new (); 1112 gtk_widget_ref (vbuttonbox1); 1113 gtk_object_set_data_full (GTK_OBJECT (admin), "vbuttonbox1", vbuttonbox1, 1114 (GtkDestroyNotify) gtk_widget_unref); 1115 gtk_widget_show (vbuttonbox1); 1116 gtk_fixed_put (GTK_FIXED (fixed1), vbuttonbox1, 472, 16); 1117#if GTK_CHECK_VERSION(2,0,0) 1118 gtk_widget_set_uposition (vbuttonbox1, 472, 52); 1119#else 1120 gtk_widget_set_uposition (vbuttonbox1, 472, 16); 1121#endif 1122 gtk_widget_set_usize (vbuttonbox1, 85, 135); 1123 1124 b_add = gtk_button_new_with_label (""); 1125 b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_add)->child), 1126 szDSNButtons[0]); 1127 gtk_widget_add_accelerator (b_add, "clicked", accel_group, 1128 b_key, GDK_MOD1_MASK, 0); 1129 gtk_widget_ref (b_add); 1130 gtk_object_set_data_full (GTK_OBJECT (admin), "b_add", b_add, 1131 (GtkDestroyNotify) gtk_widget_unref); 1132 gtk_widget_show (b_add); 1133 gtk_container_add (GTK_CONTAINER (vbuttonbox1), b_add); 1134 GTK_WIDGET_SET_FLAGS (b_add, GTK_CAN_DEFAULT); 1135 gtk_widget_add_accelerator (b_add, "clicked", accel_group, 1136 'A', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE); 1137 1138 b_remove = gtk_button_new_with_label (""); 1139 b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_remove)->child), 1140 szDSNButtons[1]); 1141 gtk_widget_add_accelerator (b_remove, "clicked", accel_group, 1142 b_key, GDK_MOD1_MASK, 0); 1143 gtk_widget_ref (b_remove); 1144 gtk_object_set_data_full (GTK_OBJECT (admin), "b_remove", b_remove, 1145 (GtkDestroyNotify) gtk_widget_unref); 1146 gtk_widget_show (b_remove); 1147 gtk_container_add (GTK_CONTAINER (vbuttonbox1), b_remove); 1148 GTK_WIDGET_SET_FLAGS (b_remove, GTK_CAN_DEFAULT); 1149 gtk_widget_add_accelerator (b_remove, "clicked", accel_group, 1150 'R', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE); 1151 gtk_widget_set_sensitive (b_remove, FALSE); 1152 1153 b_configure = gtk_button_new_with_label (""); 1154 b_key = 1155 gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_configure)->child), 1156 szDSNButtons[2]); 1157 gtk_widget_add_accelerator (b_configure, "clicked", accel_group, 1158 b_key, GDK_MOD1_MASK, 0); 1159 gtk_widget_ref (b_configure); 1160 gtk_object_set_data_full (GTK_OBJECT (admin), "b_configure", b_configure, 1161 (GtkDestroyNotify) gtk_widget_unref); 1162 gtk_widget_show (b_configure); 1163 gtk_container_add (GTK_CONTAINER (vbuttonbox1), b_configure); 1164 GTK_WIDGET_SET_FLAGS (b_configure, GTK_CAN_DEFAULT); 1165 gtk_widget_add_accelerator (b_configure, "clicked", accel_group, 1166 'G', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE); 1167 gtk_widget_set_sensitive (b_configure, FALSE); 1168 1169 b_test = gtk_button_new_with_label (""); 1170 b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_test)->child), 1171 szDSNButtons[3]); 1172 gtk_widget_add_accelerator (b_test, "clicked", accel_group, 1173 b_key, GDK_MOD1_MASK, 0); 1174 gtk_widget_ref (b_test); 1175 gtk_object_set_data_full (GTK_OBJECT (admin), "b_test", b_test, 1176 (GtkDestroyNotify) gtk_widget_unref); 1177 gtk_widget_show (b_test); 1178 gtk_container_add (GTK_CONTAINER (vbuttonbox1), b_test); 1179 GTK_WIDGET_SET_FLAGS (b_test, GTK_CAN_DEFAULT); 1180 gtk_widget_add_accelerator (b_test, "clicked", accel_group, 1181 'T', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE); 1182 gtk_widget_set_sensitive (b_test, FALSE); 1183 1184 dsnchoose_t.uadd = b_add; 1185 dsnchoose_t.uremove = b_remove; 1186 dsnchoose_t.utest = b_test; 1187 dsnchoose_t.uconfigure = b_configure; 1188 1189 udsn = gtk_label_new (szTabNames[0]); 1190 gtk_widget_ref (udsn); 1191 gtk_object_set_data_full (GTK_OBJECT (admin), "udsn", udsn, 1192 (GtkDestroyNotify) gtk_widget_unref); 1193 gtk_widget_show (udsn); 1194 gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), 1195 gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 0), udsn); 1196 1197 /* System DSN panel */ 1198 fixed2 = gtk_fixed_new (); 1199 gtk_widget_ref (fixed2); 1200 gtk_object_set_data_full (GTK_OBJECT (admin), "fixed2", fixed2, 1201 (GtkDestroyNotify) gtk_widget_unref); 1202 gtk_widget_show (fixed2); 1203 gtk_container_add (GTK_CONTAINER (notebook1), fixed2); 1204 gtk_container_set_border_width (GTK_CONTAINER (fixed2), 6); 1205 1206 scrolledwindow2 = gtk_scrolled_window_new (NULL, NULL); 1207 gtk_widget_ref (scrolledwindow2); 1208 gtk_object_set_data_full (GTK_OBJECT (admin), "scrolledwindow2", 1209 scrolledwindow2, (GtkDestroyNotify) gtk_widget_unref); 1210 gtk_widget_show (scrolledwindow2); 1211 gtk_widget_set_usize (scrolledwindow2, 456, 232); 1212 gtk_fixed_put (GTK_FIXED (fixed2), scrolledwindow2, 3, 19); 1213 1214 clist2 = gtk_clist_new (3); 1215 gtk_widget_ref (clist2); 1216 gtk_object_set_data_full (GTK_OBJECT (admin), "clist2", clist2, 1217 (GtkDestroyNotify) gtk_widget_unref); 1218 gtk_widget_show (clist2); 1219 gtk_container_add (GTK_CONTAINER (scrolledwindow2), clist2); 1220 gtk_clist_set_column_width (GTK_CLIST (clist2), 0, 100); 1221 gtk_clist_set_column_width (GTK_CLIST (clist2), 1, 163); 1222 gtk_clist_set_column_width (GTK_CLIST (clist2), 2, 80); 1223 gtk_clist_column_titles_show (GTK_CLIST (clist2)); 1224 1225 l_name = gtk_label_new (szDSNColumnNames[0]); 1226 gtk_widget_ref (l_name); 1227 gtk_object_set_data_full (GTK_OBJECT (admin), "l_name", l_name, 1228 (GtkDestroyNotify) gtk_widget_unref); 1229 gtk_widget_show (l_name); 1230 gtk_clist_set_column_widget (GTK_CLIST (clist2), 0, l_name); 1231 1232 l_description = gtk_label_new (szDSNColumnNames[1]); 1233 gtk_widget_ref (l_description); 1234 gtk_object_set_data_full (GTK_OBJECT (admin), "l_description", 1235 l_description, (GtkDestroyNotify) gtk_widget_unref); 1236 gtk_widget_show (l_description); 1237 gtk_clist_set_column_widget (GTK_CLIST (clist2), 1, l_description); 1238 1239 l_driver = gtk_label_new (szDSNColumnNames[2]); 1240 gtk_widget_ref (l_driver); 1241 gtk_object_set_data_full (GTK_OBJECT (admin), "l_driver", l_driver, 1242 (GtkDestroyNotify) gtk_widget_unref); 1243 gtk_widget_show (l_driver); 1244 gtk_clist_set_column_widget (GTK_CLIST (clist2), 2, l_driver); 1245 1246 l_sdsn = gtk_label_new ("System Data Sources :"); 1247 gtk_widget_ref (l_sdsn); 1248 gtk_object_set_data_full (GTK_OBJECT (admin), "l_sdsn", l_sdsn, 1249 (GtkDestroyNotify) gtk_widget_unref); 1250 gtk_widget_show (l_sdsn); 1251 gtk_fixed_put (GTK_FIXED (fixed2), l_sdsn, 8, 8); 1252#if GTK_CHECK_VERSION(2,0,0) 1253 gtk_widget_set_uposition (l_sdsn, 12, 35); 1254 gtk_widget_set_usize (l_sdsn, 138, 16); 1255#else 1256 gtk_widget_set_uposition (l_sdsn, 8, 8); 1257 gtk_widget_set_usize (l_sdsn, 130, 16); 1258#endif 1259 gtk_label_set_justify (GTK_LABEL (l_sdsn), GTK_JUSTIFY_LEFT); 1260 1261 frame2 = gtk_frame_new (NULL); 1262 gtk_widget_ref (frame2); 1263 gtk_object_set_data_full (GTK_OBJECT (admin), "frame2", frame2, 1264 (GtkDestroyNotify) gtk_widget_unref); 1265 gtk_widget_show (frame2); 1266#if GTK_CHECK_VERSION(2,0,0) 1267 gtk_fixed_put (GTK_FIXED (fixed2), frame2, 8, 295); 1268 gtk_widget_set_uposition (frame2, 8, 295); 1269#else 1270 gtk_fixed_put (GTK_FIXED (fixed2), frame2, 8, 264); 1271 gtk_widget_set_uposition (frame2, 8, 264); 1272#endif 1273 gtk_widget_set_usize (frame2, 546, 64); 1274 1275 table2 = gtk_table_new (1, 2, FALSE); 1276 gtk_widget_ref (table2); 1277 gtk_object_set_data_full (GTK_OBJECT (admin), "table2", table2, 1278 (GtkDestroyNotify) gtk_widget_unref); 1279 gtk_widget_show (table2); 1280 gtk_container_add (GTK_CONTAINER (frame2), table2); 1281 gtk_container_set_border_width (GTK_CONTAINER (table2), 6); 1282 gtk_table_set_row_spacings (GTK_TABLE (table2), 6); 1283 gtk_table_set_col_spacings (GTK_TABLE (table2), 6); 1284 1285 l_explanation = 1286 gtk_label_new 1287 ("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."); 1288 gtk_widget_ref (l_explanation); 1289 gtk_object_set_data_full (GTK_OBJECT (admin), "l_explanation", 1290 l_explanation, (GtkDestroyNotify) gtk_widget_unref); 1291 gtk_widget_show (l_explanation); 1292 gtk_table_attach (GTK_TABLE (table2), l_explanation, 1, 2, 0, 1, 1293 (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); 1294 gtk_label_set_justify (GTK_LABEL (l_explanation), GTK_JUSTIFY_LEFT); 1295 1296 pixmap2 = gtk_pixmap_new (pixmap, mask); 1297 gtk_widget_ref (pixmap2); 1298 gtk_object_set_data_full (GTK_OBJECT (admin), "pixmap2", pixmap2, 1299 (GtkDestroyNotify) gtk_widget_unref); 1300 gtk_widget_show (pixmap2); 1301 gtk_table_attach (GTK_TABLE (table2), pixmap2, 0, 1, 0, 1, 1302 (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); 1303 1304 vbuttonbox2 = gtk_vbutton_box_new (); 1305 gtk_widget_ref (vbuttonbox2); 1306 gtk_object_set_data_full (GTK_OBJECT (admin), "vbuttonbox2", vbuttonbox2, 1307 (GtkDestroyNotify) gtk_widget_unref); 1308 gtk_widget_show (vbuttonbox2); 1309 gtk_fixed_put (GTK_FIXED (fixed2), vbuttonbox2, 472, 16); 1310#if GTK_CHECK_VERSION(2,0,0) 1311 gtk_widget_set_uposition (vbuttonbox2, 472, 52); 1312#else 1313 gtk_widget_set_uposition (vbuttonbox2, 472, 16); 1314#endif 1315 gtk_widget_set_usize (vbuttonbox2, 85, 135); 1316 1317 b_add = gtk_button_new_with_label (""); 1318 b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_add)->child), 1319 szDSNButtons[0]); 1320 gtk_widget_add_accelerator (b_add, "clicked", accel_group, 1321 b_key, GDK_MOD1_MASK, 0); 1322 gtk_widget_ref (b_add); 1323 gtk_object_set_data_full (GTK_OBJECT (admin), "b_add", b_add, 1324 (GtkDestroyNotify) gtk_widget_unref); 1325 gtk_widget_show (b_add); 1326 gtk_container_add (GTK_CONTAINER (vbuttonbox2), b_add); 1327 GTK_WIDGET_SET_FLAGS (b_add, GTK_CAN_DEFAULT); 1328 gtk_widget_add_accelerator (b_add, "clicked", accel_group, 1329 'A', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE); 1330 1331 b_remove = gtk_button_new_with_label (""); 1332 b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_remove)->child), 1333 szDSNButtons[1]); 1334 gtk_widget_add_accelerator (b_remove, "clicked", accel_group, 1335 b_key, GDK_MOD1_MASK, 0); 1336 gtk_widget_ref (b_remove); 1337 gtk_object_set_data_full (GTK_OBJECT (admin), "b_remove", b_remove, 1338 (GtkDestroyNotify) gtk_widget_unref); 1339 gtk_widget_show (b_remove); 1340 gtk_container_add (GTK_CONTAINER (vbuttonbox2), b_remove); 1341 GTK_WIDGET_SET_FLAGS (b_remove, GTK_CAN_DEFAULT); 1342 gtk_widget_add_accelerator (b_remove, "clicked", accel_group, 1343 'R', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE); 1344 gtk_widget_set_sensitive (b_remove, FALSE); 1345 1346 b_configure = gtk_button_new_with_label (""); 1347 b_key = 1348 gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_configure)->child), 1349 szDSNButtons[2]); 1350 gtk_widget_add_accelerator (b_configure, "clicked", accel_group, 1351 b_key, GDK_MOD1_MASK, 0); 1352 gtk_widget_ref (b_configure); 1353 gtk_object_set_data_full (GTK_OBJECT (admin), "b_configure", b_configure, 1354 (GtkDestroyNotify) gtk_widget_unref); 1355 gtk_widget_show (b_configure); 1356 gtk_container_add (GTK_CONTAINER (vbuttonbox2), b_configure); 1357 GTK_WIDGET_SET_FLAGS (b_configure, GTK_CAN_DEFAULT); 1358 gtk_widget_add_accelerator (b_configure, "clicked", accel_group, 1359 'G', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE); 1360 gtk_widget_set_sensitive (b_configure, FALSE); 1361 1362 b_test = gtk_button_new_with_label (""); 1363 b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_test)->child), 1364 szDSNButtons[3]); 1365 gtk_widget_add_accelerator (b_test, "clicked", accel_group, 1366 b_key, GDK_MOD1_MASK, 0); 1367 gtk_widget_ref (b_test); 1368 gtk_object_set_data_full (GTK_OBJECT (admin), "b_test", b_test, 1369 (GtkDestroyNotify) gtk_widget_unref); 1370 gtk_widget_show (b_test); 1371 gtk_container_add (GTK_CONTAINER (vbuttonbox2), b_test); 1372 GTK_WIDGET_SET_FLAGS (b_test, GTK_CAN_DEFAULT); 1373 gtk_widget_add_accelerator (b_test, "clicked", accel_group, 1374 'T', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE); 1375 gtk_widget_set_sensitive (b_test, FALSE); 1376 1377 dsnchoose_t.sadd = b_add; 1378 dsnchoose_t.sremove = b_remove; 1379 dsnchoose_t.stest = b_test; 1380 dsnchoose_t.sconfigure = b_configure; 1381 1382 sdsn = gtk_label_new (szTabNames[1]); 1383 gtk_widget_ref (sdsn); 1384 gtk_object_set_data_full (GTK_OBJECT (admin), "sdsn", sdsn, 1385 (GtkDestroyNotify) gtk_widget_unref); 1386 gtk_widget_show (sdsn); 1387 gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), 1388 gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 1), sdsn); 1389 1390 /* File DSN panel */ 1391 fixed3 = gtk_fixed_new (); 1392 gtk_widget_ref (fixed3); 1393 gtk_object_set_data_full (GTK_OBJECT (admin), "fixed3", fixed3, 1394 (GtkDestroyNotify) gtk_widget_unref); 1395 gtk_widget_show (fixed3); 1396 gtk_container_add (GTK_CONTAINER (notebook1), fixed3); 1397 gtk_container_set_border_width (GTK_CONTAINER (fixed3), 6); 1398 1399 l_lookin = gtk_label_new ("Look in : "); 1400 gtk_widget_ref (l_lookin); 1401 gtk_object_set_data_full (GTK_OBJECT (admin), "l_lookin", l_lookin, 1402 (GtkDestroyNotify) gtk_widget_unref); 1403 gtk_widget_show (l_lookin); 1404#if GTK_CHECK_VERSION(2,0,0) 1405 gtk_fixed_put (GTK_FIXED (fixed3), l_lookin, 16, 44); 1406 gtk_widget_set_uposition (l_lookin, 16, 44); 1407#else 1408 gtk_fixed_put (GTK_FIXED (fixed3), l_lookin, 16, 16); 1409 gtk_widget_set_uposition (l_lookin, 16, 16); 1410#endif 1411 gtk_widget_set_usize (l_lookin, 57, 16); 1412 gtk_label_set_justify (GTK_LABEL (l_lookin), GTK_JUSTIFY_LEFT); 1413 1414 optionmenu1 = gtk_option_menu_new (); 1415 gtk_widget_ref (optionmenu1); 1416 gtk_object_set_data_full (GTK_OBJECT (admin), "optionmenu1", optionmenu1, 1417 (GtkDestroyNotify) gtk_widget_unref); 1418 gtk_widget_show (optionmenu1); 1419#if GTK_CHECK_VERSION(2,0,0) 1420 gtk_fixed_put (GTK_FIXED (fixed3), optionmenu1, 72, 40); 1421 gtk_widget_set_uposition (optionmenu1, 72, 40); 1422#else 1423 gtk_fixed_put (GTK_FIXED (fixed3), optionmenu1, 72, 16); 1424 gtk_widget_set_uposition (optionmenu1, 72, 16); 1425#endif 1426 gtk_widget_set_usize (optionmenu1, 392, 24); 1427 optionmenu1_menu = gtk_menu_new (); 1428 gtk_option_menu_set_menu (GTK_OPTION_MENU (optionmenu1), optionmenu1_menu); 1429 1430 scrolledwindow3 = gtk_scrolled_window_new (NULL, NULL); 1431 gtk_widget_ref (scrolledwindow3); 1432 gtk_object_set_data_full (GTK_OBJECT (admin), "scrolledwindow3", scrolledwindow3, 1433 (GtkDestroyNotify) gtk_widget_unref); 1434 gtk_widget_show (scrolledwindow3); 1435#if GTK_CHECK_VERSION(2,0,0) 1436 gtk_fixed_put (GTK_FIXED (fixed3), scrolledwindow3, 8, 74); 1437 gtk_widget_set_uposition (scrolledwindow3, 8, 74); 1438#else 1439 gtk_fixed_put (GTK_FIXED (fixed3), scrolledwindow3, 8, 48); 1440 gtk_widget_set_uposition (scrolledwindow3, 8, 48); 1441#endif 1442 gtk_widget_set_usize (scrolledwindow3, 224, 176); 1443 1444 clist3 = gtk_clist_new (1); 1445 gtk_widget_ref (clist3); 1446 gtk_object_set_data_full (GTK_OBJECT (admin), "clist3", clist3, 1447 (GtkDestroyNotify) gtk_widget_unref); 1448 gtk_widget_show (clist3); 1449 gtk_container_add (GTK_CONTAINER (scrolledwindow3), clist3); 1450 gtk_widget_set_usize (clist3, 144, 168); 1451 gtk_clist_set_column_width (GTK_CLIST (clist3), 0, 80); 1452 gtk_clist_column_titles_show (GTK_CLIST (clist3)); 1453 1454 l_directory = gtk_label_new ("Directories"); 1455 gtk_widget_ref (l_directory); 1456 gtk_object_set_data_full (GTK_OBJECT (admin), "l_directory", l_directory, 1457 (GtkDestroyNotify) gtk_widget_unref); 1458 gtk_widget_show (l_directory); 1459 gtk_clist_set_column_widget (GTK_CLIST (clist3), 0, l_directory); 1460 gtk_label_set_justify (GTK_LABEL (l_directory), GTK_JUSTIFY_LEFT); 1461 1462 scrolledwindow4 = gtk_scrolled_window_new (NULL, NULL); 1463 gtk_widget_ref (scrolledwindow4); 1464 gtk_object_set_data_full (GTK_OBJECT (admin), "scrolledwindow4", scrolledwindow4, 1465 (GtkDestroyNotify) gtk_widget_unref); 1466 gtk_widget_show (scrolledwindow4); 1467#if GTK_CHECK_VERSION(2,0,0) 1468 gtk_fixed_put (GTK_FIXED (fixed3), scrolledwindow4, 240, 74); 1469 gtk_widget_set_uposition (scrolledwindow4, 240, 74); 1470#else 1471 gtk_fixed_put (GTK_FIXED (fixed3), scrolledwindow4, 240, 48); 1472 gtk_widget_set_uposition (scrolledwindow4, 240, 48); 1473#endif 1474 gtk_widget_set_usize (scrolledwindow4, 224, 176); 1475 1476 clist4 = gtk_clist_new (1); 1477 gtk_widget_ref (clist4); 1478 gtk_object_set_data_full (GTK_OBJECT (admin), "clist4", clist4, 1479 (GtkDestroyNotify) gtk_widget_unref); 1480 gtk_widget_show (clist4); 1481 gtk_container_add (GTK_CONTAINER (scrolledwindow4), clist4); 1482 gtk_clist_set_column_width (GTK_CLIST (clist4), 0, 80); 1483 gtk_clist_column_titles_show (GTK_CLIST (clist4)); 1484 1485 l_files = gtk_label_new ("Files"); 1486 gtk_widget_ref (l_files); 1487 gtk_object_set_data_full (GTK_OBJECT (admin), "l_files", l_files, 1488 (GtkDestroyNotify) gtk_widget_unref); 1489 gtk_widget_show (l_files); 1490 gtk_clist_set_column_widget (GTK_CLIST (clist4), 0, l_files); 1491 gtk_label_set_justify (GTK_LABEL (l_files), GTK_JUSTIFY_LEFT); 1492 1493 t_fileselected = gtk_entry_new (); 1494 gtk_widget_ref (t_fileselected); 1495 gtk_object_set_data_full (GTK_OBJECT (admin), "t_fileselected", t_fileselected, 1496 (GtkDestroyNotify) gtk_widget_unref); 1497 gtk_widget_show (t_fileselected); 1498#if GTK_CHECK_VERSION(2,0,0) 1499 gtk_fixed_put (GTK_FIXED (fixed3), t_fileselected, 95, 260); 1500 gtk_widget_set_uposition (t_fileselected, 95, 260); 1501#else 1502 gtk_fixed_put (GTK_FIXED (fixed3), t_fileselected, 95, 234); 1503 gtk_widget_set_uposition (t_fileselected, 95, 234); 1504#endif 1505 gtk_widget_set_usize (t_fileselected, 370, 22); 1506 1507 frame3 = gtk_frame_new (NULL); 1508 gtk_widget_ref (frame3); 1509 gtk_object_set_data_full (GTK_OBJECT (admin), "frame3", frame3, 1510 (GtkDestroyNotify) gtk_widget_unref); 1511 gtk_widget_show (frame3); 1512#if GTK_CHECK_VERSION(2,0,0) 1513 gtk_fixed_put (GTK_FIXED (fixed3), frame3, 8, 295); 1514 gtk_widget_set_uposition (frame3, 8, 295); 1515#else 1516 gtk_fixed_put (GTK_FIXED (fixed3), frame3, 8, 264); 1517 gtk_widget_set_uposition (frame3, 8, 264); 1518#endif 1519 gtk_widget_set_usize (frame3, 546, 64); 1520 1521 table3 = gtk_table_new (1, 2, FALSE); 1522 gtk_widget_ref (table3); 1523 gtk_object_set_data_full (GTK_OBJECT (admin), "table3", table3, 1524 (GtkDestroyNotify) gtk_widget_unref); 1525 gtk_widget_show (table3); 1526 gtk_container_add (GTK_CONTAINER (frame3), table3); 1527 gtk_container_set_border_width (GTK_CONTAINER (table3), 6); 1528 gtk_table_set_row_spacings (GTK_TABLE (table3), 6); 1529 gtk_table_set_col_spacings (GTK_TABLE (table3), 6); 1530 1531 l_explanation = gtk_label_new ("Select the file data source that describes the driver that you wish to\nconnect to. You can use any file data source that refers to an ODBC\ndriver which is installed on your machine."); 1532 gtk_widget_ref (l_explanation); 1533 gtk_object_set_data_full (GTK_OBJECT (admin), "l_explanation", l_explanation, 1534 (GtkDestroyNotify) gtk_widget_unref); 1535 gtk_widget_show (l_explanation); 1536 gtk_table_attach (GTK_TABLE (table3), l_explanation, 1, 2, 0, 1, 1537 (GtkAttachOptions) (0), 1538 (GtkAttachOptions) (0), 0, 0); 1539 gtk_label_set_justify (GTK_LABEL (l_explanation), GTK_JUSTIFY_LEFT); 1540 1541 pixmap3 = gtk_pixmap_new (pixmap, mask); 1542 gtk_widget_ref (pixmap3); 1543 gtk_object_set_data_full (GTK_OBJECT (admin), "pixmap3", pixmap3, 1544 (GtkDestroyNotify) gtk_widget_unref); 1545 gtk_widget_show (pixmap3); 1546 gtk_table_attach (GTK_TABLE (table3), pixmap3, 0, 1, 0, 1, 1547 (GtkAttachOptions) (GTK_FILL), 1548 (GtkAttachOptions) (GTK_FILL), 0, 0); 1549 1550 l_selected = gtk_label_new ("File selected : "); 1551 gtk_widget_ref (l_selected); 1552 gtk_object_set_data_full (GTK_OBJECT (admin), "l_selected", l_selected, 1553 (GtkDestroyNotify) gtk_widget_unref); 1554 gtk_widget_show (l_selected); 1555#if GTK_CHECK_VERSION(2,0,0) 1556 gtk_fixed_put (GTK_FIXED (fixed3), l_selected, 8, 263); 1557 gtk_widget_set_uposition (l_selected, 8, 263); 1558#else 1559 gtk_fixed_put (GTK_FIXED (fixed3), l_selected, 8, 237); 1560 gtk_widget_set_uposition (l_selected, 8, 237); 1561#endif 1562 gtk_widget_set_usize (l_selected, 85, 16); 1563 1564 vbuttonbox3 = gtk_vbutton_box_new (); 1565 gtk_widget_ref (vbuttonbox3); 1566 gtk_object_set_data_full (GTK_OBJECT (admin), "vbuttonbox3", vbuttonbox3, 1567 (GtkDestroyNotify) gtk_widget_unref); 1568 gtk_widget_show (vbuttonbox3); 1569 gtk_fixed_put (GTK_FIXED (fixed3), vbuttonbox3, 472, 16); 1570#if GTK_CHECK_VERSION(2,0,0) 1571 gtk_widget_set_uposition (vbuttonbox3, 472, 52); 1572#else 1573 gtk_widget_set_uposition (vbuttonbox3, 472, 16); 1574#endif 1575 gtk_widget_set_usize (vbuttonbox3, 85, 165); 1576 1577 b_add = gtk_button_new_with_label (""); 1578 b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_add)->child), 1579 szDSNButtons[0]); 1580 gtk_widget_add_accelerator (b_add, "clicked", accel_group, 1581 b_key, GDK_MOD1_MASK, 0); 1582 gtk_widget_ref (b_add); 1583 gtk_object_set_data_full (GTK_OBJECT (admin), "b_add", b_add, 1584 (GtkDestroyNotify) gtk_widget_unref); 1585 gtk_widget_show (b_add); 1586 gtk_container_add (GTK_CONTAINER (vbuttonbox3), b_add); 1587 GTK_WIDGET_SET_FLAGS (b_add, GTK_CAN_DEFAULT); 1588 gtk_widget_add_accelerator (b_add, "clicked", accel_group, 1589 'A', GDK_MOD1_MASK, 1590 GTK_ACCEL_VISIBLE); 1591 1592 b_remove = gtk_button_new_with_label (""); 1593 b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_remove)->child), 1594 szDSNButtons[1]); 1595 gtk_widget_add_accelerator (b_remove, "clicked", accel_group, 1596 b_key, GDK_MOD1_MASK, 0); 1597 gtk_widget_ref (b_remove); 1598 gtk_object_set_data_full (GTK_OBJECT (admin), "b_remove", b_remove, 1599 (GtkDestroyNotify) gtk_widget_unref); 1600 gtk_widget_show (b_remove); 1601 gtk_container_add (GTK_CONTAINER (vbuttonbox3), b_remove); 1602 GTK_WIDGET_SET_FLAGS (b_remove, GTK_CAN_DEFAULT); 1603 gtk_widget_add_accelerator (b_remove, "clicked", accel_group, 1604 'R', GDK_MOD1_MASK, 1605 GTK_ACCEL_VISIBLE); 1606 1607 b_configure = gtk_button_new_with_label (""); 1608 b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_configure)->child), 1609 szDSNButtons[2]); 1610 gtk_widget_add_accelerator (b_configure, "clicked", accel_group, 1611 b_key, GDK_MOD1_MASK, 0); 1612 gtk_widget_ref (b_configure); 1613 gtk_object_set_data_full (GTK_OBJECT (admin), "b_configure", b_configure, 1614 (GtkDestroyNotify) gtk_widget_unref); 1615 gtk_widget_show (b_configure); 1616 gtk_container_add (GTK_CONTAINER (vbuttonbox3), b_configure); 1617 GTK_WIDGET_SET_FLAGS (b_configure, GTK_CAN_DEFAULT); 1618 gtk_widget_add_accelerator (b_configure, "clicked", accel_group, 1619 'C', GDK_MOD1_MASK, 1620 GTK_ACCEL_VISIBLE); 1621 1622 b_test = gtk_button_new_with_label (""); 1623 b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_test)->child), 1624 szDSNButtons[3]); 1625 gtk_widget_add_accelerator (b_test, "clicked", accel_group, 1626 b_key, GDK_MOD1_MASK, 0); 1627 gtk_widget_ref (b_test); 1628 gtk_object_set_data_full (GTK_OBJECT (admin), "b_test", b_test, 1629 (GtkDestroyNotify) gtk_widget_unref); 1630 gtk_widget_show (b_test); 1631 gtk_container_add (GTK_CONTAINER (vbuttonbox3), b_test); 1632 GTK_WIDGET_SET_FLAGS (b_test, GTK_CAN_DEFAULT); 1633 gtk_widget_add_accelerator (b_test, "clicked", accel_group, 1634 'T', GDK_MOD1_MASK, 1635 GTK_ACCEL_VISIBLE); 1636 1637 b_setdir = gtk_button_new_with_label (""); 1638 b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_setdir)->child), 1639 szDSNButtons[4]); 1640 gtk_widget_add_accelerator (b_setdir, "clicked", accel_group, 1641 b_key, GDK_MOD1_MASK, 0); 1642 gtk_widget_ref (b_setdir); 1643 gtk_object_set_data_full (GTK_OBJECT (admin), "b_setdir", b_setdir, 1644 (GtkDestroyNotify) gtk_widget_unref); 1645 gtk_widget_show (b_setdir); 1646 gtk_container_add (GTK_CONTAINER (vbuttonbox3), b_setdir); 1647 GTK_WIDGET_SET_FLAGS (b_setdir, GTK_CAN_DEFAULT); 1648 gtk_widget_add_accelerator (b_setdir, "clicked", accel_group, 1649 'S', GDK_MOD1_MASK, 1650 GTK_ACCEL_VISIBLE); 1651 1652 dsnchoose_t.fadd = b_add; dsnchoose_t.fremove = b_remove; dsnchoose_t.fconfigure = b_configure; 1653 dsnchoose_t.ftest = b_test; dsnchoose_t.dir_list = clist3; dsnchoose_t.dir_combo = optionmenu1; 1654 dsnchoose_t.file_list = clist4; dsnchoose_t.file_entry = t_fileselected; 1655 dsnchoose_t.fsetdir = b_setdir; 1656 1657 fdsn = gtk_label_new (szTabNames[2]); 1658 gtk_widget_ref (fdsn); 1659 gtk_object_set_data_full (GTK_OBJECT (admin), "fdsn", fdsn, 1660 (GtkDestroyNotify) gtk_widget_unref); 1661 gtk_widget_show (fdsn); 1662 gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), 1663 gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 2), fdsn); 1664 1665 dsnchoose_t.udsnlist = clist1; 1666 dsnchoose_t.sdsnlist = clist2; 1667 dsnchoose_t.type_dsn = 0; 1668 dsnchoose_t.mainwnd = admin; 1669 1670 /* ODBC Drivers panel */ 1671 fixed4 = gtk_fixed_new (); 1672 gtk_widget_ref (fixed4); 1673 gtk_object_set_data_full (GTK_OBJECT (admin), "fixed4", fixed4, 1674 (GtkDestroyNotify) gtk_widget_unref); 1675 gtk_widget_show (fixed4); 1676 gtk_container_add (GTK_CONTAINER (notebook1), fixed4); 1677 gtk_container_set_border_width (GTK_CONTAINER (fixed4), 6); 1678 1679 scrolledwindow5 = gtk_scrolled_window_new (NULL, NULL); 1680 gtk_widget_ref (scrolledwindow5); 1681 gtk_object_set_data_full (GTK_OBJECT (admin), "scrolledwindow5", 1682 scrolledwindow5, (GtkDestroyNotify) gtk_widget_unref); 1683 gtk_widget_show (scrolledwindow5); 1684#if GTK_CHECK_VERSION(2,0,0) 1685 gtk_fixed_put (GTK_FIXED (fixed4), scrolledwindow5, 8, 50); 1686 gtk_widget_set_uposition (scrolledwindow5, 8, 50); 1687#else 1688 gtk_fixed_put (GTK_FIXED (fixed4), scrolledwindow5, 8, 24); 1689 gtk_widget_set_uposition (scrolledwindow5, 8, 24); 1690#endif 1691 gtk_widget_set_usize (scrolledwindow5, 536, 200); 1692 1693 clist5 = gtk_clist_new (4); 1694 gtk_widget_ref (clist5); 1695 gtk_object_set_data_full (GTK_OBJECT (admin), "clist5", clist5, 1696 (GtkDestroyNotify) gtk_widget_unref); 1697 gtk_widget_show (clist5); 1698 gtk_container_add (GTK_CONTAINER (scrolledwindow5), clist5); 1699 gtk_clist_set_column_width (GTK_CLIST (clist5), 0, 188); 1700 gtk_clist_set_column_width (GTK_CLIST (clist5), 1, 170); 1701 gtk_clist_set_column_width (GTK_CLIST (clist5), 2, 134); 1702 gtk_clist_set_column_width (GTK_CLIST (clist5), 3, 80); 1703 gtk_clist_column_titles_show (GTK_CLIST (clist5)); 1704 1705 l_name = gtk_label_new (szDriverColumnNames[0]); 1706 gtk_widget_ref (l_name); 1707 gtk_object_set_data_full (GTK_OBJECT (admin), "l_name", l_name, 1708 (GtkDestroyNotify) gtk_widget_unref); 1709 gtk_widget_show (l_name); 1710 gtk_clist_set_column_widget (GTK_CLIST (clist5), 0, l_name); 1711 1712 l_file = gtk_label_new (szDriverColumnNames[1]); 1713 gtk_widget_ref (l_file); 1714 gtk_object_set_data_full (GTK_OBJECT (admin), "l_file", l_file, 1715 (GtkDestroyNotify) gtk_widget_unref); 1716 gtk_widget_show (l_file); 1717 gtk_clist_set_column_widget (GTK_CLIST (clist5), 1, l_file); 1718 1719 l_date = gtk_label_new (szDriverColumnNames[2]); 1720 gtk_widget_ref (l_date); 1721 gtk_object_set_data_full (GTK_OBJECT (admin), "l_date", l_date, 1722 (GtkDestroyNotify) gtk_widget_unref); 1723 gtk_widget_show (l_date); 1724 gtk_clist_set_column_widget (GTK_CLIST (clist5), 2, l_date); 1725 1726 l_size = gtk_label_new (szDriverColumnNames[3]); 1727 gtk_widget_ref (l_size); 1728 gtk_object_set_data_full (GTK_OBJECT (admin), "l_size", l_size, 1729 (GtkDestroyNotify) gtk_widget_unref); 1730 gtk_widget_show (l_size); 1731 gtk_clist_set_column_widget (GTK_CLIST (clist5), 3, l_size); 1732 1733 frame4 = gtk_frame_new (NULL); 1734 gtk_widget_ref (frame4); 1735 gtk_object_set_data_full (GTK_OBJECT (admin), "frame4", frame4, 1736 (GtkDestroyNotify) gtk_widget_unref); 1737 gtk_widget_show (frame4); 1738#if GTK_CHECK_VERSION(2,0,0) 1739 gtk_fixed_put (GTK_FIXED (fixed4), frame4, 8, 295); 1740 gtk_widget_set_uposition (frame4, 8, 295); 1741#else 1742 gtk_fixed_put (GTK_FIXED (fixed4), frame4, 8, 264); 1743 gtk_widget_set_uposition (frame4, 8, 264); 1744#endif 1745 gtk_widget_set_usize (frame4, 546, 64); 1746 1747 table4 = gtk_table_new (1, 2, FALSE); 1748 gtk_widget_ref (table4); 1749 gtk_object_set_data_full (GTK_OBJECT (admin), "table4", table4, 1750 (GtkDestroyNotify) gtk_widget_unref); 1751 gtk_widget_show (table4); 1752 gtk_container_add (GTK_CONTAINER (frame4), table4); 1753 gtk_container_set_border_width (GTK_CONTAINER (table4), 6); 1754 gtk_table_set_row_spacings (GTK_TABLE (table4), 6); 1755 gtk_table_set_col_spacings (GTK_TABLE (table4), 6); 1756 1757 l_explanation = 1758 gtk_label_new 1759 ("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."); 1760 gtk_widget_ref (l_explanation); 1761 gtk_object_set_data_full (GTK_OBJECT (admin), "l_explanation", 1762 l_explanation, (GtkDestroyNotify) gtk_widget_unref); 1763 gtk_widget_show (l_explanation); 1764 gtk_table_attach (GTK_TABLE (table4), l_explanation, 1, 2, 0, 1, 1765 (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); 1766 gtk_label_set_justify (GTK_LABEL (l_explanation), GTK_JUSTIFY_LEFT); 1767 1768 pixmap4 = gtk_pixmap_new (pixmap, mask); 1769 gtk_widget_ref (pixmap4); 1770 gtk_object_set_data_full (GTK_OBJECT (admin), "pixmap4", pixmap4, 1771 (GtkDestroyNotify) gtk_widget_unref); 1772 gtk_widget_show (pixmap4); 1773 gtk_table_attach (GTK_TABLE (table4), pixmap4, 0, 1, 0, 1, 1774 (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); 1775 1776 l_drivers = 1777 gtk_label_new ("ODBC Drivers that are installed on your system : "); 1778 gtk_widget_ref (l_drivers); 1779 gtk_object_set_data_full (GTK_OBJECT (admin), "l_drivers", l_drivers, 1780 (GtkDestroyNotify) gtk_widget_unref); 1781 gtk_widget_show (l_drivers); 1782#if GTK_CHECK_VERSION(2,0,0) 1783 gtk_fixed_put (GTK_FIXED (fixed4), l_drivers, 8, 32); 1784 gtk_widget_set_uposition (l_drivers, 8, 32); 1785#else 1786 gtk_fixed_put (GTK_FIXED (fixed4), l_drivers, 8, 8); 1787 gtk_widget_set_uposition (l_drivers, 8, 8); 1788#endif 1789 gtk_widget_set_usize (l_drivers, 290, 16); 1790 gtk_label_set_justify (GTK_LABEL (l_drivers), GTK_JUSTIFY_LEFT); 1791 1792 hbuttonbox2 = gtk_hbutton_box_new (); 1793 gtk_widget_ref (hbuttonbox2); 1794 gtk_object_set_data_full (GTK_OBJECT (admin), "hbuttonbox2", hbuttonbox2, 1795 (GtkDestroyNotify) gtk_widget_unref); 1796 gtk_widget_show (hbuttonbox2); 1797#if GTK_CHECK_VERSION(2,0,0) 1798 gtk_fixed_put (GTK_FIXED (fixed4), hbuttonbox2, 16, 256); 1799 gtk_widget_set_uposition (hbuttonbox2, 16, 256); 1800#else 1801 gtk_fixed_put (GTK_FIXED (fixed4), hbuttonbox2, 16, 227); 1802 gtk_widget_set_uposition (hbuttonbox2, 16, 227); 1803#endif 1804 gtk_widget_set_usize (hbuttonbox2, 530, 33); 1805 gtk_button_box_set_spacing (GTK_BUTTON_BOX (hbuttonbox2), 6); 1806 gtk_button_box_set_child_size (GTK_BUTTON_BOX (hbuttonbox2), 64, -1); 1807 1808 b_add = gtk_button_new_with_label (""); 1809 b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_add)->child), 1810 szDriverButtons[0]); 1811 gtk_widget_add_accelerator (b_add, "clicked", accel_group, 1812 b_key, GDK_MOD1_MASK, 0); 1813 gtk_widget_ref (b_add); 1814 gtk_object_set_data_full (GTK_OBJECT (admin), "b_add", b_add, 1815 (GtkDestroyNotify) gtk_widget_unref); 1816 gtk_widget_show (b_add); 1817 gtk_container_add (GTK_CONTAINER (hbuttonbox2), b_add); 1818 GTK_WIDGET_SET_FLAGS (b_add, GTK_CAN_DEFAULT); 1819 gtk_widget_add_accelerator (b_add, "clicked", accel_group, 1820 'A', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE); 1821 1822 b_remove = gtk_button_new_with_label (""); 1823 b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_remove)->child), 1824 szDriverButtons[1]); 1825 gtk_widget_add_accelerator (b_remove, "clicked", accel_group, 1826 b_key, GDK_MOD1_MASK, 0); 1827 gtk_widget_ref (b_remove); 1828 gtk_object_set_data_full (GTK_OBJECT (admin), "b_remove", b_remove, 1829 (GtkDestroyNotify) gtk_widget_unref); 1830 gtk_widget_show (b_remove); 1831 gtk_container_add (GTK_CONTAINER (hbuttonbox2), b_remove); 1832 GTK_WIDGET_SET_FLAGS (b_remove, GTK_CAN_DEFAULT); 1833 gtk_widget_add_accelerator (b_remove, "clicked", accel_group, 1834 'R', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE); 1835 1836 b_configure = gtk_button_new_with_label (""); 1837 b_key = 1838 gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_configure)->child), 1839 szDriverButtons[2]); 1840 gtk_widget_add_accelerator (b_configure, "clicked", accel_group, 1841 b_key, GDK_MOD1_MASK, 0); 1842 gtk_widget_ref (b_configure); 1843 gtk_object_set_data_full (GTK_OBJECT (admin), "b_configure", b_configure, 1844 (GtkDestroyNotify) gtk_widget_unref); 1845 gtk_widget_show (b_configure); 1846 gtk_container_add (GTK_CONTAINER (hbuttonbox2), b_configure); 1847 GTK_WIDGET_SET_FLAGS (b_configure, GTK_CAN_DEFAULT); 1848 gtk_widget_add_accelerator (b_configure, "clicked", accel_group, 1849 'G', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE); 1850 1851 fdrivers = gtk_label_new (szTabNames[3]); 1852 gtk_widget_ref (fdrivers); 1853 gtk_object_set_data_full (GTK_OBJECT (admin), "fdrivers", fdrivers, 1854 (GtkDestroyNotify) gtk_widget_unref); 1855 gtk_widget_show (fdrivers); 1856 gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), 1857 gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 3), fdrivers); 1858 1859 driverchoose_t.driverlist = clist5; 1860 driverchoose_t.mainwnd = admin; 1861 driverchoose_t.b_add = b_add; 1862 driverchoose_t.b_remove = b_remove; 1863 driverchoose_t.b_configure = b_configure; 1864 1865 /* Connection pooling panel */ 1866 fixed5 = gtk_fixed_new (); 1867 gtk_widget_ref (fixed5); 1868 gtk_object_set_data_full (GTK_OBJECT (admin), "fixed5", fixed5, 1869 (GtkDestroyNotify) gtk_widget_unref); 1870 gtk_widget_show (fixed5); 1871 gtk_container_add (GTK_CONTAINER (notebook1), fixed5); 1872 gtk_container_set_border_width (GTK_CONTAINER (fixed5), 6); 1873 1874 frame10 = gtk_frame_new (NULL); 1875 gtk_widget_ref (frame10); 1876 gtk_object_set_data_full (GTK_OBJECT (admin), "frame10", frame10, 1877 (GtkDestroyNotify) gtk_widget_unref); 1878 gtk_widget_show (frame10); 1879#if GTK_CHECK_VERSION(2,0,0) 1880 gtk_fixed_put (GTK_FIXED (fixed5), frame10, 8, 295); 1881 gtk_widget_set_uposition (frame10, 8, 295); 1882#else 1883 gtk_fixed_put (GTK_FIXED (fixed5), frame10, 8, 264); 1884 gtk_widget_set_uposition (frame10, 8, 264); 1885#endif 1886 gtk_widget_set_usize (frame10, 546, 64); 1887 1888 table9 = gtk_table_new (1, 2, FALSE); 1889 gtk_widget_ref (table9); 1890 gtk_object_set_data_full (GTK_OBJECT (admin), "table9", table9, 1891 (GtkDestroyNotify) gtk_widget_unref); 1892 gtk_widget_show (table9); 1893 gtk_container_add (GTK_CONTAINER (frame10), table9); 1894 gtk_container_set_border_width (GTK_CONTAINER (table9), 6); 1895 gtk_table_set_row_spacings (GTK_TABLE (table9), 6); 1896 gtk_table_set_col_spacings (GTK_TABLE (table9), 6); 1897 1898 l_explanation = 1899 gtk_label_new 1900 ("Connection pooling allows an application to reuse open connection\nhandles, which saves round-trips to the server.\n"); 1901 gtk_widget_ref (l_explanation); 1902 gtk_object_set_data_full (GTK_OBJECT (admin), "l_explanation", 1903 l_explanation, (GtkDestroyNotify) gtk_widget_unref); 1904 gtk_widget_show (l_explanation); 1905 gtk_table_attach (GTK_TABLE (table9), l_explanation, 1, 2, 0, 1, 1906 (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); 1907 gtk_label_set_justify (GTK_LABEL (l_explanation), GTK_JUSTIFY_LEFT); 1908 1909 pixmap7 = gtk_pixmap_new (pixmap, mask); 1910 gtk_widget_ref (pixmap7); 1911 gtk_object_set_data_full (GTK_OBJECT (admin), "pixmap7", pixmap7, 1912 (GtkDestroyNotify) gtk_widget_unref); 1913 gtk_widget_show (pixmap7); 1914 gtk_table_attach (GTK_TABLE (table9), pixmap7, 0, 1, 0, 1, 1915 (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); 1916 1917 frame12 = gtk_frame_new (" PerfMon "); 1918 gtk_widget_ref (frame12); 1919 gtk_object_set_data_full (GTK_OBJECT (admin), "frame12", frame12, 1920 (GtkDestroyNotify) gtk_widget_unref); 1921 gtk_widget_show (frame12); 1922#if GTK_CHECK_VERSION(2,0,0) 1923 gtk_fixed_put (GTK_FIXED (fixed5), frame12, 424, 32); 1924 gtk_widget_set_uposition (frame12, 424, 32); 1925#else 1926 gtk_fixed_put (GTK_FIXED (fixed5), frame12, 424, 8); 1927 gtk_widget_set_uposition (frame12, 424, 8); 1928#endif 1929 gtk_widget_set_usize (frame12, 128, 72); 1930 1931 vbox5 = gtk_vbox_new (TRUE, 6); 1932 gtk_widget_ref (vbox5); 1933 gtk_object_set_data_full (GTK_OBJECT (admin), "vbox5", vbox5, 1934 (GtkDestroyNotify) gtk_widget_unref); 1935 gtk_widget_show (vbox5); 1936 gtk_container_add (GTK_CONTAINER (frame12), vbox5); 1937 gtk_container_set_border_width (GTK_CONTAINER (vbox5), 6); 1938 1939 br_enable = gtk_radio_button_new_with_label (vbox5_group, ""); 1940 b_key = 1941 gtk_label_parse_uline (GTK_LABEL (GTK_BIN (br_enable)->child), 1942 "_Enable"); 1943 gtk_widget_add_accelerator (br_enable, "clicked", accel_group, 1944 b_key, GDK_MOD1_MASK, 0); 1945 vbox5_group = gtk_radio_button_group (GTK_RADIO_BUTTON (br_enable)); 1946 gtk_widget_ref (br_enable); 1947 gtk_object_set_data_full (GTK_OBJECT (admin), "br_enable", br_enable, 1948 (GtkDestroyNotify) gtk_widget_unref); 1949 gtk_widget_show (br_enable); 1950 gtk_box_pack_start (GTK_BOX (vbox5), br_enable, FALSE, FALSE, 0); 1951 1952 br_disable = gtk_radio_button_new_with_label (vbox5_group, ""); 1953 b_key = 1954 gtk_label_parse_uline (GTK_LABEL (GTK_BIN (br_disable)->child), 1955 "_Disable"); 1956 gtk_widget_add_accelerator (br_disable, "clicked", accel_group, 1957 b_key, GDK_MOD1_MASK, GTK_ACCEL_VISIBLE); 1958 vbox5_group = gtk_radio_button_group (GTK_RADIO_BUTTON (br_disable)); 1959 gtk_widget_ref (br_disable); 1960 gtk_object_set_data_full (GTK_OBJECT (admin), "br_disable", br_disable, 1961 (GtkDestroyNotify) gtk_widget_unref); 1962 gtk_widget_show (br_disable); 1963 gtk_box_pack_start (GTK_BOX (vbox5), br_disable, FALSE, FALSE, 0); 1964 gtk_widget_add_accelerator (br_disable, "clicked", accel_group, 1965 'D', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE); 1966 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (br_disable), TRUE); 1967 1968 frame13 = gtk_frame_new (" Retry Wait time "); 1969 gtk_widget_ref (frame13); 1970 gtk_object_set_data_full (GTK_OBJECT (admin), "frame13", frame13, 1971 (GtkDestroyNotify) gtk_widget_unref); 1972 gtk_widget_show (frame13); 1973#if GTK_CHECK_VERSION(2,0,0) 1974 gtk_fixed_put (GTK_FIXED (fixed5), frame13, 424, 112); 1975 gtk_widget_set_uposition (frame13, 424, 112); 1976#else 1977 gtk_fixed_put (GTK_FIXED (fixed5), frame13, 424, 88); 1978 gtk_widget_set_uposition (frame13, 424, 88); 1979#endif 1980 gtk_widget_set_usize (frame13, 128, 80); 1981 1982 vbox4 = gtk_vbox_new (TRUE, 0); 1983 gtk_widget_ref (vbox4); 1984 gtk_object_set_data_full (GTK_OBJECT (admin), "vbox4", vbox4, 1985 (GtkDestroyNotify) gtk_widget_unref); 1986 gtk_widget_show (vbox4); 1987 gtk_container_add (GTK_CONTAINER (frame13), vbox4); 1988 gtk_container_set_border_width (GTK_CONTAINER (vbox4), 6); 1989 1990 t_retrywait = gtk_entry_new (); 1991 gtk_widget_ref (t_retrywait); 1992 gtk_object_set_data_full (GTK_OBJECT (admin), "t_retrywait", t_retrywait, 1993 (GtkDestroyNotify) gtk_widget_unref); 1994 gtk_widget_show (t_retrywait); 1995 gtk_box_pack_start (GTK_BOX (vbox4), t_retrywait, FALSE, FALSE, 0); 1996 1997 alignment1 = gtk_alignment_new (0.5, 0.5, 1, 1); 1998 gtk_widget_ref (alignment1); 1999 gtk_object_set_data_full (GTK_OBJECT (admin), "alignment1", alignment1, 2000 (GtkDestroyNotify) gtk_widget_unref); 2001 gtk_widget_show (alignment1); 2002#if GTK_CHECK_VERSION(2,0,0) 2003 gtk_fixed_put (GTK_FIXED (fixed5), alignment1, 8, 32); 2004 gtk_widget_set_uposition (alignment1, 8, 32); 2005#else 2006 gtk_fixed_put (GTK_FIXED (fixed5), alignment1, 8, 8); 2007 gtk_widget_set_uposition (alignment1, 8, 8); 2008#endif 2009 gtk_widget_set_usize (alignment1, 410, 248); 2010 2011 frame11 = gtk_frame_new (" Connection Pooling Timeout "); 2012 gtk_widget_ref (frame11); 2013 gtk_object_set_data_full (GTK_OBJECT (admin), "frame11", frame11, 2014 (GtkDestroyNotify) gtk_widget_unref); 2015 gtk_widget_show (frame11); 2016 gtk_container_add (GTK_CONTAINER (alignment1), frame11); 2017 gtk_widget_set_usize (frame11, 368, 248); 2018 2019 fixed8 = gtk_fixed_new (); 2020 gtk_widget_ref (fixed8); 2021 gtk_object_set_data_full (GTK_OBJECT (admin), "fixed8", fixed8, 2022 (GtkDestroyNotify) gtk_widget_unref); 2023 gtk_widget_show (fixed8); 2024 gtk_container_add (GTK_CONTAINER (frame11), fixed8); 2025 gtk_container_set_border_width (GTK_CONTAINER (fixed8), 6); 2026 2027 l_odbcdrivers = gtk_label_new ("ODBC Drivers :"); 2028 gtk_widget_ref (l_odbcdrivers); 2029 gtk_object_set_data_full (GTK_OBJECT (admin), "l_odbcdrivers", 2030 l_odbcdrivers, (GtkDestroyNotify) gtk_widget_unref); 2031 gtk_widget_show (l_odbcdrivers); 2032#if GTK_CHECK_VERSION(2,0,0) 2033 gtk_fixed_put (GTK_FIXED (fixed8), l_odbcdrivers, 16, 51); 2034 gtk_widget_set_uposition (l_odbcdrivers, 16, 51); 2035#else 2036 gtk_fixed_put (GTK_FIXED (fixed8), l_odbcdrivers, 8, 3); 2037 gtk_widget_set_uposition (l_odbcdrivers, 8, 3); 2038#endif 2039 gtk_widget_set_usize (l_odbcdrivers, 89, 16); 2040 2041 scrolledwindow7 = gtk_scrolled_window_new (NULL, NULL); 2042 gtk_widget_ref (scrolledwindow7); 2043 gtk_object_set_data_full (GTK_OBJECT (admin), "scrolledwindow7", 2044 scrolledwindow7, (GtkDestroyNotify) gtk_widget_unref); 2045 gtk_widget_show (scrolledwindow7); 2046#if GTK_CHECK_VERSION(2,0,0) 2047 gtk_fixed_put (GTK_FIXED (fixed8), scrolledwindow7, 16, 68); 2048 gtk_widget_set_uposition (scrolledwindow7, 16, 68); 2049#else 2050 gtk_fixed_put (GTK_FIXED (fixed8), scrolledwindow7, 8, 24); 2051 gtk_widget_set_uposition (scrolledwindow7, 8, 24); 2052#endif 2053 gtk_widget_set_usize (scrolledwindow7, 392, 200); 2054 2055 clist7 = gtk_clist_new (3); 2056 gtk_widget_ref (clist7); 2057 gtk_object_set_data_full (GTK_OBJECT (admin), "clist7", clist7, 2058 (GtkDestroyNotify) gtk_widget_unref); 2059 gtk_widget_show (clist7); 2060 gtk_container_add (GTK_CONTAINER (scrolledwindow7), clist7); 2061 gtk_clist_set_column_width (GTK_CLIST (clist7), 0, 210); 2062 gtk_clist_set_column_width (GTK_CLIST (clist7), 1, 80); 2063 gtk_clist_set_column_width (GTK_CLIST (clist7), 2, 150); 2064 gtk_clist_column_titles_show (GTK_CLIST (clist7)); 2065 2066 l_name = gtk_label_new (szCpLabels[0]); 2067 gtk_widget_ref (l_name); 2068 gtk_object_set_data_full (GTK_OBJECT (admin), "l_name", l_name, 2069 (GtkDestroyNotify) gtk_widget_unref); 2070 gtk_widget_show (l_name); 2071 gtk_clist_set_column_widget (GTK_CLIST (clist7), 0, l_name); 2072 2073 l_poolto = gtk_label_new (szCpLabels[1]); 2074 gtk_widget_ref (l_poolto); 2075 gtk_object_set_data_full (GTK_OBJECT (admin), "l_poolto", l_poolto, 2076 (GtkDestroyNotify) gtk_widget_unref); 2077 gtk_widget_show (l_poolto); 2078 gtk_clist_set_column_widget (GTK_CLIST (clist7), 1, l_poolto); 2079 2080 l_poolprobe = gtk_label_new (szCpLabels[2]); 2081 gtk_widget_ref (l_poolprobe); 2082 gtk_object_set_data_full (GTK_OBJECT (admin), "l_poolprobe", l_poolprobe, 2083 (GtkDestroyNotify) gtk_widget_unref); 2084 gtk_widget_show (l_poolprobe); 2085 gtk_clist_set_column_widget (GTK_CLIST (clist7), 2, l_poolprobe); 2086 2087 fpooling = gtk_label_new (szTabNames[4]); 2088 gtk_widget_ref (fpooling); 2089 gtk_object_set_data_full (GTK_OBJECT (admin), "fpooling", fpooling, 2090 (GtkDestroyNotify) gtk_widget_unref); 2091 gtk_widget_show (fpooling); 2092 gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), 2093 gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 4), fpooling); 2094 2095 connectionpool_t.driverlist = clist7; 2096 connectionpool_t.enperfmon_rb = br_enable; 2097 connectionpool_t.disperfmon_rb = br_disable; 2098 connectionpool_t.retwait_entry = t_retrywait; 2099 connectionpool_t.changed = FALSE; 2100 connectionpool_t.mainwnd = admin; 2101 2102 /* Tracing panel */ 2103 fixed6 = gtk_fixed_new (); 2104 gtk_widget_ref (fixed6); 2105 gtk_object_set_data_full (GTK_OBJECT (admin), "fixed6", fixed6, 2106 (GtkDestroyNotify) gtk_widget_unref); 2107 gtk_widget_show (fixed6); 2108 gtk_container_add (GTK_CONTAINER (notebook1), fixed6); 2109 gtk_container_set_border_width (GTK_CONTAINER (fixed6), 6); 2110 2111 frame6 = gtk_frame_new (" When to trace "); 2112 gtk_widget_ref (frame6); 2113 gtk_object_set_data_full (GTK_OBJECT (admin), "frame6", frame6, 2114 (GtkDestroyNotify) gtk_widget_unref); 2115 gtk_widget_show (frame6); 2116#if GTK_CHECK_VERSION(2,0,0) 2117 gtk_fixed_put (GTK_FIXED (fixed6), frame6, 8, 32); 2118 gtk_widget_set_uposition (frame6, 8, 32); 2119#else 2120 gtk_fixed_put (GTK_FIXED (fixed6), frame6, 8, 8); 2121 gtk_widget_set_uposition (frame6, 8, 8); 2122#endif 2123 gtk_widget_set_usize (frame6, 280, 104); 2124 2125 hbox1 = gtk_hbox_new (TRUE, 0); 2126 gtk_widget_ref (hbox1); 2127 gtk_object_set_data_full (GTK_OBJECT (admin), "hbox1", hbox1, 2128 (GtkDestroyNotify) gtk_widget_unref); 2129 gtk_widget_show (hbox1); 2130 gtk_container_add (GTK_CONTAINER (frame6), hbox1); 2131 gtk_container_set_border_width (GTK_CONTAINER (hbox1), 6); 2132 2133 vbox2 = gtk_vbox_new (FALSE, 0); 2134 gtk_widget_ref (vbox2); 2135 gtk_object_set_data_full (GTK_OBJECT (admin), "vbox2", vbox2, 2136 (GtkDestroyNotify) gtk_widget_unref); 2137 gtk_widget_show (vbox2); 2138 gtk_box_pack_start (GTK_BOX (hbox1), vbox2, TRUE, TRUE, 0); 2139 2140 b_donottrace = gtk_radio_button_new_with_label (vbox2_group, ""); 2141 b_key = 2142 gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_donottrace)->child), 2143 "_Don't trace"); 2144 gtk_widget_add_accelerator (b_donottrace, "clicked", accel_group, 2145 b_key, GDK_MOD1_MASK, 0); 2146 vbox2_group = gtk_radio_button_group (GTK_RADIO_BUTTON (b_donottrace)); 2147 gtk_widget_ref (b_donottrace); 2148 gtk_object_set_data_full (GTK_OBJECT (admin), "b_donottrace", b_donottrace, 2149 (GtkDestroyNotify) gtk_widget_unref); 2150 gtk_widget_show (b_donottrace); 2151 gtk_box_pack_start (GTK_BOX (vbox2), b_donottrace, FALSE, FALSE, 0); 2152 gtk_widget_add_accelerator (b_donottrace, "clicked", accel_group, 2153 'D', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE); 2154 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b_donottrace), TRUE); 2155 2156 b_allthetime = gtk_radio_button_new_with_label (vbox2_group, ""); 2157 b_key = 2158 gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_allthetime)->child), 2159 "All the t_ime"); 2160 gtk_widget_add_accelerator (b_allthetime, "clicked", accel_group, 2161 b_key, GDK_MOD1_MASK, 0); 2162 vbox2_group = gtk_radio_button_group (GTK_RADIO_BUTTON (b_allthetime)); 2163 gtk_widget_ref (b_allthetime); 2164 gtk_object_set_data_full (GTK_OBJECT (admin), "b_allthetime", b_allthetime, 2165 (GtkDestroyNotify) gtk_widget_unref); 2166 gtk_widget_show (b_allthetime); 2167 gtk_box_pack_start (GTK_BOX (vbox2), b_allthetime, FALSE, FALSE, 0); 2168 gtk_widget_add_accelerator (b_allthetime, "clicked", accel_group, 2169 'I', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE); 2170 2171 b_onetime = gtk_radio_button_new_with_label (vbox2_group, ""); 2172 b_key = 2173 gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_onetime)->child), 2174 "One-_time only"); 2175 gtk_widget_add_accelerator (b_onetime, "clicked", accel_group, 2176 b_key, GDK_MOD1_MASK, 0); 2177 vbox2_group = gtk_radio_button_group (GTK_RADIO_BUTTON (b_onetime)); 2178 gtk_widget_ref (b_onetime); 2179 gtk_object_set_data_full (GTK_OBJECT (admin), "b_onetime", b_onetime, 2180 (GtkDestroyNotify) gtk_widget_unref); 2181 gtk_widget_show (b_onetime); 2182 gtk_box_pack_start (GTK_BOX (vbox2), b_onetime, FALSE, FALSE, 0); 2183 gtk_widget_add_accelerator (b_onetime, "clicked", accel_group, 2184 'T', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE); 2185 2186 vbox3 = gtk_vbox_new (FALSE, 0); 2187 gtk_widget_ref (vbox3); 2188 gtk_object_set_data_full (GTK_OBJECT (admin), "vbox3", vbox3, 2189 (GtkDestroyNotify) gtk_widget_unref); 2190 gtk_widget_show (vbox3); 2191 gtk_box_pack_start (GTK_BOX (hbox1), vbox3, FALSE, FALSE, 0); 2192 2193 b_start = gtk_button_new_with_label (""); 2194 b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_start)->child), 2195 "_Apply tracing settings"); 2196 gtk_widget_add_accelerator (b_start, "clicked", accel_group, 2197 b_key, GDK_MOD1_MASK, 0); 2198 gtk_widget_ref (b_start); 2199 gtk_object_set_data_full (GTK_OBJECT (admin), "b_start", b_start, 2200 (GtkDestroyNotify) gtk_widget_unref); 2201 gtk_widget_show (b_start); 2202 gtk_box_pack_start (GTK_BOX (vbox3), b_start, FALSE, FALSE, 0); 2203 gtk_widget_add_accelerator (b_start, "clicked", accel_group, 2204 'A', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE); 2205 2206 frame7 = gtk_frame_new (" Log file path "); 2207 gtk_widget_ref (frame7); 2208 gtk_object_set_data_full (GTK_OBJECT (admin), "frame7", frame7, 2209 (GtkDestroyNotify) gtk_widget_unref); 2210 gtk_widget_show (frame7); 2211#if GTK_CHECK_VERSION(2,0,0) 2212 gtk_fixed_put (GTK_FIXED (fixed6), frame7, 296, 32); 2213 gtk_widget_set_uposition (frame7, 296, 32); 2214#else 2215 gtk_fixed_put (GTK_FIXED (fixed6), frame7, 296, 8); 2216 gtk_widget_set_uposition (frame7, 296, 8); 2217#endif 2218 gtk_widget_set_usize (frame7, 256, 104); 2219 2220 table6 = gtk_table_new (2, 1, TRUE); 2221 gtk_widget_ref (table6); 2222 gtk_object_set_data_full (GTK_OBJECT (admin), "table6", table6, 2223 (GtkDestroyNotify) gtk_widget_unref); 2224 gtk_widget_show (table6); 2225 gtk_container_add (GTK_CONTAINER (frame7), table6); 2226 gtk_container_set_border_width (GTK_CONTAINER (table6), 6); 2227 gtk_table_set_row_spacings (GTK_TABLE (table6), 6); 2228 2229 t_logfile = gtk_entry_new (); 2230 gtk_widget_ref (t_logfile); 2231 gtk_object_set_data_full (GTK_OBJECT (admin), "t_logfile", t_logfile, 2232 (GtkDestroyNotify) gtk_widget_unref); 2233 gtk_widget_show (t_logfile); 2234 gtk_table_attach (GTK_TABLE (table6), t_logfile, 0, 1, 0, 1, 2235 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 2236 (GtkAttachOptions) (0), 0, 0); 2237 2238 b_browse = gtk_button_new_with_label (""); 2239 b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_browse)->child), 2240 "_Browse"); 2241 gtk_widget_add_accelerator (b_browse, "clicked", accel_group, 2242 b_key, GDK_MOD1_MASK, 0); 2243 gtk_widget_ref (b_browse); 2244 gtk_object_set_data_full (GTK_OBJECT (admin), "b_browse", b_browse, 2245 (GtkDestroyNotify) gtk_widget_unref); 2246 gtk_widget_show (b_browse); 2247 gtk_table_attach (GTK_TABLE (table6), b_browse, 0, 1, 1, 2, 2248 (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); 2249 gtk_widget_add_accelerator (b_browse, "clicked", accel_group, 2250 'B', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE); 2251 2252 frame8 = gtk_frame_new (" Custom trace library "); 2253 gtk_widget_ref (frame8); 2254 gtk_object_set_data_full (GTK_OBJECT (admin), "frame8", frame8, 2255 (GtkDestroyNotify) gtk_widget_unref); 2256 gtk_widget_show (frame8); 2257#if GTK_CHECK_VERSION(2,0,0) 2258 gtk_fixed_put (GTK_FIXED (fixed6), frame8, 8, 120); 2259 gtk_widget_set_uposition (frame8, 8, 144); 2260#else 2261 gtk_fixed_put (GTK_FIXED (fixed6), frame8, 8, 144); 2262 gtk_widget_set_uposition (frame8, 8, 120); 2263#endif 2264 gtk_widget_set_usize (frame8, 280, 96); 2265 2266 table7 = gtk_table_new (2, 1, TRUE); 2267 gtk_widget_ref (table7); 2268 gtk_object_set_data_full (GTK_OBJECT (admin), "table7", table7, 2269 (GtkDestroyNotify) gtk_widget_unref); 2270 gtk_widget_show (table7); 2271 gtk_container_add (GTK_CONTAINER (frame8), table7); 2272 gtk_container_set_border_width (GTK_CONTAINER (table7), 6); 2273 gtk_table_set_row_spacings (GTK_TABLE (table7), 6); 2274 2275 t_tracelib = gtk_entry_new (); 2276 gtk_widget_ref (t_tracelib); 2277 gtk_object_set_data_full (GTK_OBJECT (admin), "t_tracelib", t_tracelib, 2278 (GtkDestroyNotify) gtk_widget_unref); 2279 gtk_widget_show (t_tracelib); 2280 gtk_table_attach (GTK_TABLE (table7), t_tracelib, 0, 1, 0, 1, 2281 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 2282 (GtkAttachOptions) (0), 0, 0); 2283 2284 b_select = gtk_button_new_with_label (""); 2285 b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_select)->child), 2286 "_Select library"); 2287 gtk_widget_add_accelerator (b_select, "clicked", accel_group, 2288 b_key, GDK_MOD1_MASK, 0); 2289 gtk_widget_ref (b_select); 2290 gtk_object_set_data_full (GTK_OBJECT (admin), "b_select", b_select, 2291 (GtkDestroyNotify) gtk_widget_unref); 2292 gtk_widget_show (b_select); 2293 gtk_table_attach (GTK_TABLE (table7), b_select, 0, 1, 1, 2, 2294 (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); 2295 gtk_widget_add_accelerator (b_select, "clicked", accel_group, 2296 'S', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE); 2297 2298 frame5 = gtk_frame_new (NULL); 2299 gtk_widget_ref (frame5); 2300 gtk_object_set_data_full (GTK_OBJECT (admin), "frame5", frame5, 2301 (GtkDestroyNotify) gtk_widget_unref); 2302 gtk_widget_show (frame5); 2303#if GTK_CHECK_VERSION(2,0,0) 2304 gtk_fixed_put (GTK_FIXED (fixed6), frame5, 8, 295); 2305 gtk_widget_set_uposition (frame5, 8, 295); 2306#else 2307 gtk_fixed_put (GTK_FIXED (fixed6), frame5, 8, 264); 2308 gtk_widget_set_uposition (frame5, 8, 264); 2309#endif 2310 gtk_widget_set_usize (frame5, 546, 64); 2311 2312 table5 = gtk_table_new (1, 2, FALSE); 2313 gtk_widget_ref (table5); 2314 gtk_object_set_data_full (GTK_OBJECT (admin), "table5", table5, 2315 (GtkDestroyNotify) gtk_widget_unref); 2316 gtk_widget_show (table5); 2317 gtk_container_add (GTK_CONTAINER (frame5), table5); 2318 gtk_container_set_border_width (GTK_CONTAINER (table5), 6); 2319 gtk_table_set_row_spacings (GTK_TABLE (table5), 6); 2320 gtk_table_set_col_spacings (GTK_TABLE (table5), 6); 2321 2322 l_explanation = 2323 gtk_label_new 2324 ("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."); 2325 gtk_widget_ref (l_explanation); 2326 gtk_object_set_data_full (GTK_OBJECT (admin), "l_explanation", 2327 l_explanation, (GtkDestroyNotify) gtk_widget_unref); 2328 gtk_widget_show (l_explanation); 2329 gtk_table_attach (GTK_TABLE (table5), l_explanation, 1, 2, 0, 1, 2330 (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); 2331 gtk_label_set_justify (GTK_LABEL (l_explanation), GTK_JUSTIFY_LEFT); 2332 2333 pixmap5 = gtk_pixmap_new (pixmap, mask); 2334 gtk_widget_ref (pixmap5); 2335 gtk_object_set_data_full (GTK_OBJECT (admin), "pixmap5", pixmap5, 2336 (GtkDestroyNotify) gtk_widget_unref); 2337 gtk_widget_show (pixmap5); 2338 gtk_table_attach (GTK_TABLE (table5), pixmap5, 0, 1, 0, 1, 2339 (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); 2340 2341 ftracing = gtk_label_new (szTabNames[5]); 2342 gtk_widget_ref (ftracing); 2343 gtk_object_set_data_full (GTK_OBJECT (admin), "ftracing", ftracing, 2344 (GtkDestroyNotify) gtk_widget_unref); 2345 gtk_widget_show (ftracing); 2346 gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), 2347 gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 5), ftracing); 2348 2349 tracing_t.logfile_entry = t_logfile; 2350 tracing_t.tracelib_entry = t_tracelib; 2351 tracing_t.b_start_stop = b_start; 2352 tracing_t.donttrace_rb = b_donottrace; 2353 tracing_t.allthetime_rb = b_allthetime; 2354 tracing_t.onetime_rb = b_onetime; 2355 tracing_t.changed = FALSE; 2356 2357 /* About panel */ 2358 fixed7 = gtk_fixed_new (); 2359 gtk_widget_ref (fixed7); 2360 gtk_object_set_data_full (GTK_OBJECT (admin), "fixed7", fixed7, 2361 (GtkDestroyNotify) gtk_widget_unref); 2362 gtk_widget_show (fixed7); 2363 gtk_container_add (GTK_CONTAINER (notebook1), fixed7); 2364 gtk_container_set_border_width (GTK_CONTAINER (fixed7), 6); 2365 2366 frame9 = gtk_frame_new (NULL); 2367 gtk_widget_ref (frame9); 2368 gtk_object_set_data_full (GTK_OBJECT (admin), "frame9", frame9, 2369 (GtkDestroyNotify) gtk_widget_unref); 2370 gtk_widget_show (frame9); 2371#if GTK_CHECK_VERSION(2,0,0) 2372 gtk_fixed_put (GTK_FIXED (fixed7), frame9, 8, 295); 2373 gtk_widget_set_uposition (frame9, 8, 295); 2374#else 2375 gtk_fixed_put (GTK_FIXED (fixed7), frame9, 8, 264); 2376 gtk_widget_set_uposition (frame9, 8, 264); 2377#endif 2378 gtk_widget_set_usize (frame9, 546, 64); 2379 2380 table8 = gtk_table_new (1, 2, FALSE); 2381 gtk_widget_ref (table8); 2382 gtk_object_set_data_full (GTK_OBJECT (admin), "table8", table8, 2383 (GtkDestroyNotify) gtk_widget_unref); 2384 gtk_widget_show (table8); 2385 gtk_container_add (GTK_CONTAINER (frame9), table8); 2386 gtk_container_set_border_width (GTK_CONTAINER (table8), 6); 2387 gtk_table_set_row_spacings (GTK_TABLE (table8), 6); 2388 gtk_table_set_col_spacings (GTK_TABLE (table8), 6); 2389 2390 l_explanation = 2391 gtk_label_new 2392 ("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."); 2393 gtk_widget_ref (l_explanation); 2394 gtk_object_set_data_full (GTK_OBJECT (admin), "l_explanation", 2395 l_explanation, (GtkDestroyNotify) gtk_widget_unref); 2396 gtk_widget_show (l_explanation); 2397 gtk_table_attach (GTK_TABLE (table8), l_explanation, 1, 2, 0, 1, 2398 (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); 2399 gtk_label_set_justify (GTK_LABEL (l_explanation), GTK_JUSTIFY_LEFT); 2400 2401 pixmap6 = gtk_pixmap_new (pixmap, mask); 2402 gtk_widget_ref (pixmap6); 2403 gtk_object_set_data_full (GTK_OBJECT (admin), "pixmap6", pixmap6, 2404 (GtkDestroyNotify) gtk_widget_unref); 2405 gtk_widget_show (pixmap6); 2406 gtk_table_attach (GTK_TABLE (table8), pixmap6, 0, 1, 0, 1, 2407 (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); 2408 2409 l_about = gtk_label_new ("ODBC components installed on your system : "); 2410 gtk_widget_ref (l_about); 2411 gtk_object_set_data_full (GTK_OBJECT (admin), "l_about", l_about, 2412 (GtkDestroyNotify) gtk_widget_unref); 2413 gtk_widget_show (l_about); 2414#if GTK_CHECK_VERSION(2,0,0) 2415 gtk_fixed_put (GTK_FIXED (fixed7), l_about, 8, 32); 2416 gtk_widget_set_uposition (l_about, 8, 32); 2417#else 2418 gtk_fixed_put (GTK_FIXED (fixed7), l_about, 8, 8); 2419 gtk_widget_set_uposition (l_about, 8, 8); 2420#endif 2421 gtk_widget_set_usize (l_about, 280, 16); 2422 gtk_label_set_justify (GTK_LABEL (l_about), GTK_JUSTIFY_LEFT); 2423 2424 scrolledwindow6 = gtk_scrolled_window_new (NULL, NULL); 2425 gtk_widget_ref (scrolledwindow6); 2426 gtk_object_set_data_full (GTK_OBJECT (admin), "scrolledwindow6", 2427 scrolledwindow6, (GtkDestroyNotify) gtk_widget_unref); 2428 gtk_widget_show (scrolledwindow6); 2429#if GTK_CHECK_VERSION(2,0,0) 2430 gtk_fixed_put (GTK_FIXED (fixed7), scrolledwindow6, 8, 48); 2431 gtk_widget_set_uposition (scrolledwindow6, 8, 48); 2432#else 2433 gtk_fixed_put (GTK_FIXED (fixed7), scrolledwindow6, 8, 24); 2434 gtk_widget_set_uposition (scrolledwindow6, 8, 24); 2435#endif 2436 gtk_widget_set_usize (scrolledwindow6, 536, 232); 2437 2438 clist6 = gtk_clist_new (5); 2439 gtk_widget_ref (clist6); 2440 gtk_object_set_data_full (GTK_OBJECT (admin), "clist6", clist6, 2441 (GtkDestroyNotify) gtk_widget_unref); 2442 gtk_widget_show (clist6); 2443 gtk_container_add (GTK_CONTAINER (scrolledwindow6), clist6); 2444 gtk_clist_set_column_width (GTK_CLIST (clist6), 0, 80); 2445 gtk_clist_set_column_width (GTK_CLIST (clist6), 1, 80); 2446 gtk_clist_set_column_width (GTK_CLIST (clist6), 2, 131); 2447 gtk_clist_set_column_width (GTK_CLIST (clist6), 3, 91); 2448 gtk_clist_set_column_width (GTK_CLIST (clist6), 4, 80); 2449 gtk_clist_column_titles_show (GTK_CLIST (clist6)); 2450 2451 l_name = gtk_label_new (szDriverColumnNames[0]); 2452 gtk_widget_ref (l_name); 2453 gtk_object_set_data_full (GTK_OBJECT (admin), "l_name", l_name, 2454 (GtkDestroyNotify) gtk_widget_unref); 2455 gtk_widget_show (l_name); 2456 gtk_clist_set_column_widget (GTK_CLIST (clist6), 0, l_name); 2457 2458 l_version = gtk_label_new (szDriverColumnNames[4]); 2459 gtk_widget_ref (l_version); 2460 gtk_object_set_data_full (GTK_OBJECT (admin), "l_version", l_version, 2461 (GtkDestroyNotify) gtk_widget_unref); 2462 gtk_widget_show (l_version); 2463 gtk_clist_set_column_widget (GTK_CLIST (clist6), 1, l_version); 2464 2465 l_file = gtk_label_new (szDriverColumnNames[1]); 2466 gtk_widget_ref (l_file); 2467 gtk_object_set_data_full (GTK_OBJECT (admin), "l_file", l_file, 2468 (GtkDestroyNotify) gtk_widget_unref); 2469 gtk_widget_show (l_file); 2470 gtk_clist_set_column_widget (GTK_CLIST (clist6), 2, l_file); 2471 2472 l_date = gtk_label_new (szDriverColumnNames[2]); 2473 gtk_widget_ref (l_date); 2474 gtk_object_set_data_full (GTK_OBJECT (admin), "l_date", l_date, 2475 (GtkDestroyNotify) gtk_widget_unref); 2476 gtk_widget_show (l_date); 2477 gtk_clist_set_column_widget (GTK_CLIST (clist6), 3, l_date); 2478 2479 l_size = gtk_label_new (szDriverColumnNames[3]); 2480 gtk_widget_ref (l_size); 2481 gtk_object_set_data_full (GTK_OBJECT (admin), "l_size", l_size, 2482 (GtkDestroyNotify) gtk_widget_unref); 2483 gtk_widget_show (l_size); 2484 gtk_clist_set_column_widget (GTK_CLIST (clist6), 4, l_size); 2485 2486 fabout = gtk_label_new (szTabNames[6]); 2487 gtk_widget_ref (fabout); 2488 gtk_object_set_data_full (GTK_OBJECT (admin), "fabout", fabout, 2489 (GtkDestroyNotify) gtk_widget_unref); 2490 gtk_widget_show (fabout); 2491 gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), 2492 gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 6), fabout); 2493 2494 dialog_action_area1 = GTK_DIALOG (admin)->action_area; 2495 gtk_object_set_data (GTK_OBJECT (admin), "dialog_action_area1", 2496 dialog_action_area1); 2497 gtk_widget_show (dialog_action_area1); 2498 gtk_container_set_border_width (GTK_CONTAINER (dialog_action_area1), 5); 2499 2500 hbuttonbox1 = gtk_hbutton_box_new (); 2501 gtk_widget_ref (hbuttonbox1); 2502 gtk_object_set_data_full (GTK_OBJECT (admin), "hbuttonbox1", hbuttonbox1, 2503 (GtkDestroyNotify) gtk_widget_unref); 2504 gtk_widget_show (hbuttonbox1); 2505 gtk_box_pack_start (GTK_BOX (dialog_action_area1), hbuttonbox1, TRUE, TRUE, 2506 0); 2507 gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox1), GTK_BUTTONBOX_END); 2508 gtk_button_box_set_spacing (GTK_BUTTON_BOX (hbuttonbox1), 10); 2509 2510 b_ok = gtk_button_new_with_label (""); 2511 b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_ok)->child), "_Ok"); 2512 gtk_widget_add_accelerator (b_ok, "clicked", accel_group, 2513 b_key, GDK_MOD1_MASK, 0); 2514 gtk_widget_ref (b_ok); 2515 gtk_object_set_data_full (GTK_OBJECT (admin), "b_ok", b_ok, 2516 (GtkDestroyNotify) gtk_widget_unref); 2517 gtk_widget_show (b_ok); 2518 gtk_container_add (GTK_CONTAINER (hbuttonbox1), b_ok); 2519 GTK_WIDGET_SET_FLAGS (b_ok, GTK_CAN_DEFAULT); 2520 gtk_widget_add_accelerator (b_ok, "clicked", accel_group, 2521 'O', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE); 2522 2523 b_cancel = gtk_button_new_with_label (""); 2524 b_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_cancel)->child), 2525 "_Cancel"); 2526 gtk_widget_add_accelerator (b_cancel, "clicked", accel_group, 2527 b_key, GDK_MOD1_MASK, 0); 2528 gtk_widget_ref (b_cancel); 2529 gtk_object_set_data_full (GTK_OBJECT (admin), "b_cancel", b_cancel, 2530 (GtkDestroyNotify) gtk_widget_unref); 2531 gtk_widget_show (b_cancel); 2532 gtk_container_add (GTK_CONTAINER (hbuttonbox1), b_cancel); 2533 GTK_WIDGET_SET_FLAGS (b_cancel, GTK_CAN_DEFAULT); 2534 gtk_widget_add_accelerator (b_cancel, "clicked", accel_group, 2535 'C', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE); 2536 2537 /* Notebook events */ 2538 gtk_signal_connect_after (GTK_OBJECT (notebook1), "switch_page", 2539 GTK_SIGNAL_FUNC (admin_switch_page), inparams); 2540 /* Ok button events */ 2541 gtk_signal_connect (GTK_OBJECT (b_ok), "clicked", 2542 GTK_SIGNAL_FUNC (admin_ok_clicked), inparams); 2543 /* Cancel button events */ 2544 gtk_signal_connect (GTK_OBJECT (b_cancel), "clicked", 2545 GTK_SIGNAL_FUNC (admin_cancel_clicked), inparams); 2546 /* Close window button events */ 2547 gtk_signal_connect (GTK_OBJECT (admin), "delete_event", 2548 GTK_SIGNAL_FUNC (delete_event), inparams); 2549 gtk_signal_connect (GTK_OBJECT (admin), "destroy", 2550 GTK_SIGNAL_FUNC (gtk_main_quit), NULL); 2551 /* Add user DSN button events */ 2552 gtk_signal_connect (GTK_OBJECT (dsnchoose_t.uadd), "clicked", 2553 GTK_SIGNAL_FUNC (userdsn_add_clicked), &dsnchoose_t); 2554 /* Remove user DSN button events */ 2555 gtk_signal_connect (GTK_OBJECT (dsnchoose_t.uremove), "clicked", 2556 GTK_SIGNAL_FUNC (userdsn_remove_clicked), &dsnchoose_t); 2557 /* Test user DSN button events */ 2558 gtk_signal_connect (GTK_OBJECT (dsnchoose_t.utest), "clicked", 2559 GTK_SIGNAL_FUNC (userdsn_test_clicked), &dsnchoose_t); 2560 /* Configure user DSN button events */ 2561 gtk_signal_connect (GTK_OBJECT (dsnchoose_t.uconfigure), "clicked", 2562 GTK_SIGNAL_FUNC (userdsn_configure_clicked), &dsnchoose_t); 2563 /* Add system DSN button events */ 2564 gtk_signal_connect (GTK_OBJECT (dsnchoose_t.sadd), "clicked", 2565 GTK_SIGNAL_FUNC (systemdsn_add_clicked), &dsnchoose_t); 2566 /* Remove system DSN button events */ 2567 gtk_signal_connect (GTK_OBJECT (dsnchoose_t.sremove), "clicked", 2568 GTK_SIGNAL_FUNC (systemdsn_remove_clicked), &dsnchoose_t); 2569 /* Test system DSN button events */ 2570 gtk_signal_connect (GTK_OBJECT (dsnchoose_t.stest), "clicked", 2571 GTK_SIGNAL_FUNC (systemdsn_test_clicked), &dsnchoose_t); 2572 /* Configure system DSN button events */ 2573 gtk_signal_connect (GTK_OBJECT (dsnchoose_t.sconfigure), "clicked", 2574 GTK_SIGNAL_FUNC (systemdsn_configure_clicked), &dsnchoose_t); 2575 2576 /* Add file DSN button events */ 2577 gtk_signal_connect (GTK_OBJECT (dsnchoose_t.fadd), "clicked", 2578 GTK_SIGNAL_FUNC (filedsn_add_clicked), 2579 &dsnchoose_t); 2580 /* Remove file DSN button events */ 2581 gtk_signal_connect (GTK_OBJECT (dsnchoose_t.fremove), "clicked", 2582 GTK_SIGNAL_FUNC (filedsn_remove_clicked), 2583 &dsnchoose_t); 2584 /* Test file DSN button events */ 2585 gtk_signal_connect (GTK_OBJECT (dsnchoose_t.ftest), "clicked", 2586 GTK_SIGNAL_FUNC (filedsn_test_clicked), 2587 &dsnchoose_t); 2588 /* Configure file DSN button events */ 2589 gtk_signal_connect (GTK_OBJECT (dsnchoose_t.fconfigure), "clicked", 2590 GTK_SIGNAL_FUNC (filedsn_configure_clicked), 2591 &dsnchoose_t); 2592 /* Configure file DSN button events */ 2593 gtk_signal_connect (GTK_OBJECT (dsnchoose_t.fsetdir), "clicked", 2594 GTK_SIGNAL_FUNC (filedsn_setdir_clicked), 2595 &dsnchoose_t); 2596 /* Add driver button events */ 2597 gtk_signal_connect (GTK_OBJECT (driverchoose_t.b_add), "clicked", 2598 GTK_SIGNAL_FUNC (driver_add_clicked), &driverchoose_t); 2599 /* Remove driver button events */ 2600 gtk_signal_connect (GTK_OBJECT (driverchoose_t.b_remove), "clicked", 2601 GTK_SIGNAL_FUNC (driver_remove_clicked), &driverchoose_t); 2602 /* Configure driver button events */ 2603 gtk_signal_connect (GTK_OBJECT (driverchoose_t.b_configure), "clicked", 2604 GTK_SIGNAL_FUNC (driver_configure_clicked), &driverchoose_t); 2605 /* User DSN list events */ 2606 gtk_signal_connect (GTK_OBJECT (clist1), "select_row", 2607 GTK_SIGNAL_FUNC (userdsn_list_select), &dsnchoose_t); 2608 gtk_signal_connect (GTK_OBJECT (clist1), "unselect_row", 2609 GTK_SIGNAL_FUNC (userdsn_list_unselect), &dsnchoose_t); 2610 /* System DSN list events */ 2611 gtk_signal_connect (GTK_OBJECT (clist2), "select_row", 2612 GTK_SIGNAL_FUNC (systemdsn_list_select), &dsnchoose_t); 2613 gtk_signal_connect (GTK_OBJECT (clist2), "unselect_row", 2614 GTK_SIGNAL_FUNC (systemdsn_list_unselect), &dsnchoose_t); 2615 /* Directories file DSN list events */ 2616 gtk_signal_connect (GTK_OBJECT (clist3), "select_row", 2617 GTK_SIGNAL_FUNC (filedsn_dirlist_select), 2618 &dsnchoose_t); 2619 /* Files file DSN list events */ 2620 gtk_signal_connect (GTK_OBJECT (clist4), "select_row", 2621 GTK_SIGNAL_FUNC (filedsn_filelist_select), 2622 &dsnchoose_t); 2623 gtk_signal_connect (GTK_OBJECT (clist4), "unselect_row", 2624 GTK_SIGNAL_FUNC (filedsn_filelist_unselect), 2625 &dsnchoose_t); 2626 /* Start tracing button events */ 2627 gtk_signal_connect (GTK_OBJECT (b_start), "clicked", 2628 GTK_SIGNAL_FUNC (tracing_start_clicked), &tracing_t); 2629 /* Browse file entry events */ 2630 gtk_signal_connect (GTK_OBJECT (b_browse), "clicked", 2631 GTK_SIGNAL_FUNC (tracing_browse_clicked), &tracing_t); 2632 /* Driver list events */ 2633 gtk_signal_connect (GTK_OBJECT (clist5), "select_row", 2634 GTK_SIGNAL_FUNC (driver_list_select), &driverchoose_t); 2635 gtk_signal_connect (GTK_OBJECT (clist5), "unselect_row", 2636 GTK_SIGNAL_FUNC (driver_list_unselect), &driverchoose_t); 2637 /* Connection pooling list events */ 2638 gtk_signal_connect (GTK_OBJECT (clist7), "select_row", 2639 GTK_SIGNAL_FUNC (cpdriver_list_select), &connectionpool_t); 2640 2641 gtk_window_add_accel_group (GTK_WINDOW (admin), accel_group); 2642 2643 SQLSetConfigMode (ODBC_BOTH_DSN); 2644 if (!SQLGetPrivateProfileString("ODBC", "FileDSNPath", "", 2645 dsnchoose_t.curr_dir, sizeof(dsnchoose_t.curr_dir), "odbcinst.ini")) 2646 strcpy(dsnchoose_t.curr_dir, DEFAULT_FILEDSNPATH); 2647 2648 adddsns_to_list (clist1, FALSE); 2649 component_t.componentlist = clist6; 2650 2651 inparams[0] = &dsnchoose_t; 2652 inparams[1] = &driverchoose_t; 2653 inparams[2] = &tracing_t; 2654 inparams[3] = &component_t; 2655 inparams[4] = &connectionpool_t; 2656 inparams[5] = admin; 2657 2658 gtk_widget_show_all (admin); 2659 gtk_main (); 2660} 2661