void create_win1() { if (gwin1) return; gwin1 = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_has_resize_grip(GTK_WINDOW(gwin1), FALSE); #if UNIX gtk_window_set_resizable(GTK_WINDOW(gwin1), FALSE); #endif #if WIN32 set_no_focus(gwin1); #endif gtk_widget_realize (gwin1); #if UNIX set_no_focus(gwin1); #else win32_init_win(gwin1); #endif g_signal_connect (G_OBJECT (gwin1), "scroll-event", G_CALLBACK (button_scroll_event_tsin), NULL); }
void create_stat_win() { gwin_stat = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_has_resize_grip(GTK_WINDOW(gwin_stat), FALSE); #if WIN32 set_no_focus(gwin_stat); #endif gtk_container_set_border_width (GTK_CONTAINER (gwin_stat), 0); gtk_widget_realize (gwin_stat); #if UNIX GdkWindow *gdkwin0 = gtk_widget_get_window(gwin_stat); set_no_focus(gwin_stat); #else win32_init_win(gwin_stat); #endif GtkWidget *vbox = gtk_vbox_new (FALSE, 0); gtk_orientable_set_orientation(GTK_ORIENTABLE(vbox), GTK_ORIENTATION_VERTICAL); gtk_container_add (GTK_CONTAINER (gwin_stat), vbox); label_disp = gtk_label_new(NULL); gtk_box_pack_start (GTK_BOX (vbox), label_disp, TRUE, TRUE, 0); gtk_widget_show_all(gwin_stat); timeout_handle = g_timeout_add(3000, timeout_update_stat, NULL); }
GtkWidget *create_no_focus_win() { GtkWidget *win = gtk_window_new (GTK_WINDOW_TOPLEVEL); // gtk_window_set_has_resize_grip(GTK_WINDOW(win), FALSE); #if UNIX gtk_window_set_resizable(GTK_WINDOW(win), FALSE); #endif #if WIN32 set_no_focus(win); #endif gtk_container_set_border_width (GTK_CONTAINER (win), 0); gtk_widget_realize (win); #if UNIX // GdkWindow *gdkwin = gtk_widget_get_window(win); set_no_focus(win); #else win32_init_win(win); #endif return win; }
void create_win_pho() { if (gwin_pho) return; gwin_pho = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size(GTK_WINDOW(gwin_pho), 1 ,1); gtk_window_set_has_resize_grip(GTK_WINDOW(gwin_pho), FALSE); gtk_container_set_border_width (GTK_CONTAINER (gwin_pho), 0); gtk_widget_realize (gwin_pho); set_no_focus(gwin_pho); change_win_bg(gwin_pho); }
void create_win0() { if (gwin0) return; #if _DEBUG && 0 dbg("create_win0\n"); #endif gwin0 = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_has_resize_grip(GTK_WINDOW(gwin0), FALSE); gtk_container_set_border_width (GTK_CONTAINER (gwin0), 0); gtk_widget_realize (gwin0); set_no_focus(gwin0); }
void create_win0() { if (gwin0) return; #if _DEBUG && 0 dbg("create_win0\n"); #endif gwin0 = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_has_resize_grip(GTK_WINDOW(gwin0), FALSE); #if UNIX gtk_window_set_resizable(GTK_WINDOW(gwin0), FALSE); #endif #if WIN32 set_no_focus(gwin0); #endif gtk_container_set_border_width (GTK_CONTAINER (gwin0), 0); gtk_widget_realize (gwin0); #if UNIX GdkWindow *gdkwin0 = gtk_widget_get_window(gwin0); set_no_focus(gwin0); #else win32_init_win(gwin0); #endif }
void create_win_gtab() { if (gwin_gtab) return; gwin_gtab = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_has_resize_grip(GTK_WINDOW(gwin_gtab), FALSE); gtk_container_set_border_width (GTK_CONTAINER (gwin_gtab), 0); gtk_widget_realize (gwin_gtab); set_no_focus(gwin_gtab); if (use_tsin_sel_win()) init_tsin_selection_win(); }
void create_win_save_phrase(WSP_S *wsp, int wspN) { #if WIN32 if (test_mode) return; #endif if (!wspN) return; SAVE_SESS *sess = tzmalloc(SAVE_SESS, 1); GtkWidget *main_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_has_resize_grip(GTK_WINDOW(main_window), FALSE); sess->win = main_window; gtk_window_set_default_size(GTK_WINDOW (main_window), 20, 10); gtk_window_set_title(GTK_WINDOW(main_window), _(_L("加片語到詞庫"))); #if 0 g_signal_connect (G_OBJECT (main_window), "delete_event", G_CALLBACK (delete_event), sess); #endif GtkWidget *vbox = gtk_vbox_new (FALSE, 0); gtk_orientable_set_orientation(GTK_ORIENTABLE(vbox), GTK_ORIENTATION_VERTICAL); gtk_container_add (GTK_CONTAINER (main_window), vbox); char tt[512]; tt[0] = 0; wsp_str(wsp, wspN, tt); gtk_box_pack_start (GTK_BOX (vbox), gtk_label_new(tt), FALSE, FALSE, 0); int i; for(i=0; i<wspN; i++) { if (ph_key_sz==2) strcat(tt, phokey_to_str(wsp[i].key)); strcat(tt, " "); } if (tt[0]) gtk_box_pack_start (GTK_BOX (vbox), gtk_label_new(tt), FALSE, FALSE, 0); sess->mywsp = tmemdup(wsp, WSP_S, wspN); sess->mywspN = wspN; GtkWidget *hbox_cancel_ok = gtk_hbox_new (FALSE, 10); gtk_box_pack_start (GTK_BOX (vbox), hbox_cancel_ok , FALSE, FALSE, 5); GtkWidget *button_ok = gtk_button_new_from_stock (GTK_STOCK_OK); gtk_box_pack_start (GTK_BOX (hbox_cancel_ok), button_ok, TRUE, TRUE, 5); GtkWidget *button_cancel = gtk_button_new_from_stock (GTK_STOCK_CANCEL); gtk_box_pack_start (GTK_BOX (hbox_cancel_ok), button_cancel, TRUE, TRUE, 0); sess->label_countdown = gtk_label_new(NULL); gtk_box_pack_start (GTK_BOX (vbox), sess->label_countdown, FALSE, FALSE, 5); #if 1 #if WIN32 set_no_focus(main_window); #endif gtk_widget_realize(main_window); #if UNIX set_no_focus(main_window); #else win32_init_win(main_window); #endif #endif // dbg("mmmmmmmmmmmmm\n"); GTK_WIDGET_SET_FLAGS (button_ok, GTK_CAN_DEFAULT); gtk_widget_grab_default (button_ok); #if 1 // dbg("main_window %x\n", main_window); g_signal_connect (G_OBJECT (button_cancel), "clicked", G_CALLBACK (close_win_save_phrase), sess); g_signal_connect (G_OBJECT (button_ok), "clicked", G_CALLBACK (cb_ok), sess); #endif gtk_window_present(GTK_WINDOW(main_window)); gtk_window_set_keep_above(GTK_WINDOW(main_window), TRUE); // gtk_window_set_modal(GTK_WINDOW(main_window), TRUE); sess->countdown = 3; disp_countdown(sess); sess->countdown_handle = g_timeout_add(1000, timeout_countdown, sess); gtk_widget_show_all(main_window); }
static void create_win_kbm() { gdk_color_parse("red", &red); gwin_kbm = create_no_focus_win(); gtk_container_set_border_width (GTK_CONTAINER (gwin_kbm), 0); GtkWidget *hbox_top = gtk_hbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (gwin_kbm), hbox_top); GtkWidget *vbox_l = gtk_vbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox_top), vbox_l, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (vbox_l), 0); GtkWidget *vbox_r = gtk_vbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox_top), vbox_r, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (vbox_r), 0); int i; for(i=0;i<keysN;i++) { GtkWidget *hboxl = gtk_hbox_new (FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (hboxl), 0); gtk_box_pack_start (GTK_BOX (vbox_l), hboxl, TRUE, TRUE, 0); GtkWidget *hboxr = gtk_hbox_new (FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (hboxr), 0); gtk_box_pack_start (GTK_BOX (vbox_r), hboxr, FALSE, FALSE, 0); KEY *pk = keys[i]; int j; for(j=0; pk[j].enkey; j++) { KEY *ppk=&pk[j]; char flag=ppk->flag; if (!ppk->keysym) continue; GtkWidget *but=pk[j].but=gtk_button_new(); g_signal_connect (G_OBJECT (but), "pressed", G_CALLBACK (cb_button_click), ppk); if (!(ppk->flag & K_HOLD)) g_signal_connect (G_OBJECT (but), "released", G_CALLBACK (cb_button_release), ppk); GtkWidget *hbox = (flag&K_AREA_R)?hboxr:hboxl; gtk_container_set_border_width (GTK_CONTAINER (but), 0); gboolean fill = (flag & K_FILL) > 0; gtk_box_pack_start (GTK_BOX (hbox), but, fill, fill, 0); GtkWidget *v = gtk_vbox_new (FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (v), 0); gtk_container_add (GTK_CONTAINER (but), v); GtkWidget *laben = ppk->laben=gtk_label_new(_(ppk->enkey)); set_label_font_size(laben, gcin_font_size_win_kbm_en); gtk_box_pack_start (GTK_BOX (v), laben, fill, fill, 0); if (i>0&&i<5) { GtkWidget *lab = ppk->lab = gtk_label_new(" "); // set_label_font_size(lab, gcin_font_size_win_kbm); gtk_box_pack_start (GTK_BOX (v), lab, fill, fill, 0); } } } gtk_widget_realize (gwin_kbm); #if WIN32 win32_init_win(gwin_kbm); #else GdkWindow *gdkwin_kbm = gtk_widget_get_window(gwin_kbm); set_no_focus(gwin_kbm); #endif }
void create_win_sym() { if (!current_CS) { dbg("create_win_sym, null CS\n"); return; } if (current_CS->in_method < 0 || current_CS->in_method >= MAX_GTAB_NUM_KEY) { p_err("bad current_CS %d\n", current_CS->in_method); } if (current_method_type() != method_type_PHO && current_method_type() != method_type_TSIN && current_method_type() != method_type_ANTHY && !cur_inmd) return; if (read_syms() || cur_in_method != current_CS->in_method) { destory_win(); } else { if (!syms) return; } if (gwin_sym) { if (win_sym_enabled) show_win_sym(); else hide_win_sym(); return; } gwin_sym = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_has_resize_grip(GTK_WINDOW(gwin_sym), FALSE); #if WIN32 set_no_focus(gwin_sym); #endif cur_in_method = current_CS->in_method; GtkWidget *hbox_top = gtk_hbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (gwin_sym), hbox_top); GtkWidget *vbox_top = gtk_vbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox_top), vbox_top, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (vbox_top), 0); int i; for(i=0; i < symsN; i++) { SYM_ROW *psym = &syms[i]; GtkWidget *hbox_row = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox_top), hbox_row, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (hbox_row), 0); int j; for(j=0; j < psym->symN; j++) { char *str = psym->sym[j]; if (!str[0]) continue; GtkWidget *button = gtk_button_new(); GtkWidget *label = gtk_label_new(str); gtk_container_add(GTK_CONTAINER(button), label); set_label_font_size(label, gcin_font_size_symbol); gtk_container_set_border_width (GTK_CONTAINER (button), 0); gtk_box_pack_start (GTK_BOX (hbox_row), button, FALSE, FALSE, 0); if (utf8_str_N(str) > 0) { char phos[512]; sym_lookup_key(str, phos); int phos_len = strlen(phos); if (phos_len) { #if GTK_CHECK_VERSION(2,12,0) gtk_widget_set_tooltip_text (button, phos); #else GtkTooltips *button_pho_tips = gtk_tooltips_new (); gtk_tooltips_set_tip (GTK_TOOLTIPS (button_pho_tips), button, phos, NULL); #endif } } g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (cb_button_sym), label); } } gtk_box_pack_start (GTK_BOX (hbox_top), gtk_vseparator_new(), FALSE, FALSE, 0); GtkWidget *vbox_arrow = gtk_vbox_new (TRUE, 0); gtk_box_pack_start (GTK_BOX (hbox_top), vbox_arrow, TRUE, TRUE, 0); GtkWidget *eve_up=gtk_event_box_new(), *eve_down=gtk_event_box_new(); gtk_box_pack_start (GTK_BOX (vbox_arrow), eve_up, TRUE, TRUE, 0); gtk_container_add(GTK_CONTAINER(eve_up), gtk_arrow_new(GTK_ARROW_UP, GTK_SHADOW_IN)); gtk_box_pack_start (GTK_BOX (vbox_arrow), eve_down, TRUE, TRUE, 0); gtk_container_add(GTK_CONTAINER(eve_down), gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_IN)); g_signal_connect(G_OBJECT(eve_up),"button-press-event", G_CALLBACK(mouse_button_callback_up_down), (gpointer)1); g_signal_connect(G_OBJECT(eve_down),"button-press-event", G_CALLBACK(mouse_button_callback_up_down), NULL); gtk_widget_realize (gwin_sym); #if UNIX GdkWindow *gdkwin_sym = gtk_widget_get_window(gwin_sym); set_no_focus(gwin_sym); #else win32_init_win(gwin_sym); #endif if (win_sym_enabled) gtk_widget_show_all(gwin_sym); g_signal_connect (G_OBJECT (gwin_sym), "scroll-event", G_CALLBACK (button_scroll_event), NULL); move_win_sym(); #if 0 dbg("in_method:%d\n", current_CS->in_method); #endif return; }
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); }
static void create_win_message(char *icon, char *text, int duration) { GtkWidget *gwin_message = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_has_resize_grip(GTK_WINDOW(gwin_message), FALSE); gtk_container_set_border_width (GTK_CONTAINER (gwin_message), 0); gtk_widget_realize (gwin_message); GdkWindow *gdkwin = gtk_widget_get_window(gwin_message); set_no_focus(gwin_message); GtkWidget *hbox = gtk_hbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (gwin_message), hbox); if (icon[0] != '-') { GtkWidget *image = gtk_image_new_from_file(icon); if (text[0] == '-') { #if GTK_CHECK_VERSION(2,91,0) GdkPixbuf *pixbuf = NULL; GdkPixbufAnimation *anime = NULL; switch(gtk_image_get_storage_type(GTK_IMAGE(image))) { case GTK_IMAGE_PIXBUF: pixbuf = gtk_image_get_pixbuf(GTK_IMAGE(image)); break; case GTK_IMAGE_ANIMATION: anime = gtk_image_get_animation(GTK_IMAGE(image)); pixbuf = gdk_pixbuf_animation_get_static_image(anime); break; default: break; } cairo_surface_t *img = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, gdk_pixbuf_get_width(pixbuf), gdk_pixbuf_get_height(pixbuf)); cairo_t *cr = cairo_create(img); gdk_cairo_set_source_pixbuf(cr, pixbuf, 0, 0); cairo_paint(cr); cairo_region_t *mask = gdk_cairo_region_create_from_surface(img); gtk_widget_shape_combine_region(gwin_message, mask); cairo_region_destroy(mask); cairo_destroy(cr); cairo_surface_destroy(img); #else GdkBitmap *bitmap = NULL; gdk_pixbuf_render_pixmap_and_mask(gdk_pixbuf_new_from_file(icon, NULL), NULL, &bitmap, 128); gtk_widget_shape_combine_mask(gwin_message, bitmap, 0, 0); #endif } gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0); } if (text[0] != '-') { GtkWidget *label = gtk_label_new(text); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); } gtk_widget_show_all(gwin_message); int width, height; get_win_size(gwin_message, &width, &height); int ox=-1, oy; int szx, szy; if (tray_da_win) { gdk_window_get_origin (tray_da_win, &ox, &oy); #if !GTK_CHECK_VERSION(2,91,0) gdk_drawable_get_size(tray_da_win, &szx, &szy); #else szx = gdk_window_get_width(tray_da_win); szy = gdk_window_get_height(tray_da_win); #endif if (oy<height) { oy = szy; } else { oy -= height; if (oy + height > dpy_yl) oy = dpy_yl - height; if (oy < 0) oy = 0; } if (ox + width > dpy_xl) ox = dpy_xl - width; if (ox < 0) ox = 0; } else if (icon_main) { GdkRectangle rect; GtkOrientation ori; if (gtk_status_icon_get_geometry(icon_main, NULL, &rect, &ori)) { dbg("rect %d,%d\n", rect.x, rect.y, rect.width, rect.height); if (ori==GTK_ORIENTATION_HORIZONTAL) { ox=rect.x; if (rect.y > 100) oy=rect.y - height; else oy=rect.y + rect.height; } else { oy=rect.y; if (rect.x > 100) ox=rect.x - width; else ox=rect.x + rect.width; } } } if (ox < 0) { ox = dpy_xl - width; oy = dpy_yl - height; } gtk_window_move(GTK_WINDOW(gwin_message), ox, oy); g_timeout_add(duration, (GSourceFunc)timeout_destroy_window, gwin_message); }