~elementary-apps/pantheon-files/trunk

1 by am.monkeyd at gmail
let's roll
1
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
2
/*
3
 * Copyright (C) 2010 ammonkey
4
 *
5
 * This library is free software; you can redistribute it and/or modify
6
 * it under the terms of the GNU Lesser General Public License
7
 * version 3.0 as published by the Free Software Foundation.
8
 *
9
 * This library is distributed in the hope that it will be useful,
10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
 * GNU Lesser General Public License version 3.0 for more details.
13
 *
14
 * You should have received a copy of the GNU Lesser General Public
15
 * License along with this library. If not, see
16
 * <http://www.gnu.org/licenses/>.
17
 *
18
 * Author: ammonkey <am.monkeyd@gmail.com>
19
 */
20
21
#include "marlin-window-columns.h"
22
//#include "gof-directory-async.h"
23
//#include "fm-list-view.h"
24
#include "fm-columns-view.h"
25
26
/*static void gof_window_slot_init       (GOFWindowSlot *slot);
27
static void gof_window_slot_class_init (GOFWindowSlotClass *class);
28
static void gof_window_slot_finalize   (GObject *object);*/
29
static void marlin_window_columns_finalize   (GObject *object);
30
31
G_DEFINE_TYPE (MarlinWindowColumns, marlin_window_columns, G_TYPE_OBJECT)
32
33
#define parent_class marlin_window_columns_parent_class
34
35
void
36
marlin_window_columns_change_location (GOFWindowSlot *slot, GFile *location)
37
{
38
        MarlinWindowColumns *mwcols = slot->mwcols;
39
        GtkWidget *window = mwcols->window;
40
41
        load_dir_async_cancel(slot->directory);
42
        gtk_widget_destroy (mwcols->view_box);
43
        
44
        mwcols = marlin_window_columns_new (location, window);
45
}
46
47
MarlinWindowColumns *
48
marlin_window_columns_new (GFile *location, GtkWidget *window)
49
{
50
        printf("%s\n", G_STRFUNC);
51
        MarlinWindowColumns *mwcols;
52
        mwcols = g_object_new (MARLIN_TYPE_WINDOW_COLUMNS, NULL);
53
        mwcols->location = location;
54
        mwcols->window = window;
55
56
        GOFWindowSlot *slot = gof_window_slot_column_new (location, window);
57
        slot->mwcols = mwcols;
58
        mwcols->active_slot = slot;
59
        //marlin_window_set_active_slot (MARLIN_WINDOW (window), slot);
60
        
61
        mwcols->colpane = gtk_hbox_new (FALSE, 0);
62
        slot->colpane = mwcols->colpane;
63
        gtk_widget_show (mwcols->colpane);
64
        mwcols->view_box = gtk_scrolled_window_new(0, 0);
65
        gtk_widget_show (mwcols->view_box);
66
        gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW (mwcols->view_box), mwcols->colpane);
67
        gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (mwcols->view_box),
68
                                        GTK_POLICY_AUTOMATIC,
69
                                        GTK_POLICY_NEVER);
70
71
        gof_window_column_add(slot, slot->view_box);
72
73
        gtk_container_add( GTK_CONTAINER(window), mwcols->view_box);
74
        return mwcols;
75
}
76
77
void
78
marlin_window_columns_add (MarlinWindowColumns *mwcols, GFile *location)
79
{
80
        GOFWindowSlot *slot = gof_window_slot_column_new (location, mwcols->window);
81
        slot->mwcols = mwcols;
82
        slot->colpane = mwcols->active_slot->colpane;
83
        //mwcols->active_slot = slot;
84
        //add_column(mwcols, slot->view_box);
85
        gof_window_column_add(slot, slot->view_box);
86
}
87
88
static void
89
marlin_window_columns_init (MarlinWindowColumns *mwcol)
90
{
91
#if 0
92
	GtkWidget *content_box, *eventbox, *extras_vbox, *frame, *hsep;
93
94
	content_box = gtk_vbox_new (FALSE, 0);
95
	slot->content_box = content_box;
96
	gtk_widget_show (content_box);
97
98
	frame = gtk_frame_new (NULL);
99
	gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN);
100
	gtk_box_pack_start (GTK_BOX (content_box), frame, TRUE, TRUE, 0);
101
	gtk_widget_show (frame);
102
103
	slot->view_box = gtk_vbox_new (FALSE, 0);
104
	gtk_container_add (GTK_CONTAINER (frame), slot->view_box);
105
	gtk_widget_show (slot->view_box);
106
#endif
107
        //slot->view_box = GTK_WIDGET (g_object_new (FM_TYPE_LIST_VIEW, NULL));
108
        /*slot->view_box = GTK_WIDGET (g_object_new (FM_TYPE_LIST_VIEW,
109
                                                   "window-slot", slot, NULL));*/
110
	//gtk_box_pack_start (GTK_BOX (slot->content_box), GTK_WIDGET (slot->list_view->tree), TRUE, TRUE, 0);
111
        
112
113
        /*GtkWidget *m_scwin;
114
        m_scwin = gtk_scrolled_window_new(NULL,NULL);
115
	slot->content_box = m_scwin;
116
	gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW(m_scwin), GTK_POLICY_AUTOMATIC , GTK_POLICY_AUTOMATIC);
117
	gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW(m_scwin), GTK_SHADOW_NONE);*/
118
119
        //gtk_container_add( GTK_CONTAINER(m_scwin), GTK_WIDGET (slot->list_view->tree));
120
121
122
#if 0
123
	eventbox = gtk_event_box_new ();
124
	slot->extra_location_event_box = eventbox;
125
	gtk_widget_set_name (eventbox, "nautilus-extra-view-widget");
126
	gtk_box_pack_start (GTK_BOX (slot->view_box), eventbox, FALSE, FALSE, 0);
127
128
	extras_vbox = gtk_vbox_new (FALSE, 6);
129
	gtk_container_set_border_width (GTK_CONTAINER (extras_vbox), 6);
130
	slot->extra_location_widgets = extras_vbox;
131
	gtk_container_add (GTK_CONTAINER (eventbox), extras_vbox);
132
	gtk_widget_show (extras_vbox);
133
134
	hsep = gtk_hseparator_new ();
135
	gtk_box_pack_start (GTK_BOX (slot->view_box), hsep, FALSE, FALSE, 0);
136
	slot->extra_location_separator = hsep;
137
138
	slot->title = g_strdup (_("Loading..."));
139
#endif
140
}
141
142
static void
143
marlin_window_columns_class_init (MarlinWindowColumnsClass *class)
144
{
145
	/*class->active = real_active;
146
	class->inactive = real_inactive;
147
	class->update_query_editor = real_update_query_editor; */
148
149
	G_OBJECT_CLASS (class)->finalize = marlin_window_columns_finalize;
150
}
151
152
/*GOFWindowSlot *
153
marlin_window_columns_get_active_slot (MarlinWindowColumns *mwcols)
154
{
155
        return (mwcols->active_slot);
156
}*/
157
158
GFile *
159
marlin_window_columns_get_location (MarlinWindowColumns *mwcols)
160
{
161
        return mwcols->location;
162
}
163
164
#if 0
165
void
166
nautilus_window_slot_remove_extra_location_widgets (NautilusWindowSlot *slot)
167
{
168
	gtk_container_foreach (GTK_CONTAINER (slot->extra_location_widgets),
169
			       remove_all,
170
			       slot->extra_location_widgets);
171
	gtk_widget_hide (slot->extra_location_event_box);
172
	gtk_widget_hide (slot->extra_location_separator);
173
}
174
175
void
176
nautilus_window_slot_add_extra_location_widget (NautilusWindowSlot *slot,
177
						GtkWidget *widget)
178
{
179
	gtk_box_pack_start (GTK_BOX (slot->extra_location_widgets),
180
			    widget, TRUE, TRUE, 0);
181
	gtk_widget_show (slot->extra_location_event_box);
182
	gtk_widget_show (slot->extra_location_separator);
183
}
184
185
void
186
nautilus_window_slot_add_current_location_to_history_list (NautilusWindowSlot *slot)
187
{
188
189
	if ((slot->pane->window == NULL || !NAUTILUS_IS_DESKTOP_WINDOW (slot->pane->window)) &&
190
	    nautilus_add_bookmark_to_history_list (slot->current_location_bookmark)) {
191
		nautilus_send_history_list_changed ();
192
	}
193
}
194
#endif
195
196
static void
197
marlin_window_columns_finalize (GObject *object)
198
{
199
	//MarlinWindowColumns *mwcols = MARLIN_WINDOW_COLUMNS (object);
200
	
201
        G_OBJECT_CLASS (parent_class)->finalize (object);
202
203
#if 0
204
	GtkWidget *widget;
205
206
	if (slot->content_view) {
207
		widget = nautilus_view_get_widget (slot->content_view);
208
		gtk_widget_destroy (widget);
209
		g_object_unref (slot->content_view);
210
		slot->content_view = NULL;
211
	}
212
213
	if (slot->new_content_view) {
214
		widget = nautilus_view_get_widget (slot->new_content_view);
215
		gtk_widget_destroy (widget);
216
		g_object_unref (slot->new_content_view);
217
		slot->new_content_view = NULL;
218
	}
219
220
	nautilus_window_slot_set_viewed_file (slot, NULL);
221
	/* TODO? why do we unref here? the file is NULL.
222
	 * It was already here before the slot move, though */
223
	nautilus_file_unref (slot->viewed_file);
224
225
226
	eel_g_list_free_deep (slot->pending_selection);
227
	slot->pending_selection = NULL;
228
229
	g_free (slot->title);
230
	slot->title = NULL;
231
232
	g_free (slot->status_text);
233
	slot->status_text = NULL;
234
#endif
235
	//G_OBJECT_CLASS (parent_class)->dispose (object);
236
}
237