1 /*
2    nautilus-window-slot.h: Nautilus window slot
3 
4    Copyright (C) 2008 Free Software Foundation, Inc.
5 
6    This program is free software; you can redistribute it and/or
7    modify it under the terms of the GNU General Public License as
8    published by the Free Software Foundation; either version 2 of the
9    License, or (at your option) any later version.
10 
11    This program is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14    General Public License for more details.
15 
16    You should have received a copy of the GNU General Public
17    License along with this program; if not, see <http://www.gnu.org/licenses/>.
18 
19    Author: Christian Neumair <cneumair@gnome.org>
20 */
21 
22 #pragma once
23 
24 #include <gdk/gdk.h>
25 #include <gio/gio.h>
26 #include <gtk/gtk.h>
27 
28 #include "nautilus-types.h"
29 
30 typedef enum {
31 	NAUTILUS_LOCATION_CHANGE_STANDARD,
32 	NAUTILUS_LOCATION_CHANGE_BACK,
33 	NAUTILUS_LOCATION_CHANGE_FORWARD,
34 	NAUTILUS_LOCATION_CHANGE_RELOAD
35 } NautilusLocationChangeType;
36 
37 #define NAUTILUS_TYPE_WINDOW_SLOT (nautilus_window_slot_get_type ())
38 G_DECLARE_FINAL_TYPE (NautilusWindowSlot, nautilus_window_slot, NAUTILUS, WINDOW_SLOT, GtkBox)
39 
40 typedef struct
41 {
42     NautilusFile *file;
43     gint view_before_search;
44     GList *back_list;
45     GList *forward_list;
46     NautilusBookmark *current_location_bookmark;
47 } NautilusNavigationState;
48 
49 NautilusWindowSlot * nautilus_window_slot_new              (NautilusWindow     *window);
50 
51 NautilusWindow * nautilus_window_slot_get_window           (NautilusWindowSlot *slot);
52 void             nautilus_window_slot_set_window           (NautilusWindowSlot *slot,
53 							    NautilusWindow     *window);
54 
55 void nautilus_window_slot_open_location_full              (NautilusWindowSlot      *slot,
56                                                            GFile                   *location,
57                                                            NautilusWindowOpenFlags  flags,
58                                                            GList                   *new_selection);
59 
60 GFile * nautilus_window_slot_get_location		   (NautilusWindowSlot *slot);
61 GFile * nautilus_window_slot_get_pending_location          (NautilusWindowSlot *slot);
62 
63 NautilusBookmark *nautilus_window_slot_get_bookmark        (NautilusWindowSlot *slot);
64 
65 GList * nautilus_window_slot_get_back_history              (NautilusWindowSlot *slot);
66 GList * nautilus_window_slot_get_forward_history           (NautilusWindowSlot *slot);
67 
68 gboolean nautilus_window_slot_get_allow_stop               (NautilusWindowSlot *slot);
69 void     nautilus_window_slot_set_allow_stop		   (NautilusWindowSlot *slot,
70 							    gboolean	        allow_stop);
71 void     nautilus_window_slot_stop_loading                 (NautilusWindowSlot *slot);
72 
73 const gchar *nautilus_window_slot_get_title                (NautilusWindowSlot *slot);
74 void         nautilus_window_slot_update_title		   (NautilusWindowSlot *slot);
75 
76 gboolean nautilus_window_slot_handle_event       	   (NautilusWindowSlot *slot,
77 							    GdkEvent           *event);
78 
79 void    nautilus_window_slot_queue_reload		   (NautilusWindowSlot *slot);
80 
81 GIcon*   nautilus_window_slot_get_icon                     (NautilusWindowSlot *slot);
82 
83 const gchar*   nautilus_window_slot_get_tooltip                  (NautilusWindowSlot *slot);
84 
85 NautilusToolbarMenuSections * nautilus_window_slot_get_toolbar_menu_sections (NautilusWindowSlot *slot);
86 
87 GMenuModel* nautilus_window_slot_get_templates_menu (NautilusWindowSlot *self);
88 
89 GMenuModel* nautilus_window_slot_get_extensions_background_menu (NautilusWindowSlot *self);
90 
91 gboolean nautilus_window_slot_get_active                   (NautilusWindowSlot *slot);
92 
93 void     nautilus_window_slot_set_active                   (NautilusWindowSlot *slot,
94                                                             gboolean            active);
95 gboolean nautilus_window_slot_get_loading                  (NautilusWindowSlot *slot);
96 
97 gboolean nautilus_window_slot_get_searching                (NautilusWindowSlot *slot);
98 
99 GList* nautilus_window_slot_get_selection                  (NautilusWindowSlot *slot);
100 
101 void     nautilus_window_slot_search                       (NautilusWindowSlot *slot,
102                                                             NautilusQuery      *query);
103 
104 void nautilus_window_slot_restore_navigation_state (NautilusWindowSlot      *self,
105                                                     NautilusNavigationState *data);
106 
107 NautilusNavigationState* nautilus_window_slot_get_navigation_state (NautilusWindowSlot *self);
108 
109 NautilusQueryEditor *nautilus_window_slot_get_query_editor (NautilusWindowSlot *self);
110 
111 /* Only used by slot-dnd */
112 NautilusView*  nautilus_window_slot_get_current_view       (NautilusWindowSlot *slot);
113 
114 void nautilus_window_slot_back_or_forward                  (NautilusWindowSlot *slot,
115                                                             gboolean            back,
116                                                             guint               distance);
117 
118 void free_navigation_state                                 (gpointer data);
119