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; }
static gboolean cb_gtab_edit_append( GtkWidget *widget, GdkEvent *event, gpointer data ) { load_gtab_list(FALSE); char *fname = inmd[default_input_method].filename; if (!fname) return TRUE; char append_fname[128]; #if UNIX sprintf(append_fname, "~/.gcin/%s.append", fname); char prepare[128]; sprintf(prepare, GCIN_SCRIPT_DIR"/gtab.append_prepare %s", append_fname); system(prepare); char exec[128]; sprintf(exec, "%s %s", utf8_edit, append_fname); dbg("exec %s\n", exec); system(exec); #else strcat(strcpy(append_fname, fname), ".append"); char user_fname[512]; get_gcin_user_fname(append_fname, user_fname); if (GetFileAttributesA(user_fname) == INVALID_FILE_ATTRIBUTES) win32exec_script("gtab.append_prepare.bat", user_fname); else { win32exec_script("utf8-edit.bat", user_fname); } #endif return TRUE; }
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; }
static gboolean cb_gtab_edit_append( GtkWidget *widget, GdkEvent *event, gpointer data ) { load_gtab_list(FALSE); char *fname = inmd[default_input_method].filename; if (!fname) return TRUE; char append_fname[128]; sprintf(append_fname, "~/.config/hime/%s.append", fname); char prepare[128]; sprintf(prepare, HIME_SCRIPT_DIR"/gtab.append_prepare %s", append_fname); system(prepare); char exec[128]; sprintf(exec, "%s %s", utf8_edit, append_fname); dbg("exec %s\n", exec); system(exec); return TRUE; }
static void reload_data() { dbg("reload_data\n"); load_setttings(); if (current_method_type()==method_type_TSIN) set_wselkey(pho_selkey); // load_tsin_db(); change_win0_style(); change_win1_font(); change_win_gtab_style(); // change_win_pho_style(); load_tab_pho_file(); change_tsin_color(); update_win_kbm_inited(); destroy_inmd_menu(); load_gtab_list(TRUE); update_item_active_all(); #if 0 gcb_main(); #endif }
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) { #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(); 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; }