GtkWidget *create_kbm_widget() { if (kbm_widget != NULL) fprintf(stderr, "create_kbm_widget: kbm_widget was not NULL!\n"); load_settings(); GtkWidget *vbox_top = gtk_vbox_new (FALSE, 3); gtk_orientable_set_orientation(GTK_ORIENTABLE(vbox_top), GTK_ORIENTATION_VERTICAL); kbm_widget = vbox_top; GtkWidget *hbox_lr = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox_top), hbox_lr, FALSE, FALSE, 0); GtkWidget *vbox_l = gtk_vbox_new (FALSE, 0); gtk_orientable_set_orientation(GTK_ORIENTABLE(vbox_l), GTK_ORIENTATION_VERTICAL); gtk_container_set_border_width (GTK_CONTAINER (vbox_l), 10); gtk_box_pack_start (GTK_BOX (hbox_lr), vbox_l, TRUE, TRUE, 10); GtkWidget *vbox_r = gtk_vbox_new (FALSE, 0); gtk_orientable_set_orientation(GTK_ORIENTABLE(vbox_r), GTK_ORIENTATION_VERTICAL); gtk_container_set_border_width (GTK_CONTAINER (vbox_r), 10); gtk_box_pack_start (GTK_BOX (hbox_lr), vbox_r, TRUE, TRUE, 10); GtkWidget *frame_kbm = gtk_frame_new(_("鍵盤排列方式/選擇鍵/選單每列字數")); gtk_box_pack_start (GTK_BOX (vbox_l), frame_kbm, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (frame_kbm), 1); gtk_container_add (GTK_CONTAINER (frame_kbm), create_kbm_opts()); gtk_box_pack_start (GTK_BOX (vbox_l), create_en_pho_key_sel(_("(詞音) 切換[中/英]輸入"), 0), FALSE, FALSE, 0); GtkWidget *frame_tsin_space_opt = gtk_frame_new(_("(詞音) 鍵入空白鍵")); gtk_box_pack_start (GTK_BOX (vbox_l), frame_tsin_space_opt, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (frame_tsin_space_opt), 1); GtkWidget *box_tsin_space_opt = gtk_vbox_new (FALSE, 0); gtk_orientable_set_orientation(GTK_ORIENTABLE(box_tsin_space_opt), GTK_ORIENTATION_VERTICAL); gtk_container_add (GTK_CONTAINER (frame_tsin_space_opt), box_tsin_space_opt); gtk_container_set_border_width (GTK_CONTAINER (box_tsin_space_opt), 1); GSList *group_tsin_space_opt = NULL; int current_idx = get_currnet_tsin_space_option_idx(); new_select_idx_tsin_space_opt = current_idx; gsize i; for(i=0; i< tsin_space_optionsN; i++) { GtkWidget *button = gtk_radio_button_new_with_label (group_tsin_space_opt, _(tsin_space_options[i].name)); gtk_box_pack_start (GTK_BOX (box_tsin_space_opt), button, FALSE, FALSE, 0); group_tsin_space_opt = gtk_radio_button_get_group (GTK_RADIO_BUTTON (button)); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (callback_button_clicked_tsin_space_opt), (gpointer) i); if (i==current_idx) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE); } GtkWidget *hbox_tsin_phrase_pre_select = gtk_hbox_new(FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox_l), hbox_tsin_phrase_pre_select , FALSE, FALSE, 1); check_button_tsin_phrase_pre_select = gtk_check_button_new_with_label(_("詞音輸入預選詞視窗")); gtk_box_pack_start (GTK_BOX (hbox_tsin_phrase_pre_select), check_button_tsin_phrase_pre_select, FALSE, FALSE, 0); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(check_button_tsin_phrase_pre_select), tsin_phrase_pre_select); GtkWidget *hbox_phonetic_char_dynamic_sequence = gtk_hbox_new(FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox_l), hbox_phonetic_char_dynamic_sequence , FALSE, FALSE, 1); check_button_phonetic_char_dynamic_sequence = gtk_check_button_new_with_label(_("依使用頻率調整字的順序")); gtk_box_pack_start (GTK_BOX (hbox_phonetic_char_dynamic_sequence), check_button_phonetic_char_dynamic_sequence, FALSE, FALSE, 0); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(check_button_phonetic_char_dynamic_sequence), phonetic_char_dynamic_sequence); GtkWidget *hbox_pho_hide_row2 = gtk_hbox_new(FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox_r), hbox_pho_hide_row2 , FALSE, FALSE, 1); check_button_pho_hide_row2 = gtk_check_button_new_with_label(_("注音隱藏第二列 (注音符號)")); gtk_box_pack_start (GTK_BOX (hbox_pho_hide_row2), check_button_pho_hide_row2, FALSE, FALSE, 0); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(check_button_pho_hide_row2), pho_hide_row2); GtkWidget *hbox_pho_in_row1 = gtk_hbox_new(FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox_r), hbox_pho_in_row1 , FALSE, FALSE, 1); check_button_pho_in_row1 = gtk_check_button_new_with_label(_("注音符號移至第一列")); gtk_box_pack_start (GTK_BOX (hbox_pho_in_row1), check_button_pho_in_row1, FALSE, FALSE, 0); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(check_button_pho_in_row1), pho_in_row1); GtkWidget *hbox_phonetic_huge_tab = gtk_hbox_new(FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox_r), hbox_phonetic_huge_tab , FALSE, FALSE, 1); check_button_phonetic_huge_tab = gtk_check_button_new_with_label(_("使用巨大 UTF-8 字集")); gtk_box_pack_start (GTK_BOX (hbox_phonetic_huge_tab), check_button_phonetic_huge_tab, FALSE, FALSE, 0); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(check_button_phonetic_huge_tab), phonetic_huge_tab); GtkWidget *hbox_tsin_tone_char_input = gtk_hbox_new(FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox_r), hbox_tsin_tone_char_input , FALSE, FALSE, 1); check_button_tsin_tone_char_input = gtk_check_button_new_with_label(_("(詞音) 輸入注音聲調符號")); gtk_box_pack_start (GTK_BOX (hbox_tsin_tone_char_input), check_button_tsin_tone_char_input, FALSE, FALSE, 0); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(check_button_tsin_tone_char_input), tsin_tone_char_input); GtkWidget *hbox_tsin_tab_phrase_end = gtk_hbox_new(FALSE, 1); gtk_box_pack_start (GTK_BOX (vbox_r), hbox_tsin_tab_phrase_end , FALSE, FALSE, 1); check_button_tsin_tab_phrase_end = gtk_check_button_new_with_label(_("(詞音) 使用 Escape/Tab 斷詞")); gtk_box_pack_start (GTK_BOX (hbox_tsin_tab_phrase_end), check_button_tsin_tab_phrase_end, FALSE, FALSE, 0); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(check_button_tsin_tab_phrase_end), tsin_tab_phrase_end); GtkWidget *hbox_tsin_tail_select_key = gtk_hbox_new(FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox_r), hbox_tsin_tail_select_key , FALSE, FALSE, 1); check_button_tsin_tail_select_key = gtk_check_button_new_with_label(_("選擇鍵顯示於候選字(詞)後方")); gtk_box_pack_start (GTK_BOX (hbox_tsin_tail_select_key), check_button_tsin_tail_select_key, FALSE, FALSE, 0); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(check_button_tsin_tail_select_key), tsin_tail_select_key); GtkWidget *hbox_tsin_buffer_editing_mode = gtk_hbox_new(FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox_r), hbox_tsin_buffer_editing_mode , FALSE, FALSE, 1); check_button_tsin_buffer_editing_mode = gtk_check_button_new_with_label(_("\\ 鍵可切換 jkx 鍵編輯模式")); gtk_box_pack_start (GTK_BOX (hbox_tsin_buffer_editing_mode), check_button_tsin_buffer_editing_mode, FALSE, FALSE, 0); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(check_button_tsin_buffer_editing_mode), tsin_buffer_editing_mode); GtkWidget *hbox_tsin_use_pho_near = gtk_hbox_new(FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox_r), hbox_tsin_use_pho_near , FALSE, FALSE, 1); check_button_tsin_use_pho_near = gtk_check_button_new_with_label(_("按下 ↑ 鍵查詢近似音")); gtk_box_pack_start (GTK_BOX (hbox_tsin_use_pho_near), check_button_tsin_use_pho_near, FALSE, FALSE, 0); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(check_button_tsin_use_pho_near), tsin_use_pho_near); GtkWidget *frame_tsin_buffer_size = gtk_frame_new(_("(詞音) 的編輯緩衝區大小")); gtk_box_pack_start (GTK_BOX (vbox_r), frame_tsin_buffer_size, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (frame_tsin_buffer_size), 1); GtkAdjustment *adj_gtab_in = (GtkAdjustment *) gtk_adjustment_new (tsin_buffer_size, 10.0, MAX_PH_BF, 1.0, 1.0, 0.0); spinner_tsin_buffer_size = gtk_spin_button_new (adj_gtab_in, 0, 0); gtk_container_add (GTK_CONTAINER (frame_tsin_buffer_size), spinner_tsin_buffer_size); return kbm_widget; }
void create_kbm_window() { if (hime_kbm_window) { gtk_window_present(GTK_WINDOW(hime_kbm_window)); return; } load_setttings(); hime_kbm_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_position(GTK_WINDOW(hime_kbm_window), GTK_WIN_POS_MOUSE); gtk_window_set_has_resize_grip(GTK_WINDOW(hime_kbm_window), FALSE); g_signal_connect (G_OBJECT (hime_kbm_window), "delete_event", G_CALLBACK (close_kbm_window), NULL); gtk_window_set_title (GTK_WINDOW (hime_kbm_window), _("HIME 注音/詞音設定")); gtk_container_set_border_width (GTK_CONTAINER (hime_kbm_window), 1); GtkWidget *vbox_top = gtk_vbox_new (FALSE, 3); gtk_orientable_set_orientation(GTK_ORIENTABLE(vbox_top), GTK_ORIENTATION_VERTICAL); gtk_container_add (GTK_CONTAINER (hime_kbm_window), vbox_top); GtkWidget *hbox_lr = gtk_hbox_new (FALSE, 3); gtk_box_pack_start (GTK_BOX (vbox_top), hbox_lr, TRUE, TRUE, 0); GtkWidget *vbox_l = gtk_vbox_new (FALSE, 3); gtk_orientable_set_orientation(GTK_ORIENTABLE(vbox_l), GTK_ORIENTATION_VERTICAL); gtk_box_pack_start (GTK_BOX (hbox_lr), vbox_l, TRUE, TRUE, 10); GtkWidget *vbox_r = gtk_vbox_new (FALSE, 3); gtk_orientable_set_orientation(GTK_ORIENTABLE(vbox_r), GTK_ORIENTATION_VERTICAL); gtk_grid_set_row_homogeneous(GTK_GRID(vbox_r), TRUE); gtk_box_pack_start (GTK_BOX (hbox_lr), vbox_r, TRUE, TRUE, 10); GtkWidget *frame_kbm = gtk_frame_new(_("鍵盤排列方式/選擇鍵/選單每列字數")); gtk_box_pack_start (GTK_BOX (vbox_l), frame_kbm, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (frame_kbm), 1); gtk_container_add (GTK_CONTAINER (frame_kbm), create_kbm_opts()); gtk_box_pack_start (GTK_BOX (vbox_l), create_en_pho_key_sel(_("(詞音) 切換[中/英]輸入")), TRUE, TRUE, 0); GtkWidget *frame_tsin_space_opt = gtk_frame_new(_("(詞音) 鍵入空白鍵")); gtk_box_pack_start (GTK_BOX (vbox_l), frame_tsin_space_opt, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (frame_tsin_space_opt), 1); GtkWidget *box_tsin_space_opt = gtk_vbox_new (FALSE, 0); gtk_orientable_set_orientation(GTK_ORIENTABLE(box_tsin_space_opt), GTK_ORIENTATION_VERTICAL); gtk_container_add (GTK_CONTAINER (frame_tsin_space_opt), box_tsin_space_opt); gtk_container_set_border_width (GTK_CONTAINER (box_tsin_space_opt), 1); GSList *group_tsin_space_opt = NULL; int current_idx = get_currnet_tsin_space_option_idx(); new_select_idx_tsin_space_opt = current_idx; gsize i; for(i=0; i< tsin_space_optionsN; i++) { GtkWidget *button = gtk_radio_button_new_with_label (group_tsin_space_opt, _(tsin_space_options[i].name)); gtk_box_pack_start (GTK_BOX (box_tsin_space_opt), button, TRUE, TRUE, 0); group_tsin_space_opt = gtk_radio_button_get_group (GTK_RADIO_BUTTON (button)); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (callback_button_clicked_tsin_space_opt), (gpointer) i); if (i==current_idx) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE); } GtkWidget *hbox_tsin_phrase_pre_select = gtk_hbox_new(FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox_l), hbox_tsin_phrase_pre_select , TRUE, TRUE, 1); check_button_tsin_phrase_pre_select = gtk_check_button_new_with_label(_("詞音輸入預選詞視窗")); gtk_box_pack_start (GTK_BOX (hbox_tsin_phrase_pre_select), check_button_tsin_phrase_pre_select, FALSE, FALSE, 0); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(check_button_tsin_phrase_pre_select), tsin_phrase_pre_select); GtkWidget *hbox_phonetic_char_dynamic_sequence = gtk_hbox_new(FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox_l), hbox_phonetic_char_dynamic_sequence , TRUE, TRUE, 1); check_button_phonetic_char_dynamic_sequence = gtk_check_button_new_with_label(_("依使用頻率調整字的順序")); gtk_box_pack_start (GTK_BOX (hbox_phonetic_char_dynamic_sequence), check_button_phonetic_char_dynamic_sequence, FALSE, FALSE, 0); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(check_button_phonetic_char_dynamic_sequence), phonetic_char_dynamic_sequence); GtkWidget *hbox_pho_hide_row2 = gtk_hbox_new(FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox_l), hbox_pho_hide_row2 , TRUE, TRUE, 1); check_button_pho_hide_row2 = gtk_check_button_new_with_label(_("注音隱藏第二列 (注音符號)")); gtk_box_pack_start (GTK_BOX (hbox_pho_hide_row2), check_button_pho_hide_row2, FALSE, FALSE, 0); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(check_button_pho_hide_row2), pho_hide_row2); GtkWidget *hbox_pho_in_row1 = gtk_hbox_new(FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox_l), hbox_pho_in_row1 , TRUE, TRUE, 1); check_button_pho_in_row1 = gtk_check_button_new_with_label(_("注音符號移至第一列")); gtk_box_pack_start (GTK_BOX (hbox_pho_in_row1), check_button_pho_in_row1, FALSE, FALSE, 0); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(check_button_pho_in_row1), pho_in_row1); GtkWidget *hbox_phonetic_huge_tab = gtk_hbox_new(FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox_r), hbox_phonetic_huge_tab , TRUE, TRUE, 1); check_button_phonetic_huge_tab = gtk_check_button_new_with_label(_("使用巨大 UTF-8 字集")); gtk_box_pack_start (GTK_BOX (hbox_phonetic_huge_tab), check_button_phonetic_huge_tab, FALSE, FALSE, 0); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(check_button_phonetic_huge_tab), phonetic_huge_tab); GtkWidget *hbox_tsin_tone_char_input = gtk_hbox_new(FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox_r), hbox_tsin_tone_char_input , TRUE, TRUE, 1); check_button_tsin_tone_char_input = gtk_check_button_new_with_label(_("(詞音) 輸入注音聲調符號")); gtk_box_pack_start (GTK_BOX (hbox_tsin_tone_char_input), check_button_tsin_tone_char_input, FALSE, FALSE, 0); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(check_button_tsin_tone_char_input), tsin_tone_char_input); GtkWidget *hbox_tsin_tab_phrase_end = gtk_hbox_new(FALSE, 1); gtk_box_pack_start (GTK_BOX (vbox_r), hbox_tsin_tab_phrase_end , TRUE, TRUE, 1); check_button_tsin_tab_phrase_end = gtk_check_button_new_with_label(_("(詞音) 使用 Escape/Tab 斷詞")); gtk_box_pack_start (GTK_BOX (hbox_tsin_tab_phrase_end), check_button_tsin_tab_phrase_end, FALSE, FALSE, 0); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(check_button_tsin_tab_phrase_end), tsin_tab_phrase_end); GtkWidget *hbox_tsin_tail_select_key = gtk_hbox_new(FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox_r), hbox_tsin_tail_select_key , TRUE, TRUE, 1); check_button_tsin_tail_select_key = gtk_check_button_new_with_label(_("選擇鍵顯示於候選字(詞)後方")); gtk_box_pack_start (GTK_BOX (hbox_tsin_tail_select_key), check_button_tsin_tail_select_key, FALSE, FALSE, 0); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(check_button_tsin_tail_select_key), tsin_tail_select_key); GtkWidget *hbox_tsin_buffer_editing_mode = gtk_hbox_new(FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox_r), hbox_tsin_buffer_editing_mode , TRUE, TRUE, 1); check_button_tsin_buffer_editing_mode = gtk_check_button_new_with_label(_("\\ 鍵可切換 jkx 鍵編輯模式")); gtk_box_pack_start (GTK_BOX (hbox_tsin_buffer_editing_mode), check_button_tsin_buffer_editing_mode, FALSE, FALSE, 0); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(check_button_tsin_buffer_editing_mode), tsin_buffer_editing_mode); GtkWidget *hbox_tsin_use_pho_near = gtk_hbox_new(FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox_r), hbox_tsin_use_pho_near , TRUE, TRUE, 1); check_button_tsin_use_pho_near = gtk_check_button_new_with_label(_("按下 ↑ 鍵查詢近似音")); gtk_box_pack_start (GTK_BOX (hbox_tsin_use_pho_near), check_button_tsin_use_pho_near, FALSE, FALSE, 0); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(check_button_tsin_use_pho_near), tsin_use_pho_near); GtkWidget *frame_tsin_buffer_size = gtk_frame_new(_("(詞音) 的編輯緩衝區大小")); gtk_box_pack_start (GTK_BOX (vbox_r), frame_tsin_buffer_size, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (frame_tsin_buffer_size), 1); GtkAdjustment *adj_gtab_in = (GtkAdjustment *) gtk_adjustment_new (tsin_buffer_size, 10.0, MAX_PH_BF, 1.0, 1.0, 0.0); spinner_tsin_buffer_size = gtk_spin_button_new (adj_gtab_in, 0, 0); gtk_container_add (GTK_CONTAINER (frame_tsin_buffer_size), spinner_tsin_buffer_size); GtkWidget *frame_tsin_cursor_color = gtk_frame_new(_("詞音游標的顏色")); gtk_box_pack_start (GTK_BOX (vbox_r), frame_tsin_cursor_color, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (frame_tsin_cursor_color), 1); GtkWidget *button_tsin_cursor_color = gtk_button_new(); g_signal_connect (G_OBJECT (button_tsin_cursor_color), "clicked", G_CALLBACK (cb_tsin_cursor_color), G_OBJECT (hime_kbm_window)); da_cursor = gtk_drawing_area_new(); gtk_container_add (GTK_CONTAINER (button_tsin_cursor_color), da_cursor); gdk_color_parse(tsin_cursor_color, &tsin_cursor_gcolor); #if !GTK_CHECK_VERSION(2,91,6) gtk_widget_modify_bg(da_cursor, GTK_STATE_NORMAL, &tsin_cursor_gcolor); #else GdkRGBA rgbbg; gdk_rgba_parse(&rgbbg, gdk_color_to_string(&tsin_cursor_gcolor)); gtk_widget_override_background_color(da_cursor, GTK_STATE_FLAG_NORMAL, &rgbbg); #endif gtk_widget_set_size_request(da_cursor, 16, 2); gtk_container_add (GTK_CONTAINER (frame_tsin_cursor_color), button_tsin_cursor_color); GtkWidget *hbox_cancel_ok = gtk_hbox_new (FALSE, 10); gtk_grid_set_column_homogeneous(GTK_GRID(hbox_cancel_ok), TRUE); gtk_box_pack_start (GTK_BOX (vbox_top), hbox_cancel_ok , FALSE, FALSE, 5); GtkWidget *button_cancel = gtk_button_new_from_stock (GTK_STOCK_CANCEL); if (button_order) gtk_box_pack_end (GTK_BOX (hbox_cancel_ok), button_cancel, TRUE, TRUE, 0); else gtk_box_pack_start (GTK_BOX (hbox_cancel_ok), button_cancel, TRUE, TRUE, 0); GtkWidget *button_ok = gtk_button_new_from_stock (GTK_STOCK_OK); #if !GTK_CHECK_VERSION(2,91,2) if (button_order) gtk_box_pack_end (GTK_BOX (hbox_cancel_ok), button_ok, TRUE, TRUE, 5); else gtk_box_pack_start (GTK_BOX (hbox_cancel_ok), button_ok, TRUE, TRUE, 5); #else if (button_order) gtk_grid_attach_next_to (GTK_BOX (hbox_cancel_ok), button_ok, button_cancel, GTK_POS_LEFT, 1, 1); else gtk_grid_attach_next_to (GTK_BOX (hbox_cancel_ok), button_ok, button_cancel, GTK_POS_RIGHT, 1, 1); #endif g_signal_connect (G_OBJECT (button_cancel), "clicked", G_CALLBACK (close_kbm_window), G_OBJECT (hime_kbm_window)); g_signal_connect_swapped (G_OBJECT (button_ok), "clicked", G_CALLBACK (cb_ok), G_OBJECT (hime_kbm_window)); GTK_WIDGET_SET_FLAGS (button_cancel, GTK_CAN_DEFAULT); gtk_widget_grab_default (button_cancel); gtk_widget_show_all (hime_kbm_window); return; }