administrator.c
来自「一个可以替代windows ODBC驱动程序管理器的通用ODBC数据库引擎」· C语言 代码 · 共 1,788 行 · 第 1/5 页
C
1,788 行
gtk_widget_set_sensitive (dsnchoose_t->sremove, FALSE); if (dsnchoose_t->sconfigure) gtk_widget_set_sensitive (dsnchoose_t->sconfigure, FALSE); if (dsnchoose_t->stest) gtk_widget_set_sensitive (dsnchoose_t->stest, FALSE); /*if(dsnchoose_t->fremove) gtk_widget_set_sensitive(dsnchoose_t->fremove,FALSE); if(dsnchoose_t->fconfigure) gtk_widget_set_sensitive(dsnchoose_t->fconfigure,FALSE); if(dsnchoose_t->ftest) gtk_widget_set_sensitive(dsnchoose_t->ftest,FALSE); */ }}static voidtracing_start_clicked (GtkWidget *widget, TTRACING *tracing_t){ if (tracing_t) { /* Write keywords for tracing in the ini file */ SQLWritePrivateProfileString ("ODBC", "Trace", (GTK_TOGGLE_BUTTON (tracing_t->donttrace_rb)->active) ? "0" : "1", NULL); SQLWritePrivateProfileString ("ODBC", "TraceAutoStop", (GTK_TOGGLE_BUTTON (tracing_t->allthetime_rb)->active) ? "0" : "1", NULL); if (STRLEN (gtk_entry_get_text (GTK_ENTRY (tracing_t->logfile_entry)))) SQLWritePrivateProfileString ("ODBC", "TraceFile", gtk_entry_get_text (GTK_ENTRY (tracing_t->logfile_entry)), NULL); }}static voidtracing_logfile_choosen (GtkWidget *widget, TTRACING *tracing_t){ if (tracing_t) { gtk_entry_set_text (GTK_ENTRY (tracing_t->logfile_entry), gtk_file_selection_get_filename (GTK_FILE_SELECTION (tracing_t-> filesel))); tracing_t->filesel = NULL; }}static voidtracing_browse_clicked (GtkWidget *widget, TTRACING *tracing_t){ GtkWidget *filesel; if (tracing_t) { filesel = gtk_file_selection_new ("Choose your log file ..."); gtk_window_set_modal (GTK_WINDOW (filesel), TRUE); gtk_file_selection_set_filename (GTK_FILE_SELECTION (filesel), gtk_entry_get_text (GTK_ENTRY (tracing_t->logfile_entry))); /* Ok button events */ gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (filesel)-> ok_button), "clicked", GTK_SIGNAL_FUNC (tracing_logfile_choosen), tracing_t); gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (filesel)-> ok_button), "clicked", GTK_SIGNAL_FUNC (gtk_main_quit), NULL); /* Cancel button events */ gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (filesel)-> cancel_button), "clicked", GTK_SIGNAL_FUNC (gtk_main_quit), NULL); /* Close window button events */ gtk_signal_connect (GTK_OBJECT (filesel), "delete_event", GTK_SIGNAL_FUNC (gtk_main_quit), NULL); tracing_t->filesel = filesel; gtk_widget_show_all (filesel); gtk_main (); gtk_widget_destroy (filesel); tracing_t->filesel = NULL; }}static voidcpdriver_list_select (GtkWidget *widget, gint row, gint column, GdkEvent *event, TCONNECTIONPOOLING *connectionpool_t){ char *szDriver = NULL, *cptimeout; char msg[1024] = { 0 }; if (connectionpool_t) { if (GTK_CLIST (connectionpool_t->driverlist)->selection != NULL) { gtk_clist_get_text (GTK_CLIST (connectionpool_t->driverlist), GPOINTER_TO_INT (GTK_CLIST (connectionpool_t->driverlist)-> selection->data), 0, &szDriver); gtk_clist_get_text (GTK_CLIST (connectionpool_t->driverlist), GPOINTER_TO_INT (GTK_CLIST (connectionpool_t->driverlist)-> selection->data), 1, &cptimeout); } if (szDriver && event && event->type == GDK_2BUTTON_PRESS && (cptimeout = create_connectionpool (connectionpool_t->mainwnd, szDriver, cptimeout))) { sprintf (msg, "CPTimeout=%s", cptimeout); if (!SQLConfigDriver (connectionpool_t->mainwnd, ODBC_CONFIG_DRIVER, szDriver, msg, NULL, 0, NULL)) _iodbcdm_errorbox (connectionpool_t->mainwnd, szDriver, "An error occured when trying to set the connection pooling time-out : "); addconnectionpool_to_list (connectionpool_t->driverlist); } }}static voiddriver_list_select (GtkWidget *widget, gint row, gint column, GdkEvent *event, TDRIVERCHOOSER *choose_t){ char *szDriver = NULL; if (choose_t) { if (GTK_CLIST (choose_t->driverlist)->selection != NULL) gtk_clist_get_text (GTK_CLIST (choose_t->driverlist), GPOINTER_TO_INT (GTK_CLIST (choose_t->driverlist)->selection-> data), 0, &szDriver); if (szDriver && event && event->type == GDK_2BUTTON_PRESS) gtk_signal_emit_by_name (GTK_OBJECT (choose_t->b_configure), "clicked", choose_t); else { gtk_widget_set_sensitive (choose_t->b_remove, TRUE); gtk_widget_set_sensitive (choose_t->b_configure, TRUE); } }}static voiddriver_list_unselect (GtkWidget *widget, gint row, gint column, GdkEvent *event, TDRIVERCHOOSER *choose_t){ if (choose_t) { gtk_widget_set_sensitive (choose_t->b_remove, FALSE); gtk_widget_set_sensitive (choose_t->b_configure, FALSE); }}static voiddriver_add_clicked (GtkWidget *widget, TDRIVERCHOOSER *choose_t){ char connstr[4096] = { 0 }, tokenstr[4096] = { 0}; char *szDriver = NULL, *curr, *cour, *cstr; int size = sizeof (connstr); DWORD error; if (choose_t) { cstr = create_driversetup (choose_t->mainwnd, NULL, connstr, FALSE); if (cstr && cstr != connstr && cstr != (LPSTR) - 1L) { SQLSetConfigMode (ODBC_USER_DSN); if (!SQLInstallDriverEx (cstr, NULL, tokenstr, sizeof (tokenstr), NULL, ODBC_INSTALL_COMPLETE, NULL)) { _iodbcdm_errorbox (choose_t->mainwnd, NULL, "An error occured when trying to add the driver : "); goto done; } free (cstr); } adddrivers_to_list (choose_t->driverlist, FALSE); done: if (GTK_CLIST (choose_t->driverlist)->selection == NULL) { if (choose_t->b_remove) gtk_widget_set_sensitive (choose_t->b_remove, FALSE); if (choose_t->b_configure) gtk_widget_set_sensitive (choose_t->b_configure, FALSE); } } return;}static voiddriver_remove_clicked (GtkWidget *widget, TDRIVERCHOOSER *choose_t){ char *szDriver = NULL; DWORD error; if (choose_t) { /* Retrieve the driver name */ if (GTK_CLIST (choose_t->driverlist)->selection != NULL) gtk_clist_get_text (GTK_CLIST (choose_t->driverlist), GPOINTER_TO_INT (GTK_CLIST (choose_t->driverlist)->selection-> data), 0, &szDriver); /* Call the right function */ if (szDriver && create_confirm (choose_t->mainwnd, szDriver, "Are you sure you want to remove this driver ?")) { if (!SQLRemoveDriver (szDriver, create_confirm (choose_t->mainwnd, szDriver, "Do you want to remove all the DSN associated to this driver ?"), NULL)) { _iodbcdm_errorbox (choose_t->mainwnd, szDriver, "An error occured when trying to remove the driver : "); goto done; } adddrivers_to_list (choose_t->driverlist, FALSE); } done: if (GTK_CLIST (choose_t->driverlist)->selection == NULL) { if (choose_t->b_remove) gtk_widget_set_sensitive (choose_t->b_remove, FALSE); if (choose_t->b_configure) gtk_widget_set_sensitive (choose_t->b_configure, FALSE); } } return;}static voiddriver_configure_clicked (GtkWidget *widget, TDRIVERCHOOSER *choose_t){ char connstr[4096] = { 0 }; char tokenstr[4096] = { 0 }; char *szDriver = NULL, *curr, *cour, *cstr; int size = sizeof (connstr); DWORD error; if (choose_t) { /* Retrieve the driver name */ if (GTK_CLIST (choose_t->driverlist)->selection != NULL) gtk_clist_get_text (GTK_CLIST (choose_t->driverlist), GPOINTER_TO_INT (GTK_CLIST (choose_t->driverlist)->selection-> data), 0, &szDriver); /* Call the right function */ if (szDriver) { SQLSetConfigMode (ODBC_USER_DSN); if (!SQLGetPrivateProfileString (szDriver, NULL, "", tokenstr, sizeof (tokenstr), "odbcinst.ini")) { _iodbcdm_errorbox (choose_t->mainwnd, szDriver, "An error occured when trying to configure the driver : "); goto done; } for (curr = tokenstr, cour = connstr; *curr; curr += (STRLEN (curr) + 1), cour += (STRLEN (cour) + 1)) { STRCPY (cour, curr); cour[STRLEN (curr)] = '='; SQLSetConfigMode (ODBC_USER_DSN); SQLGetPrivateProfileString (szDriver, curr, "", cour + STRLEN (curr) + 1, size - STRLEN (curr) - 1, "odbcinst.ini"); size -= (STRLEN (cour) + 1); } *cour = 0; cstr = create_driversetup (choose_t->mainwnd, szDriver, connstr, FALSE); if (cstr && cstr != connstr && cstr != (LPSTR) - 1L) { SQLSetConfigMode (ODBC_USER_DSN); if (!SQLInstallDriverEx (cstr, NULL, tokenstr, sizeof (tokenstr), NULL, ODBC_INSTALL_COMPLETE, NULL)) { _iodbcdm_errorbox (choose_t->mainwnd, NULL, "An error occured when trying to configure the driver : "); goto done; } free (cstr); } adddrivers_to_list (choose_t->driverlist, FALSE); } done: if (GTK_CLIST (choose_t->driverlist)->selection == NULL) { if (choose_t->b_remove) gtk_widget_set_sensitive (choose_t->b_remove, FALSE); if (choose_t->b_configure) gtk_widget_set_sensitive (choose_t->b_configure, FALSE); } } return;}static voidadmin_ok_clicked (GtkWidget *widget, void **inparams){ TDSNCHOOSER *dsnchoose_t = (inparams) ? inparams[0] : NULL; TDRIVERCHOOSER *driverchoose_t = (inparams) ? inparams[1] : NULL; TTRACING *tracing_t = (inparams) ? inparams[2] : NULL; TCOMPONENT *component_t = (inparams) ? inparams[3] : NULL; TCONNECTIONPOOLING *connectionpool_t = (inparams) ? inparams[4] : NULL; GtkWidget *mainwnd = (inparams) ? inparams[5] : NULL; if (dsnchoose_t) { dsnchoose_t->udsnlist = dsnchoose_t->sdsnlist = dsnchoose_t->dir_list = NULL; dsnchoose_t->fadd = dsnchoose_t->fremove = dsnchoose_t->ftest = dsnchoose_t->fconfigure = NULL; dsnchoose_t->uadd = dsnchoose_t->uremove = dsnchoose_t->utest = dsnchoose_t->uconfigure = NULL; dsnchoose_t->sadd = dsnchoose_t->sremove = dsnchoose_t->stest = dsnchoose_t->sconfigure = NULL; dsnchoose_t->file_list = dsnchoose_t->file_entry = dsnchoose_t->dir_combo = NULL; dsnchoose_t->type_dsn = -1; dsnchoose_t->curr_dir = dsnchoose_t->dsn = NULL; } if (driverchoose_t) driverchoose_t->driverlist = NULL; if (component_t) component_t->componentlist = NULL; if (tracing_t) { if (tracing_t->changed) { /* Write keywords for tracing in the ini file */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?