mirror of
https://gitlab.gnome.org/GNOME/nautilus
synced 2024-09-17 23:01:59 +00:00
2cd5440e93
...HACK... nodes visible), bug 3290 (changing directory or refreshing causes Gdk to assert), bug 2420 (Need to free original key when removing model node), and other assorted problems. * components/tree/nautilus-tree-view.c: (insert_hack_node), (remove_hack_node), (nautilus_tree_view_insert_model_node): Fix problem where the hash table key was neither g_strdup'd on the way in, nor g_free'd on the way out. This caused all the problems with bad nesting in the tree view. * nautilus-installer/src/installer.c: (create_pixmap): * src/file-manager/fm-list-view.c: (install_row_images): * src/nautilus-theme-selector.c: (add_theme): Added more checks for NULL before calling gdk_bitmap_unref. * src/file-manager/fm-directory-view.c: (no_items_showing): Fixed a NautilusDirectory ref. count leak. * libnautilus-extensions/nautilus-font-factory.c: (unref_global_font_factory), (nautilus_get_current_font_factory): Unref the font factory on exit. (nautilus_font_factory_initialize_class), (font_hash_node_free), (free_one_hash_node), (destroy): Added code to actually destroy the font factory. (unref_fixed_font), (nautilus_font_factory_get_fallback_font): Unref the fixed font on exit. * libnautilus-extensions/nautilus-volume-monitor.c: (unref_global_volume_monitor), (nautilus_volume_monitor_get): Unref the volume monitor on exit. * src/nautilus-signaller.c: (unref_global_signaller), (nautilus_signaller_get_current): Unref the signaller on exit. * src/nautilus-component-adapter-factory.c: (nautilus_component_adapter_factory_initialize): Replaced some strange FIXMEs with a simpler one. (nautilus_component_adapter_factory_destroy): Fix a CORBA object reference leak. (nautilus_component_adapter_factory_get): Did a ref/sink. * components/adapter/nautilus-adapter-control-embed-strategy.c: (nautilus_adapter_control_embed_strategy_new): * components/adapter/nautilus-adapter-embeddable-embed-strategy.c: (nautilus_adapter_embeddable_embed_strategy_new): * components/adapter/nautilus-adapter-file-load-strategy.c: (nautilus_adapter_file_load_strategy_new): * components/adapter/nautilus-adapter-progressive-load-strategy.c: (nautilus_adapter_progressive_load_strategy_new): * components/adapter/nautilus-adapter-stream-load-strategy.c: (nautilus_adapter_stream_load_strategy_new): * components/adapter/nautilus-adapter.c: (nautilus_adapter_new): * components/rpmview/nautilus-rpm-verify-window.c: (nautilus_rpm_verify_window_new): * components/services/install/lib/eazel-install-object.c: (eazel_install_new), (eazel_install_new_with_config): * components/services/time/service/trilobite-eazel-time-service.c: (trilobite_eazel_time_service_new): * components/services/trilobite/libtrilobite/trilobite-service-pass wordquery.c: (trilobite_passwordquery_new): * components/services/trilobite/libtrilobite/trilobite-service.c: (trilobite_service_new): * components/tree/nautilus-tree-expansion-state.c: (nautilus_tree_expansion_state_new): * components/tree/nautilus-tree-model.c: (nautilus_tree_model_new): * components/tree/nautilus-tree-node.c: (nautilus_tree_node_new): * cut-n-paste-code/widgets/e-paned/e-hpaned.c: (e_hpaned_new): * cut-n-paste-code/widgets/e-paned/e-vpaned.c: (e_vpaned_new): * libnautilus-extensions/bonobo-stream-vfs.c: (bonobo_stream_create): * libnautilus-extensions/nautilus-any-width-bin.c: (nautilus_any_width_bin_new): * libnautilus-extensions/nautilus-background.c: (nautilus_background_new): * libnautilus-extensions/nautilus-bookmark.c: (nautilus_bookmark_new_with_icon): * libnautilus-extensions/nautilus-caption-table.c: (nautilus_caption_table_new): * libnautilus-extensions/nautilus-caption.c: (nautilus_caption_new): * libnautilus-extensions/nautilus-directory.c: (nautilus_directory_new): * libnautilus-extensions/nautilus-druid-page-eazel.c: (nautilus_druid_page_eazel_new), (nautilus_druid_page_eazel_new_with_vals): * libnautilus-extensions/nautilus-druid.c: (nautilus_druid_new): * libnautilus-extensions/nautilus-entry.c: (nautilus_entry_new): * libnautilus-extensions/nautilus-file-operations-progress.c: (nautilus_file_operations_progress_new): * libnautilus-extensions/nautilus-file.c: (nautilus_file_new_from_name), (nautilus_file_new_from_info): * libnautilus-extensions/nautilus-font-picker.c: (nautilus_font_picker_new): * libnautilus-extensions/nautilus-horizontal-splitter.c: (nautilus_horizontal_splitter_new): * libnautilus-extensions/nautilus-icon-container.c: (nautilus_icon_container_new): * libnautilus-extensions/nautilus-icon-factory.c: (get_icon_factory): * libnautilus-extensions/nautilus-image.c: (nautilus_image_new): * libnautilus-extensions/nautilus-keep-last-vertical-box.c: (nautilus_keep_last_vertical_box_new): * libnautilus-extensions/nautilus-label.c: (nautilus_label_new): * libnautilus-extensions/nautilus-list-column-title.c: (nautilus_list_column_title_new): * libnautilus-extensions/nautilus-list.c: (nautilus_list_new_with_titles): * libnautilus-extensions/nautilus-password-dialog.c: (nautilus_password_dialog_new): * libnautilus-extensions/nautilus-preference.c: (nautilus_preference_new_from_type): * libnautilus-extensions/nautilus-preferences-box.c: (nautilus_preferences_box_new): * libnautilus-extensions/nautilus-preferences-dialog.c: (nautilus_preferences_dialog_new): * libnautilus-extensions/nautilus-preferences-group.c: (nautilus_preferences_group_new): * libnautilus-extensions/nautilus-preferences-item.c: (nautilus_preferences_item_new): * libnautilus-extensions/nautilus-preferences-pane.c: (nautilus_preferences_pane_new): * libnautilus-extensions/nautilus-radio-button-group.c: (nautilus_radio_button_group_new): * libnautilus-extensions/nautilus-scalable-font.c: (nautilus_scalable_font_new): * libnautilus-extensions/nautilus-string-picker.c: (nautilus_string_picker_new): * libnautilus-extensions/nautilus-text-caption.c: (nautilus_text_caption_new): * libnautilus-extensions/nautilus-undo-context.c: (nautilus_undo_context_new): * libnautilus-extensions/nautilus-undo-manager.c: (nautilus_undo_manager_new): * libnautilus-extensions/nautilus-user-level-manager.c: (user_level_manager_new): * libnautilus/nautilus-undo-transaction.c: (nautilus_undo_transaction_new): * libnautilus/nautilus-view.c: (nautilus_view_new_from_bonobo_control): * src/file-manager/nautilus-trash-monitor.c: (nautilus_trash_monitor_get): * src/nautilus-desktop-window.c: (nautilus_desktop_window_new): * src/nautilus-property-browser.c: (nautilus_property_browser_new): * src/nautilus-shell.c: (nautilus_shell_new): * src/nautilus-sidebar-tabs.c: (nautilus_sidebar_tabs_new): * src/nautilus-sidebar-title.c: (nautilus_sidebar_title_new): * src/nautilus-sidebar.c: (nautilus_sidebar_create_context_menu), (nautilus_sidebar_new): * src/nautilus-theme-selector.c: (nautilus_theme_selector_new): * src/nautilus-throbber.c: (nautilus_throbber_new): * src/nautilus-view-frame.c: (nautilus_view_frame_new): * src/nautilus-zoom-control.c: (nautilus_zoom_control_new): * src/nautilus-about.c: (nautilus_about_new): * src/nautilus-application.c: (nautilus_application_new), (nautilus_application_create_window): * src/nautilus-bookmark-list.c: (nautilus_bookmark_list_new): After Tim Janik explained that gtk_type_new is a low-level call to be avoided, changed most uses of gtk_type_new to gtk_object_new or gtk_widget_new. Also, after Owen and Havoc explained that you can't just ignore the floating bit, added ref/sink calls to the functions used to create objects where we don't use the floating scheme. * src/nautilus-zoom-control.c: (nautilus_zoom_control_button_press_event): Take advantage of the fact that the new menu is floating and don't bother with ref'ing. * libnautilus-extensions/nautilus-ctree.c: (nautilus_ctree_new_with_titles): Added a cast. * components/adapter/main.c: (adapter_factory_make_object): * components/hardware/main.c: (hardware_view_make_object): * components/services/install/lib/eazel-install-corba-callback.c: (eazel_install_callback_get_type), (eazel_install_callback_new): * libnautilus-extensions/nautilus-theme.c: (nautilus_theme_get_theme), (nautilus_theme_set_theme), (nautilus_theme_get_theme_data): Whitespace tweaks.
232 lines
5.9 KiB
C
232 lines
5.9 KiB
C
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
|
|
|
|
/* nautilus-prefs-group-radio.c - Radio button prefs group implementation.
|
|
|
|
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-preferences-group.h"
|
|
|
|
#include <gnome.h>
|
|
#include <gtk/gtkradiobutton.h>
|
|
#include <gtk/gtksignal.h>
|
|
#include "nautilus-gtk-macros.h"
|
|
|
|
/* Signals */
|
|
typedef enum
|
|
{
|
|
CHANGED,
|
|
LAST_SIGNAL
|
|
} RadioGroupSignals;
|
|
|
|
typedef struct
|
|
{
|
|
GtkWidget *radio_button;
|
|
} ButtonInfo;
|
|
|
|
struct _NautilusPreferencesGroupDetails
|
|
{
|
|
GtkWidget *main_box;
|
|
GtkWidget *content_box;
|
|
GtkWidget *description_label;
|
|
gboolean show_description;
|
|
};
|
|
|
|
static const gint PREFERENCES_GROUP_NOT_FOUND = -1;
|
|
|
|
/* NautilusPreferencesGroupClass methods */
|
|
static void nautilus_preferences_group_initialize_class (NautilusPreferencesGroupClass *klass);
|
|
static void nautilus_preferences_group_initialize (NautilusPreferencesGroup *preferences_group);
|
|
|
|
|
|
/* GtkObjectClass methods */
|
|
static void nautilus_preferences_group_destroy (GtkObject *object);
|
|
|
|
|
|
/* Private stuff */
|
|
static void preferences_group_construct (NautilusPreferencesGroup *prefs_group,
|
|
const gchar * title);
|
|
|
|
NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusPreferencesGroup,
|
|
nautilus_preferences_group,
|
|
GTK_TYPE_FRAME);
|
|
|
|
/*
|
|
* NautilusPreferencesGroupClass methods
|
|
*/
|
|
static void
|
|
nautilus_preferences_group_initialize_class (NautilusPreferencesGroupClass *preferences_group_class)
|
|
{
|
|
GtkObjectClass *object_class;
|
|
GtkWidgetClass *widget_class;
|
|
|
|
object_class = GTK_OBJECT_CLASS (preferences_group_class);
|
|
widget_class = GTK_WIDGET_CLASS (preferences_group_class);
|
|
|
|
parent_class = gtk_type_class (gtk_frame_get_type ());
|
|
|
|
/* GtkObjectClass */
|
|
object_class->destroy = nautilus_preferences_group_destroy;
|
|
}
|
|
|
|
static void
|
|
nautilus_preferences_group_initialize (NautilusPreferencesGroup *group)
|
|
{
|
|
group->details = g_new (NautilusPreferencesGroupDetails, 1);
|
|
|
|
group->details->main_box = NULL;
|
|
group->details->content_box = NULL;
|
|
group->details->description_label = NULL;
|
|
group->details->show_description = FALSE;
|
|
}
|
|
|
|
/*
|
|
* GtkObjectClass methods
|
|
*/
|
|
static void
|
|
nautilus_preferences_group_destroy(GtkObject* object)
|
|
{
|
|
NautilusPreferencesGroup *group;
|
|
|
|
g_return_if_fail (object != NULL);
|
|
g_return_if_fail (NAUTILUS_IS_PREFERENCES_GROUP (object));
|
|
|
|
group = NAUTILUS_PREFERENCES_GROUP (object);
|
|
|
|
g_free (group->details);
|
|
|
|
/* Chain */
|
|
if (GTK_OBJECT_CLASS (parent_class)->destroy != NULL)
|
|
(* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
|
|
}
|
|
|
|
/*
|
|
* Private stuff
|
|
*/
|
|
static void
|
|
preferences_group_construct (NautilusPreferencesGroup *group,
|
|
const gchar * title)
|
|
{
|
|
g_assert (group != NULL);
|
|
g_assert (title != NULL);
|
|
|
|
g_assert (group->details->content_box == NULL);
|
|
g_assert (group->details->main_box == NULL);
|
|
g_assert (group->details->description_label == NULL);
|
|
|
|
/* Ourselves */
|
|
gtk_frame_set_shadow_type (GTK_FRAME (group),
|
|
GTK_SHADOW_ETCHED_IN);
|
|
|
|
gtk_frame_set_label (GTK_FRAME (group), title);
|
|
|
|
/* Main box */
|
|
group->details->main_box = gtk_vbox_new (FALSE, 0);
|
|
|
|
gtk_container_add (GTK_CONTAINER (group),
|
|
group->details->main_box);
|
|
|
|
/* Description label */
|
|
group->details->description_label = gtk_label_new ("Blurb");
|
|
|
|
gtk_label_set_justify (GTK_LABEL (group->details->description_label),
|
|
GTK_JUSTIFY_LEFT);
|
|
|
|
gtk_box_pack_start (GTK_BOX (group->details->main_box),
|
|
group->details->description_label,
|
|
FALSE,
|
|
FALSE,
|
|
0);
|
|
|
|
if (group->details->show_description)
|
|
{
|
|
gtk_widget_show (group->details->description_label);
|
|
}
|
|
|
|
/* Content box */
|
|
group->details->content_box =
|
|
gtk_vbox_new (FALSE, 0);
|
|
|
|
gtk_box_pack_start (GTK_BOX (group->details->main_box),
|
|
group->details->content_box,
|
|
FALSE,
|
|
FALSE,
|
|
0);
|
|
|
|
gtk_container_set_border_width (GTK_CONTAINER (group->details->content_box),
|
|
4);
|
|
|
|
gtk_widget_show (group->details->content_box);
|
|
gtk_widget_show (group->details->main_box);
|
|
}
|
|
|
|
/*
|
|
* NautilusPreferencesGroup public methods
|
|
*/
|
|
GtkWidget *
|
|
nautilus_preferences_group_new (const gchar *title)
|
|
{
|
|
NautilusPreferencesGroup *group;
|
|
|
|
g_return_val_if_fail (title != NULL, NULL);
|
|
|
|
group = NAUTILUS_PREFERENCES_GROUP
|
|
(gtk_widget_new (nautilus_preferences_group_get_type (), NULL));
|
|
|
|
preferences_group_construct (group, title);
|
|
|
|
return GTK_WIDGET (group);
|
|
}
|
|
|
|
GtkWidget *
|
|
nautilus_preferences_group_add_item (NautilusPreferencesGroup *group,
|
|
const char *preference_name,
|
|
NautilusPreferencesItemType item_type)
|
|
{
|
|
GtkWidget *item;
|
|
NautilusPreference *preference;
|
|
|
|
g_return_val_if_fail (group != NULL, NULL);
|
|
g_return_val_if_fail (NAUTILUS_IS_PREFERENCES_GROUP (group), NULL);
|
|
|
|
g_return_val_if_fail (preference_name != NULL, NULL);
|
|
|
|
preference = nautilus_preference_find_by_name (preference_name);
|
|
|
|
g_assert (preference != NULL);
|
|
|
|
gtk_object_unref (GTK_OBJECT (preference));
|
|
|
|
preference = NULL;
|
|
|
|
item = nautilus_preferences_item_new (preference_name, item_type);
|
|
|
|
gtk_box_pack_start (GTK_BOX (group->details->content_box),
|
|
item,
|
|
TRUE,
|
|
TRUE,
|
|
0);
|
|
|
|
gtk_widget_show (item);
|
|
|
|
return item;
|
|
}
|