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