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

📄 gtkfontsel.c

📁 gtk是linux一款强大的夸平台的图形化开发工具
💻 C
📖 第 1 页 / 共 5 页
字号:
						      gchar          *spacing,						      gchar	     *charset);/* FontSelectionDialog */static void    gtk_font_selection_dialog_class_init  (GtkFontSelectionDialogClass *klass);static void    gtk_font_selection_dialog_init	     (GtkFontSelectionDialog *fontseldiag);static gint    gtk_font_selection_dialog_on_configure(GtkWidget      *widget,						      GdkEventConfigure *event,						      GtkFontSelectionDialog *fsd);static GtkWindowClass *font_selection_parent_class = NULL;static GtkNotebookClass *font_selection_dialog_parent_class = NULL;GtkTypegtk_font_selection_get_type(){  static GtkType font_selection_type = 0;    if(!font_selection_type)    {      static const GtkTypeInfo fontsel_type_info =      {	"GtkFontSelection",	sizeof (GtkFontSelection),	sizeof (GtkFontSelectionClass),	(GtkClassInitFunc) gtk_font_selection_class_init,	(GtkObjectInitFunc) gtk_font_selection_init,	/* reserved_1 */ NULL,	/* reserved_2 */ NULL,        (GtkClassInitFunc) NULL,      };            font_selection_type = gtk_type_unique (GTK_TYPE_NOTEBOOK,					     &fontsel_type_info);    }    return font_selection_type;}static voidgtk_font_selection_class_init(GtkFontSelectionClass *klass){  GtkObjectClass *object_class;    object_class = (GtkObjectClass *) klass;    font_selection_parent_class = gtk_type_class (GTK_TYPE_NOTEBOOK);    object_class->destroy = gtk_font_selection_destroy;    gtk_font_selection_get_fonts ();}static voidgtk_font_selection_init(GtkFontSelection *fontsel){  GtkWidget *scrolled_win;  GtkWidget *text_frame;  GtkWidget *text_box, *frame;  GtkWidget *table, *label, *hbox, *hbox2, *clist, *button, *vbox, *alignment;  gint i, prop, row;  gchar *titles[] = { NULL, NULL, NULL };  gchar buffer[128];  gchar *size;  gint size_to_match;  gchar *row_text[3];  gchar *property, *text;  gboolean inserted;    /* Number of internationalized titles here must match number     of NULL initializers above */  titles[0] = _("Font Property");  titles[1] = _("Requested Value");  titles[2] = _("Actual Value");  /* Initialize the GtkFontSelection struct. We do this here in case any     callbacks are triggered while creating the interface. */  fontsel->font = NULL;  fontsel->font_index = -1;  fontsel->style = -1;  fontsel->metric = INITIAL_METRIC;  fontsel->size = INITIAL_FONT_SIZE;  fontsel->selected_size = INITIAL_FONT_SIZE;  fontsel->filters[GTK_FONT_FILTER_BASE].font_type = GTK_FONT_ALL;  fontsel->filters[GTK_FONT_FILTER_USER].font_type = GTK_FONT_BITMAP    | GTK_FONT_SCALABLE;    for (prop = 0; prop < GTK_NUM_FONT_PROPERTIES; prop++)    {      fontsel->filters[GTK_FONT_FILTER_BASE].property_filters[prop] = NULL;      fontsel->filters[GTK_FONT_FILTER_BASE].property_nfilters[prop] = 0;      fontsel->filters[GTK_FONT_FILTER_USER].property_filters[prop] = NULL;      fontsel->filters[GTK_FONT_FILTER_USER].property_nfilters[prop] = 0;    }    for (prop = 0; prop < GTK_NUM_STYLE_PROPERTIES; prop++)    fontsel->property_values[prop] = 0;    /* Create the main notebook page. */  gtk_notebook_set_homogeneous_tabs (GTK_NOTEBOOK (fontsel), TRUE);  gtk_notebook_set_tab_hborder (GTK_NOTEBOOK (fontsel), 8);  fontsel->main_vbox = gtk_vbox_new (FALSE, 4);  gtk_widget_show (fontsel->main_vbox);  gtk_container_set_border_width (GTK_CONTAINER (fontsel->main_vbox), 6);  label = gtk_label_new(_("Font"));  gtk_notebook_append_page (GTK_NOTEBOOK (fontsel),			    fontsel->main_vbox, label);    /* Create the table of font, style & size. */  table = gtk_table_new (3, 3, FALSE);  gtk_widget_show (table);  gtk_table_set_col_spacings(GTK_TABLE(table), 8);  gtk_box_pack_start (GTK_BOX (fontsel->main_vbox), table, TRUE, TRUE, 0);    fontsel->font_label = gtk_label_new(_("Font:"));  gtk_misc_set_alignment (GTK_MISC (fontsel->font_label), 0.0, 0.5);  gtk_widget_show (fontsel->font_label);  gtk_table_attach (GTK_TABLE (table), fontsel->font_label, 0, 1, 0, 1,		    GTK_FILL, 0, 0, 0);  label = gtk_label_new(_("Font Style:"));  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);  gtk_widget_show (label);  gtk_table_attach (GTK_TABLE (table), label, 1, 2, 0, 1,		    GTK_FILL, 0, 0, 0);  label = gtk_label_new(_("Size:"));  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);  gtk_widget_show (label);  gtk_table_attach (GTK_TABLE (table), label, 2, 3, 0, 1,		    GTK_FILL, 0, 0, 0);    fontsel->font_entry = gtk_entry_new();  gtk_entry_set_editable(GTK_ENTRY(fontsel->font_entry), FALSE);  gtk_widget_set_usize (fontsel->font_entry, 20, -1);  gtk_widget_show (fontsel->font_entry);  gtk_table_attach (GTK_TABLE (table), fontsel->font_entry, 0, 1, 1, 2,		    GTK_FILL, 0, 0, 0);  fontsel->font_style_entry = gtk_entry_new();  gtk_entry_set_editable(GTK_ENTRY(fontsel->font_style_entry), FALSE);  gtk_widget_set_usize (fontsel->font_style_entry, 20, -1);  gtk_widget_show (fontsel->font_style_entry);  gtk_table_attach (GTK_TABLE (table), fontsel->font_style_entry, 1, 2, 1, 2,		    GTK_FILL, 0, 0, 0);  fontsel->size_entry = gtk_entry_new();  gtk_widget_set_usize (fontsel->size_entry, 20, -1);  gtk_widget_show (fontsel->size_entry);  gtk_table_attach (GTK_TABLE (table), fontsel->size_entry, 2, 3, 1, 2,		    GTK_FILL, 0, 0, 0);  gtk_signal_connect (GTK_OBJECT (fontsel->size_entry), "key_press_event",		      (GtkSignalFunc) gtk_font_selection_size_key_press,		      fontsel);    /* Create the clists  */  fontsel->font_clist = gtk_clist_new(1);  gtk_clist_column_titles_hide (GTK_CLIST(fontsel->font_clist));  gtk_clist_set_column_auto_resize (GTK_CLIST (fontsel->font_clist), 0, TRUE);  scrolled_win = gtk_scrolled_window_new (NULL, NULL);  gtk_widget_set_usize (scrolled_win, FONT_LIST_WIDTH, FONT_LIST_HEIGHT);  gtk_container_add (GTK_CONTAINER (scrolled_win), fontsel->font_clist);  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),				  GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);  gtk_widget_show(fontsel->font_clist);  gtk_widget_show(scrolled_win);  gtk_table_attach (GTK_TABLE (table), scrolled_win, 0, 1, 2, 3,		    GTK_EXPAND | GTK_FILL,		    GTK_EXPAND | GTK_FILL, 0, 0);    fontsel->font_style_clist = gtk_clist_new(1);  gtk_clist_column_titles_hide (GTK_CLIST(fontsel->font_style_clist));  gtk_clist_set_column_auto_resize (GTK_CLIST (fontsel->font_style_clist),				    0, TRUE);  scrolled_win = gtk_scrolled_window_new (NULL, NULL);  gtk_widget_set_usize (scrolled_win, FONT_STYLE_LIST_WIDTH, -1);  gtk_container_add (GTK_CONTAINER (scrolled_win), fontsel->font_style_clist);  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),				  GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);  gtk_widget_show(fontsel->font_style_clist);  gtk_widget_show(scrolled_win);  gtk_table_attach (GTK_TABLE (table), scrolled_win, 1, 2, 2, 3,		    GTK_EXPAND | GTK_FILL,		    GTK_EXPAND | GTK_FILL, 0, 0);    fontsel->size_clist = gtk_clist_new(1);  gtk_clist_column_titles_hide (GTK_CLIST(fontsel->size_clist));  gtk_clist_set_column_width (GTK_CLIST(fontsel->size_clist), 0, 20);  scrolled_win = gtk_scrolled_window_new (NULL, NULL);  gtk_widget_set_usize (scrolled_win, FONT_SIZE_LIST_WIDTH, -1);  gtk_container_add (GTK_CONTAINER (scrolled_win), fontsel->size_clist);  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),				  GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);  gtk_widget_show(fontsel->size_clist);  gtk_widget_show(scrolled_win);  gtk_table_attach (GTK_TABLE (table), scrolled_win, 2, 3, 2, 3,		    GTK_FILL, GTK_FILL, 0, 0);      /* Insert the fonts. If there exist fonts with the same family but     different foundries, then the foundry name is appended in brackets. */  gtk_font_selection_show_available_fonts(fontsel);    gtk_signal_connect (GTK_OBJECT (fontsel->font_clist), "select_row",		      GTK_SIGNAL_FUNC(gtk_font_selection_select_font),		      fontsel);  GTK_WIDGET_SET_FLAGS (fontsel->font_clist, GTK_CAN_FOCUS);  gtk_signal_connect (GTK_OBJECT (fontsel->font_clist), "key_press_event",		      GTK_SIGNAL_FUNC(gtk_font_selection_on_clist_key_press),		      fontsel);  gtk_signal_connect_after (GTK_OBJECT (fontsel->font_clist), "expose_event",			    GTK_SIGNAL_FUNC(gtk_font_selection_expose_list),			    fontsel);    gtk_signal_connect (GTK_OBJECT (fontsel->font_style_clist), "select_row",		      GTK_SIGNAL_FUNC(gtk_font_selection_select_style),		      fontsel);  GTK_WIDGET_SET_FLAGS (fontsel->font_style_clist, GTK_CAN_FOCUS);  gtk_signal_connect (GTK_OBJECT (fontsel->font_style_clist),		      "key_press_event",		      GTK_SIGNAL_FUNC(gtk_font_selection_on_clist_key_press),		      fontsel);  gtk_signal_connect_after (GTK_OBJECT (fontsel->font_style_clist),			    "realize",			    GTK_SIGNAL_FUNC(gtk_font_selection_realize_list),			    fontsel);    /* Insert the standard font sizes */  gtk_clist_freeze (GTK_CLIST(fontsel->size_clist));  size_to_match = INITIAL_FONT_SIZE;  if (INITIAL_METRIC == GTK_FONT_METRIC_POINTS)    size_to_match = size_to_match / 10;  for (i = 0; i < sizeof(font_sizes) / sizeof(font_sizes[0]); i++)    {      sprintf(buffer, "%i", font_sizes[i]);      size = buffer;      gtk_clist_append(GTK_CLIST(fontsel->size_clist), &size);      if (font_sizes[i] == size_to_match)	{	  gtk_clist_select_row(GTK_CLIST(fontsel->size_clist), i, 0);	  gtk_entry_set_text(GTK_ENTRY(fontsel->size_entry), buffer);	}    }  gtk_clist_thaw (GTK_CLIST(fontsel->size_clist));    gtk_signal_connect (GTK_OBJECT (fontsel->size_clist), "select_row",		      GTK_SIGNAL_FUNC(gtk_font_selection_select_size),		      fontsel);  GTK_WIDGET_SET_FLAGS (fontsel->size_clist, GTK_CAN_FOCUS);  gtk_signal_connect (GTK_OBJECT (fontsel->size_clist), "key_press_event",		      GTK_SIGNAL_FUNC(gtk_font_selection_on_clist_key_press),		      fontsel);      /* create the Reset Filter & Metric buttons */  hbox = gtk_hbox_new(FALSE, 8);  gtk_widget_show (hbox);  gtk_box_pack_start (GTK_BOX (fontsel->main_vbox), hbox, FALSE, TRUE, 0);    fontsel->filter_button = gtk_button_new_with_label(_("Reset Filter"));  gtk_misc_set_padding (GTK_MISC (GTK_BIN (fontsel->filter_button)->child),			16, 0);  gtk_widget_show(fontsel->filter_button);  gtk_box_pack_start (GTK_BOX (hbox), fontsel->filter_button, FALSE, FALSE, 0);  gtk_widget_set_sensitive (fontsel->filter_button, FALSE);  gtk_signal_connect (GTK_OBJECT (fontsel->filter_button), "clicked",		      GTK_SIGNAL_FUNC(gtk_font_selection_on_clear_filter),		      fontsel);    hbox2 = gtk_hbox_new(FALSE, 0);  gtk_widget_show (hbox2);  gtk_box_pack_end (GTK_BOX (hbox), hbox2, FALSE, FALSE, 0);    label = gtk_label_new(_("Metric:"));  gtk_widget_show (label);  gtk_box_pack_start (GTK_BOX (hbox2), label, FALSE, TRUE, 8);    fontsel->points_button = gtk_radio_button_new_with_label(NULL, _("Points"));  gtk_widget_show (fontsel->points_button);  gtk_box_pack_start (GTK_BOX (hbox2), fontsel->points_button, FALSE, TRUE, 0);  if (INITIAL_METRIC == GTK_FONT_METRIC_POINTS)    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(fontsel->points_button),				TRUE);    fontsel->pixels_button = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(fontsel->points_button), _("Pixels"));  gtk_widget_show (fontsel->pixels_button);  gtk_box_pack_start (GTK_BOX (hbox2), fontsel->pixels_button, FALSE, TRUE, 0);  if (INITIAL_METRIC == GTK_FONT_METRIC_PIXELS)    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(fontsel->pixels_button),				TRUE);    gtk_signal_connect(GTK_OBJECT(fontsel->points_button), "toggled",		     (GtkSignalFunc) gtk_font_selection_metric_callback,		     fontsel);  gtk_signal_connect(GTK_OBJECT(fontsel->pixels_button), "toggled",		     (GtkSignalFunc) gtk_font_selection_metric_callback,		     fontsel);      /* create the text entry widget */  text_frame = gtk_frame_new (_("Preview:"));  gtk_widget_show (text_frame);  gtk_frame_set_shadow_type(GTK_FRAME(text_frame), GTK_SHADOW_ETCHED_IN);  gtk_box_pack_start (GTK_BOX (fontsel->main_vbox), text_frame,		      FALSE, TRUE, 0);    /* This is just used to get a 4-pixel space around the preview entry. */  text_box = gtk_hbox_new (FALSE, 0);  gtk_widget_show (text_box);  gtk_container_add (GTK_CONTAINER (text_frame), text_box);  gtk_container_set_border_width (GTK_CONTAINER (text_box), 4);    fontsel->preview_entry = gtk_entry_new ();  gtk_widget_show (fontsel->preview_entry);  gtk_widget_set_usize (fontsel->preview_entry, -1, INITIAL_PREVIEW_HEIGHT);  gtk_box_pack_start (GTK_BOX (text_box), fontsel->preview_entry,		      TRUE, TRUE, 0);    /* Create the message area */  fontsel->message_label = gtk_label_new("");  gtk_widget_show (fontsel->message_label);  gtk_box_pack_start (GTK_BOX (fontsel->main_vbox), fontsel->message_label, 		      FALSE, FALSE, 0);      /* Create the font info page */  fontsel->info_vbox = gtk_vbox_new (FALSE, 4);  gtk_widget_show (fontsel->info_vbox);  gtk_container_set_border_width (GTK_CONTAINER (fontsel->info_vbox), 2);  label = gtk_label_new(_("Font Information"));  gtk_notebook_append_page (GTK_NOTEBOOK (fontsel),			    fontsel->info_vbox, label);    fontsel->info_clist = gtk_clist_new_with_titles (3, titles);  gtk_widget_set_usize (fontsel->info_clist, 390, 150);  gtk_clist_set_column_width(GTK_CLIST(fontsel->info_clist), 0, 130);  gtk_clist_set_column_width(GTK_CLIST(fontsel->info_clist), 1, 130);  gtk_clist_set_column_width(GTK_CLIST(fontsel->info_clist), 2, 130);  gtk_clist_column_titles_passive(GTK_CLIST(fontsel->info_clist));  scrolled_win = gtk_scrolled_window_new (NULL, NULL);  gtk_container_add (GTK_CONTAINER (scrolled_win), fontsel->info_clist);  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),				  GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);  gtk_widget_show(fontsel->info_clist);  gtk_widget_show(scrolled_win);  gtk_box_pack_start (GTK_BOX (fontsel->info_vbox), scrolled_win,		      TRUE, TRUE, 0);    /* Insert the property names */  gtk_clist_freeze (GTK_CLIST(fontsel->info_clist));  row_text[1] = "";  row_text[2] = "";  for (i = 0; i < GTK_XLFD_NUM_FIELDS; i++)    {      row_text[0] = _(xlfd_field_names[i]);      gtk_clist_append(GTK_CLIST(fontsel->info_clist), row_text);      gtk_clist_set_shift(GTK_CLIST(fontsel->info_clist), i, 0, 0, 4);      gtk_clist_set_shift(GTK_CLIST(fontsel->info_clist), i, 1, 0, 4);      gtk_clist_set_shift(GTK_CLIST(fontsel->info_clist), i, 2, 0, 4);    }  gtk_clist_thaw (GTK_CLIST(fontsel->info_clist));    label = gtk_label_new(_("Requested Font Name:"));  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);  gtk_widget_show (label);  gtk_box_pack_start (GTK_BOX (fontsel->info_vbox), label, FALSE, TRUE, 0);    fontsel->requested_font_name = gtk_entry_new();  gtk_entry_set_editable(GTK_ENTRY(fontsel->requested_font_name), FALSE);  gtk_widget_show (fontsel->requested_font_name);  gtk_box_pack_start (GTK_BOX (fontsel->info_vbox),		      fontsel->requested_font_name, FALSE, TRUE, 0);    label = gtk_label_new(_("Actual Font Name:"));  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);  gtk_widget_show (label);  gtk_box_pack_start (GTK_BOX (fontsel->info_vbox), label, FALSE, TRUE, 0);    fontsel->actual_font_name = gtk_entry_new();  gtk_entry_set_editable(GTK_ENTRY(fontsel->actual_font_name), FALSE);  gtk_widget_show (fontsel->actual_font_name);  gtk_box_pack_start (GTK_BOX (fontsel->info_vbox),		      fontsel->actual_font_name, FALSE, TRUE, 0);  

⌨️ 快捷键说明

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