int module_init_win (GCIN_module_main_functions *pFuncs) { GtkWidget *pErrDialog = NULL; int nIdx; int nSegSize = 0; if (!pFuncs) return FALSE; g_gcinModMainFuncs = *pFuncs; g_gcinModMainFuncs.mf_set_tsin_pho_mode (); g_gcinModMainFuncs.mf_set_win1_cb ((cb_selec_by_idx_t)select_idx, prev_page, next_page); if (g_pWinChewing) return TRUE; if (!chewing_initialize ()) { pErrDialog = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "chewing init failed"); gtk_dialog_run (GTK_DIALOG (pErrDialog)); gtk_widget_destroy (pErrDialog); return FALSE; } g_pWinChewing = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_has_resize_grip (GTK_WINDOW (g_pWinChewing), FALSE); gtk_window_set_resizable(GTK_WINDOW(g_pWinChewing), FALSE); gtk_window_set_default_size (GTK_WINDOW (g_pWinChewing), 32, 12); gtk_widget_realize (g_pWinChewing); g_gcinModMainFuncs.mf_set_no_focus (g_pWinChewing); g_pEvBoxChewing = gtk_event_box_new (); gtk_event_box_set_visible_window (GTK_EVENT_BOX(g_pEvBoxChewing), FALSE); if (!g_pEvBoxChewing) return FALSE; gtk_container_add (GTK_CONTAINER (g_pWinChewing), g_pEvBoxChewing); g_pHBoxChewing = gtk_hbox_new (FALSE, 0); if (!g_pHBoxChewing) return FALSE; gtk_container_add (GTK_CONTAINER (g_pEvBoxChewing), g_pHBoxChewing); // TODO: not sure if we need the mouse CB or not... // if we add the CB here, then it seems that we have to use gdk // it seems not so important...? do it later //g_signal_connect (G_OBJECT (g_pEvBoxChewing), "button-press-event", // G_CALLBACK (mouse_button_callback), NULL); if (!g_pSeg) { nSegSize = sizeof (SEG) * MAX_SEG_NUM; g_pSeg = malloc (nSegSize); memset (g_pSeg, 0, nSegSize); } for (nIdx = 0; nIdx < MAX_SEG_NUM; nIdx++) { g_pSeg[nIdx].label = gtk_label_new (NULL); gtk_widget_show (g_pSeg[nIdx].label); gtk_box_pack_start (GTK_BOX (g_pHBoxChewing), g_pSeg[nIdx].label, FALSE, FALSE, 0); } if (!g_gcinModMainFuncs.mf_phkbm->selkeyN) g_gcinModMainFuncs.mf_load_tab_pho_file(); gtk_widget_show_all (g_pWinChewing); g_gcinModMainFuncs.mf_init_tsin_selection_win (); module_change_font_size (); module_hide_win (); return TRUE; }
void create_win_intcode() { if (gwin_int) { module_show_win(); return; } gwin_int = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_has_resize_grip(GTK_WINDOW(gwin_int), FALSE); gtk_window_set_resizable(GTK_WINDOW(gwin_int), FALSE); #if WIN32 gmf.mf_set_no_focus(gwin_int); #endif // gtk_window_set_default_size(GTK_WINDOW (gwin_int), 1, 1); gtk_container_set_border_width (GTK_CONTAINER (gwin_int), 0); GdkWindow *gdkwin = gtk_widget_get_window(gwin_int); GtkWidget *frame = gtk_frame_new(NULL); gtk_container_set_border_width (GTK_CONTAINER (frame), 0); gtk_container_add (GTK_CONTAINER(gwin_int), frame); GtkWidget *hbox_top = gtk_hbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (frame), hbox_top); GtkWidget *button_intcode = gtk_button_new_with_label(_(_L("內碼"))); g_signal_connect (G_OBJECT (button_intcode), "button_press_event", G_CALLBACK (gmf.mf_inmd_switch_popup_handler), NULL); gtk_box_pack_start (GTK_BOX (hbox_top), button_intcode, FALSE, FALSE, 0); button_int = gtk_button_new(); gtk_container_set_border_width (GTK_CONTAINER (button_int), 0); gtk_box_pack_start (GTK_BOX (hbox_top), button_int, FALSE, FALSE, 0); GtkWidget *hbox_int = gtk_hbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (button_int), hbox_int); int i; for(i=0; i < MAX_INTCODE;i ++) { GtkWidget *label = gtk_label_new(_(full_space)); labels_int[i] = label; gtk_box_pack_start (GTK_BOX (hbox_int), label, FALSE, FALSE, 0); gmf.mf_set_label_font_size(label, *gmf.mf_gcin_font_size); } GtkWidget *intsel = create_int_opts(); gtk_box_pack_start (GTK_BOX (hbox_top), intsel, FALSE, FALSE, 0); gtk_widget_show_all (gwin_int); gtk_widget_realize (gwin_int); #if WIN32 gmf.mf_win32_init_win(gwin_int); #else set_no_focus(gwin_int); #endif adj_intcode_buttons(); minimize_win(); // dbg("create %x\n",gwin_int); }
int module_init_win(GCIN_module_main_functions *funcs) { gmf = *funcs; // dbg("module_init_win\n"); gmf.mf_set_tsin_pho_mode(); gmf.mf_set_win1_cb((cb_selec_by_idx_t)select_idx, prev_page, next_page); if (win_anthy) return TRUE; if (anthy_init() == -1) { gmf.mf_box_warn("anthy_init() failed. Anthy not installed or incompatible anthy.so ?"); return FALSE; } ac = anthy_create_context(); if (!ac) { gmf.mf_box_warn("anthy_create_context error"); return FALSE; } anthy_context_set_encoding(ac, ANTHY_UTF8_ENCODING); win_anthy = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_has_resize_grip(GTK_WINDOW(win_anthy), FALSE); gtk_window_set_resizable(GTK_WINDOW(win_anthy), FALSE); gtk_window_set_default_size(GTK_WINDOW (win_anthy), 40, 50); gtk_widget_realize (win_anthy); gmf.mf_set_no_focus(win_anthy); event_box_anthy = gtk_event_box_new(); gtk_event_box_set_visible_window (GTK_EVENT_BOX(event_box_anthy), FALSE); gtk_container_add(GTK_CONTAINER(win_anthy), event_box_anthy); GtkWidget *hbox_top = gtk_hbox_new (FALSE, 0); gtk_container_add(GTK_CONTAINER(event_box_anthy), hbox_top); g_signal_connect(G_OBJECT(event_box_anthy),"button-press-event", G_CALLBACK(mouse_button_callback), NULL); if (!seg) { int n=sizeof(SEG)*MAX_SEG_N; seg=malloc(n); bzero(seg, n); } int i; for(i=0; i < MAX_SEG_N; i++) { seg[i].label = gtk_label_new(NULL); gtk_widget_show(seg[i].label); gtk_box_pack_start (GTK_BOX (hbox_top), seg[i].label, FALSE, FALSE, 0); } gtk_widget_show_all(win_anthy); gmf.mf_init_tsin_selection_win(); module_change_font_size(); if (!gmf.mf_phkbm->selkeyN) gmf.mf_load_tab_pho_file(); module_hide_win(); return TRUE; }