[nautilus] window: add _full() versions of _go_to and _open() methods



commit 24515b87a91afd32885e07e32e2b4080584673a4
Author: Cosimo Cecchi <cosimoc gnome org>
Date:   Tue Aug 31 02:41:32 2010 +0200

    window: add _full() versions of _go_to and _open() methods
    
    These also have a callback to get the result of the operation.

 libnautilus-private/nautilus-window-info.h      |    4 ++++
 libnautilus-private/nautilus-window-slot-info.c |   16 ++++++++++------
 libnautilus-private/nautilus-window-slot-info.h |   15 ++++++++++++---
 src/nautilus-window-manage-views.c              |    8 ++++----
 src/nautilus-window-slot.h                      |   11 +++++++++--
 src/nautilus-window.c                           |   14 +++++++++++++-
 src/nautilus-window.h                           |    4 ++++
 7 files changed, 56 insertions(+), 16 deletions(-)
---
diff --git a/libnautilus-private/nautilus-window-info.h b/libnautilus-private/nautilus-window-info.h
index 8ae0fa1..d798a77 100644
--- a/libnautilus-private/nautilus-window-info.h
+++ b/libnautilus-private/nautilus-window-info.h
@@ -82,6 +82,10 @@ typedef NautilusWindow                  NautilusWindowInfo;
 
 typedef struct _NautilusWindowInfoIface NautilusWindowInfoIface;
 
+typedef void (* NautilusWindowGoToCallback) (NautilusWindow *window,
+                                             GError *error,
+                                             gpointer user_data);
+
 struct _NautilusWindowInfoIface 
 {
 	GTypeInterface g_iface;
diff --git a/libnautilus-private/nautilus-window-slot-info.c b/libnautilus-private/nautilus-window-slot-info.c
index 9adff6c..8b2f2f4 100644
--- a/libnautilus-private/nautilus-window-slot-info.c
+++ b/libnautilus-private/nautilus-window-slot-info.c
@@ -104,11 +104,13 @@ nautilus_window_slot_info_make_hosting_pane_active (NautilusWindowSlotInfo *slot
 }
 
 void
-nautilus_window_slot_info_open_location (NautilusWindowSlotInfo  *slot,
-					 GFile                   *location,
-					 NautilusWindowOpenMode   mode,
-					 NautilusWindowOpenFlags  flags,
-					 GList                   *selection)
+nautilus_window_slot_info_open_location_full (NautilusWindowSlotInfo  *slot,
+					      GFile                   *location,
+					      NautilusWindowOpenMode   mode,
+					      NautilusWindowOpenFlags  flags,
+					      GList                   *selection,
+					      NautilusWindowGoToCallback callback,
+					      gpointer user_data)
 {
 	g_assert (NAUTILUS_IS_WINDOW_SLOT_INFO (slot));
 
@@ -116,7 +118,9 @@ nautilus_window_slot_info_open_location (NautilusWindowSlotInfo  *slot,
 								       location,
 								       mode,
 								       flags,
-								       selection);
+								       selection,
+								       callback,
+								       user_data);
 }
 
 char *
diff --git a/libnautilus-private/nautilus-window-slot-info.h b/libnautilus-private/nautilus-window-slot-info.h
index bc4a066..5515278 100644
--- a/libnautilus-private/nautilus-window-slot-info.h
+++ b/libnautilus-private/nautilus-window-slot-info.h
@@ -72,18 +72,27 @@ struct _NautilusWindowSlotInfoIface
 				       GFile *location,
 				       NautilusWindowOpenMode mode,
 				       NautilusWindowOpenFlags flags,
-				       GList *selection);
+				       GList *selection,
+				       NautilusWindowGoToCallback callback,
+				       gpointer user_data);
 	void   (* make_hosting_pane_active) (NautilusWindowSlotInfo *slot);
 };
 
 
 GType                             nautilus_window_slot_info_get_type            (void);
 NautilusWindowInfo *              nautilus_window_slot_info_get_window          (NautilusWindowSlotInfo            *slot);
-void                              nautilus_window_slot_info_open_location       (NautilusWindowSlotInfo            *slot,
+
+#define nautilus_window_slot_info_open_location(slot, location, mode, flags, selection) \
+	nautilus_window_slot_info_open_location_full(slot, location, mode, \
+						     flags, selection, NULL, NULL)
+
+void                              nautilus_window_slot_info_open_location_full  (NautilusWindowSlotInfo            *slot,
 										 GFile                             *location,
 										 NautilusWindowOpenMode             mode,
 										 NautilusWindowOpenFlags            flags,
-										 GList                             *selection);
+										 GList                             *selection,
+										 NautilusWindowGoToCallback         callback,
+										 gpointer                           user_data);
 void                              nautilus_window_slot_info_set_status          (NautilusWindowSlotInfo            *slot,
 										 const char *status);
 void                              nautilus_window_slot_info_make_hosting_pane_active (NautilusWindowSlotInfo       *slot);
diff --git a/src/nautilus-window-manage-views.c b/src/nautilus-window-manage-views.c
index 9d82472..655ea71 100644
--- a/src/nautilus-window-manage-views.c
+++ b/src/nautilus-window-manage-views.c
@@ -656,7 +656,7 @@ nautilus_window_slot_open_location (NautilusWindowSlot *slot,
 	
 	nautilus_window_slot_open_location_full (slot, location,
 						 NAUTILUS_WINDOW_OPEN_ACCORDING_TO_MODE,
-						 flags, NULL);
+						 flags, NULL, NULL, NULL);
 }
 
 void
@@ -673,7 +673,7 @@ nautilus_window_slot_open_location_with_selection (NautilusWindowSlot *slot,
 	}
 	nautilus_window_slot_open_location_full (slot, location,
 						 NAUTILUS_WINDOW_OPEN_ACCORDING_TO_MODE,
-						 flags, selection);
+						 flags, selection, NULL, NULL);
 }
 
 
@@ -694,7 +694,7 @@ nautilus_window_slot_go_home (NautilusWindowSlot *slot, gboolean new_tab)
 	home = g_file_new_for_path (g_get_home_dir ());
 	nautilus_window_slot_open_location_full (slot, home, 
 						 NAUTILUS_WINDOW_OPEN_ACCORDING_TO_MODE, 
-						 flags, NULL);
+						 flags, NULL, NULL, NULL);
 	g_object_unref (home);
 }
 
@@ -2057,7 +2057,7 @@ nautilus_navigation_window_back_or_forward (NautilusNavigationWindow *window,
 		nautilus_window_slot_open_location_full (slot, location,
 							 NAUTILUS_WINDOW_OPEN_ACCORDING_TO_MODE,
 							 NAUTILUS_WINDOW_OPEN_FLAG_NEW_TAB,
-							 NULL);
+							 NULL, NULL, NULL);
 	} else {
         	char *scroll_pos;
 		
diff --git a/src/nautilus-window-slot.h b/src/nautilus-window-slot.h
index 9f95d20..a7c60fb 100644
--- a/src/nautilus-window-slot.h
+++ b/src/nautilus-window-slot.h
@@ -136,7 +136,9 @@ void			nautilus_window_slot_open_location_full       (NautilusWindowSlot	*slot,
 								       GFile			*location,
 								       NautilusWindowOpenMode	 mode,
 								       NautilusWindowOpenFlags	 flags,
-								       GList			*new_selection);
+								       GList			*new_selection,
+								       NautilusWindowGoToCallback callback,
+								       gpointer                  user_data);
 void			nautilus_window_slot_stop_loading	      (NautilusWindowSlot	*slot);
 
 void			nautilus_window_slot_set_content_view	      (NautilusWindowSlot	*slot,
@@ -153,7 +155,12 @@ void                    nautilus_window_slot_disconnect_content_view  (NautilusW
 #define nautilus_window_slot_go_to(slot,location, new_tab) \
 	nautilus_window_slot_open_location_full(slot, location, NAUTILUS_WINDOW_OPEN_ACCORDING_TO_MODE, \
 						(new_tab ? NAUTILUS_WINDOW_OPEN_FLAG_NEW_TAB : 0), \
-						NULL)
+						NULL, NULL, NULL)
+
+#define nautilus_window_slot_go_to_full(slot, location, new_tab, callback, user_data) \
+	nautilus_window_slot_open_location_full(slot, location, NAUTILUS_WINDOW_OPEN_ACCORDING_TO_MODE, \
+						(new_tab ? NAUTILUS_WINDOW_OPEN_FLAG_NEW_TAB : 0), \
+						NULL, callback, user_data)
 
 #define nautilus_window_slot_go_to_with_selection(slot,location,new_selection) \
 	nautilus_window_slot_open_location_with_selection(slot, location, new_selection, FALSE)
diff --git a/src/nautilus-window.c b/src/nautilus-window.c
index 2f7215f..eb1b6b5 100644
--- a/src/nautilus-window.c
+++ b/src/nautilus-window.c
@@ -234,6 +234,17 @@ nautilus_window_go_to (NautilusWindow *window, GFile *location)
 }
 
 void
+nautilus_window_go_to_full (NautilusWindow *window,
+			    GFile          *location,
+			    NautilusWindowGoToCallback callback,
+			    gpointer        user_data)
+{
+	g_return_if_fail (NAUTILUS_IS_WINDOW (window));
+
+	nautilus_window_slot_go_to_full (window->details->active_pane->active_slot, location, FALSE, callback, user_data);
+}
+
+void
 nautilus_window_go_to_with_selection (NautilusWindow *window, GFile *location, GList *new_selection)
 {
 	g_return_if_fail (NAUTILUS_IS_WINDOW (window));
@@ -318,7 +329,8 @@ nautilus_window_go_up (NautilusWindow *window, gboolean close_behind, gboolean n
 	nautilus_window_slot_open_location_full (slot, parent, 
 						 NAUTILUS_WINDOW_OPEN_ACCORDING_TO_MODE,
 						 flags,
-						 selection);
+						 selection,
+						 NULL, NULL);
 	
 	g_object_unref (parent);
 	
diff --git a/src/nautilus-window.h b/src/nautilus-window.h
index 491557c..10751d8 100644
--- a/src/nautilus-window.h
+++ b/src/nautilus-window.h
@@ -132,6 +132,10 @@ void             nautilus_window_disconnect_content_view (NautilusWindow    *win
 
 void             nautilus_window_go_to                (NautilusWindow    *window,
                                                        GFile             *location);
+void             nautilus_window_go_to_full           (NautilusWindow    *window,
+                                                       GFile             *location,
+                                                       NautilusWindowGoToCallback callback,
+                                                       gpointer           user_data);
 void             nautilus_window_go_to_with_selection (NautilusWindow    *window,
                                                        GFile             *location,
                                                        GList             *new_selection);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]