mirror of
https://gitlab.gnome.org/GNOME/nautilus
synced 2024-09-17 23:01:59 +00:00
2ae47c7563
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.
498 lines
17 KiB
C
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));
|
|
}
|