diff options
author | Tim Janik <timj@gtk.org> | 1998-10-30 01:34:06 +0000 |
---|---|---|
committer | Tim Janik <timj@src.gnome.org> | 1998-10-30 01:34:06 +0000 |
commit | e655e59bc721c02d16e2c6461af79b6fc3dbd78e (patch) | |
tree | 9a2600ddd19ae2269eee064f173c415d35d23a2f /gtk/gtkfontsel.h | |
parent | 4dce69399aff681ff59b311f6693e92bd79b0bfa (diff) | |
download | gtk+-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.h | 147 |
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); |