dsnchooser.c

来自「一个可以替代windows ODBC驱动程序管理器的通用ODBC数据库引擎」· C语言 代码 · 共 1,772 行 · 第 1/4 页

C
1,772
字号
  gtk_clist_set_column_width (GTK_CLIST (clist1), 0, 100);  gtk_clist_set_column_width (GTK_CLIST (clist1), 1, 162);  gtk_clist_set_column_width (GTK_CLIST (clist1), 2, 80);  gtk_clist_column_titles_show (GTK_CLIST (clist1));  l_name = gtk_label_new (szDSNColumnNames[0]);  gtk_widget_ref (l_name);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "l_name", l_name,      (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (l_name);  gtk_clist_set_column_widget (GTK_CLIST (clist1), 0, l_name);  l_description = gtk_label_new (szDSNColumnNames[1]);  gtk_widget_ref (l_description);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "l_description",      l_description, (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (l_description);  gtk_clist_set_column_widget (GTK_CLIST (clist1), 1, l_description);  l_driver = gtk_label_new (szDSNColumnNames[2]);  gtk_widget_ref (l_driver);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "l_driver", l_driver,      (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (l_driver);  gtk_clist_set_column_widget (GTK_CLIST (clist1), 2, l_driver);  l_usdsn = gtk_label_new ("User Data Sources :");  gtk_widget_ref (l_usdsn);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "l_usdsn", l_usdsn,      (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (l_usdsn);  gtk_fixed_put (GTK_FIXED (fixed1), l_usdsn, 8, 8);  gtk_widget_set_uposition (l_usdsn, 8, 8);  gtk_widget_set_usize (l_usdsn, 112, 16);  gtk_label_set_justify (GTK_LABEL (l_usdsn), GTK_JUSTIFY_LEFT);  frame1 = gtk_frame_new (NULL);  gtk_widget_ref (frame1);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "frame1", frame1,      (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (frame1);  gtk_fixed_put (GTK_FIXED (fixed1), frame1, 8, 264);  gtk_widget_set_uposition (frame1, 8, 264);  gtk_widget_set_usize (frame1, 546, 64);  table1 = gtk_table_new (1, 2, FALSE);  gtk_widget_ref (table1);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "table1", table1,      (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (table1);  gtk_container_add (GTK_CONTAINER (frame1), table1);  gtk_container_set_border_width (GTK_CONTAINER (table1), 6);  gtk_table_set_row_spacings (GTK_TABLE (table1), 6);  gtk_table_set_col_spacings (GTK_TABLE (table1), 6);  l_explanation =      gtk_label_new      ("An ODBC User data source stores information about how to connect to\nthe indicated data provider. A User data source is only available to you,\nand can only be used on the current machine.");  gtk_widget_ref (l_explanation);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "l_explanation",      l_explanation, (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (l_explanation);  gtk_table_attach (GTK_TABLE (table1), l_explanation, 1, 2, 0, 1,      (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0);  gtk_label_set_justify (GTK_LABEL (l_explanation), GTK_JUSTIFY_LEFT);  style = gtk_widget_get_style (GTK_WIDGET (hwnd));  pixmap =      gdk_pixmap_create_from_xpm_d (GTK_WIDGET (hwnd)->window, &mask,      &style->bg[GTK_STATE_NORMAL], (gchar **) odbc4_xpm);  pixmap1 = gtk_pixmap_new (pixmap, mask);  gtk_widget_ref (pixmap1);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "pixmap1", pixmap1,      (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (pixmap1);  gtk_table_attach (GTK_TABLE (table1), pixmap1, 0, 1, 0, 1,      (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0);  vbuttonbox1 = gtk_vbutton_box_new ();  gtk_widget_ref (vbuttonbox1);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "vbuttonbox1",      vbuttonbox1, (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (vbuttonbox1);  gtk_fixed_put (GTK_FIXED (fixed1), vbuttonbox1, 472, 16);  gtk_widget_set_uposition (vbuttonbox1, 472, 16);  gtk_widget_set_usize (vbuttonbox1, 85, 135);  b_add = gtk_button_new_with_label ("");  b_add_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_add)->child),      szDSNButtons[0]);  gtk_widget_add_accelerator (b_add, "clicked", accel_group,      b_add_key, GDK_MOD1_MASK, 0);  gtk_widget_ref (b_add);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "b_add", b_add,      (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (b_add);  gtk_container_add (GTK_CONTAINER (vbuttonbox1), b_add);  GTK_WIDGET_SET_FLAGS (b_add, GTK_CAN_DEFAULT);  gtk_widget_add_accelerator (b_add, "clicked", accel_group,      'A', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);  b_remove = gtk_button_new_with_label ("");  b_remove_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_remove)->child),      szDSNButtons[1]);  gtk_widget_add_accelerator (b_remove, "clicked", accel_group,      b_remove_key, GDK_MOD1_MASK, 0);  gtk_widget_ref (b_remove);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "b_remove", b_remove,      (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (b_remove);  gtk_container_add (GTK_CONTAINER (vbuttonbox1), b_remove);  GTK_WIDGET_SET_FLAGS (b_remove, GTK_CAN_DEFAULT);  gtk_widget_add_accelerator (b_remove, "clicked", accel_group,      'R', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);  gtk_widget_set_sensitive (b_remove, FALSE);  b_configure = gtk_button_new_with_label ("");  b_configure_key =      gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_configure)->child),      szDSNButtons[2]);  gtk_widget_add_accelerator (b_configure, "clicked", accel_group,      b_configure_key, GDK_MOD1_MASK, 0);  gtk_widget_ref (b_configure);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "b_configure",      b_configure, (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (b_configure);  gtk_container_add (GTK_CONTAINER (vbuttonbox1), b_configure);  GTK_WIDGET_SET_FLAGS (b_configure, GTK_CAN_DEFAULT);  gtk_widget_add_accelerator (b_configure, "clicked", accel_group,      'G', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);  gtk_widget_set_sensitive (b_configure, FALSE);  b_test = gtk_button_new_with_label ("");  b_test_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_test)->child),      szDSNButtons[3]);  gtk_widget_add_accelerator (b_test, "clicked", accel_group,      b_test_key, GDK_MOD1_MASK, 0);  gtk_widget_ref (b_test);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "b_test", b_test,      (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (b_test);  gtk_container_add (GTK_CONTAINER (vbuttonbox1), b_test);  GTK_WIDGET_SET_FLAGS (b_test, GTK_CAN_DEFAULT);  gtk_widget_add_accelerator (b_test, "clicked", accel_group,      'T', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);  gtk_widget_set_sensitive (b_test, FALSE);  choose_t->uadd = b_add;  choose_t->uremove = b_remove;  choose_t->utest = b_test;  choose_t->uconfigure = b_configure;  udsn = gtk_label_new (szTabNames[0]);  gtk_widget_ref (udsn);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "udsn", udsn,      (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (udsn);  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1),      gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 0), udsn);  fixed2 = gtk_fixed_new ();  gtk_widget_ref (fixed2);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "fixed2", fixed2,      (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (fixed2);  gtk_container_add (GTK_CONTAINER (notebook1), fixed2);  gtk_container_set_border_width (GTK_CONTAINER (fixed2), 6);  scrolledwindow2 = gtk_scrolled_window_new (NULL, NULL);  gtk_widget_ref (scrolledwindow2);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "scrolledwindow2",      scrolledwindow2, (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (scrolledwindow2);  gtk_widget_set_usize (scrolledwindow2, 456, 232);  gtk_fixed_put (GTK_FIXED (fixed2), scrolledwindow2, 3, 19);  clist2 = gtk_clist_new (3);  gtk_widget_ref (clist2);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "clist2", clist2,      (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (clist2);  gtk_container_add (GTK_CONTAINER (scrolledwindow2), clist2);  gtk_clist_set_column_width (GTK_CLIST (clist2), 0, 100);  gtk_clist_set_column_width (GTK_CLIST (clist2), 1, 163);  gtk_clist_set_column_width (GTK_CLIST (clist2), 2, 80);  gtk_clist_column_titles_show (GTK_CLIST (clist2));  l_name = gtk_label_new (szDSNColumnNames[0]);  gtk_widget_ref (l_name);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "l_name", l_name,      (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (l_name);  gtk_clist_set_column_widget (GTK_CLIST (clist2), 0, l_name);  l_description = gtk_label_new (szDSNColumnNames[1]);  gtk_widget_ref (l_description);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "l_description",      l_description, (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (l_description);  gtk_clist_set_column_widget (GTK_CLIST (clist2), 1, l_description);  l_driver = gtk_label_new (szDSNColumnNames[2]);  gtk_widget_ref (l_driver);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "l_driver", l_driver,      (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (l_driver);  gtk_clist_set_column_widget (GTK_CLIST (clist2), 2, l_driver);  l_sdsn = gtk_label_new ("System Data Sources :");  gtk_widget_ref (l_sdsn);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "l_sdsn", l_sdsn,      (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (l_sdsn);  gtk_fixed_put (GTK_FIXED (fixed2), l_sdsn, 8, 8);  gtk_widget_set_uposition (l_sdsn, 8, 8);  gtk_widget_set_usize (l_sdsn, 130, 16);  gtk_label_set_justify (GTK_LABEL (l_sdsn), GTK_JUSTIFY_LEFT);  frame2 = gtk_frame_new (NULL);  gtk_widget_ref (frame2);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "frame2", frame2,      (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (frame2);  gtk_fixed_put (GTK_FIXED (fixed2), frame2, 8, 264);  gtk_widget_set_uposition (frame2, 8, 264);  gtk_widget_set_usize (frame2, 546, 64);  table2 = gtk_table_new (1, 2, FALSE);  gtk_widget_ref (table2);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "table2", table2,      (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (table2);  gtk_container_add (GTK_CONTAINER (frame2), table2);  gtk_container_set_border_width (GTK_CONTAINER (table2), 6);  gtk_table_set_row_spacings (GTK_TABLE (table2), 6);  gtk_table_set_col_spacings (GTK_TABLE (table2), 6);  l_explanation =      gtk_label_new      ("An ODBC System data source stores information about how to connect\nto the indicated data provider. A system data source is visible to all\nusers on this machine, including daemons.");  gtk_widget_ref (l_explanation);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "l_explanation",      l_explanation, (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (l_explanation);  gtk_table_attach (GTK_TABLE (table2), l_explanation, 1, 2, 0, 1,      (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0);  gtk_label_set_justify (GTK_LABEL (l_explanation), GTK_JUSTIFY_LEFT);  pixmap2 = gtk_pixmap_new (pixmap, mask);  gtk_widget_ref (pixmap2);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "pixmap2", pixmap2,      (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (pixmap2);  gtk_table_attach (GTK_TABLE (table2), pixmap2, 0, 1, 0, 1,      (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0);  vbuttonbox2 = gtk_vbutton_box_new ();  gtk_widget_ref (vbuttonbox2);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "vbuttonbox2",      vbuttonbox2, (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (vbuttonbox2);  gtk_fixed_put (GTK_FIXED (fixed2), vbuttonbox2, 472, 16);  gtk_widget_set_uposition (vbuttonbox2, 472, 16);  gtk_widget_set_usize (vbuttonbox2, 85, 135);  b_add = gtk_button_new_with_label ("");  b_add_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_add)->child),      szDSNButtons[0]);  gtk_widget_add_accelerator (b_add, "clicked", accel_group,      b_add_key, GDK_MOD1_MASK, 0);  gtk_widget_ref (b_add);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "b_add", b_add,      (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (b_add);  gtk_container_add (GTK_CONTAINER (vbuttonbox2), b_add);  GTK_WIDGET_SET_FLAGS (b_add, GTK_CAN_DEFAULT);  gtk_widget_add_accelerator (b_add, "clicked", accel_group,      'A', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);  b_remove = gtk_button_new_with_label ("");  b_remove_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_remove)->child),      szDSNButtons[1]);  gtk_widget_add_accelerator (b_remove, "clicked", accel_group,      b_remove_key, GDK_MOD1_MASK, 0);  gtk_widget_ref (b_remove);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "b_remove", b_remove,      (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (b_remove);  gtk_container_add (GTK_CONTAINER (vbuttonbox2), b_remove);  GTK_WIDGET_SET_FLAGS (b_remove, GTK_CAN_DEFAULT);  gtk_widget_add_accelerator (b_remove, "clicked", accel_group,      'R', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);  gtk_widget_set_sensitive (b_remove, FALSE);  b_configure = gtk_button_new_with_label ("");  b_configure_key =      gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_configure)->child),      szDSNButtons[2]);  gtk_widget_add_accelerator (b_configure, "clicked", accel_group,      b_configure_key, GDK_MOD1_MASK, 0);  gtk_widget_ref (b_configure);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "b_configure",      b_configure, (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (b_configure);  gtk_container_add (GTK_CONTAINER (vbuttonbox2), b_configure);  GTK_WIDGET_SET_FLAGS (b_configure, GTK_CAN_DEFAULT);  gtk_widget_add_accelerator (b_configure, "clicked", accel_group,      'G', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);  gtk_widget_set_sensitive (b_configure, FALSE);  b_test = gtk_button_new_with_label ("");  b_test_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_test)->child),      szDSNButtons[3]);  gtk_widget_add_accelerator (b_test, "clicked", accel_group,      b_test_key, GDK_MOD1_MASK, 0);  gtk_widget_ref (b_test);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "b_test", b_test,      (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (b_test);  gtk_container_add (GTK_CONTAINER (vbuttonbox2), b_test);  GTK_WIDGET_SET_FLAGS (b_test, GTK_CAN_DEFAULT);  gtk_widget_add_accelerator (b_test, "clicked", accel_group,      'T', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);  gtk_widget_set_sensitive (b_test, FALSE);  choose_t->sadd = b_add;  choose_t->sremove = b_remove;  choose_t->stest = b_test;  choose_t->sconfigure = b_configure;  sdsn = gtk_label_new (szTabNames[1]);  gtk_widget_ref (sdsn);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "sdsn", sdsn,      (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (sdsn);  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1),      gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 1), sdsn);  dialog_action_area1 = GTK_DIALOG (dsnchooser)->action_area;  gtk_object_set_data (GTK_OBJECT (dsnchooser), "dialog_action_area1",      dialog_action_area1);  gtk_widget_show (dialog_action_area1);  gtk_container_set_border_width (GTK_CONTAINER (dialog_action_area1), 5);  hbuttonbox1 = gtk_hbutton_box_new ();  gtk_widget_ref (hbuttonbox1);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "hbuttonbox1",      hbuttonbox1, (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (hbuttonbox1);  gtk_box_pack_start (GTK_BOX (dialog_action_area1), hbuttonbox1, TRUE, TRUE,      0);  gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox1), GTK_BUTTONBOX_END);  gtk_button_box_set_spacing (GTK_BUTTON_BOX (hbuttonbox1), 10);  b_ok = gtk_button_new_with_label ("");  b_ok_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_ok)->child), "_Ok");  gtk_widget_add_accelerator (b_ok, "clicked", accel_group,      b_ok_key, GDK_MOD1_MASK, 0);  gtk_widget_ref (b_ok);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "b_ok", b_ok,      (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (b_ok);  gtk_container_add (GTK_CONTAINER (hbuttonbox1), b_ok);  GTK_WIDGET_SET_FLAGS (b_ok, GTK_CAN_DEFAULT);  gtk_widget_add_accelerator (b_ok, "clicked", accel_group,      'O', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);  b_cancel = gtk_button_new_with_label ("");  b_cancel_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (b_cancel)->child),      "_Cancel");  gtk_widget_add_accelerator (b_cancel, "clicked", accel_group,      b_cancel_key, GDK_MOD1_MASK, 0);  gtk_widget_ref (b_cancel);  gtk_object_set_data_full (GTK_OBJECT (dsnchooser), "b_cancel", b_cancel,      (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (b_cancel);  gtk_container_add (GTK_CONTAINER (hbuttonbox1), b_cancel);  GTK_WIDGET_SET_FLAGS (b_cancel, GTK_CAN_DEFAULT);  gtk_widget_add_accelerator (b_cancel, "clicked", accel_group,      'C', GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);  /* Notebook events */  gtk_signal_connect_after (GTK_OBJECT (notebook1), "switch_page",      GTK_SIGNAL_FUNC (dsnchooser_switch_page), choose_t);  /* Ok button events */  gtk_signal_connect (GTK_OBJECT (b_ok), "clicked",      GTK_SIGNAL_FUNC (dsnchooser_ok_clicked), choose_t);  /* Cancel button events */  gtk_signal_connect (GTK_OBJECT (b_cancel), "clicked",      GTK_SIGNAL_FUNC (dsnchooser_cancel_clicked), choose_t);  /* Close window button events */  gtk_signal_connect (GTK_OBJECT (dsnchooser), "delete_event",      GTK_SIGNAL_FUNC (delete_event), choose_t);  gtk_signal_connect (GTK_OBJECT (dsnchooser), "destroy",      GTK_SIGNAL_FUNC (gtk_main_quit), NULL);  /* Add user DSN button events */  gtk_signal_connect (GTK_OBJECT (choose_t->uadd), "clicked",      GTK_SIGNAL_FUNC (userdsn_add_clicked), choose_t);  /* Remove user DSN button events */  gtk_signal_connect (GTK_OBJECT (choose_t->uremove), "clicked",      GTK_SIGNAL_FUNC (userdsn_remove_clicked), choose_t);  /* Test user DSN button events */  gtk_signal_connect (GTK_OBJECT (choose_t->utest), "clicked",      GTK_SIGNAL_FUNC (userdsn_test_clicked), choose_t);  /* Configure user DSN button events */  gtk_signal_connect (GTK_OBJECT (choose_t->uconfigure), "clicked",      GTK_SIGNAL_FUNC (userdsn_configure_clicked), choose_t);  /* Add system DSN button events */  gtk_signal_connect (GTK_OBJECT (choose_t->sadd), "clicked",      GTK_SIGNAL_FUNC (systemdsn_add_clicked), choose_t);  /* Remove system DSN button events */  gtk_signal_connect (GTK_OBJECT (choose_t->sremove), "clicked",      GTK_SIGNAL_FUNC (systemdsn_remove_clicked), choose_t);  /* Test system DSN button events */  gtk_signal_connect (GTK_OBJECT (choose_t->stest), "clicked",      GTK_SIGNAL_FUNC (systemdsn_test_clicked), choose_t);  /* Configure system DSN button events */  gtk_signal_connect (GTK_OBJECT (choose_t->sconfigure), "clicked",      GTK_SIGNAL_FUNC (systemdsn_configure_clicked), choose_t);  /* User DSN list events */  gtk_signal_connect (GTK_OBJECT (clist1), "select_row",      GTK_SIGNAL_FUNC (userdsn_list_select), choose_t);  gtk_signal_connect (GTK_OBJECT (clist1), "unselect_row",      GTK_SIGNAL_FUNC (userdsn_list_unselect), choose_t);  /* System DSN list events */  gtk_signal_connect (GTK_OBJECT (clist2), "select_row",      GTK_SIGNAL_FUNC (systemdsn_list_select), choose_t);  gtk_signal_connect (GTK_OBJECT (clist2), "unselect_row",      GTK_SIGNAL_FUNC (systemdsn_list_unselect), choose_t);  gtk_window_add_accel_group (GTK_WINDOW (dsnchooser), accel_group);  adddsns_to_list (clist1, FALSE);  choose_t->udsnlist = clist1;  choose_t->sdsnlist = clist2;  choose_t->type_dsn = 0;  choose_t->mainwnd = dsnchooser;  gtk_widget_show_all (dsnchooser);  gtk_main ();}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?