int main(int argc, char **argv) { set_is_chs(); exec_setup_scripts(); init_TableDir(); load_settings(); load_gtab_list(FALSE); gtk_init(&argc, &argv); #if HIME_i18n_message bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); textdomain(GETTEXT_PACKAGE); #endif g_object_get(gtk_settings_get_default(), "gtk-alternative-button-order", &button_order, NULL); #if 0 // once you invoke hime-setup, the left-right buton tips is disabled save_hime_conf_int(LEFT_RIGHT_BUTTON_TIPS, 0); #endif run_dialog(); gtk_main(); return 0; }
int main(int argc, char **argv) { // char *messages=getenv("LC_MESSAGES"); #if 0 char *ctype=getenv("LC_CTYPE"); if (!(ctype && strstr(ctype, "zh_CN"))) putenv("LANGUAGE=zh_TW.UTF-8"); #endif set_is_chs(); #if UNIX setenv("GCIN_BIN_DIR", GCIN_BIN_DIR, TRUE); setenv("UTF8_EDIT", utf8_edit, TRUE); #endif exec_setup_scripts(); init_TableDir(); load_setttings(); load_gtab_list(FALSE); gtk_init(&argc, &argv); #if GCIN_i18n_message bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); textdomain(GETTEXT_PACKAGE); #endif g_object_get(gtk_settings_get_default(), "gtk-alternative-button-order", &button_order, NULL); create_main_win(); // once you invoke gcin-setup, the left-right buton tips is disabled save_gcin_conf_int(LEFT_RIGHT_BUTTON_TIPS, 0); pclipboard = gtk_clipboard_get(GDK_SELECTION_PRIMARY); gtk_main(); return 0; }
int main(int argc, char **argv) { #if WIN32 init_TableDir(); #endif gtk_init (&argc, &argv); #if HIME_i18n_message bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); textdomain(GETTEXT_PACKAGE); #endif b_pinyin = is_pinyin_kbm(); pho_load(); mainwin = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_has_resize_grip(GTK_WINDOW(mainwin), FALSE); gtk_window_set_default_size(GTK_WINDOW (mainwin), 640, 220); set_window_hime_icon(mainwin); GtkWidget *sw = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); GtkWidget *vbox_top = gtk_vbox_new (FALSE, 0); gtk_orientable_set_orientation(GTK_ORIENTABLE(vbox_top), GTK_ORIENTATION_VERTICAL); gtk_container_add (GTK_CONTAINER(mainwin), vbox_top); GtkWidget *view = gtk_text_view_new (); gtk_widget_set_hexpand (view, TRUE); gtk_widget_set_vexpand (view, TRUE); gtk_container_add (GTK_CONTAINER(sw), view); gtk_box_pack_start (GTK_BOX (vbox_top), sw, TRUE, TRUE, 0); buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)); gtk_text_buffer_create_tag (buffer, "blue_background", "background", "blue", "foreground", "white", NULL); gtk_text_buffer_create_tag (buffer, "char_wrap", "wrap_mode", GTK_WRAP_CHAR, NULL); hbox_buttons = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox_top), hbox_buttons, FALSE, FALSE, 0); GtkWidget *button_fetch = gtk_button_new_with_label(_(_L("自剪貼區更新"))); gtk_box_pack_start (GTK_BOX (hbox_buttons), button_fetch, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (button_fetch), "clicked", G_CALLBACK (cb_button_fetch), NULL); GtkWidget *button_exit = gtk_button_new_from_stock(GTK_STOCK_QUIT); gtk_box_pack_start (GTK_BOX (hbox_buttons), button_exit, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (button_exit), "clicked", G_CALLBACK (do_exit), NULL); g_signal_connect (G_OBJECT (mainwin), "delete_event", G_CALLBACK (do_exit), NULL); gtk_widget_show_all(mainwin); #if UNIX pclipboard = gtk_clipboard_get(GDK_SELECTION_PRIMARY); #else pclipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); #endif req_clipboard(); gtk_main(); return 0; }
int main(int argc, char **argv) { #if WIN32 WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD(2, 2); err = WSAStartup(wVersionRequested, &wsaData); #endif dbg("%s\n", argv[0]); b_contrib = strstr(argv[0], "ts-contribute")!=NULL; if (b_contrib) dbg("b_contrib\n"); set_is_chs(); load_setttings(); init_TableDir(); b_pinyin = is_pinyin_kbm(); gtk_init (&argc, &argv); load_gtab_list(TRUE); char gcin_dir[512]; get_gcin_dir(gcin_dir); if (argc < 2) { #if UNIX chdir(gcin_dir); #else _chdir(gcin_dir); #endif } #if GCIN_i18n_message bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); textdomain(GETTEXT_PACKAGE); #endif get_gcin_user_fname(DOWNLOADED_PHRASES, downloaded_file_src); strcat(downloaded_file_src, ".src"); pinmd = &inmd[default_input_method]; if (pinmd->method_type == method_type_TSIN) { dbg("is tsin\n"); pho_load(); if (b_contrib) { load_tsin_contrib(); } else { if (argc > 1) load_tsin_db_ex(&tsin_hand, argv[1], FALSE, FALSE, FALSE); else load_tsin_db(); } ph_key_sz = 2; } else if (pinmd->filename) { if (b_contrib) p_err("Currently %s only supports tsin", argv[0]); dbg("gtab filename %s\n", pinmd->filename); init_gtab(default_input_method); is_gtab = TRUE; init_tsin_table_fname(pinmd, gtab_tsin_fname); load_tsin_db0(gtab_tsin_fname, TRUE); } else p_err("Your default input method %s doesn't use phrase database", pinmd->cname); dbg("ph_key_sz: %d\n", ph_key_sz); #if UNIX dpy = GDK_DISPLAY(); #endif load_ts_phrase(); mainwin = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_position(GTK_WINDOW(mainwin), GTK_WIN_POS_CENTER); g_signal_connect (G_OBJECT (mainwin), "key-press-event", G_CALLBACK (key_press_event), NULL); gtk_window_set_has_resize_grip(GTK_WINDOW(mainwin), FALSE); // gtk_window_set_default_size(GTK_WINDOW (mainwin), 640, 520); set_window_gcin_icon(mainwin); vbox_top = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER(mainwin), vbox_top); GtkWidget *hbox_page = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox_top), hbox_page, TRUE, FALSE, 0); GtkWidget *align_page = gtk_alignment_new(0, 0, 1.0, 1.0); gtk_box_pack_start (GTK_BOX (hbox_page), align_page, TRUE, TRUE, 0); GtkWidget *vbox_page = gtk_vbox_new (TRUE, 0); gtk_container_add (GTK_CONTAINER(align_page), vbox_page); scroll_bar = gtk_vscrollbar_new( GTK_ADJUSTMENT(gtk_adjustment_new(tsN - PAGE_LEN,0, tsN, 1,PAGE_LEN,PAGE_LEN))); gtk_box_pack_start (GTK_BOX (hbox_page), scroll_bar, FALSE, FALSE, 0); g_signal_connect(G_OBJECT(scroll_bar), "change-value", G_CALLBACK(cb_scroll_bar), NULL); int i; for(i=0; i<PAGE_LEN; i++) { GtkWidget *hbox; hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox_page), hbox, TRUE, TRUE, 0); button_check[i] = gtk_check_button_new(); gtk_box_pack_start (GTK_BOX (hbox), button_check[i], FALSE, FALSE, 0); labels[i]=gtk_label_new(NULL); GtkWidget *align = gtk_alignment_new (0, 0, 0, 0); gtk_container_add(GTK_CONTAINER(align), labels[i]); gtk_box_pack_start (GTK_BOX (hbox), align, FALSE, FALSE, 0); } hbox_buttons = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox_top), hbox_buttons, FALSE, FALSE, 0); GtkWidget *button_delete = b_contrib ? gtk_button_new_with_label(_(_L("私密詞不上載"))):gtk_button_new_from_stock (GTK_STOCK_DELETE); gtk_box_pack_start (GTK_BOX (hbox_buttons), button_delete, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (button_delete), "clicked", G_CALLBACK (cb_button_delete), NULL); GtkWidget *button_find = gtk_button_new_from_stock (GTK_STOCK_FIND); gtk_box_pack_start (GTK_BOX (hbox_buttons), button_find, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (button_find), "clicked", G_CALLBACK (cb_button_find), NULL); #if 0 GtkWidget *button_edit = gtk_button_new_from_stock (GTK_STOCK_EDIT); gtk_box_pack_start (GTK_BOX (hbox_buttons), button_edit, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (button_edit), "clicked", G_CALLBACK (cb_button_edit), NULL); #endif GtkWidget *button_save = b_contrib ? gtk_button_new_with_label(_(_L("上載詞"))) :gtk_button_new_from_stock (GTK_STOCK_SAVE); gtk_box_pack_start (GTK_BOX (hbox_buttons), button_save, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (button_save), "clicked", G_CALLBACK (cb_button_save), NULL); GtkWidget *button_quit = gtk_button_new_from_stock (GTK_STOCK_QUIT); gtk_box_pack_start (GTK_BOX (hbox_buttons), button_quit, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (button_quit), "clicked", G_CALLBACK (do_exit), NULL); if (!b_contrib && !is_gtab) { GtkWidget *button_download = gtk_button_new_with_label(_(_L("下載共享詞庫"))); gtk_box_pack_start (GTK_BOX (hbox_buttons), button_download, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (button_download), "clicked", G_CALLBACK (cb_button_download), NULL); } g_signal_connect (G_OBJECT (mainwin), "delete_event", G_CALLBACK (do_exit), NULL); gtk_widget_realize (mainwin); gtk_widget_show_all(mainwin); // load_ts_phrase(); disp_page(); #if 0 GdkWindow *gdkwin=gtk_widget_get_window(mainwin); gdk_window_set_events(gdkwin, GDK_BUTTON_PRESS_MASK|GDK_SCROLL_MASK| gdk_window_get_events(gdkwin)); #endif gtk_main(); return 0; }
int main(int argc, char **argv) { FILE *fp,*fw; char s[1024]; u_char chbuf[MAX_PHRASE_LEN * CH_SZ]; u_short phbuf[80]; u_int phbuf32[80]; u_int64_t phbuf64[80]; int i,j,idx,len, ofs; u_short kk; u_int64_t kk64; int hashidx[TSIN_HASH_N]; u_char clen; int lineCnt=0; gboolean reload = getenv("HIME_NO_RELOAD")==NULL; if (reload) { dbg("need reload\n"); } else { dbg("NO_GTK_INIT\n"); } if (getenv("NO_GTK_INIT")==NULL) gtk_init(&argc, &argv); dbg("enter %s\n", argv[0]); if (argc < 2) p_err("must specify input file"); init_TableDir(); if ((fp=fopen(argv[1], "rb"))==NULL) { printf("Cannot open %s\n", argv[1]); exit(-1); } skip_utf8_sigature(fp); char *outfile; int fofs = ftell(fp); myfgets(s, sizeof(s), fp); if (strstr(s, "!!pinyin")) { b_pinyin = TRUE; printf("is pinyin\n"); load_pin_juyin(); } else fseek(fp, fofs, SEEK_SET); fofs = ftell(fp); int keybits=0, maxkey=0; char keymap[128]; char kno[128]; bzero(kno, sizeof(kno)); myfgets(s, sizeof(s), fp); puts(s); if (strstr(s, TSIN_GTAB_KEY)) { is_gtab = TRUE; lineCnt++; if (argc < 3) p_err("useage %s input_file output_file", argv[0]); outfile = argv[2]; len=strlen((char *)s); if (s[len-1]=='\n') s[--len]=0; char aa[128]; keymap[0]=' '; sscanf(s, "%s %d %d %s", aa, &keybits, &maxkey, keymap+1); for(i=0; keymap[i]; i++) kno[keymap[i]]=i; if (maxkey * keybits > 32) gtabkey64 = TRUE; } else { if (argc==3) outfile = argv[2]; else outfile = "tsin32"; fseek(fp, fofs, SEEK_SET); } INMD inmd, *cur_inmd = &inmd; char *cphbuf; if (is_gtab) { cur_inmd->keybits = keybits; if (gtabkey64) { cphbuf = (char *)phbuf64; phsz = 8; key_cmp = key_cmp64; hash_shift = TSIN_HASH_SHIFT_64; cur_inmd->key64 = TRUE; } else { cphbuf = (char *)phbuf32; phsz = 4; hash_shift = TSIN_HASH_SHIFT_32; key_cmp = key_cmp32; cur_inmd->key64 = FALSE; } cur_inmd->last_k_bitn = (((cur_inmd->key64 ? 64:32) / cur_inmd->keybits) - 1) * cur_inmd->keybits; dbg("cur_inmd->last_k_bitn %d\n", cur_inmd->last_k_bitn); } else { cphbuf = (char *)phbuf; phsz = 2; key_cmp = key_cmp16; hash_shift = TSIN_HASH_SHIFT; } dbg("phsz: %d\n", phsz); phcount=ofs=0; while (!feof(fp)) { usecount_t usecount=0; lineCnt++; myfgets((char *)s,sizeof(s),fp); len=strlen((char *)s); if (s[0]=='#') continue; if (strstr(s, TSIN_GTAB_KEY)) continue; if (s[len-1]=='\n') s[--len]=0; if (len==0) continue; i=0; int chbufN=0; int charN = 0; while (s[i]!=' ' && i<len) { int len = utf8_sz((char *)&s[i]); memcpy(&chbuf[chbufN], &s[i], len); i+=len; chbufN+=len; charN++; } while ((i < len && s[i]==' ') || s[i]=='\t') i++; int phbufN=0; while (i<len && phbufN < charN && s[i]!=' ') { if (is_gtab) { kk64=0; int idx=0; while (s[i]!=' ' && i<len) { int k = kno[s[i]]; kk64|=(u_int64_t)k << ( LAST_K_bitN - idx*keybits); i++; idx++; } if (phsz==8) phbuf64[phbufN++]=kk64; else phbuf32[phbufN++]=(u_int)kk64; } else { kk=0; if (b_pinyin) { kk = pinyin2phokey(s+i); while (s[i]!=' ' && i<len) i++; } else { while (s[i]!=' ' && i<len) { if (kk==(BACK_QUOTE_NO << 9)) kk|=s[i]; else kk |= lookup((u_char *)&s[i]); i+=utf8_sz((char *)&s[i]); } } phbuf[phbufN++]=kk; } i++; } if (phbufN!=charN) { p_err("%s Line %d problem in phbufN!=chbufN %d != %d\n", s, lineCnt, phbufN, chbufN); } clen=phbufN; while (i<len && s[i]==' ') i++; if (i==len) usecount = 0; else usecount = atoi((char *)&s[i]); /* printf("len:%d\n", clen); */ if (phcount >= phidxsize) { phidxsize+=1024; if (!(phidx=(int *)realloc(phidx,phidxsize*4))) { puts("realloc err"); exit(1); } } phidx[phcount++]=ofs; int new_bfN = ofs + 1 + sizeof(usecount_t)+ phsz * clen + chbufN; if (bfsize < new_bfN) { bfsize = new_bfN + 1024*1024; bf = (char *)realloc(bf, bfsize); } memcpy(&bf[ofs++],&clen,1); memcpy(&bf[ofs],&usecount, sizeof(usecount_t)); ofs+=sizeof(usecount_t); memcpy(&bf[ofs], cphbuf, clen * phsz); ofs+=clen * phsz; memcpy(&bf[ofs], chbuf, chbufN); ofs+=chbufN; } fclose(fp); /* dumpbf(bf,phidx); */ puts("Sorting ...."); qsort(phidx,phcount, sizeof(phidx[0]),qcmp); if (!(sf=(u_char *)malloc(bfsize))) { puts("malloc err"); exit(1); } if (!(sidx=(int *)malloc(phidxsize*sizeof(int)))) { puts("malloc err"); exit(1); } // delete duplicate ofs=0; j=0; for(i=0;i<phcount;i++) { idx = phidx[i]; sidx[j]=ofs; len=bf[idx]; int tlen = utf8_tlen(&bf[idx + 1 + sizeof(usecount_t) + phsz*len], len); clen= phsz*len + tlen + 1 + sizeof(usecount_t); if (i && !qcmp_eq(&phidx[i-1], &phidx[i])) continue; memcpy(&sf[ofs], &bf[idx], clen); j++; ofs+=clen; } phcount=j; #if 1 puts("Sorting by usecount ...."); qsort(sidx, phcount, 4, qcmp_usecount); #endif for(i=0;i<256;i++) hashidx[i]=-1; for(i=0;i<phcount;i++) { idx=sidx[i]; idx+= 1 + sizeof(usecount_t); int v; if (phsz==2) { phokey_t kk; memcpy(&kk, &sf[idx], phsz); v = kk >> TSIN_HASH_SHIFT; } else if (phsz==4) {
int main(int argc, char **argv) { FILE *fp; int i; char clen; usecount_t usecount; gboolean pr_usecount = TRUE; char *fname; char *fname_out = NULL; gtk_init(&argc, &argv); if (argc <= 1) { printf("%s: file name expected\n", argv[0]); exit(1); } init_TableDir(); gboolean b_pinyin = is_pinyin_kbm(); for(i=1; i < argc;) { if (!strcmp(argv[i], "-nousecount")) { i++; pr_usecount = FALSE; b_pinyin = FALSE; } else if (!strcmp(argv[i], "-o")) { if (i==argc-1) p_err("-o need out file name"); fname_out = argv[i+1]; i+=2; } else fname = argv[i++]; } FILE *fp_out; if (!fname_out) { fp_out = stdout; } else { dbg("%s use %s\n", argv[0], fname_out); fp_out = fopen(fname_out, "w"); if (!fp_out) p_err("cannot create %s\n", fname_out); } if (b_pinyin) fprintf(fp_out, "!!pinyin\n"); if ((fp=fopen(fname,"rb"))==NULL) p_err("Cannot open %s %s", fname, sys_err_strA()); TSIN_GTAB_HEAD head; int phsz = 2; fread(&head, sizeof(head), 1, fp); if (!strcmp(head.signature, TSIN_GTAB_KEY)) { if (head.maxkey * head.keybits > 32) phsz = 8; else phsz = 4; } else rewind(fp); if (phsz > 2) { fprintf(stderr, "phsz %d keybits:%d\n", phsz, head.keybits); fprintf(stderr, "keymap '%s'\n", head.keymap); fprintf(fp_out,TSIN_GTAB_KEY" %d %d %s\n", head.keybits, head.maxkey, head.keymap+1); } while (!feof(fp)) { phokey_t phbuf[MAX_PHRASE_LEN]; u_int phbuf32[MAX_PHRASE_LEN]; u_int64_t phbuf64[MAX_PHRASE_LEN]; gboolean is_deleted = FALSE; fread(&clen,1,1,fp); if (clen < 0) { clen = - clen; is_deleted = TRUE; } fread(&usecount, sizeof(usecount_t), 1,fp); if (!pr_usecount) usecount = 0; if (phsz==2) fread(phbuf, sizeof(phokey_t), clen, fp); else if (phsz==4) fread(phbuf32, 4, clen, fp); else if (phsz==8) fread(phbuf64, 8, clen, fp); char tt[512]; int ttlen=0; tt[0]=0; for(i=0;i<clen;i++) { char ch[CH_SZ]; int n = fread(ch, 1, 1, fp); if (n<=0) goto stop; int len=utf8_sz(ch); fread(&ch[1], 1, len-1, fp); memcpy(tt+ttlen, ch, len); ttlen+=len; } tt[ttlen]=0; if (!tt[0]) continue; if (is_deleted) continue; fprintf(fp_out, "%s ", tt); for(i=0;i<clen;i++) { if (phsz==2) { if (b_pinyin) { char *t = phokey2pinyin(phbuf[i]); // dbg("z %s\n", t); fprintf(fp_out, "%s", t); } else prph2(fp_out, phbuf[i]); } else { u_int64_t k; if (phsz==4) k = phbuf32[i]; else k = phbuf64[i]; char tkey[16]; get_keymap_str(k, head.keymap, head.keybits, tkey); fprintf(fp_out, "%s", tkey); } if (i!=clen-1) fprintf(fp_out, " "); } fprintf(fp_out, " %d\n", usecount); } stop: fclose(fp); fclose(fp_out); exit(0); }
int main(int argc, char **argv) { #if WIN32 putenv("PANGO_WIN32_NO_UNISCRIBE=1"); #endif char *destroy = getenv("HIME_DESTROY_WINDOW"); if (destroy) destroy_window = atoi(destroy); // printf("HIME_DESTROY_WINDOW=%d\n",destroy_window); gtk_init (&argc, &argv); #if GTK_CHECK_VERSION(2,91,6) static char css[]= "GtkButton\n" "{\n" " border-width: 0;\n" " padding: 0;\n" " -GtkButton-inner-border: 0;\n" "}"; GtkCssProvider *provider = gtk_css_provider_new(); gtk_css_provider_load_from_data(provider, css, -1, NULL); gtk_style_context_add_provider_for_screen(gdk_display_get_default_screen(gdk_display_get_default()), GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); g_object_unref(provider); #else static char button_rc[]="style \"button\"\n" "{\n" " GtkButton::inner-border = {0,0,0,0}\n" "\n" "xthickness = 1\n" "ythickness = 0\n" "}\n" "class \"GtkButton\" style \"button\""; gtk_rc_parse_string(button_rc); #endif #if UNIX signal(SIGCHLD, SIG_IGN); signal(SIGPIPE, SIG_IGN); if (getenv("HIME_DAEMON")) { daemon(1,1); #if FREEBSD setpgid(0, getpid()); #else setpgrp(); #endif } #endif //putenv("GDK_NATIVE_WINDOWS=1"); #if WIN32 typedef BOOL (WINAPI* pImmDisableIME)(DWORD); pImmDisableIME pd; HMODULE imm32=LoadLibraryA("imm32"); if (imm32 && (pd=(pImmDisableIME)GetProcAddress(imm32, "ImmDisableIME"))) { (*pd)(0); } init_hime_program_files(); init_hime_im_serv(); #endif set_is_chs(); #if UNIX char *lc_ctype = getenv("LC_CTYPE"); char *lc_all = getenv("LC_ALL"); char *lang = getenv("LANG"); if (!lc_ctype && lang) lc_ctype = lang; if (lc_all) lc_ctype = lc_all; if (!lc_ctype) lc_ctype = "zh_TW.Big5"; dbg("hime get env LC_CTYPE=%s LC_ALL=%s LANG=%s\n", lc_ctype, lc_all, lang); #endif #if USE_XIM char *t = strchr(lc_ctype, '.'); if (t) { int len = t - lc_ctype; #if MAC_OS || FREEBSD lc = strdup(lc_ctype); lc[len] = 0; #else lc = g_strndup(lc_ctype, len); #endif } else lc = lc_ctype; char *xim_server_name = get_hime_xim_name(); strcpy(xim_arr[0].xim_server_name, xim_server_name); dbg("hime XIM will use %s as the default encoding\n", lc_ctype); #endif if (argc == 2 && (!strcmp(argv[1], "-v") || !strcmp(argv[1], "--version") || !strcmp(argv[1], "-h")) ) { setenv("NO_GTK_INIT", "", TRUE); p_err(" version %s\n", HIME_VERSION); } init_TableDir(); load_setttings(); load_gtab_list(TRUE); #if HIME_i18n_message bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); textdomain(GETTEXT_PACKAGE); #endif dbg("after gtk_init\n"); #if UNIX dpy = GDK_DISPLAY(); root=DefaultRootWindow(dpy); #endif get_dpy_xyl(); g_signal_connect(gdk_screen_get_default(),"size-changed", G_CALLBACK(screen_size_changed), NULL); dbg("display width:%d height:%d\n", dpy_xl, dpy_yl); #if UNIX start_inmd_window(); #endif #if USE_XIM open_xim(); #endif #if UNIX gdk_window_add_filter(NULL, my_gdk_filter, NULL); init_atom_property(); signal(SIGINT, sig_do_exit); signal(SIGHUP, sig_do_exit); // disable the io handler abort // void *olderr = XSetErrorHandler((XErrorHandler)xerror_handler); #endif #if UNIX init_hime_im_serv(xim_arr[0].xim_xwin); #endif exec_setup_scripts(); #if UNIX g_timeout_add(5000, delayed_start_cb, NULL); #else delayed_start_cb(NULL); #endif dbg("before gtk_main\n"); disp_win_kbm_capslock_init(); gtk_main(); return 0; }
int main(int argc, char **argv) { init_TableDir(); gtk_init (&argc, &argv); #if GCIN_i18n_message bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); textdomain(GETTEXT_PACKAGE); #endif if (strstr(argv[0],"trad2sim")) { b_trad2sim= TRUE; dbg("trad2sim\n"); } mainwin = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_has_resize_grip(GTK_WINDOW(mainwin), FALSE); gtk_window_set_default_size(GTK_WINDOW (mainwin), 320, 100); set_window_gcin_icon(mainwin); GtkWidget *sw = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); GtkWidget *vbox_top = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER(mainwin), vbox_top); GtkWidget *view = gtk_text_view_new (); gtk_widget_set_hexpand (view, TRUE); gtk_widget_set_vexpand (view, TRUE); gtk_container_add (GTK_CONTAINER(sw), view); gtk_box_pack_start (GTK_BOX (vbox_top), sw, TRUE, TRUE, 0); buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)); gtk_text_buffer_create_tag (buffer, "blue_background", "background", "blue", "foreground", "white", NULL); gtk_text_buffer_create_tag (buffer, "char_wrap", "wrap_mode", GTK_WRAP_CHAR, NULL); hbox_buttons = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox_top), hbox_buttons, FALSE, FALSE, 0); GtkWidget *button_fetch = gtk_button_new_with_label(_(_L("自剪貼區更新"))); gtk_box_pack_start (GTK_BOX (hbox_buttons), button_fetch, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (button_fetch), "clicked", G_CALLBACK (cb_button_fetch), NULL); GtkWidget *button_exit = gtk_button_new_with_label(_(_L("離開"))); gtk_box_pack_start (GTK_BOX (hbox_buttons), button_exit, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (button_exit), "clicked", G_CALLBACK (do_exit), NULL); g_signal_connect (G_OBJECT (mainwin), "delete_event", G_CALLBACK (do_exit), NULL); gtk_widget_show_all(mainwin); #if UNIX pclipboard = gtk_clipboard_get(GDK_SELECTION_PRIMARY); #else pclipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); #endif req_clipboard(); gtk_main(); return 0; }
int main(int argc, char **argv) { init_TableDir(); set_is_chs(); gtk_init (&argc, &argv); load_setttings(); load_gtab_list(TRUE); b_pinyin = is_pinyin_kbm(); #if GCIN_i18n_message bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); textdomain(GETTEXT_PACKAGE); #endif pinmd = &inmd[default_input_method]; if (pinmd->method_type == method_type_TSIN) { dbg("is tsin\n"); pho_load(); load_tsin_db(); ph_key_sz = 2; } else if (pinmd->filename) { dbg("gtab filename %s\n", pinmd->filename); init_gtab(default_input_method); is_gtab = TRUE; init_tsin_table_fname(pinmd, gtab_tsin_fname); load_tsin_db0(gtab_tsin_fname, TRUE); } else p_err("Your default input method %s doesn't use phrase database", pinmd->cname); dbg("ph_key_sz: %d\n", ph_key_sz); #if UNIX dpy = GDK_DISPLAY(); #endif mainwin = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_has_resize_grip(GTK_WINDOW(mainwin), FALSE); gtk_window_set_default_size(GTK_WINDOW (mainwin), 640, 520); set_window_gcin_icon(mainwin); GtkWidget *sw = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); GtkWidget *vbox_top = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER(mainwin), vbox_top); GtkWidget *view = gtk_text_view_new (); gtk_widget_set_hexpand (view, TRUE); gtk_widget_set_vexpand (view, TRUE); gtk_container_add (GTK_CONTAINER(sw), view); gtk_box_pack_start (GTK_BOX (vbox_top), sw, TRUE, TRUE, 0); buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)); #if UNIX char *text = _(_L("按滑鼠中鍵, 貼上你要 tslearn 學習的文章。")); #else char *text = _(_L("按 ctrl-V, 貼上你要 tslearn 學習的文章。")); #endif gtk_text_buffer_set_text (buffer, text, -1); gtk_text_buffer_create_tag (buffer, "blue_background", "background", "blue", "foreground", "white", NULL); gtk_text_buffer_create_tag (buffer, "char_wrap", "wrap_mode", GTK_WRAP_CHAR, NULL); hbox_buttons = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox_top), hbox_buttons, FALSE, FALSE, 0); GtkWidget *button_parse = gtk_button_new_with_label(_(_L("標示已知詞"))); gtk_box_pack_start (GTK_BOX (hbox_buttons), button_parse, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (button_parse), "clicked", G_CALLBACK (cb_button_parse), NULL); GtkWidget *button_add = gtk_button_new_with_label(_(_L("新增詞"))); gtk_box_pack_start (GTK_BOX (hbox_buttons), button_add, TRUE, TRUE, 0); g_signal_connect (G_OBJECT (button_add), "clicked", G_CALLBACK (cb_button_add), NULL); GtkWidget *button_quit = gtk_button_new_from_stock (GTK_STOCK_QUIT); gtk_box_pack_start (GTK_BOX (hbox_buttons), button_quit, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (button_quit), "clicked", G_CALLBACK (do_exit), NULL); g_signal_connect (G_OBJECT (mainwin), "delete_event", G_CALLBACK (do_exit), NULL); all_wrap(); gtk_widget_show_all(mainwin); #if WIN32 gtk_window_present(GTK_WINDOW(mainwin)); #endif gtk_main(); return 0; }
int main(int argc, char **argv) { char *destroy = getenv("HIME_DESTROY_WINDOW"); if (destroy) destroy_window = atoi(destroy); // printf("HIME_DESTROY_WINDOW=%d\n",destroy_window); gtk_init (&argc, &argv); signal(SIGCHLD, SIG_IGN); signal(SIGPIPE, SIG_IGN); if (getenv("HIME_DAEMON")) { daemon(1,1); #if FREEBSD setpgid(0, getpid()); #else setpgrp(); #endif } set_is_chs(); char *lc_ctype = getenv("LC_CTYPE"); char *lc_all = getenv("LC_ALL"); char *lang = getenv("LANG"); if (!lc_ctype && lang) lc_ctype = lang; if (lc_all) lc_ctype = lc_all; if (!lc_ctype) lc_ctype = "zh_TW.Big5"; dbg("hime get env LC_CTYPE=%s LC_ALL=%s LANG=%s\n", lc_ctype, lc_all, lang); #if USE_XIM char *t = strchr(lc_ctype, '.'); if (t) { int len = t - lc_ctype; #if MAC_OS || FREEBSD lc = strdup(lc_ctype); lc[len] = 0; #else lc = g_strndup(lc_ctype, len); #endif } else lc = lc_ctype; dbg("hime XIM will use %s as the default encoding\n", lc_ctype); #endif if (argc == 2 && (!strcmp(argv[1], "-v") || !strcmp(argv[1], "--version") || !strcmp(argv[1], "-h")) ) { #if GIT_HAVE p_err(" version %s (git %s)\n", HIME_VERSION, GIT_HASH); #else p_err(" version %s\n", HIME_VERSION); #endif } init_TableDir(); load_setttings(); load_gtab_list(TRUE); #if HIME_i18n_message bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); textdomain(GETTEXT_PACKAGE); #endif dbg("after gtk_init\n"); dpy = GDK_DISPLAY(); root=DefaultRootWindow(dpy); get_dpy_xyl(); g_signal_connect(gdk_screen_get_default(),"size-changed", G_CALLBACK(screen_size_changed), NULL); dbg("display width:%d height:%d\n", dpy_xl, dpy_yl); start_inmd_window(); #if USE_XIM open_xim(); #endif gdk_window_add_filter(NULL, my_gdk_filter, NULL); init_atom_property(); signal(SIGINT, sig_do_exit); signal(SIGHUP, sig_do_exit); // disable the io handler abort // void *olderr = XSetErrorHandler((XErrorHandler)xerror_handler); init_hime_im_serv(xim_xwin); exec_setup_scripts(); g_timeout_add(200, delayed_start_cb, NULL); // Old setting is 5000 here. dbg("before gtk_main\n"); disp_win_kbm_capslock_init(); gtk_main(); return 0; }