nautilus/libnautilus-private/nautilus-font-picker.c
Darin Adler 2ae47c7563 Cut over to HEAD of Bonobo. This check-in includes all the changes
needed to compile and run, but there are many things wrong
	visually that may take a while to get fixed.

	* src/nautilus-window-menus.c: (file_menu_new_window_callback),
	(file_menu_close_window_callback),
	(file_menu_close_all_windows_callback),
	(file_menu_toggle_find_mode_callback),
	(file_menu_web_search_callback), (edit_menu_undo_callback),
	(edit_menu_cut_callback), (edit_menu_copy_callback),
	(edit_menu_paste_callback), (edit_menu_clear_callback),
	(go_menu_back_callback), (go_menu_forward_callback),
	(go_menu_up_callback), (go_menu_home_callback),
	(go_menu_forget_history_callback), (view_menu_reload_callback),
	(view_menu_show_hide_sidebar_callback),
	(view_menu_show_hide_tool_bar_callback),
	(view_menu_show_hide_location_bar_callback),
	(view_menu_show_hide_status_bar_callback),
	(nautilus_window_update_show_hide_menu_items),
	(view_menu_zoom_in_callback), (view_menu_zoom_out_callback),
	(view_menu_zoom_normal_callback),
	(bookmarks_menu_add_bookmark_callback),
	(bookmarks_menu_edit_bookmarks_callback),
	(user_level_customize_callback), (customize_callback),
	(change_appearance_callback), (help_menu_about_nautilus_callback),
	(help_menu_nautilus_feedback_callback), (switch_to_user_level),
	(user_level_menu_item_callback), (append_placeholder),
	(append_separator), (append_bookmark_to_menu),
	(create_menu_item_from_node), (remove_bookmarks_after),
	(remove_underline_accelerator_from_menu_title),
	(new_top_level_menu), (add_user_level_menu_item),
	(nautilus_window_initialize_menus),
	(nautilus_window_update_find_menu_item),
	(update_user_level_menu_items), (convert_verb_to_user_level),
	(convert_user_level_to_verb), (update_preferences_dialog_title):
	* src/nautilus-window.c: (nautilus_window_clear_status),
	(nautilus_window_set_status), (install_status_bar),
	(nautilus_window_constructed), (nautilus_window_set_arg),
	(nautilus_window_get_arg), (nautilus_window_destroy),
	(nautilus_window_allow_back), (nautilus_window_allow_forward),
	(nautilus_window_allow_up), (nautilus_window_allow_reload),
	(nautilus_window_zoom_level_changed_callback),
	(nautilus_window_set_content_view_widget), (show_dock_item),
	(hide_dock_item), (dock_item_showing),
	(nautilus_window_hide_tool_bar), (nautilus_window_show_tool_bar),
	(nautilus_window_tool_bar_showing),
	(nautilus_window_hide_status_bar),
	(nautilus_window_show_status_bar),
	(nautilus_window_status_bar_showing):
	Convert to new API. Some is disabled with #ifdef UIH.

	* Makefile.am:
	* configure.in:
	Turned off build of the idl directory, build components after src.

	* components/adapter/main.c:
	* components/notes/nautilus-notes.c:
	* components/sample/main.c:
	* libnautilus-extensions/nautilus-font-picker.c:
	* libnautilus-extensions/nautilus-global-preferences.c:
	* libnautilus-extensions/nautilus-password-dialog.c:
	* libnautilus-extensions/nautilus-preferences-item.c:
	* libnautilus/nautilus-undo-transaction.c:
	* libnautilus/nautilus-undo.c:
	* src/nautilus-application.c:
	* src/nautilus-history-frame.c:
	* src/nautilus-link-set-window.c:
	* src/nautilus-main.c:
	* src/nautilus-shell.c:
	* src/nautilus-sidebar.c:
	* src/nautilus-view-frame-corba.c:
	* src/nautilus-zoomable-frame-corba.c:
	* test/test-nautilus-font-picker.c:
	* test/test-nautilus-image.c: (create_font_picker_frame):
	* test/test-nautilus-label.c: (create_font_picker_frame):
	* test/test-nautilus-preferences.c:
	* test/test-nautilus-widgets.c: (radio_group_load_it_up):
	Fixed includes.

	* test/test-nautilus-image.c: (create_font_picker_frame):
	* test/test-nautilus-label.c: (create_font_picker_frame):
	* test/test-nautilus-widgets.c: (radio_group_load_it_up):
	Turned off localization of some strings in tests.

	* components/adapter/nautilus-adapter-control-embed-strategy.c:
	(nautilus_adapter_control_embed_strategy_new):
	* components/adapter/nautilus-adapter-control-embed-strategy.h:
	* components/adapter/nautilus-adapter-embed-strategy.c:
	(nautilus_adapter_embed_strategy_get):
	* components/adapter/nautilus-adapter-embed-strategy.h:
	* components/adapter/nautilus-adapter-embeddable-embed-strategy.c:
	(nautilus_adapter_embeddable_embed_strategy_new):
	* components/adapter/nautilus-adapter-embeddable-embed-strategy.h:
	Embedding code now deals with Bonobo_UIContainer, not
	Bonobo_UIHandler.

	* components/adapter/nautilus-adapter.c: (nautilus_adapter_new):
	This code not only had to be changed to deal with the
	Bonobo_UIContainer instead of Bonobo_UIHandler, but it also needed
	to deal with the containing item (was remote_ui_handler), not the
	local component.

	* components/adapter/nautilus-adapter-embeddable-embed-strategy.c:
	(nautilus_adapter_embeddable_embed_strategy_new):
	* components/adapter/nautilus-adapter.c:
	BonoboContainer was renamed BonoboItemContainer.

	* components/history/nautilus-history-view.c:
	Remove unused BonoboUIHandler * field.

	* components/loser/content/Makefile.am:
	* components/loser/sidebar/Makefile.am:
	* components/mozilla/Makefile.am:
	* components/sample/Makefile.am:
	* src/Makefile.am:
	* src/file-manager/Makefile.am:
	Added the necessary defines and build rules to install ui.xml
	files and locate them from the C code.

	* src/file-manager/nautilus-directory-view-ui.xml:
	* src/file-manager/nautilus-icon-view-ui.xml:
	* src/file-manager/nautilus-search-list-view-ui.xml:
	* src/nautilus-shell-ui.xml:
	Added definitions of user interface.

	* components/loser/content/nautilus-content-loser-ui.xml:
	* components/loser/sidebar/nautilus-sidebar-loser-ui.xml:
	* components/mozilla/nautilus-mozilla-ui.xml:
	* components/sample/nautilus-sample-content-view-ui.xml:
	Added empty placeholders for user interface.

	* components/loser/content/nautilus-content-loser.c:
	(loser_merge_bonobo_items_callback):
	* components/loser/sidebar/nautilus-sidebar-loser.c:
	(loser_merge_bonobo_items_callback):
	* components/mozilla/nautilus-mozilla-content-view.c:
	(mozilla_merge_bonobo_items_callback):
	* components/sample/nautilus-sample-content-view.c:
	(sample_merge_bonobo_items_callback):
	Use nautilus_view_set_up_ui to get the user interface from a
	ui.xml file. Put #ifdef UIH around old code to make the items work
	that still needs to be visited.

	* libnautilus-extensions/nautilus-bonobo-extensions.c:
	* libnautilus-extensions/nautilus-bonobo-extensions.h:
	* libnautilus-extensions/nautilus-undo-manager.c:
	* libnautilus-extensions/nautilus-undo-manager.h:
	* libnautilus/nautilus-clipboard.c: (add_menu_items_callback),
	(remove_menu_items_callback),
	(nautilus_clipboard_set_up_editable_from_bonobo_control):
	* libnautilus/nautilus-clipboard.h:
	Wrapped code in ifdef UIH to disable it until it can be converted
	to the new Bonobo.

	* libnautilus-extensions/nautilus-caption-table.h:
	* libnautilus-extensions/nautilus-caption.h:
	* libnautilus-extensions/nautilus-font-picker.h:
	* libnautilus-extensions/nautilus-preferences-group.h:
	* libnautilus-extensions/nautilus-preferences-item.h:
	* libnautilus-extensions/nautilus-radio-button-group.h:
	* src/nautilus-about.h:
	Got rid of any cases where headers include the omnibus header
	<gnome.h>. These made the conversion process harder, which is why
	we fixed them.

	* libnautilus/libnautilus.h:
	Got rid of cases where headers include the omnibus header
	<bonobo.h>.

	* libnautilus/nautilus-view.h:
	* libnautilus/nautilus-view.c: (nautilus_view_set_up_ui):
	Added a helper function to make it easy for Nautilus components to
	load their UI and get it attached to the Nautilus:View object.

	* nautilus.spec.in: Install the nautilus-*-ui.xml files too.

	* src/file-manager/fm-directory-view.h:
	* src/file-manager/fm-directory-view.c:
	(bonobo_menu_select_all_callback),
	(bonobo_menu_empty_trash_callback),
	(bonobo_control_activate_callback): Convert to new API.
	(fm_directory_view_get_bonobo_ui_container): Name and purpose
	changed slightly for new API.
	(fm_directory_view_real_merge_menus): Merge with new API.
	(fm_directory_view_real_update_menus): Disabled this code for now.

	* src/file-manager/fm-icon-view.c: (fm_icon_view_destroy): Destroy
	icon view's own component at destroy time.
	(context_menu_layout_radio_item_callback),
	(append_one_context_menu_layout_item),
	(fm_icon_view_create_background_context_menu_items),
	(update_layout_menus): Convert to new API, disable some with
	#ifdef UIH.
	(get_sort_criterion_by_verb),
	(set_sort_criterion_by_verb), (sort_callback): Convert to new API.
	(fm_icon_view_merge_menus): Merge with new API, creating our own
	UI component separate from the directory view's.
	(fm_icon_view_update_menus): Disable with #ifdef UIH.

	* src/file-manager/fm-search-list-view.h:
	* src/file-manager/fm-search-list-view.c:
	(fm_search_list_view_initialize_class),
	(fm_search_list_view_initialize), (real_destroy),
	(indexing_info_callback), (real_merge_menus), (real_update_menus):
	Add code necessary to use a separate UI component, and disabled
	the actual menu set-up code with #ifdef UIH. This required adding
	a details struct.

	* src/nautilus-desktop-window.c: (realize): Turned off the code
	that hides the desktop elements.

	* src/nautilus-window-private.h:
	* src/nautilus-view-frame.h:
	* src/nautilus-view-frame.c: (nautilus_view_frame_destroy),
	(nautilus_view_frame_new), (nautilus_view_frame_load_client):
	* src/nautilus-window-manage-views.c: (load_content_view),
	(nautilus_window_set_sidebar_panels):
	Change to use Bonobo_UIContainer instead of Bonobo_UIHandler.

	* src/nautilus-window-toolbars.c: (remember_buttons),
	(nautilus_window_initialize_toolbars): Leave this code around and
	change it enough to compile and run, even though it's creating a
	second, invisible toolbar.

	* src/nautilus-window.h: Change to be a BonoboWin subclass instead
	of a GnomeApp subclass.
2000-10-05 23:47:54 +00:00

498 lines
17 KiB
C

/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
/* nautilus-font-picker.c - A simple widget to select scalable fonts.
Copyright (C) 1999, 2000 Eazel, Inc.
The Gnome Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The Gnome Library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the Gnome Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
Authors: Ramiro Estrugo <ramiro@eazel.com>
*/
#include <config.h>
#include "nautilus-font-picker.h"
#include "nautilus-gtk-macros.h"
#include "nautilus-glib-extensions.h"
#include "nautilus-string-picker.h"
#include "nautilus-string.h"
#include <gtk/gtklabel.h>
#include <gtk/gtkentry.h>
#include <gtk/gtksignal.h>
#include <libgnome/gnome-i18n.h>
static const gint FONT_PICKER_SPACING = 10;
/* Signals */
typedef enum
{
SELECTED_FONT_CHANGED,
LAST_SIGNAL
} FontPickerSignals;
struct _NautilusFontPickerDetail
{
GtkWidget *family_picker;
GtkWidget *weight_picker;
GtkWidget *slant_picker;
GtkWidget *set_width_picker;
NautilusStringList *weight_list;
NautilusStringList *slant_list;
NautilusStringList *set_width_list;
};
/* NautilusFontPickerClass methods */
static void nautilus_font_picker_initialize_class (NautilusFontPickerClass *klass);
static void nautilus_font_picker_initialize (NautilusFontPicker *font_picker);
/* GtkObjectClass methods */
static void nautilus_font_picker_destroy (GtkObject *object);
static void family_picker_changed_callback (GtkWidget *string_picker,
gpointer user_data);
static void weight_picker_changed_callback (GtkWidget *string_picker,
gpointer user_data);
static void slant_picker_changed_callback (GtkWidget *string_picker,
gpointer user_data);
static void set_width_picker_changed_callback (GtkWidget *string_picker,
gpointer user_data);
NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusFontPicker, nautilus_font_picker, GTK_TYPE_HBOX)
static guint font_picker_signals[LAST_SIGNAL] = { 0 };
/*
* NautilusFontPickerClass methods
*/
static void
nautilus_font_picker_initialize_class (NautilusFontPickerClass *font_picker_class)
{
GtkObjectClass *object_class;
GtkWidgetClass *widget_class;
object_class = GTK_OBJECT_CLASS (font_picker_class);
widget_class = GTK_WIDGET_CLASS (font_picker_class);
/* GtkObjectClass */
object_class->destroy = nautilus_font_picker_destroy;
/* Signals */
font_picker_signals[SELECTED_FONT_CHANGED] = gtk_signal_new ("selected_font_changed",
GTK_RUN_LAST,
object_class->type,
0,
gtk_marshal_NONE__NONE,
GTK_TYPE_NONE,
0);
gtk_object_class_add_signals (object_class, font_picker_signals, LAST_SIGNAL);
}
static void
nautilus_font_picker_initialize (NautilusFontPicker *font_picker)
{
NautilusStringList *family_list;
font_picker->detail = g_new (NautilusFontPickerDetail, 1);
font_picker->detail->weight_list = NULL;
font_picker->detail->slant_list = NULL;
font_picker->detail->set_width_list = NULL;
gtk_box_set_homogeneous (GTK_BOX (font_picker), FALSE);
gtk_box_set_spacing (GTK_BOX (font_picker), FONT_PICKER_SPACING);
font_picker->detail->family_picker = nautilus_string_picker_new ();
font_picker->detail->weight_picker = nautilus_string_picker_new ();
font_picker->detail->slant_picker = nautilus_string_picker_new ();
font_picker->detail->set_width_picker = nautilus_string_picker_new ();
gtk_box_pack_start (GTK_BOX (font_picker), font_picker->detail->family_picker, TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (font_picker), font_picker->detail->weight_picker, TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (font_picker), font_picker->detail->slant_picker, TRUE, TRUE, 0);
gtk_box_pack_end (GTK_BOX (font_picker), font_picker->detail->set_width_picker, TRUE, TRUE, 0);
nautilus_caption_set_title_label (NAUTILUS_CAPTION (font_picker->detail->family_picker), _("Font"));
nautilus_caption_set_show_title (NAUTILUS_CAPTION (font_picker->detail->family_picker), FALSE);
nautilus_caption_set_show_title (NAUTILUS_CAPTION (font_picker->detail->weight_picker), FALSE);
nautilus_caption_set_show_title (NAUTILUS_CAPTION (font_picker->detail->slant_picker), FALSE);
nautilus_caption_set_show_title (NAUTILUS_CAPTION (font_picker->detail->set_width_picker), FALSE);
family_list = nautilus_scalable_font_get_font_family_list ();
nautilus_string_list_sort (family_list);
/* FIXME bugzilla.eazel.com 2557:
* Need to deal with possiblity of there being no fonts */
g_assert (family_list != NULL);
nautilus_string_picker_set_string_list (NAUTILUS_STRING_PICKER (font_picker->detail->family_picker),
family_list);
nautilus_string_list_free (family_list);
gtk_signal_connect (GTK_OBJECT (font_picker->detail->family_picker),
"changed",
GTK_SIGNAL_FUNC (family_picker_changed_callback),
font_picker);
gtk_signal_connect (GTK_OBJECT (font_picker->detail->weight_picker),
"changed",
GTK_SIGNAL_FUNC (weight_picker_changed_callback),
font_picker);
gtk_signal_connect (GTK_OBJECT (font_picker->detail->slant_picker),
"changed",
GTK_SIGNAL_FUNC (slant_picker_changed_callback),
font_picker);
gtk_signal_connect (GTK_OBJECT (font_picker->detail->set_width_picker),
"changed",
GTK_SIGNAL_FUNC (set_width_picker_changed_callback),
font_picker);
gtk_widget_show (font_picker->detail->family_picker);
gtk_widget_show (font_picker->detail->weight_picker);
gtk_widget_show (font_picker->detail->slant_picker);
gtk_widget_show (font_picker->detail->set_width_picker);
family_picker_changed_callback (font_picker->detail->family_picker, font_picker);
}
/* GtkObjectClass methods */
static void
nautilus_font_picker_destroy (GtkObject* object)
{
NautilusFontPicker * font_picker;
g_return_if_fail (object != NULL);
g_return_if_fail (NAUTILUS_IS_FONT_PICKER (object));
font_picker = NAUTILUS_FONT_PICKER (object);
nautilus_string_list_free (font_picker->detail->weight_list);
nautilus_string_list_free (font_picker->detail->slant_list);
nautilus_string_list_free (font_picker->detail->set_width_list);
g_free (font_picker->detail);
/* Chain */
NAUTILUS_CALL_PARENT_CLASS (GTK_OBJECT_CLASS, destroy, (object));
}
static void
font_picker_update_weight_picker (NautilusFontPicker *font_picker)
{
NautilusStringList *unique_weight_list;
char *family;
g_return_if_fail (NAUTILUS_IS_FONT_PICKER (font_picker));
family = nautilus_string_picker_get_selected_string (NAUTILUS_STRING_PICKER (font_picker->detail->family_picker));
unique_weight_list = nautilus_string_list_new_from_string_list (font_picker->detail->weight_list, TRUE);
nautilus_string_list_sort (unique_weight_list);
nautilus_string_list_remove_duplicates (unique_weight_list);
nautilus_string_picker_set_string_list (NAUTILUS_STRING_PICKER (font_picker->detail->weight_picker),
unique_weight_list);
nautilus_string_list_free (unique_weight_list);
g_free (family);
}
static void
font_picker_update_slant_picker (NautilusFontPicker *font_picker)
{
NautilusStringList *unique_slant_list;
char *current_family;
char *current_weight;
guint i;
g_return_if_fail (NAUTILUS_IS_FONT_PICKER (font_picker));
current_family = nautilus_string_picker_get_selected_string (NAUTILUS_STRING_PICKER (font_picker->detail->family_picker));
current_weight = nautilus_string_picker_get_selected_string (NAUTILUS_STRING_PICKER (font_picker->detail->weight_picker));
g_assert (nautilus_string_list_get_length (font_picker->detail->slant_list) ==
nautilus_string_list_get_length (font_picker->detail->weight_list));
unique_slant_list = nautilus_string_list_new (TRUE);
for (i = 0; i < nautilus_string_list_get_length (font_picker->detail->slant_list); i++) {
char *weight = nautilus_string_list_nth (font_picker->detail->weight_list, i);
char *slant = nautilus_string_list_nth (font_picker->detail->slant_list, i);
if (nautilus_str_is_equal (current_weight, weight)) {
nautilus_string_list_insert (unique_slant_list, slant);
}
g_free (weight);
g_free (slant);
}
nautilus_string_list_sort (unique_slant_list);
nautilus_string_list_remove_duplicates (unique_slant_list);
nautilus_string_picker_set_string_list (NAUTILUS_STRING_PICKER (font_picker->detail->slant_picker),
unique_slant_list);
nautilus_string_list_free (unique_slant_list);
g_free (current_family);
g_free (current_weight);
}
static void
font_picker_update_set_width_picker (NautilusFontPicker *font_picker)
{
NautilusStringList *unique_set_width_list;
char *current_family;
char *current_weight;
char *current_slant;
guint i;
g_return_if_fail (NAUTILUS_IS_FONT_PICKER (font_picker));
current_family = nautilus_string_picker_get_selected_string (NAUTILUS_STRING_PICKER (font_picker->detail->family_picker));
current_weight = nautilus_string_picker_get_selected_string (NAUTILUS_STRING_PICKER (font_picker->detail->weight_picker));
current_slant = nautilus_string_picker_get_selected_string (NAUTILUS_STRING_PICKER (font_picker->detail->slant_picker));
g_assert (nautilus_string_list_get_length (font_picker->detail->slant_list) ==
nautilus_string_list_get_length (font_picker->detail->weight_list));
g_assert (nautilus_string_list_get_length (font_picker->detail->slant_list) ==
nautilus_string_list_get_length (font_picker->detail->set_width_list));
unique_set_width_list = nautilus_string_list_new (TRUE);
for (i = 0; i < nautilus_string_list_get_length (font_picker->detail->set_width_list); i++) {
char *weight = nautilus_string_list_nth (font_picker->detail->weight_list, i);
char *slant = nautilus_string_list_nth (font_picker->detail->slant_list, i);
char *set_width = nautilus_string_list_nth (font_picker->detail->set_width_list, i);
if (nautilus_str_is_equal (current_weight, weight)
&& nautilus_str_is_equal (current_slant, slant)) {
nautilus_string_list_insert (unique_set_width_list, set_width);
}
g_free (weight);
g_free (slant);
g_free (set_width);
}
nautilus_string_list_sort (unique_set_width_list);
nautilus_string_list_remove_duplicates (unique_set_width_list);
nautilus_string_picker_set_string_list (NAUTILUS_STRING_PICKER (font_picker->detail->set_width_picker),
unique_set_width_list);
nautilus_string_list_free (unique_set_width_list);
g_free (current_family);
g_free (current_weight);
g_free (current_slant);
}
static void
family_picker_changed_callback (GtkWidget *string_picker, gpointer user_data)
{
NautilusFontPicker *font_picker;
char *family;
NautilusStringList *weight_list = NULL;
NautilusStringList *slant_list = NULL;
NautilusStringList *set_width_list = NULL;
g_return_if_fail (NAUTILUS_IS_FONT_PICKER (user_data));
g_return_if_fail (NAUTILUS_IS_STRING_PICKER (string_picker));
font_picker = NAUTILUS_FONT_PICKER (user_data);
family = nautilus_string_picker_get_selected_string (NAUTILUS_STRING_PICKER (string_picker));
if (nautilus_scalable_font_query_font (family, &weight_list, &slant_list, &set_width_list)) {
nautilus_string_list_free (font_picker->detail->weight_list);
nautilus_string_list_free (font_picker->detail->slant_list);
nautilus_string_list_free (font_picker->detail->set_width_list);
font_picker->detail->weight_list = weight_list;
font_picker->detail->slant_list = slant_list;
font_picker->detail->set_width_list = set_width_list;
font_picker_update_weight_picker (font_picker);
font_picker_update_slant_picker (font_picker);
font_picker_update_set_width_picker (font_picker);
gtk_signal_emit (GTK_OBJECT (font_picker), font_picker_signals[SELECTED_FONT_CHANGED]);
}
else {
g_warning ("Trying to set a bogus non existant font '%s'\n", family);
}
g_free (family);
}
static void
weight_picker_changed_callback (GtkWidget *string_picker, gpointer user_data)
{
NautilusFontPicker *font_picker;
g_return_if_fail (NAUTILUS_IS_FONT_PICKER (user_data));
g_return_if_fail (NAUTILUS_IS_STRING_PICKER (string_picker));
font_picker = NAUTILUS_FONT_PICKER (user_data);
gtk_signal_emit (GTK_OBJECT (font_picker), font_picker_signals[SELECTED_FONT_CHANGED]);
}
static void
slant_picker_changed_callback (GtkWidget *string_picker, gpointer user_data)
{
NautilusFontPicker *font_picker;
g_return_if_fail (NAUTILUS_IS_FONT_PICKER (user_data));
g_return_if_fail (NAUTILUS_IS_STRING_PICKER (string_picker));
font_picker = NAUTILUS_FONT_PICKER (user_data);
gtk_signal_emit (GTK_OBJECT (font_picker), font_picker_signals[SELECTED_FONT_CHANGED]);
}
static void
set_width_picker_changed_callback (GtkWidget *string_picker, gpointer user_data)
{
NautilusFontPicker *font_picker;
g_return_if_fail (NAUTILUS_IS_FONT_PICKER (user_data));
g_return_if_fail (NAUTILUS_IS_STRING_PICKER (string_picker));
font_picker = NAUTILUS_FONT_PICKER (user_data);
gtk_signal_emit (GTK_OBJECT (font_picker), font_picker_signals[SELECTED_FONT_CHANGED]);
}
/*
* NautilusFontPicker public methods
*/
GtkWidget *
nautilus_font_picker_new (void)
{
return gtk_widget_new (nautilus_font_picker_get_type (), NULL);
}
void
nautilus_font_picker_set_selected_family (NautilusFontPicker *font_picker,
const char *family)
{
g_return_if_fail (NAUTILUS_IS_FONT_PICKER (font_picker));
g_return_if_fail (family != NULL);
if (!nautilus_string_picker_contains (NAUTILUS_STRING_PICKER (font_picker->detail->family_picker), family)) {
g_warning ("Trying to set a bogus family '%s'\n", family);
return;
}
nautilus_string_picker_set_selected_string (NAUTILUS_STRING_PICKER (font_picker->detail->family_picker),
family);
}
void
nautilus_font_picker_set_selected_weight (NautilusFontPicker *font_picker,
const char *weight)
{
g_return_if_fail (NAUTILUS_IS_FONT_PICKER (font_picker));
g_return_if_fail (weight != NULL);
if (!nautilus_string_picker_contains (NAUTILUS_STRING_PICKER (font_picker->detail->weight_picker), weight)) {
g_warning ("Trying to set a bogus weight '%s'\n", weight);
return;
}
nautilus_string_picker_set_selected_string (NAUTILUS_STRING_PICKER (font_picker->detail->weight_picker),
weight);
}
void
nautilus_font_picker_set_selected_slant (NautilusFontPicker *font_picker,
const char *slant)
{
g_return_if_fail (NAUTILUS_IS_FONT_PICKER (font_picker));
g_return_if_fail (slant != NULL);
if (!nautilus_string_picker_contains (NAUTILUS_STRING_PICKER (font_picker->detail->slant_picker), slant)) {
g_warning ("Trying to set a bogus slant '%s'\n", slant);
return;
}
nautilus_string_picker_set_selected_string (NAUTILUS_STRING_PICKER (font_picker->detail->slant_picker),
slant);
}
void
nautilus_font_picker_set_selected_set_width (NautilusFontPicker *font_picker,
const char *set_width)
{
g_return_if_fail (NAUTILUS_IS_FONT_PICKER (font_picker));
g_return_if_fail (set_width != NULL);
if (!nautilus_string_picker_contains (NAUTILUS_STRING_PICKER (font_picker->detail->set_width_picker), set_width)) {
g_warning ("Trying to set a bogus set_width '%s'\n", set_width);
return;
}
nautilus_string_picker_set_selected_string (NAUTILUS_STRING_PICKER (font_picker->detail->set_width_picker),
set_width);
}
char *
nautilus_font_picker_get_selected_family (const NautilusFontPicker *font_picker)
{
g_return_val_if_fail (NAUTILUS_IS_FONT_PICKER (font_picker), NULL);
return nautilus_string_picker_get_selected_string (NAUTILUS_STRING_PICKER (font_picker->detail->family_picker));
}
char *
nautilus_font_picker_get_selected_weight (const NautilusFontPicker *font_picker)
{
g_return_val_if_fail (NAUTILUS_IS_FONT_PICKER (font_picker), NULL);
return nautilus_string_picker_get_selected_string (NAUTILUS_STRING_PICKER (font_picker->detail->weight_picker));
}
char *
nautilus_font_picker_get_selected_slant (const NautilusFontPicker *font_picker)
{
g_return_val_if_fail (NAUTILUS_IS_FONT_PICKER (font_picker), NULL);
return nautilus_string_picker_get_selected_string (NAUTILUS_STRING_PICKER (font_picker->detail->slant_picker));
}
char *
nautilus_font_picker_get_selected_set_width (const NautilusFontPicker *font_picker)
{
g_return_val_if_fail (NAUTILUS_IS_FONT_PICKER (font_picker), NULL);
return nautilus_string_picker_get_selected_string (NAUTILUS_STRING_PICKER (font_picker->detail->set_width_picker));
}