⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gdyntext_ui.c

📁 GIMP Dynamic Text是GIMP的插件程序
💻 C
📖 第 1 页 / 共 3 页
字号:
		NULL, _("Text color"), NULL, mw->font_color,		GTK_SIGNAL_FUNC(on_main_window_font_color_clicked), NULL);	gtk_toolbar_append_space(GTK_TOOLBAR(toolbar));		/* ANTIALIASING Toggle */	icon = gdk_pixmap_create_from_xpm_d(mw->window->window, &mask, transparent, antialias_xpm);	gtk_icon = gtk_pixmap_new(icon, mask);	telem = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL,		NULL, _("Toggle anti-aliased text"), NULL, gtk_icon, NULL, NULL);	gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(telem), data->antialias);	gtk_signal_connect(GTK_OBJECT(telem), "clicked", GTK_SIGNAL_FUNC(on_button_toggled), &data->antialias);	gtk_toolbar_append_space(GTK_TOOLBAR(toolbar));		/* LEFT Align */	icon = gdk_pixmap_create_from_xpm_d(mw->window->window, &mask, &toolbar->style->bg[GTK_STATE_NORMAL], align_left_xpm);	gtk_icon = gtk_pixmap_new(icon, mask);	rbutt = gtk_radio_button_new(NULL);	telem = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_CHILD_RADIOBUTTON, rbutt,		NULL, _("Left aligned text"), NULL, gtk_icon, GTK_SIGNAL_FUNC(on_main_window_align_l_clicked), &data->alignment);	gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(telem), data->alignment == LEFT);		/* CENTER Align */	icon = gdk_pixmap_create_from_xpm_d(mw->window->window, &mask, &toolbar->style->bg[GTK_STATE_NORMAL], align_center_xpm);	gtk_icon = gtk_pixmap_new(icon, mask);	group = gtk_radio_button_group(GTK_RADIO_BUTTON(rbutt));	rbutt = gtk_radio_button_new(group);	telem = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_CHILD_RADIOBUTTON, rbutt,		NULL, _("Centered text"), NULL, gtk_icon, GTK_SIGNAL_FUNC(on_main_window_align_c_clicked), &data->alignment);	gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(telem), data->alignment == CENTER);		/* RIGHT Align */	icon = gdk_pixmap_create_from_xpm_d(mw->window->window, &mask, &toolbar->style->bg[GTK_STATE_NORMAL], align_right_xpm);	gtk_icon = gtk_pixmap_new(icon, mask);	group = gtk_radio_button_group(GTK_RADIO_BUTTON(rbutt));	rbutt = gtk_radio_button_new(group);	telem = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_CHILD_RADIOBUTTON, rbutt,		NULL, _("Right aligned text"), NULL, gtk_icon, GTK_SIGNAL_FUNC(on_main_window_align_r_clicked), &data->alignment);	gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(telem), data->alignment == RIGHT);	gtk_toolbar_append_space(GTK_TOOLBAR(toolbar));		/* FONT Preview Toggle */	icon = gdk_pixmap_create_from_xpm_d(mw->window->window, &mask, transparent, font_preview_xpm);	gtk_icon = gtk_pixmap_new(icon, mask);	font_preview_toggle = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL,		NULL, _("Toggle text font preview"), NULL, gtk_icon, NULL, NULL);	gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(font_preview_toggle), FALSE);	gtk_signal_connect(GTK_OBJECT(font_preview_toggle), "toggled", GTK_SIGNAL_FUNC(on_font_preview_toggled), NULL);	gtk_toolbar_append_space(GTK_TOOLBAR(toolbar));		/* CHARMAP Window Toggle */	icon = gdk_pixmap_create_from_xpm_d(mw->window->window, &mask, transparent, charmap_xpm);	gtk_icon = gtk_pixmap_new(icon, mask);	mw->charmap_window_toggle = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL,		NULL, _("Toggle CharMap window"), NULL, gtk_icon,		GTK_SIGNAL_FUNC(on_charmap_button_toggled), &mw->textarea);	handlebox = gtk_handle_box_new();  gtk_box_pack_start(GTK_BOX(vbox), handlebox, FALSE, FALSE, 0);	gtk_container_set_border_width(GTK_CONTAINER(handlebox), 4);	gtk_widget_show(handlebox);  hbox1 = gtk_hbox_new(FALSE, 0);  gtk_widget_show(hbox1);	gtk_container_add(GTK_CONTAINER(handlebox), hbox1);	/* Layer Alignment */	label = gtk_label_new(_("Layer\nAlignment"));  gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);  gtk_box_pack_start(GTK_BOX(hbox1), label, FALSE, TRUE, 3);	gtk_widget_show(label);	optmenu = gtk_option_menu_new();  gtk_box_pack_start(GTK_BOX(hbox1), optmenu, FALSE, TRUE, 3);	gtk_widget_show(optmenu);	gtk_tooltips_set_tip(tooltips, optmenu, _("Set layer alignment"), "");	menu = gtk_menu_new();	for (i = 0; lalign_menu[i] != NULL; i += 2) {		item = gtk_menu_item_new();		gtk_widget_show(item);		gtk_menu_append(GTK_MENU(menu), item);		gtk_signal_connect(GTK_OBJECT(item), "activate",			GTK_SIGNAL_FUNC(on_layer_align_change), (void *)(i >> 1));		if ((i >> 1) == data->layer_alignment)			mw->layer_alignment = data->layer_alignment;		hbox = gtk_hbox_new(FALSE, 0);		gtk_widget_show(hbox);		gtk_container_add(GTK_CONTAINER(item), hbox);		icon = gdk_pixmap_create_from_xpm_d(mw->window->window, &mask,			transparent, (gchar **)lalign_menu[i]);		gtk_icon = gtk_pixmap_new(icon, mask);		gtk_widget_show(gtk_icon);		gtk_box_pack_start(GTK_BOX(hbox), gtk_icon, FALSE, FALSE, 2);		label = gtk_label_new(lalign_menu[i + 1]);		gtk_widget_show(label);		gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);	}	gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu), menu);	gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu), mw->layer_alignment);	label = gtk_label_new(_("Line\nSpacing"));  gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);  gtk_box_pack_start(GTK_BOX(hbox1), label, FALSE, TRUE, 3);  gtk_widget_show(label);  line_spacing_adj = gtk_adjustment_new(0, -1000, 1000, 1, 15, 15);  mw->line_spacing = gtk_spin_button_new(GTK_ADJUSTMENT(line_spacing_adj), 1, 0);  gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(mw->line_spacing), TRUE);  gtk_spin_button_set_update_policy(GTK_SPIN_BUTTON(mw->line_spacing), GTK_UPDATE_ALWAYS);	gtk_spin_button_set_value(GTK_SPIN_BUTTON(mw->line_spacing), data->line_spacing);	gtk_tooltips_set_tip(tooltips, mw->line_spacing, _("Set line spacing"), "");  gtk_box_pack_start(GTK_BOX(hbox1), mw->line_spacing, FALSE, TRUE, 2);  gtk_widget_show(mw->line_spacing);	label = gtk_label_new(_("Rotation"));  gtk_box_pack_start(GTK_BOX(hbox1), label, FALSE, TRUE, 3);  gtk_widget_show(label);  font_size_adj = gtk_adjustment_new(0, -360, 360, 1, 15, 15);  mw->font_rotation = gtk_spin_button_new(GTK_ADJUSTMENT(font_size_adj), 1, 0);  gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(mw->font_rotation), TRUE);  gtk_spin_button_set_update_policy(GTK_SPIN_BUTTON(mw->font_rotation), GTK_UPDATE_ALWAYS);	gtk_spin_button_set_value(GTK_SPIN_BUTTON(mw->font_rotation), data->rotation);	gtk_tooltips_set_tip(tooltips, mw->font_rotation, _("Set text rotation (degrees)"), "");  gtk_box_pack_start(GTK_BOX(hbox1), mw->font_rotation, FALSE, TRUE, 2);  gtk_widget_show(mw->font_rotation);		/* Font Selection */	handlebox = gtk_handle_box_new();  gtk_box_pack_start(GTK_BOX(vbox), handlebox, FALSE, FALSE, 0);	gtk_container_set_border_width(GTK_CONTAINER(handlebox), 4);	gtk_widget_show(handlebox);  hbox2 = gtk_hbox_new(FALSE, 0);  gtk_widget_show(hbox2);	gtk_container_add(GTK_CONTAINER(handlebox), hbox2);	mw->font_selection = font_selection_new();	gtk_signal_connect(GTK_OBJECT(mw->font_selection), "font_changed",		GTK_SIGNAL_FUNC(on_font_selection_changed), NULL);  gtk_box_pack_start(GTK_BOX(hbox2), mw->font_selection, TRUE, TRUE, 2);	gtk_widget_show(mw->font_selection);	handlebox = gtk_handle_box_new();  gtk_box_pack_start(GTK_BOX(vbox), handlebox, FALSE, FALSE, 0);	gtk_container_set_border_width(GTK_CONTAINER(handlebox), 4);	gtk_widget_show(handlebox);	mw->hbox_fp = gtk_hbox_new(FALSE, 0);  gtk_widget_show(mw->hbox_fp);	gtk_container_add(GTK_CONTAINER(handlebox), mw->hbox_fp);	gtk_widget_set_sensitive(mw->hbox_fp, FALSE);	mw->font_preview = gtk_entry_new();	gtk_entry_set_text(GTK_ENTRY(mw->font_preview), DEFAULT_FONT_PREVIEW_TEXT);	gtk_tooltips_set_tip(tooltips, mw->font_preview, _("Editable text sample"), NULL);	gtk_box_pack_start(GTK_BOX(mw->hbox_fp), mw->font_preview, TRUE, TRUE, 5);	gtk_widget_show(mw->font_preview);	toolbar = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS);	gtk_toolbar_set_space_size(GTK_TOOLBAR(toolbar), 0);	gtk_toolbar_set_button_relief(GTK_TOOLBAR(toolbar), GTK_RELIEF_NONE);	gtk_widget_show(toolbar);	gtk_box_pack_start(GTK_BOX(mw->hbox_fp), toolbar, FALSE, TRUE, 0);	icon = gdk_pixmap_create_from_xpm_d(mw->window->window, &mask, transparent, font_preview_clear_xpm);	gtk_icon = gtk_pixmap_new(icon, mask);	gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), NULL,		_("Clear preview"), NULL, gtk_icon,		GTK_SIGNAL_FUNC(on_font_preview_button_clicked), "");	icon = gdk_pixmap_create_from_xpm_d(mw->window->window, &mask, transparent, font_preview_default_xpm);	gtk_icon = gtk_pixmap_new(icon, mask);	gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), NULL,		_("Preview default text sample"), NULL, gtk_icon,		GTK_SIGNAL_FUNC(on_font_preview_button_clicked), DEFAULT_FONT_PREVIEW_TEXT);	hbox4 = gtk_hbox_new(FALSE, 4);	gtk_box_pack_start(GTK_BOX(vbox), hbox4, TRUE, TRUE, 2);  gtk_widget_show(hbox4);  mw->textarea = gtk_text_new(NULL, NULL);  gtk_text_set_editable(GTK_TEXT(mw->textarea), TRUE);  gtk_box_pack_start(GTK_BOX(hbox4), mw->textarea, TRUE, TRUE, 0);  gtk_widget_show(mw->textarea);	gtk_widget_realize(mw->textarea);	gtk_text_insert(GTK_TEXT(mw->textarea), NULL, NULL, NULL, data->text, -1);	gtk_text_set_point(GTK_TEXT(mw->textarea), 0);	vscrollbar = gtk_vscrollbar_new(GTK_TEXT(mw->textarea)->vadj);  gtk_box_pack_start(GTK_BOX(hbox4), vscrollbar, FALSE, TRUE, 0);	gtk_widget_show(vscrollbar);  hbox3 = gtk_hbox_new(FALSE, 0);  gtk_box_pack_start(GTK_BOX(vbox), hbox3, FALSE, TRUE, 2);  gtk_widget_show(hbox3);  hbbox1 = gtk_hbutton_box_new();  gtk_box_pack_start(GTK_BOX(hbox3), hbbox1, FALSE, FALSE, 2);	gtk_button_box_set_layout(GTK_BUTTON_BOX(hbbox1), GTK_BUTTONBOX_START);  gtk_widget_show(hbbox1);  button_about = gtk_button_new_with_label(_("About"));  GTK_WIDGET_SET_FLAGS(button_about, GTK_CAN_DEFAULT);	gtk_signal_connect(GTK_OBJECT(button_about), "clicked",		GTK_SIGNAL_FUNC(on_main_window_about_clicked), NULL);  gtk_box_pack_start(GTK_BOX(hbbox1), button_about, FALSE, FALSE, 0);  gtk_widget_show(button_about);  hbbox2 = gtk_hbutton_box_new();  gtk_box_pack_end(GTK_BOX(hbox3), hbbox2, FALSE, FALSE, 2);	gtk_button_box_set_layout(GTK_BUTTON_BOX(hbbox2), GTK_BUTTONBOX_END);	gtk_button_box_set_spacing(GTK_BUTTON_BOX(hbbox2), 4);  gtk_widget_show(hbbox2);  button_ok = gtk_button_new_with_label(_("Ok"));  GTK_WIDGET_SET_FLAGS(button_ok, GTK_CAN_DEFAULT);	gtk_signal_connect(GTK_OBJECT(button_ok), "button_press_event",		GTK_SIGNAL_FUNC(on_main_window_ok_press_event), data);	gtk_signal_connect(GTK_OBJECT(button_ok), "clicked",		GTK_SIGNAL_FUNC(on_main_window_ok_clicked), &mw->ok_pressed);  gtk_box_pack_start(GTK_BOX(hbbox2), button_ok, FALSE, FALSE, 0);  gtk_widget_show(button_ok);	gtk_tooltips_set_tip(tooltips, button_ok,		_("Holding the Shift key while pressing this button will force GDynText "			"in changing the layer name as done in GIMP 1.0."), NULL);  button_apply = gtk_button_new_with_label(_("Apply"));  GTK_WIDGET_SET_FLAGS(button_apply, GTK_CAN_DEFAULT);	gtk_signal_connect(GTK_OBJECT(button_apply), "clicked",		GTK_SIGNAL_FUNC(on_main_window_apply_clicked), data);  gtk_box_pack_start(GTK_BOX(hbbox2), button_apply, FALSE, FALSE, 0);  gtk_widget_show(button_apply);  button_cancel = gtk_button_new_with_label(_("Close"));  GTK_WIDGET_SET_FLAGS(button_cancel, GTK_CAN_DEFAULT);	gtk_signal_connect(GTK_OBJECT(button_cancel), "clicked",		GTK_SIGNAL_FUNC(on_main_window_cancel_clicked), &mw->ok_pressed);  gtk_box_pack_start(GTK_BOX(hbbox2), button_cancel, FALSE, FALSE, 0);  gtk_widget_show(button_cancel);	mw->statusbar = gtk_statusbar_new();  gtk_box_pack_start(GTK_BOX(vbox), mw->statusbar, FALSE, TRUE, 0);	gtk_widget_show(mw->statusbar);  gtk_widget_grab_default(button_ok);	/* setup font preview */	if (data->preview) {		gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(font_preview_toggle), TRUE);		gtk_toggle_button_toggled(GTK_TOGGLE_BUTTON(font_preview_toggle));	}	font_selection_set_font_name(FONT_SELECTION(mw->font_selection), data->xlfd);  return mw;}gboolean gdt_create_ui(GdtVals *data){	int argc = 1;	char **argv;#ifndef DEBUG_UI	guchar *color_cube;#endif	argv = g_new0(gchar *, 1);	argv[0] = g_strdup("gdyntext");  gtk_set_locale();  gtk_init(&argc, &argv);	gtk_rc_init();	gtk_rc_parse(gimp_gtkrc());	gdk_set_use_xshm(gimp_use_xshm());#ifndef DEBUG_UI	gtk_preview_set_gamma(gimp_gamma());	gtk_preview_set_install_cmap(gimp_install_cmap());	color_cube = gimp_color_cube();	gtk_preview_set_color_cube(color_cube[0], color_cube[1], color_cube[2], color_cube[3]);#else	gtk_preview_set_install_cmap(TRUE);#endif	gtk_widget_set_default_visual(gtk_preview_get_visual());	gtk_widget_set_default_colormap(gtk_preview_get_cmap());	create_message_window(&message_window);	/*	if (data->messages) {		GList *l;		for (l = g_list_first(data->messages); l; l = l->next)			message_window_append(MESSAGE_WINDOW(message_window), (char *)l->data);	}	*/  main_window = create_main_window(&main_window, data);	if (data->messages) {		GList *l;		for (l = g_list_first(data->messages); l; l = l->next)			gtk_statusbar_push(GTK_STATUSBAR(main_window->statusbar), 1,				(char *)l->data);	}  gtk_widget_show(main_window->window);	if (MESSAGE_WINDOW(message_window)->contains_messages)		gtk_widget_show(message_window);  gtk_main();	if (main_window->ok_pressed)		set_gdt_vals(data);	return main_window->ok_pressed;}void set_gdt_vals(GdtVals *data) {	data->preview = main_window->font_preview_enabled;	strncpy(data->xlfd,		font_selection_get_font_name(FONT_SELECTION(main_window->font_selection)),		sizeof(data->xlfd));	data->rotation = gtk_spin_button_get_value_as_int(		GTK_SPIN_BUTTON(main_window->font_rotation));	data->line_spacing = gtk_spin_button_get_value_as_int(		GTK_SPIN_BUTTON(main_window->line_spacing));	data->layer_alignment = main_window->layer_alignment;	strncpy(data->text, gtk_editable_get_chars(		GTK_EDITABLE(main_window->textarea), 0, -1), sizeof(data->text));	data->color = TO_RGB(col);}void update_font_color_preview(void){	guchar row[COLOR_PREVIEW_WIDTH * 3];	guchar *p;	int i;	memset(row, 0, sizeof(row));	gtk_preview_draw_row(GTK_PREVIEW(main_window->font_color), row, 0, 0, COLOR_PREVIEW_WIDTH);	gtk_preview_draw_row(GTK_PREVIEW(main_window->font_color), row, 0, COLOR_PREVIEW_HEIGHT, COLOR_PREVIEW_WIDTH);	p = row;	p[0] = p[1] = p[2] = 0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -