88
88
set_same_directory (GnomeCmdFileSelector *fs, GnomeCmdFileSelector *other)
93
con = gnome_cmd_file_selector_get_connection (other);
94
dir = gnome_cmd_file_selector_get_directory (other);
95
if (fs->priv->con != con)
96
gnome_cmd_file_selector_set_connection (fs, con, dir);
98
gnome_cmd_file_selector_set_directory (fs, dir);
93
con = gnome_cmd_file_selector_get_connection (other);
94
dir = gnome_cmd_file_selector_get_directory (other);
95
if (fs->priv->con != con)
96
gnome_cmd_file_selector_set_connection (fs, con, dir);
98
gnome_cmd_file_selector_set_directory (fs, dir);
103
103
show_list_popup (GnomeCmdFileSelector *fs)
105
/* create the popup menu */
106
GtkWidget *menu = gnome_cmd_list_popmenu_new (fs);
107
gtk_widget_ref (menu);
105
/* create the popup menu */
106
GtkWidget *menu = gnome_cmd_list_popmenu_new (fs);
107
gtk_widget_ref (menu);
109
gtk_menu_popup (GTK_MENU(menu), NULL, NULL,
111
3, GDK_CURRENT_TIME);
109
gtk_menu_popup (GTK_MENU(menu), NULL, NULL,
111
3, GDK_CURRENT_TIME);
116
116
show_selected_dir_tree_size (GnomeCmdFileSelector *fs)
120
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
122
finfo = gnome_cmd_file_list_get_selected_file (fs->list);
123
gnome_cmd_file_list_show_dir_size (fs->list, finfo);
120
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
122
finfo = gnome_cmd_file_list_get_selected_file (fs->list);
123
gnome_cmd_file_list_show_dir_size (fs->list, finfo);
128
128
show_dir_tree_sizes (GnomeCmdFileSelector *fs)
132
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
134
files = gnome_cmd_file_list_get_all_files (fs->list);
136
gnome_cmd_file_list_show_dir_size (fs->list, (GnomeCmdFile*)files->data);
132
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
134
files = gnome_cmd_file_list_get_all_files (fs->list);
136
gnome_cmd_file_list_show_dir_size (fs->list, (GnomeCmdFile*)files->data);
143
143
update_selected_files_label (GnomeCmdFileSelector *fs)
147
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
149
all_files = gnome_cmd_file_list_get_all_files (fs->list);
153
if (g_list_length (all_files) >= 0)
155
GList *sel_files, *tmp;
156
gchar *info_str, *sel_str, *total_str;
157
GnomeVFSFileSize sel_kb, sel_bytes = 0;
158
GnomeVFSFileSize total_kb, total_bytes = 0;
160
gint num_sel_files = 0;
165
GnomeCmdFile *finfo = (GnomeCmdFile*)tmp->data;
166
if (finfo->info->type == GNOME_VFS_FILE_TYPE_REGULAR) {
167
total_bytes += finfo->info->size;
173
sel_files = gnome_cmd_file_list_get_marked_files (fs->list);
177
GnomeCmdFile *finfo = (GnomeCmdFile*)tmp->data;
178
if (finfo->info->type == GNOME_VFS_FILE_TYPE_REGULAR) {
179
sel_bytes += finfo->info->size;
185
sel_kb = sel_bytes / 1024;
186
total_kb = total_bytes / 1024;
188
sel_str = g_strdup (size2string (sel_kb, GNOME_CMD_SIZE_DISP_MODE_GROUPED));
189
total_str = g_strdup (size2string (total_kb, GNOME_CMD_SIZE_DISP_MODE_GROUPED));
191
info_str = g_strdup_printf (
192
ngettext("%s of %s kB in %d of %d file selected",
193
"%s of %s kB in %d of %d files selected",
195
sel_str, total_str, num_sel_files, num_files);
197
gtk_label_set_text (GTK_LABEL (fs->info_label), info_str);
200
g_list_free (sel_files);
147
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
149
all_files = gnome_cmd_file_list_get_all_files (fs->list);
153
if (g_list_length (all_files) >= 0)
155
GList *sel_files, *tmp;
156
gchar *info_str, *sel_str, *total_str;
157
GnomeVFSFileSize sel_kb, sel_bytes = 0;
158
GnomeVFSFileSize total_kb, total_bytes = 0;
160
gint num_sel_files = 0;
165
GnomeCmdFile *finfo = (GnomeCmdFile*)tmp->data;
166
if (finfo->info->type == GNOME_VFS_FILE_TYPE_REGULAR) {
167
total_bytes += finfo->info->size;
173
sel_files = gnome_cmd_file_list_get_marked_files (fs->list);
177
GnomeCmdFile *finfo = (GnomeCmdFile*)tmp->data;
178
if (finfo->info->type == GNOME_VFS_FILE_TYPE_REGULAR) {
179
sel_bytes += finfo->info->size;
185
sel_kb = sel_bytes / 1024;
186
total_kb = total_bytes / 1024;
188
sel_str = g_strdup (size2string (sel_kb, GNOME_CMD_SIZE_DISP_MODE_GROUPED));
189
total_str = g_strdup (size2string (total_kb, GNOME_CMD_SIZE_DISP_MODE_GROUPED));
191
info_str = g_strdup_printf (
192
ngettext("%s of %s kB in %d of %d file selected",
193
"%s of %s kB in %d of %d files selected",
195
sel_str, total_str, num_sel_files, num_files);
197
gtk_label_set_text (GTK_LABEL (fs->info_label), info_str);
200
g_list_free (sel_files);
210
210
set_connection (GnomeCmdFileSelector *fs, GnomeCmdCon *con, GnomeCmdDir *dir)
213
fs->priv->dir_history = gnome_cmd_con_get_dir_history (con);
216
gnome_cmd_dir_cancel_monitoring (fs->priv->lwd);
217
gnome_cmd_dir_unref (fs->priv->lwd);
218
fs->priv->lwd = NULL;
221
gnome_cmd_dir_cancel_monitoring (fs->priv->cwd);
222
gnome_cmd_dir_unref (fs->priv->cwd);
223
fs->priv->cwd = NULL;
227
gnome_cmd_file_selector_set_directory (fs, dir);
229
else if (gnome_cmd_con_should_remember_dir (con)) {
230
dir = gnome_cmd_con_get_cwd (con);
231
gnome_cmd_file_selector_set_directory (fs, dir);
234
dir = gnome_cmd_con_get_default_dir (con);
235
gnome_cmd_file_selector_set_directory (fs, dir);
238
gnome_cmd_combo_select_data (GNOME_CMD_COMBO (fs->con_combo), con);
213
fs->priv->dir_history = gnome_cmd_con_get_dir_history (con);
216
gnome_cmd_dir_cancel_monitoring (fs->priv->lwd);
217
gnome_cmd_dir_unref (fs->priv->lwd);
218
fs->priv->lwd = NULL;
221
gnome_cmd_dir_cancel_monitoring (fs->priv->cwd);
222
gnome_cmd_dir_unref (fs->priv->cwd);
223
fs->priv->cwd = NULL;
227
gnome_cmd_file_selector_set_directory (fs, dir);
229
else if (gnome_cmd_con_should_remember_dir (con)) {
230
dir = gnome_cmd_con_get_cwd (con);
231
gnome_cmd_file_selector_set_directory (fs, dir);
234
dir = gnome_cmd_con_get_default_dir (con);
235
gnome_cmd_file_selector_set_directory (fs, dir);
238
gnome_cmd_combo_select_data (GNOME_CMD_COMBO (fs->con_combo), con);
243
243
file_is_wanted (GnomeCmdFileSelector *fs, GnomeVFSFileInfo *info)
245
if (info->type == GNOME_VFS_FILE_TYPE_UNKNOWN
246
&& gnome_cmd_data_get_type_filter (GNOME_VFS_FILE_TYPE_UNKNOWN))
248
if (info->type == GNOME_VFS_FILE_TYPE_REGULAR
249
&& gnome_cmd_data_get_type_filter (GNOME_VFS_FILE_TYPE_REGULAR))
251
if (info->type == GNOME_VFS_FILE_TYPE_DIRECTORY
252
&& gnome_cmd_data_get_type_filter (GNOME_VFS_FILE_TYPE_DIRECTORY))
254
if (info->type == GNOME_VFS_FILE_TYPE_FIFO
255
&& gnome_cmd_data_get_type_filter (GNOME_VFS_FILE_TYPE_FIFO))
257
if (info->type == GNOME_VFS_FILE_TYPE_SOCKET
258
&& gnome_cmd_data_get_type_filter (GNOME_VFS_FILE_TYPE_SOCKET))
260
if (info->type == GNOME_VFS_FILE_TYPE_CHARACTER_DEVICE
261
&& gnome_cmd_data_get_type_filter (GNOME_VFS_FILE_TYPE_CHARACTER_DEVICE))
263
if (info->type == GNOME_VFS_FILE_TYPE_BLOCK_DEVICE
264
&& gnome_cmd_data_get_type_filter (GNOME_VFS_FILE_TYPE_BLOCK_DEVICE))
266
if ((info->flags == GNOME_VFS_FILE_FLAGS_SYMLINK
267
|| info->symlink_name != NULL)
268
&& gnome_cmd_data_get_type_filter (GNOME_VFS_FILE_TYPE_SYMBOLIC_LINK))
270
if (strcmp (info->name, ".") == 0)
272
if (strcmp (info->name, "..") == 0)
274
if (info->name[0] == '.'
275
&& gnome_cmd_data_get_hidden_filter ())
277
if (gnome_cmd_data_get_backup_filter () &&
278
patlist_matches (gnome_cmd_data_get_backup_pattern_list (), info->name))
245
if (info->type == GNOME_VFS_FILE_TYPE_UNKNOWN
246
&& gnome_cmd_data_get_type_filter (GNOME_VFS_FILE_TYPE_UNKNOWN))
248
if (info->type == GNOME_VFS_FILE_TYPE_REGULAR
249
&& gnome_cmd_data_get_type_filter (GNOME_VFS_FILE_TYPE_REGULAR))
251
if (info->type == GNOME_VFS_FILE_TYPE_DIRECTORY
252
&& gnome_cmd_data_get_type_filter (GNOME_VFS_FILE_TYPE_DIRECTORY))
254
if (info->type == GNOME_VFS_FILE_TYPE_FIFO
255
&& gnome_cmd_data_get_type_filter (GNOME_VFS_FILE_TYPE_FIFO))
257
if (info->type == GNOME_VFS_FILE_TYPE_SOCKET
258
&& gnome_cmd_data_get_type_filter (GNOME_VFS_FILE_TYPE_SOCKET))
260
if (info->type == GNOME_VFS_FILE_TYPE_CHARACTER_DEVICE
261
&& gnome_cmd_data_get_type_filter (GNOME_VFS_FILE_TYPE_CHARACTER_DEVICE))
263
if (info->type == GNOME_VFS_FILE_TYPE_BLOCK_DEVICE
264
&& gnome_cmd_data_get_type_filter (GNOME_VFS_FILE_TYPE_BLOCK_DEVICE))
266
if ((info->flags == GNOME_VFS_FILE_FLAGS_SYMLINK
267
|| info->symlink_name != NULL)
268
&& gnome_cmd_data_get_type_filter (GNOME_VFS_FILE_TYPE_SYMBOLIC_LINK))
270
if (strcmp (info->name, ".") == 0)
272
if (strcmp (info->name, "..") == 0)
274
if (info->name[0] == '.'
275
&& gnome_cmd_data_get_hidden_filter ())
277
if (gnome_cmd_data_get_backup_filter () &&
278
patlist_matches (gnome_cmd_data_get_backup_pattern_list (), info->name))
285
285
static GnomeCmdFile *
286
286
create_parent_dir_file (GnomeCmdDir *dir)
289
GnomeVFSFileInfo *info = gnome_vfs_file_info_new ();
290
memset (info, '\0', sizeof (GnomeVFSFileInfo));
291
info->name = g_strdup ("..");
292
info->type = GNOME_VFS_FILE_TYPE_DIRECTORY;
293
info->mime_type = g_strdup ("x-directory/normal");
296
info->valid_fields = GNOME_VFS_FILE_INFO_FIELDS_TYPE
297
| GNOME_VFS_FILE_INFO_FIELDS_SIZE
298
| GNOME_VFS_FILE_INFO_FIELDS_MIME_TYPE;
299
finfo = gnome_cmd_file_new (info, dir);
289
GnomeVFSFileInfo *info = gnome_vfs_file_info_new ();
290
memset (info, '\0', sizeof (GnomeVFSFileInfo));
291
info->name = g_strdup ("..");
292
info->type = GNOME_VFS_FILE_TYPE_DIRECTORY;
293
info->mime_type = g_strdup ("x-directory/normal");
296
info->valid_fields = GNOME_VFS_FILE_INFO_FIELDS_TYPE
297
| GNOME_VFS_FILE_INFO_FIELDS_SIZE
298
| GNOME_VFS_FILE_INFO_FIELDS_MIME_TYPE;
299
finfo = gnome_cmd_file_new (info, dir);
305
305
update_files (GnomeCmdFileSelector *fs)
312
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
314
dir = gnome_cmd_file_selector_get_directory (fs);
315
g_return_if_fail (GNOME_CMD_IS_DIR (dir));
317
// if (gnome_cmd_con_open_is_needed (fs->priv->con))
318
// gnome_cmd_con_open (fs->priv->con);
320
gnome_cmd_dir_get_files (dir, &list);
323
// create_error_dialog (_("Failed to load directory"));
327
/* sort out the files to show */
328
while (list != NULL) {
329
GnomeCmdFile *finfo = GNOME_CMD_FILE (list->data);
331
if (file_is_wanted (fs, finfo->info))
332
list2 = g_list_append (list2, finfo);
337
/* Create a parent dir file (..) if appropriate */
338
path = gnome_cmd_file_get_path (GNOME_CMD_FILE (dir));
339
if (path && strcmp (path, "/") != 0)
340
list2 = g_list_append (list2, create_parent_dir_file (dir));
343
gnome_cmd_file_list_show_files (fs->list, list2, TRUE);
344
gnome_cmd_clist_set_voffset (GNOME_CMD_CLIST (fs->list), fs->priv->cwd->voffset);
346
if (fs->priv->realized)
347
update_selected_files_label (fs);
348
if (fs->priv->active)
349
gnome_cmd_file_list_select_row (fs->list, 0);
312
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
314
dir = gnome_cmd_file_selector_get_directory (fs);
315
g_return_if_fail (GNOME_CMD_IS_DIR (dir));
317
// if (gnome_cmd_con_open_is_needed (fs->priv->con))
318
// gnome_cmd_con_open (fs->priv->con);
320
gnome_cmd_dir_get_files (dir, &list);
323
// create_error_dialog (_("Failed to load directory"));
327
/* sort out the files to show */
328
while (list != NULL) {
329
GnomeCmdFile *finfo = GNOME_CMD_FILE (list->data);
331
if (file_is_wanted (fs, finfo->info))
332
list2 = g_list_append (list2, finfo);
337
/* Create a parent dir file (..) if appropriate */
338
path = gnome_cmd_file_get_path (GNOME_CMD_FILE (dir));
339
if (path && strcmp (path, "/") != 0)
340
list2 = g_list_append (list2, create_parent_dir_file (dir));
343
gnome_cmd_file_list_show_files (fs->list, list2, TRUE);
344
gnome_cmd_clist_set_voffset (GNOME_CMD_CLIST (fs->list), fs->priv->cwd->voffset);
346
if (fs->priv->realized)
347
update_selected_files_label (fs);
348
if (fs->priv->active)
349
gnome_cmd_file_list_select_row (fs->list, 0);
356
356
static void update_direntry (GnomeCmdFileSelector *fs)
360
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
362
tmp = gnome_cmd_dir_get_display_path (fs->priv->cwd);
363
g_return_if_fail (tmp != NULL);
365
gnome_cmd_dir_indicator_set_dir (
366
GNOME_CMD_DIR_INDICATOR (fs->dir_indicator), tmp);
360
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
362
tmp = gnome_cmd_dir_get_display_path (fs->priv->cwd);
363
g_return_if_fail (tmp != NULL);
365
gnome_cmd_dir_indicator_set_dir (GNOME_CMD_DIR_INDICATOR (fs->dir_indicator), tmp);
373
372
gnome_cmd_file_list_show_make_copy_dialog (GnomeCmdFileSelector *fs)
377
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
379
finfo = gnome_cmd_file_list_get_selected_file (
380
GNOME_CMD_FILE_LIST (fs->list));
382
if (GNOME_CMD_IS_FILE (finfo)) {
383
GtkWidget *dialog = gnome_cmd_make_copy_dialog_new (finfo, fs->priv->cwd);
385
gtk_widget_ref (dialog);
386
gtk_widget_show (dialog);
376
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
378
finfo = gnome_cmd_file_list_get_selected_file (
379
GNOME_CMD_FILE_LIST (fs->list));
381
if (GNOME_CMD_IS_FILE (finfo)) {
382
GtkWidget *dialog = gnome_cmd_make_copy_dialog_new (finfo, fs->priv->cwd);
384
gtk_widget_ref (dialog);
385
gtk_widget_show (dialog);
503
502
drag_end (GtkWidget *widget, GdkDragContext *context, GnomeCmdFileSelector *fs)
505
restore_drag_indicator (fs);
504
restore_drag_indicator (fs);
510
509
drag_leave (GtkWidget *widget, GdkDragContext *context, guint time, GnomeCmdFileSelector *fs)
512
if (fs->priv->autoscroll_timeout > 0) {
513
gtk_timeout_remove (fs->priv->autoscroll_timeout);
514
fs->priv->autoscroll_timeout = 0;
517
restore_drag_indicator (fs);
511
if (fs->priv->autoscroll_timeout > 0) {
512
gtk_timeout_remove (fs->priv->autoscroll_timeout);
513
fs->priv->autoscroll_timeout = 0;
516
restore_drag_indicator (fs);
522
521
drag_data_delete (GtkWidget *widget,
523
GdkDragContext *drag_context,
524
GnomeCmdFileSelector *fs)
522
GdkDragContext *drag_context,
523
GnomeCmdFileSelector *fs)
528
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
530
dir = gnome_cmd_file_selector_get_directory (fs);
531
g_return_if_fail (GNOME_CMD_IS_DIR (dir));
533
GList *files = gnome_cmd_file_list_get_selected_files (fs->list);
534
gnome_cmd_file_list_remove_files (fs->list, files);
527
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
529
dir = gnome_cmd_file_selector_get_directory (fs);
530
g_return_if_fail (GNOME_CMD_IS_DIR (dir));
532
GList *files = gnome_cmd_file_list_get_selected_files (fs->list);
533
gnome_cmd_file_list_remove_files (fs->list, files);
540
539
do_scroll (GnomeCmdFileSelector *fs)
543
gint focus_row, top_row, bottom_row;
547
GtkCList *clist = GTK_CLIST (fs->list);
549
gdk_window_get_size (GTK_WIDGET (clist)->window, &w, &h);
551
offset = (0-clist->voffset);
552
row_height = gnome_cmd_data_get_list_row_height();
553
row_count = clist->rows;
554
focus_row = gnome_cmd_clist_get_row (GNOME_CMD_CLIST (fs->list), 1, fs->priv->autoscroll_y);
555
top_row = gnome_cmd_clist_get_row (GNOME_CMD_CLIST (fs->list), 1, 0);
556
bottom_row = gnome_cmd_clist_get_row (GNOME_CMD_CLIST (fs->list), 1, h);
558
if (!fs->priv->autoscroll_dir) {
560
gtk_clist_moveto (clist, top_row-1, 0, 0, 0);
566
if (focus_row < row_count) {
567
gtk_clist_moveto (clist, top_row+1, 0, 0, 0);
542
gint focus_row, top_row, bottom_row;
546
GtkCList *clist = GTK_CLIST (fs->list);
548
gdk_window_get_size (GTK_WIDGET (clist)->window, &w, &h);
550
offset = (0-clist->voffset);
551
row_height = gnome_cmd_data_get_list_row_height();
552
row_count = clist->rows;
553
focus_row = gnome_cmd_clist_get_row (GNOME_CMD_CLIST (fs->list), 1, fs->priv->autoscroll_y);
554
top_row = gnome_cmd_clist_get_row (GNOME_CMD_CLIST (fs->list), 1, 0);
555
bottom_row = gnome_cmd_clist_get_row (GNOME_CMD_CLIST (fs->list), 1, h);
557
if (!fs->priv->autoscroll_dir) {
559
gtk_clist_moveto (clist, top_row-1, 0, 0, 0);
565
if (focus_row < row_count) {
566
gtk_clist_moveto (clist, top_row+1, 0, 0, 0);
578
577
autoscroll_if_appropriate (GnomeCmdFileSelector *fs, gint x, gint y)
583
GtkCList *clist = GTK_CLIST (fs->list);
587
gdk_window_get_size (GTK_WIDGET (clist)->window, &w, &h);
589
offset = (0-clist->voffset);
594
if (fs->priv->autoscroll_timeout) return;
595
fs->priv->autoscroll_dir = FALSE;
596
fs->priv->autoscroll_y = y;
597
fs->priv->autoscroll_timeout =
598
gtk_timeout_add (gnome_cmd_data_get_gui_update_rate (), (GtkFunction)do_scroll, fs);
601
if (fs->priv->autoscroll_timeout) return;
602
fs->priv->autoscroll_dir = TRUE;
603
fs->priv->autoscroll_y = y;
604
fs->priv->autoscroll_timeout =
605
gtk_timeout_add (gnome_cmd_data_get_gui_update_rate (), (GtkFunction)do_scroll, fs);
608
if (fs->priv->autoscroll_timeout > 0) {
609
gtk_timeout_remove (fs->priv->autoscroll_timeout);
610
fs->priv->autoscroll_timeout = 0;
582
GtkCList *clist = GTK_CLIST (fs->list);
586
gdk_window_get_size (GTK_WIDGET (clist)->window, &w, &h);
588
offset = (0-clist->voffset);
593
if (fs->priv->autoscroll_timeout) return;
594
fs->priv->autoscroll_dir = FALSE;
595
fs->priv->autoscroll_y = y;
596
fs->priv->autoscroll_timeout = gtk_timeout_add (gnome_cmd_data_get_gui_update_rate (), (GtkFunction)do_scroll, fs);
599
if (fs->priv->autoscroll_timeout) return;
600
fs->priv->autoscroll_dir = TRUE;
601
fs->priv->autoscroll_y = y;
602
fs->priv->autoscroll_timeout =
603
gtk_timeout_add (gnome_cmd_data_get_gui_update_rate (), (GtkFunction)do_scroll, fs);
606
if (fs->priv->autoscroll_timeout > 0) {
607
gtk_timeout_remove (fs->priv->autoscroll_timeout);
608
fs->priv->autoscroll_timeout = 0;
617
615
drag_motion (GtkWidget *widget,
618
GdkDragContext *context,
621
GnomeCmdFileSelector *fs)
616
GdkDragContext *context,
619
GnomeCmdFileSelector *fs)
626
gdk_drag_status (context, context->suggested_action, time);
628
clist = GTK_CLIST (fs->list);
630
y -= (clist->column_title_area.height - GTK_CONTAINER (clist)->border_width);
632
row = gnome_cmd_clist_get_row (GNOME_CMD_CLIST (fs->list), x, y);
635
GnomeCmdFile *finfo = gnome_cmd_file_list_get_file_at_row (fs->list, row);
636
if (finfo->info->type != GNOME_VFS_FILE_TYPE_DIRECTORY)
639
gnome_cmd_clist_set_drag_row (GNOME_CMD_CLIST (clist), row);
642
autoscroll_if_appropriate (fs, x, y);
624
gdk_drag_status (context, context->suggested_action, time);
626
clist = GTK_CLIST (fs->list);
628
y -= (clist->column_title_area.height - GTK_CONTAINER (clist)->border_width);
630
row = gnome_cmd_clist_get_row (GNOME_CMD_CLIST (fs->list), x, y);
633
GnomeCmdFile *finfo = gnome_cmd_file_list_get_file_at_row (fs->list, row);
634
if (finfo->info->type != GNOME_VFS_FILE_TYPE_DIRECTORY)
637
gnome_cmd_clist_set_drag_row (GNOME_CMD_CLIST (clist), row);
640
autoscroll_if_appropriate (fs, x, y);
649
647
init_dnd (GnomeCmdFileSelector *fs)
651
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
654
/* Set up drag source */
656
gtk_signal_connect (GTK_OBJECT (fs->list), "drag_begin",
657
GTK_SIGNAL_FUNC (drag_begin), fs);
658
gtk_signal_connect (GTK_OBJECT (fs->list), "drag_end",
659
GTK_SIGNAL_FUNC (drag_end), fs);
660
gtk_signal_connect (GTK_OBJECT (fs->list), "drag_leave",
661
GTK_SIGNAL_FUNC (drag_leave), fs);
662
gtk_signal_connect (GTK_OBJECT (fs->list), "drag_data_delete",
663
GTK_SIGNAL_FUNC (drag_data_delete), fs);
665
/* Set up drag destination */
667
gtk_drag_dest_set (GTK_WIDGET (fs->list),
668
GTK_DEST_DEFAULT_DROP,
669
drop_types, ELEMENTS (drop_types),
670
GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK | GDK_ACTION_ASK);
672
gtk_signal_connect (GTK_OBJECT (fs->list), "drag_motion",
673
GTK_SIGNAL_FUNC (drag_motion), fs);
674
gtk_signal_connect (GTK_OBJECT (fs->list), "drag_leave",
675
GTK_SIGNAL_FUNC (drag_leave), fs);
676
gtk_signal_connect (GTK_OBJECT (fs->list), "drag_data_received",
677
GTK_SIGNAL_FUNC (drag_data_received), fs);
649
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
652
/* Set up drag source */
654
gtk_signal_connect (GTK_OBJECT (fs->list), "drag_begin", GTK_SIGNAL_FUNC (drag_begin), fs);
655
gtk_signal_connect (GTK_OBJECT (fs->list), "drag_end", GTK_SIGNAL_FUNC (drag_end), fs);
656
gtk_signal_connect (GTK_OBJECT (fs->list), "drag_leave", GTK_SIGNAL_FUNC (drag_leave), fs);
657
gtk_signal_connect (GTK_OBJECT (fs->list), "drag_data_delete", GTK_SIGNAL_FUNC (drag_data_delete), fs);
659
/* Set up drag destination */
661
gtk_drag_dest_set (GTK_WIDGET (fs->list),
662
GTK_DEST_DEFAULT_DROP,
663
drop_types, ELEMENTS (drop_types),
664
GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK | GDK_ACTION_ASK);
666
gtk_signal_connect (GTK_OBJECT (fs->list), "drag_motion", GTK_SIGNAL_FUNC (drag_motion), fs);
667
gtk_signal_connect (GTK_OBJECT (fs->list), "drag_leave", GTK_SIGNAL_FUNC (drag_leave), fs);
668
gtk_signal_connect (GTK_OBJECT (fs->list), "drag_data_received", GTK_SIGNAL_FUNC (drag_data_received), fs);
682
673
update_dir_combo (GnomeCmdFileSelector *fs)
686
if (!fs->priv->dir_history) return;
688
tmp = fs->priv->dir_history->ents;
690
gnome_cmd_combo_clear (GNOME_CMD_COMBO (fs->dir_combo));
695
text[0] = (gchar*)tmp->data;
698
gnome_cmd_combo_append (GNOME_CMD_COMBO (fs->dir_combo), text, tmp->data);
702
if (fs->priv->dir_history->ents && fs->priv->dir_history->pos)
703
gtk_clist_select_row (
704
GTK_CLIST (GNOME_CMD_COMBO (fs->dir_combo)->list),
705
g_list_index (fs->priv->dir_history->ents, fs->priv->dir_history->pos->data),
677
if (!fs->priv->dir_history) return;
679
tmp = fs->priv->dir_history->ents;
681
gnome_cmd_combo_clear (GNOME_CMD_COMBO (fs->dir_combo));
686
text[0] = (gchar*)tmp->data;
689
gnome_cmd_combo_append (GNOME_CMD_COMBO (fs->dir_combo), text, tmp->data);
693
if (fs->priv->dir_history->ents && fs->priv->dir_history->pos)
694
gtk_clist_select_row (
695
GTK_CLIST (GNOME_CMD_COMBO (fs->dir_combo)->list),
696
g_list_index (fs->priv->dir_history->ents, fs->priv->dir_history->pos->data),
868
856
on_con_list_list_changed (GnomeCmdConList *con_list, GnomeCmdFileSelector *fs)
870
gnome_cmd_file_selector_update_connections (fs);
858
gnome_cmd_file_selector_update_connections (fs);
875
863
on_dir_file_created (GnomeCmdDir *dir, GnomeCmdFile *finfo, GnomeCmdFileSelector *fs)
877
g_return_if_fail (GNOME_CMD_IS_DIR (dir));
878
g_return_if_fail (GNOME_CMD_IS_FILE (finfo));
879
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
881
if (!file_is_wanted (fs, finfo->info))
884
gnome_cmd_file_list_insert_file (fs->list, finfo);
885
update_selected_files_label (fs);
865
g_return_if_fail (GNOME_CMD_IS_DIR (dir));
866
g_return_if_fail (GNOME_CMD_IS_FILE (finfo));
867
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
869
if (!file_is_wanted (fs, finfo->info))
872
gnome_cmd_file_list_insert_file (fs->list, finfo);
873
update_selected_files_label (fs);
890
878
on_dir_file_deleted (GnomeCmdDir *dir, GnomeCmdFile *finfo, GnomeCmdFileSelector *fs)
892
g_return_if_fail (GNOME_CMD_IS_DIR (dir));
893
g_return_if_fail (GNOME_CMD_IS_FILE (finfo));
894
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
896
if (fs->priv->cwd == dir && file_is_in_list (fs, finfo)) {
897
gnome_cmd_file_list_remove_file (fs->list, finfo);
898
update_selected_files_label (fs);
880
g_return_if_fail (GNOME_CMD_IS_DIR (dir));
881
g_return_if_fail (GNOME_CMD_IS_FILE (finfo));
882
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
884
if (fs->priv->cwd == dir && file_is_in_list (fs, finfo)) {
885
gnome_cmd_file_list_remove_file (fs->list, finfo);
886
update_selected_files_label (fs);
904
892
on_dir_file_changed (GnomeCmdDir *dir, GnomeCmdFile *finfo, GnomeCmdFileSelector *fs)
906
g_return_if_fail (GNOME_CMD_IS_DIR (dir));
907
g_return_if_fail (GNOME_CMD_IS_FILE (finfo));
908
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
894
g_return_if_fail (GNOME_CMD_IS_DIR (dir));
895
g_return_if_fail (GNOME_CMD_IS_FILE (finfo));
896
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
910
if (file_is_in_list (fs, finfo)) {
911
gnome_cmd_file_list_update_file (GNOME_CMD_FILE_LIST (fs->list), finfo);
912
update_selected_files_label (fs);
898
if (file_is_in_list (fs, finfo)) {
899
gnome_cmd_file_list_update_file (GNOME_CMD_FILE_LIST (fs->list), finfo);
900
update_selected_files_label (fs);
918
906
on_con_combo_item_selected (GnomeCmdCombo *con_combo,
920
GnomeCmdFileSelector *fs)
908
GnomeCmdFileSelector *fs)
922
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
923
g_return_if_fail (GNOME_CMD_IS_CON (con));
910
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
911
g_return_if_fail (GNOME_CMD_IS_CON (con));
925
gnome_cmd_main_win_switch_fs (main_win, fs);
926
gnome_cmd_file_selector_set_connection (fs, con, NULL);
913
gnome_cmd_main_win_switch_fs (main_win, fs);
914
gnome_cmd_file_selector_set_connection (fs, con, NULL);
931
919
on_combo_popwin_hidden (GnomeCmdCombo *combo,
932
GnomeCmdFileSelector *fs)
920
GnomeCmdFileSelector *fs)
934
g_return_if_fail (GNOME_CMD_IS_COMBO (combo));
935
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
922
g_return_if_fail (GNOME_CMD_IS_COMBO (combo));
923
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
937
gnome_cmd_main_win_refocus (main_win);
925
gnome_cmd_main_win_refocus (main_win);
942
930
on_con_btn_clicked (GtkButton *button,
943
GnomeCmdFileSelector *fs)
931
GnomeCmdFileSelector *fs)
945
GnomeCmdCon *con = gtk_object_get_data (GTK_OBJECT (button), "con");
947
g_return_if_fail (GNOME_CMD_IS_CON (con));
948
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
950
gnome_cmd_main_win_switch_fs (main_win, fs);
951
gnome_cmd_file_selector_set_connection (fs, con, NULL);
933
GnomeCmdCon *con = gtk_object_get_data (GTK_OBJECT (button), "con");
935
g_return_if_fail (GNOME_CMD_IS_CON (con));
936
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
938
gnome_cmd_main_win_switch_fs (main_win, fs);
939
gnome_cmd_file_selector_set_connection (fs, con, NULL);
956
944
create_con_buttons (GnomeCmdFileSelector *fs)
959
static GtkTooltips *tooltips = NULL;
961
if (!gnome_cmd_data_get_conbuttons_visibility ())
964
l = fs->priv->old_btns;
966
gtk_object_destroy (GTK_OBJECT (l->data));
969
g_list_free (fs->priv->old_btns);
970
fs->priv->old_btns = NULL;
973
tooltips = gtk_tooltips_new ();
976
l = gnome_cmd_con_list_get_all (gnome_cmd_data_get_con_list ());
978
GtkWidget *btn, *label;
981
GnomeCmdCon *con = GNOME_CMD_CON (l->data);
983
if (!gnome_cmd_con_is_open (con) && !GNOME_CMD_IS_CON_DEVICE (con)
984
&& !GNOME_CMD_IS_CON_SMB (con)) {
988
pm = gnome_cmd_con_get_go_pixmap (con);
990
btn = create_styled_button (NULL);
991
gtk_object_set_data (GTK_OBJECT (btn), "con", con);
992
gtk_signal_connect (GTK_OBJECT (btn), "clicked",
993
(GtkSignalFunc)on_con_btn_clicked, fs);
994
gtk_box_pack_start (GTK_BOX (fs->con_btns_hbox), btn, FALSE, FALSE, 0);
995
GTK_WIDGET_UNSET_FLAGS (btn, GTK_CAN_FOCUS);
996
fs->priv->old_btns = g_list_append (fs->priv->old_btns, btn);
997
gtk_tooltips_set_tip (tooltips, btn,
998
gnome_cmd_con_get_go_text (con), NULL);
1000
hbox = gtk_hbox_new (FALSE, 1);
1001
gtk_widget_ref (hbox);
1002
gtk_object_set_data_full (GTK_OBJECT (fs), "con-hbox", hbox,
1003
(GtkDestroyNotify) gtk_widget_unref);
1004
gtk_widget_show (hbox);
1007
GtkWidget *pixmap = gtk_pixmap_new (pm->pixmap, pm->mask);
1009
gtk_widget_ref (pixmap);
1010
gtk_object_set_data_full (GTK_OBJECT (fs), "con-pixmap", pixmap,
1011
(GtkDestroyNotify) gtk_widget_unref);
1012
gtk_widget_show (pixmap);
1013
gtk_box_pack_start (GTK_BOX (hbox), pixmap, TRUE, TRUE, 0);
1017
if (!gnome_cmd_data_get_device_only_icon () || !pm) {
1018
label = gtk_label_new (gnome_cmd_con_get_alias (con));
1019
gtk_widget_ref (label);
1020
gtk_object_set_data_full (GTK_OBJECT (fs), "con-label", label,
1021
(GtkDestroyNotify) gtk_widget_unref);
1022
gtk_widget_show (label);
1023
gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
1026
gtk_container_add (GTK_CONTAINER (btn), hbox);
947
static GtkTooltips *tooltips = NULL;
949
if (!gnome_cmd_data_get_conbuttons_visibility ())
952
for (l = fs->priv->old_btns; l; l = l->next)
953
gtk_object_destroy (GTK_OBJECT (l->data));
955
g_list_free (fs->priv->old_btns);
956
fs->priv->old_btns = NULL;
959
tooltips = gtk_tooltips_new ();
962
l = gnome_cmd_con_list_get_all (gnome_cmd_data_get_con_list ());
964
GtkWidget *btn, *label;
967
GnomeCmdCon *con = GNOME_CMD_CON (l->data);
969
if (!gnome_cmd_con_is_open (con) && !GNOME_CMD_IS_CON_DEVICE (con)
970
&& !GNOME_CMD_IS_CON_SMB (con)) {
974
pm = gnome_cmd_con_get_go_pixmap (con);
976
btn = create_styled_button (NULL);
977
gtk_object_set_data (GTK_OBJECT (btn), "con", con);
978
gtk_signal_connect (GTK_OBJECT (btn), "clicked", (GtkSignalFunc)on_con_btn_clicked, fs);
979
gtk_box_pack_start (GTK_BOX (fs->con_btns_hbox), btn, FALSE, FALSE, 0);
980
GTK_WIDGET_UNSET_FLAGS (btn, GTK_CAN_FOCUS);
981
fs->priv->old_btns = g_list_append (fs->priv->old_btns, btn);
982
gtk_tooltips_set_tip (tooltips, btn, gnome_cmd_con_get_go_text (con), NULL);
984
hbox = gtk_hbox_new (FALSE, 1);
985
gtk_widget_ref (hbox);
986
gtk_object_set_data_full (GTK_OBJECT (fs), "con-hbox", hbox, (GtkDestroyNotify) gtk_widget_unref);
987
gtk_widget_show (hbox);
990
GtkWidget *pixmap = gtk_pixmap_new (pm->pixmap, pm->mask);
992
gtk_widget_ref (pixmap);
993
gtk_object_set_data_full (GTK_OBJECT (fs), "con-pixmap", pixmap,
994
(GtkDestroyNotify) gtk_widget_unref);
995
gtk_widget_show (pixmap);
996
gtk_box_pack_start (GTK_BOX (hbox), pixmap, TRUE, TRUE, 0);
1000
if (!gnome_cmd_data_get_device_only_icon () || !pm) {
1001
label = gtk_label_new (gnome_cmd_con_get_alias (con));
1002
gtk_widget_ref (label);
1003
gtk_object_set_data_full (GTK_OBJECT (fs), "con-label", label,
1004
(GtkDestroyNotify) gtk_widget_unref);
1005
gtk_widget_show (label);
1006
gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
1009
gtk_container_add (GTK_CONTAINER (btn), hbox);
1034
1017
on_realize (GnomeCmdFileSelector *fs,
1037
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1039
fs->priv->realized = TRUE;
1041
create_con_buttons (fs);
1042
gnome_cmd_file_selector_update_connections (fs);
1020
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1022
fs->priv->realized = TRUE;
1024
create_con_buttons (fs);
1025
gnome_cmd_file_selector_update_connections (fs);
1047
1030
on_list_file_clicked (GnomeCmdFileList *fl, GnomeCmdFile *finfo,
1048
GdkEventButton *event, GnomeCmdFileSelector *fs)
1031
GdkEventButton *event, GnomeCmdFileSelector *fs)
1050
if (event->type == GDK_2BUTTON_PRESS) {
1051
if (event->button == 1)
1052
do_file_specific_action (fs, finfo);
1033
if (event->type == GDK_2BUTTON_PRESS) {
1034
if (event->button == 1)
1035
do_file_specific_action (fs, finfo);
1058
1041
on_list_list_clicked (GnomeCmdFileList *fl, GdkEventButton *event,
1059
GnomeCmdFileSelector *fs)
1042
GnomeCmdFileSelector *fs)
1061
if (event->type == GDK_BUTTON_PRESS) {
1062
if (event->button == 1 || event->button == 3)
1063
gnome_cmd_main_win_switch_fs (main_win, fs);
1064
else if (event->button == 2)
1065
goto_directory (fs, "..");
1044
if (event->type == GDK_BUTTON_PRESS) {
1045
if (event->button == 1 || event->button == 3)
1046
gnome_cmd_main_win_switch_fs (main_win, fs);
1047
else if (event->button == 2)
1048
goto_directory (fs, "..");
1071
1054
on_list_empty_space_clicked (GnomeCmdFileList *fl, GdkEventButton *event,
1072
GnomeCmdFileSelector *fs)
1055
GnomeCmdFileSelector *fs)
1074
if (event->type == GDK_BUTTON_PRESS) {
1075
if (event->button == 3)
1076
show_list_popup (fs);
1057
if (event->type == GDK_BUTTON_PRESS) {
1058
if (event->button == 3)
1059
show_list_popup (fs);
1082
1065
on_list_selection_changed (GnomeCmdFileList *fl, GnomeCmdFileSelector *fs)
1084
update_selected_files_label (fs);
1067
update_selected_files_label (fs);
1089
1072
on_dir_list_ok (GnomeCmdDir *dir, GList *files, GnomeCmdFileSelector *fs)
1093
g_return_if_fail (GNOME_CMD_IS_DIR (dir));
1094
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1096
DEBUG('l', "on_dir_list_ok\n");
1098
if (fs->priv->realized) {
1099
gtk_widget_set_sensitive (GTK_WIDGET (fs), TRUE);
1100
set_cursor_default_for_widget (GTK_WIDGET (fs));
1101
gtk_widget_grab_focus (GTK_WIDGET (fs->list));
1104
if (fs->priv->connected_dir != dir) {
1105
if (fs->priv->connected_dir != NULL) {
1106
gtk_signal_disconnect_by_func (
1107
GTK_OBJECT (fs->priv->connected_dir),
1108
GTK_SIGNAL_FUNC (on_dir_file_created), fs);
1109
gtk_signal_disconnect_by_func (
1110
GTK_OBJECT (fs->priv->connected_dir),
1111
GTK_SIGNAL_FUNC (on_dir_file_deleted), fs);
1112
gtk_signal_disconnect_by_func (
1113
GTK_OBJECT (fs->priv->connected_dir),
1114
GTK_SIGNAL_FUNC (on_dir_file_changed), fs);
1117
gtk_signal_connect (GTK_OBJECT (dir), "file-created",
1118
GTK_SIGNAL_FUNC (on_dir_file_created), fs);
1119
gtk_signal_connect (GTK_OBJECT (dir), "file-deleted",
1120
GTK_SIGNAL_FUNC (on_dir_file_deleted), fs);
1121
gtk_signal_connect (GTK_OBJECT (dir), "file-changed",
1122
GTK_SIGNAL_FUNC (on_dir_file_changed), fs);
1123
fs->priv->connected_dir = dir;
1126
con = gnome_cmd_file_selector_get_connection (fs);
1127
gnome_cmd_con_set_cwd (con, dir);
1129
if (fs->priv->dir_history && !fs->priv->dir_history->lock) {
1130
gchar *fpath = gnome_cmd_file_get_path (GNOME_CMD_FILE (dir));
1131
history_add (fs->priv->dir_history, fpath);
1133
update_dir_combo (fs);
1136
gtk_signal_emit (GTK_OBJECT (fs),
1137
file_selector_signals[CHANGED_DIR], dir);
1139
update_direntry (fs);
1140
update_vol_label (fs);
1142
if (fs->priv->cwd != dir) return;
1144
fs->priv->sel_first_file = FALSE;
1146
fs->priv->sel_first_file = TRUE;
1148
if (!fs->priv->active) {
1149
GTK_CLIST (fs->list)->focus_row = -1;
1150
gtk_clist_unselect_all (GTK_CLIST (fs->list));
1153
if (fs->priv->sel_first_file && fs->priv->active)
1154
gtk_clist_select_row (GTK_CLIST (fs->list), 0, 0);
1156
update_selected_files_label (fs);
1158
DEBUG('l', "returning from on_dir_list_ok\n");
1076
g_return_if_fail (GNOME_CMD_IS_DIR (dir));
1077
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1079
DEBUG('l', "on_dir_list_ok\n");
1081
if (fs->priv->realized) {
1082
gtk_widget_set_sensitive (GTK_WIDGET (fs), TRUE);
1083
set_cursor_default_for_widget (GTK_WIDGET (fs));
1084
gtk_widget_grab_focus (GTK_WIDGET (fs->list));
1087
if (fs->priv->connected_dir != dir) {
1088
if (fs->priv->connected_dir != NULL) {
1089
gtk_signal_disconnect_by_func (
1090
GTK_OBJECT (fs->priv->connected_dir),
1091
GTK_SIGNAL_FUNC (on_dir_file_created), fs);
1092
gtk_signal_disconnect_by_func (
1093
GTK_OBJECT (fs->priv->connected_dir),
1094
GTK_SIGNAL_FUNC (on_dir_file_deleted), fs);
1095
gtk_signal_disconnect_by_func (
1096
GTK_OBJECT (fs->priv->connected_dir),
1097
GTK_SIGNAL_FUNC (on_dir_file_changed), fs);
1100
gtk_signal_connect (GTK_OBJECT (dir), "file-created", GTK_SIGNAL_FUNC (on_dir_file_created), fs);
1101
gtk_signal_connect (GTK_OBJECT (dir), "file-deleted", GTK_SIGNAL_FUNC (on_dir_file_deleted), fs);
1102
gtk_signal_connect (GTK_OBJECT (dir), "file-changed", GTK_SIGNAL_FUNC (on_dir_file_changed), fs);
1103
fs->priv->connected_dir = dir;
1106
con = gnome_cmd_file_selector_get_connection (fs);
1107
gnome_cmd_con_set_cwd (con, dir);
1109
if (fs->priv->dir_history && !fs->priv->dir_history->lock) {
1110
gchar *fpath = gnome_cmd_file_get_path (GNOME_CMD_FILE (dir));
1111
history_add (fs->priv->dir_history, fpath);
1113
update_dir_combo (fs);
1116
gtk_signal_emit (GTK_OBJECT (fs),
1117
file_selector_signals[CHANGED_DIR], dir);
1119
update_direntry (fs);
1120
update_vol_label (fs);
1122
if (fs->priv->cwd != dir) return;
1124
fs->priv->sel_first_file = FALSE;
1126
fs->priv->sel_first_file = TRUE;
1128
if (!fs->priv->active) {
1129
GTK_CLIST (fs->list)->focus_row = -1;
1130
gtk_clist_unselect_all (GTK_CLIST (fs->list));
1133
if (fs->priv->sel_first_file && fs->priv->active)
1134
gtk_clist_select_row (GTK_CLIST (fs->list), 0, 0);
1136
update_selected_files_label (fs);
1138
DEBUG('l', "returning from on_dir_list_ok\n");
1162
1142
static gboolean
1163
1143
set_home_connection (GnomeCmdFileSelector *fs)
1165
g_printerr ("Setting home connection\n");
1166
gnome_cmd_file_selector_set_connection (
1168
gnome_cmd_con_list_get_home (gnome_cmd_data_get_con_list ()),
1145
g_printerr ("Setting home connection\n");
1146
gnome_cmd_file_selector_set_connection (
1148
gnome_cmd_con_list_get_home (gnome_cmd_data_get_con_list ()),
1176
1156
on_dir_list_failed (GnomeCmdDir *dir, GnomeVFSResult result, GnomeCmdFileSelector *fs)
1178
DEBUG('l', "on_dir_list_failed\n");
1180
if (result != GNOME_VFS_OK) {
1181
gchar *msg = g_strdup_printf (
1182
"List failed: %s\n", gnome_vfs_result_to_string (result));
1183
create_error_dialog (msg);
1187
gtk_signal_disconnect_by_data (GTK_OBJECT (fs->priv->cwd), fs);
1188
fs->priv->connected_dir = NULL;
1189
gnome_cmd_dir_unref (fs->priv->cwd);
1190
set_cursor_default_for_widget (GTK_WIDGET (fs));
1191
gtk_widget_set_sensitive (GTK_WIDGET (fs), TRUE);
1194
&& fs->priv->con == gnome_cmd_dir_get_connection (fs->priv->lwd)) {
1195
fs->priv->cwd = fs->priv->lwd;
1196
gtk_signal_connect (GTK_OBJECT (fs->priv->cwd), "list-ok",
1197
GTK_SIGNAL_FUNC (on_dir_list_ok), fs);
1198
gtk_signal_connect (GTK_OBJECT (fs->priv->cwd), "list-failed",
1199
GTK_SIGNAL_FUNC (on_dir_list_failed), fs);
1200
fs->priv->lwd = NULL;
1203
g_timeout_add (1, (GtkFunction)set_home_connection, fs);
1158
DEBUG('l', "on_dir_list_failed\n");
1160
if (result != GNOME_VFS_OK) {
1161
gchar *msg = g_strdup_printf (
1162
"List failed: %s\n", gnome_vfs_result_to_string (result));
1163
create_error_dialog (msg);
1167
gtk_signal_disconnect_by_data (GTK_OBJECT (fs->priv->cwd), fs);
1168
fs->priv->connected_dir = NULL;
1169
gnome_cmd_dir_unref (fs->priv->cwd);
1170
set_cursor_default_for_widget (GTK_WIDGET (fs));
1171
gtk_widget_set_sensitive (GTK_WIDGET (fs), TRUE);
1174
&& fs->priv->con == gnome_cmd_dir_get_connection (fs->priv->lwd)) {
1175
fs->priv->cwd = fs->priv->lwd;
1176
gtk_signal_connect (GTK_OBJECT (fs->priv->cwd), "list-ok",
1177
GTK_SIGNAL_FUNC (on_dir_list_ok), fs);
1178
gtk_signal_connect (GTK_OBJECT (fs->priv->cwd), "list-failed",
1179
GTK_SIGNAL_FUNC (on_dir_list_failed), fs);
1180
fs->priv->lwd = NULL;
1183
g_timeout_add (1, (GtkFunction)set_home_connection, fs);
1287
1258
destroy (GtkObject *object)
1289
GnomeCmdFileSelector *fs;
1291
fs = GNOME_CMD_FILE_SELECTOR (object);
1293
gnome_cmd_dir_unref (fs->priv->cwd);
1296
if (GTK_OBJECT_CLASS (parent_class)->destroy)
1297
(*GTK_OBJECT_CLASS (parent_class)->destroy) (object);
1260
GnomeCmdFileSelector *fs;
1262
fs = GNOME_CMD_FILE_SELECTOR (object);
1264
gnome_cmd_dir_unref (fs->priv->cwd);
1267
if (GTK_OBJECT_CLASS (parent_class)->destroy)
1268
(*GTK_OBJECT_CLASS (parent_class)->destroy) (object);
1301
1272
map (GtkWidget *widget)
1303
if (GTK_WIDGET_CLASS (parent_class)->map != NULL)
1304
GTK_WIDGET_CLASS (parent_class)->map (widget);
1274
if (GTK_WIDGET_CLASS (parent_class)->map != NULL)
1275
GTK_WIDGET_CLASS (parent_class)->map (widget);
1309
1280
class_init (GnomeCmdFileSelectorClass *class)
1311
GtkObjectClass *object_class;
1312
GtkWidgetClass *widget_class;
1314
object_class = GTK_OBJECT_CLASS (class);
1315
widget_class = GTK_WIDGET_CLASS (class);
1316
parent_class = gtk_type_class (gtk_vbox_get_type ());
1318
file_selector_signals[CHANGED_DIR] =
1319
gtk_signal_new ("changed_dir",
1321
G_OBJECT_CLASS_TYPE (object_class),
1322
GTK_SIGNAL_OFFSET (GnomeCmdFileSelectorClass, changed_dir),
1323
gtk_marshal_NONE__POINTER,
1325
1, GTK_TYPE_POINTER);
1327
object_class->destroy = destroy;
1328
widget_class->map = map;
1329
class->changed_dir = NULL;
1282
GtkObjectClass *object_class;
1283
GtkWidgetClass *widget_class;
1285
object_class = GTK_OBJECT_CLASS (class);
1286
widget_class = GTK_WIDGET_CLASS (class);
1287
parent_class = gtk_type_class (gtk_vbox_get_type ());
1289
file_selector_signals[CHANGED_DIR] =
1290
gtk_signal_new ("changed_dir",
1292
G_OBJECT_CLASS_TYPE (object_class),
1293
GTK_SIGNAL_OFFSET (GnomeCmdFileSelectorClass, changed_dir),
1294
gtk_marshal_NONE__POINTER,
1296
1, GTK_TYPE_POINTER);
1298
object_class->destroy = destroy;
1299
widget_class->map = map;
1300
class->changed_dir = NULL;
1333
1304
init (GnomeCmdFileSelector *fs)
1338
fs->priv = g_new0 (GnomeCmdFileSelectorPrivate, 1);
1339
fs->priv->realized = FALSE;
1340
fs->priv->cwd = NULL;
1341
fs->priv->lwd = NULL;
1342
fs->priv->connected_dir = NULL;
1343
fs->priv->old_btns = NULL;
1344
fs->priv->selection_lock = FALSE;
1345
fs->priv->sel_first_file = TRUE;
1346
fs->priv->dir_history = NULL;
1347
fs->priv->active = FALSE;
1348
fs->priv->sym_file = NULL;
1349
fs->priv->con = NULL;
1350
fs->priv->con_open_dialog = NULL;
1351
fs->priv->con_open_dialog_label = NULL;
1352
fs->priv->con_opening = NULL;
1354
vbox = GTK_VBOX (fs);
1356
/* create the box used for packing the dir_combo and buttons */
1357
gnome_cmd_file_selector_update_conbuttons_visibility (fs);
1359
/* create the box used for packing the con_combo and information */
1360
fs->con_hbox = create_hbox (GTK_WIDGET (fs), FALSE, 2);
1362
/* create the list */
1363
fs->list_widget = gnome_cmd_file_list_new ();
1364
gtk_widget_ref (fs->list_widget);
1365
gtk_object_set_data_full (GTK_OBJECT (fs), "list_widget", fs->list_widget,
1366
(GtkDestroyNotify) gtk_widget_unref);
1367
fs->list = GNOME_CMD_FILE_LIST (fs->list_widget);
1368
gnome_cmd_file_list_show_column (fs->list, FILE_LIST_COLUMN_DIR, FALSE);
1370
/* create the connection combo */
1371
fs->con_combo = gnome_cmd_combo_new (2, 1, NULL);
1372
gtk_widget_ref (fs->con_combo);
1373
gtk_object_set_data_full (GTK_OBJECT (fs),
1374
"con_combo", fs->con_combo,
1375
(GtkDestroyNotify) gtk_widget_unref);
1376
gtk_clist_set_row_height (GTK_CLIST (GNOME_CMD_COMBO (fs->con_combo)->list), 20);
1377
gtk_entry_set_editable (GTK_ENTRY (GNOME_CMD_COMBO (fs->con_combo)->entry), FALSE);
1378
gtk_clist_set_column_width (
1379
GTK_CLIST (GNOME_CMD_COMBO (fs->con_combo)->list), 0, 20);
1380
gtk_clist_set_column_width (
1381
GTK_CLIST (GNOME_CMD_COMBO (fs->con_combo)->list), 1, 60);
1382
GTK_WIDGET_UNSET_FLAGS (GNOME_CMD_COMBO (fs->con_combo)->button, GTK_CAN_FOCUS);
1384
/* Create the free space on volume label */
1385
fs->vol_label = gtk_label_new ("");
1386
gtk_widget_ref (fs->vol_label);
1387
gtk_object_set_data_full (GTK_OBJECT (fs), "vol_label", fs->vol_label,
1388
(GtkDestroyNotify) gtk_widget_unref);
1389
gtk_misc_set_alignment (GTK_MISC (fs->vol_label), 1, 0.5);
1391
/* create the root button */
1392
fs->root_btn = create_styled_pixmap_button (
1393
NULL, IMAGE_get_gnome_cmd_pixmap (PIXMAP_ROOT_DIR));
1394
gtk_object_set_data_full (GTK_OBJECT (fs),
1395
"root_btn", fs->root_btn,
1396
(GtkDestroyNotify) gtk_widget_unref);
1397
GTK_WIDGET_UNSET_FLAGS (fs->root_btn, GTK_CAN_FOCUS);
1399
/* create the parent dir button */
1400
fs->parent_btn = create_styled_pixmap_button (
1401
NULL, IMAGE_get_gnome_cmd_pixmap (PIXMAP_PARENT_DIR));
1402
gtk_object_set_data_full (GTK_OBJECT (fs),
1403
"parent_btn", fs->parent_btn,
1404
(GtkDestroyNotify) gtk_widget_unref);
1405
GTK_WIDGET_UNSET_FLAGS (fs->parent_btn, GTK_CAN_FOCUS);
1407
/* create the directory indicator */
1408
fs->dir_indicator = gnome_cmd_dir_indicator_new (fs);
1409
gtk_widget_ref (fs->dir_indicator);
1410
gtk_object_set_data_full (GTK_OBJECT (fs),
1411
"dir_indicator", fs->dir_indicator,
1412
(GtkDestroyNotify) gtk_widget_unref);
1414
/* create the scrollwindow that we'll place the list in */
1415
fs->scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
1416
gtk_widget_ref (fs->scrolledwindow);
1417
gtk_object_set_data_full (GTK_OBJECT (fs),
1418
"scrolledwindow", fs->scrolledwindow,
1419
(GtkDestroyNotify) gtk_widget_unref);
1420
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (fs->scrolledwindow),
1421
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
1423
/* create the info label */
1424
fs->info_label = gtk_label_new ("not initialized");
1425
gtk_widget_ref (fs->info_label);
1426
gtk_object_set_data_full (GTK_OBJECT (fs), "infolabel", fs->info_label,
1427
(GtkDestroyNotify) gtk_widget_unref);
1428
gtk_misc_set_alignment (GTK_MISC (fs->info_label), 0.0f, 0.5f);
1430
/* pack the widgets */
1431
gtk_box_pack_start (GTK_BOX (fs), fs->con_hbox, FALSE, FALSE, 0);
1432
gtk_box_pack_start (GTK_BOX (vbox), fs->dir_indicator, FALSE, FALSE, 0);
1433
gtk_container_add (GTK_CONTAINER (fs->scrolledwindow), fs->list_widget);
1434
gtk_box_pack_start (GTK_BOX (vbox), fs->scrolledwindow, TRUE, TRUE, 0);
1435
padding = create_hbox (GTK_WIDGET (fs), FALSE, 6);
1436
gtk_box_pack_start (GTK_BOX (vbox), padding, FALSE, TRUE, 0);
1437
gtk_box_pack_start (GTK_BOX (padding), fs->info_label, FALSE, TRUE, 6);
1438
gtk_box_pack_start (GTK_BOX (fs->con_hbox), fs->con_combo, FALSE, FALSE, 0);
1439
gtk_box_pack_start (GTK_BOX (fs->con_hbox), fs->vol_label, TRUE, TRUE, 0);
1440
gtk_box_pack_start (GTK_BOX (fs->con_hbox), fs->root_btn, FALSE, FALSE, 0);
1441
gtk_box_pack_start (GTK_BOX (fs->con_hbox), fs->parent_btn, FALSE, FALSE, 0);
1444
/* initialize dnd */
1447
/* connect signals */
1448
gtk_signal_connect (GTK_OBJECT (fs), "realize",
1449
GTK_SIGNAL_FUNC (on_realize), fs);
1451
gtk_signal_connect (GTK_OBJECT (fs->con_combo), "item-selected",
1452
GTK_SIGNAL_FUNC (on_con_combo_item_selected), fs);
1453
gtk_signal_connect (GTK_OBJECT (fs->con_combo), "popwin-hidden",
1454
GTK_SIGNAL_FUNC (on_combo_popwin_hidden), fs);
1456
gtk_signal_connect (GTK_OBJECT (fs->list), "file-clicked",
1457
GTK_SIGNAL_FUNC (on_list_file_clicked), fs);
1458
gtk_signal_connect (GTK_OBJECT (fs->list), "list-clicked",
1459
GTK_SIGNAL_FUNC (on_list_list_clicked), fs);
1460
gtk_signal_connect (GTK_OBJECT (fs->list), "empty-space-clicked",
1461
GTK_SIGNAL_FUNC (on_list_empty_space_clicked), fs);
1462
gtk_signal_connect (GTK_OBJECT (fs->list), "selection_changed",
1463
GTK_SIGNAL_FUNC (on_list_selection_changed), fs);
1465
gtk_signal_connect (GTK_OBJECT (fs->list), "key-press-event",
1466
GTK_SIGNAL_FUNC (on_list_key_pressed), fs);
1467
gtk_signal_connect (GTK_OBJECT (fs->list), "key-press-event",
1468
GTK_SIGNAL_FUNC (on_list_key_pressed_private), fs);
1470
gtk_signal_connect (GTK_OBJECT (fs->root_btn), "clicked",
1471
GTK_SIGNAL_FUNC (on_root_btn_clicked), fs);
1472
gtk_signal_connect (GTK_OBJECT (fs->parent_btn), "clicked",
1473
GTK_SIGNAL_FUNC (on_parent_btn_clicked), fs);
1475
gtk_signal_connect (GTK_OBJECT (gnome_cmd_data_get_con_list ()), "list-changed",
1476
GTK_SIGNAL_FUNC (on_con_list_list_changed), fs);
1479
/* show the widgets */
1480
gtk_widget_show (GTK_WIDGET (vbox));
1481
gtk_widget_show (fs->con_hbox);
1482
gtk_widget_show (fs->dir_indicator);
1483
gtk_widget_show (fs->root_btn);
1484
gtk_widget_show (fs->parent_btn);
1485
gtk_widget_show (fs->scrolledwindow);
1486
gtk_widget_show (fs->vol_label);
1487
gtk_widget_show (fs->con_combo);
1488
gtk_widget_show (fs->list_widget);
1489
gtk_widget_show (fs->info_label);
1491
gnome_cmd_file_selector_update_style (fs);
1309
fs->priv = g_new0 (GnomeCmdFileSelectorPrivate, 1);
1310
fs->priv->realized = FALSE;
1311
fs->priv->cwd = NULL;
1312
fs->priv->lwd = NULL;
1313
fs->priv->connected_dir = NULL;
1314
fs->priv->old_btns = NULL;
1315
fs->priv->selection_lock = FALSE;
1316
fs->priv->sel_first_file = TRUE;
1317
fs->priv->dir_history = NULL;
1318
fs->priv->active = FALSE;
1319
fs->priv->sym_file = NULL;
1320
fs->priv->con = NULL;
1321
fs->priv->con_open_dialog = NULL;
1322
fs->priv->con_open_dialog_label = NULL;
1323
fs->priv->con_opening = NULL;
1325
vbox = GTK_VBOX (fs);
1327
/* create the box used for packing the dir_combo and buttons */
1328
gnome_cmd_file_selector_update_conbuttons_visibility (fs);
1330
/* create the box used for packing the con_combo and information */
1331
fs->con_hbox = create_hbox (GTK_WIDGET (fs), FALSE, 2);
1333
/* create the list */
1334
fs->list_widget = gnome_cmd_file_list_new ();
1335
gtk_widget_ref (fs->list_widget);
1336
gtk_object_set_data_full (GTK_OBJECT (fs), "list_widget", fs->list_widget,
1337
(GtkDestroyNotify) gtk_widget_unref);
1338
fs->list = GNOME_CMD_FILE_LIST (fs->list_widget);
1339
gnome_cmd_file_list_show_column (fs->list, FILE_LIST_COLUMN_DIR, FALSE);
1341
/* create the connection combo */
1342
fs->con_combo = gnome_cmd_combo_new (2, 1, NULL);
1343
gtk_widget_ref (fs->con_combo);
1344
gtk_object_set_data_full (GTK_OBJECT (fs),
1345
"con_combo", fs->con_combo,
1346
(GtkDestroyNotify) gtk_widget_unref);
1347
gtk_clist_set_row_height (GTK_CLIST (GNOME_CMD_COMBO (fs->con_combo)->list), 20);
1348
gtk_entry_set_editable (GTK_ENTRY (GNOME_CMD_COMBO (fs->con_combo)->entry), FALSE);
1349
gtk_clist_set_column_width (
1350
GTK_CLIST (GNOME_CMD_COMBO (fs->con_combo)->list), 0, 20);
1351
gtk_clist_set_column_width (
1352
GTK_CLIST (GNOME_CMD_COMBO (fs->con_combo)->list), 1, 60);
1353
GTK_WIDGET_UNSET_FLAGS (GNOME_CMD_COMBO (fs->con_combo)->button, GTK_CAN_FOCUS);
1355
/* Create the free space on volume label */
1356
fs->vol_label = gtk_label_new ("");
1357
gtk_widget_ref (fs->vol_label);
1358
gtk_object_set_data_full (GTK_OBJECT (fs), "vol_label", fs->vol_label,
1359
(GtkDestroyNotify) gtk_widget_unref);
1360
gtk_misc_set_alignment (GTK_MISC (fs->vol_label), 1, 0.5);
1362
/* create the root button */
1363
fs->root_btn = create_styled_pixmap_button (
1364
NULL, IMAGE_get_gnome_cmd_pixmap (PIXMAP_ROOT_DIR));
1365
gtk_object_set_data_full (GTK_OBJECT (fs),
1366
"root_btn", fs->root_btn,
1367
(GtkDestroyNotify) gtk_widget_unref);
1368
GTK_WIDGET_UNSET_FLAGS (fs->root_btn, GTK_CAN_FOCUS);
1370
/* create the directory indicator */
1371
fs->dir_indicator = gnome_cmd_dir_indicator_new (fs);
1372
gtk_widget_ref (fs->dir_indicator);
1373
gtk_object_set_data_full (GTK_OBJECT (fs),
1374
"dir_indicator", fs->dir_indicator,
1375
(GtkDestroyNotify) gtk_widget_unref);
1377
/* create the scrollwindow that we'll place the list in */
1378
fs->scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
1379
gtk_widget_ref (fs->scrolledwindow);
1380
gtk_object_set_data_full (GTK_OBJECT (fs),
1381
"scrolledwindow", fs->scrolledwindow,
1382
(GtkDestroyNotify) gtk_widget_unref);
1383
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (fs->scrolledwindow),
1384
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
1386
/* create the info label */
1387
fs->info_label = gtk_label_new ("not initialized");
1388
gtk_widget_ref (fs->info_label);
1389
gtk_object_set_data_full (GTK_OBJECT (fs), "infolabel", fs->info_label,
1390
(GtkDestroyNotify) gtk_widget_unref);
1391
gtk_misc_set_alignment (GTK_MISC (fs->info_label), 0.0f, 0.5f);
1393
/* pack the widgets */
1394
gtk_box_pack_start (GTK_BOX (fs), fs->con_hbox, FALSE, FALSE, 0);
1395
gtk_box_pack_start (GTK_BOX (vbox), fs->dir_indicator, FALSE, FALSE, 0);
1396
gtk_container_add (GTK_CONTAINER (fs->scrolledwindow), fs->list_widget);
1397
gtk_box_pack_start (GTK_BOX (vbox), fs->scrolledwindow, TRUE, TRUE, 0);
1398
padding = create_hbox (GTK_WIDGET (fs), FALSE, 6);
1399
gtk_box_pack_start (GTK_BOX (vbox), padding, FALSE, TRUE, 0);
1400
gtk_box_pack_start (GTK_BOX (padding), fs->info_label, FALSE, TRUE, 6);
1401
gtk_box_pack_start (GTK_BOX (fs->con_hbox), fs->con_combo, FALSE, FALSE, 0);
1402
gtk_box_pack_start (GTK_BOX (fs->con_hbox), fs->vol_label, TRUE, TRUE, 0);
1403
gtk_box_pack_start (GTK_BOX (fs->con_hbox), fs->root_btn, FALSE, FALSE, 0);
1406
/* initialize dnd */
1409
/* connect signals */
1410
gtk_signal_connect (GTK_OBJECT (fs), "realize",
1411
GTK_SIGNAL_FUNC (on_realize), fs);
1413
gtk_signal_connect (GTK_OBJECT (fs->con_combo), "item-selected",
1414
GTK_SIGNAL_FUNC (on_con_combo_item_selected), fs);
1415
gtk_signal_connect (GTK_OBJECT (fs->con_combo), "popwin-hidden",
1416
GTK_SIGNAL_FUNC (on_combo_popwin_hidden), fs);
1418
gtk_signal_connect (GTK_OBJECT (fs->list), "file-clicked",
1419
GTK_SIGNAL_FUNC (on_list_file_clicked), fs);
1420
gtk_signal_connect (GTK_OBJECT (fs->list), "list-clicked",
1421
GTK_SIGNAL_FUNC (on_list_list_clicked), fs);
1422
gtk_signal_connect (GTK_OBJECT (fs->list), "empty-space-clicked",
1423
GTK_SIGNAL_FUNC (on_list_empty_space_clicked), fs);
1424
gtk_signal_connect (GTK_OBJECT (fs->list), "selection_changed",
1425
GTK_SIGNAL_FUNC (on_list_selection_changed), fs);
1427
gtk_signal_connect (GTK_OBJECT (fs->list), "key-press-event",
1428
GTK_SIGNAL_FUNC (on_list_key_pressed), fs);
1429
gtk_signal_connect (GTK_OBJECT (fs->list), "key-press-event",
1430
GTK_SIGNAL_FUNC (on_list_key_pressed_private), fs);
1432
gtk_signal_connect (GTK_OBJECT (fs->root_btn), "clicked",
1433
GTK_SIGNAL_FUNC (on_root_btn_clicked), fs);
1435
gtk_signal_connect (GTK_OBJECT (gnome_cmd_data_get_con_list ()), "list-changed",
1436
GTK_SIGNAL_FUNC (on_con_list_list_changed), fs);
1439
/* show the widgets */
1440
gtk_widget_show (GTK_WIDGET (vbox));
1441
gtk_widget_show (fs->con_hbox);
1442
gtk_widget_show (fs->dir_indicator);
1443
gtk_widget_show (fs->root_btn);
1444
gtk_widget_show (fs->scrolledwindow);
1445
gtk_widget_show (fs->vol_label);
1446
gtk_widget_show (fs->con_combo);
1447
gtk_widget_show (fs->list_widget);
1448
gtk_widget_show (fs->info_label);
1450
gnome_cmd_file_selector_update_style (fs);
1505
1464
gnome_cmd_file_selector_get_type (void)
1507
static GtkType fs_type = 0;
1511
GtkTypeInfo fs_info =
1513
"GnomeCmdFileSelector",
1514
sizeof (GnomeCmdFileSelector),
1515
sizeof (GnomeCmdFileSelectorClass),
1516
(GtkClassInitFunc) class_init,
1517
(GtkObjectInitFunc) init,
1518
/* reserved_1 */ NULL,
1519
/* reserved_2 */ NULL,
1520
(GtkClassInitFunc) NULL
1523
fs_type = gtk_type_unique (gtk_vbox_get_type (), &fs_info);
1466
static GtkType fs_type = 0;
1470
GtkTypeInfo fs_info =
1472
"GnomeCmdFileSelector",
1473
sizeof (GnomeCmdFileSelector),
1474
sizeof (GnomeCmdFileSelectorClass),
1475
(GtkClassInitFunc) class_init,
1476
(GtkObjectInitFunc) init,
1477
/* reserved_1 */ NULL,
1478
/* reserved_2 */ NULL,
1479
(GtkClassInitFunc) NULL
1482
fs_type = gtk_type_unique (gtk_vbox_get_type (), &fs_info);
1530
1489
gnome_cmd_file_selector_new (void)
1532
GnomeCmdFileSelector *fs;
1534
fs = gtk_type_new (gnome_cmd_file_selector_get_type ());
1536
return GTK_WIDGET (fs);
1491
GnomeCmdFileSelector *fs;
1493
fs = gtk_type_new (gnome_cmd_file_selector_get_type ());
1495
return GTK_WIDGET (fs);
1541
1500
gnome_cmd_file_selector_get_directory (GnomeCmdFileSelector *fs)
1543
g_return_val_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs), NULL);
1545
return fs->priv->cwd;
1502
g_return_val_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs), NULL);
1504
return fs->priv->cwd;
1550
1509
gnome_cmd_file_selector_reload (GnomeCmdFileSelector *fs)
1554
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1556
gnome_cmd_file_list_unselect_all (fs->list);
1558
dir = gnome_cmd_file_selector_get_directory (fs);
1559
g_return_if_fail (GNOME_CMD_IS_DIR (dir));
1561
gnome_cmd_dir_relist_files (
1562
dir, gnome_cmd_con_needs_list_visprog (fs->priv->con));
1513
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1515
gnome_cmd_file_list_unselect_all (fs->list);
1517
dir = gnome_cmd_file_selector_get_directory (fs);
1518
g_return_if_fail (GNOME_CMD_IS_DIR (dir));
1520
gnome_cmd_dir_relist_files (
1521
dir, gnome_cmd_con_needs_list_visprog (fs->priv->con));
1567
1526
gnome_cmd_file_selector_start_editor (GnomeCmdFileSelector *fs)
1573
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1574
g_return_if_fail (GNOME_CMD_IS_DIR (fs->priv->cwd));
1575
g_return_if_fail (GNOME_CMD_IS_CON (fs->priv->con));
1577
if (!gnome_cmd_con_is_local (fs->priv->con))
1580
/* create a command with an empty argument to the editor */
1581
cmd = g_strdup (gnome_cmd_data_get_editor ());
1583
for ( i=0 ; i<l ; i++ ) {
1584
if (cmd[i] == ' ') {
1590
dpath = gnome_cmd_file_get_real_path (GNOME_CMD_FILE (fs->priv->cwd));
1591
run_command_indir (cmd, dpath, FALSE);
1532
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1533
g_return_if_fail (GNOME_CMD_IS_DIR (fs->priv->cwd));
1534
g_return_if_fail (GNOME_CMD_IS_CON (fs->priv->con));
1536
if (!gnome_cmd_con_is_local (fs->priv->con))
1539
/* create a command with an empty argument to the editor */
1540
cmd = g_strdup (gnome_cmd_data_get_editor ());
1542
for ( i=0 ; i<l ; i++ ) {
1543
if (cmd[i] == ' ') {
1549
dpath = gnome_cmd_file_get_real_path (GNOME_CMD_FILE (fs->priv->cwd));
1550
run_command_indir (cmd, dpath, FALSE);
1556
gnome_cmd_file_selector_first (GnomeCmdFileSelector *fs)
1558
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1559
if (!fs->priv->dir_history) return;
1561
if (history_can_back (fs->priv->dir_history)) {
1562
fs->priv->dir_history->lock = TRUE;
1563
goto_directory (fs, history_first (fs->priv->dir_history));
1564
fs->priv->dir_history->lock = FALSE;
1597
1570
gnome_cmd_file_selector_back (GnomeCmdFileSelector *fs)
1599
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1600
if (!fs->priv->dir_history) return;
1602
if (history_can_back (fs->priv->dir_history)) {
1603
fs->priv->dir_history->lock = TRUE;
1604
goto_directory (fs, history_back (fs->priv->dir_history));
1605
fs->priv->dir_history->lock = FALSE;
1572
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1573
if (!fs->priv->dir_history) return;
1575
if (history_can_back (fs->priv->dir_history)) {
1576
fs->priv->dir_history->lock = TRUE;
1577
goto_directory (fs, history_back (fs->priv->dir_history));
1578
fs->priv->dir_history->lock = FALSE;
1611
1584
gnome_cmd_file_selector_forward (GnomeCmdFileSelector *fs)
1613
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1614
if (!fs->priv->dir_history) return;
1616
if (history_can_forward (fs->priv->dir_history)) {
1617
fs->priv->dir_history->lock = TRUE;
1618
goto_directory (fs, history_forward (fs->priv->dir_history));
1619
fs->priv->dir_history->lock = FALSE;
1586
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1587
if (!fs->priv->dir_history) return;
1589
if (history_can_forward (fs->priv->dir_history)) {
1590
fs->priv->dir_history->lock = TRUE;
1591
goto_directory (fs, history_forward (fs->priv->dir_history));
1592
fs->priv->dir_history->lock = FALSE;
1598
gnome_cmd_file_selector_last (GnomeCmdFileSelector *fs)
1600
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1601
if (!fs->priv->dir_history) return;
1603
if (history_can_forward (fs->priv->dir_history)) {
1604
fs->priv->dir_history->lock = TRUE;
1605
goto_directory (fs, history_last (fs->priv->dir_history));
1606
fs->priv->dir_history->lock = FALSE;
1625
1612
gnome_cmd_file_selector_can_back (GnomeCmdFileSelector *fs)
1627
g_return_val_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs), FALSE);
1628
if (!fs->priv->dir_history) return FALSE;
1630
return history_can_back (fs->priv->dir_history);
1614
g_return_val_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs), FALSE);
1615
if (!fs->priv->dir_history) return FALSE;
1617
return history_can_back (fs->priv->dir_history);
1635
1622
gnome_cmd_file_selector_can_forward (GnomeCmdFileSelector *fs)
1637
g_return_val_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs), FALSE);
1638
if (!fs->priv->dir_history) return FALSE;
1624
g_return_val_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs), FALSE);
1625
if (!fs->priv->dir_history) return FALSE;
1640
return history_can_forward (fs->priv->dir_history);
1627
return history_can_forward (fs->priv->dir_history);
1645
1632
gnome_cmd_file_selector_set_directory (GnomeCmdFileSelector *fs, GnomeCmdDir *dir)
1647
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1648
g_return_if_fail (GNOME_CMD_IS_DIR (dir));
1650
if (fs->priv->cwd == dir)
1653
gnome_cmd_dir_ref (dir);
1655
if (fs->priv->lwd && fs->priv->lwd != dir) {
1656
gnome_cmd_dir_unref (fs->priv->lwd);
1659
if (fs->priv->cwd) {
1660
gnome_cmd_dir_cancel_monitoring (fs->priv->cwd);
1661
fs->priv->lwd = fs->priv->cwd;
1662
gtk_signal_disconnect_by_data (GTK_OBJECT (fs->priv->lwd), fs);
1663
fs->priv->connected_dir = NULL;
1664
fs->priv->lwd->voffset = gnome_cmd_clist_get_voffset (GNOME_CMD_CLIST (fs->list));
1667
fs->priv->cwd = dir;
1669
if (fs->priv->realized) {
1670
gtk_widget_set_sensitive (GTK_WIDGET (fs), FALSE);
1671
set_cursor_busy_for_widget (GTK_WIDGET (fs));
1674
gtk_signal_connect (GTK_OBJECT (dir), "list-ok",
1675
GTK_SIGNAL_FUNC (on_dir_list_ok), fs);
1676
gtk_signal_connect (GTK_OBJECT (dir), "list-failed",
1677
GTK_SIGNAL_FUNC (on_dir_list_failed), fs);
1679
gnome_cmd_dir_list_files (
1680
dir, gnome_cmd_con_needs_list_visprog (fs->priv->con));
1681
gnome_cmd_dir_start_monitoring (dir);
1634
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1635
g_return_if_fail (GNOME_CMD_IS_DIR (dir));
1637
if (fs->priv->cwd == dir)
1640
gnome_cmd_dir_ref (dir);
1642
if (fs->priv->lwd && fs->priv->lwd != dir) {
1643
gnome_cmd_dir_unref (fs->priv->lwd);
1646
if (fs->priv->cwd) {
1647
gnome_cmd_dir_cancel_monitoring (fs->priv->cwd);
1648
fs->priv->lwd = fs->priv->cwd;
1649
gtk_signal_disconnect_by_data (GTK_OBJECT (fs->priv->lwd), fs);
1650
fs->priv->connected_dir = NULL;
1651
fs->priv->lwd->voffset = gnome_cmd_clist_get_voffset (GNOME_CMD_CLIST (fs->list));
1654
fs->priv->cwd = dir;
1656
if (fs->priv->realized) {
1657
gtk_widget_set_sensitive (GTK_WIDGET (fs), FALSE);
1658
set_cursor_busy_for_widget (GTK_WIDGET (fs));
1661
gtk_signal_connect (GTK_OBJECT (dir), "list-ok",
1662
GTK_SIGNAL_FUNC (on_dir_list_ok), fs);
1663
gtk_signal_connect (GTK_OBJECT (dir), "list-failed",
1664
GTK_SIGNAL_FUNC (on_dir_list_failed), fs);
1666
gnome_cmd_dir_list_files (
1667
dir, gnome_cmd_con_needs_list_visprog (fs->priv->con));
1668
gnome_cmd_dir_start_monitoring (dir);
1686
1673
gnome_cmd_file_selector_goto_directory (GnomeCmdFileSelector *fs,
1689
goto_directory (fs, dir);
1676
goto_directory (fs, dir);
1694
1681
gnome_cmd_file_selector_set_active (GnomeCmdFileSelector *fs,
1697
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1699
fs->priv->active = value;
1702
gtk_widget_grab_focus (fs->list_widget);
1703
gnome_cmd_file_list_select_row (
1704
fs->list, GTK_CLIST (fs->list)->focus_row);
1707
gtk_clist_unselect_all (GTK_CLIST (fs->list));
1709
gnome_cmd_dir_indicator_set_active (
1710
GNOME_CMD_DIR_INDICATOR (fs->dir_indicator), value);
1684
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1686
fs->priv->active = value;
1689
gtk_widget_grab_focus (fs->list_widget);
1690
gnome_cmd_file_list_select_row (
1691
fs->list, GTK_CLIST (fs->list)->focus_row);
1694
gtk_clist_unselect_all (GTK_CLIST (fs->list));
1696
gnome_cmd_dir_indicator_set_active (
1697
GNOME_CMD_DIR_INDICATOR (fs->dir_indicator), value);
1715
1702
on_con_open_cancel (GtkButton *button, GnomeCmdFileSelector *fs)
1717
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1718
g_return_if_fail (fs->priv->con_opening != NULL);
1719
g_return_if_fail (fs->priv->con_opening->state == CON_STATE_OPENING);
1721
DEBUG('m', "on_con_open_cancel\n");
1722
gnome_cmd_con_cancel_open (fs->priv->con_opening);
1724
gtk_widget_destroy (fs->priv->con_open_dialog);
1725
fs->priv->con_open_dialog = NULL;
1726
fs->priv->con_opening = NULL;
1704
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1705
g_return_if_fail (fs->priv->con_opening != NULL);
1706
g_return_if_fail (fs->priv->con_opening->state == CON_STATE_OPENING);
1708
DEBUG('m', "on_con_open_cancel\n");
1709
gnome_cmd_con_cancel_open (fs->priv->con_opening);
1711
gtk_widget_destroy (fs->priv->con_open_dialog);
1712
fs->priv->con_open_dialog = NULL;
1713
fs->priv->con_opening = NULL;
1730
1717
static gboolean
1731
1718
update_con_open_progress (GnomeCmdFileSelector *fs)
1735
if (!fs->priv->con_open_dialog)
1738
msg = gnome_cmd_con_get_open_msg (fs->priv->con_opening);
1739
gtk_label_set_text (GTK_LABEL (fs->priv->con_open_dialog_label), msg);
1740
progress_bar_update (fs->priv->con_open_dialog_pbar, FS_PBAR_MAX);
1722
if (!fs->priv->con_open_dialog)
1725
msg = gnome_cmd_con_get_open_msg (fs->priv->con_opening);
1726
gtk_label_set_text (GTK_LABEL (fs->priv->con_open_dialog_label), msg);
1727
progress_bar_update (fs->priv->con_open_dialog_pbar, FS_PBAR_MAX);
1747
1734
on_con_open_done (GnomeCmdCon *con, GnomeCmdFileSelector *fs)
1749
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1750
g_return_if_fail (fs->priv->con_opening != NULL);
1751
g_return_if_fail (fs->priv->con_opening == con);
1752
g_return_if_fail (fs->priv->con_open_dialog != NULL);
1754
DEBUG('m', "on_con_open_done\n");
1755
gtk_signal_disconnect_by_data (GTK_OBJECT (con), fs);
1757
set_connection (fs, con, NULL);
1759
gtk_widget_destroy (fs->priv->con_open_dialog);
1760
fs->priv->con_open_dialog = NULL;
1761
fs->priv->con_opening = NULL;
1736
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1737
g_return_if_fail (fs->priv->con_opening != NULL);
1738
g_return_if_fail (fs->priv->con_opening == con);
1739
g_return_if_fail (fs->priv->con_open_dialog != NULL);
1741
DEBUG('m', "on_con_open_done\n");
1742
gtk_signal_disconnect_by_data (GTK_OBJECT (con), fs);
1744
set_connection (fs, con, NULL);
1746
gtk_widget_destroy (fs->priv->con_open_dialog);
1747
fs->priv->con_open_dialog = NULL;
1748
fs->priv->con_opening = NULL;
1766
1753
on_con_open_failed (GnomeCmdCon *con, const gchar *emsg, GnomeVFSResult result,
1767
GnomeCmdFileSelector *fs)
1754
GnomeCmdFileSelector *fs)
1771
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1772
g_return_if_fail (fs->priv->con_opening != NULL);
1773
g_return_if_fail (fs->priv->con_opening == con);
1774
g_return_if_fail (fs->priv->con_open_dialog != NULL);
1776
DEBUG('m', "on_con_open_failed\n");
1777
gtk_signal_disconnect_by_data (GTK_OBJECT (con), fs);
1780
s = g_strdup (emsg);
1782
s = g_strdup_printf (_("Failed to open connection: %s\n"),
1783
gnome_vfs_result_to_string (result));
1785
if (result != GNOME_VFS_OK || emsg != NULL)
1786
create_error_dialog (s);
1790
gtk_widget_destroy (fs->priv->con_open_dialog);
1791
fs->priv->con_open_dialog = NULL;
1792
fs->priv->con_opening = NULL;
1758
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1759
g_return_if_fail (fs->priv->con_opening != NULL);
1760
g_return_if_fail (fs->priv->con_opening == con);
1761
g_return_if_fail (fs->priv->con_open_dialog != NULL);
1763
DEBUG('m', "on_con_open_failed\n");
1764
gtk_signal_disconnect_by_data (GTK_OBJECT (con), fs);
1767
s = g_strdup (emsg);
1769
s = g_strdup_printf (_("Failed to open connection: %s\n"),
1770
gnome_vfs_result_to_string (result));
1772
if (result != GNOME_VFS_OK || emsg != NULL)
1773
create_error_dialog (s);
1777
gtk_widget_destroy (fs->priv->con_open_dialog);
1778
fs->priv->con_open_dialog = NULL;
1779
fs->priv->con_opening = NULL;
1797
1784
create_con_open_progress_dialog (GnomeCmdFileSelector *fs)
1801
fs->priv->con_open_dialog = gnome_cmd_dialog_new (NULL);
1802
gtk_widget_ref (fs->priv->con_open_dialog);
1804
gnome_cmd_dialog_add_button (
1805
GNOME_CMD_DIALOG (fs->priv->con_open_dialog),
1806
GNOME_STOCK_BUTTON_CANCEL,
1807
GTK_SIGNAL_FUNC (on_con_open_cancel), fs);
1809
vbox = create_vbox (fs->priv->con_open_dialog, FALSE, 0);
1811
fs->priv->con_open_dialog_label = create_label (
1812
fs->priv->con_open_dialog, "");
1814
fs->priv->con_open_dialog_pbar = create_progress_bar (
1815
fs->priv->con_open_dialog);
1816
gtk_progress_set_show_text (GTK_PROGRESS (fs->priv->con_open_dialog_pbar), FALSE);
1817
gtk_progress_set_activity_mode (GTK_PROGRESS (fs->priv->con_open_dialog_pbar), TRUE);
1818
gtk_progress_configure (GTK_PROGRESS (fs->priv->con_open_dialog_pbar), 0, 0, FS_PBAR_MAX);
1820
gtk_box_pack_start (GTK_BOX (vbox), fs->priv->con_open_dialog_label, TRUE, TRUE, 0);
1821
gtk_box_pack_start (GTK_BOX (vbox), fs->priv->con_open_dialog_pbar, FALSE, TRUE, 0);
1823
gnome_cmd_dialog_add_category (GNOME_CMD_DIALOG (fs->priv->con_open_dialog), vbox);
1825
gnome_cmd_dialog_set_transient_for (
1826
GNOME_CMD_DIALOG (fs->priv->con_open_dialog),
1827
GTK_WINDOW (main_win));
1829
gtk_widget_show_all (fs->priv->con_open_dialog);
1788
fs->priv->con_open_dialog = gnome_cmd_dialog_new (NULL);
1789
gtk_widget_ref (fs->priv->con_open_dialog);
1791
gnome_cmd_dialog_add_button (
1792
GNOME_CMD_DIALOG (fs->priv->con_open_dialog),
1793
GNOME_STOCK_BUTTON_CANCEL,
1794
GTK_SIGNAL_FUNC (on_con_open_cancel), fs);
1796
vbox = create_vbox (fs->priv->con_open_dialog, FALSE, 0);
1798
fs->priv->con_open_dialog_label = create_label (
1799
fs->priv->con_open_dialog, "");
1801
fs->priv->con_open_dialog_pbar = create_progress_bar (
1802
fs->priv->con_open_dialog);
1803
gtk_progress_set_show_text (GTK_PROGRESS (fs->priv->con_open_dialog_pbar), FALSE);
1804
gtk_progress_set_activity_mode (GTK_PROGRESS (fs->priv->con_open_dialog_pbar), TRUE);
1805
gtk_progress_configure (GTK_PROGRESS (fs->priv->con_open_dialog_pbar), 0, 0, FS_PBAR_MAX);
1807
gtk_box_pack_start (GTK_BOX (vbox), fs->priv->con_open_dialog_label, TRUE, TRUE, 0);
1808
gtk_box_pack_start (GTK_BOX (vbox), fs->priv->con_open_dialog_pbar, FALSE, TRUE, 0);
1810
gnome_cmd_dialog_add_category (GNOME_CMD_DIALOG (fs->priv->con_open_dialog), vbox);
1812
gnome_cmd_dialog_set_transient_for (
1813
GNOME_CMD_DIALOG (fs->priv->con_open_dialog),
1814
GTK_WINDOW (main_win));
1816
gtk_widget_show_all (fs->priv->con_open_dialog);
1834
1821
gnome_cmd_file_selector_set_connection (GnomeCmdFileSelector *fs,
1838
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1839
g_return_if_fail (GNOME_CMD_IS_CON (con));
1841
if (fs->priv->con == con) {
1842
if (!gnome_cmd_con_should_remember_dir (con))
1843
gnome_cmd_file_selector_set_directory (
1845
gnome_cmd_con_get_default_dir (con));
1849
if (!gnome_cmd_con_is_open (con)) {
1850
gtk_signal_connect (GTK_OBJECT (con), "open-done",
1851
GTK_SIGNAL_FUNC (on_con_open_done), fs);
1852
gtk_signal_connect (GTK_OBJECT (con), "open-failed",
1853
GTK_SIGNAL_FUNC (on_con_open_failed), fs);
1854
fs->priv->con_opening = con;
1856
create_con_open_progress_dialog (fs);
1857
gtk_timeout_add (gnome_cmd_data_get_gui_update_rate (), (GtkFunction)update_con_open_progress, fs);
1859
gnome_cmd_con_open (con);
1862
set_connection (fs, con, dir);
1825
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1826
g_return_if_fail (GNOME_CMD_IS_CON (con));
1828
if (fs->priv->con == con) {
1829
if (!gnome_cmd_con_should_remember_dir (con))
1830
gnome_cmd_file_selector_set_directory (
1832
gnome_cmd_con_get_default_dir (con));
1836
if (!gnome_cmd_con_is_open (con)) {
1837
gtk_signal_connect (GTK_OBJECT (con), "open-done",
1838
GTK_SIGNAL_FUNC (on_con_open_done), fs);
1839
gtk_signal_connect (GTK_OBJECT (con), "open-failed",
1840
GTK_SIGNAL_FUNC (on_con_open_failed), fs);
1841
fs->priv->con_opening = con;
1843
create_con_open_progress_dialog (fs);
1844
gtk_timeout_add (gnome_cmd_data_get_gui_update_rate (), (GtkFunction)update_con_open_progress, fs);
1846
gnome_cmd_con_open (con);
1849
set_connection (fs, con, dir);
1867
1854
gnome_cmd_file_selector_update_connections (GnomeCmdFileSelector *fs)
1870
gboolean found_my_con = FALSE;
1871
GnomeCmdConList *con_list;
1873
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1875
if (!fs->priv->realized)
1878
fs->priv->selection_lock = TRUE;
1880
gnome_cmd_combo_clear (GNOME_CMD_COMBO (fs->con_combo));
1881
GNOME_CMD_COMBO (fs->con_combo)->highest_pixmap = 20;
1882
GNOME_CMD_COMBO (fs->con_combo)->widest_pixmap = 20;
1883
gtk_clist_set_row_height (GTK_CLIST (GNOME_CMD_COMBO (fs->con_combo)->list), 20);
1884
gtk_clist_set_column_width (GTK_CLIST (GNOME_CMD_COMBO (fs->con_combo)->list), 0, 20);
1886
con_list = gnome_cmd_data_get_con_list ();
1887
l = gnome_cmd_con_list_get_all (con_list);
1892
GnomeCmdPixmap *pixmap;
1893
GnomeCmdCon *con = (GnomeCmdCon*)l->data;
1895
if (!gnome_cmd_con_is_open (con) && !GNOME_CMD_IS_CON_DEVICE (con)
1896
&& !GNOME_CMD_IS_CON_SMB (con)) {
1901
if (con == fs->priv->con)
1902
found_my_con = TRUE;
1905
text[1] = (gchar*)gnome_cmd_con_get_alias (con);
1908
pixmap = gnome_cmd_con_get_go_pixmap (con);
1910
row = gnome_cmd_combo_append (GNOME_CMD_COMBO (fs->con_combo), text, con);
1912
gnome_cmd_combo_set_pixmap (GNOME_CMD_COMBO (fs->con_combo), row, 0, pixmap);
1917
fs->priv->selection_lock = FALSE;
1919
// If the connection is no longer available use the home connection
1921
gnome_cmd_file_selector_set_connection (
1922
fs, gnome_cmd_con_list_get_home (con_list), NULL);
1924
gnome_cmd_combo_select_data (GNOME_CMD_COMBO (fs->con_combo), fs->priv->con);
1927
create_con_buttons (fs);
1857
gboolean found_my_con = FALSE;
1858
GnomeCmdConList *con_list;
1860
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1862
if (!fs->priv->realized)
1865
fs->priv->selection_lock = TRUE;
1867
gnome_cmd_combo_clear (GNOME_CMD_COMBO (fs->con_combo));
1868
GNOME_CMD_COMBO (fs->con_combo)->highest_pixmap = 20;
1869
GNOME_CMD_COMBO (fs->con_combo)->widest_pixmap = 20;
1870
gtk_clist_set_row_height (GTK_CLIST (GNOME_CMD_COMBO (fs->con_combo)->list), 20);
1871
gtk_clist_set_column_width (GTK_CLIST (GNOME_CMD_COMBO (fs->con_combo)->list), 0, 20);
1873
con_list = gnome_cmd_data_get_con_list ();
1874
l = gnome_cmd_con_list_get_all (con_list);
1879
GnomeCmdPixmap *pixmap;
1880
GnomeCmdCon *con = (GnomeCmdCon*)l->data;
1882
if (!gnome_cmd_con_is_open (con) && !GNOME_CMD_IS_CON_DEVICE (con)
1883
&& !GNOME_CMD_IS_CON_SMB (con)) {
1888
if (con == fs->priv->con)
1889
found_my_con = TRUE;
1892
text[1] = (gchar*)gnome_cmd_con_get_alias (con);
1895
pixmap = gnome_cmd_con_get_go_pixmap (con);
1897
row = gnome_cmd_combo_append (GNOME_CMD_COMBO (fs->con_combo), text, con);
1899
gnome_cmd_combo_set_pixmap (GNOME_CMD_COMBO (fs->con_combo), row, 0, pixmap);
1904
fs->priv->selection_lock = FALSE;
1906
// If the connection is no longer available use the home connection
1908
gnome_cmd_file_selector_set_connection (
1909
fs, gnome_cmd_con_list_get_home (con_list), NULL);
1911
gnome_cmd_combo_select_data (GNOME_CMD_COMBO (fs->con_combo), fs->priv->con);
1914
create_con_buttons (fs);
1932
1919
gnome_cmd_file_selector_get_connection (GnomeCmdFileSelector *fs)
1934
g_return_val_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs), NULL);
1936
return fs->priv->con;
1921
g_return_val_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs), NULL);
1923
return fs->priv->con;
1941
1928
gnome_cmd_file_selector_update_style (GnomeCmdFileSelector *fs)
1943
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1945
gnome_cmd_combo_update_style (GNOME_CMD_COMBO (fs->con_combo));
1946
gnome_cmd_file_list_update_style (fs->list);
1948
if (fs->priv->realized)
1951
gnome_cmd_file_list_show_column (
1952
fs->list, FILE_LIST_COLUMN_EXT,
1953
gnome_cmd_data_get_ext_disp_mode () != GNOME_CMD_EXT_DISP_WITH_FNAME);
1955
create_con_buttons (fs);
1956
gnome_cmd_file_selector_update_connections (fs);
1930
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
1932
gnome_cmd_combo_update_style (GNOME_CMD_COMBO (fs->con_combo));
1933
gnome_cmd_file_list_update_style (fs->list);
1935
if (fs->priv->realized)
1938
gnome_cmd_file_list_show_column (
1939
fs->list, FILE_LIST_COLUMN_EXT,
1940
gnome_cmd_data_get_ext_disp_mode () != GNOME_CMD_EXT_DISP_WITH_FNAME);
1942
create_con_buttons (fs);
1943
gnome_cmd_file_selector_update_connections (fs);
1961
1948
gnome_cmd_file_selector_show_mkdir_dialog (GnomeCmdFileSelector *fs)
1966
dir = gnome_cmd_file_selector_get_directory (fs);
1967
g_return_if_fail (GNOME_CMD_IS_DIR (dir));
1969
dialog = gnome_cmd_mkdir_dialog_new (dir);
1970
g_return_if_fail (GNOME_CMD_IS_DIALOG (dialog));
1972
gtk_widget_ref (dialog);
1973
gtk_widget_show (dialog);
1953
dir = gnome_cmd_file_selector_get_directory (fs);
1954
g_return_if_fail (GNOME_CMD_IS_DIR (dir));
1956
dialog = gnome_cmd_mkdir_dialog_new (dir);
1957
g_return_if_fail (GNOME_CMD_IS_DIALOG (dialog));
1959
gtk_widget_ref (dialog);
1960
gtk_widget_show (dialog);
1977
1964
static gboolean
1978
1965
on_new_textfile_ok (GnomeCmdStringDialog *string_dialog,
1979
const gchar **values,
1980
GnomeCmdFileSelector *fs)
1966
const gchar **values,
1967
GnomeCmdFileSelector *fs)
1984
const gchar *filename = values[0];
1987
g_return_val_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs), TRUE);
1990
gnome_cmd_string_dialog_set_error_desc (
1991
string_dialog, g_strdup (_("No filename entered")));
1995
dir = gnome_cmd_file_selector_get_directory (fs);
1996
g_return_val_if_fail (GNOME_CMD_IS_DIR (dir), TRUE);
1998
dpath = gnome_cmd_file_get_real_path (GNOME_CMD_FILE (dir));
1999
filepath = g_build_path ("/", dpath, filename, NULL);
2001
g_return_val_if_fail (filepath, TRUE);
2003
cmd = g_strdup_printf (gnome_cmd_data_get_editor (), filepath);
2004
g_return_val_if_fail (cmd, TRUE);
2006
run_command (cmd, FALSE);
1971
const gchar *filename = values[0];
1974
g_return_val_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs), TRUE);
1977
gnome_cmd_string_dialog_set_error_desc (
1978
string_dialog, g_strdup (_("No filename entered")));
1982
dir = gnome_cmd_file_selector_get_directory (fs);
1983
g_return_val_if_fail (GNOME_CMD_IS_DIR (dir), TRUE);
1985
dpath = gnome_cmd_file_get_real_path (GNOME_CMD_FILE (dir));
1986
filepath = g_build_path ("/", dpath, filename, NULL);
1988
g_return_val_if_fail (filepath, TRUE);
1990
cmd = g_strdup_printf (gnome_cmd_data_get_editor (), filepath);
1991
g_return_val_if_fail (cmd, TRUE);
1993
run_command (cmd, FALSE);
2012
1999
static gboolean
2013
2000
on_create_symlink_ok (GnomeCmdStringDialog *string_dialog,
2014
const gchar **values,
2015
GnomeCmdFileSelector *fs)
2001
const gchar **values,
2002
GnomeCmdFileSelector *fs)
2017
const gchar *name = values[0];
2018
GnomeVFSResult result;
2021
g_return_val_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs), TRUE);
2022
g_return_val_if_fail (fs->priv->sym_file != NULL, TRUE);
2024
/* dont create any symlink if no name was passed or cancel was selected */
2025
if (name == NULL || strcmp (name, "") == 0) {
2026
gnome_cmd_string_dialog_set_error_desc (
2027
string_dialog, g_strdup (_("No filename given")));
2031
uri = gnome_cmd_dir_get_child_uri (fs->priv->cwd, name);
2033
result = gnome_vfs_create_symbolic_link (
2034
uri, gnome_cmd_file_get_uri_str (fs->priv->sym_file));
2036
if (result == GNOME_VFS_OK) {
2037
gchar *uri_str = gnome_vfs_uri_to_string (uri, 0);
2038
gnome_cmd_dir_file_created (fs->priv->cwd, uri_str);
2040
gnome_vfs_uri_unref (uri);
2044
gnome_vfs_uri_unref (uri);
2046
gnome_cmd_string_dialog_set_error_desc (
2047
string_dialog, g_strdup (gnome_vfs_result_to_string (result)));
2004
const gchar *name = values[0];
2005
GnomeVFSResult result;
2008
g_return_val_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs), TRUE);
2009
g_return_val_if_fail (fs->priv->sym_file != NULL, TRUE);
2011
/* dont create any symlink if no name was passed or cancel was selected */
2012
if (name == NULL || strcmp (name, "") == 0) {
2013
gnome_cmd_string_dialog_set_error_desc (
2014
string_dialog, g_strdup (_("No filename given")));
2018
uri = gnome_cmd_dir_get_child_uri (fs->priv->cwd, name);
2020
result = gnome_vfs_create_symbolic_link (
2021
uri, gnome_cmd_file_get_uri_str (fs->priv->sym_file));
2023
if (result == GNOME_VFS_OK) {
2024
gchar *uri_str = gnome_vfs_uri_to_string (uri, 0);
2025
gnome_cmd_dir_file_created (fs->priv->cwd, uri_str);
2027
gnome_vfs_uri_unref (uri);
2031
gnome_vfs_uri_unref (uri);
2033
gnome_cmd_string_dialog_set_error_desc (
2034
string_dialog, g_strdup (gnome_vfs_result_to_string (result)));
2054
2041
gnome_cmd_file_selector_show_new_textfile_dialog (GnomeCmdFileSelector *fs)
2056
const gchar *labels[] = {_("Filename:")};
2059
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
2061
dialog = gnome_cmd_string_dialog_new (
2062
_("New Text File"), labels, 1,
2063
(GnomeCmdStringDialogCallback)on_new_textfile_ok, fs);
2064
g_return_if_fail (GNOME_CMD_IS_DIALOG (dialog));
2066
gtk_widget_ref (dialog);
2067
gtk_widget_show (dialog);
2043
const gchar *labels[] = {_("Filename:")};
2046
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
2048
dialog = gnome_cmd_string_dialog_new (
2049
_("New Text File"), labels, 1,
2050
(GnomeCmdStringDialogCallback)on_new_textfile_ok, fs);
2051
g_return_if_fail (GNOME_CMD_IS_DIALOG (dialog));
2053
gtk_widget_ref (dialog);
2054
gtk_widget_show (dialog);
2072
2059
gnome_cmd_file_selector_cap_paste (GnomeCmdFileSelector *fs)
2076
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
2077
dir = gnome_cmd_file_selector_get_directory (fs);
2078
g_return_if_fail (GNOME_CMD_IS_DIR (dir));
2080
cap_paste_files (dir);
2063
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
2064
dir = gnome_cmd_file_selector_get_directory (fs);
2065
g_return_if_fail (GNOME_CMD_IS_DIR (dir));
2067
cap_paste_files (dir);
2085
2072
gnome_cmd_file_selector_keypressed (GnomeCmdFileSelector *fs,
2088
GnomeCmdFile *finfo;
2090
g_return_val_if_fail (event != NULL, FALSE);
2091
g_return_val_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs), FALSE);
2093
if (state_is_ctrl_shift (event->state)) {
2094
switch (event->keyval)
2098
add_file_to_cmdline (fs, TRUE);
2102
set_same_directory (gnome_cmd_main_win_get_inactive_fs (main_win),fs);
2106
else if (state_is_shift (event->state)) {
2107
switch (event->keyval)
2110
gnome_cmd_file_list_show_make_copy_dialog (fs);
2114
gnome_cmd_file_selector_start_editor (fs);
2118
else if (state_is_alt (event->state)) {
2119
switch (event->keyval)
2122
gnome_cmd_dir_indicator_show_history (
2123
GNOME_CMD_DIR_INDICATOR (fs->dir_indicator));
2127
gnome_cmd_file_selector_back (fs);
2128
stop_kp(GTK_OBJECT(fs->list));
2132
gnome_cmd_file_selector_forward (fs);
2133
stop_kp(GTK_OBJECT(fs->list));
2137
else if (state_is_alt_shift (event->state)) {
2138
switch (event->keyval)
2142
show_dir_tree_sizes (fs);
2146
else if (state_is_ctrl (event->state)) {
2147
switch (event->keyval)
2151
gnome_cmd_file_selector_cap_paste (fs);
2156
gnome_cmd_file_selector_reload (fs);
2161
add_cwd_to_cmdline (fs);
2165
goto_directory (fs, "..");
2169
finfo = gnome_cmd_file_list_get_selected_file (fs->list);
2170
if (finfo && finfo->info->type == GNOME_VFS_FILE_TYPE_DIRECTORY)
2171
do_file_specific_action (fs, finfo);
2176
add_file_to_cmdline (fs, FALSE);
2180
set_same_directory (fs,
2181
gnome_cmd_main_win_get_inactive_fs (main_win));
2185
else if (state_is_blank (event->state)) {
2186
switch (event->keyval)
2190
gnome_cmd_file_list_toggle (fs->list);
2191
show_selected_dir_tree_size (fs);
2192
stop_kp (GTK_OBJECT (fs->list));
2193
set_cursor_default ();
2199
goto_directory (fs, "..");
2204
finfo = gnome_cmd_file_list_get_selected_file (fs->list);
2205
if (finfo && finfo->info->type == GNOME_VFS_FILE_TYPE_DIRECTORY)
2206
do_file_specific_action (fs, finfo);
2207
stop_kp (GTK_OBJECT (fs->list));
2212
if (gnome_cmd_data_get_cmdline_visibility ()
2213
&& gnome_cmd_cmdline_is_empty (gnome_cmd_main_win_get_cmdline (main_win)))
2214
gnome_cmd_cmdline_exec (gnome_cmd_main_win_get_cmdline (main_win));
2216
do_file_specific_action (
2217
fs, gnome_cmd_file_list_get_focused_file (fs->list));
2221
if (gnome_cmd_data_get_cmdline_visibility ())
2222
gnome_cmd_cmdline_set_text (
2223
gnome_cmd_main_win_get_cmdline (main_win), "");
2075
GnomeCmdFile *finfo;
2077
g_return_val_if_fail (event != NULL, FALSE);
2078
g_return_val_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs), FALSE);
2080
if (state_is_ctrl_shift (event->state)) {
2081
switch (event->keyval)
2085
add_file_to_cmdline (fs, TRUE);
2089
set_same_directory (gnome_cmd_main_win_get_inactive_fs (main_win),fs);
2093
else if (state_is_shift (event->state)) {
2094
switch (event->keyval)
2097
file_internal_view (NULL, NULL);
2101
gnome_cmd_file_selector_start_editor (fs);
2105
gnome_cmd_file_list_show_make_copy_dialog (fs);
2109
else if (state_is_alt (event->state)) {
2110
switch (event->keyval)
2113
gnome_cmd_dir_indicator_show_history (
2114
GNOME_CMD_DIR_INDICATOR (fs->dir_indicator));
2118
gnome_cmd_file_selector_back (fs);
2119
stop_kp(GTK_OBJECT(fs->list));
2123
gnome_cmd_file_selector_forward (fs);
2124
stop_kp(GTK_OBJECT(fs->list));
2128
else if (state_is_alt_shift (event->state)) {
2129
switch (event->keyval)
2133
show_dir_tree_sizes (fs);
2137
else if (state_is_ctrl (event->state)) {
2138
switch (event->keyval)
2142
gnome_cmd_file_selector_cap_paste (fs);
2147
gnome_cmd_file_selector_reload (fs);
2152
add_cwd_to_cmdline (fs);
2156
goto_directory (fs, "..");
2160
finfo = gnome_cmd_file_list_get_selected_file (fs->list);
2161
if (finfo && finfo->info->type == GNOME_VFS_FILE_TYPE_DIRECTORY)
2162
do_file_specific_action (fs, finfo);
2167
add_file_to_cmdline (fs, FALSE);
2171
set_same_directory (fs,
2172
gnome_cmd_main_win_get_inactive_fs (main_win));
2176
else if (state_is_blank (event->state)) {
2177
switch (event->keyval)
2181
gnome_cmd_file_list_toggle (fs->list);
2182
show_selected_dir_tree_size (fs);
2183
stop_kp (GTK_OBJECT (fs->list));
2184
set_cursor_default ();
2190
goto_directory (fs, "..");
2195
finfo = gnome_cmd_file_list_get_selected_file (fs->list);
2196
if (finfo && finfo->info->type == GNOME_VFS_FILE_TYPE_DIRECTORY)
2197
do_file_specific_action (fs, finfo);
2198
stop_kp (GTK_OBJECT (fs->list));
2203
if (gnome_cmd_data_get_cmdline_visibility ()
2204
&& gnome_cmd_cmdline_is_empty (gnome_cmd_main_win_get_cmdline (main_win)))
2205
gnome_cmd_cmdline_exec (gnome_cmd_main_win_get_cmdline (main_win));
2207
do_file_specific_action (
2208
fs, gnome_cmd_file_list_get_focused_file (fs->list));
2212
if (gnome_cmd_data_get_cmdline_visibility ())
2213
gnome_cmd_cmdline_set_text (
2214
gnome_cmd_main_win_get_cmdline (main_win), "");
2233
2224
gnome_cmd_file_selector_create_symlink (GnomeCmdFileSelector *fs, GnomeCmdFile *finfo)
2235
gchar *text, *fname;
2236
const gchar *labels[] = {_("Symlink name:")};
2226
gchar *text, *fname;
2227
const gchar *labels[] = {_("Symlink name:")};
2239
fname = get_utf8 (gnome_cmd_file_get_name (finfo));
2240
text = g_strdup_printf (_("Symlink to %s"), fname);
2242
dialog = gnome_cmd_string_dialog_new (_("Create Symbolic Link"),
2245
(GnomeCmdStringDialogCallback)on_create_symlink_ok,
2247
gnome_cmd_string_dialog_set_value (GNOME_CMD_STRING_DIALOG (dialog), 0, text);
2249
fs->priv->sym_file = finfo;
2250
gtk_widget_show (dialog);
2230
fname = get_utf8 (gnome_cmd_file_get_name (finfo));
2231
text = g_strdup_printf (_("Symlink to %s"), fname);
2233
dialog = gnome_cmd_string_dialog_new (_("Create Symbolic Link"),
2236
(GnomeCmdStringDialogCallback)on_create_symlink_ok,
2238
gnome_cmd_string_dialog_set_value (GNOME_CMD_STRING_DIALOG (dialog), 0, text);
2240
fs->priv->sym_file = finfo;
2241
gtk_widget_show (dialog);
2255
2246
gnome_cmd_file_selector_update_conbuttons_visibility (GnomeCmdFileSelector *fs)
2257
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
2248
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
2259
if (!gnome_cmd_data_get_conbuttons_visibility ()) {
2260
if (fs->con_btns_hbox) {
2261
gtk_object_destroy (GTK_OBJECT (fs->con_btns_hbox));
2262
fs->con_btns_hbox = NULL;
2266
if (!fs->con_btns_hbox) {
2267
fs->con_btns_hbox = create_hbox (GTK_WIDGET (fs), FALSE, 2);
2268
gtk_box_pack_start (GTK_BOX (fs), fs->con_btns_hbox, FALSE, FALSE, 0);
2269
gtk_box_reorder_child (GTK_BOX (fs), fs->con_btns_hbox, 0);
2270
gtk_widget_show (fs->con_btns_hbox);
2271
create_con_buttons (fs);
2250
if (!gnome_cmd_data_get_conbuttons_visibility ()) {
2251
if (fs->con_btns_hbox) {
2252
gtk_object_destroy (GTK_OBJECT (fs->con_btns_hbox));
2253
fs->con_btns_hbox = NULL;
2257
if (!fs->con_btns_hbox) {
2258
fs->con_btns_hbox = create_hbox (GTK_WIDGET (fs), FALSE, 2);
2259
gtk_box_pack_start (GTK_BOX (fs), fs->con_btns_hbox, FALSE, FALSE, 0);
2260
gtk_box_reorder_child (GTK_BOX (fs), fs->con_btns_hbox, 0);
2261
gtk_widget_show (fs->con_btns_hbox);
2262
create_con_buttons (fs);
2278
2269
on_filter_box_close (GtkButton *btn, GnomeCmdFileSelector *fs)
2280
if (!fs->priv->filter_box) return;
2282
gtk_widget_destroy (fs->priv->filter_box);
2283
fs->priv->filter_box = NULL;
2271
if (!fs->priv->filter_box) return;
2273
gtk_widget_destroy (fs->priv->filter_box);
2274
fs->priv->filter_box = NULL;
2288
2279
on_filter_box_keypressed (GtkEntry *entry, GdkEventKey *event, GnomeCmdFileSelector *fs)
2290
if (state_is_blank (event->state)) {
2291
if (event->keyval == GDK_Escape) {
2292
on_filter_box_close (NULL, fs);
2281
if (state_is_blank (event->state)) {
2282
if (event->keyval == GDK_Escape) {
2283
on_filter_box_close (NULL, fs);
2302
2293
gnome_cmd_file_selector_show_filter (GnomeCmdFileSelector *fs, gchar c)
2304
GtkWidget *close_btn, *entry, *label, *parent;
2306
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
2308
parent = GTK_WIDGET (fs);
2310
if (fs->priv->filter_box) return;
2312
fs->priv->filter_box = create_hbox (parent, FALSE, 0);
2313
label = create_label (parent, _("Filter:"));
2314
entry = create_entry (parent, "entry", "");
2315
close_btn = create_button_with_data (
2316
GTK_WIDGET (main_win), "x",
2317
GTK_SIGNAL_FUNC (on_filter_box_close), fs);
2319
gtk_signal_connect (GTK_OBJECT (entry), "key-press-event",
2320
GTK_SIGNAL_FUNC (on_filter_box_keypressed), fs);
2321
gtk_box_pack_start (GTK_BOX (fs->priv->filter_box), label, FALSE, TRUE, 0);
2322
gtk_box_pack_start (GTK_BOX (fs->priv->filter_box), entry, TRUE, TRUE, 0);
2323
gtk_box_pack_start (GTK_BOX (fs->priv->filter_box), close_btn, FALSE, TRUE, 0);
2325
gtk_box_pack_start (GTK_BOX (fs), fs->priv->filter_box, FALSE, TRUE, 0);
2327
gtk_widget_grab_focus (entry);
2295
GtkWidget *close_btn, *entry, *label, *parent;
2297
g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));
2299
parent = GTK_WIDGET (fs);
2301
if (fs->priv->filter_box) return;
2303
fs->priv->filter_box = create_hbox (parent, FALSE, 0);
2304
label = create_label (parent, _("Filter:"));
2305
entry = create_entry (parent, "entry", "");
2306
close_btn = create_button_with_data (
2307
GTK_WIDGET (main_win), "x",
2308
GTK_SIGNAL_FUNC (on_filter_box_close), fs);
2310
gtk_signal_connect (GTK_OBJECT (entry), "key-press-event",
2311
GTK_SIGNAL_FUNC (on_filter_box_keypressed), fs);
2312
gtk_box_pack_start (GTK_BOX (fs->priv->filter_box), label, FALSE, TRUE, 0);
2313
gtk_box_pack_start (GTK_BOX (fs->priv->filter_box), entry, TRUE, TRUE, 0);
2314
gtk_box_pack_start (GTK_BOX (fs->priv->filter_box), close_btn, FALSE, TRUE, 0);
2316
gtk_box_pack_start (GTK_BOX (fs), fs->priv->filter_box, FALSE, TRUE, 0);
2318
gtk_widget_grab_focus (entry);