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 + -
显示快捷键?