diff options
80 files changed, 2042 insertions, 1134 deletions
diff --git a/ChangeLog-20000414 b/ChangeLog-20000414 index bc8e27b49..3322651e1 100644 --- a/ChangeLog-20000414 +++ b/ChangeLog-20000414 @@ -1,3 +1,10 @@ +1999-12-13 Elliot Lee <sopwith@redhat.com> + + * libnautils/g*.[ch]: Switch from imlib to pixbuf. + * src/file-manager: Import from gnome-fm. + + * idl/nautilus.idl: Add a 'main_window' attribute on a ViewFrame, so that views can talk to the main window. + 1999-12-10 Elliot Lee <sopwith@redhat.com> * libnautilus/ntl-meta-view.[ch]: Add a convenience function for diff --git a/components/help/.cvsignore b/components/help/.cvsignore new file mode 100644 index 000000000..70845e08e --- /dev/null +++ b/components/help/.cvsignore @@ -0,0 +1 @@ +Makefile.in diff --git a/components/history/nautilus-history-view.c b/components/history/nautilus-history-view.c index 130ddd46b..eade36589 100644 --- a/components/history/nautilus-history-view.c +++ b/components/history/nautilus-history-view.c @@ -88,7 +88,7 @@ hyperbola_navigation_history_select_row(GtkCList *clist, gint row, gint column, } -static GnomeObject * make_obj(GnomeGenericFactory *Factory, const char *goad_id, void *closure) +static GnomeObject * make_obj(GnomeGenericFactory *Factory, const char *goad_id, gpointer closure) { GtkWidget *client, *clist, *wtmp; GnomeObject *ctl; @@ -142,7 +142,7 @@ int main(int argc, char *argv[]) GNORBA_INIT_SERVER_FUNC, &ev); bonobo_init(orb, CORBA_OBJECT_NIL, CORBA_OBJECT_NIL); - factory = gnome_generic_factory_new("ntl_history_view_factory", make_obj, NULL); + factory = gnome_generic_factory_new_multi("ntl_history_view_factory", make_obj, NULL); gtk_main(); diff --git a/components/history/ntl-history-view.c b/components/history/ntl-history-view.c index 130ddd46b..eade36589 100644 --- a/components/history/ntl-history-view.c +++ b/components/history/ntl-history-view.c @@ -88,7 +88,7 @@ hyperbola_navigation_history_select_row(GtkCList *clist, gint row, gint column, } -static GnomeObject * make_obj(GnomeGenericFactory *Factory, const char *goad_id, void *closure) +static GnomeObject * make_obj(GnomeGenericFactory *Factory, const char *goad_id, gpointer closure) { GtkWidget *client, *clist, *wtmp; GnomeObject *ctl; @@ -142,7 +142,7 @@ int main(int argc, char *argv[]) GNORBA_INIT_SERVER_FUNC, &ev); bonobo_init(orb, CORBA_OBJECT_NIL, CORBA_OBJECT_NIL); - factory = gnome_generic_factory_new("ntl_history_view_factory", make_obj, NULL); + factory = gnome_generic_factory_new_multi("ntl_history_view_factory", make_obj, NULL); gtk_main(); diff --git a/configure.in b/configure.in index 318e05b3b..cecebe9f5 100644 --- a/configure.in +++ b/configure.in @@ -40,6 +40,7 @@ AC_C_CONST AC_OUTPUT([ Makefile +idl/Makefile libnautilus/Makefile src/Makefile src/file-manager/Makefile diff --git a/idl/.cvsignore b/idl/.cvsignore new file mode 100644 index 000000000..70845e08e --- /dev/null +++ b/idl/.cvsignore @@ -0,0 +1 @@ +Makefile.in diff --git a/idl/Makefile.am b/idl/Makefile.am new file mode 100644 index 000000000..c7997070c --- /dev/null +++ b/idl/Makefile.am @@ -0,0 +1,3 @@ +EXTRA_DIST= \ + GNOME_Desktop_FileOperationService.idl \ + nautilus.idl diff --git a/idl/nautilus.idl b/idl/nautilus.idl index 43edae064..63c0ce327 100644 --- a/idl/nautilus.idl +++ b/idl/nautilus.idl @@ -46,7 +46,10 @@ module Nautilus { interface ContentView : View { }; + interface ViewWindow; + interface ViewFrame : ::GNOME::Unknown { + readonly attribute ViewWindow main_window; oneway void request_status_change(in StatusRequestInfo statinfo); oneway void request_location_change(in NavigationRequestInfo navinfo); oneway void request_selection_change(in SelectionRequestInfo selinfo); @@ -57,4 +60,7 @@ module Nautilus { interface ContentViewFrame : ViewFrame { }; + + interface ViewWindow : ::GNOME::Unknown { + }; }; diff --git a/libnautilus-extensions/Makefile.am b/libnautilus-extensions/Makefile.am index 741e33fb9..5cd2e798b 100644 --- a/libnautilus-extensions/Makefile.am +++ b/libnautilus-extensions/Makefile.am @@ -28,6 +28,8 @@ libnautilus_la_SOURCES=$(nautilus_idl_sources) \ gtkflist.c \ gtkscrollframe.c +libnautilus_la_LDFLAGS=$(GNOME_LIBS) $(GNORBA_LIBS) $(GDK_PIXBUF_LIBS) + $(nautilus_idl_sources): nautilus_idl_stamp nautilus_idl_stamp: $(top_srcdir)/idl/nautilus.idl diff --git a/libnautilus-extensions/gnome-icon-container.c b/libnautilus-extensions/gnome-icon-container.c index 48a9d5ef5..421c36858 100644 --- a/libnautilus-extensions/gnome-icon-container.c +++ b/libnautilus-extensions/gnome-icon-container.c @@ -26,6 +26,8 @@ #endif #include <gnome.h> +#include <gdk-pixbuf/gdk-pixbuf.h> +#include <gdk-pixbuf/gnome-canvas-pixbuf.h> #include "gnome-icon-container-private.h" #include "gnome-icon-container-dnd.h" @@ -165,8 +167,8 @@ icon_new (GnomeIconContainer *container, } static GnomeIconContainerIcon * -icon_new_imlib (GnomeIconContainer *container, - GdkImlibImage *image, +icon_new_pixbuf (GnomeIconContainer *container, + GdkPixbuf *image, const gchar *text, gpointer data) { @@ -179,8 +181,8 @@ icon_new_imlib (GnomeIconContainer *container, new->image_item = gnome_canvas_item_new (new->item, - gnome_canvas_image_get_type (), - "image", image, + gnome_canvas_pixbuf_get_type (), + "pixbuf", image, "x", (gdouble) 0, "y", (gdouble) 0, NULL); @@ -2362,8 +2364,8 @@ gnome_icon_container_new (void) { GtkWidget *new; - gtk_widget_push_visual (gdk_imlib_get_visual ()); - gtk_widget_push_colormap (gdk_imlib_get_colormap ()); + gtk_widget_push_visual (gdk_rgb_get_visual ()); + gtk_widget_push_colormap (gdk_rgb_get_cmap ()); new = gtk_type_new (gnome_icon_container_get_type ()); @@ -2460,8 +2462,8 @@ setup_icon_in_container (GnomeIconContainer *container, } void -gnome_icon_container_add_imlib (GnomeIconContainer *container, - GdkImlibImage *image, +gnome_icon_container_add_pixbuf (GnomeIconContainer *container, + GdkPixbuf *image, const gchar *text, gint x, gint y, gpointer data) @@ -2476,7 +2478,7 @@ gnome_icon_container_add_imlib (GnomeIconContainer *container, priv = container->priv; - new_icon = icon_new_imlib (container, image, text, data); + new_icon = icon_new_pixbuf (container, image, text, data); icon_position (new_icon, container, x, y); world_to_grid (container, x, y, &grid_x, &grid_y); @@ -2496,7 +2498,7 @@ gnome_icon_container_add_imlib (GnomeIconContainer *container, } /** - * gnome_icon_container_add_imlib_auto: + * gnome_icon_container_add_pixbuf_auto: * @container: A GnomeIconContainer * @image: Image of the icon to add * @text: Caption @@ -2506,8 +2508,8 @@ gnome_icon_container_add_imlib (GnomeIconContainer *container, * empty spot available. **/ void -gnome_icon_container_add_imlib_auto (GnomeIconContainer *container, - GdkImlibImage *image, +gnome_icon_container_add_pixbuf_auto (GnomeIconContainer *container, + GdkPixbuf *image, const gchar *text, gpointer data) { @@ -2519,7 +2521,7 @@ gnome_icon_container_add_imlib_auto (GnomeIconContainer *container, g_return_if_fail (image != NULL); g_return_if_fail (text != NULL); - new_icon = icon_new_imlib (container, image, text, data); + new_icon = icon_new_pixbuf (container, image, text, data); icon_grid_add_auto (container->priv->grid, new_icon, &grid_x, &grid_y); @@ -2532,7 +2534,7 @@ gnome_icon_container_add_imlib_auto (GnomeIconContainer *container, } /** - * gnome_icon_container_add_imlib_with_layout: + * gnome_icon_container_add_pixbuf_with_layout: * @container: A GnomeIconContainer * @image: Image of the icon to add * @text: Caption @@ -2546,8 +2548,8 @@ gnome_icon_container_add_imlib_auto (GnomeIconContainer *container, * has not been added); %TRUE otherwise. **/ gboolean -gnome_icon_container_add_imlib_with_layout (GnomeIconContainer *container, - GdkImlibImage *image, +gnome_icon_container_add_pixbuf_with_layout (GnomeIconContainer *container, + GdkPixbuf *image, const gchar *text, gpointer data, const GnomeIconContainerLayout *layout) @@ -2560,7 +2562,7 @@ gnome_icon_container_add_imlib_with_layout (GnomeIconContainer *container, g_return_val_if_fail (layout != NULL, FALSE); if (gnome_icon_container_layout_get_position (layout, text, &x, &y)) { - gnome_icon_container_add_imlib (container, image, + gnome_icon_container_add_pixbuf (container, image, text, x, y, data); return TRUE; } else { diff --git a/libnautilus-extensions/gnome-icon-container.h b/libnautilus-extensions/gnome-icon-container.h index dd61eaad9..320db2759 100644 --- a/libnautilus-extensions/gnome-icon-container.h +++ b/libnautilus-extensions/gnome-icon-container.h @@ -25,6 +25,7 @@ #define _GNOME_ICON_CONTAINER_H #include <libgnomeui/libgnomeui.h> +#include <gdk-pixbuf/gdk-pixbuf.h> enum _GnomeIconContainerIconMode { GNOME_ICON_CONTAINER_NORMAL_ICONS, @@ -100,25 +101,25 @@ void gnome_icon_container_set_editable gboolean gnome_icon_container_get_editable (GnomeIconContainer *view); -void gnome_icon_container_add_imlib (GnomeIconContainer *view, - GdkImlibImage *image, +void gnome_icon_container_add_pixbuf (GnomeIconContainer *view, + GdkPixbuf *image, const gchar *text, gint x, gint y, gpointer data); -void gnome_icon_container_add_imlib_auto +void gnome_icon_container_add_pixbuf_auto (GnomeIconContainer *view, - GdkImlibImage *image, + GdkPixbuf *image, const gchar *text, gpointer data); -gboolean gnome_icon_container_add_imlib_with_layout +gboolean gnome_icon_container_add_pixbuf_with_layout (GnomeIconContainer - *container, - GdkImlibImage *image, + *container, + GdkPixbuf *image, const gchar *text, gpointer data, const GnomeIconContainerLayout - *layout); + *layout); gpointer gnome_icon_container_get_icon_data (GnomeIconContainer *view, diff --git a/libnautilus-extensions/gtkflist.c b/libnautilus-extensions/gtkflist.c index 2b5abdd87..d163af921 100644 --- a/libnautilus-extensions/gtkflist.c +++ b/libnautilus-extensions/gtkflist.c @@ -1,3 +1,4 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* File list widget for the Midnight Commander * * Copyright (C) 1999 The Free Software Foundation diff --git a/libnautilus-extensions/gtkflist.h b/libnautilus-extensions/gtkflist.h index ac216deaf..329fddc94 100644 --- a/libnautilus-extensions/gtkflist.h +++ b/libnautilus-extensions/gtkflist.h @@ -1,3 +1,4 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* File list widget for the Midnight Commander * * Copyright (C) 1999 The Free Software Foundation diff --git a/libnautilus-extensions/gtkscrollframe.c b/libnautilus-extensions/gtkscrollframe.c index 6f41835ec..2a55ab656 100644 --- a/libnautilus-extensions/gtkscrollframe.c +++ b/libnautilus-extensions/gtkscrollframe.c @@ -1,3 +1,4 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* GTK - The GIMP Toolkit * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * diff --git a/libnautilus-extensions/gtkscrollframe.h b/libnautilus-extensions/gtkscrollframe.h index facb59dac..ec726b8fa 100644 --- a/libnautilus-extensions/gtkscrollframe.h +++ b/libnautilus-extensions/gtkscrollframe.h @@ -1,3 +1,4 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* GTK - The GIMP Toolkit * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * diff --git a/libnautilus-extensions/libnautilus.h b/libnautilus-extensions/libnautilus.h index 021ae6126..c54ac1055 100644 --- a/libnautilus-extensions/libnautilus.h +++ b/libnautilus-extensions/libnautilus.h @@ -31,5 +31,6 @@ #include <libnautilus/nautilus.h> #include <libnautilus/ntl-view-client.h> #include <libnautilus/ntl-meta-view-client.h> +#include <libnautilus/ntl-content-view-client.h> #endif diff --git a/libnautilus-extensions/nautilus-scroll-frame.c b/libnautilus-extensions/nautilus-scroll-frame.c index 6f41835ec..2a55ab656 100644 --- a/libnautilus-extensions/nautilus-scroll-frame.c +++ b/libnautilus-extensions/nautilus-scroll-frame.c @@ -1,3 +1,4 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* GTK - The GIMP Toolkit * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * diff --git a/libnautilus-extensions/nautilus-scroll-frame.h b/libnautilus-extensions/nautilus-scroll-frame.h index facb59dac..ec726b8fa 100644 --- a/libnautilus-extensions/nautilus-scroll-frame.h +++ b/libnautilus-extensions/nautilus-scroll-frame.h @@ -1,3 +1,4 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* GTK - The GIMP Toolkit * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * diff --git a/libnautilus-extensions/ntl-content-view-client.c b/libnautilus-extensions/ntl-content-view-client.c index 23f82da18..b654bfa52 100644 --- a/libnautilus-extensions/ntl-content-view-client.c +++ b/libnautilus-extensions/ntl-content-view-client.c @@ -55,24 +55,26 @@ static void nautilus_content_view_client_class_init (NautilusContentViewClientCl GtkType nautilus_content_view_client_get_type (void) { - static GtkType view_client_type = 0; - - if (!view_client_type) { - const GtkTypeInfo view_client_info = { - "NautilusContentViewClient", - sizeof (NautilusContentViewClient), - sizeof (NautilusContentViewClientClass), - (GtkClassInitFunc) nautilus_content_view_client_class_init, - (GtkObjectInitFunc) nautilus_content_view_client_init, - /* reserved_1 */ NULL, - /* reserved_2 */ NULL, - (GtkClassInitFunc) NULL, - }; - - view_client_type = gtk_type_unique (nautilus_view_client_get_type(), &view_client_info); - } + static GtkType view_client_type = 0; + + if (!view_client_type) + { + const GtkTypeInfo view_client_info = + { + "NautilusContentViewClient", + sizeof (NautilusContentViewClient), + sizeof (NautilusContentViewClientClass), + (GtkClassInitFunc) nautilus_content_view_client_class_init, + (GtkObjectInitFunc) nautilus_content_view_client_init, + /* reserved_1 */ NULL, + /* reserved_2 */ NULL, + (GtkClassInitFunc) NULL, + }; + + view_client_type = gtk_type_unique (nautilus_view_client_get_type(), &view_client_info); + } - return view_client_type; + return view_client_type; } static void diff --git a/libnautilus-extensions/ntl-meta-view-client.c b/libnautilus-extensions/ntl-meta-view-client.c index b413b5976..585106504 100644 --- a/libnautilus-extensions/ntl-meta-view-client.c +++ b/libnautilus-extensions/ntl-meta-view-client.c @@ -55,24 +55,26 @@ static void nautilus_meta_view_client_class_init (NautilusMetaViewClientClass *k GtkType nautilus_meta_view_client_get_type (void) { - static GtkType view_client_type = 0; - - if (!view_client_type) { - const GtkTypeInfo view_client_info = { - "NautilusMetaViewClient", - sizeof (NautilusMetaViewClient), - sizeof (NautilusMetaViewClientClass), - (GtkClassInitFunc) nautilus_meta_view_client_class_init, - (GtkObjectInitFunc) nautilus_meta_view_client_init, - /* reserved_1 */ NULL, - /* reserved_2 */ NULL, - (GtkClassInitFunc) NULL, - }; - - view_client_type = gtk_type_unique (nautilus_view_client_get_type(), &view_client_info); - } + static GtkType view_client_type = 0; + + if (!view_client_type) + { + const GtkTypeInfo view_client_info = + { + "NautilusMetaViewClient", + sizeof (NautilusMetaViewClient), + sizeof (NautilusMetaViewClientClass), + (GtkClassInitFunc) nautilus_meta_view_client_class_init, + (GtkObjectInitFunc) nautilus_meta_view_client_init, + /* reserved_1 */ NULL, + /* reserved_2 */ NULL, + (GtkClassInitFunc) NULL, + }; + + view_client_type = gtk_type_unique (nautilus_view_client_get_type(), &view_client_info); + } - return view_client_type; + return view_client_type; } static void @@ -105,8 +107,9 @@ void nautilus_meta_view_set_label(NautilusMetaViewClient *mvc, const char *label) { GnomeObject *ctl; + GnomePropertyBag *bag; - ctl = nautilus_view_client_get_gnome_object(NAUTILUS_VIEW_CLIENT(client)); + ctl = nautilus_view_client_get_gnome_object(NAUTILUS_VIEW_CLIENT(mvc)); /* set description */ bag = gnome_control_get_property_bag(GNOME_CONTROL(ctl)); gnome_property_bag_add(bag, "label", "string", label, label, _("Label"), diff --git a/libnautilus-extensions/ntl-view-client.c b/libnautilus-extensions/ntl-view-client.c index 4d2f771bb..35c478db3 100644 --- a/libnautilus-extensions/ntl-view-client.c +++ b/libnautilus-extensions/ntl-view-client.c @@ -60,21 +60,21 @@ impl_Nautilus_View_notify_selection_change(impl_POA_Nautilus_View * servant, POA_Nautilus_View__epv libnautilus_Nautilus_View_epv = { - NULL, /* _private */ - (gpointer) & impl_Nautilus_View_save_state, - (gpointer) & impl_Nautilus_View_load_state, - (gpointer) & impl_Nautilus_View_notify_location_change, - (gpointer) & impl_Nautilus_View_show_properties, - (gpointer) & impl_Nautilus_View_notify_selection_change + NULL, /* _private */ + (gpointer) & impl_Nautilus_View_save_state, + (gpointer) & impl_Nautilus_View_load_state, + (gpointer) & impl_Nautilus_View_notify_location_change, + (gpointer) & impl_Nautilus_View_show_properties, + (gpointer) & impl_Nautilus_View_notify_selection_change }; static PortableServer_ServantBase__epv base_epv = { NULL}; static POA_Nautilus_View__vepv impl_Nautilus_View_vepv = { - &base_epv, - NULL, - &libnautilus_Nautilus_View_epv + &base_epv, + NULL, + &libnautilus_Nautilus_View_epv }; static void @@ -120,80 +120,83 @@ impl_Nautilus_View_notify_selection_change(impl_POA_Nautilus_View * servant, static void impl_Nautilus_View__destroy(GnomeObject *obj, impl_POA_Nautilus_View *servant) { - PortableServer_ObjectId *objid; - CORBA_Environment ev; - void (*servant_destroy_func)(PortableServer_Servant servant, CORBA_Environment *ev); + PortableServer_ObjectId *objid; + CORBA_Environment ev; + void (*servant_destroy_func)(PortableServer_Servant servant, CORBA_Environment *ev); - CORBA_exception_init(&ev); + CORBA_exception_init(&ev); - servant_destroy_func = NAUTILUS_VIEW_CLIENT_CLASS(GTK_OBJECT(servant->view)->klass)->servant_destroy_func; - objid = PortableServer_POA_servant_to_id(bonobo_poa(), servant, &ev); - PortableServer_POA_deactivate_object(bonobo_poa(), objid, &ev); - CORBA_free(objid); - obj->servant = NULL; + servant_destroy_func = NAUTILUS_VIEW_CLIENT_CLASS(GTK_OBJECT(servant->view)->klass)->servant_destroy_func; + objid = PortableServer_POA_servant_to_id(bonobo_poa(), servant, &ev); + PortableServer_POA_deactivate_object(bonobo_poa(), objid, &ev); + CORBA_free(objid); + obj->servant = NULL; - servant_destroy_func((PortableServer_Servant) servant, &ev); - g_free(servant); - CORBA_exception_free(&ev); + servant_destroy_func((PortableServer_Servant) servant, &ev); + g_free(servant); + CORBA_exception_free(&ev); } static GnomeObject * impl_Nautilus_View__create(NautilusViewClient *view, CORBA_Environment * ev) { - GnomeObject *retval; - impl_POA_Nautilus_View *newservant; - void (*servant_init_func)(PortableServer_Servant servant, CORBA_Environment *ev); - NautilusViewClientClass *view_class = NAUTILUS_VIEW_CLIENT_CLASS(GTK_OBJECT(view)->klass); + GnomeObject *retval; + impl_POA_Nautilus_View *newservant; + void (*servant_init_func)(PortableServer_Servant servant, CORBA_Environment *ev); + NautilusViewClientClass *view_class = NAUTILUS_VIEW_CLIENT_CLASS(GTK_OBJECT(view)->klass); - servant_init_func = view_class->servant_init_func; - newservant = g_new0(impl_POA_Nautilus_View, 1); - newservant->servant.vepv = view_class->vepv; - newservant->servant.vepv->GNOME_Unknown_epv = gnome_object_get_epv(FALSE); - newservant->view = view; - servant_init_func((PortableServer_Servant) newservant, ev); + servant_init_func = view_class->servant_init_func; + newservant = g_new0(impl_POA_Nautilus_View, 1); + newservant->servant.vepv = view_class->vepv; + if(!newservant->servant.vepv->GNOME_Unknown_epv) + newservant->servant.vepv->GNOME_Unknown_epv = gnome_object_get_epv(); + newservant->view = view; + servant_init_func((PortableServer_Servant) newservant, ev); - retval = gnome_object_new_from_servant(newservant); + retval = gnome_object_new_from_servant(newservant); - gtk_signal_connect(GTK_OBJECT(retval), "destroy", GTK_SIGNAL_FUNC(impl_Nautilus_View__destroy), newservant); + gtk_signal_connect(GTK_OBJECT(retval), "destroy", GTK_SIGNAL_FUNC(impl_Nautilus_View__destroy), newservant); - return retval; + return retval; } static void nautilus_view_client_init (NautilusViewClient *view); static void nautilus_view_client_destroy (NautilusViewClient *view); static void nautilus_view_client_class_init (NautilusViewClientClass *klass); static void nautilus_view_client_set_arg (GtkObject *object, - GtkArg *arg, - guint arg_id); + GtkArg *arg, + guint arg_id); static void nautilus_view_client_get_arg (GtkObject *object, - GtkArg *arg, - guint arg_id); + GtkArg *arg, + guint arg_id); static void nautilus_view_client_size_request (GtkWidget *widget, - GtkRequisition *requisition); + GtkRequisition *requisition); static void nautilus_view_client_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); + GtkAllocation *allocation); GtkType nautilus_view_client_get_type (void) { - static GtkType view_client_type = 0; - - if (!view_client_type) { - const GtkTypeInfo view_client_info = { - "NautilusViewClient", - sizeof (NautilusViewClient), - sizeof (NautilusViewClientClass), - (GtkClassInitFunc) nautilus_view_client_class_init, - (GtkObjectInitFunc) nautilus_view_client_init, - /* reserved_1 */ NULL, - /* reserved_2 */ NULL, - (GtkClassInitFunc) NULL, - }; - - view_client_type = gtk_type_unique (gtk_bin_get_type(), &view_client_info); - } + static GtkType view_client_type = 0; + + if (!view_client_type) + { + const GtkTypeInfo view_client_info = + { + "NautilusViewClient", + sizeof (NautilusViewClient), + sizeof (NautilusViewClientClass), + (GtkClassInitFunc) nautilus_view_client_class_init, + (GtkObjectInitFunc) nautilus_view_client_init, + /* reserved_1 */ NULL, + /* reserved_2 */ NULL, + (GtkClassInitFunc) NULL, + }; + + view_client_type = gtk_type_unique (gtk_bin_get_type(), &view_client_info); + } - return view_client_type; + return view_client_type; } #if 0 @@ -208,13 +211,13 @@ gtk_marshal_NONE__BOXED_OBJECT_BOXED (GtkObject * object, gpointer func_data, GtkArg * args) { - GtkSignal_NONE__BOXED_OBJECT_BOXED rfunc; - rfunc = (GtkSignal_NONE__BOXED_OBJECT_BOXED) func; - (*rfunc) (object, - GTK_VALUE_BOXED (args[0]), - GTK_VALUE_OBJECT (args[1]), - GTK_VALUE_BOXED (args[2]), - func_data); + GtkSignal_NONE__BOXED_OBJECT_BOXED rfunc; + rfunc = (GtkSignal_NONE__BOXED_OBJECT_BOXED) func; + (*rfunc) (object, + GTK_VALUE_BOXED (args[0]), + GTK_VALUE_OBJECT (args[1]), + GTK_VALUE_BOXED (args[2]), + func_data); } #endif @@ -249,29 +252,29 @@ nautilus_view_client_class_init (NautilusViewClientClass *klass) gtk_marshal_NONE__BOXED, GTK_TYPE_NONE, 1, GTK_TYPE_BOXED); klass->view_client_signals[i++] = gtk_signal_new("load_state", - GTK_RUN_LAST, + GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (NautilusViewClientClass, load_state), gtk_marshal_NONE__STRING, GTK_TYPE_NONE, 1, GTK_TYPE_STRING); klass->view_client_signals[i++] = gtk_signal_new("save_state", - GTK_RUN_LAST, - object_class->type, - GTK_SIGNAL_OFFSET (NautilusViewClientClass, save_state), - gtk_marshal_NONE__STRING, - GTK_TYPE_NONE, 1, GTK_TYPE_STRING); + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (NautilusViewClientClass, save_state), + gtk_marshal_NONE__STRING, + GTK_TYPE_NONE, 1, GTK_TYPE_STRING); klass->view_client_signals[i++] = gtk_signal_new("show_properties", - GTK_RUN_LAST, - object_class->type, - GTK_SIGNAL_OFFSET (NautilusViewClientClass, show_properties), - gtk_marshal_NONE__NONE, - GTK_TYPE_NONE, 0); + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (NautilusViewClientClass, show_properties), + gtk_marshal_NONE__NONE, + GTK_TYPE_NONE, 0); klass->view_client_signals[i++] = gtk_signal_new("notify_selection_change", - GTK_RUN_LAST, - object_class->type, - GTK_SIGNAL_OFFSET (NautilusViewClientClass, notify_selection_change), - gtk_marshal_NONE__BOXED, - GTK_TYPE_NONE, 1, GTK_TYPE_BOXED); + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (NautilusViewClientClass, notify_selection_change), + gtk_marshal_NONE__BOXED, + GTK_TYPE_NONE, 1, GTK_TYPE_BOXED); gtk_object_class_add_signals (object_class, klass->view_client_signals, i); } @@ -316,7 +319,7 @@ nautilus_view_client_destroy (NautilusViewClient *view) void nautilus_view_client_request_location_change(NautilusViewClient *view, - Nautilus_NavigationRequestInfo *loc) + Nautilus_NavigationRequestInfo *loc) { CORBA_Environment ev; @@ -400,7 +403,7 @@ nautilus_view_client_request_status_change (NautilusViewClient *view, static void nautilus_view_client_size_request (GtkWidget *widget, - GtkRequisition *requisition) + GtkRequisition *requisition) { GtkBin *bin; @@ -422,7 +425,7 @@ nautilus_view_client_size_request (GtkWidget *widget, static void nautilus_view_client_size_allocate (GtkWidget *widget, - GtkAllocation *allocation) + GtkAllocation *allocation) { GtkBin *bin; GtkAllocation child_allocation; diff --git a/libnautilus-private/Makefile.am b/libnautilus-private/Makefile.am index 741e33fb9..5cd2e798b 100644 --- a/libnautilus-private/Makefile.am +++ b/libnautilus-private/Makefile.am @@ -28,6 +28,8 @@ libnautilus_la_SOURCES=$(nautilus_idl_sources) \ gtkflist.c \ gtkscrollframe.c +libnautilus_la_LDFLAGS=$(GNOME_LIBS) $(GNORBA_LIBS) $(GDK_PIXBUF_LIBS) + $(nautilus_idl_sources): nautilus_idl_stamp nautilus_idl_stamp: $(top_srcdir)/idl/nautilus.idl diff --git a/libnautilus-private/gnome-icon-container.c b/libnautilus-private/gnome-icon-container.c index 48a9d5ef5..421c36858 100644 --- a/libnautilus-private/gnome-icon-container.c +++ b/libnautilus-private/gnome-icon-container.c @@ -26,6 +26,8 @@ #endif #include <gnome.h> +#include <gdk-pixbuf/gdk-pixbuf.h> +#include <gdk-pixbuf/gnome-canvas-pixbuf.h> #include "gnome-icon-container-private.h" #include "gnome-icon-container-dnd.h" @@ -165,8 +167,8 @@ icon_new (GnomeIconContainer *container, } static GnomeIconContainerIcon * -icon_new_imlib (GnomeIconContainer *container, - GdkImlibImage *image, +icon_new_pixbuf (GnomeIconContainer *container, + GdkPixbuf *image, const gchar *text, gpointer data) { @@ -179,8 +181,8 @@ icon_new_imlib (GnomeIconContainer *container, new->image_item = gnome_canvas_item_new (new->item, - gnome_canvas_image_get_type (), - "image", image, + gnome_canvas_pixbuf_get_type (), + "pixbuf", image, "x", (gdouble) 0, "y", (gdouble) 0, NULL); @@ -2362,8 +2364,8 @@ gnome_icon_container_new (void) { GtkWidget *new; - gtk_widget_push_visual (gdk_imlib_get_visual ()); - gtk_widget_push_colormap (gdk_imlib_get_colormap ()); + gtk_widget_push_visual (gdk_rgb_get_visual ()); + gtk_widget_push_colormap (gdk_rgb_get_cmap ()); new = gtk_type_new (gnome_icon_container_get_type ()); @@ -2460,8 +2462,8 @@ setup_icon_in_container (GnomeIconContainer *container, } void -gnome_icon_container_add_imlib (GnomeIconContainer *container, - GdkImlibImage *image, +gnome_icon_container_add_pixbuf (GnomeIconContainer *container, + GdkPixbuf *image, const gchar *text, gint x, gint y, gpointer data) @@ -2476,7 +2478,7 @@ gnome_icon_container_add_imlib (GnomeIconContainer *container, priv = container->priv; - new_icon = icon_new_imlib (container, image, text, data); + new_icon = icon_new_pixbuf (container, image, text, data); icon_position (new_icon, container, x, y); world_to_grid (container, x, y, &grid_x, &grid_y); @@ -2496,7 +2498,7 @@ gnome_icon_container_add_imlib (GnomeIconContainer *container, } /** - * gnome_icon_container_add_imlib_auto: + * gnome_icon_container_add_pixbuf_auto: * @container: A GnomeIconContainer * @image: Image of the icon to add * @text: Caption @@ -2506,8 +2508,8 @@ gnome_icon_container_add_imlib (GnomeIconContainer *container, * empty spot available. **/ void -gnome_icon_container_add_imlib_auto (GnomeIconContainer *container, - GdkImlibImage *image, +gnome_icon_container_add_pixbuf_auto (GnomeIconContainer *container, + GdkPixbuf *image, const gchar *text, gpointer data) { @@ -2519,7 +2521,7 @@ gnome_icon_container_add_imlib_auto (GnomeIconContainer *container, g_return_if_fail (image != NULL); g_return_if_fail (text != NULL); - new_icon = icon_new_imlib (container, image, text, data); + new_icon = icon_new_pixbuf (container, image, text, data); icon_grid_add_auto (container->priv->grid, new_icon, &grid_x, &grid_y); @@ -2532,7 +2534,7 @@ gnome_icon_container_add_imlib_auto (GnomeIconContainer *container, } /** - * gnome_icon_container_add_imlib_with_layout: + * gnome_icon_container_add_pixbuf_with_layout: * @container: A GnomeIconContainer * @image: Image of the icon to add * @text: Caption @@ -2546,8 +2548,8 @@ gnome_icon_container_add_imlib_auto (GnomeIconContainer *container, * has not been added); %TRUE otherwise. **/ gboolean -gnome_icon_container_add_imlib_with_layout (GnomeIconContainer *container, - GdkImlibImage *image, +gnome_icon_container_add_pixbuf_with_layout (GnomeIconContainer *container, + GdkPixbuf *image, const gchar *text, gpointer data, const GnomeIconContainerLayout *layout) @@ -2560,7 +2562,7 @@ gnome_icon_container_add_imlib_with_layout (GnomeIconContainer *container, g_return_val_if_fail (layout != NULL, FALSE); if (gnome_icon_container_layout_get_position (layout, text, &x, &y)) { - gnome_icon_container_add_imlib (container, image, + gnome_icon_container_add_pixbuf (container, image, text, x, y, data); return TRUE; } else { diff --git a/libnautilus-private/gnome-icon-container.h b/libnautilus-private/gnome-icon-container.h index dd61eaad9..320db2759 100644 --- a/libnautilus-private/gnome-icon-container.h +++ b/libnautilus-private/gnome-icon-container.h @@ -25,6 +25,7 @@ #define _GNOME_ICON_CONTAINER_H #include <libgnomeui/libgnomeui.h> +#include <gdk-pixbuf/gdk-pixbuf.h> enum _GnomeIconContainerIconMode { GNOME_ICON_CONTAINER_NORMAL_ICONS, @@ -100,25 +101,25 @@ void gnome_icon_container_set_editable gboolean gnome_icon_container_get_editable (GnomeIconContainer *view); -void gnome_icon_container_add_imlib (GnomeIconContainer *view, - GdkImlibImage *image, +void gnome_icon_container_add_pixbuf (GnomeIconContainer *view, + GdkPixbuf *image, const gchar *text, gint x, gint y, gpointer data); -void gnome_icon_container_add_imlib_auto +void gnome_icon_container_add_pixbuf_auto (GnomeIconContainer *view, - GdkImlibImage *image, + GdkPixbuf *image, const gchar *text, gpointer data); -gboolean gnome_icon_container_add_imlib_with_layout +gboolean gnome_icon_container_add_pixbuf_with_layout (GnomeIconContainer - *container, - GdkImlibImage *image, + *container, + GdkPixbuf *image, const gchar *text, gpointer data, const GnomeIconContainerLayout - *layout); + *layout); gpointer gnome_icon_container_get_icon_data (GnomeIconContainer *view, diff --git a/libnautilus-private/gtkflist.c b/libnautilus-private/gtkflist.c index 2b5abdd87..d163af921 100644 --- a/libnautilus-private/gtkflist.c +++ b/libnautilus-private/gtkflist.c @@ -1,3 +1,4 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* File list widget for the Midnight Commander * * Copyright (C) 1999 The Free Software Foundation diff --git a/libnautilus-private/gtkflist.h b/libnautilus-private/gtkflist.h index ac216deaf..329fddc94 100644 --- a/libnautilus-private/gtkflist.h +++ b/libnautilus-private/gtkflist.h @@ -1,3 +1,4 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* File list widget for the Midnight Commander * * Copyright (C) 1999 The Free Software Foundation diff --git a/libnautilus-private/gtkscrollframe.c b/libnautilus-private/gtkscrollframe.c index 6f41835ec..2a55ab656 100644 --- a/libnautilus-private/gtkscrollframe.c +++ b/libnautilus-private/gtkscrollframe.c @@ -1,3 +1,4 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* GTK - The GIMP Toolkit * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * diff --git a/libnautilus-private/gtkscrollframe.h b/libnautilus-private/gtkscrollframe.h index facb59dac..ec726b8fa 100644 --- a/libnautilus-private/gtkscrollframe.h +++ b/libnautilus-private/gtkscrollframe.h @@ -1,3 +1,4 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* GTK - The GIMP Toolkit * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * diff --git a/libnautilus-private/libnautilus.h b/libnautilus-private/libnautilus.h index 021ae6126..c54ac1055 100644 --- a/libnautilus-private/libnautilus.h +++ b/libnautilus-private/libnautilus.h @@ -31,5 +31,6 @@ #include <libnautilus/nautilus.h> #include <libnautilus/ntl-view-client.h> #include <libnautilus/ntl-meta-view-client.h> +#include <libnautilus/ntl-content-view-client.h> #endif diff --git a/libnautilus-private/nautilus-scroll-frame.c b/libnautilus-private/nautilus-scroll-frame.c index 6f41835ec..2a55ab656 100644 --- a/libnautilus-private/nautilus-scroll-frame.c +++ b/libnautilus-private/nautilus-scroll-frame.c @@ -1,3 +1,4 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* GTK - The GIMP Toolkit * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * diff --git a/libnautilus-private/nautilus-scroll-frame.h b/libnautilus-private/nautilus-scroll-frame.h index facb59dac..ec726b8fa 100644 --- a/libnautilus-private/nautilus-scroll-frame.h +++ b/libnautilus-private/nautilus-scroll-frame.h @@ -1,3 +1,4 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* GTK - The GIMP Toolkit * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * diff --git a/libnautilus-private/ntl-content-view-client.c b/libnautilus-private/ntl-content-view-client.c index 23f82da18..b654bfa52 100644 --- a/libnautilus-private/ntl-content-view-client.c +++ b/libnautilus-private/ntl-content-view-client.c @@ -55,24 +55,26 @@ static void nautilus_content_view_client_class_init (NautilusContentViewClientCl GtkType nautilus_content_view_client_get_type (void) { - static GtkType view_client_type = 0; - - if (!view_client_type) { - const GtkTypeInfo view_client_info = { - "NautilusContentViewClient", - sizeof (NautilusContentViewClient), - sizeof (NautilusContentViewClientClass), - (GtkClassInitFunc) nautilus_content_view_client_class_init, - (GtkObjectInitFunc) nautilus_content_view_client_init, - /* reserved_1 */ NULL, - /* reserved_2 */ NULL, - (GtkClassInitFunc) NULL, - }; - - view_client_type = gtk_type_unique (nautilus_view_client_get_type(), &view_client_info); - } + static GtkType view_client_type = 0; + + if (!view_client_type) + { + const GtkTypeInfo view_client_info = + { + "NautilusContentViewClient", + sizeof (NautilusContentViewClient), + sizeof (NautilusContentViewClientClass), + (GtkClassInitFunc) nautilus_content_view_client_class_init, + (GtkObjectInitFunc) nautilus_content_view_client_init, + /* reserved_1 */ NULL, + /* reserved_2 */ NULL, + (GtkClassInitFunc) NULL, + }; + + view_client_type = gtk_type_unique (nautilus_view_client_get_type(), &view_client_info); + } - return view_client_type; + return view_client_type; } static void diff --git a/libnautilus-private/ntl-meta-view-client.c b/libnautilus-private/ntl-meta-view-client.c index b413b5976..585106504 100644 --- a/libnautilus-private/ntl-meta-view-client.c +++ b/libnautilus-private/ntl-meta-view-client.c @@ -55,24 +55,26 @@ static void nautilus_meta_view_client_class_init (NautilusMetaViewClientClass *k GtkType nautilus_meta_view_client_get_type (void) { - static GtkType view_client_type = 0; - - if (!view_client_type) { - const GtkTypeInfo view_client_info = { - "NautilusMetaViewClient", - sizeof (NautilusMetaViewClient), - sizeof (NautilusMetaViewClientClass), - (GtkClassInitFunc) nautilus_meta_view_client_class_init, - (GtkObjectInitFunc) nautilus_meta_view_client_init, - /* reserved_1 */ NULL, - /* reserved_2 */ NULL, - (GtkClassInitFunc) NULL, - }; - - view_client_type = gtk_type_unique (nautilus_view_client_get_type(), &view_client_info); - } + static GtkType view_client_type = 0; + + if (!view_client_type) + { + const GtkTypeInfo view_client_info = + { + "NautilusMetaViewClient", + sizeof (NautilusMetaViewClient), + sizeof (NautilusMetaViewClientClass), + (GtkClassInitFunc) nautilus_meta_view_client_class_init, + (GtkObjectInitFunc) nautilus_meta_view_client_init, + /* reserved_1 */ NULL, + /* reserved_2 */ NULL, + (GtkClassInitFunc) NULL, + }; + + view_client_type = gtk_type_unique (nautilus_view_client_get_type(), &view_client_info); + } - return view_client_type; + return view_client_type; } static void @@ -105,8 +107,9 @@ void nautilus_meta_view_set_label(NautilusMetaViewClient *mvc, const char *label) { GnomeObject *ctl; + GnomePropertyBag *bag; - ctl = nautilus_view_client_get_gnome_object(NAUTILUS_VIEW_CLIENT(client)); + ctl = nautilus_view_client_get_gnome_object(NAUTILUS_VIEW_CLIENT(mvc)); /* set description */ bag = gnome_control_get_property_bag(GNOME_CONTROL(ctl)); gnome_property_bag_add(bag, "label", "string", label, label, _("Label"), diff --git a/libnautilus-private/ntl-view-client.c b/libnautilus-private/ntl-view-client.c index 4d2f771bb..35c478db3 100644 --- a/libnautilus-private/ntl-view-client.c +++ b/libnautilus-private/ntl-view-client.c @@ -60,21 +60,21 @@ impl_Nautilus_View_notify_selection_change(impl_POA_Nautilus_View * servant, POA_Nautilus_View__epv libnautilus_Nautilus_View_epv = { - NULL, /* _private */ - (gpointer) & impl_Nautilus_View_save_state, - (gpointer) & impl_Nautilus_View_load_state, - (gpointer) & impl_Nautilus_View_notify_location_change, - (gpointer) & impl_Nautilus_View_show_properties, - (gpointer) & impl_Nautilus_View_notify_selection_change + NULL, /* _private */ + (gpointer) & impl_Nautilus_View_save_state, + (gpointer) & impl_Nautilus_View_load_state, + (gpointer) & impl_Nautilus_View_notify_location_change, + (gpointer) & impl_Nautilus_View_show_properties, + (gpointer) & impl_Nautilus_View_notify_selection_change }; static PortableServer_ServantBase__epv base_epv = { NULL}; static POA_Nautilus_View__vepv impl_Nautilus_View_vepv = { - &base_epv, - NULL, - &libnautilus_Nautilus_View_epv + &base_epv, + NULL, + &libnautilus_Nautilus_View_epv }; static void @@ -120,80 +120,83 @@ impl_Nautilus_View_notify_selection_change(impl_POA_Nautilus_View * servant, static void impl_Nautilus_View__destroy(GnomeObject *obj, impl_POA_Nautilus_View *servant) { - PortableServer_ObjectId *objid; - CORBA_Environment ev; - void (*servant_destroy_func)(PortableServer_Servant servant, CORBA_Environment *ev); + PortableServer_ObjectId *objid; + CORBA_Environment ev; + void (*servant_destroy_func)(PortableServer_Servant servant, CORBA_Environment *ev); - CORBA_exception_init(&ev); + CORBA_exception_init(&ev); - servant_destroy_func = NAUTILUS_VIEW_CLIENT_CLASS(GTK_OBJECT(servant->view)->klass)->servant_destroy_func; - objid = PortableServer_POA_servant_to_id(bonobo_poa(), servant, &ev); - PortableServer_POA_deactivate_object(bonobo_poa(), objid, &ev); - CORBA_free(objid); - obj->servant = NULL; + servant_destroy_func = NAUTILUS_VIEW_CLIENT_CLASS(GTK_OBJECT(servant->view)->klass)->servant_destroy_func; + objid = PortableServer_POA_servant_to_id(bonobo_poa(), servant, &ev); + PortableServer_POA_deactivate_object(bonobo_poa(), objid, &ev); + CORBA_free(objid); + obj->servant = NULL; - servant_destroy_func((PortableServer_Servant) servant, &ev); - g_free(servant); - CORBA_exception_free(&ev); + servant_destroy_func((PortableServer_Servant) servant, &ev); + g_free(servant); + CORBA_exception_free(&ev); } static GnomeObject * impl_Nautilus_View__create(NautilusViewClient *view, CORBA_Environment * ev) { - GnomeObject *retval; - impl_POA_Nautilus_View *newservant; - void (*servant_init_func)(PortableServer_Servant servant, CORBA_Environment *ev); - NautilusViewClientClass *view_class = NAUTILUS_VIEW_CLIENT_CLASS(GTK_OBJECT(view)->klass); + GnomeObject *retval; + impl_POA_Nautilus_View *newservant; + void (*servant_init_func)(PortableServer_Servant servant, CORBA_Environment *ev); + NautilusViewClientClass *view_class = NAUTILUS_VIEW_CLIENT_CLASS(GTK_OBJECT(view)->klass); - servant_init_func = view_class->servant_init_func; - newservant = g_new0(impl_POA_Nautilus_View, 1); - newservant->servant.vepv = view_class->vepv; - newservant->servant.vepv->GNOME_Unknown_epv = gnome_object_get_epv(FALSE); - newservant->view = view; - servant_init_func((PortableServer_Servant) newservant, ev); + servant_init_func = view_class->servant_init_func; + newservant = g_new0(impl_POA_Nautilus_View, 1); + newservant->servant.vepv = view_class->vepv; + if(!newservant->servant.vepv->GNOME_Unknown_epv) + newservant->servant.vepv->GNOME_Unknown_epv = gnome_object_get_epv(); + newservant->view = view; + servant_init_func((PortableServer_Servant) newservant, ev); - retval = gnome_object_new_from_servant(newservant); + retval = gnome_object_new_from_servant(newservant); - gtk_signal_connect(GTK_OBJECT(retval), "destroy", GTK_SIGNAL_FUNC(impl_Nautilus_View__destroy), newservant); + gtk_signal_connect(GTK_OBJECT(retval), "destroy", GTK_SIGNAL_FUNC(impl_Nautilus_View__destroy), newservant); - return retval; + return retval; } static void nautilus_view_client_init (NautilusViewClient *view); static void nautilus_view_client_destroy (NautilusViewClient *view); static void nautilus_view_client_class_init (NautilusViewClientClass *klass); static void nautilus_view_client_set_arg (GtkObject *object, - GtkArg *arg, - guint arg_id); + GtkArg *arg, + guint arg_id); static void nautilus_view_client_get_arg (GtkObject *object, - GtkArg *arg, - guint arg_id); + GtkArg *arg, + guint arg_id); static void nautilus_view_client_size_request (GtkWidget *widget, - GtkRequisition *requisition); + GtkRequisition *requisition); static void nautilus_view_client_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); + GtkAllocation *allocation); GtkType nautilus_view_client_get_type (void) { - static GtkType view_client_type = 0; - - if (!view_client_type) { - const GtkTypeInfo view_client_info = { - "NautilusViewClient", - sizeof (NautilusViewClient), - sizeof (NautilusViewClientClass), - (GtkClassInitFunc) nautilus_view_client_class_init, - (GtkObjectInitFunc) nautilus_view_client_init, - /* reserved_1 */ NULL, - /* reserved_2 */ NULL, - (GtkClassInitFunc) NULL, - }; - - view_client_type = gtk_type_unique (gtk_bin_get_type(), &view_client_info); - } + static GtkType view_client_type = 0; + + if (!view_client_type) + { + const GtkTypeInfo view_client_info = + { + "NautilusViewClient", + sizeof (NautilusViewClient), + sizeof (NautilusViewClientClass), + (GtkClassInitFunc) nautilus_view_client_class_init, + (GtkObjectInitFunc) nautilus_view_client_init, + /* reserved_1 */ NULL, + /* reserved_2 */ NULL, + (GtkClassInitFunc) NULL, + }; + + view_client_type = gtk_type_unique (gtk_bin_get_type(), &view_client_info); + } - return view_client_type; + return view_client_type; } #if 0 @@ -208,13 +211,13 @@ gtk_marshal_NONE__BOXED_OBJECT_BOXED (GtkObject * object, gpointer func_data, GtkArg * args) { - GtkSignal_NONE__BOXED_OBJECT_BOXED rfunc; - rfunc = (GtkSignal_NONE__BOXED_OBJECT_BOXED) func; - (*rfunc) (object, - GTK_VALUE_BOXED (args[0]), - GTK_VALUE_OBJECT (args[1]), - GTK_VALUE_BOXED (args[2]), - func_data); + GtkSignal_NONE__BOXED_OBJECT_BOXED rfunc; + rfunc = (GtkSignal_NONE__BOXED_OBJECT_BOXED) func; + (*rfunc) (object, + GTK_VALUE_BOXED (args[0]), + GTK_VALUE_OBJECT (args[1]), + GTK_VALUE_BOXED (args[2]), + func_data); } #endif @@ -249,29 +252,29 @@ nautilus_view_client_class_init (NautilusViewClientClass *klass) gtk_marshal_NONE__BOXED, GTK_TYPE_NONE, 1, GTK_TYPE_BOXED); klass->view_client_signals[i++] = gtk_signal_new("load_state", - GTK_RUN_LAST, + GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (NautilusViewClientClass, load_state), gtk_marshal_NONE__STRING, GTK_TYPE_NONE, 1, GTK_TYPE_STRING); klass->view_client_signals[i++] = gtk_signal_new("save_state", - GTK_RUN_LAST, - object_class->type, - GTK_SIGNAL_OFFSET (NautilusViewClientClass, save_state), - gtk_marshal_NONE__STRING, - GTK_TYPE_NONE, 1, GTK_TYPE_STRING); + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (NautilusViewClientClass, save_state), + gtk_marshal_NONE__STRING, + GTK_TYPE_NONE, 1, GTK_TYPE_STRING); klass->view_client_signals[i++] = gtk_signal_new("show_properties", - GTK_RUN_LAST, - object_class->type, - GTK_SIGNAL_OFFSET (NautilusViewClientClass, show_properties), - gtk_marshal_NONE__NONE, - GTK_TYPE_NONE, 0); + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (NautilusViewClientClass, show_properties), + gtk_marshal_NONE__NONE, + GTK_TYPE_NONE, 0); klass->view_client_signals[i++] = gtk_signal_new("notify_selection_change", - GTK_RUN_LAST, - object_class->type, - GTK_SIGNAL_OFFSET (NautilusViewClientClass, notify_selection_change), - gtk_marshal_NONE__BOXED, - GTK_TYPE_NONE, 1, GTK_TYPE_BOXED); + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (NautilusViewClientClass, notify_selection_change), + gtk_marshal_NONE__BOXED, + GTK_TYPE_NONE, 1, GTK_TYPE_BOXED); gtk_object_class_add_signals (object_class, klass->view_client_signals, i); } @@ -316,7 +319,7 @@ nautilus_view_client_destroy (NautilusViewClient *view) void nautilus_view_client_request_location_change(NautilusViewClient *view, - Nautilus_NavigationRequestInfo *loc) + Nautilus_NavigationRequestInfo *loc) { CORBA_Environment ev; @@ -400,7 +403,7 @@ nautilus_view_client_request_status_change (NautilusViewClient *view, static void nautilus_view_client_size_request (GtkWidget *widget, - GtkRequisition *requisition) + GtkRequisition *requisition) { GtkBin *bin; @@ -422,7 +425,7 @@ nautilus_view_client_size_request (GtkWidget *widget, static void nautilus_view_client_size_allocate (GtkWidget *widget, - GtkAllocation *allocation) + GtkAllocation *allocation) { GtkBin *bin; GtkAllocation child_allocation; diff --git a/libnautilus/Makefile.am b/libnautilus/Makefile.am index 741e33fb9..5cd2e798b 100644 --- a/libnautilus/Makefile.am +++ b/libnautilus/Makefile.am @@ -28,6 +28,8 @@ libnautilus_la_SOURCES=$(nautilus_idl_sources) \ gtkflist.c \ gtkscrollframe.c +libnautilus_la_LDFLAGS=$(GNOME_LIBS) $(GNORBA_LIBS) $(GDK_PIXBUF_LIBS) + $(nautilus_idl_sources): nautilus_idl_stamp nautilus_idl_stamp: $(top_srcdir)/idl/nautilus.idl diff --git a/libnautilus/gnome-icon-container.c b/libnautilus/gnome-icon-container.c index 48a9d5ef5..421c36858 100644 --- a/libnautilus/gnome-icon-container.c +++ b/libnautilus/gnome-icon-container.c @@ -26,6 +26,8 @@ #endif #include <gnome.h> +#include <gdk-pixbuf/gdk-pixbuf.h> +#include <gdk-pixbuf/gnome-canvas-pixbuf.h> #include "gnome-icon-container-private.h" #include "gnome-icon-container-dnd.h" @@ -165,8 +167,8 @@ icon_new (GnomeIconContainer *container, } static GnomeIconContainerIcon * -icon_new_imlib (GnomeIconContainer *container, - GdkImlibImage *image, +icon_new_pixbuf (GnomeIconContainer *container, + GdkPixbuf *image, const gchar *text, gpointer data) { @@ -179,8 +181,8 @@ icon_new_imlib (GnomeIconContainer *container, new->image_item = gnome_canvas_item_new (new->item, - gnome_canvas_image_get_type (), - "image", image, + gnome_canvas_pixbuf_get_type (), + "pixbuf", image, "x", (gdouble) 0, "y", (gdouble) 0, NULL); @@ -2362,8 +2364,8 @@ gnome_icon_container_new (void) { GtkWidget *new; - gtk_widget_push_visual (gdk_imlib_get_visual ()); - gtk_widget_push_colormap (gdk_imlib_get_colormap ()); + gtk_widget_push_visual (gdk_rgb_get_visual ()); + gtk_widget_push_colormap (gdk_rgb_get_cmap ()); new = gtk_type_new (gnome_icon_container_get_type ()); @@ -2460,8 +2462,8 @@ setup_icon_in_container (GnomeIconContainer *container, } void -gnome_icon_container_add_imlib (GnomeIconContainer *container, - GdkImlibImage *image, +gnome_icon_container_add_pixbuf (GnomeIconContainer *container, + GdkPixbuf *image, const gchar *text, gint x, gint y, gpointer data) @@ -2476,7 +2478,7 @@ gnome_icon_container_add_imlib (GnomeIconContainer *container, priv = container->priv; - new_icon = icon_new_imlib (container, image, text, data); + new_icon = icon_new_pixbuf (container, image, text, data); icon_position (new_icon, container, x, y); world_to_grid (container, x, y, &grid_x, &grid_y); @@ -2496,7 +2498,7 @@ gnome_icon_container_add_imlib (GnomeIconContainer *container, } /** - * gnome_icon_container_add_imlib_auto: + * gnome_icon_container_add_pixbuf_auto: * @container: A GnomeIconContainer * @image: Image of the icon to add * @text: Caption @@ -2506,8 +2508,8 @@ gnome_icon_container_add_imlib (GnomeIconContainer *container, * empty spot available. **/ void -gnome_icon_container_add_imlib_auto (GnomeIconContainer *container, - GdkImlibImage *image, +gnome_icon_container_add_pixbuf_auto (GnomeIconContainer *container, + GdkPixbuf *image, const gchar *text, gpointer data) { @@ -2519,7 +2521,7 @@ gnome_icon_container_add_imlib_auto (GnomeIconContainer *container, g_return_if_fail (image != NULL); g_return_if_fail (text != NULL); - new_icon = icon_new_imlib (container, image, text, data); + new_icon = icon_new_pixbuf (container, image, text, data); icon_grid_add_auto (container->priv->grid, new_icon, &grid_x, &grid_y); @@ -2532,7 +2534,7 @@ gnome_icon_container_add_imlib_auto (GnomeIconContainer *container, } /** - * gnome_icon_container_add_imlib_with_layout: + * gnome_icon_container_add_pixbuf_with_layout: * @container: A GnomeIconContainer * @image: Image of the icon to add * @text: Caption @@ -2546,8 +2548,8 @@ gnome_icon_container_add_imlib_auto (GnomeIconContainer *container, * has not been added); %TRUE otherwise. **/ gboolean -gnome_icon_container_add_imlib_with_layout (GnomeIconContainer *container, - GdkImlibImage *image, +gnome_icon_container_add_pixbuf_with_layout (GnomeIconContainer *container, + GdkPixbuf *image, const gchar *text, gpointer data, const GnomeIconContainerLayout *layout) @@ -2560,7 +2562,7 @@ gnome_icon_container_add_imlib_with_layout (GnomeIconContainer *container, g_return_val_if_fail (layout != NULL, FALSE); if (gnome_icon_container_layout_get_position (layout, text, &x, &y)) { - gnome_icon_container_add_imlib (container, image, + gnome_icon_container_add_pixbuf (container, image, text, x, y, data); return TRUE; } else { diff --git a/libnautilus/gnome-icon-container.h b/libnautilus/gnome-icon-container.h index dd61eaad9..320db2759 100644 --- a/libnautilus/gnome-icon-container.h +++ b/libnautilus/gnome-icon-container.h @@ -25,6 +25,7 @@ #define _GNOME_ICON_CONTAINER_H #include <libgnomeui/libgnomeui.h> +#include <gdk-pixbuf/gdk-pixbuf.h> enum _GnomeIconContainerIconMode { GNOME_ICON_CONTAINER_NORMAL_ICONS, @@ -100,25 +101,25 @@ void gnome_icon_container_set_editable gboolean gnome_icon_container_get_editable (GnomeIconContainer *view); -void gnome_icon_container_add_imlib (GnomeIconContainer *view, - GdkImlibImage *image, +void gnome_icon_container_add_pixbuf (GnomeIconContainer *view, + GdkPixbuf *image, const gchar *text, gint x, gint y, gpointer data); -void gnome_icon_container_add_imlib_auto +void gnome_icon_container_add_pixbuf_auto (GnomeIconContainer *view, - GdkImlibImage *image, + GdkPixbuf *image, const gchar *text, gpointer data); -gboolean gnome_icon_container_add_imlib_with_layout +gboolean gnome_icon_container_add_pixbuf_with_layout (GnomeIconContainer - *container, - GdkImlibImage *image, + *container, + GdkPixbuf *image, const gchar *text, gpointer data, const GnomeIconContainerLayout - *layout); + *layout); gpointer gnome_icon_container_get_icon_data (GnomeIconContainer *view, diff --git a/libnautilus/gtkflist.c b/libnautilus/gtkflist.c index 2b5abdd87..d163af921 100644 --- a/libnautilus/gtkflist.c +++ b/libnautilus/gtkflist.c @@ -1,3 +1,4 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* File list widget for the Midnight Commander * * Copyright (C) 1999 The Free Software Foundation diff --git a/libnautilus/gtkflist.h b/libnautilus/gtkflist.h index ac216deaf..329fddc94 100644 --- a/libnautilus/gtkflist.h +++ b/libnautilus/gtkflist.h @@ -1,3 +1,4 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* File list widget for the Midnight Commander * * Copyright (C) 1999 The Free Software Foundation diff --git a/libnautilus/gtkscrollframe.c b/libnautilus/gtkscrollframe.c index 6f41835ec..2a55ab656 100644 --- a/libnautilus/gtkscrollframe.c +++ b/libnautilus/gtkscrollframe.c @@ -1,3 +1,4 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* GTK - The GIMP Toolkit * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * diff --git a/libnautilus/gtkscrollframe.h b/libnautilus/gtkscrollframe.h index facb59dac..ec726b8fa 100644 --- a/libnautilus/gtkscrollframe.h +++ b/libnautilus/gtkscrollframe.h @@ -1,3 +1,4 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* GTK - The GIMP Toolkit * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * diff --git a/libnautilus/libnautilus.h b/libnautilus/libnautilus.h index 021ae6126..c54ac1055 100644 --- a/libnautilus/libnautilus.h +++ b/libnautilus/libnautilus.h @@ -31,5 +31,6 @@ #include <libnautilus/nautilus.h> #include <libnautilus/ntl-view-client.h> #include <libnautilus/ntl-meta-view-client.h> +#include <libnautilus/ntl-content-view-client.h> #endif diff --git a/libnautilus/nautilus-content-view-frame.c b/libnautilus/nautilus-content-view-frame.c index 23f82da18..b654bfa52 100644 --- a/libnautilus/nautilus-content-view-frame.c +++ b/libnautilus/nautilus-content-view-frame.c @@ -55,24 +55,26 @@ static void nautilus_content_view_client_class_init (NautilusContentViewClientCl GtkType nautilus_content_view_client_get_type (void) { - static GtkType view_client_type = 0; - - if (!view_client_type) { - const GtkTypeInfo view_client_info = { - "NautilusContentViewClient", - sizeof (NautilusContentViewClient), - sizeof (NautilusContentViewClientClass), - (GtkClassInitFunc) nautilus_content_view_client_class_init, - (GtkObjectInitFunc) nautilus_content_view_client_init, - /* reserved_1 */ NULL, - /* reserved_2 */ NULL, - (GtkClassInitFunc) NULL, - }; - - view_client_type = gtk_type_unique (nautilus_view_client_get_type(), &view_client_info); - } + static GtkType view_client_type = 0; + + if (!view_client_type) + { + const GtkTypeInfo view_client_info = + { + "NautilusContentViewClient", + sizeof (NautilusContentViewClient), + sizeof (NautilusContentViewClientClass), + (GtkClassInitFunc) nautilus_content_view_client_class_init, + (GtkObjectInitFunc) nautilus_content_view_client_init, + /* reserved_1 */ NULL, + /* reserved_2 */ NULL, + (GtkClassInitFunc) NULL, + }; + + view_client_type = gtk_type_unique (nautilus_view_client_get_type(), &view_client_info); + } - return view_client_type; + return view_client_type; } static void diff --git a/libnautilus/nautilus-meta-view-frame.c b/libnautilus/nautilus-meta-view-frame.c index b413b5976..585106504 100644 --- a/libnautilus/nautilus-meta-view-frame.c +++ b/libnautilus/nautilus-meta-view-frame.c @@ -55,24 +55,26 @@ static void nautilus_meta_view_client_class_init (NautilusMetaViewClientClass *k GtkType nautilus_meta_view_client_get_type (void) { - static GtkType view_client_type = 0; - - if (!view_client_type) { - const GtkTypeInfo view_client_info = { - "NautilusMetaViewClient", - sizeof (NautilusMetaViewClient), - sizeof (NautilusMetaViewClientClass), - (GtkClassInitFunc) nautilus_meta_view_client_class_init, - (GtkObjectInitFunc) nautilus_meta_view_client_init, - /* reserved_1 */ NULL, - /* reserved_2 */ NULL, - (GtkClassInitFunc) NULL, - }; - - view_client_type = gtk_type_unique (nautilus_view_client_get_type(), &view_client_info); - } + static GtkType view_client_type = 0; + + if (!view_client_type) + { + const GtkTypeInfo view_client_info = + { + "NautilusMetaViewClient", + sizeof (NautilusMetaViewClient), + sizeof (NautilusMetaViewClientClass), + (GtkClassInitFunc) nautilus_meta_view_client_class_init, + (GtkObjectInitFunc) nautilus_meta_view_client_init, + /* reserved_1 */ NULL, + /* reserved_2 */ NULL, + (GtkClassInitFunc) NULL, + }; + + view_client_type = gtk_type_unique (nautilus_view_client_get_type(), &view_client_info); + } - return view_client_type; + return view_client_type; } static void @@ -105,8 +107,9 @@ void nautilus_meta_view_set_label(NautilusMetaViewClient *mvc, const char *label) { GnomeObject *ctl; + GnomePropertyBag *bag; - ctl = nautilus_view_client_get_gnome_object(NAUTILUS_VIEW_CLIENT(client)); + ctl = nautilus_view_client_get_gnome_object(NAUTILUS_VIEW_CLIENT(mvc)); /* set description */ bag = gnome_control_get_property_bag(GNOME_CONTROL(ctl)); gnome_property_bag_add(bag, "label", "string", label, label, _("Label"), diff --git a/libnautilus/nautilus-view-frame.c b/libnautilus/nautilus-view-frame.c index 4d2f771bb..35c478db3 100644 --- a/libnautilus/nautilus-view-frame.c +++ b/libnautilus/nautilus-view-frame.c @@ -60,21 +60,21 @@ impl_Nautilus_View_notify_selection_change(impl_POA_Nautilus_View * servant, POA_Nautilus_View__epv libnautilus_Nautilus_View_epv = { - NULL, /* _private */ - (gpointer) & impl_Nautilus_View_save_state, - (gpointer) & impl_Nautilus_View_load_state, - (gpointer) & impl_Nautilus_View_notify_location_change, - (gpointer) & impl_Nautilus_View_show_properties, - (gpointer) & impl_Nautilus_View_notify_selection_change + NULL, /* _private */ + (gpointer) & impl_Nautilus_View_save_state, + (gpointer) & impl_Nautilus_View_load_state, + (gpointer) & impl_Nautilus_View_notify_location_change, + (gpointer) & impl_Nautilus_View_show_properties, + (gpointer) & impl_Nautilus_View_notify_selection_change }; static PortableServer_ServantBase__epv base_epv = { NULL}; static POA_Nautilus_View__vepv impl_Nautilus_View_vepv = { - &base_epv, - NULL, - &libnautilus_Nautilus_View_epv + &base_epv, + NULL, + &libnautilus_Nautilus_View_epv }; static void @@ -120,80 +120,83 @@ impl_Nautilus_View_notify_selection_change(impl_POA_Nautilus_View * servant, static void impl_Nautilus_View__destroy(GnomeObject *obj, impl_POA_Nautilus_View *servant) { - PortableServer_ObjectId *objid; - CORBA_Environment ev; - void (*servant_destroy_func)(PortableServer_Servant servant, CORBA_Environment *ev); + PortableServer_ObjectId *objid; + CORBA_Environment ev; + void (*servant_destroy_func)(PortableServer_Servant servant, CORBA_Environment *ev); - CORBA_exception_init(&ev); + CORBA_exception_init(&ev); - servant_destroy_func = NAUTILUS_VIEW_CLIENT_CLASS(GTK_OBJECT(servant->view)->klass)->servant_destroy_func; - objid = PortableServer_POA_servant_to_id(bonobo_poa(), servant, &ev); - PortableServer_POA_deactivate_object(bonobo_poa(), objid, &ev); - CORBA_free(objid); - obj->servant = NULL; + servant_destroy_func = NAUTILUS_VIEW_CLIENT_CLASS(GTK_OBJECT(servant->view)->klass)->servant_destroy_func; + objid = PortableServer_POA_servant_to_id(bonobo_poa(), servant, &ev); + PortableServer_POA_deactivate_object(bonobo_poa(), objid, &ev); + CORBA_free(objid); + obj->servant = NULL; - servant_destroy_func((PortableServer_Servant) servant, &ev); - g_free(servant); - CORBA_exception_free(&ev); + servant_destroy_func((PortableServer_Servant) servant, &ev); + g_free(servant); + CORBA_exception_free(&ev); } static GnomeObject * impl_Nautilus_View__create(NautilusViewClient *view, CORBA_Environment * ev) { - GnomeObject *retval; - impl_POA_Nautilus_View *newservant; - void (*servant_init_func)(PortableServer_Servant servant, CORBA_Environment *ev); - NautilusViewClientClass *view_class = NAUTILUS_VIEW_CLIENT_CLASS(GTK_OBJECT(view)->klass); + GnomeObject *retval; + impl_POA_Nautilus_View *newservant; + void (*servant_init_func)(PortableServer_Servant servant, CORBA_Environment *ev); + NautilusViewClientClass *view_class = NAUTILUS_VIEW_CLIENT_CLASS(GTK_OBJECT(view)->klass); - servant_init_func = view_class->servant_init_func; - newservant = g_new0(impl_POA_Nautilus_View, 1); - newservant->servant.vepv = view_class->vepv; - newservant->servant.vepv->GNOME_Unknown_epv = gnome_object_get_epv(FALSE); - newservant->view = view; - servant_init_func((PortableServer_Servant) newservant, ev); + servant_init_func = view_class->servant_init_func; + newservant = g_new0(impl_POA_Nautilus_View, 1); + newservant->servant.vepv = view_class->vepv; + if(!newservant->servant.vepv->GNOME_Unknown_epv) + newservant->servant.vepv->GNOME_Unknown_epv = gnome_object_get_epv(); + newservant->view = view; + servant_init_func((PortableServer_Servant) newservant, ev); - retval = gnome_object_new_from_servant(newservant); + retval = gnome_object_new_from_servant(newservant); - gtk_signal_connect(GTK_OBJECT(retval), "destroy", GTK_SIGNAL_FUNC(impl_Nautilus_View__destroy), newservant); + gtk_signal_connect(GTK_OBJECT(retval), "destroy", GTK_SIGNAL_FUNC(impl_Nautilus_View__destroy), newservant); - return retval; + return retval; } static void nautilus_view_client_init (NautilusViewClient *view); static void nautilus_view_client_destroy (NautilusViewClient *view); static void nautilus_view_client_class_init (NautilusViewClientClass *klass); static void nautilus_view_client_set_arg (GtkObject *object, - GtkArg *arg, - guint arg_id); + GtkArg *arg, + guint arg_id); static void nautilus_view_client_get_arg (GtkObject *object, - GtkArg *arg, - guint arg_id); + GtkArg *arg, + guint arg_id); static void nautilus_view_client_size_request (GtkWidget *widget, - GtkRequisition *requisition); + GtkRequisition *requisition); static void nautilus_view_client_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); + GtkAllocation *allocation); GtkType nautilus_view_client_get_type (void) { - static GtkType view_client_type = 0; - - if (!view_client_type) { - const GtkTypeInfo view_client_info = { - "NautilusViewClient", - sizeof (NautilusViewClient), - sizeof (NautilusViewClientClass), - (GtkClassInitFunc) nautilus_view_client_class_init, - (GtkObjectInitFunc) nautilus_view_client_init, - /* reserved_1 */ NULL, - /* reserved_2 */ NULL, - (GtkClassInitFunc) NULL, - }; - - view_client_type = gtk_type_unique (gtk_bin_get_type(), &view_client_info); - } + static GtkType view_client_type = 0; + + if (!view_client_type) + { + const GtkTypeInfo view_client_info = + { + "NautilusViewClient", + sizeof (NautilusViewClient), + sizeof (NautilusViewClientClass), + (GtkClassInitFunc) nautilus_view_client_class_init, + (GtkObjectInitFunc) nautilus_view_client_init, + /* reserved_1 */ NULL, + /* reserved_2 */ NULL, + (GtkClassInitFunc) NULL, + }; + + view_client_type = gtk_type_unique (gtk_bin_get_type(), &view_client_info); + } - return view_client_type; + return view_client_type; } #if 0 @@ -208,13 +211,13 @@ gtk_marshal_NONE__BOXED_OBJECT_BOXED (GtkObject * object, gpointer func_data, GtkArg * args) { - GtkSignal_NONE__BOXED_OBJECT_BOXED rfunc; - rfunc = (GtkSignal_NONE__BOXED_OBJECT_BOXED) func; - (*rfunc) (object, - GTK_VALUE_BOXED (args[0]), - GTK_VALUE_OBJECT (args[1]), - GTK_VALUE_BOXED (args[2]), - func_data); + GtkSignal_NONE__BOXED_OBJECT_BOXED rfunc; + rfunc = (GtkSignal_NONE__BOXED_OBJECT_BOXED) func; + (*rfunc) (object, + GTK_VALUE_BOXED (args[0]), + GTK_VALUE_OBJECT (args[1]), + GTK_VALUE_BOXED (args[2]), + func_data); } #endif @@ -249,29 +252,29 @@ nautilus_view_client_class_init (NautilusViewClientClass *klass) gtk_marshal_NONE__BOXED, GTK_TYPE_NONE, 1, GTK_TYPE_BOXED); klass->view_client_signals[i++] = gtk_signal_new("load_state", - GTK_RUN_LAST, + GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (NautilusViewClientClass, load_state), gtk_marshal_NONE__STRING, GTK_TYPE_NONE, 1, GTK_TYPE_STRING); klass->view_client_signals[i++] = gtk_signal_new("save_state", - GTK_RUN_LAST, - object_class->type, - GTK_SIGNAL_OFFSET (NautilusViewClientClass, save_state), - gtk_marshal_NONE__STRING, - GTK_TYPE_NONE, 1, GTK_TYPE_STRING); + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (NautilusViewClientClass, save_state), + gtk_marshal_NONE__STRING, + GTK_TYPE_NONE, 1, GTK_TYPE_STRING); klass->view_client_signals[i++] = gtk_signal_new("show_properties", - GTK_RUN_LAST, - object_class->type, - GTK_SIGNAL_OFFSET (NautilusViewClientClass, show_properties), - gtk_marshal_NONE__NONE, - GTK_TYPE_NONE, 0); + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (NautilusViewClientClass, show_properties), + gtk_marshal_NONE__NONE, + GTK_TYPE_NONE, 0); klass->view_client_signals[i++] = gtk_signal_new("notify_selection_change", - GTK_RUN_LAST, - object_class->type, - GTK_SIGNAL_OFFSET (NautilusViewClientClass, notify_selection_change), - gtk_marshal_NONE__BOXED, - GTK_TYPE_NONE, 1, GTK_TYPE_BOXED); + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (NautilusViewClientClass, notify_selection_change), + gtk_marshal_NONE__BOXED, + GTK_TYPE_NONE, 1, GTK_TYPE_BOXED); gtk_object_class_add_signals (object_class, klass->view_client_signals, i); } @@ -316,7 +319,7 @@ nautilus_view_client_destroy (NautilusViewClient *view) void nautilus_view_client_request_location_change(NautilusViewClient *view, - Nautilus_NavigationRequestInfo *loc) + Nautilus_NavigationRequestInfo *loc) { CORBA_Environment ev; @@ -400,7 +403,7 @@ nautilus_view_client_request_status_change (NautilusViewClient *view, static void nautilus_view_client_size_request (GtkWidget *widget, - GtkRequisition *requisition) + GtkRequisition *requisition) { GtkBin *bin; @@ -422,7 +425,7 @@ nautilus_view_client_size_request (GtkWidget *widget, static void nautilus_view_client_size_allocate (GtkWidget *widget, - GtkAllocation *allocation) + GtkAllocation *allocation) { GtkBin *bin; GtkAllocation child_allocation; diff --git a/libnautilus/nautilus-view.c b/libnautilus/nautilus-view.c index 4d2f771bb..35c478db3 100644 --- a/libnautilus/nautilus-view.c +++ b/libnautilus/nautilus-view.c @@ -60,21 +60,21 @@ impl_Nautilus_View_notify_selection_change(impl_POA_Nautilus_View * servant, POA_Nautilus_View__epv libnautilus_Nautilus_View_epv = { - NULL, /* _private */ - (gpointer) & impl_Nautilus_View_save_state, - (gpointer) & impl_Nautilus_View_load_state, - (gpointer) & impl_Nautilus_View_notify_location_change, - (gpointer) & impl_Nautilus_View_show_properties, - (gpointer) & impl_Nautilus_View_notify_selection_change + NULL, /* _private */ + (gpointer) & impl_Nautilus_View_save_state, + (gpointer) & impl_Nautilus_View_load_state, + (gpointer) & impl_Nautilus_View_notify_location_change, + (gpointer) & impl_Nautilus_View_show_properties, + (gpointer) & impl_Nautilus_View_notify_selection_change }; static PortableServer_ServantBase__epv base_epv = { NULL}; static POA_Nautilus_View__vepv impl_Nautilus_View_vepv = { - &base_epv, - NULL, - &libnautilus_Nautilus_View_epv + &base_epv, + NULL, + &libnautilus_Nautilus_View_epv }; static void @@ -120,80 +120,83 @@ impl_Nautilus_View_notify_selection_change(impl_POA_Nautilus_View * servant, static void impl_Nautilus_View__destroy(GnomeObject *obj, impl_POA_Nautilus_View *servant) { - PortableServer_ObjectId *objid; - CORBA_Environment ev; - void (*servant_destroy_func)(PortableServer_Servant servant, CORBA_Environment *ev); + PortableServer_ObjectId *objid; + CORBA_Environment ev; + void (*servant_destroy_func)(PortableServer_Servant servant, CORBA_Environment *ev); - CORBA_exception_init(&ev); + CORBA_exception_init(&ev); - servant_destroy_func = NAUTILUS_VIEW_CLIENT_CLASS(GTK_OBJECT(servant->view)->klass)->servant_destroy_func; - objid = PortableServer_POA_servant_to_id(bonobo_poa(), servant, &ev); - PortableServer_POA_deactivate_object(bonobo_poa(), objid, &ev); - CORBA_free(objid); - obj->servant = NULL; + servant_destroy_func = NAUTILUS_VIEW_CLIENT_CLASS(GTK_OBJECT(servant->view)->klass)->servant_destroy_func; + objid = PortableServer_POA_servant_to_id(bonobo_poa(), servant, &ev); + PortableServer_POA_deactivate_object(bonobo_poa(), objid, &ev); + CORBA_free(objid); + obj->servant = NULL; - servant_destroy_func((PortableServer_Servant) servant, &ev); - g_free(servant); - CORBA_exception_free(&ev); + servant_destroy_func((PortableServer_Servant) servant, &ev); + g_free(servant); + CORBA_exception_free(&ev); } static GnomeObject * impl_Nautilus_View__create(NautilusViewClient *view, CORBA_Environment * ev) { - GnomeObject *retval; - impl_POA_Nautilus_View *newservant; - void (*servant_init_func)(PortableServer_Servant servant, CORBA_Environment *ev); - NautilusViewClientClass *view_class = NAUTILUS_VIEW_CLIENT_CLASS(GTK_OBJECT(view)->klass); + GnomeObject *retval; + impl_POA_Nautilus_View *newservant; + void (*servant_init_func)(PortableServer_Servant servant, CORBA_Environment *ev); + NautilusViewClientClass *view_class = NAUTILUS_VIEW_CLIENT_CLASS(GTK_OBJECT(view)->klass); - servant_init_func = view_class->servant_init_func; - newservant = g_new0(impl_POA_Nautilus_View, 1); - newservant->servant.vepv = view_class->vepv; - newservant->servant.vepv->GNOME_Unknown_epv = gnome_object_get_epv(FALSE); - newservant->view = view; - servant_init_func((PortableServer_Servant) newservant, ev); + servant_init_func = view_class->servant_init_func; + newservant = g_new0(impl_POA_Nautilus_View, 1); + newservant->servant.vepv = view_class->vepv; + if(!newservant->servant.vepv->GNOME_Unknown_epv) + newservant->servant.vepv->GNOME_Unknown_epv = gnome_object_get_epv(); + newservant->view = view; + servant_init_func((PortableServer_Servant) newservant, ev); - retval = gnome_object_new_from_servant(newservant); + retval = gnome_object_new_from_servant(newservant); - gtk_signal_connect(GTK_OBJECT(retval), "destroy", GTK_SIGNAL_FUNC(impl_Nautilus_View__destroy), newservant); + gtk_signal_connect(GTK_OBJECT(retval), "destroy", GTK_SIGNAL_FUNC(impl_Nautilus_View__destroy), newservant); - return retval; + return retval; } static void nautilus_view_client_init (NautilusViewClient *view); static void nautilus_view_client_destroy (NautilusViewClient *view); static void nautilus_view_client_class_init (NautilusViewClientClass *klass); static void nautilus_view_client_set_arg (GtkObject *object, - GtkArg *arg, - guint arg_id); + GtkArg *arg, + guint arg_id); static void nautilus_view_client_get_arg (GtkObject *object, - GtkArg *arg, - guint arg_id); + GtkArg *arg, + guint arg_id); static void nautilus_view_client_size_request (GtkWidget *widget, - GtkRequisition *requisition); + GtkRequisition *requisition); static void nautilus_view_client_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); + GtkAllocation *allocation); GtkType nautilus_view_client_get_type (void) { - static GtkType view_client_type = 0; - - if (!view_client_type) { - const GtkTypeInfo view_client_info = { - "NautilusViewClient", - sizeof (NautilusViewClient), - sizeof (NautilusViewClientClass), - (GtkClassInitFunc) nautilus_view_client_class_init, - (GtkObjectInitFunc) nautilus_view_client_init, - /* reserved_1 */ NULL, - /* reserved_2 */ NULL, - (GtkClassInitFunc) NULL, - }; - - view_client_type = gtk_type_unique (gtk_bin_get_type(), &view_client_info); - } + static GtkType view_client_type = 0; + + if (!view_client_type) + { + const GtkTypeInfo view_client_info = + { + "NautilusViewClient", + sizeof (NautilusViewClient), + sizeof (NautilusViewClientClass), + (GtkClassInitFunc) nautilus_view_client_class_init, + (GtkObjectInitFunc) nautilus_view_client_init, + /* reserved_1 */ NULL, + /* reserved_2 */ NULL, + (GtkClassInitFunc) NULL, + }; + + view_client_type = gtk_type_unique (gtk_bin_get_type(), &view_client_info); + } - return view_client_type; + return view_client_type; } #if 0 @@ -208,13 +211,13 @@ gtk_marshal_NONE__BOXED_OBJECT_BOXED (GtkObject * object, gpointer func_data, GtkArg * args) { - GtkSignal_NONE__BOXED_OBJECT_BOXED rfunc; - rfunc = (GtkSignal_NONE__BOXED_OBJECT_BOXED) func; - (*rfunc) (object, - GTK_VALUE_BOXED (args[0]), - GTK_VALUE_OBJECT (args[1]), - GTK_VALUE_BOXED (args[2]), - func_data); + GtkSignal_NONE__BOXED_OBJECT_BOXED rfunc; + rfunc = (GtkSignal_NONE__BOXED_OBJECT_BOXED) func; + (*rfunc) (object, + GTK_VALUE_BOXED (args[0]), + GTK_VALUE_OBJECT (args[1]), + GTK_VALUE_BOXED (args[2]), + func_data); } #endif @@ -249,29 +252,29 @@ nautilus_view_client_class_init (NautilusViewClientClass *klass) gtk_marshal_NONE__BOXED, GTK_TYPE_NONE, 1, GTK_TYPE_BOXED); klass->view_client_signals[i++] = gtk_signal_new("load_state", - GTK_RUN_LAST, + GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (NautilusViewClientClass, load_state), gtk_marshal_NONE__STRING, GTK_TYPE_NONE, 1, GTK_TYPE_STRING); klass->view_client_signals[i++] = gtk_signal_new("save_state", - GTK_RUN_LAST, - object_class->type, - GTK_SIGNAL_OFFSET (NautilusViewClientClass, save_state), - gtk_marshal_NONE__STRING, - GTK_TYPE_NONE, 1, GTK_TYPE_STRING); + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (NautilusViewClientClass, save_state), + gtk_marshal_NONE__STRING, + GTK_TYPE_NONE, 1, GTK_TYPE_STRING); klass->view_client_signals[i++] = gtk_signal_new("show_properties", - GTK_RUN_LAST, - object_class->type, - GTK_SIGNAL_OFFSET (NautilusViewClientClass, show_properties), - gtk_marshal_NONE__NONE, - GTK_TYPE_NONE, 0); + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (NautilusViewClientClass, show_properties), + gtk_marshal_NONE__NONE, + GTK_TYPE_NONE, 0); klass->view_client_signals[i++] = gtk_signal_new("notify_selection_change", - GTK_RUN_LAST, - object_class->type, - GTK_SIGNAL_OFFSET (NautilusViewClientClass, notify_selection_change), - gtk_marshal_NONE__BOXED, - GTK_TYPE_NONE, 1, GTK_TYPE_BOXED); + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (NautilusViewClientClass, notify_selection_change), + gtk_marshal_NONE__BOXED, + GTK_TYPE_NONE, 1, GTK_TYPE_BOXED); gtk_object_class_add_signals (object_class, klass->view_client_signals, i); } @@ -316,7 +319,7 @@ nautilus_view_client_destroy (NautilusViewClient *view) void nautilus_view_client_request_location_change(NautilusViewClient *view, - Nautilus_NavigationRequestInfo *loc) + Nautilus_NavigationRequestInfo *loc) { CORBA_Environment ev; @@ -400,7 +403,7 @@ nautilus_view_client_request_status_change (NautilusViewClient *view, static void nautilus_view_client_size_request (GtkWidget *widget, - GtkRequisition *requisition) + GtkRequisition *requisition) { GtkBin *bin; @@ -422,7 +425,7 @@ nautilus_view_client_size_request (GtkWidget *widget, static void nautilus_view_client_size_allocate (GtkWidget *widget, - GtkAllocation *allocation) + GtkAllocation *allocation) { GtkBin *bin; GtkAllocation child_allocation; diff --git a/libnautilus/ntl-content-view-client.c b/libnautilus/ntl-content-view-client.c index 23f82da18..b654bfa52 100644 --- a/libnautilus/ntl-content-view-client.c +++ b/libnautilus/ntl-content-view-client.c @@ -55,24 +55,26 @@ static void nautilus_content_view_client_class_init (NautilusContentViewClientCl GtkType nautilus_content_view_client_get_type (void) { - static GtkType view_client_type = 0; - - if (!view_client_type) { - const GtkTypeInfo view_client_info = { - "NautilusContentViewClient", - sizeof (NautilusContentViewClient), - sizeof (NautilusContentViewClientClass), - (GtkClassInitFunc) nautilus_content_view_client_class_init, - (GtkObjectInitFunc) nautilus_content_view_client_init, - /* reserved_1 */ NULL, - /* reserved_2 */ NULL, - (GtkClassInitFunc) NULL, - }; - - view_client_type = gtk_type_unique (nautilus_view_client_get_type(), &view_client_info); - } + static GtkType view_client_type = 0; + + if (!view_client_type) + { + const GtkTypeInfo view_client_info = + { + "NautilusContentViewClient", + sizeof (NautilusContentViewClient), + sizeof (NautilusContentViewClientClass), + (GtkClassInitFunc) nautilus_content_view_client_class_init, + (GtkObjectInitFunc) nautilus_content_view_client_init, + /* reserved_1 */ NULL, + /* reserved_2 */ NULL, + (GtkClassInitFunc) NULL, + }; + + view_client_type = gtk_type_unique (nautilus_view_client_get_type(), &view_client_info); + } - return view_client_type; + return view_client_type; } static void diff --git a/libnautilus/ntl-content-view-frame.c b/libnautilus/ntl-content-view-frame.c index 23f82da18..b654bfa52 100644 --- a/libnautilus/ntl-content-view-frame.c +++ b/libnautilus/ntl-content-view-frame.c @@ -55,24 +55,26 @@ static void nautilus_content_view_client_class_init (NautilusContentViewClientCl GtkType nautilus_content_view_client_get_type (void) { - static GtkType view_client_type = 0; - - if (!view_client_type) { - const GtkTypeInfo view_client_info = { - "NautilusContentViewClient", - sizeof (NautilusContentViewClient), - sizeof (NautilusContentViewClientClass), - (GtkClassInitFunc) nautilus_content_view_client_class_init, - (GtkObjectInitFunc) nautilus_content_view_client_init, - /* reserved_1 */ NULL, - /* reserved_2 */ NULL, - (GtkClassInitFunc) NULL, - }; - - view_client_type = gtk_type_unique (nautilus_view_client_get_type(), &view_client_info); - } + static GtkType view_client_type = 0; + + if (!view_client_type) + { + const GtkTypeInfo view_client_info = + { + "NautilusContentViewClient", + sizeof (NautilusContentViewClient), + sizeof (NautilusContentViewClientClass), + (GtkClassInitFunc) nautilus_content_view_client_class_init, + (GtkObjectInitFunc) nautilus_content_view_client_init, + /* reserved_1 */ NULL, + /* reserved_2 */ NULL, + (GtkClassInitFunc) NULL, + }; + + view_client_type = gtk_type_unique (nautilus_view_client_get_type(), &view_client_info); + } - return view_client_type; + return view_client_type; } static void diff --git a/libnautilus/ntl-meta-view-client.c b/libnautilus/ntl-meta-view-client.c index b413b5976..585106504 100644 --- a/libnautilus/ntl-meta-view-client.c +++ b/libnautilus/ntl-meta-view-client.c @@ -55,24 +55,26 @@ static void nautilus_meta_view_client_class_init (NautilusMetaViewClientClass *k GtkType nautilus_meta_view_client_get_type (void) { - static GtkType view_client_type = 0; - - if (!view_client_type) { - const GtkTypeInfo view_client_info = { - "NautilusMetaViewClient", - sizeof (NautilusMetaViewClient), - sizeof (NautilusMetaViewClientClass), - (GtkClassInitFunc) nautilus_meta_view_client_class_init, - (GtkObjectInitFunc) nautilus_meta_view_client_init, - /* reserved_1 */ NULL, - /* reserved_2 */ NULL, - (GtkClassInitFunc) NULL, - }; - - view_client_type = gtk_type_unique (nautilus_view_client_get_type(), &view_client_info); - } + static GtkType view_client_type = 0; + + if (!view_client_type) + { + const GtkTypeInfo view_client_info = + { + "NautilusMetaViewClient", + sizeof (NautilusMetaViewClient), + sizeof (NautilusMetaViewClientClass), + (GtkClassInitFunc) nautilus_meta_view_client_class_init, + (GtkObjectInitFunc) nautilus_meta_view_client_init, + /* reserved_1 */ NULL, + /* reserved_2 */ NULL, + (GtkClassInitFunc) NULL, + }; + + view_client_type = gtk_type_unique (nautilus_view_client_get_type(), &view_client_info); + } - return view_client_type; + return view_client_type; } static void @@ -105,8 +107,9 @@ void nautilus_meta_view_set_label(NautilusMetaViewClient *mvc, const char *label) { GnomeObject *ctl; + GnomePropertyBag *bag; - ctl = nautilus_view_client_get_gnome_object(NAUTILUS_VIEW_CLIENT(client)); + ctl = nautilus_view_client_get_gnome_object(NAUTILUS_VIEW_CLIENT(mvc)); /* set description */ bag = gnome_control_get_property_bag(GNOME_CONTROL(ctl)); gnome_property_bag_add(bag, "label", "string", label, label, _("Label"), diff --git a/libnautilus/ntl-meta-view-frame.c b/libnautilus/ntl-meta-view-frame.c index b413b5976..585106504 100644 --- a/libnautilus/ntl-meta-view-frame.c +++ b/libnautilus/ntl-meta-view-frame.c @@ -55,24 +55,26 @@ static void nautilus_meta_view_client_class_init (NautilusMetaViewClientClass *k GtkType nautilus_meta_view_client_get_type (void) { - static GtkType view_client_type = 0; - - if (!view_client_type) { - const GtkTypeInfo view_client_info = { - "NautilusMetaViewClient", - sizeof (NautilusMetaViewClient), - sizeof (NautilusMetaViewClientClass), - (GtkClassInitFunc) nautilus_meta_view_client_class_init, - (GtkObjectInitFunc) nautilus_meta_view_client_init, - /* reserved_1 */ NULL, - /* reserved_2 */ NULL, - (GtkClassInitFunc) NULL, - }; - - view_client_type = gtk_type_unique (nautilus_view_client_get_type(), &view_client_info); - } + static GtkType view_client_type = 0; + + if (!view_client_type) + { + const GtkTypeInfo view_client_info = + { + "NautilusMetaViewClient", + sizeof (NautilusMetaViewClient), + sizeof (NautilusMetaViewClientClass), + (GtkClassInitFunc) nautilus_meta_view_client_class_init, + (GtkObjectInitFunc) nautilus_meta_view_client_init, + /* reserved_1 */ NULL, + /* reserved_2 */ NULL, + (GtkClassInitFunc) NULL, + }; + + view_client_type = gtk_type_unique (nautilus_view_client_get_type(), &view_client_info); + } - return view_client_type; + return view_client_type; } static void @@ -105,8 +107,9 @@ void nautilus_meta_view_set_label(NautilusMetaViewClient *mvc, const char *label) { GnomeObject *ctl; + GnomePropertyBag *bag; - ctl = nautilus_view_client_get_gnome_object(NAUTILUS_VIEW_CLIENT(client)); + ctl = nautilus_view_client_get_gnome_object(NAUTILUS_VIEW_CLIENT(mvc)); /* set description */ bag = gnome_control_get_property_bag(GNOME_CONTROL(ctl)); gnome_property_bag_add(bag, "label", "string", label, label, _("Label"), diff --git a/libnautilus/ntl-view-client.c b/libnautilus/ntl-view-client.c index 4d2f771bb..35c478db3 100644 --- a/libnautilus/ntl-view-client.c +++ b/libnautilus/ntl-view-client.c @@ -60,21 +60,21 @@ impl_Nautilus_View_notify_selection_change(impl_POA_Nautilus_View * servant, POA_Nautilus_View__epv libnautilus_Nautilus_View_epv = { - NULL, /* _private */ - (gpointer) & impl_Nautilus_View_save_state, - (gpointer) & impl_Nautilus_View_load_state, - (gpointer) & impl_Nautilus_View_notify_location_change, - (gpointer) & impl_Nautilus_View_show_properties, - (gpointer) & impl_Nautilus_View_notify_selection_change + NULL, /* _private */ + (gpointer) & impl_Nautilus_View_save_state, + (gpointer) & impl_Nautilus_View_load_state, + (gpointer) & impl_Nautilus_View_notify_location_change, + (gpointer) & impl_Nautilus_View_show_properties, + (gpointer) & impl_Nautilus_View_notify_selection_change }; static PortableServer_ServantBase__epv base_epv = { NULL}; static POA_Nautilus_View__vepv impl_Nautilus_View_vepv = { - &base_epv, - NULL, - &libnautilus_Nautilus_View_epv + &base_epv, + NULL, + &libnautilus_Nautilus_View_epv }; static void @@ -120,80 +120,83 @@ impl_Nautilus_View_notify_selection_change(impl_POA_Nautilus_View * servant, static void impl_Nautilus_View__destroy(GnomeObject *obj, impl_POA_Nautilus_View *servant) { - PortableServer_ObjectId *objid; - CORBA_Environment ev; - void (*servant_destroy_func)(PortableServer_Servant servant, CORBA_Environment *ev); + PortableServer_ObjectId *objid; + CORBA_Environment ev; + void (*servant_destroy_func)(PortableServer_Servant servant, CORBA_Environment *ev); - CORBA_exception_init(&ev); + CORBA_exception_init(&ev); - servant_destroy_func = NAUTILUS_VIEW_CLIENT_CLASS(GTK_OBJECT(servant->view)->klass)->servant_destroy_func; - objid = PortableServer_POA_servant_to_id(bonobo_poa(), servant, &ev); - PortableServer_POA_deactivate_object(bonobo_poa(), objid, &ev); - CORBA_free(objid); - obj->servant = NULL; + servant_destroy_func = NAUTILUS_VIEW_CLIENT_CLASS(GTK_OBJECT(servant->view)->klass)->servant_destroy_func; + objid = PortableServer_POA_servant_to_id(bonobo_poa(), servant, &ev); + PortableServer_POA_deactivate_object(bonobo_poa(), objid, &ev); + CORBA_free(objid); + obj->servant = NULL; - servant_destroy_func((PortableServer_Servant) servant, &ev); - g_free(servant); - CORBA_exception_free(&ev); + servant_destroy_func((PortableServer_Servant) servant, &ev); + g_free(servant); + CORBA_exception_free(&ev); } static GnomeObject * impl_Nautilus_View__create(NautilusViewClient *view, CORBA_Environment * ev) { - GnomeObject *retval; - impl_POA_Nautilus_View *newservant; - void (*servant_init_func)(PortableServer_Servant servant, CORBA_Environment *ev); - NautilusViewClientClass *view_class = NAUTILUS_VIEW_CLIENT_CLASS(GTK_OBJECT(view)->klass); + GnomeObject *retval; + impl_POA_Nautilus_View *newservant; + void (*servant_init_func)(PortableServer_Servant servant, CORBA_Environment *ev); + NautilusViewClientClass *view_class = NAUTILUS_VIEW_CLIENT_CLASS(GTK_OBJECT(view)->klass); - servant_init_func = view_class->servant_init_func; - newservant = g_new0(impl_POA_Nautilus_View, 1); - newservant->servant.vepv = view_class->vepv; - newservant->servant.vepv->GNOME_Unknown_epv = gnome_object_get_epv(FALSE); - newservant->view = view; - servant_init_func((PortableServer_Servant) newservant, ev); + servant_init_func = view_class->servant_init_func; + newservant = g_new0(impl_POA_Nautilus_View, 1); + newservant->servant.vepv = view_class->vepv; + if(!newservant->servant.vepv->GNOME_Unknown_epv) + newservant->servant.vepv->GNOME_Unknown_epv = gnome_object_get_epv(); + newservant->view = view; + servant_init_func((PortableServer_Servant) newservant, ev); - retval = gnome_object_new_from_servant(newservant); + retval = gnome_object_new_from_servant(newservant); - gtk_signal_connect(GTK_OBJECT(retval), "destroy", GTK_SIGNAL_FUNC(impl_Nautilus_View__destroy), newservant); + gtk_signal_connect(GTK_OBJECT(retval), "destroy", GTK_SIGNAL_FUNC(impl_Nautilus_View__destroy), newservant); - return retval; + return retval; } static void nautilus_view_client_init (NautilusViewClient *view); static void nautilus_view_client_destroy (NautilusViewClient *view); static void nautilus_view_client_class_init (NautilusViewClientClass *klass); static void nautilus_view_client_set_arg (GtkObject *object, - GtkArg *arg, - guint arg_id); + GtkArg *arg, + guint arg_id); static void nautilus_view_client_get_arg (GtkObject *object, - GtkArg *arg, - guint arg_id); + GtkArg *arg, + guint arg_id); static void nautilus_view_client_size_request (GtkWidget *widget, - GtkRequisition *requisition); + GtkRequisition *requisition); static void nautilus_view_client_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); + GtkAllocation *allocation); GtkType nautilus_view_client_get_type (void) { - static GtkType view_client_type = 0; - - if (!view_client_type) { - const GtkTypeInfo view_client_info = { - "NautilusViewClient", - sizeof (NautilusViewClient), - sizeof (NautilusViewClientClass), - (GtkClassInitFunc) nautilus_view_client_class_init, - (GtkObjectInitFunc) nautilus_view_client_init, - /* reserved_1 */ NULL, - /* reserved_2 */ NULL, - (GtkClassInitFunc) NULL, - }; - - view_client_type = gtk_type_unique (gtk_bin_get_type(), &view_client_info); - } + static GtkType view_client_type = 0; + + if (!view_client_type) + { + const GtkTypeInfo view_client_info = + { + "NautilusViewClient", + sizeof (NautilusViewClient), + sizeof (NautilusViewClientClass), + (GtkClassInitFunc) nautilus_view_client_class_init, + (GtkObjectInitFunc) nautilus_view_client_init, + /* reserved_1 */ NULL, + /* reserved_2 */ NULL, + (GtkClassInitFunc) NULL, + }; + + view_client_type = gtk_type_unique (gtk_bin_get_type(), &view_client_info); + } - return view_client_type; + return view_client_type; } #if 0 @@ -208,13 +211,13 @@ gtk_marshal_NONE__BOXED_OBJECT_BOXED (GtkObject * object, gpointer func_data, GtkArg * args) { - GtkSignal_NONE__BOXED_OBJECT_BOXED rfunc; - rfunc = (GtkSignal_NONE__BOXED_OBJECT_BOXED) func; - (*rfunc) (object, - GTK_VALUE_BOXED (args[0]), - GTK_VALUE_OBJECT (args[1]), - GTK_VALUE_BOXED (args[2]), - func_data); + GtkSignal_NONE__BOXED_OBJECT_BOXED rfunc; + rfunc = (GtkSignal_NONE__BOXED_OBJECT_BOXED) func; + (*rfunc) (object, + GTK_VALUE_BOXED (args[0]), + GTK_VALUE_OBJECT (args[1]), + GTK_VALUE_BOXED (args[2]), + func_data); } #endif @@ -249,29 +252,29 @@ nautilus_view_client_class_init (NautilusViewClientClass *klass) gtk_marshal_NONE__BOXED, GTK_TYPE_NONE, 1, GTK_TYPE_BOXED); klass->view_client_signals[i++] = gtk_signal_new("load_state", - GTK_RUN_LAST, + GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (NautilusViewClientClass, load_state), gtk_marshal_NONE__STRING, GTK_TYPE_NONE, 1, GTK_TYPE_STRING); klass->view_client_signals[i++] = gtk_signal_new("save_state", - GTK_RUN_LAST, - object_class->type, - GTK_SIGNAL_OFFSET (NautilusViewClientClass, save_state), - gtk_marshal_NONE__STRING, - GTK_TYPE_NONE, 1, GTK_TYPE_STRING); + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (NautilusViewClientClass, save_state), + gtk_marshal_NONE__STRING, + GTK_TYPE_NONE, 1, GTK_TYPE_STRING); klass->view_client_signals[i++] = gtk_signal_new("show_properties", - GTK_RUN_LAST, - object_class->type, - GTK_SIGNAL_OFFSET (NautilusViewClientClass, show_properties), - gtk_marshal_NONE__NONE, - GTK_TYPE_NONE, 0); + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (NautilusViewClientClass, show_properties), + gtk_marshal_NONE__NONE, + GTK_TYPE_NONE, 0); klass->view_client_signals[i++] = gtk_signal_new("notify_selection_change", - GTK_RUN_LAST, - object_class->type, - GTK_SIGNAL_OFFSET (NautilusViewClientClass, notify_selection_change), - gtk_marshal_NONE__BOXED, - GTK_TYPE_NONE, 1, GTK_TYPE_BOXED); + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (NautilusViewClientClass, notify_selection_change), + gtk_marshal_NONE__BOXED, + GTK_TYPE_NONE, 1, GTK_TYPE_BOXED); gtk_object_class_add_signals (object_class, klass->view_client_signals, i); } @@ -316,7 +319,7 @@ nautilus_view_client_destroy (NautilusViewClient *view) void nautilus_view_client_request_location_change(NautilusViewClient *view, - Nautilus_NavigationRequestInfo *loc) + Nautilus_NavigationRequestInfo *loc) { CORBA_Environment ev; @@ -400,7 +403,7 @@ nautilus_view_client_request_status_change (NautilusViewClient *view, static void nautilus_view_client_size_request (GtkWidget *widget, - GtkRequisition *requisition) + GtkRequisition *requisition) { GtkBin *bin; @@ -422,7 +425,7 @@ nautilus_view_client_size_request (GtkWidget *widget, static void nautilus_view_client_size_allocate (GtkWidget *widget, - GtkAllocation *allocation) + GtkAllocation *allocation) { GtkBin *bin; GtkAllocation child_allocation; diff --git a/libnautilus/ntl-view-frame.c b/libnautilus/ntl-view-frame.c index 4d2f771bb..35c478db3 100644 --- a/libnautilus/ntl-view-frame.c +++ b/libnautilus/ntl-view-frame.c @@ -60,21 +60,21 @@ impl_Nautilus_View_notify_selection_change(impl_POA_Nautilus_View * servant, POA_Nautilus_View__epv libnautilus_Nautilus_View_epv = { - NULL, /* _private */ - (gpointer) & impl_Nautilus_View_save_state, - (gpointer) & impl_Nautilus_View_load_state, - (gpointer) & impl_Nautilus_View_notify_location_change, - (gpointer) & impl_Nautilus_View_show_properties, - (gpointer) & impl_Nautilus_View_notify_selection_change + NULL, /* _private */ + (gpointer) & impl_Nautilus_View_save_state, + (gpointer) & impl_Nautilus_View_load_state, + (gpointer) & impl_Nautilus_View_notify_location_change, + (gpointer) & impl_Nautilus_View_show_properties, + (gpointer) & impl_Nautilus_View_notify_selection_change }; static PortableServer_ServantBase__epv base_epv = { NULL}; static POA_Nautilus_View__vepv impl_Nautilus_View_vepv = { - &base_epv, - NULL, - &libnautilus_Nautilus_View_epv + &base_epv, + NULL, + &libnautilus_Nautilus_View_epv }; static void @@ -120,80 +120,83 @@ impl_Nautilus_View_notify_selection_change(impl_POA_Nautilus_View * servant, static void impl_Nautilus_View__destroy(GnomeObject *obj, impl_POA_Nautilus_View *servant) { - PortableServer_ObjectId *objid; - CORBA_Environment ev; - void (*servant_destroy_func)(PortableServer_Servant servant, CORBA_Environment *ev); + PortableServer_ObjectId *objid; + CORBA_Environment ev; + void (*servant_destroy_func)(PortableServer_Servant servant, CORBA_Environment *ev); - CORBA_exception_init(&ev); + CORBA_exception_init(&ev); - servant_destroy_func = NAUTILUS_VIEW_CLIENT_CLASS(GTK_OBJECT(servant->view)->klass)->servant_destroy_func; - objid = PortableServer_POA_servant_to_id(bonobo_poa(), servant, &ev); - PortableServer_POA_deactivate_object(bonobo_poa(), objid, &ev); - CORBA_free(objid); - obj->servant = NULL; + servant_destroy_func = NAUTILUS_VIEW_CLIENT_CLASS(GTK_OBJECT(servant->view)->klass)->servant_destroy_func; + objid = PortableServer_POA_servant_to_id(bonobo_poa(), servant, &ev); + PortableServer_POA_deactivate_object(bonobo_poa(), objid, &ev); + CORBA_free(objid); + obj->servant = NULL; - servant_destroy_func((PortableServer_Servant) servant, &ev); - g_free(servant); - CORBA_exception_free(&ev); + servant_destroy_func((PortableServer_Servant) servant, &ev); + g_free(servant); + CORBA_exception_free(&ev); } static GnomeObject * impl_Nautilus_View__create(NautilusViewClient *view, CORBA_Environment * ev) { - GnomeObject *retval; - impl_POA_Nautilus_View *newservant; - void (*servant_init_func)(PortableServer_Servant servant, CORBA_Environment *ev); - NautilusViewClientClass *view_class = NAUTILUS_VIEW_CLIENT_CLASS(GTK_OBJECT(view)->klass); + GnomeObject *retval; + impl_POA_Nautilus_View *newservant; + void (*servant_init_func)(PortableServer_Servant servant, CORBA_Environment *ev); + NautilusViewClientClass *view_class = NAUTILUS_VIEW_CLIENT_CLASS(GTK_OBJECT(view)->klass); - servant_init_func = view_class->servant_init_func; - newservant = g_new0(impl_POA_Nautilus_View, 1); - newservant->servant.vepv = view_class->vepv; - newservant->servant.vepv->GNOME_Unknown_epv = gnome_object_get_epv(FALSE); - newservant->view = view; - servant_init_func((PortableServer_Servant) newservant, ev); + servant_init_func = view_class->servant_init_func; + newservant = g_new0(impl_POA_Nautilus_View, 1); + newservant->servant.vepv = view_class->vepv; + if(!newservant->servant.vepv->GNOME_Unknown_epv) + newservant->servant.vepv->GNOME_Unknown_epv = gnome_object_get_epv(); + newservant->view = view; + servant_init_func((PortableServer_Servant) newservant, ev); - retval = gnome_object_new_from_servant(newservant); + retval = gnome_object_new_from_servant(newservant); - gtk_signal_connect(GTK_OBJECT(retval), "destroy", GTK_SIGNAL_FUNC(impl_Nautilus_View__destroy), newservant); + gtk_signal_connect(GTK_OBJECT(retval), "destroy", GTK_SIGNAL_FUNC(impl_Nautilus_View__destroy), newservant); - return retval; + return retval; } static void nautilus_view_client_init (NautilusViewClient *view); static void nautilus_view_client_destroy (NautilusViewClient *view); static void nautilus_view_client_class_init (NautilusViewClientClass *klass); static void nautilus_view_client_set_arg (GtkObject *object, - GtkArg *arg, - guint arg_id); + GtkArg *arg, + guint arg_id); static void nautilus_view_client_get_arg (GtkObject *object, - GtkArg *arg, - guint arg_id); + GtkArg *arg, + guint arg_id); static void nautilus_view_client_size_request (GtkWidget *widget, - GtkRequisition *requisition); + GtkRequisition *requisition); static void nautilus_view_client_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); + GtkAllocation *allocation); GtkType nautilus_view_client_get_type (void) { - static GtkType view_client_type = 0; - - if (!view_client_type) { - const GtkTypeInfo view_client_info = { - "NautilusViewClient", - sizeof (NautilusViewClient), - sizeof (NautilusViewClientClass), - (GtkClassInitFunc) nautilus_view_client_class_init, - (GtkObjectInitFunc) nautilus_view_client_init, - /* reserved_1 */ NULL, - /* reserved_2 */ NULL, - (GtkClassInitFunc) NULL, - }; - - view_client_type = gtk_type_unique (gtk_bin_get_type(), &view_client_info); - } + static GtkType view_client_type = 0; + + if (!view_client_type) + { + const GtkTypeInfo view_client_info = + { + "NautilusViewClient", + sizeof (NautilusViewClient), + sizeof (NautilusViewClientClass), + (GtkClassInitFunc) nautilus_view_client_class_init, + (GtkObjectInitFunc) nautilus_view_client_init, + /* reserved_1 */ NULL, + /* reserved_2 */ NULL, + (GtkClassInitFunc) NULL, + }; + + view_client_type = gtk_type_unique (gtk_bin_get_type(), &view_client_info); + } - return view_client_type; + return view_client_type; } #if 0 @@ -208,13 +211,13 @@ gtk_marshal_NONE__BOXED_OBJECT_BOXED (GtkObject * object, gpointer func_data, GtkArg * args) { - GtkSignal_NONE__BOXED_OBJECT_BOXED rfunc; - rfunc = (GtkSignal_NONE__BOXED_OBJECT_BOXED) func; - (*rfunc) (object, - GTK_VALUE_BOXED (args[0]), - GTK_VALUE_OBJECT (args[1]), - GTK_VALUE_BOXED (args[2]), - func_data); + GtkSignal_NONE__BOXED_OBJECT_BOXED rfunc; + rfunc = (GtkSignal_NONE__BOXED_OBJECT_BOXED) func; + (*rfunc) (object, + GTK_VALUE_BOXED (args[0]), + GTK_VALUE_OBJECT (args[1]), + GTK_VALUE_BOXED (args[2]), + func_data); } #endif @@ -249,29 +252,29 @@ nautilus_view_client_class_init (NautilusViewClientClass *klass) gtk_marshal_NONE__BOXED, GTK_TYPE_NONE, 1, GTK_TYPE_BOXED); klass->view_client_signals[i++] = gtk_signal_new("load_state", - GTK_RUN_LAST, + GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (NautilusViewClientClass, load_state), gtk_marshal_NONE__STRING, GTK_TYPE_NONE, 1, GTK_TYPE_STRING); klass->view_client_signals[i++] = gtk_signal_new("save_state", - GTK_RUN_LAST, - object_class->type, - GTK_SIGNAL_OFFSET (NautilusViewClientClass, save_state), - gtk_marshal_NONE__STRING, - GTK_TYPE_NONE, 1, GTK_TYPE_STRING); + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (NautilusViewClientClass, save_state), + gtk_marshal_NONE__STRING, + GTK_TYPE_NONE, 1, GTK_TYPE_STRING); klass->view_client_signals[i++] = gtk_signal_new("show_properties", - GTK_RUN_LAST, - object_class->type, - GTK_SIGNAL_OFFSET (NautilusViewClientClass, show_properties), - gtk_marshal_NONE__NONE, - GTK_TYPE_NONE, 0); + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (NautilusViewClientClass, show_properties), + gtk_marshal_NONE__NONE, + GTK_TYPE_NONE, 0); klass->view_client_signals[i++] = gtk_signal_new("notify_selection_change", - GTK_RUN_LAST, - object_class->type, - GTK_SIGNAL_OFFSET (NautilusViewClientClass, notify_selection_change), - gtk_marshal_NONE__BOXED, - GTK_TYPE_NONE, 1, GTK_TYPE_BOXED); + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (NautilusViewClientClass, notify_selection_change), + gtk_marshal_NONE__BOXED, + GTK_TYPE_NONE, 1, GTK_TYPE_BOXED); gtk_object_class_add_signals (object_class, klass->view_client_signals, i); } @@ -316,7 +319,7 @@ nautilus_view_client_destroy (NautilusViewClient *view) void nautilus_view_client_request_location_change(NautilusViewClient *view, - Nautilus_NavigationRequestInfo *loc) + Nautilus_NavigationRequestInfo *loc) { CORBA_Environment ev; @@ -400,7 +403,7 @@ nautilus_view_client_request_status_change (NautilusViewClient *view, static void nautilus_view_client_size_request (GtkWidget *widget, - GtkRequisition *requisition) + GtkRequisition *requisition) { GtkBin *bin; @@ -422,7 +425,7 @@ nautilus_view_client_size_request (GtkWidget *widget, static void nautilus_view_client_size_allocate (GtkWidget *widget, - GtkAllocation *allocation) + GtkAllocation *allocation) { GtkBin *bin; GtkAllocation child_allocation; diff --git a/src/Makefile.am b/src/Makefile.am index b40307480..45861c369 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -4,13 +4,15 @@ bin_PROGRAMS=nautilus INCLUDES=-I$(top_srcdir) -I$(top_builddir) \ $(BONOBO_CFLAGS) $(GNORBA_CFLAGS) \ - $(GNOMEUI_CFLAGS) -DVERSION="\"$(VERSION)\"" + $(GNOMEUI_CFLAGS) $(GDK_PIXBUF_CFLAGS) \ + -DVERSION="\"$(VERSION)\"" LDADD= file-manager/libntl-file-manager.la \ ../libnautilus/libnautilus.la \ $(BONOBO_LIBS) \ $(GNORBA_LIBS) \ - $(GNOMEUI_LIBS) + $(GNOMEUI_LIBS) \ + $(GDK_PIXBUF_LIBS) nautilus_SOURCES= \ ntl-content-view.h \ diff --git a/src/explorer-location-bar.c b/src/explorer-location-bar.c index a1547c4f2..6a24acf70 100644 --- a/src/explorer-location-bar.c +++ b/src/explorer-location-bar.c @@ -132,11 +132,13 @@ drag_data_get_cb (GtkWidget *widget, } static void -location_changed (ExplorerLocationBar *location_bar) +location_changed (ExplorerLocationBar *location_bar, const char *uri_string) { g_return_if_fail (location_bar != NULL); g_return_if_fail (EXPLORER_IS_LOCATION_BAR (location_bar)); + + gtk_entry_set_text(GTK_ENTRY(location_bar->entry), uri_string); } static void diff --git a/src/explorer-location-bar.h b/src/explorer-location-bar.h index f430a88d6..2775ef47b 100644 --- a/src/explorer-location-bar.h +++ b/src/explorer-location-bar.h @@ -42,7 +42,7 @@ typedef struct _ExplorerLocationBar ExplorerLocationBar; struct _ExplorerLocationBarClass { GtkHBoxClass parent_class; - void (*location_changed) (ExplorerLocationBar *, + void (*location_changed) (ExplorerLocationBar *location_bar, const char *uri_string); }; typedef struct _ExplorerLocationBarClass ExplorerLocationBarClass; diff --git a/src/file-manager/Makefile.am b/src/file-manager/Makefile.am index c1f650709..23ef77ec7 100644 --- a/src/file-manager/Makefile.am +++ b/src/file-manager/Makefile.am @@ -1,3 +1,40 @@ noinst_LTLIBRARIES=libntl-file-manager.la -libntl_file_manager_la_SOURCES=dummy.c +INCLUDES=-I$(top_srcdir) -I$(top_builddir) \ + $(BONOBO_CFLAGS) $(GNORBA_CFLAGS) \ + $(GNOMEUI_CFLAGS) -DVERSION="\"$(VERSION)\"" \ + $(GDK_PIXBUF_CFLAGS) +dfos_corba_srcs= \ + GNOME_Desktop_FileOperationService.h \ + GNOME_Desktop_FileOperationService-stubs.c \ + GNOME_Desktop_FileOperationService-skels.c \ + GNOME_Desktop_FileOperationService-common.c + +libntl_file_manager_la_SOURCES= \ + fm-icon-cache.c \ + fm-icon-cache.h \ + desktop-window.c \ + desktop-window.h \ + dfos-corba.c \ + dfos-corba.h \ + dfos-xfer-progress-dialog.c \ + dfos-xfer-progress-dialog.h \ + dfos-xfer.c \ + dfos-xfer.h \ + dfos.c \ + dfos.h \ + $(dfos_corba_srcs) \ + fm-directory-view.h \ + fm-directory-view.c + +dfos-corba.h: GNOME_Desktop_FileOperationService.h + +$(dfos_corba_srcs): dfos_corba_stamp + +dfos_corba_stamp: $(top_srcdir)/idl/GNOME_Desktop_FileOperationService.idl + orbit-idl $(top_srcdir)/idl/GNOME_Desktop_FileOperationService.idl + touch dfos_corba_stamp + +BUILT_SOURCES=$(dfos_corba_srcs) + +CLEAN_FILES=$(dfos_corba_srcs) dfos_corba_stamp diff --git a/src/file-manager/desktop-window.c b/src/file-manager/desktop-window.c index ebd3a9f6b..bc7973f5e 100644 --- a/src/file-manager/desktop-window.c +++ b/src/file-manager/desktop-window.c @@ -21,7 +21,7 @@ */ #include <config.h> -#include "desktopwindow.h" +#include "desktop-window.h" #include <libgnomeui/gnome-winhints.h> static void desktop_window_class_init (DesktopWindowClass *class); diff --git a/src/file-manager/fm-directory-view.c b/src/file-manager/fm-directory-view.c index ab7ad92ea..4bba7e50f 100644 --- a/src/file-manager/fm-directory-view.c +++ b/src/file-manager/fm-directory-view.c @@ -1,5 +1,5 @@ /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ -/* explorer-directory-view.c +/* fm-directory-view.c * * Copyright (C) 1999 Free Software Foundaton * @@ -27,12 +27,15 @@ #include <gnome.h> -#include "gnome-icon-container.h" -#include "gtkflist.h" +#define FM_DEBUG(x) -#include "explorer-debug.h" -#include "explorer-directory-view.h" -#include "explorer-icon-manager.h" +#include <libnautilus/libnautilus.h> +#include <libnautilus/gnome-icon-container.h> +#include <libnautilus/gtkflist.h> + +#include "fm-directory-view.h" +#include "fm-icon-cache.h" +#include "fm-public-api.h" enum { @@ -46,19 +49,21 @@ enum { #define DISPLAY_TIMEOUT_INTERVAL 500 - -static GtkScrollFrameClass *parent_class = NULL; + +static NautilusViewClientClass *parent_class = NULL; static guint signals[LAST_SIGNAL] = { 0 }; - +static FMIconCache *icm = NULL; + static void -display_selection_info (ExplorerDirectoryView *view, +display_selection_info (FMDirectoryView *view, GList *selection) { GnomeVFSFileSize size; guint count; - gchar *count_string, *size_string, *msg; + gchar *size_string, msg[32]; GList *p; + Nautilus_StatusRequestInfo sri; count = 0; size = 0; @@ -71,7 +76,6 @@ display_selection_info (ExplorerDirectoryView *view, } if (count == 0) { - gnome_appbar_set_status (view->app_bar, ""); return; } @@ -103,38 +107,33 @@ display_selection_info (ExplorerDirectoryView *view, } } - if (count == 1) - count_string = g_strdup (_("1 file.")); - else - count_string = g_strdup_printf (_("%d files."), count); - - msg = g_strdup_printf (_("%s selected in %s"), - size_string, count_string); - gnome_appbar_set_status (view->app_bar, msg); + g_snprintf (msg, sizeof(msg), _("%d %s selected in %s"), + count, (count==1)?_("files"):_("file"), size_string); + memset(&sri, 0, sizeof(sri)); + sri.status_string = msg; + nautilus_view_client_request_status_change(NAUTILUS_VIEW_CLIENT(view), &sri); - g_free (count_string); g_free (size_string); - g_free (msg); } /* GnomeIconContainer handling. */ static gboolean -mode_uses_icon_container (ExplorerDirectoryViewMode mode) +mode_uses_icon_container (FMDirectoryViewMode mode) { - return (mode == EXPLORER_DIRECTORY_VIEW_MODE_ICONS - || mode == EXPLORER_DIRECTORY_VIEW_MODE_SMALLICONS); + return (mode == FM_DIRECTORY_VIEW_MODE_ICONS + || mode == FM_DIRECTORY_VIEW_MODE_SMALLICONS); } static gboolean -view_has_icon_container (ExplorerDirectoryView *view) +view_has_icon_container (FMDirectoryView *view) { return mode_uses_icon_container (view->mode); } static GnomeIconContainer * -get_icon_container (ExplorerDirectoryView *view) +get_icon_container (FMDirectoryView *view) { GtkBin *bin; @@ -151,13 +150,13 @@ get_icon_container (ExplorerDirectoryView *view) static gint display_icon_container_selection_info_idle_cb (gpointer data) { - ExplorerDirectoryView *view; + FMDirectoryView *view; GnomeIconContainer *icon_container; GList *selection; puts (__FUNCTION__); - view = EXPLORER_DIRECTORY_VIEW (data); + view = FM_DIRECTORY_VIEW (data); icon_container = get_icon_container (view); selection = gnome_icon_container_get_selection (icon_container); @@ -173,9 +172,9 @@ static void icon_container_selection_changed_cb (GnomeIconContainer *container, gpointer data) { - ExplorerDirectoryView *view; + FMDirectoryView *view; - view = EXPLORER_DIRECTORY_VIEW (data); + view = FM_DIRECTORY_VIEW (data); if (view->display_selection_idle_id == 0) view->display_selection_idle_id = gtk_idle_add (display_icon_container_selection_info_idle_cb, @@ -188,12 +187,12 @@ icon_container_activate_cb (GnomeIconContainer *icon_container, gpointer icon_data, gpointer data) { - ExplorerDirectoryView *directory_view; + FMDirectoryView *directory_view; GnomeVFSURI *new_uri; GnomeVFSFileInfo *info; info = (GnomeVFSFileInfo *) icon_data; - directory_view = EXPLORER_DIRECTORY_VIEW (data); + directory_view = FM_DIRECTORY_VIEW (data); new_uri = gnome_vfs_uri_append_path (directory_view->uri, name); gtk_signal_emit (GTK_OBJECT (directory_view), @@ -202,25 +201,25 @@ icon_container_activate_cb (GnomeIconContainer *icon_container, } static void -add_to_icon_container (ExplorerDirectoryView *view, - ExplorerIconManager *icon_manager, +add_to_icon_container (FMDirectoryView *view, + FMIconCache *icon_manager, GnomeIconContainer *icon_container, GnomeVFSFileInfo *info, gboolean with_layout) { - GdkImlibImage *image; + GdkPixbuf *image; - image = explorer_icon_manager_get_icon_for_info (icon_manager, info); + image = fm_icon_cache_get_icon (icon_manager, info); if (! with_layout || view->icon_layout == NULL) { - gnome_icon_container_add_imlib_auto (icon_container, + gnome_icon_container_add_pixbuf_auto (icon_container, image, info->name, info); } else { gboolean result; - result = gnome_icon_container_add_imlib_with_layout + result = gnome_icon_container_add_pixbuf_with_layout (icon_container, image, info->name, info, view->icon_layout); if (! result) @@ -230,17 +229,16 @@ add_to_icon_container (ExplorerDirectoryView *view, } static void -load_icon_container (ExplorerDirectoryView *view, +load_icon_container (FMDirectoryView *view, GnomeIconContainer *icon_container) { gnome_icon_container_clear (icon_container); if (view->directory_list != NULL) { GnomeVFSDirectoryListPosition *position; - ExplorerIconManager *icon_manager; - icon_manager = explorer_application_get_icon_manager - (view->application); + if (!icm) + icm = fm_icon_cache_new(NULL); position = gnome_vfs_directory_list_get_first_position (view->directory_list); @@ -250,7 +248,7 @@ load_icon_container (ExplorerDirectoryView *view, info = gnome_vfs_directory_list_get (view->directory_list, position); - add_to_icon_container (view, icon_manager, + add_to_icon_container (view, icm, icon_container, info, TRUE); position = gnome_vfs_directory_list_position_next @@ -261,7 +259,7 @@ load_icon_container (ExplorerDirectoryView *view, } static GnomeIconContainer * -create_icon_container (ExplorerDirectoryView *view) +create_icon_container (FMDirectoryView *view) { GnomeIconContainer *icon_container; @@ -285,8 +283,8 @@ create_icon_container (ExplorerDirectoryView *view) } static void -setup_icon_container (ExplorerDirectoryView *view, - ExplorerDirectoryViewMode mode) +setup_icon_container (FMDirectoryView *view, + FMDirectoryViewMode mode) { GnomeIconContainer *icon_container; @@ -303,7 +301,7 @@ setup_icon_container (ExplorerDirectoryView *view, icon_container = get_icon_container (view); } - if (mode == EXPLORER_DIRECTORY_VIEW_MODE_ICONS) + if (mode == FM_DIRECTORY_VIEW_MODE_ICONS) gnome_icon_container_set_icon_mode (icon_container, GNOME_ICON_CONTAINER_NORMAL_ICONS); else @@ -315,20 +313,20 @@ setup_icon_container (ExplorerDirectoryView *view, /* GtkFList handling. */ static gboolean -mode_uses_flist (ExplorerDirectoryViewMode mode) +mode_uses_flist (FMDirectoryViewMode mode) { - return (mode == EXPLORER_DIRECTORY_VIEW_MODE_DETAILED - || mode == EXPLORER_DIRECTORY_VIEW_MODE_CUSTOM); + return (mode == FM_DIRECTORY_VIEW_MODE_DETAILED + || mode == FM_DIRECTORY_VIEW_MODE_CUSTOM); } static gboolean -view_has_flist (ExplorerDirectoryView *view) +view_has_flist (FMDirectoryView *view) { return mode_uses_flist (view->mode); } static GtkFList * -get_flist (ExplorerDirectoryView *view) +get_flist (FMDirectoryView *view) { GtkBin *bin; @@ -345,11 +343,11 @@ get_flist (ExplorerDirectoryView *view) static gint display_flist_selection_info_idle_cb (gpointer data) { - ExplorerDirectoryView *view; + FMDirectoryView *view; GtkFList *flist; GList *selection; - view = EXPLORER_DIRECTORY_VIEW (data); + view = FM_DIRECTORY_VIEW (data); flist = get_flist (view); selection = gtk_flist_get_selection (flist); @@ -365,9 +363,9 @@ static void flist_selection_changed_cb (GtkFList *flist, gpointer data) { - ExplorerDirectoryView *view; + FMDirectoryView *view; - view = EXPLORER_DIRECTORY_VIEW (data); + view = FM_DIRECTORY_VIEW (data); if (view->display_selection_idle_id == 0) view->display_selection_idle_id = gtk_idle_add (display_flist_selection_info_idle_cb, @@ -379,12 +377,12 @@ flist_activate_cb (GtkFList *flist, gpointer entry_data, gpointer data) { - ExplorerDirectoryView *directory_view; + FMDirectoryView *directory_view; GnomeVFSURI *new_uri; GnomeVFSFileInfo *info; info = (GnomeVFSFileInfo *) entry_data; - directory_view = EXPLORER_DIRECTORY_VIEW (data); + directory_view = FM_DIRECTORY_VIEW (data); new_uri = gnome_vfs_uri_append_path (directory_view->uri, info->name); gtk_signal_emit (GTK_OBJECT (directory_view), @@ -393,7 +391,7 @@ flist_activate_cb (GtkFList *flist, } static void -add_to_flist (ExplorerIconManager *icon_manager, +add_to_flist (FMIconCache *icon_manager, GtkFList *flist, GnomeVFSFileInfo *info) { @@ -409,7 +407,7 @@ add_to_flist (ExplorerIconManager *icon_manager, } static GtkFList * -create_flist (ExplorerDirectoryView *view) +create_flist (FMDirectoryView *view) { GtkFList *flist; gchar *titles[] = { @@ -436,10 +434,10 @@ create_flist (ExplorerDirectoryView *view) if (view->directory_list != NULL) { GnomeVFSDirectoryListPosition *position; - ExplorerIconManager *icon_manager; + FMIconCache *icon_manager; - icon_manager = explorer_application_get_icon_manager - (view->application); + if(!icm) + icm = icon_manager = fm_icon_cache_new(NULL); position = gnome_vfs_directory_list_get_first_position (view->directory_list); @@ -464,8 +462,8 @@ create_flist (ExplorerDirectoryView *view) } static void -setup_flist (ExplorerDirectoryView *view, - ExplorerDirectoryViewMode mode) +setup_flist (FMDirectoryView *view, + FMDirectoryViewMode mode) { GtkFList *flist; @@ -485,56 +483,21 @@ setup_flist (ExplorerDirectoryView *view, /* Signals. */ static void -real_open_failed (ExplorerDirectoryView *directory_view, - GnomeVFSResult result) -{ - g_return_if_fail (directory_view != NULL); - g_return_if_fail (EXPLORER_IS_DIRECTORY_VIEW (directory_view)); -} - -static void -real_open_done (ExplorerDirectoryView *directory_view) +real_location_change(NautilusViewClient *directory_view, Nautilus_NavigationInfo *nav_context) { - g_return_if_fail (directory_view != NULL); - g_return_if_fail (EXPLORER_IS_DIRECTORY_VIEW (directory_view)); + fm_directory_view_load_uri(FM_DIRECTORY_VIEW(directory_view), nav_context->requested_uri); } -static void -real_load_failed (ExplorerDirectoryView *directory_view, - GnomeVFSResult result) -{ - g_return_if_fail (directory_view != NULL); - g_return_if_fail (EXPLORER_IS_DIRECTORY_VIEW (directory_view)); -} - -static void -real_load_done (ExplorerDirectoryView *directory_view) -{ - g_return_if_fail (directory_view != NULL); - g_return_if_fail (EXPLORER_IS_DIRECTORY_VIEW (directory_view)); -} - -static void -real_activate_uri (ExplorerDirectoryView *directory_view, - const GnomeVFSURI *uri, - const gchar *mime_type) -{ - g_return_if_fail (directory_view != NULL); - g_return_if_fail (EXPLORER_IS_DIRECTORY_VIEW (directory_view)); - g_return_if_fail (uri != NULL); -} - - /* GtkObject methods. */ static void destroy (GtkObject *object) { - ExplorerDirectoryView *view; + FMDirectoryView *view; - EXPLORER_DEBUG (("Entering function.")); + FM_DEBUG (("Entering function.")); - view = EXPLORER_DIRECTORY_VIEW (object); + view = FM_DIRECTORY_VIEW (object); if (view->directory_list != NULL) gnome_vfs_directory_list_destroy (view->directory_list); @@ -543,7 +506,7 @@ destroy (GtkObject *object) gnome_vfs_uri_unref (view->uri); if (view->vfs_async_handle != NULL) { - EXPLORER_DEBUG (("Cancelling VFS operation.")); + FM_DEBUG (("Cancelling VFS operation.")); gnome_vfs_async_cancel (view->vfs_async_handle); } @@ -559,79 +522,22 @@ destroy (GtkObject *object) static void -class_init (ExplorerDirectoryViewClass *class) +class_init (FMDirectoryViewClass *class) { GtkObjectClass *object_class; object_class = GTK_OBJECT_CLASS (class); - parent_class = gtk_type_class (gtk_scroll_frame_get_type ()); - - signals[OPEN_FAILED] = - gtk_signal_new ("open_failed", - GTK_RUN_FIRST, - object_class->type, - GTK_SIGNAL_OFFSET (ExplorerDirectoryViewClass, - open_failed), - gtk_marshal_NONE__INT, - GTK_TYPE_NONE, 0, - GTK_TYPE_INT); - signals[OPEN_DONE] = - gtk_signal_new ("open_done", - GTK_RUN_FIRST, - object_class->type, - GTK_SIGNAL_OFFSET (ExplorerDirectoryViewClass, - open_done), - gtk_marshal_NONE__NONE, - GTK_TYPE_NONE, 0); - signals[LOAD_FAILED] = - gtk_signal_new ("load_failed", - GTK_RUN_FIRST, - object_class->type, - GTK_SIGNAL_OFFSET (ExplorerDirectoryViewClass, - load_failed), - gtk_marshal_NONE__INT, - GTK_TYPE_NONE, 0, - GTK_TYPE_INT); - signals[LOAD_DONE] = - gtk_signal_new ("load_done", - GTK_RUN_FIRST, - object_class->type, - GTK_SIGNAL_OFFSET (ExplorerDirectoryViewClass, - load_done), - gtk_marshal_NONE__NONE, - GTK_TYPE_NONE, 0); - signals[ACTIVATE_URI] = - gtk_signal_new ("activate_uri", - GTK_RUN_FIRST, - object_class->type, - GTK_SIGNAL_OFFSET (ExplorerDirectoryViewClass, - load_done), - gtk_marshal_NONE__POINTER_POINTER, - GTK_TYPE_NONE, 2, - GTK_TYPE_POINTER, - GTK_TYPE_STRING); - - gtk_object_class_add_signals (object_class, signals, LAST_SIGNAL); - + parent_class = gtk_type_class (gtk_type_parent(object_class->type)); object_class->destroy = destroy; - class->open_failed = real_open_failed; - class->open_done = real_open_done; - class->load_failed = real_load_failed; - class->load_done = real_load_done; - class->activate_uri = real_activate_uri; + parent_class->notify_location_change = real_location_change; } static void -init (ExplorerDirectoryView *directory_view) +init (FMDirectoryView *directory_view) { - GtkScrollFrame *scroll_frame; - - directory_view->application = NULL; - directory_view->app_bar = NULL; - - directory_view->mode = EXPLORER_DIRECTORY_VIEW_MODE_NONE; + directory_view->mode = FM_DIRECTORY_VIEW_MODE_NONE; directory_view->uri = NULL; directory_view->vfs_async_handle = NULL; @@ -647,21 +553,21 @@ init (ExplorerDirectoryView *directory_view) directory_view->display_selection_idle_id = 0; - scroll_frame = GTK_SCROLL_FRAME (directory_view); - - gtk_scroll_frame_set_hadjustment (scroll_frame, NULL); - gtk_scroll_frame_set_vadjustment (scroll_frame, NULL); - gtk_scroll_frame_set_policy (scroll_frame, + directory_view->scroll_frame = gtk_scroll_frame_new(NULL, NULL); + gtk_scroll_frame_set_policy (GTK_SCROLL_FRAME(directory_view->scroll_frame), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - gtk_scroll_frame_set_shadow_type (scroll_frame, GTK_SHADOW_IN); + gtk_scroll_frame_set_shadow_type (GTK_SCROLL_FRAME(directory_view->scroll_frame), GTK_SHADOW_IN); + gtk_widget_show(directory_view->scroll_frame); + gtk_container_add(GTK_CONTAINER(directory_view), directory_view->scroll_frame); + fm_directory_view_set_mode (directory_view, FM_DIRECTORY_VIEW_MODE_ICONS); } /* Utility functions. */ static void -stop_load (ExplorerDirectoryView *view) +stop_load (FMDirectoryView *view) { if (view->vfs_async_handle != NULL) { gnome_vfs_async_cancel (view->vfs_async_handle); @@ -679,16 +585,17 @@ stop_load (ExplorerDirectoryView *view) static void -display_pending_entries (ExplorerDirectoryView *view) +display_pending_entries (FMDirectoryView *view) { - ExplorerIconManager *icon_manager; + FMIconCache *icon_manager; GnomeIconContainer *icon_container; GtkFList *flist; guint i; - EXPLORER_DEBUG (("Adding %d entries.", view->entries_to_display)); + FM_DEBUG (("Adding %d entries.", view->entries_to_display)); - icon_manager = explorer_application_get_icon_manager (view->application); + if(!icm) + icm = fm_icon_cache_new(NULL); if (view_has_icon_container (view)) { icon_container = get_icon_container (view); @@ -720,22 +627,23 @@ display_pending_entries (ExplorerDirectoryView *view) view->entries_to_display = 0; - EXPLORER_DEBUG (("Done.")); + FM_DEBUG (("Done.")); } static void -display_icons_not_in_layout (ExplorerDirectoryView *view) +display_icons_not_in_layout (FMDirectoryView *view) { - ExplorerIconManager *icon_manager; + FMIconCache *icon_manager; GnomeIconContainer *icon_container; GList *p; if (view->icons_not_in_layout == NULL) return; - EXPLORER_DEBUG (("Adding entries not in layout.")); + FM_DEBUG (("Adding entries not in layout.")); - icon_manager = explorer_application_get_icon_manager (view->application); + if (!icm) + icm = icon_manager = fm_icon_cache_new(NULL); icon_container = get_icon_container (view); g_return_if_fail (icon_container != NULL); @@ -748,10 +656,10 @@ display_icons_not_in_layout (ExplorerDirectoryView *view) info = p->data; add_to_icon_container (view, icon_manager, icon_container, info, FALSE); - EXPLORER_DEBUG (("Adding `%s'", info->name)); + FM_DEBUG (("Adding `%s'", info->name)); } - EXPLORER_DEBUG (("Done with entries not in layout.")); + FM_DEBUG (("Done with entries not in layout.")); g_list_free (view->icons_not_in_layout); view->icons_not_in_layout = NULL; @@ -760,15 +668,15 @@ display_icons_not_in_layout (ExplorerDirectoryView *view) static gboolean display_timeout_cb (gpointer data) { - ExplorerDirectoryView *view; + FMDirectoryView *view; - EXPLORER_DEBUG (("Entering function")); + FM_DEBUG (("Entering function")); - view = EXPLORER_DIRECTORY_VIEW (data); + view = FM_DIRECTORY_VIEW (data); display_pending_entries (view); - EXPLORER_DEBUG (("Done")); + FM_DEBUG (("Done")); return TRUE; } @@ -776,7 +684,7 @@ display_timeout_cb (gpointer data) /* Set up the base URI for Drag & Drop operations. */ static void -setup_base_uri (ExplorerDirectoryView *view) +setup_base_uri (FMDirectoryView *view) { GnomeIconContainer *icon_container; gchar *txt_uri; @@ -799,12 +707,12 @@ directory_load_cb (GnomeVFSAsyncHandle *handle, guint entries_read, gpointer callback_data) { - ExplorerDirectoryView *view; + FMDirectoryView *view; - EXPLORER_DEBUG (("Entering function, %d entries read: %s", + FM_DEBUG (("Entering function, %d entries read: %s", entries_read, gnome_vfs_result_to_string (result))); - view = EXPLORER_DIRECTORY_VIEW (callback_data); + view = FM_DIRECTORY_VIEW (callback_data); if (view->directory_list == NULL) { if (result == GNOME_VFS_OK || result == GNOME_VFS_ERROR_EOF) { @@ -853,30 +761,30 @@ directory_load_cb (GnomeVFSAsyncHandle *handle, gboolean -explorer_directory_view_is_valid_mode (ExplorerDirectoryViewMode mode) +fm_directory_view_is_valid_mode (FMDirectoryViewMode mode) { switch (mode) { - case EXPLORER_DIRECTORY_VIEW_MODE_ICONS: - case EXPLORER_DIRECTORY_VIEW_MODE_SMALLICONS: - case EXPLORER_DIRECTORY_VIEW_MODE_DETAILED: - case EXPLORER_DIRECTORY_VIEW_MODE_CUSTOM: + case FM_DIRECTORY_VIEW_MODE_ICONS: + case FM_DIRECTORY_VIEW_MODE_SMALLICONS: + case FM_DIRECTORY_VIEW_MODE_DETAILED: + case FM_DIRECTORY_VIEW_MODE_CUSTOM: return TRUE; - case EXPLORER_DIRECTORY_VIEW_MODE_NONE: + case FM_DIRECTORY_VIEW_MODE_NONE: default: return FALSE; } } GtkType -explorer_directory_view_get_type (void) +fm_directory_view_get_type (void) { static GtkType directory_view_type = 0; if (directory_view_type == 0) { static GtkTypeInfo directory_view_info = { - "ExplorerDirectoryView", - sizeof (ExplorerDirectoryView), - sizeof (ExplorerDirectoryViewClass), + "FMDirectoryView", + sizeof (FMDirectoryView), + sizeof (FMDirectoryViewClass), (GtkClassInitFunc) class_init, (GtkObjectInitFunc) init, /* reserved_1 */ NULL, @@ -885,7 +793,7 @@ explorer_directory_view_get_type (void) }; directory_view_type - = gtk_type_unique (gtk_scroll_frame_get_type (), + = gtk_type_unique (nautilus_content_view_client_get_type (), &directory_view_info); } @@ -893,55 +801,41 @@ explorer_directory_view_get_type (void) } GtkWidget * -explorer_directory_view_new (ExplorerApplication *application, - GnomeAppBar *app_bar, - ExplorerDirectoryViewMode mode) +fm_directory_view_new (void) { - ExplorerDirectoryView *new; - - g_return_val_if_fail (application != NULL, NULL); - g_return_val_if_fail (explorer_directory_view_is_valid_mode (mode), NULL); - - new = gtk_type_new (explorer_directory_view_get_type ()); - - new->application = application; - new->app_bar = app_bar; - - explorer_directory_view_set_mode (new, mode); - - return GTK_WIDGET (new); + return gtk_widget_new(fm_directory_view_get_type (), NULL); } -ExplorerDirectoryViewMode -explorer_directory_view_get_mode (ExplorerDirectoryView *view) +FMDirectoryViewMode +fm_directory_view_get_mode (FMDirectoryView *view) { - g_return_val_if_fail (view != NULL, EXPLORER_DIRECTORY_VIEW_MODE_ICONS); - g_return_val_if_fail (EXPLORER_IS_DIRECTORY_VIEW (view), - EXPLORER_DIRECTORY_VIEW_MODE_ICONS); + g_return_val_if_fail (view != NULL, FM_DIRECTORY_VIEW_MODE_ICONS); + g_return_val_if_fail (FM_IS_DIRECTORY_VIEW (view), + FM_DIRECTORY_VIEW_MODE_ICONS); return view->mode; } void -explorer_directory_view_set_mode (ExplorerDirectoryView *view, - ExplorerDirectoryViewMode mode) +fm_directory_view_set_mode (FMDirectoryView *view, + FMDirectoryViewMode mode) { g_return_if_fail (view != NULL); - g_return_if_fail (EXPLORER_IS_DIRECTORY_VIEW (view)); + g_return_if_fail (FM_IS_DIRECTORY_VIEW (view)); if (view->mode == mode) return; switch (mode) { - case EXPLORER_DIRECTORY_VIEW_MODE_ICONS: - case EXPLORER_DIRECTORY_VIEW_MODE_SMALLICONS: + case FM_DIRECTORY_VIEW_MODE_ICONS: + case FM_DIRECTORY_VIEW_MODE_SMALLICONS: setup_icon_container (view, mode); break; - case EXPLORER_DIRECTORY_VIEW_MODE_DETAILED: - case EXPLORER_DIRECTORY_VIEW_MODE_CUSTOM: + case FM_DIRECTORY_VIEW_MODE_DETAILED: + case FM_DIRECTORY_VIEW_MODE_CUSTOM: setup_flist (view, mode); break; - case EXPLORER_DIRECTORY_VIEW_MODE_NONE: + case FM_DIRECTORY_VIEW_MODE_NONE: break; } @@ -950,8 +844,8 @@ explorer_directory_view_set_mode (ExplorerDirectoryView *view, void -explorer_directory_view_load_uri (ExplorerDirectoryView *view, - const GnomeVFSURI *uri) +fm_directory_view_load_uri (FMDirectoryView *view, + const char *uri) { static GnomeVFSDirectorySortRule sort_rules[] = { GNOME_VFS_DIRECTORY_SORT_DIRECTORYFIRST, @@ -961,14 +855,14 @@ explorer_directory_view_load_uri (ExplorerDirectoryView *view, GnomeVFSResult result; g_return_if_fail (view != NULL); - g_return_if_fail (EXPLORER_IS_DIRECTORY_VIEW (view)); + g_return_if_fail (FM_IS_DIRECTORY_VIEW (view)); g_return_if_fail (uri != NULL); - explorer_directory_view_stop (view); + fm_directory_view_stop (view); if (view->uri != NULL) gnome_vfs_uri_unref (view->uri); - view->uri = gnome_vfs_uri_dup (uri); + view->uri = gnome_vfs_uri_new (uri); result = gnome_vfs_async_load_directory_uri (&view->vfs_async_handle, /* handle */ @@ -993,10 +887,10 @@ explorer_directory_view_load_uri (ExplorerDirectoryView *view, } void -explorer_directory_view_stop (ExplorerDirectoryView *view) +fm_directory_view_stop (FMDirectoryView *view) { g_return_if_fail (view != NULL); - g_return_if_fail (EXPLORER_IS_DIRECTORY_VIEW (view)); + g_return_if_fail (FM_IS_DIRECTORY_VIEW (view)); if (view->vfs_async_handle == NULL) return; @@ -1015,10 +909,10 @@ explorer_directory_view_stop (ExplorerDirectoryView *view) used when adding new files to the view. */ GnomeIconContainerLayout * -explorer_directory_view_get_icon_layout (ExplorerDirectoryView *view) +fm_directory_view_get_icon_layout (FMDirectoryView *view) { g_return_val_if_fail (view != NULL, NULL); - g_return_val_if_fail (EXPLORER_IS_DIRECTORY_VIEW (view), NULL); + g_return_val_if_fail (FM_IS_DIRECTORY_VIEW (view), NULL); if (mode_uses_icon_container (view->mode)) { GnomeIconContainer *icon_container; @@ -1031,7 +925,7 @@ explorer_directory_view_get_icon_layout (ExplorerDirectoryView *view) } void -explorer_directory_view_set_icon_layout (ExplorerDirectoryView *view, +fm_directory_view_set_icon_layout (FMDirectoryView *view, const GnomeIconContainerLayout *layout) { g_return_if_fail (view != NULL); @@ -1040,7 +934,7 @@ explorer_directory_view_set_icon_layout (ExplorerDirectoryView *view, } void -explorer_directory_view_line_up_icons (ExplorerDirectoryView *view) +fm_directory_view_line_up_icons (FMDirectoryView *view) { GnomeIconContainer *container; @@ -1055,8 +949,8 @@ explorer_directory_view_line_up_icons (ExplorerDirectoryView *view) void -explorer_directory_view_sort (ExplorerDirectoryView *view, - ExplorerDirectoryViewSortType sort_type) +fm_directory_view_sort (FMDirectoryView *view, + FMDirectoryViewSortType sort_type) { GnomeVFSDirectorySortRule *rules; GnomeIconContainer *icon_container; @@ -1064,26 +958,26 @@ explorer_directory_view_sort (ExplorerDirectoryView *view, #define ALLOC_RULES(n) alloca ((n) * sizeof (GnomeVFSDirectorySortRule)) g_return_if_fail (view != NULL); - g_return_if_fail (EXPLORER_IS_DIRECTORY_VIEW (view)); + g_return_if_fail (FM_IS_DIRECTORY_VIEW (view)); if (view->directory_list == NULL) return; switch (sort_type) { - case EXPLORER_DIRECTORY_VIEW_SORT_BYNAME: + case FM_DIRECTORY_VIEW_SORT_BYNAME: rules = ALLOC_RULES (3); rules[0] = GNOME_VFS_DIRECTORY_SORT_DIRECTORYFIRST; rules[1] = GNOME_VFS_DIRECTORY_SORT_BYNAME; rules[2] = GNOME_VFS_DIRECTORY_SORT_NONE; break; - case EXPLORER_DIRECTORY_VIEW_SORT_BYSIZE: + case FM_DIRECTORY_VIEW_SORT_BYSIZE: rules = ALLOC_RULES (4); rules[0] = GNOME_VFS_DIRECTORY_SORT_DIRECTORYFIRST; rules[1] = GNOME_VFS_DIRECTORY_SORT_BYSIZE; rules[2] = GNOME_VFS_DIRECTORY_SORT_BYNAME; rules[3] = GNOME_VFS_DIRECTORY_SORT_NONE; break; - case EXPLORER_DIRECTORY_VIEW_SORT_BYTYPE: + case FM_DIRECTORY_VIEW_SORT_BYTYPE: rules = ALLOC_RULES (4); rules[0] = GNOME_VFS_DIRECTORY_SORT_DIRECTORYFIRST; rules[1] = GNOME_VFS_DIRECTORY_SORT_BYMIMETYPE; @@ -1091,12 +985,12 @@ explorer_directory_view_sort (ExplorerDirectoryView *view, rules[3] = GNOME_VFS_DIRECTORY_SORT_NONE; break; default: - g_warning ("explorer_directory_view_sort: Unknown sort mode %d\n", + g_warning ("fm_directory_view_sort: Unknown sort mode %d\n", sort_type); return; } - EXPLORER_DEBUG (("Sorting.")); + FM_DEBUG (("Sorting.")); gnome_vfs_directory_list_sort (view->directory_list, FALSE, rules); /* This will make sure icons are re-laid out according to the new diff --git a/src/file-manager/fm-directory-view.h b/src/file-manager/fm-directory-view.h index dff73428b..9b861ecdb 100644 --- a/src/file-manager/fm-directory-view.h +++ b/src/file-manager/fm-directory-view.h @@ -1,5 +1,5 @@ /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ -/* explorer-directory-view.h +/* fm-directory-view.h * * Copyright (C) 1999 Free Software Foundaton * @@ -20,51 +20,46 @@ * * Author: Ettore Perazzoli */ -#ifndef __EXPLORER_DIRECTORY_VIEW_H__ -#define __EXPLORER_DIRECTORY_VIEW_H__ +#ifndef __FM_DIRECTORY_VIEW_H__ +#define __FM_DIRECTORY_VIEW_H__ #include <libgnomevfs/gnome-vfs.h> -#include "gnome-icon-container.h" -#include "gtkscrollframe.h" +#include <libnautilus/libnautilus.h> +#include <libnautilus/gnome-icon-container.h> +#include <libnautilus/gtkscrollframe.h> -enum _ExplorerDirectoryViewMode { - EXPLORER_DIRECTORY_VIEW_MODE_NONE, /* Internal */ - EXPLORER_DIRECTORY_VIEW_MODE_ICONS, - EXPLORER_DIRECTORY_VIEW_MODE_SMALLICONS, - EXPLORER_DIRECTORY_VIEW_MODE_DETAILED, - EXPLORER_DIRECTORY_VIEW_MODE_CUSTOM +enum _FMDirectoryViewMode { + FM_DIRECTORY_VIEW_MODE_NONE, /* Internal */ + FM_DIRECTORY_VIEW_MODE_ICONS, + FM_DIRECTORY_VIEW_MODE_SMALLICONS, + FM_DIRECTORY_VIEW_MODE_DETAILED, + FM_DIRECTORY_VIEW_MODE_CUSTOM }; -typedef enum _ExplorerDirectoryViewMode ExplorerDirectoryViewMode; +typedef enum _FMDirectoryViewMode FMDirectoryViewMode; -enum _ExplorerDirectoryViewSortType { - EXPLORER_DIRECTORY_VIEW_SORT_BYNAME, - EXPLORER_DIRECTORY_VIEW_SORT_BYSIZE, - EXPLORER_DIRECTORY_VIEW_SORT_BYTYPE +enum _FMDirectoryViewSortType { + FM_DIRECTORY_VIEW_SORT_BYNAME, + FM_DIRECTORY_VIEW_SORT_BYSIZE, + FM_DIRECTORY_VIEW_SORT_BYTYPE }; -typedef enum _ExplorerDirectoryViewSortType ExplorerDirectoryViewSortType; +typedef enum _FMDirectoryViewSortType FMDirectoryViewSortType; -typedef struct _ExplorerDirectoryView ExplorerDirectoryView; -typedef struct _ExplorerDirectoryViewClass ExplorerDirectoryViewClass; +typedef struct _FMDirectoryView FMDirectoryView; +typedef struct _FMDirectoryViewClass FMDirectoryViewClass; -#include "explorer-application.h" +#define FM_TYPE_DIRECTORY_VIEW (fm_directory_view_get_type ()) +#define FM_DIRECTORY_VIEW(obj) (GTK_CHECK_CAST ((obj), FM_TYPE_DIRECTORY_VIEW, FMDirectoryView)) +#define FM_DIRECTORY_VIEW_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), FM_TYPE_DIRECTORY_VIEW, FMDirectoryViewClass)) +#define FM_IS_DIRECTORY_VIEW(obj) (GTK_CHECK_TYPE ((obj), FM_TYPE_DIRECTORY_VIEW)) +#define FM_IS_DIRECTORY_VIEW_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), FM_TYPE_DIRECTORY_VIEW)) - -#define EXPLORER_TYPE_DIRECTORY_VIEW (explorer_directory_view_get_type ()) -#define EXPLORER_DIRECTORY_VIEW(obj) (GTK_CHECK_CAST ((obj), EXPLORER_TYPE_DIRECTORY_VIEW, ExplorerDirectoryView)) -#define EXPLORER_DIRECTORY_VIEW_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), EXPLORER_TYPE_DIRECTORY_VIEW, ExplorerDirectoryViewClass)) -#define EXPLORER_IS_DIRECTORY_VIEW(obj) (GTK_CHECK_TYPE ((obj), EXPLORER_TYPE_DIRECTORY_VIEW)) -#define EXPLORER_IS_DIRECTORY_VIEW_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), EXPLORER_TYPE_DIRECTORY_VIEW)) - -struct _ExplorerDirectoryView { - GtkScrollFrame scroll_frame; - - ExplorerApplication *application; - GnomeAppBar *app_bar; +struct _FMDirectoryView { + FMDirectoryViewMode mode; - ExplorerDirectoryViewMode mode; + GtkWidget *scroll_frame; GnomeVFSDirectoryList *directory_list; GnomeVFSDirectoryListPosition current_position; @@ -83,49 +78,36 @@ struct _ExplorerDirectoryView { gint display_selection_idle_id; }; -struct _ExplorerDirectoryViewClass { - GtkScrollFrameClass parent_class; - - /* Signals go here */ - void (*open_failed) (ExplorerDirectoryView *directory_view, - GnomeVFSResult result); - void (*open_done) (ExplorerDirectoryView *directory_view); - void (*load_failed) (ExplorerDirectoryView *directory_view, - GnomeVFSResult result); - void (*load_done) (ExplorerDirectoryView *directory_view); - void (*activate_uri) (ExplorerDirectoryView *directory_view, - const GnomeVFSURI *uri, - const gchar *mime_type); +struct _FMDirectoryViewClass { + NautilusContentViewClientClass parent_class; }; -gboolean explorer_directory_view_is_valid_mode - (ExplorerDirectoryViewMode mode); - -GtkType explorer_directory_view_get_type (void); -GtkWidget *explorer_directory_view_new (ExplorerApplication *application, - GnomeAppBar *app_bar, - ExplorerDirectoryViewMode mode); -void explorer_directory_view_set_mode (ExplorerDirectoryView *view, - ExplorerDirectoryViewMode mode); -ExplorerDirectoryViewMode - explorer_directory_view_get_mode (ExplorerDirectoryView *view); -void explorer_directory_view_load_uri (ExplorerDirectoryView *view, - const GnomeVFSURI *uri); -void explorer_directory_view_stop (ExplorerDirectoryView *view); +gboolean fm_directory_view_is_valid_mode + (FMDirectoryViewMode mode); + +GtkType fm_directory_view_get_type (void); +GtkWidget *fm_directory_view_new (void); +void fm_directory_view_set_mode (FMDirectoryView *view, + FMDirectoryViewMode mode); +FMDirectoryViewMode + fm_directory_view_get_mode (FMDirectoryView *view); +void fm_directory_view_load_uri (FMDirectoryView *view, + const char *uri); +void fm_directory_view_stop (FMDirectoryView *view); GnomeIconContainerLayout * - explorer_directory_view_get_icon_layout - (ExplorerDirectoryView *view); -void explorer_directory_view_set_icon_layout - (ExplorerDirectoryView *view, + fm_directory_view_get_icon_layout + (FMDirectoryView *view); +void fm_directory_view_set_icon_layout + (FMDirectoryView *view, const GnomeIconContainerLayout - *icon_layout); + *icon_layout); -void explorer_directory_view_line_up_icons - (ExplorerDirectoryView *view); +void fm_directory_view_line_up_icons + (FMDirectoryView *view); -void explorer_directory_view_sort (ExplorerDirectoryView *view, - ExplorerDirectoryViewSortType sort_type); +void fm_directory_view_sort (FMDirectoryView *view, + FMDirectoryViewSortType sort_type); -#endif /* __EXPLORER_DIRECTORY_VIEW_H__ */ +#endif /* __FM_DIRECTORY_VIEW_H__ */ diff --git a/src/file-manager/fm-icon-cache.c b/src/file-manager/fm-icon-cache.c new file mode 100644 index 000000000..6c1b41a35 --- /dev/null +++ b/src/file-manager/fm-icon-cache.c @@ -0,0 +1,439 @@ +#include "fm-icon-cache.h" +#include <gnome.h> + +#define ICON_CACHE_MAX_ENTRIES 10 +#define ICON_CACHE_SWEEP_TIMEOUT 10 + +/* This allows us to do smarter caching */ +static guint use_counter = 0; + +typedef struct { + char *name; + GdkPixbuf *plain, *symlink; + guint last_use; +} IconSet; + +typedef enum { + ICONSET_DIRECTORY, + ICONSET_DIRCLOSED, + ICONSET_EXECUTABLE, + ICONSET_REGULAR, + ICONSET_CORE, + ICONSET_SOCKET, + ICONSET_FIFO, + ICONSET_CHARDEVICE, + ICONSET_BLOCKDEVICE, + ICONSET_BROKENSYMLINK, + ICONSET_SPECIAL_LAST +} SpecialIconSetType; + +struct _FMIconCache { + char *theme_name; + GHashTable *name_to_image; + + IconSet special_isets[ICONSET_SPECIAL_LAST]; + + GdkPixbuf *symlink_overlay; + + guint sweep_timer; +}; + +static IconSet * +icon_set_new (const gchar *name) +{ + IconSet *new; + + new = g_new (IconSet, 1); + new->name = g_strdup (name); + new->plain = NULL; + new->symlink = NULL; + + return new; +} + +static void +icon_set_destroy (IconSet *icon_set, gboolean free_name) +{ + if (icon_set != NULL) + { + if(free_name) + g_free (icon_set->name); + if(icon_set->plain) + gdk_pixbuf_unref(icon_set->plain); + if(icon_set->symlink) + gdk_pixbuf_unref(icon_set->symlink); + } +} + +FMIconCache * +fm_icon_cache_new(const char *theme_name) +{ + FMIconCache *retval; + + retval = g_new0(FMIconCache, 1); + retval->theme_name = g_strdup(theme_name); + retval->name_to_image = g_hash_table_new(g_str_hash, g_str_equal); + retval->special_isets[ICONSET_DIRECTORY].name = "i-directory.png"; + retval->special_isets[ICONSET_DIRCLOSED].name = "i-dirclosed.png"; + retval->special_isets[ICONSET_EXECUTABLE].name = "i-executable.png"; + retval->special_isets[ICONSET_REGULAR].name = "i-regular.png"; + retval->special_isets[ICONSET_CORE].name = "i-core.png"; + retval->special_isets[ICONSET_SOCKET].name = "i-sock.png"; + retval->special_isets[ICONSET_FIFO].name = "i-fifo.png"; + retval->special_isets[ICONSET_CHARDEVICE].name = "i-chardev.png"; + retval->special_isets[ICONSET_BLOCKDEVICE].name = "i-blockdev.png"; + retval->special_isets[ICONSET_BROKENSYMLINK].name = "i-brokenlink.png"; + + return retval; +} + +static gboolean +fm_icon_cache_destroy_iconsets(gpointer key, gpointer value, gpointer user_data) +{ + IconSet *is = value; + + icon_set_destroy(is, TRUE); + + return TRUE; +} + +static void +fm_icon_cache_invalidate(FMIconCache *fmic) +{ + int i; + g_hash_table_foreach_remove(fmic->name_to_image, fm_icon_cache_destroy_iconsets, fmic); + for(i = 0; i < ICONSET_SPECIAL_LAST; i++) + icon_set_destroy(&fmic->special_isets[i], FALSE); + + if(fmic->symlink_overlay) + { + gdk_pixbuf_unref(fmic->symlink_overlay); + fmic->symlink_overlay = NULL; + } +} + +void +fm_icon_cache_destroy(FMIconCache *fmic) +{ + fm_icon_cache_invalidate(fmic); + g_hash_table_destroy(fmic->name_to_image); + + g_free(fmic->theme_name); + g_free(fmic); +} + +static gboolean +icon_set_possibly_free(gpointer key, gpointer value, gpointer user_data) +{ + IconSet *is = value; + + if(is->last_use > (use_counter - ICON_CACHE_MAX_ENTRIES)) + return FALSE; + + if (is->plain && is->plain->ref_count <= 1) + { + gdk_pixbuf_unref(is->plain); + is->plain = NULL; + } + + if (is->symlink && is->symlink->ref_count <= 1) + { + gdk_pixbuf_unref(is->symlink); + is->symlink = NULL; + } + + if (!is->symlink && !is->plain) + { + g_free(is->name); + return TRUE; + } + + return FALSE; +} + +static gboolean +fm_icon_cache_sweep(gpointer data) +{ + FMIconCache *fmic = data; + + g_hash_table_foreach_remove(fmic->name_to_image, icon_set_possibly_free, NULL); + + fmic->sweep_timer = 0; + + return FALSE; +} + +static void +fm_icon_cache_setup_sweep(FMIconCache *fmic) +{ + if(fmic->sweep_timer) + return; + + if(g_hash_table_size(fmic->name_to_image) < ICON_CACHE_MAX_ENTRIES) + return; + + fmic->sweep_timer = g_timeout_add(ICON_CACHE_SWEEP_TIMEOUT * 1000, fm_icon_cache_sweep, fmic); +} + +void +fm_icon_cache_set_theme(FMIconCache *fmic, const char *theme_name) +{ + fm_icon_cache_invalidate(fmic); + g_free(fmic->theme_name); + fmic->theme_name = g_strdup(theme_name); +} + +static IconSet * +fm_icon_cache_get_icon_for_file(FMIconCache *fmic, const GnomeVFSFileInfo *info) +{ + IconSet *retval = NULL; + const char *icon_name = NULL; + + if(info->mime_type) + icon_name = gnome_mime_get_value(info->mime_type, + "icon-filename"); + if(icon_name) + { + retval = g_hash_table_lookup(fmic->name_to_image, icon_name); + if (!retval) + { + retval = icon_set_new(icon_name); + g_hash_table_insert(fmic->name_to_image, retval->name, retval); + } + } + else + { + /* We can't get a name, so we have to do some faking to figure out what set to load */ + if (info->permissions & (GNOME_VFS_PERM_USER_EXEC + | GNOME_VFS_PERM_GROUP_EXEC + | GNOME_VFS_PERM_OTHER_EXEC)) + retval = &fmic->special_isets[ICONSET_EXECUTABLE]; + else + retval = &fmic->special_isets[ICONSET_REGULAR]; + } + + return retval; +} + +static GdkPixbuf * +fm_icon_cache_load_file(FMIconCache *fmic, const char *fn) +{ + char *file_name = NULL; + char cbuf[128]; + GdkPixbuf *retval; + + if(*fn != '/') + { + if(fmic->theme_name) + { + g_snprintf(cbuf, sizeof(cbuf), "nautilus/%s/%s", fmic->theme_name, fn); + + file_name = gnome_pixmap_file(cbuf); + } + + if(!file_name) + { + g_snprintf(cbuf, sizeof(cbuf), "nautilus/%s", fn); + file_name = gnome_pixmap_file(cbuf); + } + } + + retval = gdk_pixbuf_new_from_file(file_name?file_name:fn); + g_free(file_name); + + return retval; +} + +/* Splats one on top of the other, putting the src pixbuf in the lower left corner of the dest pixbuf */ +static void +gdk_pixbuf_composite(GdkPixbuf *dest, GdkPixbuf *src) +{ + guchar *dest_data; + int dx, dy, dw, dh, drs; + guchar *rgba; + int rrs; + int da; + int r, g, b, a; + int i,j; + guchar *imgrow; + guchar *dstrow; + int dest_has_alpha, src_has_alpha; + + dw = MIN(dest->art_pixbuf->width, src->art_pixbuf->width); + dh = MIN(dest->art_pixbuf->width, src->art_pixbuf->width); + dx = dw - src->art_pixbuf->width; + dy = dh - src->art_pixbuf->height; + + dest_has_alpha = dest->art_pixbuf->has_alpha; + src_has_alpha = src->art_pixbuf->has_alpha; + + dest_data = dest->art_pixbuf->pixels; + rgba = src->art_pixbuf->pixels; + + drs = dest->art_pixbuf->rowstride; + rrs = src->art_pixbuf->rowstride; + + /* To do as few conditionals inside the loop as possible, we have four different variants of it */ + if (dest_has_alpha) + { + if(src_has_alpha) + { + for (j = 0; j < dh; j++) + { + imgrow = rgba + j * rrs; + dstrow = dest_data + (dy+j) * drs + (dx*4); + + for (i = 0; i < dw; i++) + { + r = *(imgrow++); + g = *(imgrow++); + b = *(imgrow++); + a = *(imgrow++); + + da = *(dstrow+3); + *dstrow = (r*a + *dstrow * (da-a))>>8; + dstrow++; + *dstrow = (g*a + *dstrow * (da-a))>>8; + dstrow++; + *dstrow = (b*a + *dstrow * (da-a))>>8; + dstrow++; + + *dstrow = (da * a)>>8; + dstrow++; + } + } + } + else + { + for (j = 0; j < dh; j++) + { + imgrow = rgba + j * rrs; + dstrow = dest_data + (dy+j) * drs + (dx*4); + + for (i = 0; i < dw; i++) + { + memcpy(dstrow, imgrow, 3); + imgrow += 3; + dstrow += 3; + + *dstrow = 255; + dstrow++; + } + } + } + } + else + { + if(src_has_alpha) + { + for (j = 0; j < dh; j++) + { + imgrow = rgba + j * rrs; + dstrow = dest_data + (dy+j) * drs + (dx*3); + + for (i = 0; i < dw; i++) + { + r = *(imgrow++); + g = *(imgrow++); + b = *(imgrow++); + a = *(imgrow++); + *dstrow = (r*a + *dstrow * (256-a))>>8; + dstrow++; + *dstrow = (g*a + *dstrow * (256-a))>>8; + dstrow++; + *dstrow = (b*a + *dstrow * (256-a))>>8; + dstrow++; + } + } + } + else + { + for (j = 0; j < dh; j++) + { + imgrow = rgba + j * rrs; + dstrow = dest_data + (dy+j) * drs + (dx*3); + + memcpy(dstrow, imgrow, dw); + } + } + } +} + +static GdkPixbuf * +fm_icon_cache_load_icon(FMIconCache *fmic, IconSet *is, gboolean is_symlink) +{ + GdkPixbuf *retval; + + if(is_symlink) + retval = is->symlink; + else + retval = is->plain; + + if (!retval) + { + /* need to load the file */ + retval = fm_icon_cache_load_file(fmic, is->name); + + if (is_symlink) + { + if (!fmic->symlink_overlay) + fmic->symlink_overlay = fm_icon_cache_load_file(fmic, "i-symlink.png"); + + if(fmic->symlink_overlay) + gdk_pixbuf_composite(retval, fmic->symlink_overlay); + is->symlink = retval; + } + else + is->plain = retval; + } + + gdk_pixbuf_ref(retval); /* Returned value is owned by caller */ + + return retval; +} + +GdkPixbuf * +fm_icon_cache_get_icon(FMIconCache *fmic, + const GnomeVFSFileInfo *info) +{ + IconSet *is; + GdkPixbuf *retval; + + g_return_val_if_fail(fmic, NULL); + g_return_val_if_fail(info, NULL); + + switch (info->type) + { + case GNOME_VFS_FILE_TYPE_UNKNOWN: + case GNOME_VFS_FILE_TYPE_REGULAR: + default: + is = fm_icon_cache_get_icon_for_file(fmic, info); + break; + case GNOME_VFS_FILE_TYPE_DIRECTORY: + is = &fmic->special_isets[ICONSET_DIRECTORY]; + break; + case GNOME_VFS_FILE_TYPE_FIFO: + is = &fmic->special_isets[ICONSET_FIFO]; + break; + case GNOME_VFS_FILE_TYPE_SOCKET: + is = &fmic->special_isets[ICONSET_SOCKET]; + break; + case GNOME_VFS_FILE_TYPE_CHARDEVICE: + is = &fmic->special_isets[ICONSET_CHARDEVICE]; + break; + case GNOME_VFS_FILE_TYPE_BLOCKDEVICE: + is = &fmic->special_isets[ICONSET_BLOCKDEVICE]; + break; + case GNOME_VFS_FILE_TYPE_BROKENSYMLINK: + is = &fmic->special_isets[ICONSET_BROKENSYMLINK]; + break; + } + + is->last_use = use_counter++; + retval = fm_icon_cache_load_icon(fmic, is, GNOME_VFS_FILE_INFO_SYMLINK(info)); + + if(retval) + fm_icon_cache_setup_sweep(fmic); + + return retval; +} diff --git a/src/file-manager/fm-icon-cache.h b/src/file-manager/fm-icon-cache.h new file mode 100644 index 000000000..4922585e8 --- /dev/null +++ b/src/file-manager/fm-icon-cache.h @@ -0,0 +1,16 @@ +#ifndef FM_ICON_CACHE_H +#define FM_ICON_CACHE_H 1 + +#include <gdk-pixbuf/gdk-pixbuf.h> +#include <libgnomevfs/gnome-vfs.h> +#include <glib.h> + +typedef struct _FMIconCache FMIconCache; + +FMIconCache *fm_icon_cache_new(const char *theme_name); +void fm_icon_cache_destroy(FMIconCache *fmic); + +void fm_icon_cache_set_theme(FMIconCache *fmic, const char *theme_name); +GdkPixbuf *fm_icon_cache_get_icon(FMIconCache *fmic, const GnomeVFSFileInfo *info); /* Ownership of a refcount in + this pixbuf comes with the deal */ +#endif diff --git a/src/file-manager/fm-public-api.h b/src/file-manager/fm-public-api.h new file mode 100644 index 000000000..793df9fee --- /dev/null +++ b/src/file-manager/fm-public-api.h @@ -0,0 +1,6 @@ +#ifndef FM_PUBLIC_API_H +#define FM_PUBLIC_API_H 1 + +GtkType fm_directory_view_get_type(void); + +#endif diff --git a/src/file-manager/ntl-file-manager.goad b/src/file-manager/ntl-file-manager.goad new file mode 100644 index 000000000..30ddeba11 --- /dev/null +++ b/src/file-manager/ntl-file-manager.goad @@ -0,0 +1,11 @@ +[nautilus_factory] +type=exe +repo_id=IDL:GNOME/GenericFactory:1.0 +description=Factory for history views +location_info=nautilus + +[ntl_file_manager] +type=factory +repo_id=IDL:GNOME/Control:1.0 IDL:Nautilus/ContentView:1.0 IDL:Nautilus/View:1.0 +description=File management view +location_info=nautilus_factory diff --git a/src/nautilus-applicable-views.c b/src/nautilus-applicable-views.c index 0239e8065..137c8e203 100644 --- a/src/nautilus-applicable-views.c +++ b/src/nautilus-applicable-views.c @@ -22,7 +22,8 @@ * Author: Elliot Lee <sopwith@redhat.com> * */ -/* ntl-uri-map.c: Implementation of routines for mapping a location change request to a set of views and actual URL to be loaded. */ +/* ntl-uri-map.c: Implementation of routines for mapping a location + change request to a set of views and actual URL to be loaded. */ #include "ntl-uri-map.h" #include <libgnorba/gnorba.h> @@ -66,6 +67,19 @@ nautilus_navinfo_new(NautilusNavigationInfo *navinfo, Find if the user has specified any default(s) globally, modify selection. Find if the user has specified any default(s) per-page, modify selection. */ + if(!strcmp(navinfo->navinfo.content_type, "text/html")) + { + navinfo->content_iid = "embeddable:explorer-html-component"; + } + else if(!strcmp(navinfo->navinfo.content_type, "text/plain")) + { + navinfo->content_iid = "embeddable:text-plain"; + } + else if(!strcmp(navinfo->navinfo.content_type, "special/directory")) + { + navinfo->content_iid = "ntl_file_manager"; + } + return NULL; } @@ -74,4 +88,5 @@ void nautilus_navinfo_free(NautilusNavigationInfo *navinfo) { g_free(navinfo->navinfo.content_type); + g_free(navinfo->content_iid); } diff --git a/src/nautilus-main.c b/src/nautilus-main.c index b47dd4d11..bebaa1e80 100644 --- a/src/nautilus-main.c +++ b/src/nautilus-main.c @@ -29,6 +29,7 @@ #include <gnome.h> #include <libgnorba/gnorba.h> #include <bonobo/gnome-bonobo.h> +#include <file-manager/fm-public-api.h> static int window_count = 0; static void @@ -39,9 +40,24 @@ check_for_quit(void) } static GnomeObject * -nautilus_make_object(GnomeGenericFactory *gfact, const char *goad_id, void *closure) +nautilus_make_object(GnomeGenericFactory *gfact, const char *goad_id, gpointer closure) { - /* New internally implemented objects should be activated here */ + GtkObject *theobj = NULL; + + if(!strcmp(goad_id, "ntl_file_manager")) + theobj = gtk_object_new(fm_directory_view_get_type(), NULL); + + if(!theobj) + return NULL; + + if(GNOME_IS_OBJECT(theobj)) + return GNOME_OBJECT(theobj); + + if(NAUTILUS_IS_VIEW_CLIENT(theobj)) + return nautilus_view_client_get_gnome_object(NAUTILUS_VIEW_CLIENT(theobj)); + + gtk_object_destroy(theobj); + return NULL; } @@ -59,7 +75,7 @@ int main(int argc, char *argv[]) orb = gnome_CORBA_init_with_popt_table("nautilus", VERSION, &argc, argv, options, 0, &ctx, GNORBA_INIT_SERVER_FUNC, &ev); bonobo_init(orb, CORBA_OBJECT_NIL, CORBA_OBJECT_NIL); - gfact = gnome_generic_factory_new("nautilus_factory", nautilus_make_object, NULL); + gfact = gnome_generic_factory_new_multi("nautilus_factory", nautilus_make_object, NULL); mainwin = gtk_widget_new(nautilus_window_get_type(), "app_id", "nautilus", NULL); bonobo_activate(); diff --git a/src/nautilus-navigation-window.c b/src/nautilus-navigation-window.c index 006c1cb4c..c63b2fb29 100644 --- a/src/nautilus-navigation-window.c +++ b/src/nautilus-navigation-window.c @@ -29,6 +29,67 @@ #include "nautilus.h" #include "explorer-location-bar.h" +typedef struct { + POA_Nautilus_ViewWindow servant; + gpointer gnome_object; + + NautilusWindow *window; +} impl_POA_Nautilus_ViewWindow; + +static POA_Nautilus_ViewWindow__epv impl_Nautilus_ViewWindow_epv = +{ + NULL +}; + +static PortableServer_ServantBase__epv base_epv = { NULL}; + +static POA_Nautilus_ViewWindow__vepv impl_Nautilus_ViewWindow_vepv = +{ + &base_epv, + NULL, + &impl_Nautilus_ViewWindow_epv +}; + +static void +impl_Nautilus_ViewWindow__destroy(GnomeObject *obj, impl_POA_Nautilus_ViewWindow *servant) +{ + PortableServer_ObjectId *objid; + CORBA_Environment ev; + + CORBA_exception_init(&ev); + + objid = PortableServer_POA_servant_to_id(bonobo_poa(), servant, &ev); + PortableServer_POA_deactivate_object(bonobo_poa(), objid, &ev); + CORBA_free(objid); + obj->servant = NULL; + + POA_Nautilus_ViewWindow__fini((PortableServer_Servant) servant, &ev); + g_free(servant); + CORBA_exception_free(&ev); +} + +static GnomeObject * +impl_Nautilus_ViewWindow__create(NautilusWindow *window) +{ + GnomeObject *retval; + impl_POA_Nautilus_ViewWindow *newservant; + CORBA_Environment ev; + + CORBA_exception_init(&ev); + + newservant = g_new0(impl_POA_Nautilus_ViewWindow, 1); + newservant->servant.vepv = &impl_Nautilus_ViewWindow_vepv; + newservant->window = window; + POA_Nautilus_ViewWindow__init((PortableServer_Servant) newservant, &ev); + + retval = gnome_object_new_from_servant(newservant); + + gtk_signal_connect(GTK_OBJECT(retval), "destroy", GTK_SIGNAL_FUNC(impl_Nautilus_ViewWindow__destroy), newservant); + CORBA_exception_free(&ev); + + return retval; +} + static void nautilus_window_class_init (NautilusWindowClass *klass); static void nautilus_window_init (NautilusWindow *window); static void nautilus_window_destroy (NautilusWindow *window); @@ -40,8 +101,6 @@ static void nautilus_window_set_arg (GtkObject *object, static void nautilus_window_get_arg (GtkObject *object, GtkArg *arg, guint arg_id); -static void nautilus_window_close (GtkWidget *widget, - GtkWidget *window); static void nautilus_window_goto_url (GtkWidget *widget, const char *url, GtkWidget *window); @@ -66,7 +125,8 @@ nautilus_window_get_type(void) if (!window_type) { - GtkTypeInfo window_info = { + GtkTypeInfo window_info = + { "NautilusWindow", sizeof(NautilusWindow), sizeof(NautilusWindowClass), @@ -152,6 +212,7 @@ nautilus_window_class_init (NautilusWindowClass *klass) GTK_TYPE_OBJECT, GTK_ARG_READWRITE, ARG_CONTENT_VIEW); + impl_Nautilus_ViewWindow_vepv.GNOME_Unknown_epv = gnome_object_get_epv(); } static gboolean @@ -207,11 +268,7 @@ static void nautilus_window_constructed(NautilusWindow *window) { GnomeApp *app; - GnomeUIInfo dummy_menu[] = { - GNOMEUIINFO_END - }; GnomeUIInfo main_menu[] = { - GNOMEUIINFO_SUBTREE_STOCK(N_("_Actions"), dummy_menu, GNOME_STOCK_MENU_JUMP_TO), GNOMEUIINFO_END }; GtkWidget *menu_hbox, *menubar, *wtmp, *statusbar; @@ -246,7 +303,8 @@ nautilus_window_constructed(NautilusWindow *window) gtk_option_menu_set_history(GTK_OPTION_MENU(window->option_cvtype), 0); gtk_widget_queue_resize(window->menu_cvtype); - /* A hacked-up version of gnome_app_set_menu() */ + /* A hacked-up version of gnome_app_set_menu(). We need this to use our 'menubar' for the actual menubar stuff, + but our menu_hbox for the widget being docked. */ { GtkWidget *dock_item; GnomeDockItemBehavior behavior; @@ -345,6 +403,12 @@ nautilus_window_constructed(NautilusWindow *window) GNOME_DOCK_ITEM_BEH_LOCKED|GNOME_DOCK_ITEM_BEH_EXCLUSIVE|GNOME_DOCK_ITEM_BEH_NEVER_VERTICAL, GNOME_DOCK_TOP, 1, 0, 0); gtk_widget_show(window->ent_url); + + /* CORBA stuff */ + window->ntl_viewwindow = impl_Nautilus_ViewWindow__create(window); + window->uih = gnome_ui_handler_new(); + gnome_ui_handler_set_app(window->uih, app); + gnome_object_add_interface(GNOME_OBJECT(window->uih), window->ntl_viewwindow); } static void diff --git a/src/nautilus-navigation-window.h b/src/nautilus-navigation-window.h index e07c12d7e..73ad91dfc 100644 --- a/src/nautilus-navigation-window.h +++ b/src/nautilus-navigation-window.h @@ -72,6 +72,9 @@ struct _NautilusWindow { GSList *uris_prev, *uris_next; guint statusbar_ctx, statusbar_clear_id; + + GnomeObject *ntl_viewwindow; + GnomeUIHandler *uih; }; GtkType nautilus_window_get_type(void); diff --git a/src/nautilus-object-window.c b/src/nautilus-object-window.c index 006c1cb4c..c63b2fb29 100644 --- a/src/nautilus-object-window.c +++ b/src/nautilus-object-window.c @@ -29,6 +29,67 @@ #include "nautilus.h" #include "explorer-location-bar.h" +typedef struct { + POA_Nautilus_ViewWindow servant; + gpointer gnome_object; + + NautilusWindow *window; +} impl_POA_Nautilus_ViewWindow; + +static POA_Nautilus_ViewWindow__epv impl_Nautilus_ViewWindow_epv = +{ + NULL +}; + +static PortableServer_ServantBase__epv base_epv = { NULL}; + +static POA_Nautilus_ViewWindow__vepv impl_Nautilus_ViewWindow_vepv = +{ + &base_epv, + NULL, + &impl_Nautilus_ViewWindow_epv +}; + +static void +impl_Nautilus_ViewWindow__destroy(GnomeObject *obj, impl_POA_Nautilus_ViewWindow *servant) +{ + PortableServer_ObjectId *objid; + CORBA_Environment ev; + + CORBA_exception_init(&ev); + + objid = PortableServer_POA_servant_to_id(bonobo_poa(), servant, &ev); + PortableServer_POA_deactivate_object(bonobo_poa(), objid, &ev); + CORBA_free(objid); + obj->servant = NULL; + + POA_Nautilus_ViewWindow__fini((PortableServer_Servant) servant, &ev); + g_free(servant); + CORBA_exception_free(&ev); +} + +static GnomeObject * +impl_Nautilus_ViewWindow__create(NautilusWindow *window) +{ + GnomeObject *retval; + impl_POA_Nautilus_ViewWindow *newservant; + CORBA_Environment ev; + + CORBA_exception_init(&ev); + + newservant = g_new0(impl_POA_Nautilus_ViewWindow, 1); + newservant->servant.vepv = &impl_Nautilus_ViewWindow_vepv; + newservant->window = window; + POA_Nautilus_ViewWindow__init((PortableServer_Servant) newservant, &ev); + + retval = gnome_object_new_from_servant(newservant); + + gtk_signal_connect(GTK_OBJECT(retval), "destroy", GTK_SIGNAL_FUNC(impl_Nautilus_ViewWindow__destroy), newservant); + CORBA_exception_free(&ev); + + return retval; +} + static void nautilus_window_class_init (NautilusWindowClass *klass); static void nautilus_window_init (NautilusWindow *window); static void nautilus_window_destroy (NautilusWindow *window); @@ -40,8 +101,6 @@ static void nautilus_window_set_arg (GtkObject *object, static void nautilus_window_get_arg (GtkObject *object, GtkArg *arg, guint arg_id); -static void nautilus_window_close (GtkWidget *widget, - GtkWidget *window); static void nautilus_window_goto_url (GtkWidget *widget, const char *url, GtkWidget *window); @@ -66,7 +125,8 @@ nautilus_window_get_type(void) if (!window_type) { - GtkTypeInfo window_info = { + GtkTypeInfo window_info = + { "NautilusWindow", sizeof(NautilusWindow), sizeof(NautilusWindowClass), @@ -152,6 +212,7 @@ nautilus_window_class_init (NautilusWindowClass *klass) GTK_TYPE_OBJECT, GTK_ARG_READWRITE, ARG_CONTENT_VIEW); + impl_Nautilus_ViewWindow_vepv.GNOME_Unknown_epv = gnome_object_get_epv(); } static gboolean @@ -207,11 +268,7 @@ static void nautilus_window_constructed(NautilusWindow *window) { GnomeApp *app; - GnomeUIInfo dummy_menu[] = { - GNOMEUIINFO_END - }; GnomeUIInfo main_menu[] = { - GNOMEUIINFO_SUBTREE_STOCK(N_("_Actions"), dummy_menu, GNOME_STOCK_MENU_JUMP_TO), GNOMEUIINFO_END }; GtkWidget *menu_hbox, *menubar, *wtmp, *statusbar; @@ -246,7 +303,8 @@ nautilus_window_constructed(NautilusWindow *window) gtk_option_menu_set_history(GTK_OPTION_MENU(window->option_cvtype), 0); gtk_widget_queue_resize(window->menu_cvtype); - /* A hacked-up version of gnome_app_set_menu() */ + /* A hacked-up version of gnome_app_set_menu(). We need this to use our 'menubar' for the actual menubar stuff, + but our menu_hbox for the widget being docked. */ { GtkWidget *dock_item; GnomeDockItemBehavior behavior; @@ -345,6 +403,12 @@ nautilus_window_constructed(NautilusWindow *window) GNOME_DOCK_ITEM_BEH_LOCKED|GNOME_DOCK_ITEM_BEH_EXCLUSIVE|GNOME_DOCK_ITEM_BEH_NEVER_VERTICAL, GNOME_DOCK_TOP, 1, 0, 0); gtk_widget_show(window->ent_url); + + /* CORBA stuff */ + window->ntl_viewwindow = impl_Nautilus_ViewWindow__create(window); + window->uih = gnome_ui_handler_new(); + gnome_ui_handler_set_app(window->uih, app); + gnome_object_add_interface(GNOME_OBJECT(window->uih), window->ntl_viewwindow); } static void diff --git a/src/nautilus-object-window.h b/src/nautilus-object-window.h index e07c12d7e..73ad91dfc 100644 --- a/src/nautilus-object-window.h +++ b/src/nautilus-object-window.h @@ -72,6 +72,9 @@ struct _NautilusWindow { GSList *uris_prev, *uris_next; guint statusbar_ctx, statusbar_clear_id; + + GnomeObject *ntl_viewwindow; + GnomeUIHandler *uih; }; GtkType nautilus_window_get_type(void); diff --git a/src/nautilus-spatial-window.c b/src/nautilus-spatial-window.c index 006c1cb4c..c63b2fb29 100644 --- a/src/nautilus-spatial-window.c +++ b/src/nautilus-spatial-window.c @@ -29,6 +29,67 @@ #include "nautilus.h" #include "explorer-location-bar.h" +typedef struct { + POA_Nautilus_ViewWindow servant; + gpointer gnome_object; + + NautilusWindow *window; +} impl_POA_Nautilus_ViewWindow; + +static POA_Nautilus_ViewWindow__epv impl_Nautilus_ViewWindow_epv = +{ + NULL +}; + +static PortableServer_ServantBase__epv base_epv = { NULL}; + +static POA_Nautilus_ViewWindow__vepv impl_Nautilus_ViewWindow_vepv = +{ + &base_epv, + NULL, + &impl_Nautilus_ViewWindow_epv +}; + +static void +impl_Nautilus_ViewWindow__destroy(GnomeObject *obj, impl_POA_Nautilus_ViewWindow *servant) +{ + PortableServer_ObjectId *objid; + CORBA_Environment ev; + + CORBA_exception_init(&ev); + + objid = PortableServer_POA_servant_to_id(bonobo_poa(), servant, &ev); + PortableServer_POA_deactivate_object(bonobo_poa(), objid, &ev); + CORBA_free(objid); + obj->servant = NULL; + + POA_Nautilus_ViewWindow__fini((PortableServer_Servant) servant, &ev); + g_free(servant); + CORBA_exception_free(&ev); +} + +static GnomeObject * +impl_Nautilus_ViewWindow__create(NautilusWindow *window) +{ + GnomeObject *retval; + impl_POA_Nautilus_ViewWindow *newservant; + CORBA_Environment ev; + + CORBA_exception_init(&ev); + + newservant = g_new0(impl_POA_Nautilus_ViewWindow, 1); + newservant->servant.vepv = &impl_Nautilus_ViewWindow_vepv; + newservant->window = window; + POA_Nautilus_ViewWindow__init((PortableServer_Servant) newservant, &ev); + + retval = gnome_object_new_from_servant(newservant); + + gtk_signal_connect(GTK_OBJECT(retval), "destroy", GTK_SIGNAL_FUNC(impl_Nautilus_ViewWindow__destroy), newservant); + CORBA_exception_free(&ev); + + return retval; +} + static void nautilus_window_class_init (NautilusWindowClass *klass); static void nautilus_window_init (NautilusWindow *window); static void nautilus_window_destroy (NautilusWindow *window); @@ -40,8 +101,6 @@ static void nautilus_window_set_arg (GtkObject *object, static void nautilus_window_get_arg (GtkObject *object, GtkArg *arg, guint arg_id); -static void nautilus_window_close (GtkWidget *widget, - GtkWidget *window); static void nautilus_window_goto_url (GtkWidget *widget, const char *url, GtkWidget *window); @@ -66,7 +125,8 @@ nautilus_window_get_type(void) if (!window_type) { - GtkTypeInfo window_info = { + GtkTypeInfo window_info = + { "NautilusWindow", sizeof(NautilusWindow), sizeof(NautilusWindowClass), @@ -152,6 +212,7 @@ nautilus_window_class_init (NautilusWindowClass *klass) GTK_TYPE_OBJECT, GTK_ARG_READWRITE, ARG_CONTENT_VIEW); + impl_Nautilus_ViewWindow_vepv.GNOME_Unknown_epv = gnome_object_get_epv(); } static gboolean @@ -207,11 +268,7 @@ static void nautilus_window_constructed(NautilusWindow *window) { GnomeApp *app; - GnomeUIInfo dummy_menu[] = { - GNOMEUIINFO_END - }; GnomeUIInfo main_menu[] = { - GNOMEUIINFO_SUBTREE_STOCK(N_("_Actions"), dummy_menu, GNOME_STOCK_MENU_JUMP_TO), GNOMEUIINFO_END }; GtkWidget *menu_hbox, *menubar, *wtmp, *statusbar; @@ -246,7 +303,8 @@ nautilus_window_constructed(NautilusWindow *window) gtk_option_menu_set_history(GTK_OPTION_MENU(window->option_cvtype), 0); gtk_widget_queue_resize(window->menu_cvtype); - /* A hacked-up version of gnome_app_set_menu() */ + /* A hacked-up version of gnome_app_set_menu(). We need this to use our 'menubar' for the actual menubar stuff, + but our menu_hbox for the widget being docked. */ { GtkWidget *dock_item; GnomeDockItemBehavior behavior; @@ -345,6 +403,12 @@ nautilus_window_constructed(NautilusWindow *window) GNOME_DOCK_ITEM_BEH_LOCKED|GNOME_DOCK_ITEM_BEH_EXCLUSIVE|GNOME_DOCK_ITEM_BEH_NEVER_VERTICAL, GNOME_DOCK_TOP, 1, 0, 0); gtk_widget_show(window->ent_url); + + /* CORBA stuff */ + window->ntl_viewwindow = impl_Nautilus_ViewWindow__create(window); + window->uih = gnome_ui_handler_new(); + gnome_ui_handler_set_app(window->uih, app); + gnome_object_add_interface(GNOME_OBJECT(window->uih), window->ntl_viewwindow); } static void diff --git a/src/nautilus-spatial-window.h b/src/nautilus-spatial-window.h index e07c12d7e..73ad91dfc 100644 --- a/src/nautilus-spatial-window.h +++ b/src/nautilus-spatial-window.h @@ -72,6 +72,9 @@ struct _NautilusWindow { GSList *uris_prev, *uris_next; guint statusbar_ctx, statusbar_clear_id; + + GnomeObject *ntl_viewwindow; + GnomeUIHandler *uih; }; GtkType nautilus_window_get_type(void); diff --git a/src/nautilus-view-frame.c b/src/nautilus-view-frame.c index f07e0bf5f..fd498bfe7 100644 --- a/src/nautilus-view-frame.c +++ b/src/nautilus-view-frame.c @@ -48,6 +48,9 @@ typedef struct { NautilusView *view; } impl_POA_Nautilus_ViewFrame; +static Nautilus_ViewWindow +impl_Nautilus_ViewFrame__get_main_window(impl_POA_Nautilus_ViewFrame *servant, + CORBA_Environment *ev); static void impl_Nautilus_ViewFrame_request_location_change(impl_POA_Nautilus_ViewFrame * servant, Nautilus_NavigationRequestInfo * navinfo, @@ -65,6 +68,7 @@ impl_Nautilus_ViewFrame_request_status_change(impl_POA_Nautilus_ViewFrame * serv POA_Nautilus_ViewFrame__epv impl_Nautilus_ViewFrame_epv = { NULL, /* _private */ + (void(*))&impl_Nautilus_ViewFrame__get_main_window, (void(*))&impl_Nautilus_ViewFrame_request_location_change, (void(*))&impl_Nautilus_ViewFrame_request_selection_change, (void(*))&impl_Nautilus_ViewFrame_request_status_change @@ -113,7 +117,8 @@ impl_Nautilus_ViewFrame__create(NautilusView *view, CORBA_Environment * ev) klass = NAUTILUS_VIEW_CLASS(GTK_OBJECT(view)->klass); newservant = g_new0(impl_POA_Nautilus_ViewFrame, 1); newservant->servant.vepv = klass->vepv; - newservant->servant.vepv->GNOME_Unknown_epv = gnome_object_get_epv(FALSE); + if(!newservant->servant.vepv->GNOME_Unknown_epv) + newservant->servant.vepv->GNOME_Unknown_epv = gnome_object_get_epv(); newservant->view = view; servant_init_func = klass->servant_init_func; servant_init_func((PortableServer_Servant) newservant, ev); @@ -125,6 +130,13 @@ impl_Nautilus_ViewFrame__create(NautilusView *view, CORBA_Environment * ev) return retval; } +static Nautilus_ViewWindow +impl_Nautilus_ViewFrame__get_main_window(impl_POA_Nautilus_ViewFrame *servant, + CORBA_Environment *ev) +{ + return CORBA_Object_duplicate(gnome_object_corba_objref(NAUTILUS_WINDOW(servant->view->main_window)->ntl_viewwindow), ev); +} + static void impl_Nautilus_ViewFrame_request_location_change(impl_POA_Nautilus_ViewFrame * servant, Nautilus_NavigationRequestInfo * navinfo, @@ -429,7 +441,7 @@ nautilus_view_load_client(NautilusView *view, const char *iid) gtk_container_remove(GTK_CONTAINER(view), view->client); view->client = NULL; } - view->client = gnome_bonobo_widget_new_control((char *)iid); + view->client = gnome_bonobo_widget_new_subdoc((char *)iid, NAUTILUS_WINDOW(view->main_window)->uih); g_return_if_fail(view->client); CORBA_exception_init(&ev); CORBA_Object_release(view->view_client, &ev); diff --git a/src/nautilus-window.c b/src/nautilus-window.c index 006c1cb4c..c63b2fb29 100644 --- a/src/nautilus-window.c +++ b/src/nautilus-window.c @@ -29,6 +29,67 @@ #include "nautilus.h" #include "explorer-location-bar.h" +typedef struct { + POA_Nautilus_ViewWindow servant; + gpointer gnome_object; + + NautilusWindow *window; +} impl_POA_Nautilus_ViewWindow; + +static POA_Nautilus_ViewWindow__epv impl_Nautilus_ViewWindow_epv = +{ + NULL +}; + +static PortableServer_ServantBase__epv base_epv = { NULL}; + +static POA_Nautilus_ViewWindow__vepv impl_Nautilus_ViewWindow_vepv = +{ + &base_epv, + NULL, + &impl_Nautilus_ViewWindow_epv +}; + +static void +impl_Nautilus_ViewWindow__destroy(GnomeObject *obj, impl_POA_Nautilus_ViewWindow *servant) +{ + PortableServer_ObjectId *objid; + CORBA_Environment ev; + + CORBA_exception_init(&ev); + + objid = PortableServer_POA_servant_to_id(bonobo_poa(), servant, &ev); + PortableServer_POA_deactivate_object(bonobo_poa(), objid, &ev); + CORBA_free(objid); + obj->servant = NULL; + + POA_Nautilus_ViewWindow__fini((PortableServer_Servant) servant, &ev); + g_free(servant); + CORBA_exception_free(&ev); +} + +static GnomeObject * +impl_Nautilus_ViewWindow__create(NautilusWindow *window) +{ + GnomeObject *retval; + impl_POA_Nautilus_ViewWindow *newservant; + CORBA_Environment ev; + + CORBA_exception_init(&ev); + + newservant = g_new0(impl_POA_Nautilus_ViewWindow, 1); + newservant->servant.vepv = &impl_Nautilus_ViewWindow_vepv; + newservant->window = window; + POA_Nautilus_ViewWindow__init((PortableServer_Servant) newservant, &ev); + + retval = gnome_object_new_from_servant(newservant); + + gtk_signal_connect(GTK_OBJECT(retval), "destroy", GTK_SIGNAL_FUNC(impl_Nautilus_ViewWindow__destroy), newservant); + CORBA_exception_free(&ev); + + return retval; +} + static void nautilus_window_class_init (NautilusWindowClass *klass); static void nautilus_window_init (NautilusWindow *window); static void nautilus_window_destroy (NautilusWindow *window); @@ -40,8 +101,6 @@ static void nautilus_window_set_arg (GtkObject *object, static void nautilus_window_get_arg (GtkObject *object, GtkArg *arg, guint arg_id); -static void nautilus_window_close (GtkWidget *widget, - GtkWidget *window); static void nautilus_window_goto_url (GtkWidget *widget, const char *url, GtkWidget *window); @@ -66,7 +125,8 @@ nautilus_window_get_type(void) if (!window_type) { - GtkTypeInfo window_info = { + GtkTypeInfo window_info = + { "NautilusWindow", sizeof(NautilusWindow), sizeof(NautilusWindowClass), @@ -152,6 +212,7 @@ nautilus_window_class_init (NautilusWindowClass *klass) GTK_TYPE_OBJECT, GTK_ARG_READWRITE, ARG_CONTENT_VIEW); + impl_Nautilus_ViewWindow_vepv.GNOME_Unknown_epv = gnome_object_get_epv(); } static gboolean @@ -207,11 +268,7 @@ static void nautilus_window_constructed(NautilusWindow *window) { GnomeApp *app; - GnomeUIInfo dummy_menu[] = { - GNOMEUIINFO_END - }; GnomeUIInfo main_menu[] = { - GNOMEUIINFO_SUBTREE_STOCK(N_("_Actions"), dummy_menu, GNOME_STOCK_MENU_JUMP_TO), GNOMEUIINFO_END }; GtkWidget *menu_hbox, *menubar, *wtmp, *statusbar; @@ -246,7 +303,8 @@ nautilus_window_constructed(NautilusWindow *window) gtk_option_menu_set_history(GTK_OPTION_MENU(window->option_cvtype), 0); gtk_widget_queue_resize(window->menu_cvtype); - /* A hacked-up version of gnome_app_set_menu() */ + /* A hacked-up version of gnome_app_set_menu(). We need this to use our 'menubar' for the actual menubar stuff, + but our menu_hbox for the widget being docked. */ { GtkWidget *dock_item; GnomeDockItemBehavior behavior; @@ -345,6 +403,12 @@ nautilus_window_constructed(NautilusWindow *window) GNOME_DOCK_ITEM_BEH_LOCKED|GNOME_DOCK_ITEM_BEH_EXCLUSIVE|GNOME_DOCK_ITEM_BEH_NEVER_VERTICAL, GNOME_DOCK_TOP, 1, 0, 0); gtk_widget_show(window->ent_url); + + /* CORBA stuff */ + window->ntl_viewwindow = impl_Nautilus_ViewWindow__create(window); + window->uih = gnome_ui_handler_new(); + gnome_ui_handler_set_app(window->uih, app); + gnome_object_add_interface(GNOME_OBJECT(window->uih), window->ntl_viewwindow); } static void diff --git a/src/nautilus-window.h b/src/nautilus-window.h index e07c12d7e..73ad91dfc 100644 --- a/src/nautilus-window.h +++ b/src/nautilus-window.h @@ -72,6 +72,9 @@ struct _NautilusWindow { GSList *uris_prev, *uris_next; guint statusbar_ctx, statusbar_clear_id; + + GnomeObject *ntl_viewwindow; + GnomeUIHandler *uih; }; GtkType nautilus_window_get_type(void); diff --git a/src/nautilus.h b/src/nautilus.h index 608229748..5bdc41bb7 100644 --- a/src/nautilus.h +++ b/src/nautilus.h @@ -1,3 +1,5 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ + #ifndef NAUTILUS_H #define NAUTILUS_H 1 diff --git a/src/ntl-main.c b/src/ntl-main.c index b47dd4d11..bebaa1e80 100644 --- a/src/ntl-main.c +++ b/src/ntl-main.c @@ -29,6 +29,7 @@ #include <gnome.h> #include <libgnorba/gnorba.h> #include <bonobo/gnome-bonobo.h> +#include <file-manager/fm-public-api.h> static int window_count = 0; static void @@ -39,9 +40,24 @@ check_for_quit(void) } static GnomeObject * -nautilus_make_object(GnomeGenericFactory *gfact, const char *goad_id, void *closure) +nautilus_make_object(GnomeGenericFactory *gfact, const char *goad_id, gpointer closure) { - /* New internally implemented objects should be activated here */ + GtkObject *theobj = NULL; + + if(!strcmp(goad_id, "ntl_file_manager")) + theobj = gtk_object_new(fm_directory_view_get_type(), NULL); + + if(!theobj) + return NULL; + + if(GNOME_IS_OBJECT(theobj)) + return GNOME_OBJECT(theobj); + + if(NAUTILUS_IS_VIEW_CLIENT(theobj)) + return nautilus_view_client_get_gnome_object(NAUTILUS_VIEW_CLIENT(theobj)); + + gtk_object_destroy(theobj); + return NULL; } @@ -59,7 +75,7 @@ int main(int argc, char *argv[]) orb = gnome_CORBA_init_with_popt_table("nautilus", VERSION, &argc, argv, options, 0, &ctx, GNORBA_INIT_SERVER_FUNC, &ev); bonobo_init(orb, CORBA_OBJECT_NIL, CORBA_OBJECT_NIL); - gfact = gnome_generic_factory_new("nautilus_factory", nautilus_make_object, NULL); + gfact = gnome_generic_factory_new_multi("nautilus_factory", nautilus_make_object, NULL); mainwin = gtk_widget_new(nautilus_window_get_type(), "app_id", "nautilus", NULL); bonobo_activate(); diff --git a/src/ntl-uri-map.c b/src/ntl-uri-map.c index 0239e8065..137c8e203 100644 --- a/src/ntl-uri-map.c +++ b/src/ntl-uri-map.c @@ -22,7 +22,8 @@ * Author: Elliot Lee <sopwith@redhat.com> * */ -/* ntl-uri-map.c: Implementation of routines for mapping a location change request to a set of views and actual URL to be loaded. */ +/* ntl-uri-map.c: Implementation of routines for mapping a location + change request to a set of views and actual URL to be loaded. */ #include "ntl-uri-map.h" #include <libgnorba/gnorba.h> @@ -66,6 +67,19 @@ nautilus_navinfo_new(NautilusNavigationInfo *navinfo, Find if the user has specified any default(s) globally, modify selection. Find if the user has specified any default(s) per-page, modify selection. */ + if(!strcmp(navinfo->navinfo.content_type, "text/html")) + { + navinfo->content_iid = "embeddable:explorer-html-component"; + } + else if(!strcmp(navinfo->navinfo.content_type, "text/plain")) + { + navinfo->content_iid = "embeddable:text-plain"; + } + else if(!strcmp(navinfo->navinfo.content_type, "special/directory")) + { + navinfo->content_iid = "ntl_file_manager"; + } + return NULL; } @@ -74,4 +88,5 @@ void nautilus_navinfo_free(NautilusNavigationInfo *navinfo) { g_free(navinfo->navinfo.content_type); + g_free(navinfo->content_iid); } diff --git a/src/ntl-view.c b/src/ntl-view.c index f07e0bf5f..fd498bfe7 100644 --- a/src/ntl-view.c +++ b/src/ntl-view.c @@ -48,6 +48,9 @@ typedef struct { NautilusView *view; } impl_POA_Nautilus_ViewFrame; +static Nautilus_ViewWindow +impl_Nautilus_ViewFrame__get_main_window(impl_POA_Nautilus_ViewFrame *servant, + CORBA_Environment *ev); static void impl_Nautilus_ViewFrame_request_location_change(impl_POA_Nautilus_ViewFrame * servant, Nautilus_NavigationRequestInfo * navinfo, @@ -65,6 +68,7 @@ impl_Nautilus_ViewFrame_request_status_change(impl_POA_Nautilus_ViewFrame * serv POA_Nautilus_ViewFrame__epv impl_Nautilus_ViewFrame_epv = { NULL, /* _private */ + (void(*))&impl_Nautilus_ViewFrame__get_main_window, (void(*))&impl_Nautilus_ViewFrame_request_location_change, (void(*))&impl_Nautilus_ViewFrame_request_selection_change, (void(*))&impl_Nautilus_ViewFrame_request_status_change @@ -113,7 +117,8 @@ impl_Nautilus_ViewFrame__create(NautilusView *view, CORBA_Environment * ev) klass = NAUTILUS_VIEW_CLASS(GTK_OBJECT(view)->klass); newservant = g_new0(impl_POA_Nautilus_ViewFrame, 1); newservant->servant.vepv = klass->vepv; - newservant->servant.vepv->GNOME_Unknown_epv = gnome_object_get_epv(FALSE); + if(!newservant->servant.vepv->GNOME_Unknown_epv) + newservant->servant.vepv->GNOME_Unknown_epv = gnome_object_get_epv(); newservant->view = view; servant_init_func = klass->servant_init_func; servant_init_func((PortableServer_Servant) newservant, ev); @@ -125,6 +130,13 @@ impl_Nautilus_ViewFrame__create(NautilusView *view, CORBA_Environment * ev) return retval; } +static Nautilus_ViewWindow +impl_Nautilus_ViewFrame__get_main_window(impl_POA_Nautilus_ViewFrame *servant, + CORBA_Environment *ev) +{ + return CORBA_Object_duplicate(gnome_object_corba_objref(NAUTILUS_WINDOW(servant->view->main_window)->ntl_viewwindow), ev); +} + static void impl_Nautilus_ViewFrame_request_location_change(impl_POA_Nautilus_ViewFrame * servant, Nautilus_NavigationRequestInfo * navinfo, @@ -429,7 +441,7 @@ nautilus_view_load_client(NautilusView *view, const char *iid) gtk_container_remove(GTK_CONTAINER(view), view->client); view->client = NULL; } - view->client = gnome_bonobo_widget_new_control((char *)iid); + view->client = gnome_bonobo_widget_new_subdoc((char *)iid, NAUTILUS_WINDOW(view->main_window)->uih); g_return_if_fail(view->client); CORBA_exception_init(&ev); CORBA_Object_release(view->view_client, &ev); diff --git a/src/ntl-window.c b/src/ntl-window.c index 006c1cb4c..c63b2fb29 100644 --- a/src/ntl-window.c +++ b/src/ntl-window.c @@ -29,6 +29,67 @@ #include "nautilus.h" #include "explorer-location-bar.h" +typedef struct { + POA_Nautilus_ViewWindow servant; + gpointer gnome_object; + + NautilusWindow *window; +} impl_POA_Nautilus_ViewWindow; + +static POA_Nautilus_ViewWindow__epv impl_Nautilus_ViewWindow_epv = +{ + NULL +}; + +static PortableServer_ServantBase__epv base_epv = { NULL}; + +static POA_Nautilus_ViewWindow__vepv impl_Nautilus_ViewWindow_vepv = +{ + &base_epv, + NULL, + &impl_Nautilus_ViewWindow_epv +}; + +static void +impl_Nautilus_ViewWindow__destroy(GnomeObject *obj, impl_POA_Nautilus_ViewWindow *servant) +{ + PortableServer_ObjectId *objid; + CORBA_Environment ev; + + CORBA_exception_init(&ev); + + objid = PortableServer_POA_servant_to_id(bonobo_poa(), servant, &ev); + PortableServer_POA_deactivate_object(bonobo_poa(), objid, &ev); + CORBA_free(objid); + obj->servant = NULL; + + POA_Nautilus_ViewWindow__fini((PortableServer_Servant) servant, &ev); + g_free(servant); + CORBA_exception_free(&ev); +} + +static GnomeObject * +impl_Nautilus_ViewWindow__create(NautilusWindow *window) +{ + GnomeObject *retval; + impl_POA_Nautilus_ViewWindow *newservant; + CORBA_Environment ev; + + CORBA_exception_init(&ev); + + newservant = g_new0(impl_POA_Nautilus_ViewWindow, 1); + newservant->servant.vepv = &impl_Nautilus_ViewWindow_vepv; + newservant->window = window; + POA_Nautilus_ViewWindow__init((PortableServer_Servant) newservant, &ev); + + retval = gnome_object_new_from_servant(newservant); + + gtk_signal_connect(GTK_OBJECT(retval), "destroy", GTK_SIGNAL_FUNC(impl_Nautilus_ViewWindow__destroy), newservant); + CORBA_exception_free(&ev); + + return retval; +} + static void nautilus_window_class_init (NautilusWindowClass *klass); static void nautilus_window_init (NautilusWindow *window); static void nautilus_window_destroy (NautilusWindow *window); @@ -40,8 +101,6 @@ static void nautilus_window_set_arg (GtkObject *object, static void nautilus_window_get_arg (GtkObject *object, GtkArg *arg, guint arg_id); -static void nautilus_window_close (GtkWidget *widget, - GtkWidget *window); static void nautilus_window_goto_url (GtkWidget *widget, const char *url, GtkWidget *window); @@ -66,7 +125,8 @@ nautilus_window_get_type(void) if (!window_type) { - GtkTypeInfo window_info = { + GtkTypeInfo window_info = + { "NautilusWindow", sizeof(NautilusWindow), sizeof(NautilusWindowClass), @@ -152,6 +212,7 @@ nautilus_window_class_init (NautilusWindowClass *klass) GTK_TYPE_OBJECT, GTK_ARG_READWRITE, ARG_CONTENT_VIEW); + impl_Nautilus_ViewWindow_vepv.GNOME_Unknown_epv = gnome_object_get_epv(); } static gboolean @@ -207,11 +268,7 @@ static void nautilus_window_constructed(NautilusWindow *window) { GnomeApp *app; - GnomeUIInfo dummy_menu[] = { - GNOMEUIINFO_END - }; GnomeUIInfo main_menu[] = { - GNOMEUIINFO_SUBTREE_STOCK(N_("_Actions"), dummy_menu, GNOME_STOCK_MENU_JUMP_TO), GNOMEUIINFO_END }; GtkWidget *menu_hbox, *menubar, *wtmp, *statusbar; @@ -246,7 +303,8 @@ nautilus_window_constructed(NautilusWindow *window) gtk_option_menu_set_history(GTK_OPTION_MENU(window->option_cvtype), 0); gtk_widget_queue_resize(window->menu_cvtype); - /* A hacked-up version of gnome_app_set_menu() */ + /* A hacked-up version of gnome_app_set_menu(). We need this to use our 'menubar' for the actual menubar stuff, + but our menu_hbox for the widget being docked. */ { GtkWidget *dock_item; GnomeDockItemBehavior behavior; @@ -345,6 +403,12 @@ nautilus_window_constructed(NautilusWindow *window) GNOME_DOCK_ITEM_BEH_LOCKED|GNOME_DOCK_ITEM_BEH_EXCLUSIVE|GNOME_DOCK_ITEM_BEH_NEVER_VERTICAL, GNOME_DOCK_TOP, 1, 0, 0); gtk_widget_show(window->ent_url); + + /* CORBA stuff */ + window->ntl_viewwindow = impl_Nautilus_ViewWindow__create(window); + window->uih = gnome_ui_handler_new(); + gnome_ui_handler_set_app(window->uih, app); + gnome_object_add_interface(GNOME_OBJECT(window->uih), window->ntl_viewwindow); } static void diff --git a/src/ntl-window.h b/src/ntl-window.h index e07c12d7e..73ad91dfc 100644 --- a/src/ntl-window.h +++ b/src/ntl-window.h @@ -72,6 +72,9 @@ struct _NautilusWindow { GSList *uris_prev, *uris_next; guint statusbar_ctx, statusbar_clear_id; + + GnomeObject *ntl_viewwindow; + GnomeUIHandler *uih; }; GtkType nautilus_window_get_type(void); |