int main(int argc, char **argv) { gdk_init(NULL, NULL); /* Force to output original string, usually are Traditional Chinese */ if (strstr(argv[0],"hime-trad")) send_hime_message(GDK_DISPLAY(), TRAD_OUTPUT_TOGGLE); /* Force to output Simplified Chinese */ if (strstr(argv[0],"hime-sim")) send_hime_message(GDK_DISPLAY(), SIM_OUTPUT_TOGGLE); /* Toggle between Original string and Simplified Chinese */ if (strstr(argv[0],"hime-gb-toggle")) send_hime_message(GDK_DISPLAY(), GB_OUTPUT_TOGGLE); /* Toggle virtual keyboard */ if (strstr(argv[0],"hime-kbm-toggle")) send_hime_message(GDK_DISPLAY(), KBM_TOGGLE); if (strstr(argv[0],"hime-exit")) { Display *dpy = GDK_DISPLAY(); if (find_hime_window(dpy)==None) return 0; send_hime_message(dpy, HIME_EXIT_MESSAGE); } return 0; }
static gboolean cb_gtab_conf_ok( GtkWidget *widget, GdkEvent *event, gpointer data ) { save_tsin_eng_pho_key(); save_hime_conf_int(GTAB_DUP_SELECT_BELL, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_gtab_dup_select_bell))); save_menu_val(GTAB_PRE_SELECT, opt_gtab_pre_select); save_menu_val(GTAB_DISP_PARTIAL_MATCH, opt_gtab_disp_partial_match); save_hime_conf_int(GTAB_DISP_KEY_CODES, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_gtab_disp_key_codes))); save_hime_conf_int(GTAB_DISP_IM_NAME, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_gtab_disp_im_name))); save_hime_conf_int(GTAB_INVALID_KEY_IN, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_gtab_invalid_key_in))); save_hime_conf_int(GTAB_SHIFT_PHRASE_KEY, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_gtab_shift_phrase_key))); save_hime_conf_int(GTAB_HIDE_ROW2, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_gtab_hide_row2))); save_hime_conf_int(GTAB_IN_ROW1, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_gtab_in_row1))); save_menu_val(GTAB_VERTICAL_SELECT, opt_gtab_vertical_select); save_hime_conf_int(GTAB_QUE_WILD_CARD, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_gtab_que_wild_card))); save_hime_conf_int(HIME_CAPSLOCK_LOWER, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_hime_capslock_lower))); save_hime_conf_int(GTAB_PHRASE_PRE_SELECT, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_gtab_phrase_pre_select))); int idx = gtk_combo_box_get_active (GTK_COMBO_BOX (opt_spc_opts)); save_hime_conf_int(GTAB_SPACE_AUTO_FIRST, spc_opts[idx].num); save_menu_val(GTAB_AUTO_SELECT_BY_PHRASE, opt_auto_select_by_phrase); save_menu_val(GTAB_PRESS_FULL_AUTO_SEND, opt_gtab_press_full_auto_send); save_menu_val(GTAB_UNIQUE_AUTO_SEND, opt_gtab_unique_auto_send); send_hime_message(GDK_DISPLAY(), CHANGE_FONT_SIZE); gtk_widget_destroy(hime_gtab_conf_window); hime_gtab_conf_window = NULL; return TRUE; }
int main(int argc, char **argv) { int i; char text[128]; char icon[128]; int duration = 3000; gtk_init(&argc, &argv); if (argc < 3) print_help(); strcpy(text, "-"); strcpy(icon, "-"); for(i=1; i < argc; i+=2) { if (!strcmp(argv[i], "-icon")) { strcpy(icon, argv[i+1]); } else if (!strcmp(argv[i], "-text")) { strcpy(text, argv[i+1]); } else if (!strcmp(argv[i], "-duration")) { duration = atoi(argv[i+1]); } else { dbg("unknown opt %s", argv[i]); } } char message[512]; sprintf(message, "#hime_message %s %s %d", icon, text, duration); gdk_init(NULL, NULL); send_hime_message(GDK_DISPLAY(), message); return 0; }
void save_kbm_conf() { if (kbm_widget == NULL) { fprintf(stderr, "save_kbm_conf: kbm_widget is NULL!\n"); return; } int idx = gtk_combo_box_get_active (GTK_COMBO_BOX (opt_kbm_opts)); int idx_selkeys = gtk_combo_box_get_active (GTK_COMBO_BOX (opt_selkeys)); pho_candicate_col_N = (int) gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinner_pho_candicate_col_N)); if (pho_candicate_col_N > strlen(selkeys[idx_selkeys].kstr)) pho_candicate_col_N = strlen(selkeys[idx_selkeys].kstr); dbg("pho_candicate_col_N %d\n", pho_candicate_col_N); char tt[128]; sprintf(tt, "%s %s %d %d", kbm_sel[idx].kbm, selkeys[idx_selkeys].kstr, pho_candicate_col_N, selkeys[idx_selkeys].RL); char phokbm_name[128]; get_hime_conf_fstr(PHONETIC_KEYBOARD, phokbm_name, ""); if (strcmp(phokbm_name, tt)) { save_hime_conf_str(PHONETIC_KEYBOARD_BAK, phokbm_name); } save_hime_conf_str(PHONETIC_KEYBOARD, tt); save_tsin_eng_pho_key(); save_hime_conf_int(TSIN_SPACE_OPT, tsin_space_options[new_select_idx_tsin_space_opt].key); save_hime_conf_int(TSIN_PHRASE_PRE_SELECT, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_tsin_phrase_pre_select))); save_hime_conf_int(PHONETIC_CHAR_DYNAMIC_SEQUENCE, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_phonetic_char_dynamic_sequence))); save_hime_conf_int(PHO_HIDE_ROW2, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_pho_hide_row2))); save_hime_conf_int(PHO_IN_ROW1, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_pho_in_row1))); save_hime_conf_int(PHONETIC_HUGE_TAB, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_phonetic_huge_tab))); save_hime_conf_int(TSIN_TONE_CHAR_INPUT, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_tsin_tone_char_input))); save_hime_conf_int(TSIN_USE_PHO_NEAR, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_tsin_use_pho_near))); save_hime_conf_int(TSIN_TAB_PHRASE_END, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_tsin_tab_phrase_end))); save_hime_conf_int(TSIN_TAIL_SELECT_KEY, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_tsin_tail_select_key))); save_hime_conf_int(TSIN_BUFFER_EDITING_MODE, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_tsin_buffer_editing_mode))); tsin_buffer_size = (int) gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinner_tsin_buffer_size)); save_hime_conf_int(TSIN_BUFFER_SIZE, tsin_buffer_size); #if 0 gchar *cstr; cstr = gtk_color_selection_palette_to_string(&tsin_phrase_line_gcolor, 1); dbg("color %s\n", cstr); save_hime_conf_str(TSIN_PHRASE_LINE_COLOR, cstr); g_free(cstr); #endif save_omni_config(); /* caleb- does found where "reload kbm" is used. * caleb- think the send_hime_message() here does nothing. */ send_hime_message(GDK_DISPLAY(), "reload kbm"); }
static void cb_win_kbm_toggle() { send_hime_message(GDK_DISPLAY(), KBM_TOGGLE); exit(0); }
static void cb_gb_output_toggle() { send_hime_message(GDK_DISPLAY(), GB_OUTPUT_TOGGLE); exit(0); }
void save_appearance_conf() { if (appearance_widget == NULL) { fprintf(stderr, "save_appearance_conf: appearance_widget is NULL!\n"); return; } char fname[128]; strcpy(fname, gtk_font_button_get_font_name(GTK_FONT_BUTTON(font_sel))); int len = strlen(fname)-1; while (len > 0 && isdigit(fname[len])) { len--; } save_hime_conf_int(HIME_FONT_SIZE, atoi(&(fname[len+1]))); while (len > 0 && fname[len]==' ') { fname[len--]=0; } save_hime_conf_str(HIME_FONT_NAME, fname); int font_size_tsin_presel = (int) gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinner_hime_font_size_tsin_presel)); save_hime_conf_int(HIME_FONT_SIZE_TSIN_PRESEL, font_size_tsin_presel); int font_size_symbol = (int) gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinner_hime_font_size_symbol)); save_hime_conf_int(HIME_FONT_SIZE_SYMBOL, font_size_symbol); int font_size_tsin_pho_in = (int) gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinner_hime_font_size_tsin_pho_in)); save_hime_conf_int(HIME_FONT_SIZE_TSIN_PHO_IN, font_size_tsin_pho_in); int font_size_pho_near = (int) gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinner_hime_font_size_pho_near)); save_hime_conf_int(HIME_FONT_SIZE_PHO_NEAR, font_size_pho_near); int font_size_gtab_in = (int) gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinner_hime_font_size_gtab_in)); save_hime_conf_int(HIME_FONT_SIZE_GTAB_IN, font_size_gtab_in); int font_size_win_kbm = (int) gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinner_hime_font_size_win_kbm)); save_hime_conf_int(HIME_FONT_SIZE_WIN_KBM, font_size_win_kbm); int font_size_win_kbm_en = (int) gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinner_hime_font_size_win_kbm_en)); save_hime_conf_int(HIME_FONT_SIZE_WIN_KBM_EN, font_size_win_kbm_en); int hime_pop_up_win = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_hime_pop_up_win)); save_hime_conf_int(HIME_POP_UP_WIN, hime_pop_up_win); int hime_root_x = (int) gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinner_root_style_x)); save_hime_conf_int(HIME_ROOT_X, hime_root_x); int hime_root_y = (int) gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinner_root_style_y)); save_hime_conf_int(HIME_ROOT_Y, hime_root_y); int style = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_root_style_use)) ? InputStyleRoot : InputStyleOverSpot; save_hime_conf_int(HIME_INPUT_STYLE, style); save_hime_conf_int(HIME_INNER_FRAME, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_hime_inner_frame))); #if TRAY_ENABLED save_hime_conf_int(HIME_STATUS_TRAY, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_hime_status_tray))); #endif save_hime_conf_int(HIME_WIN_COLOR_USE, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_hime_win_color_use))); save_hime_conf_str(HIME_WIN_COLOR_FG, hime_win_color_fg); save_hime_conf_str(HIME_WIN_COLOR_BG, hime_win_color_bg); save_hime_conf_str(HIME_SEL_KEY_COLOR, hime_sel_key_color); int idx = gtk_combo_box_get_active(GTK_COMBO_BOX(opt_hime_icon_dir_display)); save_hime_conf_str(HIME_ICON_DIR, icon_dir_sel[idx].path); save_hime_conf_str(TSIN_CURSOR_COLOR, tsin_cursor_color); save_hime_conf_int(HIME_ON_THE_SPOT_KEY, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_hime_on_the_spot_key))); save_hime_conf_int(KBM_TOGGLE, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_hime_show_win_kbm))); #if TRAY_ENABLED save_hime_conf_int(HIME_TRAY_HF_WIN_KBM, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_hime_tray_hf_win_kbm))); #endif idx = gtk_combo_box_get_active (GTK_COMBO_BOX (opt_hime_edit_display)); save_hime_conf_int(HIME_EDIT_DISPLAY, edit_disp[idx].keynum); #if TRAY_ENABLED idx = gtk_combo_box_get_active (GTK_COMBO_BOX (opt_hime_tray_display)); save_hime_conf_int(HIME_TRAY_DISPLAY, tray_disp[idx].keynum); #endif #if 0 save_hime_conf_int(HIME_SETUP_WINDOW_TYPE_UTILITY, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_hime_setup_window_type_utility))); #endif save_omni_config(); send_hime_message(GDK_DISPLAY(), CHANGE_FONT_SIZE); #if TRAY_ENABLED send_hime_message(GDK_DISPLAY(), UPDATE_TRAY); #endif }
static gboolean cb_ok( GtkWidget *widget, GdkEvent *event, gpointer data ) { int idx = gtk_combo_box_get_active (GTK_COMBO_BOX (opt_kbm_opts)); int idx_selkeys = gtk_combo_box_get_active (GTK_COMBO_BOX (opt_selkeys)); pho_candicate_col_N = (int) gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinner_pho_candicate_col_N)); if (pho_candicate_col_N > strlen(selkeys[idx_selkeys].kstr)) pho_candicate_col_N = strlen(selkeys[idx_selkeys].kstr); dbg("pho_candicate_col_N %d\n", pho_candicate_col_N); char tt[128]; sprintf(tt, "%s %s %d %d", kbm_sel[idx].kbm, selkeys[idx_selkeys].kstr, pho_candicate_col_N, selkeys[idx_selkeys].RL); char phokbm_name[128]; get_hime_conf_fstr(PHONETIC_KEYBOARD, phokbm_name, ""); if (strcmp(phokbm_name, tt)) { save_hime_conf_str(PHONETIC_KEYBOARD_BAK, phokbm_name); } save_hime_conf_str(PHONETIC_KEYBOARD, tt); save_tsin_eng_pho_key(); save_hime_conf_int(TSIN_SPACE_OPT, tsin_space_options[new_select_idx_tsin_space_opt].key); save_hime_conf_int(TSIN_PHRASE_PRE_SELECT, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_tsin_phrase_pre_select))); save_hime_conf_int(PHONETIC_CHAR_DYNAMIC_SEQUENCE, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_phonetic_char_dynamic_sequence))); save_hime_conf_int(PHO_HIDE_ROW2, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_pho_hide_row2))); save_hime_conf_int(PHO_IN_ROW1, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_pho_in_row1))); save_hime_conf_int(PHONETIC_HUGE_TAB, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_phonetic_huge_tab))); save_hime_conf_int(TSIN_TONE_CHAR_INPUT, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_tsin_tone_char_input))); save_hime_conf_int(TSIN_USE_PHO_NEAR, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_tsin_use_pho_near))); save_hime_conf_int(TSIN_TAB_PHRASE_END, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_tsin_tab_phrase_end))); save_hime_conf_int(TSIN_TAIL_SELECT_KEY, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_tsin_tail_select_key))); save_hime_conf_int(TSIN_BUFFER_EDITING_MODE, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_button_tsin_buffer_editing_mode))); tsin_buffer_size = (int) gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinner_tsin_buffer_size)); save_hime_conf_int(TSIN_BUFFER_SIZE, tsin_buffer_size); gchar *cstr; #if 0 cstr = gtk_color_selection_palette_to_string(&tsin_phrase_line_gcolor, 1); dbg("color %s\n", cstr); save_hime_conf_str(TSIN_PHRASE_LINE_COLOR, cstr); g_free(cstr); #endif cstr = gtk_color_selection_palette_to_string(&tsin_cursor_gcolor, 1); dbg("color %s\n", cstr); save_hime_conf_str(TSIN_CURSOR_COLOR, cstr); g_free(cstr); send_hime_message( #if UNIX GDK_DISPLAY(), #endif "reload kbm"); gtk_widget_destroy(hime_kbm_window); hime_kbm_window = NULL; return TRUE; }
int main(int argc, char **argv) { char *fname = "pho.tab2.src"; FILE *fp; char s[64]; int phrase_area_N=0; char *phrase_area = NULL; if (!getenv("NO_GTK_INIT")) gtk_init(&argc, &argv); if (argc > 1) fname = argv[1]; if ((fp=fopen(fname,"rb"))==NULL) p_err("cannot open %s\n", fname); while (!feof(fp)) { s[0]=0; myfgets(s,sizeof(s),fp); int len=strlen(s); if (s[len-1]=='\n') s[--len]=0; if (len==0) continue; phokey_t kk=0; char *p = s; while (*p && *p!=' ' && *p!=9) { if (kk==(BACK_QUOTE_NO << 9)) kk|=*p; else kk |= lookup((u_char *)p); p += utf8_sz(p); } items[itemsN].key = kk; p++; char *str = p; while (*p && *p != ' ' && *p!=9) p++; *p = 0; p++; int slen = strlen(str); if (slen==utf8_sz(str)) { u8cpy((char *)items[itemsN].ch, str); } else { dbg("str %s\n", str); int newN = phrase_area_N + slen + 1; phrase_area = trealloc(phrase_area, char, newN); strcpy(phrase_area + phrase_area_N, str); items[itemsN].ch[0] = PHO_PHRASE_ESCAPE; items[itemsN].ch[1] = phrase_area_N & 0xff; items[itemsN].ch[2] = (phrase_area_N>>8) & 0xff; items[itemsN].ch[3] = (phrase_area_N>>16) & 0xff; phrase_area_N = newN; } items[itemsN].count = atoi(p); items[itemsN].oseq = itemsN; itemsN++; } fclose(fp); qsort(items, itemsN, sizeof(PHITEM), qcmp_key_del); int i; #if 1 int newN = 1; for(i=1;i<itemsN;i++) if (qcmp_key_del(&items[i-1], &items[i])) items[newN++] = items[i]; else { #if 0 prph(items[i].key); utf8_putchar((char *)items[i].ch); dbg("\n"); #endif } if (itemsN != newN) { dbg("deleted %d %d\n",itemsN, newN); itemsN = newN; } #endif qsort(items, itemsN, sizeof(PHITEM), qcmp_key); PHO_IDX pho_idx[3000]; u_short pho_idxN=0; for(i=0; i < itemsN; ) { phokey_t key = items[i].key; pho_idx[pho_idxN].key = key; pho_idx[pho_idxN].start = i; pho_idxN++; int j; for (j=i+1; j < itemsN && items[j].key == key; j++); int l; for(l=i; l<j; l++) { bchcpy(pho_items[pho_itemsN].ch, items[l].ch); pho_items[pho_itemsN].count = items[l].count; pho_itemsN++; } i = j; } char *tp = strstr(fname, ".tab2.src"); if (!tp) p_err("file name should be *.tab2.src"); tp = strstr(fname, ".src"); *tp=0; char *fname_out = fname; if ((fp=fopen(fname_out,"wb"))==NULL) p_err("cannot create %s\n", fname_out); fwrite("PH",1,2,fp); // dbg("pho_itemsN:%d pho_idxN:%d\n", pho_itemsN, pho_idxN); fwrite(&pho_idxN, sizeof(u_short), 1, fp); fwrite(&pho_itemsN, sizeof(pho_itemsN), 1, fp); fwrite(&phrase_area_N, sizeof(phrase_area_N), 1, fp); #if 0 fclose(fp); exit(0); #endif fwrite(pho_idx, sizeof(PHO_IDX), pho_idxN, fp); fwrite(pho_items, sizeof(PHO_ITEM), pho_itemsN, fp); fwrite(phrase_area, 1, phrase_area_N, fp); fclose(fp); if (getenv("HIME_NO_RELOAD")==NULL) { /* caleb- does found where "reload" is used. * caleb- think the send_hime_message() here does nothing. */ send_hime_message(GDK_DISPLAY(), "reload"); } return 0; }
void do_exit() { send_hime_message(dpy, RELOAD_TSIN_DB); exit(0); }