summaryrefslogtreecommitdiff
path: root/gtk/gtkfontsel.h
diff options
context:
space:
mode:
authorTim Janik <timj@gtk.org>1998-10-30 01:34:06 +0000
committerTim Janik <timj@src.gnome.org>1998-10-30 01:34:06 +0000
commite655e59bc721c02d16e2c6461af79b6fc3dbd78e (patch)
tree9a2600ddd19ae2269eee064f173c415d35d23a2f /gtk/gtkfontsel.h
parent4dce69399aff681ff59b311f6693e92bd79b0bfa (diff)
downloadgtk+-e655e59bc721c02d16e2c6461af79b6fc3dbd78e.tar.gz
renamed from gtk_object_data_set_destroy to fit the gtkobject.h API.
Fri Oct 30 01:56:08 1998 Tim Janik <timj@gtk.org> * gtk/gtkobject.c (gtk_object_remove_no_notify): renamed from gtk_object_data_set_destroy to fit the gtkobject.h API. * applied patch from Damon Chaplin <DAChaplin@email.msn.com>: * gtk/gtkfontsel.h: * gtk/gtkfontsel.c: Added support for an extra 'base' filter which an application can set to restrict the fonts available to the user (e.g. a terminal program only wants the user to be able to select fixed-width fonts). The type of font (bitmap/scalable/scaled bitmap) is now also a part of the filter, so that an application can request that only scalable fonts are shown. There are new functions to set the base & user filters. I've also stopped the up/down key press signals getting to the clists since the font selection widget handles them itself. It acted a bit strangely before.
Diffstat (limited to 'gtk/gtkfontsel.h')
-rw-r--r--gtk/gtkfontsel.h147
1 files changed, 108 insertions, 39 deletions
diff --git a/gtk/gtkfontsel.h b/gtk/gtkfontsel.h
index b54d8762e8..70e822e722 100644
--- a/gtk/gtkfontsel.h
+++ b/gtk/gtkfontsel.h
@@ -68,10 +68,41 @@ typedef struct _GtkFontSelectionDialogClass GtkFontSelectionDialogClass;
/* Used to determine whether we are using point or pixel sizes. */
typedef enum
{
- PIXELS_METRIC,
- POINTS_METRIC
+ GTK_FONT_METRIC_PIXELS,
+ GTK_FONT_METRIC_POINTS
} GtkFontMetricType;
+/* Used for determining the type of a font style, and also for setting filters.
+ These can be combined if a style has bitmaps and scalable fonts available.*/
+typedef enum
+{
+ GTK_FONT_BITMAP = 1 << 0,
+ GTK_FONT_SCALABLE = 1 << 1,
+ GTK_FONT_SCALABLE_BITMAP = 1 << 2,
+
+ GTK_FONT_ALL = 0x07
+} GtkFontType;
+
+/* These are the two types of filter available - base and user. The base
+ filter is set by the application and can't be changed by the user. */
+#define GTK_NUM_FONT_FILTERS 2
+typedef enum
+{
+ GTK_FONT_FILTER_BASE,
+ GTK_FONT_FILTER_USER
+} GtkFontFilterType;
+
+/* These hold the arrays of current filter settings for each property.
+ If nfilters is 0 then all values of the property are OK. If not the
+ filters array contains the indexes of the valid property values. */
+typedef struct _GtkFontFilter GtkFontFilter;
+struct _GtkFontFilter
+{
+ gint font_type;
+ guint16 *property_filters[GTK_NUM_FONT_PROPERTIES];
+ guint16 property_nfilters[GTK_NUM_FONT_PROPERTIES];
+};
+
struct _GtkFontSelection
{
@@ -89,7 +120,6 @@ struct _GtkFontSelection
GtkWidget *pixels_button;
GtkWidget *points_button;
GtkWidget *filter_button;
- GtkWidget *scaled_bitmaps_button;
GtkWidget *preview_entry;
GtkWidget *message_label;
@@ -101,6 +131,9 @@ struct _GtkFontSelection
/* These are on the filter page. */
GtkWidget *filter_vbox;
+ GtkWidget *type_bitmaps_button;
+ GtkWidget *type_scalable_button;
+ GtkWidget *type_scaled_bitmaps_button;
GtkWidget *filter_clists[GTK_NUM_FONT_PROPERTIES];
GdkFont *font;
@@ -114,22 +147,12 @@ struct _GtkFontSelection
fonts we try to find the nearest size to this. */
gint selected_size;
- /* This flag determines if scaled bitmapped fonts are acceptable. */
- gboolean scale_bitmapped_fonts;
-
/* These are the current property settings. They are indexes into the
strings in the GtkFontSelInfo properties array. */
guint16 property_values[GTK_NUM_STYLE_PROPERTIES];
- /* These hold the arrays of current filter settings for each property.
- If nfilters is 0 then all values of the property are OK. If not the
- filters array contains the indexes of the valid property values. */
- guint16 *property_filters[GTK_NUM_FONT_PROPERTIES];
- guint16 property_nfilters[GTK_NUM_FONT_PROPERTIES];
-
- /* This flags is set to scroll the clist to the selected value as soon as
- it appears. There might be a better way of doing this. */
- gboolean scroll_on_expose;
+ /* These are the base and user font filters. */
+ GtkFontFilter filters[GTK_NUM_FONT_FILTERS];
};
@@ -164,52 +187,98 @@ struct _GtkFontSelectionDialogClass
-/* FontSelection */
+/*****************************************************************************
+ * GtkFontSelection functions.
+ * see the comments in the GtkFontSelectionDialog functions.
+ *****************************************************************************/
GtkType gtk_font_selection_get_type (void);
GtkWidget* gtk_font_selection_new (void);
-
-/* This returns the X Logical Font Description fontname, or NULL if no font
- is selected. Note that there is a slight possibility that the font might not
- have been loaded OK. You should call gtk_font_selection_get_font() to see
- if it has been loaded OK.
- You should g_free() the returned font name after you're done with it. */
gchar* gtk_font_selection_get_font_name (GtkFontSelection *fontsel);
-
-/* This will return the current GdkFont, or NULL if none is selected or there
- was a problem loading it. Remember to use gdk_font_ref/unref() if you want
- to use the font (in a style, for example). */
GdkFont* gtk_font_selection_get_font (GtkFontSelection *fontsel);
-
-/* This sets the currently displayed font. It should be a valid X Logical
- Font Description font name (anything else will be ignored), e.g.
- "-adobe-courier-bold-o-normal--25-*-*-*-*-*-*-*"
- It returns TRUE on success. */
gboolean gtk_font_selection_set_font_name (GtkFontSelection *fontsel,
const gchar *fontname);
-
-/* This returns the text in the preview entry. You should copy the returned
- text if you need it. */
+void gtk_font_selection_set_filter (GtkFontSelection *fontsel,
+ GtkFontFilterType filter_type,
+ GtkFontType font_type,
+ gchar **foundries,
+ gchar **weights,
+ gchar **slants,
+ gchar **setwidths,
+ gchar **spacings,
+ gchar **charsets);
gchar* gtk_font_selection_get_preview_text (GtkFontSelection *fontsel);
-
-/* This sets the text in the preview entry. It will be copied by the entry,
- so there's no need to g_strdup() it first. */
void gtk_font_selection_set_preview_text (GtkFontSelection *fontsel,
const gchar *text);
-/* FontSelectionDialog */
+/*****************************************************************************
+ * GtkFontSelectionDialog functions.
+ * most of these functions simply call the corresponding function in the
+ * GtkFontSelection.
+ *****************************************************************************/
GtkType gtk_font_selection_dialog_get_type (void);
GtkWidget* gtk_font_selection_dialog_new (const gchar *title);
-/* These simply call the corresponding FontSelection function. */
+/* This returns the X Logical Font Description fontname, or NULL if no font
+ is selected. Note that there is a slight possibility that the font might not
+ have been loaded OK. You should call gtk_font_selection_dialog_get_font()
+ to see if it has been loaded OK.
+ You should g_free() the returned font name after you're done with it. */
gchar* gtk_font_selection_dialog_get_font_name (GtkFontSelectionDialog *fsd);
+
+/* This will return the current GdkFont, or NULL if none is selected or there
+ was a problem loading it. Remember to use gdk_font_ref/unref() if you want
+ to use the font (in a style, for example). */
GdkFont* gtk_font_selection_dialog_get_font (GtkFontSelectionDialog *fsd);
+
+/* This sets the currently displayed font. It should be a valid X Logical
+ Font Description font name (anything else will be ignored), e.g.
+ "-adobe-courier-bold-o-normal--25-*-*-*-*-*-*-*"
+ It returns TRUE on success. */
gboolean gtk_font_selection_dialog_set_font_name (GtkFontSelectionDialog *fsd,
const gchar *fontname);
+
+/* This sets one of the font filters, to limit the fonts shown. The filter_type
+ is GTK_FONT_FILTER_BASE or GTK_FONT_FILTER_USER. The font type is a
+ combination of the bit flags GTK_FONT_BITMAP, GTK_FONT_SCALABLE and
+ GTK_FONT_SCALABLE_BITMAP (or GTK_FONT_ALL for all font types).
+ The foundries, weights etc. are arrays of strings containing property
+ values, e.g. 'bold', 'demibold', and *MUST* finish with a NULL.
+ Standard long names are also accepted, e.g. 'italic' instead of 'i'.
+
+ e.g. to allow only fixed-width fonts ('char cell' or 'monospaced') to be
+ selected use:
+
+ gchar *spacings[] = { "c", "m", NULL };
+ gtk_font_selection_dialog_set_filter (GTK_FONT_SELECTION_DIALOG (fontsel),
+ GTK_FONT_FILTER_BASE, GTK_FONT_ALL,
+ NULL, NULL, NULL, NULL, spacings, NULL);
+
+ to allow only true scalable fonts to be selected use:
+
+ gtk_font_selection_dialog_set_filter (GTK_FONT_SELECTION_DIALOG (fontsel),
+ GTK_FONT_FILTER_BASE, GTK_FONT_SCALABLE,
+ NULL, NULL, NULL, NULL, NULL, NULL);
+*/
+void gtk_font_selection_dialog_set_filter (GtkFontSelectionDialog *fsd,
+ GtkFontFilterType filter_type,
+ GtkFontType font_type,
+ gchar **foundries,
+ gchar **weights,
+ gchar **slants,
+ gchar **setwidths,
+ gchar **spacings,
+ gchar **charsets);
+
+/* This returns the text in the preview entry. You should copy the returned
+ text if you need it. */
gchar* gtk_font_selection_dialog_get_preview_text (GtkFontSelectionDialog *fsd);
+
+/* This sets the text in the preview entry. It will be copied by the entry,
+ so there's no need to g_strdup() it first. */
void gtk_font_selection_dialog_set_preview_text (GtkFontSelectionDialog *fsd,
const gchar *text);