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

📄 gdyntext_ui.c

📁 GIMP Dynamic Text是GIMP的插件程序
💻 C
📖 第 1 页 / 共 3 页
字号:
/* * GIMP Dynamic Text -- This is a plug-in for The GIMP 1.0 * Copyright (C) 1998,1999,2000 Marco Lamberto <lm@geocities.com> * Web page: http://www.geocities.com/Tokyo/1474/gimp/ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * $Id: gdyntext_ui.c,v 1.33 2000/06/04 13:44:10 lm Exp lm $ */#include <sys/types.h>#include <sys/stat.h>#include <stdio.h>#include <string.h>#include <gtk/gtk.h>#include "gdyntext.h"#include "message_window.h"#include "charmap_window.h"#include "font_selection.h"#include "graphics/antialias.xpm"#include "graphics/align_left.xpm"#include "graphics/align_center.xpm"#include "graphics/align_right.xpm"#include "graphics/charmap.xpm"#include "graphics/font_preview.xpm"#include "graphics/font_preview_clear.xpm"#include "graphics/font_preview_default.xpm"#include "graphics/gdyntext_logo.xpm"#include "graphics/new_layer.xpm"#include "graphics/text_load.xpm"#include "graphics/layer_align_0.xpm"#include "graphics/layer_align_1.xpm"#include "graphics/layer_align_2.xpm"#include "graphics/layer_align_3.xpm"#include "graphics/layer_align_4.xpm"#include "graphics/layer_align_5.xpm"#include "graphics/layer_align_6.xpm"#include "graphics/layer_align_7.xpm"#include "graphics/layer_align_8.xpm"#include "graphics/layer_align_9.xpm"typedef struct {	GtkWidget *window;	GtkWidget *font_selection;	GtkWidget *font_rotation;	GtkWidget *line_spacing;	GtkWidget *font_color;	GtkWidget *textarea;	GtkWidget *font_preview;	GtkWidget *hbox_fp;	GtkWidget *charmap_window_toggle;	GtkWidget *new_layer_toggle;	GtkWidget *statusbar;	gint layer_alignment;	gboolean font_preview_enabled;	gboolean ok_pressed;} GdtMainWindow;GtkWidget *create_about_dialog(void);GtkWidget *create_color_selection_dialog(void);GdtMainWindow *create_main_window(GdtMainWindow **main_window, GdtVals *data);GtkWidget *create_message_window(GtkWidget **mw);void set_gdt_vals(GdtVals *data);void gtk_text_set_font(GtkText *text, GdkFont *font);void load_text(GtkWidget *widget, gpointer data);void on_about_dialog_close(GtkWidget *widget, gpointer data);void on_about_dialog_destroy(GtkWidget *widget, gpointer data);void on_button_toggled(GtkWidget *widget, gpointer data);void on_charmap_window_insert(GtkWidget *widget, gpointer data);void on_charmap_button_toggled(GtkWidget *widget, gpointer data);void on_color_selection_dialog_cancel_clicked(GtkWidget *widget, gpointer data);void on_color_selection_dialog_ok_clicked(GtkWidget *widget, gpointer data);void on_font_preview_button_clicked(GtkWidget *widget, gpointer data);void on_font_preview_toggled(GtkWidget *widget, gpointer data);void on_font_selection_changed(GtkWidget *widget, gpointer data);void on_load_text_clicked(GtkWidget *widget, gpointer data);void on_layer_align_change(GtkWidget *widget, gpointer data);void on_main_window_about_clicked(GtkWidget *widget, gpointer data);void on_main_window_align_c_clicked(GtkWidget *widget, gpointer data);void on_main_window_align_l_clicked(GtkWidget *widget, gpointer data);void on_main_window_align_r_clicked(GtkWidget *widget, gpointer data);void on_main_window_apply_clicked(GtkWidget *widget, gpointer data);void on_main_window_cancel_clicked(GtkWidget *widget, gpointer data);void on_main_window_font_color_clicked(GtkWidget *widget, gpointer data);void on_main_window_ok_press_event(GtkWidget *widget, GdkEvent *event, gpointer data);void on_main_window_ok_clicked(GtkWidget *widget, gpointer data);void on_window_close(GtkWidget *widget, gpointer data);void on_window_destroy(GtkWidget *widget, gpointer data);void toggle_button_update(GtkWidget *widget, GtkWidget *window);void update_font_color_preview(void);GdtMainWindow	*main_window = NULL;GtkWidget			*message_window = NULL;GtkWidget			*charmap_window = NULL;GtkWidget			*color_selection_dialog = NULL;GtkWidget			*about_dialog = NULL;GtkWidget			*load_file_selection = NULL;gdouble				col[3];#define COLOR_PREVIEW_WIDTH				20#define COLOR_PREVIEW_HEIGHT			20#define DEFAULT_FONT_PREVIEW_TEXT	"ABCDEFGHIJKLMNOPQRSTUVWXYZ"\																	"abcdefghijklmnopqrstuvwxyz"\																	"0123456789"#define TO_RGB(val) ( \	((gint32)(val[0] * 255.0) << 16) + \	((gint32)(val[1] * 255.0) << 8) + \	(gint32)(val[2] * 255.0) \)GtkWidget *create_message_window(GtkWidget **mw){	*mw = message_window_new(_("GDynText "GDYNTEXT_VERSION": Messages Window"));	gtk_widget_set_usize(*mw, 430, 170);	gtk_window_position(GTK_WINDOW(*mw), GTK_WIN_POS_CENTER);	gtk_signal_connect(GTK_OBJECT(*mw), "destroy", GTK_SIGNAL_FUNC(on_window_destroy), mw);	gtk_signal_connect(GTK_OBJECT(MESSAGE_WINDOW(*mw)->dismiss_button), "clicked", GTK_SIGNAL_FUNC(on_window_close), *mw);	return *mw;}GtkWidget* create_about_dialog(void){  GtkWidget *window;  GtkWidget *frame;  GtkWidget *button;  GtkWidget *label;  GdkPixmap *glade_pixmap;  GdkBitmap *glade_mask;  GtkWidget *pixmap;	GtkWidget *hbbox1;	GtkWidget *hbox1;	GtkWidget *vbox1;  window = gtk_window_new(GTK_WINDOW_DIALOG);  gtk_container_border_width(GTK_CONTAINER(window), 0);  gtk_window_set_title(GTK_WINDOW(window), _("GDynText "GDYNTEXT_VERSION": About ..."));  gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE);  gtk_window_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);	gtk_signal_connect(GTK_OBJECT(window), "destroy",		GTK_SIGNAL_FUNC(on_about_dialog_destroy), NULL);	/*	gtk_widget_realize(window);	gdk_window_set_decorations(window->window, !GDK_DECOR_ALL);	*/  hbox1 = gtk_hbox_new(FALSE, 0);  gtk_widget_show(hbox1);  gtk_container_add(GTK_CONTAINER(window), hbox1);  gtk_widget_realize(window);  glade_pixmap = gdk_pixmap_create_from_xpm_d(window->window, &glade_mask,		&window->style->bg[GTK_STATE_NORMAL], gdyntext_logo_xpm);  pixmap = gtk_pixmap_new(glade_pixmap, glade_mask);  gdk_pixmap_unref(glade_pixmap);  gdk_bitmap_unref(glade_mask);  gtk_widget_show(pixmap);	gtk_box_pack_start(GTK_BOX(hbox1), pixmap, FALSE, TRUE, 0);	vbox1 = gtk_vbox_new(FALSE, 4);	gtk_box_pack_start(GTK_BOX(hbox1), vbox1, TRUE, TRUE, 4);	gtk_widget_show(vbox1);	frame = gtk_frame_new(NULL);  gtk_box_pack_start(GTK_BOX(vbox1), frame, TRUE, TRUE, 4);	gtk_widget_show(frame);	  label = gtk_label_new(_(		"GIMP Dynamic Text "GDYNTEXT_VERSION"\n"		"Copyright (C) 1998,1999,2000 Marco Lamberto\n"		"E-mail: lm@geocities.com\n"		"Web page: "GDYNTEXT_WEB_PAGE""));  gtk_widget_show(label);  gtk_container_add(GTK_CONTAINER(frame), label);  gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);  gtk_misc_set_padding(GTK_MISC(label), 5, 5);  hbbox1 = gtk_hbutton_box_new();	gtk_box_pack_start(GTK_BOX(vbox1), hbbox1, FALSE, FALSE, 4);	gtk_button_box_set_layout(GTK_BUTTON_BOX(hbbox1), GTK_BUTTONBOX_END);  gtk_widget_show(hbbox1);  button = gtk_button_new_with_label(_("Ok"));  gtk_widget_show(button);  GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);  gtk_box_pack_end(GTK_BOX(hbbox1), button, FALSE, TRUE, 4);  gtk_widget_grab_default(button);	gtk_signal_connect(GTK_OBJECT(button), "clicked",		GTK_SIGNAL_FUNC(on_about_dialog_close), NULL);  return window;}GtkWidget* create_color_selection_dialog(void){  GtkWidget *colseldlg;  GtkWidget *ok_button1;  GtkWidget *cancel_button1;  colseldlg = gtk_color_selection_dialog_new(_("GDynText "GDYNTEXT_VERSION": Select Color"));  gtk_container_border_width(GTK_CONTAINER(colseldlg), 4);	gtk_signal_connect(GTK_OBJECT(&(GTK_COLOR_SELECTION_DIALOG(colseldlg)->window)), "destroy",		GTK_SIGNAL_FUNC(on_color_selection_dialog_cancel_clicked), &color_selection_dialog);  ok_button1 = GTK_COLOR_SELECTION_DIALOG(colseldlg)->ok_button;  gtk_widget_show(ok_button1);  GTK_WIDGET_SET_FLAGS(ok_button1, GTK_CAN_DEFAULT);	gtk_signal_connect(GTK_OBJECT(ok_button1), "clicked",		GTK_SIGNAL_FUNC(on_color_selection_dialog_ok_clicked), NULL);  cancel_button1 = GTK_COLOR_SELECTION_DIALOG(colseldlg)->cancel_button;  gtk_widget_show(cancel_button1);  GTK_WIDGET_SET_FLAGS(cancel_button1, GTK_CAN_DEFAULT);	gtk_signal_connect(GTK_OBJECT(cancel_button1), "clicked",		GTK_SIGNAL_FUNC(on_color_selection_dialog_cancel_clicked), NULL);  gtk_widget_hide(GTK_COLOR_SELECTION_DIALOG(colseldlg)->help_button);  return colseldlg;}GdtMainWindow *create_main_window(GdtMainWindow **main_window, GdtVals *data){	GdtMainWindow *mw;  GtkObject *font_size_adj;  GtkObject *line_spacing_adj;	GtkTooltips *tooltips;  GtkWidget *handlebox;  GtkWidget *vbox;	GtkWidget *hbox;  GtkWidget *hbox1;  GtkWidget *hbox2;  GtkWidget *hbox3;  GtkWidget *hbox4;  GtkWidget *hbbox1;  GtkWidget *hbbox2;  GtkWidget *label;  GtkWidget *toolbar;  GtkWidget *button_about;  GtkWidget *button_ok;  GtkWidget *button_cancel;  GtkWidget *button_apply;	GtkWidget *font_preview_toggle;	GtkWidget *vscrollbar;	GtkWidget *rbutt;	GtkWidget *telem;	GtkWidget *gtk_icon;	GtkWidget *optmenu;	GtkWidget *menu;	GtkWidget *item;	GdkPixmap *icon;	GdkBitmap *mask;	GdkColor *transparent = NULL;	GSList *group;	gint i;	gchar *lalign_menu[] = {		(gchar *)layer_align_0_xpm,	_("none"),		(gchar *)layer_align_1_xpm,	_("bottom-left"),		(gchar *)layer_align_2_xpm,	_("bottom-center"),		(gchar *)layer_align_3_xpm,	_("bottom-right"),		(gchar *)layer_align_4_xpm,	_("middle-left"),		(gchar *)layer_align_5_xpm,	_("center"),		(gchar *)layer_align_6_xpm,	_("middle-right"),		(gchar *)layer_align_7_xpm,	_("top-left"),		(gchar *)layer_align_8_xpm,	_("top-center"),		(gchar *)layer_align_9_xpm,	_("top-right"),		NULL,	NULL,	};	*main_window = mw = g_new0(GdtMainWindow, 1);	mw->font_preview_enabled = FALSE;	mw->ok_pressed = FALSE;		tooltips = gtk_tooltips_new();  mw->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);  gtk_window_set_title(GTK_WINDOW(mw->window), "GDynText "GDYNTEXT_VERSION);  gtk_window_set_policy(GTK_WINDOW(mw->window), TRUE, TRUE, FALSE);	gtk_widget_set_usize(mw->window, 550, 400);  gtk_container_border_width(GTK_CONTAINER(mw->window), 0);	gtk_signal_connect(GTK_OBJECT(mw->window), "destroy",		GTK_SIGNAL_FUNC(on_main_window_cancel_clicked), &mw->ok_pressed);  gtk_widget_realize(mw->window);  vbox = gtk_vbox_new(FALSE, 0);  gtk_container_add(GTK_CONTAINER(mw->window), vbox);  gtk_widget_show(vbox);	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);  toolbar = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS);	gtk_toolbar_set_space_size(GTK_TOOLBAR(toolbar), 8);	gtk_toolbar_set_button_relief(GTK_TOOLBAR(toolbar), GTK_RELIEF_NONE);  gtk_box_pack_start(GTK_BOX(hbox1), toolbar, FALSE, FALSE, 2);  gtk_widget_show(toolbar);		/* NEW LAYER Toggle */	icon = gdk_pixmap_create_from_xpm_d(mw->window->window, &mask, transparent, new_layer_xpm);	gtk_icon = gtk_pixmap_new(icon, mask);	mw->new_layer_toggle = telem = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL,		NULL, _("Toggle creation of a new layer"), NULL, gtk_icon, NULL, NULL);	gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(telem), data->new_layer);	gtk_signal_connect(GTK_OBJECT(telem), "toggled", GTK_SIGNAL_FUNC(on_button_toggled), &data->new_layer);	gtk_widget_set_sensitive(telem, !data->new_layer);	gtk_toolbar_append_space(GTK_TOOLBAR(toolbar));	/* TEXT LOAD */	icon = gdk_pixmap_create_from_xpm_d(mw->window->window, &mask, transparent, text_load_xpm);	gtk_icon = gtk_pixmap_new(icon, mask);	telem = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_CHILD_BUTTON, NULL,		NULL, _("Load text from file"), NULL, gtk_icon, NULL, NULL);	gtk_signal_connect(GTK_OBJECT(telem), "clicked", GTK_SIGNAL_FUNC(on_load_text_clicked), NULL);		gtk_toolbar_append_space(GTK_TOOLBAR(toolbar));		/* FONT COLOR */	mw->font_color = gtk_preview_new(GTK_PREVIEW_COLOR);	gtk_preview_size(GTK_PREVIEW(mw->font_color), COLOR_PREVIEW_WIDTH, COLOR_PREVIEW_HEIGHT);	col[0] = (gdouble)((data->color & 0xff0000) >> 16) / 255.0;	col[1] = (gdouble)((data->color & 0xff00) >> 8) / 255.0;	col[2] = (gdouble)(data->color & 0xff) / 255.0;	update_font_color_preview();	gtk_widget_show(mw->font_color);	gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_CHILD_BUTTON, NULL,

⌨️ 快捷键说明

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