Home | History | Annotate | Download | only in patches
      1 diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/configure.in nautilus-2.24.2/configure.in
      2 --- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/configure.in	2008-10-20 14:09:22.000000000 +0200
      3 +++ nautilus-2.24.2/configure.in	2009-01-23 22:36:12.616536282 +0100
      4 @@ -327,6 +327,22 @@ if test "x$enable_beagle" != "xno"; then
      5          AC_SUBST(BEAGLE_CFLAGS)
      6  	AC_SUBST(BEAGLE_LIBS)
      7  fi
      8 +dnl ==========================================================================
      9 +
     10 +dnl ********************
     11 +dnl * Check for libzfs *
     12 +dnl ********************
     13 +ZFS_LIBS=
     14 +msg_zfs=no
     15 +AC_CHECK_LIB(zfs, zfs_iter_root,
     16 +   [AC_CHECK_HEADER(libzfs.h,
     17 +       [AC_DEFINE(HAVE_ZFS, 1, [Define to 1 if ZFS is available])
     18 +        ZFS_LIBS="-lzfs"
     19 +        msg_zfs=yes])
     20 +     ])
     21 +AC_SUBST(ZFS_LIBS)
     22 +
     23 +
     24  
     25  dnl ==========================================================================
     26  
     27 diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/icons/Makefile.am nautilus-2.24.2/icons/Makefile.am
     28 --- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/icons/Makefile.am	2008-10-06 19:22:21.000000000 +0200
     29 +++ nautilus-2.24.2/icons/Makefile.am	2009-01-23 22:36:10.586685500 +0100
     30 @@ -12,6 +12,10 @@ icon_DATA =\
     31  	knob.png \
     32  	note-indicator.png \
     33  	thumbnail_frame.png \
     34 +	restore.png \
     35 +	restore-search.png \
     36 +	restore-no.png \
     37 +	camera.png \
     38  	$(NULL)
     39  
     40  EXTRA_DIST = $(icon_DATA)
     41 diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/Makefile.am nautilus-2.24.2/libnautilus-private/Makefile.am
     42 --- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/Makefile.am	2009-01-23 22:38:49.620637861 +0100
     43 +++ nautilus-2.24.2/libnautilus-private/Makefile.am	2009-01-23 22:36:11.639751348 +0100
     44 @@ -32,6 +32,7 @@ libnautilus_private_la_LIBADD =		\
     45  	$(TRACKER_LIBS)			\
     46  	$(top_builddir)/libnautilus-extension/libnautilus-extension.la \
     47  	$(CORE_LIBS)			\
     48 +	$(ZFS_LIBS)			\
     49  	$(NULL)
     50  
     51  marshal_sources = \
     52 @@ -200,6 +201,8 @@ libnautilus_private_la_SOURCES = \
     53  	nautilus-window-info.h \
     54  	nautilus-window-slot-info.c \
     55  	nautilus-window-slot-info.h \
     56 +	nautilus-zfs.c \
     57 +	nautilus-zfs.h \	
     58  	$(NULL)
     59  
     60  BEAGLE_SOURCES = \
     61 diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/libnautilus-private/apps_nautilus_preferences.schemas.in ../nautilus-full-async/libnautilus-private/apps_nautilus_preferences.schemas.in
     62 --- nautilus-2.24.2/libnautilus-private/apps_nautilus_preferences.schemas.in	2008-12-02 14:18:12.708779941 +0100
     63 +++ ../nautilus-full-async/libnautilus-private/apps_nautilus_preferences.schemas.in	2008-12-02 11:42:32.798412022 +0100
     64 @@ -5,6 +5,19 @@
     65           in nautilus-global-preferences.c -->
     66  
     67      <!-- General preferences -->
     68 +      <schema>
     69 +       <key>/schemas/apps/nautilus/preferences/enable_time_slider</key>
     70 +       <applyto>/apps/nautilus/preferences/enable_time_slider</applyto>
     71 +       <owner>nautilus</owner>
     72 +       <type>bool</type>
     73 +       <default>true</default>
     74 +       <locale name="C">
     75 +          <short>Enables the visualization of the ZFS snaphots timeline</short>
     76 +          <long>
     77 +            If set to true, the visualization of the ZFS snapshots timeline is enabled
     78 +          </long>
     79 +       </locale>
     80 +     </schema>
     81  
     82      <schema>
     83        <key>/schemas/desktop/gnome/file_views/show_hidden_files</key>
     84 diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-column-utilities.c nautilus-2.24.2/libnautilus-private/nautilus-column-utilities.c
     85 --- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-column-utilities.c	2009-01-23 22:38:49.621050437 +0100
     86 +++ nautilus-2.24.2/libnautilus-private/nautilus-column-utilities.c	2009-01-23 22:36:11.726383584 +0100
     87 @@ -122,6 +122,13 @@ get_builtin_columns (void)
     88  					       "description", _("The SELinux security context of the file."),
     89  					       NULL));
     90  #endif
     91 +	columns = g_list_append (columns,
     92 +				 g_object_new (NAUTILUS_TYPE_COLUMN,
     93 +					       "name", "restore_info",
     94 +					       "attribute", "restore_info",
     95 +					       "label", _("Restore information"),
     96 +					       "description", _("Restore information of the file."),
     97 +					       NULL));
     98  	
     99  	return columns;
    100  }
    101 diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-directory-async.c nautilus-2.24.2/libnautilus-private/nautilus-directory-async.c
    102 --- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-directory-async.c	2009-01-23 22:38:49.600884917 +0100
    103 +++ nautilus-2.24.2/libnautilus-private/nautilus-directory-async.c	2009-01-23 22:36:11.646385711 +0100
    104 @@ -640,6 +640,10 @@ nautilus_directory_set_up_request (Reque
    105  	if (file_attributes & NAUTILUS_FILE_ATTRIBUTE_FILESYSTEM_INFO) {
    106  		request->filesystem_info = TRUE;
    107  	}
    108 +	
    109 +	if (file_attributes & NAUTILUS_FILE_ATTRIBUTE_RESTORE_INFO) {
    110 +		request->restore_info = TRUE;
    111 +	}
    112  }
    113  
    114  static void
    115 @@ -4723,6 +4727,18 @@ cancel_link_info_for_file (NautilusDirec
    116  	}
    117  }
    118  
    119 +void nautilus_directory_cancel_restore_info (NautilusDirectory *directory)
    120 +{
    121 +  if (NAUTILUS_IS_DIRECTORY (directory))
    122 +    {
    123 +      if (directory->details->restore_cancel)
    124 +	{
    125 +	  g_cancellable_cancel (directory->details->restore_cancel);
    126 +	  directory->details->restore_cancel = NULL;
    127 +	}
    128 +    }
    129 +}
    130 +
    131  
    132  static void
    133  cancel_loading_attributes (NautilusDirectory *directory,
    134 @@ -4766,6 +4782,10 @@ cancel_loading_attributes (NautilusDirec
    135  	if (request.mount) {
    136  		mount_cancel (directory);
    137  	}
    138 +
    139 +	if (request.restore_info) {
    140 +	    nautilus_directory_cancel_restore_info (directory);
    141 +	}
    142  	
    143  	/* FIXME bugzilla.gnome.org 45064: implement cancelling metadata when we
    144  	   implement invalidating metadata */
    145 @@ -4812,6 +4832,9 @@ nautilus_directory_cancel_loading_file_a
    146  	if (request.mount) {
    147  		cancel_mount_for_file (directory, file);
    148  	}
    149 +	if (request.restore_info) {
    150 +	    nautilus_directory_cancel_restore_info (directory);
    151 +	}
    152  
    153  	/* FIXME bugzilla.gnome.org 45064: implement cancelling metadata when we
    154  	   implement invalidating metadata */
    155 diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-directory-private.h nautilus-2.24.2/libnautilus-private/nautilus-directory-private.h
    156 --- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-directory-private.h	2008-10-06 19:22:21.000000000 +0200
    157 +++ nautilus-2.24.2/libnautilus-private/nautilus-directory-private.h	2009-01-23 22:36:11.641529607 +0100
    158 @@ -114,9 +114,14 @@ struct NautilusDirectoryDetails
    159  
    160  	LinkInfoReadState *link_info_read_state;
    161  
    162 +	GCancellable *restore_cancel;
    163 +
    164  	GList *file_operations_in_progress; /* list of FileOperation * */
    165  
    166  	GHashTable *hidden_file_hash;
    167 +
    168 +	/* zfs snapshot info */
    169 +	GList *zfs_snapshots;
    170  };
    171  
    172  /* A request for information about one or more files. */
    173 @@ -134,6 +139,7 @@ typedef struct {
    174  	gboolean thumbnail;
    175  	gboolean mount;
    176  	gboolean filesystem_info;
    177 +	gboolean restore_info;
    178  } Request;
    179  
    180  NautilusDirectory *nautilus_directory_get_existing                    (GFile                     *location);
    181 diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-directory.c nautilus-2.24.2/libnautilus-private/nautilus-directory.c
    182 --- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-directory.c	2009-01-23 22:38:49.601904193 +0100
    183 +++ nautilus-2.24.2/libnautilus-private/nautilus-directory.c	2009-01-23 22:36:12.453860140 +0100
    184 @@ -38,6 +38,7 @@
    185  #include "nautilus-metafile.h"
    186  #include "nautilus-desktop-directory.h"
    187  #include "nautilus-vfs-directory.h"
    188 +#include "nautilus-zfs.h"
    189  #include <eel/eel-glib-extensions.h>
    190  #include <eel/eel-gtk-macros.h>
    191  #include <eel/eel-string.h>
    192 @@ -140,6 +141,8 @@ nautilus_directory_init (gpointer object
    193  	directory->details->low_priority_queue = nautilus_file_queue_new ();
    194  	directory->details->extension_queue = nautilus_file_queue_new ();
    195  	directory->details->idle_queue = nautilus_idle_queue_new ();
    196 +	directory->details->zfs_snapshots = NULL;
    197 +	directory->details->restore_cancel = NULL;
    198  }
    199  
    200  NautilusDirectory *
    201 @@ -215,7 +218,13 @@ nautilus_directory_finalize (GObject *ob
    202  	if (directory->details->hidden_file_hash) {
    203  		g_hash_table_destroy (directory->details->hidden_file_hash);
    204  	}
    205 -	
    206 +
    207 +	if (directory->details->zfs_snapshots) {
    208 +	        ts_free_snapshots (directory->details->zfs_snapshots);
    209 +	}
    210 +	if (directory->details->restore_cancel)
    211 +	  g_cancellable_cancel (directory->details->restore_cancel);
    212 +
    213  	nautilus_file_queue_destroy (directory->details->high_priority_queue);
    214  	nautilus_file_queue_destroy (directory->details->low_priority_queue);
    215  	nautilus_file_queue_destroy (directory->details->extension_queue);
    216 @@ -330,11 +339,27 @@ async_data_preference_changed_callback (
    217  	g_hash_table_foreach (directories, async_state_changed_one, NULL);
    218  }
    219  
    220 +static gboolean time_slider_enabled = TRUE;
    221 +
    222 +gboolean
    223 +is_time_slider_enabled ()
    224 +{
    225 +  return time_slider_enabled;
    226 +}
    227 +
    228 +static void time_slider_pref_changed_callback ()
    229 +{
    230 +  time_slider_enabled = eel_preferences_get_boolean (NAUTILUS_PREFERENCES_ENABLE_TIME_SLIDER);
    231 +}
    232 +
    233 +
    234  static void
    235  add_preferences_callbacks (void)
    236  {
    237  	nautilus_global_preferences_init ();
    238  
    239 +	time_slider_enabled = eel_preferences_get_boolean (NAUTILUS_PREFERENCES_ENABLE_TIME_SLIDER);
    240 +
    241  	eel_preferences_add_callback (NAUTILUS_PREFERENCES_SHOW_HIDDEN_FILES,
    242  				      filtering_changed_callback,
    243  				      NULL);
    244 @@ -351,6 +376,9 @@ add_preferences_callbacks (void)
    245  	eel_preferences_add_callback (NAUTILUS_PREFERENCES_DATE_FORMAT,
    246  				      async_data_preference_changed_callback,
    247  				      NULL);
    248 +	eel_preferences_add_callback (NAUTILUS_PREFERENCES_ENABLE_TIME_SLIDER,
    249 +				      time_slider_pref_changed_callback,
    250 +				      NULL);
    251  }
    252  
    253  /**
    254 @@ -544,6 +572,7 @@ nautilus_directory_new (GFile *location)
    255  {
    256  	NautilusDirectory *directory;
    257  	char *uri;
    258 +	char *path;
    259  
    260  	uri = g_file_get_uri (location);
    261  	
    262 @@ -555,10 +584,13 @@ nautilus_directory_new (GFile *location)
    263  		directory = NAUTILUS_DIRECTORY (nautilus_search_directory_new_from_saved_search (uri));
    264  	} else {
    265  		directory = NAUTILUS_DIRECTORY (g_object_new (NAUTILUS_TYPE_VFS_DIRECTORY, NULL));
    266 +		path = g_file_get_path (location);
    267 +		g_free (path);
    268  	}
    269  
    270  	set_directory_location (directory, location);
    271  
    272 +
    273  	g_free (uri);
    274  	
    275  	return directory;
    276 @@ -577,6 +609,197 @@ nautilus_directory_is_local (NautilusDir
    277  	       g_file_is_native (directory->details->location);
    278  }
    279  
    280 +typedef struct {
    281 +  NautilusDirectory         *dir;
    282 +  GCancellable	            *cancel;
    283 +  TsReadyCallback	     callback;
    284 +  gpointer		     callback_user_data;
    285 +} QuerySnapshotsAsyncData;
    286 +
    287 +
    288 +static void snapshot_list_ready_callback (GObject *source_object,
    289 +					  GAsyncResult *res,
    290 +					  gpointer user_data)
    291 +{
    292 +  GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (res);
    293 +  QuerySnapshotsAsyncData *data = (QuerySnapshotsAsyncData*) user_data;
    294 +
    295 +  if (!g_cancellable_is_cancelled (data->cancel))
    296 +    {
    297 +      data->dir->details->zfs_snapshots = g_simple_async_result_get_op_res_gpointer (simple);
    298 +    }
    299 +
    300 +  data->callback (data->dir, data->cancel, data->callback_user_data);
    301 +}
    302 +
    303 +void
    304 +nautilus_directory_get_snapshots_async (NautilusDirectory *directory, 
    305 +					TsReadyCallback ready_callback, 
    306 +					GCancellable *cancel, 
    307 +					gpointer      callback_user_data)
    308 +{
    309 +	g_assert (NAUTILUS_IS_DIRECTORY (directory));
    310 +	
    311 +	if (directory->details->location == NULL) 
    312 +	  return;
    313 +
    314 +	if (directory->details->zfs_snapshots) {
    315 +	  ts_free_snapshots (directory->details->zfs_snapshots);
    316 +	  directory->details->zfs_snapshots = NULL;
    317 +	}
    318 +	
    319 +	if (is_time_slider_enabled ())
    320 +	  {
    321 +	    QuerySnapshotsAsyncData *data;
    322 +	    data = g_new0 (QuerySnapshotsAsyncData,1);
    323 +	    data->dir = directory;
    324 +	    data->cancel = cancel;
    325 +	    data->callback = ready_callback;
    326 +	    data->callback_user_data = callback_user_data;
    327 +
    328 +	    ts_get_snapshots_for_dir_async (directory->details->location, 
    329 +					    snapshot_list_ready_callback, 
    330 +					    cancel,
    331 +					    data);
    332 +	  }
    333 +}
    334 +
    335 +gboolean
    336 +nautilus_directory_has_snapshots (NautilusDirectory *directory)
    337 +{
    338 +	g_assert (NAUTILUS_IS_DIRECTORY (directory));
    339 +	
    340 +	if (directory->details->zfs_snapshots)
    341 +	  return TRUE;
    342 +
    343 +	return FALSE;
    344 +}
    345 +int
    346 +nautilus_directory_get_num_snapshots (NautilusDirectory	*directory)
    347 +{
    348 +  g_assert (NAUTILUS_IS_DIRECTORY (directory));
    349 +
    350 +    if (directory->details->zfs_snapshots)
    351 +      {
    352 +	int i = 0;
    353 +	GList *tmp;
    354 +	for (tmp = directory->details->zfs_snapshots;tmp;tmp = tmp->next)
    355 +	  i++;
    356 +	return i;
    357 +      }
    358 +    return 0;
    359 +}
    360 +
    361 +gboolean           
    362 +nautilus_directory_is_in_snapshot (NautilusDirectory         *directory)
    363 +{
    364 +  char *directory_uri;
    365 +  gboolean result = FALSE;
    366 +
    367 +  g_return_val_if_fail (NAUTILUS_IS_DIRECTORY (directory), FALSE);
    368 +  
    369 +  directory_uri = nautilus_directory_get_uri (directory);
    370 +  
    371 +  result = ts_is_in_snapshot (directory_uri);
    372 +
    373 +  g_free (directory_uri);
    374 +
    375 +  return result;
    376 +}
    377 +
    378 +GList *
    379 +nautilus_directory_get_snapshots (NautilusDirectory *directory)
    380 +{
    381 +  g_assert (NAUTILUS_IS_DIRECTORY (directory));
    382 +
    383 +  return directory->details->zfs_snapshots;
    384 +}
    385 +
    386 +void  nautilus_directory_remove_snapshot (NautilusDirectory *directory,
    387 +					  ZfsDataSet *snap)
    388 +{
    389 +  if (directory->details->zfs_snapshots)
    390 +    {
    391 +      directory->details->zfs_snapshots = g_list_remove (directory->details->zfs_snapshots, snap);
    392 +      ts_free_zfs_dataset (snap);
    393 +    }
    394 +}
    395 +/* return true if snapdir dir path is a dir or subdir of refdir */
    396 +gboolean 
    397 +nautilus_directory_is_a_snapshot_dir_of (NautilusDirectory *snapdir,
    398 +					 NautilusDirectory *refdir)
    399 +{
    400 +
    401 +   gboolean result = FALSE;   
    402 +
    403 +  if (nautilus_directory_is_in_snapshot (snapdir))
    404 +    {
    405 +      char snapdir_root_real_path [PATH_MAX+1];
    406 +      char refdir_real_path [PATH_MAX+1];
    407 +      NautilusDirectory *snapdir_root = nautilus_directory_get_snap_root (snapdir);
    408 +      GFile *snapdir_root_file = nautilus_directory_get_location (snapdir_root);
    409 +      GFile *refdir_file = nautilus_directory_get_location (refdir);
    410 +      char* snapdir_root_path = g_file_get_path (snapdir_root_file);
    411 +      char* refdir_path = g_file_get_path (refdir_file);
    412 +      
    413 +      if (realpath (snapdir_root_path, snapdir_root_real_path) && 
    414 +	      realpath (refdir_path, refdir_real_path))
    415 +	    {
    416 +	      if (g_strrstr (snapdir_root_real_path,refdir_real_path))
    417 +		result = TRUE;
    418 +	    }
    419 +
    420 +	  g_free (snapdir_root_path);
    421 +	  g_free (refdir_path);
    422 +	  g_object_unref (snapdir_root_file);
    423 +	  g_object_unref (refdir_file);
    424 +	  g_object_unref (snapdir_root);
    425 +    }
    426 +
    427 +  return result;
    428 +}
    429 +
    430 +NautilusDirectory *nautilus_directory_get_snap_root (NautilusDirectory	  *directory)
    431 +{
    432 +  char *directory_uri, *snap_root;
    433 +  char *zfs, *iter;
    434 +  int count = 0;
    435 +  NautilusDirectory *new_dir;
    436 +
    437 +  g_assert (NAUTILUS_IS_DIRECTORY (directory));
    438 +  
    439 +  directory_uri = nautilus_directory_get_uri (directory);
    440 +
    441 +  if (!nautilus_directory_is_in_snapshot (directory))
    442 +    return directory;
    443 +
    444 +  /*remove .zfs/snapshot/blah/ */
    445 +  zfs = g_strrstr (directory_uri, ".zfs/snapshot/");
    446 +  iter = zfs;
    447 +
    448 +  if (iter)
    449 +    {
    450 +      iter += sizeof (".zfs/snapshot/");
    451 +      while (*iter != '/' && *iter != '\0')
    452 +	iter++;
    453 +
    454 +      if (*iter == '/')
    455 +	iter++;
    456 +      
    457 +      *zfs = '\0';
    458 +      snap_root = g_strdup_printf ("%s%s", directory_uri, iter);
    459 +      
    460 +      *zfs = 'a';
    461 +      g_free (directory_uri);
    462 +      new_dir = nautilus_directory_get_by_uri (snap_root);
    463 +      g_free (snap_root);
    464 +      return new_dir;
    465 +    }
    466 +  return directory;
    467 +}
    468 +
    469 +
    470 +
    471  gboolean
    472  nautilus_directory_is_in_trash (NautilusDirectory *directory)
    473  {
    474 diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-directory.h nautilus-2.24.2/libnautilus-private/nautilus-directory.h
    475 --- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-directory.h	2008-10-06 19:22:21.000000000 +0200
    476 +++ nautilus-2.24.2/libnautilus-private/nautilus-directory.h	2009-01-23 22:36:11.710303836 +0100
    477 @@ -28,6 +28,7 @@
    478  #include <gtk/gtk.h>
    479  #include <gio/gio.h>
    480  #include <libnautilus-private/nautilus-file-attributes.h>
    481 +#include <libnautilus-private/nautilus-zfs.h>
    482  
    483  /* NautilusDirectory is a class that manages the model for a directory,
    484     real or virtual, for Nautilus, mainly the file-manager component. The directory is
    485 @@ -218,6 +219,24 @@ gboolean           nautilus_directory_ar
    486  gboolean           nautilus_directory_is_local                 (NautilusDirectory         *directory);
    487  
    488  gboolean           nautilus_directory_is_in_trash              (NautilusDirectory         *directory);
    489 +typedef void (*TsReadyCallback) (NautilusDirectory *directory,
    490 +				 GCancellable	   *cancellable,
    491 +				 gpointer           callback_data);
    492 +
    493 +void		   nautilus_directory_get_snapshots_async      (NautilusDirectory	  *directory, 
    494 +								TsReadyCallback		   ready_callback, 
    495 +								GCancellable		  *cancel, 
    496 +								gpointer		   callback_user_data);
    497 +gboolean           nautilus_directory_has_snapshots            (NautilusDirectory         *directory);
    498 +gboolean           nautilus_directory_is_in_snapshot           (NautilusDirectory         *directory);
    499 +int		   nautilus_directory_get_num_snapshots	       (NautilusDirectory	  *directory);
    500 +GList *		   nautilus_directory_get_snapshots	       (NautilusDirectory	  *directory);
    501 +void		   nautilus_directory_remove_snapshot	       (NautilusDirectory	  *directory,
    502 +								ZfsDataSet		  *snap);
    503 +NautilusDirectory *nautilus_directory_get_snap_root	       (NautilusDirectory	  *directory);
    504 +gboolean	   nautilus_directory_is_a_snapshot_dir_of     (NautilusDirectory	  *snapdir,
    505 +								NautilusDirectory	  *refdir);
    506 +void		   nautilus_directory_cancel_restore_info      (NautilusDirectory	  *directory);
    507  
    508  /* Return false if directory contains anything besides a Nautilus metafile.
    509   * Only valid if directory is monitored. Used by the Trash monitor.
    510 @@ -238,6 +257,7 @@ GList *            nautilus_directory_li
    511  gboolean           nautilus_directory_is_desktop_directory     (NautilusDirectory         *directory);
    512  
    513  gboolean           nautilus_directory_is_editable              (NautilusDirectory         *directory);
    514 +gboolean	   is_time_slider_enabled ();
    515  
    516  
    517  #endif /* NAUTILUS_DIRECTORY_H */
    518 diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-file-attributes.h nautilus-2.24.2/libnautilus-private/nautilus-file-attributes.h
    519 --- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-file-attributes.h	2008-10-06 19:22:21.000000000 +0200
    520 +++ nautilus-2.24.2/libnautilus-private/nautilus-file-attributes.h	2009-01-23 22:36:12.450443252 +0100
    521 @@ -42,6 +42,7 @@ typedef enum {
    522  	NAUTILUS_FILE_ATTRIBUTE_THUMBNAIL = 1 << 9,
    523  	NAUTILUS_FILE_ATTRIBUTE_MOUNT = 1 << 10,
    524  	NAUTILUS_FILE_ATTRIBUTE_FILESYSTEM_INFO = 1 << 11,
    525 +	NAUTILUS_FILE_ATTRIBUTE_RESTORE_INFO = 1 << 12,
    526  } NautilusFileAttributes;
    527  
    528  #endif /* NAUTILUS_FILE_ATTRIBUTES_H */
    529 diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-file-private.h nautilus-2.24.2/libnautilus-private/nautilus-file-private.h
    530 --- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-file-private.h	2008-10-06 19:22:21.000000000 +0200
    531 +++ nautilus-2.24.2/libnautilus-private/nautilus-file-private.h	2009-01-23 22:36:11.662583045 +0100
    532 @@ -146,6 +146,15 @@ struct NautilusFileDetails
    533  
    534  	/* Mount for mountpoint or the references GMount for a "mountable" */
    535  	GMount *mount;
    536 +
    537 +	/* time slider file difference information */
    538 +
    539 +	char *restore_info;
    540 +
    541 +        /* snapshot directory for versions */
    542 +
    543 +        char *snapshot_directory;
    544 +        GCancellable *has_snapshot_cancel;
    545  	
    546  	/* boolean fields: bitfield to save space, since there can be
    547             many NautilusFile objects. */
    548 @@ -194,6 +203,13 @@ struct NautilusFileDetails
    549  	
    550  	eel_boolean_bit is_thumbnailing               : 1;
    551  
    552 +	eel_boolean_bit restore_info_is_up_to_date    : 1;
    553 +	eel_boolean_bit restore_info_in_progress      : 1;
    554 +
    555 +        eel_boolean_bit has_snap_versions_is_up_to_date    : 1;
    556 +	eel_boolean_bit has_snap_versions_in_progress      : 1;
    557 +        eel_boolean_bit has_snap_versions                  : 1;
    558 +
    559  	/* TRUE if the file is open in a spatial window */
    560  	eel_boolean_bit has_open_window               : 1;
    561  
    562 diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-file.c nautilus-2.24.2/libnautilus-private/nautilus-file.c
    563 --- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-file.c	2009-01-23 22:38:49.604932056 +0100
    564 +++ nautilus-2.24.2/libnautilus-private/nautilus-file.c	2009-01-23 22:36:11.724833444 +0100
    565 @@ -48,6 +48,7 @@
    566  #include "nautilus-vfs-file.h"
    567  #include "nautilus-saved-search-file.h"
    568  #include "nautilus-lockdown.h"
    569 +#include "nautilus-zfs.h"
    570  #include <eel/eel-debug.h>
    571  #include <eel/eel-glib-extensions.h>
    572  #include <eel/eel-gtk-extensions.h>
    573 @@ -146,7 +147,8 @@ static GQuark attribute_name_q,
    574  	attribute_where_q,
    575  	attribute_link_target_q,
    576  	attribute_volume_q,
    577 -	attribute_free_space_q;
    578 +	attribute_free_space_q,
    579 +	attribute_restore_info_q;
    580  
    581  
    582  static void     nautilus_file_instance_init                  (NautilusFile          *file);
    583 @@ -159,6 +161,7 @@ static gboolean update_info_and_name    
    584  							      GFileInfo             *info);
    585  static const char * nautilus_file_peek_display_name (NautilusFile *file);
    586  static const char * nautilus_file_peek_display_name_collation_key (NautilusFile *file);
    587 +static void invalidate_restore_info (NautilusFile *file);
    588  
    589  GType
    590  nautilus_file_get_type (void)
    591 @@ -364,6 +367,14 @@ nautilus_file_clear_info (NautilusFile *
    592  
    593  	eel_ref_str_unref (file->details->filesystem_id);
    594  	file->details->filesystem_id = NULL;
    595 +	g_free (file->details->restore_info);
    596 +	file->details->restore_info = NULL;
    597 +	invalidate_restore_info (file);
    598 +        g_free (file->details->snapshot_directory);
    599 +	file->details->snapshot_directory = NULL;
    600 +        file->details->has_snap_versions_in_progress = FALSE;
    601 +        file->details->has_snap_versions_is_up_to_date = FALSE;
    602 +        file->details->has_snap_versions = FALSE;
    603  }
    604  
    605  static NautilusFile *
    606 @@ -674,6 +685,9 @@ finalize (GObject *object)
    607  	g_free (file->details->selinux_context);
    608  	g_free (file->details->top_left_text);
    609  	g_free (file->details->custom_icon);
    610 +	g_free (file->details->restore_info);
    611 +        if (file->details->snapshot_directory)
    612 +                g_free (file->details->snapshot_directory);
    613  	if (file->details->activation_location) {
    614  		g_object_unref (file->details->activation_location);
    615  	}
    616 @@ -5442,7 +5456,9 @@ nautilus_file_get_string_attribute_q (Na
    617  	if (attribute_q == attribute_free_space_q) {
    618  		return nautilus_file_get_volume_free_space (file);
    619  	}
    620 -
    621 +	if (attribute_q == attribute_restore_info_q) {
    622 +		return nautilus_file_get_restore_info_async (file);
    623 +	}
    624  	extension_attribute = NULL;
    625  	
    626  	if (file->details->pending_extension_attributes) {
    627 @@ -6332,6 +6348,616 @@ nautilus_file_get_trash_original_file (N
    628  
    629  }
    630  
    631 +gboolean                
    632 +nautilus_file_is_in_snapshot (NautilusFile *file)
    633 +{
    634 +  char *file_uri = nautilus_file_get_uri (file);
    635 +  gboolean result = ts_is_in_snapshot (file_uri);
    636 +  g_free (file_uri);
    637 +  return result;
    638 +}
    639 +
    640 +static gboolean nautilus_file_in_snap_exist_in_current (NautilusFile *file, GCancellable *cancel)
    641 +{
    642 +  /* get path without /.zfs/snapshot/blah/ */
    643 +  /* test is file exist */
    644 +  char *file_uri = nautilus_file_get_uri (file);
    645 +  char *file_uri_without_snap = NULL;
    646 +  gboolean result = FALSE;
    647 +
    648 +  if (g_cancellable_is_cancelled (cancel))
    649 +    {
    650 +      g_free (file_uri);
    651 +      return FALSE;
    652 +    }
    653 +
    654 +  file_uri_without_snap = ts_remove_snapshot_dir (file_uri);
    655 +
    656 +  if (file_uri_without_snap)
    657 +    {
    658 +      GFile* root_file = g_file_new_for_uri (file_uri_without_snap);
    659 +      char *path = g_file_get_path (root_file);
    660 +	  
    661 +      if (path)
    662 +	{
    663 +	  result =  g_file_test (path, G_FILE_TEST_EXISTS);
    664 +	  g_free (path);
    665 +	}
    666 +      g_object_unref (root_file);
    667 +      g_free (file_uri_without_snap);
    668 +
    669 +    }
    670 +  
    671 +  g_free (file_uri);
    672 +
    673 +  return result;
    674 +}
    675 +
    676 +
    677 +char * nautilus_file_in_snapshot_get_info (NautilusFile *file, GCancellable *cancel)
    678 +{
    679 +  char *info = NULL;
    680 +  GFile *then_gfile = nautilus_file_get_location (file);
    681 +  char *then_path = g_file_get_path (then_gfile);
    682 +  g_object_unref (then_gfile);
    683 +
    684 +  if (g_cancellable_is_cancelled (cancel))
    685 +    {
    686 +      g_free (then_gfile);
    687 +      g_free (then_path);
    688 +      return g_strdup ("cancelled");
    689 +    }
    690 +  if (then_path)
    691 +    {
    692 +      struct stat64 now;
    693 +      struct stat64 then;
    694 +      char *now_path = ts_remove_snapshot_dir (then_path);
    695 +
    696 +      if (lstat64 (now_path, &now) == 0)
    697 +	{
    698 +	  if (lstat64 (then_path, &then) == 0)
    699 +	    {
    700 +
    701 +	      if (now.st_mtime != then.st_mtime)
    702 +		{
    703 +		  if (now.st_size == then.st_size)
    704 +		    /* SUN_BRANDING */
    705 +		    info = g_strdup (_("different date, same size as latest version"));
    706 +		  else if (now.st_size > then.st_size)
    707 +		    /* SUN_BRANDING */
    708 +		    info = g_strdup (_("different date, smaller than latest version"));
    709 +		  else if ( now.st_size < then.st_size)
    710 +		    /* SUN_BRANDING */
    711 +		    info = g_strdup (_("different date, bigger than latest version"));
    712 +		}
    713 +	      else
    714 +		/* SUN_BRANDING */
    715 +		info = g_strdup (_("identical to latest version"));
    716 +	    }
    717 +	  else
    718 +	    info = g_strdup_printf ("FIXME no then %s", then_path);
    719 +	}
    720 +      else
    721 +	/* SUN_BRANDING */
    722 +	info = g_strdup (_("not present in latest version"));
    723 +
    724 +      g_free (now_path);
    725 +      g_free (then_path);
    726 +    }
    727 +
    728 +  return info;
    729 +}
    730 +
    731 +static char * restore_string (char *str, GCancellable *cancel)
    732 +{
    733 +  if (g_cancellable_is_cancelled (cancel))
    734 +    {
    735 +      g_free (str);
    736 +      return g_strdup (_("unknown"));
    737 +    }
    738 +  else
    739 +    return str;
    740 +}
    741 +
    742 +gint time_cmp (time_t *a,
    743 +	       time_t *b)
    744 +{
    745 +  if (*a == *b)
    746 +    return 0;
    747 +  if (*a > *b)
    748 +    return 1;
    749 +  if (*a < *b)
    750 +    return -1;
    751 +
    752 +}
    753 +
    754 +char *			
    755 +nautilus_file_get_num_snapshot_version (NautilusFile *file, 
    756 +                                        GCancellable *cancel,
    757 +                                        gboolean stop_at_first)
    758 +{
    759 +  GList *tmp = NULL;
    760 +  GList *tmp2 = NULL;
    761 +  GList *time = NULL;
    762 +  time_t* now_time = NULL;
    763 +  char *result = NULL;
    764 +  int version = 0;
    765 +  NautilusFile *parent = NULL;
    766 +  NautilusDirectory *dir = NULL;
    767 +  char *snapdir = NULL;
    768 +
    769 +  if (NAUTILUS_IS_FILE (file))
    770 +    {
    771 +      parent = nautilus_file_get_parent (file);
    772 +      if (parent)
    773 +	{
    774 +	  dir = nautilus_directory_get_for_file (parent);
    775 +	  g_object_unref (parent);
    776 +	}
    777 +    }
    778 +  if (dir)
    779 +    {
    780 +      struct stat64 now;
    781 +      struct stat64 then;
    782 +      char snap_name[PATH_MAX+1];
    783 +      char *name = nautilus_file_get_name (file);
    784 +      
    785 +      g_object_ref (dir);
    786 +      tmp = nautilus_directory_get_snapshots (dir);
    787 +      
    788 +      GFile *now_gfile = nautilus_file_get_location (file);
    789 +      char *now_path = g_file_get_path (now_gfile);
    790 +      g_object_unref (now_gfile);
    791 +
    792 +      if (now_path)
    793 +	{
    794 +	  if (lstat64 (now_path, &now) != 0)
    795 +	    {
    796 +	      g_free (now_path);
    797 +	      g_object_unref (dir);
    798 +	      return NULL;
    799 +	    }
    800 +	}
    801 +      
    802 +      g_free (now_path);
    803 +
    804 +      time = NULL;
    805 +
    806 +      /* get list of mtime for all files in snapshots */
    807 +
    808 +      now_time = g_new0 (time_t, 1);
    809 +      *now_time = now.st_mtim.tv_sec;
    810 +      time = g_list_prepend (time, now_time);
    811 +
    812 +
    813 +      for (tmp; tmp; tmp = tmp->next)
    814 +	{
    815 +	  g_sprintf (snap_name, "%s/%s", 
    816 +		     ((ZfsDataSet *) tmp->data)->mountpoint, 
    817 +		     name);
    818 +	  if (g_cancellable_is_cancelled (cancel))
    819 +	    goto cancel;
    820 +	  if (lstat64 (snap_name, &then) == 0)
    821 +	    {
    822 +	      if (g_list_find_custom (time, &then.st_mtim.tv_sec, (GCompareFunc) time_cmp) == NULL)
    823 +		{ /*insert in list only is unique */
    824 +		  time_t* snap_time = g_new0 (time_t, 1);
    825 +		  *snap_time = then.st_mtim.tv_sec;
    826 +		  time = g_list_prepend (time, snap_time);
    827 +                  if (stop_at_first)
    828 +                    {
    829 +                      snapdir = g_strdup (((ZfsDataSet *) tmp->data)->mountpoint);
    830 +                      goto cancel;
    831 +                    }
    832 +		}
    833 +	    }
    834 +
    835 +	}
    836 +cancel:
    837 +      g_free (name);
    838 +      g_object_unref (dir);
    839 +    }
    840 +
    841 +
    842 +  for (tmp = time; tmp; tmp = tmp->next)
    843 +    {
    844 +      g_free ((time_t*) tmp->data);
    845 +      version++;
    846 +    }
    847 +
    848 +  /* remove current version */
    849 +  version--;
    850 +
    851 +  g_list_free (time);
    852 +
    853 +  if (version == 0)
    854 +    {
    855 +      if (stop_at_first)
    856 +        return NULL;
    857 +      else /*SUN_BRANDING*/
    858 +        return restore_string (g_strdup_printf (_("no other version")), cancel);
    859 +    }
    860 +
    861 +  if (stop_at_first)
    862 +    return snapdir;
    863 +  else
    864 +    /* SUN_BRANDING */
    865 +    return restore_string (g_strdup_printf ("%d %s", version,
    866 +                                            version > 1 ? _ ("other versions") : _ ("other version")),
    867 +                           cancel);
    868 +}
    869 +
    870 +static gboolean worker_thread_started = FALSE;
    871 +
    872 +typedef void (*ReadyCallback) (gpointer		  data,
    873 +			       GCancellable      *cancellable);
    874 +typedef void (*WorkerFunction) (gpointer		  data,
    875 +			       GCancellable      *cancellable);
    876 +typedef struct {
    877 +  gpointer	    data;
    878 +  gpointer	    return_data;
    879 +  ReadyCallback	    ready_callback;
    880 +  WorkerFunction    worker_func;
    881 +  GCancellable	    *cancellable;
    882 +} QueryData;
    883 +
    884 +static void 		
    885 +nautilus_file_get_restore_info (gpointer data,
    886 +				GCancellable       *cancellable)
    887 +{
    888 +  QueryData *qdata = (QueryData*) data;
    889 +  NautilusFile *file = NAUTILUS_FILE (qdata->data);
    890 +  char *result = NULL;
    891 +
    892 +  /*{
    893 +    struct timespec ts;
    894 +    ts.tv_sec = 1;
    895 +    ts.tv_nsec = 0;
    896 +    nanosleep (&ts, NULL);
    897 +  }
    898 +
    899 +    {
    900 +      GFile *f = nautilus_file_get_location (file);
    901 +      char *path = g_file_get_uri (f);
    902 +      printf ("start restore info for %s", path);
    903 +      g_free (path);
    904 +      g_object_unref (f);
    905 +    }*/
    906 +  if (!g_cancellable_is_cancelled (cancellable))
    907 +    {
    908 +
    909 +      if (nautilus_file_is_directory (file))
    910 +	{
    911 +	  NautilusDirectory *dir = nautilus_directory_get_for_file (file);
    912 +	  g_object_ref (dir);
    913 +	  if (nautilus_directory_is_in_snapshot (dir))
    914 +	    {
    915 +	      if (!nautilus_file_in_snap_exist_in_current (file, cancellable))
    916 +		/* SUN_BRANDING */
    917 +		result = g_strdup (_("not present in latest version"));
    918 +	      else
    919 +		/* SUN_BRANDING */
    920 +		result = g_strdup (_("present in latest version"));
    921 +	    }
    922 +	  else
    923 +	    {
    924 +	      int version = nautilus_directory_get_num_snapshots (dir);
    925 +
    926 +	      if (version == 0)
    927 +		/* SUN_BRANDING */
    928 +		result = g_strdup (_("no version"));
    929 +	      else
    930 +		/* SUN_BRANDING */
    931 +		result = g_strdup_printf ("%d %s",version,
    932 +					  version > 1 ? _("versions") : _("version"));
    933 +	    }
    934 +	  g_object_unref (dir);
    935 +	}
    936 +      else
    937 +	{
    938 +	  if (nautilus_file_is_in_snapshot (file))
    939 +	      result = nautilus_file_in_snapshot_get_info (file, cancellable);
    940 +	  else
    941 +	      result = nautilus_file_get_num_snapshot_version (file, cancellable, FALSE);
    942 +	}
    943 +    }
    944 +
    945 +/*    {
    946 +      printf ("is %s\n", result);
    947 +    }*/
    948 +
    949 +
    950 +  qdata->return_data = restore_string (result, cancellable);
    951 +}
    952 +
    953 +
    954 +static void restore_information_ready_callback (gpointer data,
    955 +						GCancellable *cancellable)
    956 +{
    957 +  QueryData *qdata = (QueryData*) data;
    958 +  NautilusFile *file = (NautilusFile*) qdata->data;
    959 +  char *return_data = qdata->return_data;
    960 +
    961 +  if (!NAUTILUS_IS_FILE (file))
    962 +    return;
    963 +
    964 +  file->details->restore_info_in_progress = FALSE;
    965 +
    966 +  if (g_cancellable_is_cancelled (cancellable))
    967 +    {
    968 +      file->details->restore_info = g_strdup (_("unknown"));
    969 +      invalidate_restore_info (file);
    970 +      if (return_data)
    971 +	g_free (return_data);
    972 +    }
    973 +  else
    974 +    {
    975 +      file->details->restore_info_is_up_to_date = TRUE;
    976 +      file->details->restore_info = return_data;
    977 +    }
    978 +
    979 +  nautilus_file_changed (file);
    980 +  nautilus_file_unref (file);
    981 +}
    982 +
    983 +
    984 +static gboolean
    985 +complete_in_idle_cb (gpointer data)
    986 +{
    987 +  QueryData *qdata = (QueryData*)data;
    988 +  qdata->ready_callback (data, qdata->cancellable);
    989 +  g_free (qdata);
    990 +  return FALSE;
    991 +}
    992 +
    993 +static void
    994 +worker_queue_finished_callback (GObject *source_object,
    995 +				GAsyncResult *res,
    996 +				gpointer user_data)
    997 +{
    998 +  GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (res);
    999 +  GCancellable *cancel = (GCancellable*) user_data;
   1000 +
   1001 +  worker_thread_started = FALSE;
   1002 +
   1003 +  if (g_cancellable_is_cancelled (cancel))
   1004 +    {
   1005 +      return;
   1006 +    }
   1007 +
   1008 +  g_simple_async_result_get_op_res_gpointer (simple);
   1009 +
   1010 +}
   1011 +
   1012 +static void
   1013 +worker_queue_func (GSimpleAsyncResult *res,
   1014 +		   GObject            *object,
   1015 +		   GCancellable       *cancellable)
   1016 +{
   1017 +  QueryData *data = NULL;
   1018 +
   1019 +  GTimeVal timeout;
   1020 +  GAsyncQueue *queue = (GAsyncQueue*) g_simple_async_result_get_op_res_gpointer (res);
   1021 +  g_async_queue_ref (queue);
   1022 +
   1023 +  g_get_current_time (&timeout);
   1024 +  g_time_val_add (&timeout, 3000000);
   1025 +
   1026 +  data = g_async_queue_timed_pop (queue, &timeout);
   1027 +
   1028 +  while (data)
   1029 +    {
   1030 +      GSource *source;
   1031 +
   1032 +      /* only call the worker fct if not cancel 
   1033 +       * but execute ready function anyway */
   1034 +      if (!g_cancellable_is_cancelled (data->cancellable))
   1035 +	data->worker_func (data, data->cancellable);
   1036 +
   1037 +      /*call ready callback in main loop/thread */
   1038 +      source = g_idle_source_new ();
   1039 +      g_source_set_priority (source, G_PRIORITY_DEFAULT);
   1040 +      g_source_set_callback (source, complete_in_idle_cb, data, NULL);
   1041 +      g_source_attach (source, NULL);
   1042 +      g_source_unref (source);
   1043 +
   1044 +      /* pop next one */
   1045 +      g_get_current_time (&timeout);
   1046 +      g_time_val_add (&timeout, 3000000);
   1047 +      data = g_async_queue_timed_pop (queue, &timeout);
   1048 +    }
   1049 +
   1050 +  g_async_queue_unref (queue);
   1051 +}
   1052 +
   1053 +char * nautilus_file_get_restore_info_async (NautilusFile *file)
   1054 +{
   1055 +  if (!is_time_slider_enabled ())
   1056 +    return NULL;
   1057 +
   1058 +  if (!ts_is_restore_column_enabled ())
   1059 +    return NULL;
   1060 +
   1061 +  if (file->details->restore_info_is_up_to_date)
   1062 +    {
   1063 +      /*if ( file->details->restore_info == NULL)
   1064 +	return g_strdup ("null cached info");*/
   1065 +      return g_strdup (file->details->restore_info);
   1066 +    }
   1067 +
   1068 +  if (file->details->restore_info_in_progress)
   1069 +    return g_strdup ("...");
   1070 +  else
   1071 +    {
   1072 +      static GAsyncQueue *queue = NULL;
   1073 +      QueryData *data  = NULL;
   1074 +
   1075 +      if (!file->details->directory)
   1076 +	return g_strdup ("no directory element\n");
   1077 +
   1078 +      if (!nautilus_directory_has_snapshots (file->details->directory) && !nautilus_file_is_in_snapshot (file))
   1079 +	return g_strdup ("doesn't have snap nor is in snap\n");
   1080 +
   1081 +      if (!file->details->directory->details->restore_cancel)
   1082 +	{
   1083 +	  file->details->directory->details->restore_cancel = g_cancellable_new ();
   1084 +	}
   1085 +      else
   1086 +	{
   1087 +	  if (g_cancellable_is_cancelled (file->details->directory->details->restore_cancel))
   1088 +	    return NULL;
   1089 +	}
   1090 +
   1091 +      g_free (file->details->restore_info);
   1092 +      file->details->restore_info = NULL;
   1093 +      file->details->restore_info_in_progress = TRUE;
   1094 +
   1095 +      if (!queue)
   1096 +	queue = g_async_queue_new ();
   1097 +
   1098 +      data = g_new0 (QueryData, 1);
   1099 +      data->data = file;
   1100 +      nautilus_file_ref (file);
   1101 +      data->cancellable = file->details->directory->details->restore_cancel;
   1102 +      data->ready_callback = restore_information_ready_callback;
   1103 +      data->worker_func = nautilus_file_get_restore_info;
   1104 +
   1105 +      g_async_queue_push (queue, data);
   1106 +
   1107 +      if (!worker_thread_started)
   1108 +	{
   1109 +	  GSimpleAsyncResult *res;
   1110 +	  worker_thread_started = TRUE;
   1111 +
   1112 +	  res = g_simple_async_result_new (G_OBJECT (file), 
   1113 +					   worker_queue_finished_callback, 
   1114 +					   NULL, 
   1115 +					   (gpointer) worker_queue_func);
   1116 +
   1117 +	  g_simple_async_result_set_op_res_gpointer (res, queue, NULL);
   1118 +	  g_simple_async_result_run_in_thread (res, 
   1119 +					       worker_queue_func, 
   1120 +					       G_PRIORITY_DEFAULT, 
   1121 +					       data->cancellable);
   1122 +	}
   1123 +
   1124 +      return g_strdup ("...");
   1125 +    }
   1126 +}
   1127 +
   1128 +HasSnapshotResult
   1129 +nautilus_file_has_snapshot_version (NautilusFile *file)
   1130 +{
   1131 +    if (file->details->has_snap_versions_is_up_to_date)
   1132 +        return (file->details->has_snap_versions);
   1133 +    return UNKNOWN_STATE;
   1134 +}
   1135 +
   1136 +typedef struct {
   1137 +  NautilusFile              *file;
   1138 +  GCancellable              *cancel;
   1139 +  FileHasSnapshotCallback    callback;
   1140 +  gpointer		     callback_user_data;
   1141 +  char                      *snap_dir;
   1142 +} HasSnapshotAsyncData;
   1143 +
   1144 +typedef void (*HasSnapReadyCallback) (NautilusDirectory *file,
   1145 +                                      GCancellable	*cancel,
   1146 +                                      gpointer           callback_data);
   1147 +
   1148 +
   1149 +static void has_snapshot_ready_callback (GObject *source_object,
   1150 +                                         GAsyncResult *res,
   1151 +                                         gpointer user_data)
   1152 +{
   1153 +  GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (res);
   1154 +  HasSnapshotAsyncData *data = (HasSnapshotAsyncData*) user_data;
   1155 +
   1156 +  if (g_cancellable_is_cancelled (data->cancel))
   1157 +    {
   1158 +      data->file->details->has_snap_versions_in_progress = FALSE;
   1159 +      data->file->details->has_snap_versions_is_up_to_date = FALSE;
   1160 +      if (data->file->details->snapshot_directory)
   1161 +        g_free (data->file->details->snapshot_directory);
   1162 +      
   1163 +      data->file->details->has_snapshot_cancel = NULL;
   1164 +    }
   1165 +  else
   1166 +    {
   1167 +      data->file->details->has_snap_versions_in_progress = FALSE;
   1168 +      data->file->details->has_snap_versions_is_up_to_date = TRUE;
   1169 +      if (data->file->details->snapshot_directory)
   1170 +        g_free (data->file->details->snapshot_directory);
   1171 +      data->file->details->snapshot_directory = g_simple_async_result_get_op_res_gpointer (simple);
   1172 +      if (data->file->details->snapshot_directory)
   1173 +        data->file->details->has_snap_versions = TRUE;
   1174 +      else
   1175 +        data->file->details->has_snap_versions = FALSE;
   1176 +    }
   1177 +  data->callback (data->callback_user_data);
   1178 +}
   1179 +char *
   1180 +nautilus_file_get_snapshot_dir (NautilusFile *file)
   1181 +{
   1182 +  return file->details->snapshot_directory;
   1183 +}
   1184 +void nautilus_file_real_get_snapshot_version (GSimpleAsyncResult *res,
   1185 +            				      GObject            *object,
   1186 +        				      GCancellable       *cancellable)
   1187 +{
   1188 +  NautilusFile *file = NAUTILUS_FILE (object);
   1189 +  char *snap_info = nautilus_file_get_num_snapshot_version (file, cancellable, TRUE);
   1190 +
   1191 +  if (!snap_info) /* scan for .zfs directory*/
   1192 +    snap_info = ts_get_not_zfs_snapshot_dir (nautilus_file_get_location (file));
   1193 +/*
   1194 +  {
   1195 +    struct timespec ts;
   1196 +    ts.tv_sec = 4;
   1197 +    ts.tv_nsec = 0;
   1198 +    nanosleep (&ts, NULL);
   1199 +  }
   1200 +*/
   1201 +  if (snap_info)
   1202 +    g_simple_async_result_set_op_res_gpointer (res, snap_info, (GDestroyNotify) NULL);
   1203 +  else
   1204 +    g_simple_async_result_set_op_res_gpointer (res, NULL, (GDestroyNotify) NULL);
   1205 +}
   1206 +
   1207 +void nautilus_file_get_snapshot_version (NautilusFile *file,
   1208 +                                         FileHasSnapshotCallback callback,
   1209 +                                         GCancellable *cancel,
   1210 +                                         gpointer user_data)
   1211 +{
   1212 +    HasSnapshotAsyncData *data;
   1213 +    GSimpleAsyncResult *res;
   1214 +
   1215 +    if (file->details->has_snap_versions_in_progress)
   1216 +    {
   1217 +        g_cancellable_cancel(file->details->has_snapshot_cancel);
   1218 +        file->details->has_snapshot_cancel = NULL;
   1219 +        file->details->has_snap_versions_in_progress = FALSE;        
   1220 +    }
   1221 +
   1222 +    file->details->has_snapshot_cancel = cancel;
   1223 +    file->details->has_snap_versions_in_progress = TRUE;
   1224 +    file->details->has_snap_versions_is_up_to_date  = FALSE;
   1225 +
   1226 +    data = g_new0 (HasSnapshotAsyncData, 1);
   1227 +    data->file = file;
   1228 +    data->cancel = cancel;
   1229 +    data->callback = callback;
   1230 +    data->callback_user_data = user_data;
   1231 +
   1232 +    res = g_simple_async_result_new (G_OBJECT (file),
   1233 +                                     has_snapshot_ready_callback,
   1234 +                                     data,
   1235 +                                    (gpointer) nautilus_file_real_get_snapshot_version);
   1236 +    g_simple_async_result_run_in_thread (res, nautilus_file_real_get_snapshot_version,
   1237 +                                         G_PRIORITY_DEFAULT, cancel);
   1238 +}
   1239 +
   1240 +
   1241  void
   1242  nautilus_file_mark_gone (NautilusFile *file)
   1243  {
   1244 @@ -6593,6 +7219,12 @@ invalidate_thumbnail (NautilusFile *file
   1245  	file->details->thumbnail_is_up_to_date = FALSE;
   1246  }
   1247  
   1248 +static void
   1249 +invalidate_restore_info (NautilusFile *file)
   1250 +{
   1251 +	file->details->restore_info_is_up_to_date = FALSE;
   1252 +}
   1253 +
   1254  void
   1255  nautilus_file_invalidate_extension_info_internal (NautilusFile *file)
   1256  {
   1257 @@ -6647,6 +7279,9 @@ nautilus_file_invalidate_attributes_inte
   1258  	if (request.thumbnail) {
   1259  		invalidate_thumbnail (file);
   1260  	}
   1261 +	if (request.restore_info) {
   1262 +		invalidate_restore_info (file);
   1263 +	}
   1264  
   1265  	/* FIXME bugzilla.gnome.org 45075: implement invalidating metadata */
   1266  }
   1267 @@ -6727,7 +7362,8 @@ nautilus_file_get_all_attributes (void)
   1268  		NAUTILUS_FILE_ATTRIBUTE_LARGE_TOP_LEFT_TEXT |
   1269  		NAUTILUS_FILE_ATTRIBUTE_EXTENSION_INFO |
   1270  		NAUTILUS_FILE_ATTRIBUTE_THUMBNAIL |
   1271 -		NAUTILUS_FILE_ATTRIBUTE_MOUNT;
   1272 +		NAUTILUS_FILE_ATTRIBUTE_MOUNT | 
   1273 +		NAUTILUS_FILE_ATTRIBUTE_RESTORE_INFO ;
   1274  }
   1275  
   1276  void
   1277 @@ -7201,6 +7837,7 @@ nautilus_file_class_init (NautilusFileCl
   1278  	attribute_link_target_q = g_quark_from_static_string ("link_target");
   1279  	attribute_volume_q = g_quark_from_static_string ("volume");
   1280  	attribute_free_space_q = g_quark_from_static_string ("free_space");
   1281 +	attribute_restore_info_q = g_quark_from_static_string ("restore_info");
   1282  	
   1283  	G_OBJECT_CLASS (class)->finalize = finalize;
   1284  	G_OBJECT_CLASS (class)->constructor = nautilus_file_constructor;
   1285 diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-file.h nautilus-2.24.2/libnautilus-private/nautilus-file.h
   1286 --- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-file.h	2008-10-06 19:22:21.000000000 +0200
   1287 +++ nautilus-2.24.2/libnautilus-private/nautilus-file.h	2009-01-23 22:36:11.644493045 +0100
   1288 @@ -174,6 +174,7 @@ gboolean                nautilus_file_is
   1289  									 const char                     *mime_type);
   1290  gboolean                nautilus_file_is_launchable                     (NautilusFile                   *file);
   1291  gboolean                nautilus_file_is_symbolic_link                  (NautilusFile                   *file);
   1292 +gboolean                nautilus_file_is_in_snapshot			(NautilusFile                   *file);
   1293  gboolean                nautilus_file_is_mountpoint                     (NautilusFile                   *file);
   1294  GMount *                nautilus_file_get_mount                         (NautilusFile                   *file);
   1295  char *                  nautilus_file_get_volume_free_space             (NautilusFile                   *file);
   1296 @@ -229,6 +230,26 @@ char *                  nautilus_file_ge
   1297  
   1298  NautilusFile *          nautilus_file_get_trash_original_file           (NautilusFile                   *file);
   1299  
   1300 +char *			nautilus_file_get_num_snapshot_version		(NautilusFile			*file,
   1301 +									 GCancellable			*cancel,
   1302 +                                                                         gboolean                        stop_at_first);
   1303 +char *			nautilus_file_get_restore_info_async		(NautilusFile			*file);
   1304 +
   1305 +typedef enum {
   1306 +	NO,
   1307 +	YES,
   1308 +	UNKNOWN_STATE
   1309 +} HasSnapshotResult;
   1310 +
   1311 +HasSnapshotResult       nautilus_file_has_snapshot_version              (NautilusFile                   *file);
   1312 +char *                  nautilus_file_get_snapshot_dir                  (NautilusFile                   *file);
   1313 +typedef void (*FileHasSnapshotCallback)	(gpointer user_data);
   1314 +
   1315 +void                    nautilus_file_get_snapshot_version              (NautilusFile                   *file,
   1316 +                                                                         FileHasSnapshotCallback        callback,
   1317 +                                                                         GCancellable *cancel,
   1318 +                                                                         gpointer                       user_data);
   1319 +
   1320  /* Permissions. */
   1321  gboolean                nautilus_file_can_get_permissions               (NautilusFile                   *file);
   1322  gboolean                nautilus_file_can_set_permissions               (NautilusFile                   *file);
   1323 diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/libnautilus-private/nautilus-global-preferences.c ../nautilus-full-async/libnautilus-private/nautilus-global-preferences.c
   1324 --- nautilus-2.24.2/libnautilus-private/nautilus-global-preferences.c	2008-12-02 14:18:12.722038641 +0100
   1325 +++ ../nautilus-full-async/libnautilus-private/nautilus-global-preferences.c	2008-12-02 11:43:13.510836937 +0100
   1326 @@ -235,6 +235,10 @@ typedef struct
   1327   * YOU SHOULD EDIT THE SCHEMAS FILE TO CHANGE DEFAULTS.
   1328   */
   1329  static const PreferenceDefault preference_defaults[] = {
   1330 + 	{ NAUTILUS_PREFERENCES_ENABLE_TIME_SLIDER,
   1331 + 	  PREFERENCE_BOOLEAN,
   1332 + 	  GINT_TO_POINTER (TRUE)
   1333 + 	},
   1334  	{ NAUTILUS_PREFERENCES_SHOW_HIDDEN_FILES,
   1335  	  PREFERENCE_BOOLEAN,
   1336  	  GINT_TO_POINTER (FALSE)
   1337 diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/libnautilus-private/nautilus-global-preferences.h ../nautilus-compiled/libnautilus-private/nautilus-global-preferences.h
   1338 --- nautilus-2.24.2/libnautilus-private/nautilus-global-preferences.h	2009-01-09 22:51:35.144174122 +0100
   1339 +++ ../nautilus-compiled/libnautilus-private/nautilus-global-preferences.h	2009-01-09 22:17:26.115872917 +0100
   1340 @@ -70,6 +70,7 @@ G_BEGIN_DECLS
   1341  #define NAUTILUS_PREFERENCES_SHOW_BACKUP_FILES  		"/desktop/gnome/file_views/show_backup_files"
   1342  #define NAUTILUS_PREFERENCES_SHOW_ADVANCED_PERMISSIONS		"preferences/show_advanced_permissions"
   1343  #define NAUTILUS_PREFERENCES_DATE_FORMAT			"preferences/date_format"
   1344 +#define NAUTILUS_PREFERENCES_ENABLE_TIME_SLIDER			"preferences/enable_time_slider"
   1345  
   1346  typedef enum
   1347  {
   1348 diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-zfs.c nautilus-2.24.2/libnautilus-private/nautilus-zfs.c
   1349 --- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-zfs.c	1970-01-01 01:00:00.000000000 +0100
   1350 +++ nautilus-2.24.2/libnautilus-private/nautilus-zfs.c	2009-01-23 22:36:11.647280942 +0100
   1351 @@ -0,0 +1,985 @@
   1352 +/* 
   1353 + * Copyright (C) 2008 Sun Microsystems (Erwann Chenede)
   1354 + *
   1355 + */
   1356 +
   1357 +
   1358 +#include <stdio.h>
   1359 +#include <strings.h>
   1360 +#include <stdlib.h>
   1361 +#include <unistd.h>
   1362 +#include "nautilus-zfs.h"
   1363 +#include <time.h>
   1364 +#include <locale.h>
   1365 +#include <langinfo.h>
   1366 +#include <stdint.h>
   1367 +#include <glib.h>
   1368 +#include <glib/gi18n.h>
   1369 +#include <glib/gstdio.h>
   1370 +#include <eel/eel-glib-extensions.h>
   1371 +#include <sys/mnttab.h>
   1372 +#include <sys/mkdev.h>
   1373 +#include  "nautilus-global-preferences.h"
   1374 +#define ZFS_SNAPSHOT_DIR ".zfs/snapshot/"
   1375 +
   1376 +static void ts_set_snapshot_used_space (zfs_handle_t *zhp, ZfsDataSet *snap)
   1377 +{
   1378 +  gchar buf[ZFS_MAXNAMELEN];
   1379 +  if (zfs_prop_get(zhp, ZFS_PROP_USED, buf, sizeof (buf), NULL, NULL, 0, B_FALSE) == 0)
   1380 +    {
   1381 +      char unit[10];
   1382 +      char format_float[5] = "%f%s";
   1383 +      char format_int[5] = "%d%s";
   1384 +      char *format = format_int;
   1385 +      int   used_space_int = 0;
   1386 +      gboolean success = FALSE;
   1387 +
   1388 +      snap->used_space_str = g_strdup (buf);
   1389 +
   1390 +      if (strchr (buf, '.'))
   1391 +	{
   1392 +	  format = format_float;
   1393 +	  if (sscanf(buf, format,&snap->used_space,unit) == 2)
   1394 +	    success = TRUE;
   1395 +	}
   1396 +      else
   1397 +	{
   1398 +	  if (sscanf(buf, format,&used_space_int,unit) == 2)
   1399 +	    {
   1400 +	      success = TRUE;
   1401 +	      snap->used_space = (float) used_space_int;
   1402 +	    }
   1403 +	}
   1404 +      if (strcmp (buf, "0") == 0)
   1405 +	{
   1406 +	  g_free (snap->used_space_str);
   1407 +	  snap->used_space_str = g_strdup ("0 K");
   1408 +	  success = TRUE;
   1409 +	}
   1410 +
   1411 +      if (success)
   1412 +	{
   1413 +	  if (strcmp (unit, "M") == 0)
   1414 +	    snap->used_space *= 1024; 
   1415 +	  if (strcmp (unit, "G") == 0)
   1416 +	    snap->used_space *= 1024 * 1024; 
   1417 +	}
   1418 +      else
   1419 +	{
   1420 +	  g_free (snap->used_space_str);
   1421 +	  /* SUN_BRANDING */
   1422 +	  snap->used_space_str = g_strdup (_("Unknown"));
   1423 +	}
   1424 +    }
   1425 +  else
   1426 +    {
   1427 +      g_free (snap->used_space_str);
   1428 +      /* SUN_BRANDING */
   1429 +      snap->used_space_str = g_strdup (_("Unknown"));
   1430 +    }
   1431 +}
   1432 +
   1433 +static void ts_set_snapshot_mtime_and_time_diff (zfs_handle_t *zhp, ZfsDataSet *snap)
   1434 +{
   1435 +  GDate now;
   1436 +  GDate then;
   1437 +  time_t time_now;
   1438 +  gint days_diff;
   1439 +  const gchar *format;
   1440 +  gchar *locale_format = NULL;
   1441 +  gchar buf[ZFS_MAXNAMELEN];
   1442 +  gchar *date_str = NULL;
   1443 +
   1444 +  if (zfs_prop_get(zhp, ZFS_PROP_CREATION, buf, sizeof (buf), NULL, NULL, 0, B_TRUE) == 0)
   1445 +    {
   1446 +      struct tm tms;
   1447 +
   1448 +      sscanf (buf, "%llu", &snap->mtime);
   1449 +      memset(&tms, 0, sizeof(tms));
   1450 +      localtime_r (&snap->mtime, &tms);
   1451 +
   1452 +      g_date_set_time_t (&then, snap->mtime);
   1453 +
   1454 +      time_now = time (NULL);
   1455 +      g_date_set_time_t (&now, time_now);
   1456 +
   1457 +      days_diff = g_date_get_julian (&now) - g_date_get_julian (&then);
   1458 +
   1459 +      /* Translators: %H means "hours" and %M means "minutes" */
   1460 +      if (days_diff == 0)
   1461 +	/* SUN_BRANDING */
   1462 +	format = _("Today at %H:%M");
   1463 +      else if (days_diff == 1)
   1464 +	/* SUN_BRANDING */
   1465 +	format = _("Yesterday at %H:%M");
   1466 +      else
   1467 +	{
   1468 +	  if (days_diff > 1 && days_diff < 7)
   1469 +	    /* SUN_BRANDING */
   1470 +	    format = _("%A at %H:%M"); /* Days from last week */
   1471 +	  else
   1472 +	    {
   1473 +	      /* format = "%x";*/ /* Any other date */ 
   1474 +	      format = _("%a %b %e %Y @ %Hh%M");
   1475 +	      /* SUN_BRANDING */
   1476 +	      /* date_str = g_strdup_printf (_("%d days ago"), days_diff); */
   1477 +	    }
   1478 +	}
   1479 +      if (format)
   1480 +	{
   1481 +	  locale_format = g_locale_from_utf8 (format, -1, NULL, NULL, NULL);
   1482 +	  if (locale_format != NULL &&
   1483 +	      strftime (buf, sizeof (buf), locale_format, &tms) != 0)
   1484 +	    {      
   1485 +	      date_str = g_locale_to_utf8 (buf, -1, NULL, NULL, NULL);
   1486 +	    }
   1487 +	}
   1488 +
   1489 +      if (date_str == NULL)
   1490 +	/* SUN_BRANDING */
   1491 +	date_str = g_strdup (_("Unknown"));
   1492 +
   1493 +      g_free (locale_format);
   1494 +      snap->mtime_str = date_str;
   1495 +    }
   1496 +
   1497 +}
   1498 +
   1499 +void print_snap_list (char *dir, GList *snap_list)
   1500 +{
   1501 +  GList *tmp;
   1502 +  printf ("list of snapshots for %s :\n", dir);
   1503 +  for (tmp = snap_list; tmp->next; tmp = tmp->next)
   1504 +    {
   1505 +      ZfsDataSet *snap = (ZfsDataSet*) tmp->data;
   1506 +      printf (" name: %s\n mountpoint: %s\n mtime_str :%s\n space used : %s\n size in kilobytes : %f\n",
   1507 +	      snap->name, snap->mountpoint, snap->mtime_str, snap->used_space_str, snap->used_space);
   1508 +
   1509 +    }
   1510 +  printf ("\n");
   1511 +}
   1512 +
   1513 +static GString *
   1514 +dump_zds (ZfsDataSet *zds)
   1515 +{
   1516 +  GString *msg;
   1517 +  gchar *type;
   1518 +
   1519 +  if (!zds)
   1520 +    return NULL;
   1521 +
   1522 +  msg = g_string_new ("");
   1523 +  g_string_printf (msg, 
   1524 +		   "\tname: %s\n"
   1525 +		   "\tmountpoint: %s\n"
   1526 +		   "\ttype: %s\n",
   1527 +		   zds->name,zds->mountpoint, zfs_type_to_name(zds->type));
   1528 +  if (zds->snapshots)
   1529 +    {
   1530 +      GList *tmp;
   1531 +      g_string_append_printf(msg,"\tsnapshots :\n");
   1532 +      for (tmp=zds->snapshots;tmp;tmp = tmp->next)
   1533 +	{ 
   1534 +	  ZfsDataSet *tmp_zds= (ZfsDataSet*) tmp->data;
   1535 +	  g_string_append_printf (msg,"\t\tname: %s\n\t\tpath: %s\n",
   1536 +				  tmp_zds->name,
   1537 +				  tmp_zds->mountpoint);
   1538 +	}
   1539 +    }
   1540 +  g_string_append_printf (msg, "\n");
   1541 +  return msg;
   1542 +}
   1543 +
   1544 +
   1545 +static void
   1546 +dump_sds (SearchDataSet *sds)
   1547 +{
   1548 +  GString *msg;
   1549 +  gchar *type;
   1550 +  GList *tmp;
   1551 +
   1552 +  if (!sds)
   1553 +    {
   1554 +      printf ("Search DataSet is empty\n");
   1555 +      return;
   1556 +    }
   1557 +
   1558 +  msg = g_string_new ("");
   1559 +  g_string_printf (msg, "DDS Dump:\n"
   1560 +		   "\tsearched_path: %s\n",
   1561 +		   sds->searched_path);
   1562 +
   1563 +  g_string_append_printf (msg, "Zfs Data set :\n");
   1564 +  for (tmp=sds->datasets;tmp;tmp=tmp->next)
   1565 +    {
   1566 +      GString * zds_dump = dump_zds ((ZfsDataSet *)tmp->data);
   1567 +      g_string_append_printf (msg,"%s",zds_dump->str); 
   1568 +      g_string_free (zds_dump, TRUE);
   1569 +    }
   1570 +  g_string_append_printf (msg, "\n");
   1571 +  printf ("%s", msg->str);
   1572 +  g_string_free (msg, TRUE);
   1573 +}
   1574 +
   1575 +static ZfsDataSet*
   1576 +ts_new_zfs_dataset (SearchDataSet* sds)
   1577 +{
   1578 +	ZfsDataSet *zds;
   1579 +	zds = g_new0 (ZfsDataSet, 1);
   1580 +	zds->search_dataset = sds;
   1581 +	return zds;
   1582 +}
   1583 +
   1584 +void
   1585 +ts_free_zfs_dataset (ZfsDataSet* zds)
   1586 +{
   1587 +	if (!zds)
   1588 +	  return;
   1589 +	if (zds->name)
   1590 +	  g_free (zds->name);
   1591 +	if (zds->mountpoint)
   1592 +	  g_free (zds->mountpoint);
   1593 +	if (zds->mtime_str)
   1594 +	  g_free (zds->mtime_str);
   1595 +	if (zds->used_space_str)
   1596 +	  g_free (zds->used_space_str);
   1597 +
   1598 +	if (zds->snapshots)
   1599 +	  {
   1600 +	    GList *tmp;
   1601 +	    for (tmp = zds->snapshots;tmp;tmp = tmp->next)
   1602 +	      ts_free_zfs_dataset ((ZfsDataSet*)tmp->data);
   1603 +	  }
   1604 +	g_free (zds);
   1605 +}
   1606 +
   1607 +static SearchDataSet *
   1608 +ts_new_search_dataset (GCancellable *cancel)
   1609 +{
   1610 +	SearchDataSet *sds;
   1611 +	sds = g_new0 (SearchDataSet, 1);
   1612 +	sds->cancel = cancel;
   1613 +	return sds;
   1614 +}
   1615 +static void
   1616 +ts_free_search_dataset (SearchDataSet *sds)
   1617 +{
   1618 +	if (!sds)
   1619 +	  return;
   1620 +	if (sds->searched_path)
   1621 +	  g_free (sds->searched_path);
   1622 +	if (sds->mountpoint)
   1623 +	  g_free (sds->mountpoint);
   1624 +	if (sds->datasets)
   1625 +	  {
   1626 +	    GList *tmp;
   1627 +	    for (tmp = sds->datasets;tmp;tmp = tmp->next)
   1628 +	      ts_free_zfs_dataset ((ZfsDataSet*)tmp->data);
   1629 +	  }
   1630 +	g_free (sds);
   1631 +}
   1632 +
   1633 +static char* construct_check_snapshot_path (SearchDataSet *sds, char* mountpoint, const char *name, char *searched_path)
   1634 +{
   1635 +  gchar *result = NULL;
   1636 +  gchar **split;
   1637 +  gchar **split2;
   1638 +
   1639 +  gchar *snap_name = NULL;
   1640 +  gchar *remaining_path = NULL;
   1641 +  
   1642 +  /* get the snapshot name part pool@snap-name we are only interested in snap-name split[1] */
   1643 +  split = g_strsplit (name,"@",2);
   1644 +  /* get the path after the mountpoint */
   1645 +  split2 = g_strsplit (searched_path, mountpoint, 2);
   1646 +
   1647 +  if (split && split[1])
   1648 +      snap_name = split[1];
   1649 +
   1650 +  if (split2 && split2[1])
   1651 +      remaining_path = split2[1];
   1652 +  
   1653 +/*  printf ("mountpoint : %s \nname : %s \nsearched_path: %s\n", mountpoint, name, searched_path);
   1654 +  printf ("split %s at @ = [%s] [%s]\n", name, split[0],split[1]); 
   1655 +  printf ("split %s at [%s] = [%s] [%s]\n", searched_path, mountpoint, split2[0],split2[1]); 
   1656 +  printf ("%s/.zfs/snapshot/%s/%s\n\n", mountpoint, split[1], split2[1]);*/
   1657 +
   1658 +  if (snap_name && remaining_path)
   1659 +    result = g_strdup_printf ("%s/.zfs/snapshot/%s/%s", mountpoint, snap_name, remaining_path);
   1660 +  
   1661 +  g_strfreev (split);
   1662 +  g_strfreev (split2);
   1663 +  
   1664 +  /* don't test for file presence if searched path is the same as the mount point */
   1665 +  if (sds->searched_path_match_mp)
   1666 +      return result;
   1667 +      
   1668 +  if (result && g_file_test (result, G_FILE_TEST_IS_DIR))
   1669 +      {
   1670 +	char real_dir[PATH_MAX+1]; 
   1671 +	if (!realpath(result, real_dir))
   1672 +	  {
   1673 +	    g_free (result);
   1674 +	    result = NULL;
   1675 +	  }
   1676 +	else
   1677 +	  {
   1678 +	    g_free (result);
   1679 +	    result = g_strdup (real_dir);
   1680 +	  }
   1681 +	return result;
   1682 +      }
   1683 +
   1684 +  g_free (result);
   1685 +  return NULL;
   1686 +}
   1687 +
   1688 +static int
   1689 +snapshot_callback (zfs_handle_t *zhp, void *data)
   1690 +{
   1691 +  ZfsDataSet *main_zds = (ZfsDataSet*) data;
   1692 +
   1693 +  /* only add snapshot dir that exist */
   1694 +
   1695 +  if (zfs_get_type (zhp) == ZFS_TYPE_SNAPSHOT && !g_cancellable_is_cancelled (main_zds->search_dataset->cancel)) 
   1696 +    {
   1697 +      const char* name = zfs_get_name (zhp);
   1698 +      char *snap_path = construct_check_snapshot_path (main_zds->search_dataset,
   1699 +						       main_zds->mountpoint, 
   1700 +						       name, 
   1701 +						       main_zds->search_dataset->searched_path);
   1702 +      if (snap_path)
   1703 +	{
   1704 +	  ZfsDataSet *zds = ts_new_zfs_dataset (main_zds->search_dataset);
   1705 +	  zds->name = g_strdup (name);
   1706 +	  zds->type = ZFS_TYPE_SNAPSHOT;
   1707 +	  zds->mountpoint = snap_path;
   1708 +	  ts_set_snapshot_mtime_and_time_diff (zhp, zds);
   1709 +	  ts_set_snapshot_used_space (zhp, zds);
   1710 +	  main_zds->snapshots = g_list_append (main_zds->snapshots,zds);
   1711 +	}
   1712 +    }
   1713 +  zfs_close (zhp);
   1714 +  return 0;
   1715 +}
   1716 +
   1717 +
   1718 +static struct mnttab *
   1719 +mygetmntent(FILE *f)
   1720 +{
   1721 +  static struct mnttab mt;
   1722 +  int status;
   1723 +
   1724 +  if ((status = getmntent(f, &mt)) == 0)
   1725 +    return (&mt);
   1726 +
   1727 +  return (NULL);
   1728 +}
   1729 +
   1730 +static char *
   1731 +is_fs_mounted (const char *fs_name)
   1732 +{
   1733 +  FILE		   *mnttab;
   1734 +  struct mnttab    *mntp;
   1735 +
   1736 +
   1737 +  mnttab = fopen (MNTTAB,"r");
   1738 +
   1739 +  while ((mntp = mygetmntent(mnttab)) != NULL) 
   1740 +    {
   1741 +      if (mntp->mnt_fstype == (char *)0 || strcmp(mntp->mnt_fstype, "zfs") != 0)
   1742 +	continue;
   1743 +      if (strcmp (mntp->mnt_special, fs_name) == 0)
   1744 +	{
   1745 +	  fclose (mnttab);
   1746 +	  return g_strdup (mntp->mnt_mountp);
   1747 +	}
   1748 +  }
   1749 +  fclose (mnttab);
   1750 +  return NULL;
   1751 +}
   1752 +
   1753 +static int
   1754 +zfs_callback (zfs_handle_t *zhp, void *data)
   1755 +{
   1756 +  char buf[ZFS_MAXPROPLEN];
   1757 +  SearchDataSet *sds = (SearchDataSet*) data;
   1758 +
   1759 +  if (sds->match_found)
   1760 +    {
   1761 +      zfs_close (zhp);
   1762 +      return 0;
   1763 +    }
   1764 +
   1765 +  if (zfs_get_type (zhp) & sds->type & !g_cancellable_is_cancelled (sds->cancel))
   1766 +    {
   1767 +/*      struct timespec ts;
   1768 +      ts.tv_sec = 3;
   1769 +      ts.tv_nsec = 100000000; 
   1770 +      nanosleep (&ts, NULL);*/
   1771 +
   1772 +      if (sds->prop >= ZFS_PROP_TYPE && sds->prop < ZFS_NUM_PROPS) 
   1773 +	{
   1774 +	  zfs_prop_get(zhp, sds->prop, buf, sizeof (buf), NULL, NULL,  0, TRUE);
   1775 +	  
   1776 +	  if (strcmp (sds->mountpoint, buf) == 0)
   1777 +	    {
   1778 +	      ZfsDataSet *zds = ts_new_zfs_dataset (sds);
   1779 +	      zds->type = zfs_get_type (zhp);
   1780 +	      zds->name = g_strdup (zfs_get_name(zhp));
   1781 +	      zds->mountpoint = g_strdup (buf);
   1782 +	      zfs_iter_snapshots (zhp, snapshot_callback, zds);
   1783 +	      sds->datasets = g_list_append (sds->datasets, zds);
   1784 +	      sds->match_found = TRUE;
   1785 +	    }
   1786 +	  else if (strcmp ("legacy", buf) == 0)
   1787 +	    { /* parse /etc/mnttab to get the mount point */
   1788 +	      char *mountp = is_fs_mounted (zfs_get_name(zhp));
   1789 +	      if (mountp)
   1790 +		{
   1791 +		  if (strcmp (sds->mountpoint, mountp) == 0)
   1792 +		    {
   1793 +		      ZfsDataSet *zds = ts_new_zfs_dataset (sds);
   1794 +		      zds->type = zfs_get_type (zhp);
   1795 +		      zds->name = g_strdup (zfs_get_name(zhp));
   1796 +		      zds->mountpoint = mountp;
   1797 +		      zfs_iter_snapshots (zhp, snapshot_callback, zds);
   1798 +		      sds->datasets = g_list_append (sds->datasets, zds);
   1799 +		      sds->match_found = TRUE;
   1800 +		    }
   1801 +		  else
   1802 +		    g_free (mountp);
   1803 +		}
   1804 +	    }
   1805 +	}
   1806 +      if (!sds->match_found)
   1807 +	zfs_iter_filesystems (zhp, zfs_callback, sds); 
   1808 +    }
   1809 +  zfs_close (zhp);
   1810 +  return 0;
   1811 +}
   1812 +
   1813 +static SearchDataSet *
   1814 +ts_get_data_from_mountpoint (const char* searched_path, const char *mountpoint, GCancellable *cancel)
   1815 +{
   1816 +  static libzfs_handle_t *zfs_handle = NULL;
   1817 +  SearchDataSet *sds;
   1818 +
   1819 +  sds = ts_new_search_dataset (cancel);
   1820 +
   1821 +  sds->prop = ZFS_PROP_MOUNTPOINT;
   1822 +  sds->type = ZFS_TYPE_FILESYSTEM;
   1823 +  sds->searched_path = g_strdup (searched_path);
   1824 +  sds->mountpoint = g_strdup (mountpoint);
   1825 +
   1826 +  if (strcmp (searched_path, mountpoint) == 0)
   1827 +    sds->searched_path_match_mp = TRUE;
   1828 +
   1829 +  if (!zfs_handle)
   1830 +    {
   1831 +      if ((zfs_handle = libzfs_init()) == NULL) {
   1832 +	g_warning ("internal error: failed to initialize ZFS library\n");
   1833 +	ts_free_search_dataset (sds);
   1834 +	return NULL;
   1835 +      }
   1836 +    }
   1837 +  zfs_iter_root (zfs_handle, zfs_callback, sds);
   1838 +
   1839 +  return sds;
   1840 +}
   1841 +static gint
   1842 +snap_sort_by_age (gconstpointer a,
   1843 +		  gconstpointer b)
   1844 +{
   1845 +  const ZfsDataSet *snap1 = a;
   1846 +  const ZfsDataSet *snap2 = b;
   1847 +
   1848 +  if (snap1->mtime == snap2->mtime)
   1849 +    return 0;
   1850 +  if (snap1->mtime < snap2->mtime)
   1851 +    return -1;
   1852 +  if (snap1->mtime > snap2->mtime)
   1853 +    return 1;
   1854 +
   1855 +}
   1856 +
   1857 +char* 
   1858 +ts_get_zfs_filesystem (char *dir)
   1859 +{
   1860 +  char real_dir[PATH_MAX+1]; 
   1861 +  char filesystem[PATH_MAX+1];
   1862 +  gboolean  found_fs= FALSE;
   1863 +  struct stat64 dir_stat64;
   1864 +
   1865 +  if (!realpath(dir, real_dir))
   1866 +    {
   1867 +      return NULL;
   1868 +    }
   1869 +    if (stat64 (real_dir, &dir_stat64) == 0)
   1870 +    { /* check is fs is zfs */
   1871 +      if (strcmp (dir_stat64.st_fstype, "zfs") == 0)
   1872 +	{
   1873 +	  FILE		    *fp;
   1874 +	  struct extmnttab   mtab;
   1875 +	  int		     status;
   1876 +
   1877 +	  /* get mount point */
   1878 +
   1879 +	  fp = fopen (MNTTAB,"r");
   1880 +
   1881 +	  resetmnttab(fp);
   1882 +	  while ((status = getextmntent(fp, &mtab, sizeof (struct extmnttab))) == 0) 
   1883 +	    {
   1884 +	      dev_t dev = NODEV;
   1885 +	      dev = makedev(mtab.mnt_major, mtab.mnt_minor);
   1886 +	      if (dev == dir_stat64.st_dev)
   1887 +		{
   1888 +		  strcpy (filesystem, mtab.mnt_special);
   1889 +		  found_fs = TRUE;
   1890 +		  break;
   1891 +		}
   1892 +	    }
   1893 +	  (void) fclose(fp);
   1894 +	}
   1895 +    }
   1896 +    if (found_fs)
   1897 +      return g_strdup(filesystem);
   1898 +
   1899 +    return NULL;
   1900 +}
   1901 +
   1902 +static char * get_zfs_mountpoint (char *dir)
   1903 +{
   1904 +  char real_dir[PATH_MAX+1]; 
   1905 +  char mountpoint[PATH_MAX+1];
   1906 +  gboolean  found_mount_point = FALSE;
   1907 +  struct stat64 dir_stat64;
   1908 +
   1909 +  if (!realpath(dir, real_dir))
   1910 +    {
   1911 +      return NULL;
   1912 +    }
   1913 +    if (stat64 (real_dir, &dir_stat64) == 0)
   1914 +    { /* check is fs is zfs */
   1915 +      if (strcmp (dir_stat64.st_fstype, "zfs") == 0)
   1916 +	{
   1917 +	  FILE		    *fp;
   1918 +	  struct extmnttab   mtab;
   1919 +	  int		     status;
   1920 +
   1921 +	  /* get mount point */
   1922 +
   1923 +	  fp = fopen (MNTTAB,"r");
   1924 +
   1925 +	  resetmnttab(fp);
   1926 +	  while ((status = getextmntent(fp, &mtab, sizeof (struct extmnttab))) == 0) 
   1927 +	    {
   1928 +	      dev_t dev = NODEV;
   1929 +	      dev = makedev(mtab.mnt_major, mtab.mnt_minor);
   1930 +	      if (dev == dir_stat64.st_dev)
   1931 +		{
   1932 +		  strcpy (mountpoint, mtab.mnt_mountp);
   1933 +		  found_mount_point = TRUE;
   1934 +		  break;
   1935 +		}
   1936 +	    }
   1937 +	  (void) fclose(fp);
   1938 +	}
   1939 +    }
   1940 +    if (found_mount_point)
   1941 +      return g_strdup(mountpoint);
   1942 +
   1943 +    return NULL;
   1944 +}
   1945 +
   1946 +
   1947 +char *ts_get_snapshot_dir (char *dir)
   1948 +{
   1949 +  char *zfs_dir = get_zfs_mountpoint (dir);
   1950 +  if (zfs_dir)
   1951 +    {
   1952 +      char *snapshot_dir = g_strdup_printf ("%s/.zfs/snapshot", zfs_dir);
   1953 +      g_free (zfs_dir);
   1954 +      return snapshot_dir;
   1955 +    }
   1956 +  else
   1957 +    return NULL;
   1958 +}
   1959 +
   1960 +
   1961 +
   1962 +static void ts_get_snapshots_for_dir (GSimpleAsyncResult *res,
   1963 +				      GObject            *object,
   1964 +				      GCancellable       *cancellable)
   1965 +{
   1966 +  char *mountpoint = NULL; 
   1967 +  char real_dir[PATH_MAX+1]; 
   1968 +  SearchDataSet *sds;
   1969 +  GList* snap_result = NULL;
   1970 +  GFile *file = G_FILE (object);
   1971 +  char *dir = g_file_get_path (file);
   1972 +
   1973 +  mountpoint = get_zfs_mountpoint (dir);
   1974 +  
   1975 +
   1976 +  if (!mountpoint)
   1977 +    {
   1978 +      g_simple_async_result_set_op_res_gpointer (res, snap_result, (GDestroyNotify) NULL);
   1979 +      g_free (dir);
   1980 +      return;
   1981 +    }
   1982 +
   1983 +  realpath(dir, real_dir);
   1984 +
   1985 +  sds = ts_get_data_from_mountpoint (real_dir, mountpoint, cancellable);
   1986 +
   1987 +  g_free (mountpoint);
   1988 +
   1989 +  if (g_cancellable_is_cancelled (cancellable))
   1990 +    {
   1991 +      /* printf ("ts_get_snapshots_for_dir %s cancelled\n", dir); */
   1992 +      if (sds)
   1993 +	{
   1994 +	  ts_free_search_dataset (sds);
   1995 +	  sds = NULL;
   1996 +	}
   1997 +    }
   1998 +
   1999 +  if (sds)
   2000 +    {
   2001 +      GList *tmp;
   2002 +      for (tmp=sds->datasets;tmp;tmp=tmp->next)
   2003 +	{
   2004 +	  ZfsDataSet *zds = (ZfsDataSet*) tmp->data;
   2005 +	  if (zds->snapshots)
   2006 +	    {
   2007 +	      snap_result = g_list_concat (snap_result, zds->snapshots);
   2008 +	      zds->snapshots = NULL;
   2009 +	    }
   2010 +	}
   2011 +      ts_free_search_dataset (sds);
   2012 +    }
   2013 +
   2014 +  if (snap_result) 
   2015 +    {
   2016 +      snap_result = g_list_sort (snap_result, (GCompareFunc)snap_sort_by_age);
   2017 +      /* print_snap_list (dir, snap_result);  */
   2018 +    }
   2019 +
   2020 +  g_free (dir);
   2021 +  g_simple_async_result_set_op_res_gpointer (res, snap_result, (GDestroyNotify) NULL);
   2022 +}
   2023 +
   2024 +
   2025 +GList *ts_get_snapshots_for_dir_async (GFile *file, 
   2026 +				       GAsyncReadyCallback result_ready, 
   2027 +				       GCancellable *cancel,
   2028 +				       gpointer  user_data)
   2029 +{
   2030 +   GSimpleAsyncResult *res;
   2031 +
   2032 +   res = g_simple_async_result_new (G_OBJECT (file), result_ready, user_data, (gpointer) ts_get_snapshots_for_dir);
   2033 +   g_simple_async_result_run_in_thread (res, ts_get_snapshots_for_dir, G_PRIORITY_DEFAULT, cancel);
   2034 +   return NULL;
   2035 +}
   2036 +
   2037 +
   2038 +void ts_free_snapshots (GList *snaps)
   2039 +{
   2040 +  if (snaps)
   2041 +    {
   2042 +      GList *tmp;
   2043 +      for (tmp=snaps;tmp;tmp=tmp->next)
   2044 +	ts_free_zfs_dataset ((ZfsDataSet*) tmp->data);
   2045 +      g_list_free (snaps);
   2046 +    }
   2047 +}
   2048 +
   2049 +gboolean ts_is_in_snapshot (char * str)
   2050 +{
   2051 +  if (str != NULL)
   2052 +    {
   2053 +      if (g_strrstr (str, ZFS_SNAPSHOT_DIR))
   2054 +	return TRUE;
   2055 +    }
   2056 +  return FALSE;
   2057 +}
   2058 +
   2059 +char* ts_remove_snapshot_dir (char *str)
   2060 +{
   2061 +  if (ts_is_in_snapshot (str))
   2062 +    {
   2063 +      char *snap_root;
   2064 +      char *zfs, *iter, point;
   2065 +      int count = 0;
   2066 +
   2067 +      /*remove .zfs/snapshot/blah/ */
   2068 +      zfs = g_strrstr (str, ZFS_SNAPSHOT_DIR);
   2069 +      iter = zfs;
   2070 +
   2071 +      if (iter)
   2072 +	{
   2073 +	  iter += sizeof (ZFS_SNAPSHOT_DIR);
   2074 +	  while (*iter != '/' && *iter != '\0')
   2075 +	    iter++;
   2076 +
   2077 +	  if (*iter == '/')
   2078 +	    iter++;
   2079 +
   2080 +	  point = *zfs;
   2081 +	  *zfs = '\0';
   2082 +	  snap_root = g_strdup_printf ("%s%s", str, iter);
   2083 +
   2084 +	  *zfs = point;
   2085 +	  return snap_root;
   2086 +	}
   2087 +    }
   2088 +  return NULL;
   2089 +}
   2090 +
   2091 +
   2092 +static gboolean restore_col_enabled = FALSE;
   2093 +
   2094 +gboolean 
   2095 +ts_is_restore_column_enabled ()
   2096 +{
   2097 +  return restore_col_enabled;
   2098 +}
   2099 +
   2100 +void ts_is_restore_column_enabled_init ();
   2101 +
   2102 +static void
   2103 +visible_columns_changed (gpointer callback_data)
   2104 +{
   2105 +  ts_is_restore_column_enabled_init ();
   2106 +}
   2107 +
   2108 +
   2109 +void ts_is_restore_column_enabled_init ()
   2110 +{
   2111 +  char **visible_columns;
   2112 +  static gboolean init = FALSE;
   2113 +  int i = 0;
   2114 +
   2115 +  if (!init)
   2116 +    {
   2117 +      eel_preferences_add_callback (NAUTILUS_PREFERENCES_LIST_VIEW_DEFAULT_VISIBLE_COLUMNS,
   2118 +				    visible_columns_changed, NULL);
   2119 +      init = TRUE;
   2120 +    }
   2121 +  
   2122 +  restore_col_enabled = FALSE;
   2123 +
   2124 +  visible_columns = eel_preferences_get_string_array (NAUTILUS_PREFERENCES_LIST_VIEW_DEFAULT_VISIBLE_COLUMNS);
   2125 +
   2126 +  while (visible_columns[i])
   2127 +    {
   2128 +      if (strcmp (visible_columns [i], "restore_info") == 0)
   2129 +	{
   2130 +	  restore_col_enabled = TRUE;
   2131 +	  break;
   2132 +	}
   2133 +      i++;
   2134 +    }
   2135 +  g_strfreev (visible_columns);
   2136 +}
   2137 +
   2138 +
   2139 +static GList * get_dir_entries (char *dir_path)
   2140 +{
   2141 +  const char *entry_name;
   2142 +  GDir *dir;
   2143 +  GList *dir_entries = NULL;
   2144 +  dir = g_dir_open (dir_path, 0, NULL);
   2145 +
   2146 +  while ((entry_name = g_dir_read_name (dir)) != NULL)
   2147 +    dir_entries = g_list_prepend (dir_entries, g_strdup (entry_name));
   2148 +
   2149 +  g_dir_close (dir);
   2150 +
   2151 +  return dir_entries;
   2152 +}
   2153 +
   2154 +static void free_dir_entries (GList *entries)
   2155 +{
   2156 +  g_list_foreach (entries, (GFunc)g_free, NULL);
   2157 +  g_list_free (entries);
   2158 +}
   2159 +
   2160 +static gboolean are_entries_identical (GList *old, GList *new)
   2161 +{
   2162 +  if (g_list_length (old) != g_list_length (new))
   2163 +    return FALSE;
   2164 +
   2165 +  for (old; old; old = old->next)
   2166 +    {
   2167 +      gboolean found = FALSE;
   2168 +      for (new; new; new = new->next)
   2169 +	{
   2170 +	  if (strcmp (old->data, new->data) == 0)
   2171 +	    {
   2172 +	      found = TRUE;
   2173 +	      break;
   2174 +	    }
   2175 +	}
   2176 +      if (!found)
   2177 +	return FALSE;
   2178 +    }
   2179 +  return TRUE;
   2180 +}
   2181 +
   2182 +void monitor_zfs_snap_directory_cancel (ZfsSnapDirMonitor *monitor_data)
   2183 +{
   2184 +  if (monitor_data)
   2185 +    {
   2186 +      /* printf ("in monitor_zfs_snap_directory_cancel %s\n", monitor_data->path); */
   2187 +      g_source_remove (monitor_data->timeout_id);
   2188 +      free_dir_entries (monitor_data->entries);
   2189 +      g_free (monitor_data->path);
   2190 +      g_free (monitor_data);
   2191 +    }
   2192 +}
   2193 +
   2194 +static gboolean        
   2195 +monitor_snap_dir (ZfsSnapDirMonitor *monitor_data)
   2196 +{
   2197 +  GList *new_entries;
   2198 +
   2199 +  if (!g_file_test (monitor_data->path, G_FILE_TEST_IS_DIR))
   2200 +    {
   2201 +      monitor_zfs_snap_directory_cancel (monitor_data);
   2202 +      return TRUE;
   2203 +    }
   2204 +
   2205 +  new_entries = get_dir_entries (monitor_data->path);
   2206 +
   2207 +  if (are_entries_identical (monitor_data->entries, new_entries))
   2208 +    {
   2209 +      free_dir_entries (new_entries);
   2210 +    }
   2211 +  else
   2212 +    {
   2213 +      free_dir_entries (monitor_data->entries);
   2214 +      monitor_data->entries = new_entries;
   2215 +      monitor_data->change_callback (monitor_data, monitor_data->user_data);
   2216 +    }
   2217 +  return TRUE;
   2218 +}
   2219 +
   2220 +  
   2221 +ZfsSnapDirMonitor *monitor_zfs_snap_directory (char *path, 
   2222 +					       ZfsDirChangeCallback change_callback,
   2223 +					       gpointer data)
   2224 +{
   2225 +  ZfsSnapDirMonitor *monitor_data = g_new0 (ZfsSnapDirMonitor, 1);
   2226 +
   2227 +  /* printf ("start monitoring %s\n", path); */
   2228 +
   2229 +  monitor_data->path = g_strdup (path);
   2230 +  monitor_data->entries = get_dir_entries (path);
   2231 +  monitor_data->change_callback = change_callback;
   2232 +  monitor_data->user_data = data;
   2233 +
   2234 +  monitor_data->timeout_id = g_timeout_add_seconds (5, (GSourceFunc)monitor_snap_dir, monitor_data);
   2235 +  return monitor_data;
   2236 +}
   2237 +
   2238 +char *
   2239 +ts_get_not_zfs_snapshot_dir (GFile *file)
   2240 +{
   2241 +  char tmp_path[PATH_MAX + 1];
   2242 +  gboolean found = FALSE;
   2243 +  gboolean end_path = FALSE;
   2244 +  GFile *d = g_file_get_parent(file);
   2245 +  GFile *tmp;
   2246 +  char *full_path = g_file_get_path (file);
   2247 +  char *stripped_path = g_file_get_path (d);
   2248 +  struct stat64 dir_stat64;
   2249 +
   2250 +  if (!full_path)
   2251 +     return NULL;
   2252 +
   2253 +  if (stat64 (full_path, &dir_stat64) == 0)
   2254 +    { /* check is fs is zfs if so don't try to check for nfs mounted .zfs dir*/
   2255 +      if (strcmp (dir_stat64.st_fstype, "zfs") == 0)
   2256 +        end_path = TRUE;
   2257 +    }
   2258 +
   2259 +  while (!found && !end_path)
   2260 +    {
   2261 +      g_sprintf (tmp_path, "%s/.zfs/snapshot", stripped_path);
   2262 +      if (g_file_test (tmp_path, G_FILE_TEST_IS_DIR))
   2263 +        {
   2264 +          GList *entries = get_dir_entries (tmp_path);
   2265 +          if (entries != NULL)
   2266 +            {
   2267 +              char *after_snap_path = full_path + strlen (stripped_path) + 1;
   2268 +
   2269 +              for (entries; entries; entries = entries->next)
   2270 +                {
   2271 +                  char test_path[PATH_MAX +1];
   2272 +                  g_sprintf (test_path, "%s/%s/%s", tmp_path, 
   2273 +                             entries->data,
   2274 +                             after_snap_path);
   2275 +                  if (g_file_test (test_path, G_FILE_TEST_EXISTS))
   2276 +                    {
   2277 +                      found = TRUE;
   2278 +                      break;
   2279 +                    }
   2280 +                }
   2281 +              free_dir_entries (entries);
   2282 +            }
   2283 +        }
   2284 +      tmp = d;
   2285 +      d = g_file_get_parent (tmp);
   2286 +      g_object_unref (tmp);
   2287 +      g_free (stripped_path);
   2288 +      if (d == NULL)
   2289 +        {
   2290 +          end_path = TRUE;
   2291 +        }
   2292 +      else
   2293 +        {
   2294 +          stripped_path = g_file_get_path (d);
   2295 +        }
   2296 +    }
   2297 +
   2298 +  g_free (full_path);
   2299 +
   2300 +  if (stripped_path)
   2301 +    g_free (stripped_path);
   2302 +
   2303 +  if (found)
   2304 +    return g_strdup (tmp_path);
   2305 +  else
   2306 +    return NULL;
   2307 +
   2308 +}
   2309 +
   2310 +
   2311 +
   2312 +
   2313 +
   2314 +
   2315 +
   2316 +
   2317 +
   2318 +
   2319 +
   2320 +
   2321 +
   2322 +
   2323 +
   2324 +
   2325 +
   2326 +
   2327 +
   2328 +
   2329 +
   2330 +
   2331 +
   2332 +
   2333 +
   2334 +
   2335 +
   2336 +
   2337 +
   2338 +
   2339 +
   2340 diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-zfs.h nautilus-2.24.2/libnautilus-private/nautilus-zfs.h
   2341 --- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-zfs.h	1970-01-01 01:00:00.000000000 +0100
   2342 +++ nautilus-2.24.2/libnautilus-private/nautilus-zfs.h	2009-01-23 22:36:12.513678737 +0100
   2343 @@ -0,0 +1,69 @@
   2344 +/* #include <config.h> */
   2345 +#ifndef NAUTILUS_ZFS_H
   2346 +#define NAUTILUS_ZFS_H
   2347 +
   2348 +#include <glib.h>
   2349 +#include <libzfs.h>
   2350 +#include <gio/gio.h>
   2351 +
   2352 +typedef struct 
   2353 +{
   2354 +  zfs_type_t	type;
   2355 +  zfs_prop_t	prop;
   2356 +  char	       *searched_path;
   2357 +  char         *mountpoint;
   2358 +  GList        *datasets;
   2359 +  GCancellable *cancel;
   2360 +  gboolean	match_found;
   2361 +  gboolean	searched_path_match_mp;
   2362 +
   2363 +} SearchDataSet;
   2364 +
   2365 +typedef struct
   2366 +{
   2367 +  char		  *name;	
   2368 +  char		  *mountpoint;	
   2369 +  char		  *mtime_str;
   2370 +  time_t	   mtime;
   2371 +  float		   used_space;
   2372 +  char		  *used_space_str;
   2373 +  zfs_type_t	   type;
   2374 +  GList		  *snapshots;
   2375 +  SearchDataSet	  *search_dataset;
   2376 +} ZfsDataSet;
   2377 +
   2378 +
   2379 +GList *ts_get_snapshots_for_dir_async	(GFile *file, 
   2380 +					 GAsyncReadyCallback result_ready, 
   2381 +					 GCancellable *cancel,
   2382 +					 gpointer  user_data);
   2383 +void ts_free_snapshots			(GList *snaps);
   2384 +void ts_free_zfs_dataset		(ZfsDataSet* zds);
   2385 +
   2386 +gboolean ts_is_in_snapshot		(char * str);
   2387 +char* ts_remove_snapshot_dir		(char *str);
   2388 +char *ts_get_snapshot_dir		(char *dir);
   2389 +char *ts_get_zfs_filesystem		(char *dir);
   2390 +char * ts_get_not_zfs_snapshot_dir      (GFile *file);
   2391 +gboolean ts_is_restore_column_enabled	();
   2392 +void ts_is_restore_column_enabled_init	();
   2393 +void print_snap_list			(char *dir, GList *snap_list);
   2394 +
   2395 +typedef void (*ZfsDirChangeCallback)	(gpointer monitor_data, 
   2396 +					 gpointer user_data);
   2397 +
   2398 +typedef struct 
   2399 +{
   2400 +  char	*		path;
   2401 +  GList			*entries;
   2402 +  guint			timeout_id;
   2403 +  ZfsDirChangeCallback	change_callback;
   2404 +  gpointer		user_data;
   2405 +} ZfsSnapDirMonitor;
   2406 +
   2407 +void monitor_zfs_snap_directory_cancel (ZfsSnapDirMonitor *monitor_data);
   2408 +ZfsSnapDirMonitor *monitor_zfs_snap_directory (char		    *path, 
   2409 +					       ZfsDirChangeCallback change_callback,
   2410 +					       gpointer		    data);
   2411 +#endif /* NAUTILUS_ZFS_H */
   2412 +
   2413 diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/Makefile.am nautilus-2.24.2/src/Makefile.am
   2414 --- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/Makefile.am	2008-10-06 19:22:18.000000000 +0200
   2415 +++ nautilus-2.24.2/src/Makefile.am	2009-01-23 22:36:10.638397062 +0100
   2416 @@ -137,6 +137,10 @@ nautilus_SOURCES = \
   2417  	nautilus-x-content-bar.h		\
   2418  	nautilus-zoom-control.c			\
   2419  	nautilus-zoom-control.h			\
   2420 +	nautilus-zfs-bar.c			\
   2421 +	nautilus-zfs-bar.h			\
   2422 +	timescale.h				\
   2423 +	timescale.c				\
   2424  	$(NULL)
   2425  
   2426  nautilus_file_management_properties_SOURCES= \
   2427 diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/file-manager/fm-actions.h nautilus-2.24.2/src/file-manager/fm-actions.h
   2428 --- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/file-manager/fm-actions.h	2008-10-06 19:22:18.000000000 +0200
   2429 +++ nautilus-2.24.2/src/file-manager/fm-actions.h	2009-01-23 22:36:10.668828089 +0100
   2430 @@ -52,6 +52,9 @@
   2431  #define FM_ACTION_LOCATION_PASTE_FILES_INTO "LocationPasteFilesInto"
   2432  #define FM_ACTION_NEW_LAUNCHER "New Launcher"
   2433  #define FM_ACTION_RENAME "Rename"
   2434 +#define FM_ACTION_RESTORE_TO "Restore to"
   2435 +#define FM_ACTION_HAS_SNAPSHOT "View Snap"
   2436 +#define FM_ACTION_SNAP_NOW "Snap Now"
   2437  #define FM_ACTION_DUPLICATE "Duplicate"
   2438  #define FM_ACTION_CREATE_LINK "Create Link"
   2439  #define FM_ACTION_SELECT_ALL "Select All"
   2440 diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/file-manager/fm-directory-view.c nautilus-2.24.2/src/file-manager/fm-directory-view.c
   2441 --- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/file-manager/fm-directory-view.c	2009-01-23 22:38:49.626517597 +0100
   2442 +++ nautilus-2.24.2/src/file-manager/fm-directory-view.c	2009-01-23 22:36:10.670123633 +0100
   2443 @@ -968,6 +968,77 @@ real_trash (FMDirectoryView *view)
   2444  }
   2445  
   2446  static void
   2447 +action_snap_now (GtkAction *action,
   2448 +		 gpointer callback_data)
   2449 +{
   2450 +  FMDirectoryView *view = FM_DIRECTORY_VIEW (callback_data);
   2451 +  GList *selection = fm_directory_view_get_selection_for_file_transfer (view);
   2452 +  GFile *file = nautilus_file_get_location (NAUTILUS_FILE (selection->data));
   2453 +  char *path = g_file_get_path (file);
   2454 +  char *fs = ts_get_zfs_filesystem (path);
   2455 +  char *cmd = g_strdup_printf ("/usr/lib/time-slider-snapshot %s %s", path, fs);
   2456 +  gdk_spawn_command_line_on_screen (gtk_widget_get_screen (GTK_WIDGET (callback_data)),
   2457 +				    cmd, NULL);
   2458 +  
   2459 +  g_free (cmd);
   2460 +  g_free (fs);
   2461 +  g_free (path);
   2462 +  g_object_unref (file);
   2463 +}
   2464 +
   2465 +static void
   2466 +action_restore_to_desktop_callback (GtkAction *action,
   2467 +				    gpointer callback_data)
   2468 +{
   2469 +  GList *locations = NULL;
   2470 +  GList *node;
   2471 +  FMDirectoryView *view = FM_DIRECTORY_VIEW (callback_data);
   2472 +  char *desktop_directory = nautilus_get_desktop_directory_uri();
   2473 +  GList *selection = fm_directory_view_get_selection_for_file_transfer (view);
   2474 +
   2475 +  if (selection == NULL)
   2476 +    return;
   2477 +
   2478 +  if (desktop_directory == NULL)
   2479 +    return;
   2480 +
   2481 +
   2482 +  for (node = selection; node != NULL; node = node->next) 
   2483 +    {		
   2484 +      locations = g_list_prepend (locations,
   2485 +				  nautilus_file_get_uri ((NautilusFile *) node->data));
   2486 +    }
   2487 +  
   2488 +  fm_directory_view_move_copy_items (locations, NULL, desktop_directory,
   2489 +				     GDK_ACTION_COPY, 0, 0, view);
   2490 +
   2491 +  nautilus_file_list_free (selection);
   2492 +}
   2493 +
   2494 +static void
   2495 +action_show_snapshot_versions_callback (GtkAction *action,
   2496 +                                        gpointer callback_data)
   2497 +{
   2498 +  FMDirectoryView *view = FM_DIRECTORY_VIEW (callback_data);
   2499 +  GList *selection = fm_directory_view_get_selection_for_file_transfer (view);
   2500 +  GFile *file = nautilus_file_get_location (NAUTILUS_FILE (selection->data));
   2501 +  char *dir = nautilus_file_get_snapshot_dir (NAUTILUS_FILE (selection->data));
   2502 +  char *file_path = g_file_get_path (file);
   2503 +  char real_file_path [PATH_MAX + 1];
   2504 +  if (realpath (file_path, real_file_path))
   2505 +    {
   2506 +      char *cmd = g_strdup_printf ("/usr/lib/time-slider-version '%s' '%s'", dir,
   2507 +                                   real_file_path);
   2508 +      gdk_spawn_command_line_on_screen (gtk_widget_get_screen (GTK_WIDGET (callback_data)),
   2509 +                                        cmd, NULL);
   2510 +      g_free (cmd);
   2511 +    }
   2512 +
   2513 +  g_free (file_path);
   2514 +  g_object_unref (file);
   2515 +}
   2516 +
   2517 +static void
   2518  action_trash_callback (GtkAction *action,
   2519  		       gpointer callback_data)
   2520  {
   2521 @@ -6697,6 +6768,24 @@ static const GtkActionEntry directory_vi
   2522    /* label, accelerator */       "RenameSelectAll", "<shift>F2",
   2523    /* tooltip */                  NULL,
   2524                                   G_CALLBACK (action_rename_select_all_callback) },
   2525 +  /* name, stock id */         { "Restore to", NULL,
   2526 +  /* SUN_BRANDING */
   2527 +  /* label, accelerator */       N_("Restore to Desktop"), NULL,
   2528 +  /* SUN_BRANDING */
   2529 +  /* tooltip */                  N_("Move each selected item to the Desktop"),
   2530 +                                 G_CALLBACK (action_restore_to_desktop_callback) },
   2531 +  /* name, stock id */         { "View Snap", NULL,
   2532 +  /* SUN_BRANDING */
   2533 +  /* label, accelerator */       N_("View versions"), NULL,
   2534 +  /* SUN_BRANDING */
   2535 +  /* tooltip */                  N_("View the versions of this file available in ZFS snapshots"),
   2536 +                                 G_CALLBACK (action_show_snapshot_versions_callback) },
   2537 +  /* name, stock id */         { "Snap Now", NULL,
   2538 +  /* SUN_BRANDING */
   2539 +  /* label, accelerator */       N_("Snapshot now"), NULL,
   2540 +  /* SUN_BRANDING */
   2541 +  /* tooltip */                  N_("Take a ZFS snapshot of this directory now"),
   2542 +                                 G_CALLBACK (action_snap_now) },
   2543    /* name, stock id */         { "Trash", NULL,
   2544    /* label, accelerator */       N_("Mo_ve to Trash"), NULL,
   2545    /* tooltip */                  N_("Move each selected item to the Trash"),
   2546 @@ -7723,6 +7812,41 @@ can_delete_all (GList *files)
   2547  	return TRUE;
   2548  }
   2549  
   2550 +typedef struct {
   2551 +  NautilusFile              *file;
   2552 +  GCancellable              *cancel;
   2553 +  GtkAction                 *action;
   2554 +} HasSnapshotData;
   2555 +
   2556 +static void
   2557 +has_snapshot_ready_callback (gpointer user_data)
   2558 +{
   2559 +  GValue name = {0,};
   2560 +  HasSnapshotData *data = (HasSnapshotData*) user_data;
   2561 +  HasSnapshotResult result = nautilus_file_has_snapshot_version (data->file);
   2562 +
   2563 +  switch (result)
   2564 +    {
   2565 +    case UNKNOWN_STATE:
   2566 +    case NO:
   2567 +      gtk_action_set_sensitive (data->action, FALSE);
   2568 +      g_value_init (&name, G_TYPE_STRING);
   2569 +      /* SUN_BRANDING */
   2570 +      g_value_set_static_string (&name, _("No versions"));
   2571 +      g_object_set_property (G_OBJECT (data->action), "label", &name);
   2572 +      break;
   2573 +    case YES:
   2574 +      gtk_action_set_sensitive (data->action, TRUE);
   2575 +      g_value_init (&name, G_TYPE_STRING);
   2576 +      /* SUN_BRANDING */
   2577 +      g_value_set_static_string (&name, _("Explore versions"));
   2578 +      g_object_set_property (G_OBJECT (data->action), "label", &name);
   2579 +      break;
   2580 +    }
   2581 +  g_free (data);
   2582 + }
   2583 +
   2584 +
   2585  static void
   2586  real_update_menus (FMDirectoryView *view)
   2587  {
   2588 @@ -8028,6 +8152,79 @@ real_update_menus (FMDirectoryView *view
   2589  					      FM_ACTION_COPY);
   2590  	gtk_action_set_sensitive (action, can_copy_files);
   2591  
   2592 +	action = gtk_action_group_get_action (view->details->dir_action_group,
   2593 +					      FM_ACTION_RESTORE_TO);
   2594 +	gtk_action_set_visible (action, can_copy_files && 
   2595 +				  nautilus_directory_is_in_snapshot (view->details->model));
   2596 +	
   2597 +	action = gtk_action_group_get_action (view->details->dir_action_group,
   2598 +					      FM_ACTION_SNAP_NOW);
   2599 +
   2600 +	if (selection_count == 1 && nautilus_file_is_directory (NAUTILUS_FILE (selection->data)))
   2601 +	    {
   2602 +	      GFile *file = nautilus_file_get_location (NAUTILUS_FILE (selection->data));
   2603 +	      char *path = g_file_get_path (file);
   2604 +	      char *fs = ts_get_zfs_filesystem (path);
   2605 +	      if (fs)
   2606 +		{
   2607 +		  gtk_action_set_visible (action, TRUE);
   2608 +		  g_free (fs);
   2609 +		}
   2610 +	      g_free (path);
   2611 +	      g_object_unref (file);
   2612 +	    }
   2613 +	else
   2614 +	  gtk_action_set_visible (action, FALSE);
   2615 +
   2616 +	action = gtk_action_group_get_action (view->details->dir_action_group,
   2617 +					      FM_ACTION_HAS_SNAPSHOT);
   2618 +
   2619 +  if (selection_count == 1)
   2620 +    {
   2621 +      GValue name = { 0, };
   2622 +      int result = nautilus_file_has_snapshot_version (NAUTILUS_FILE (selection->data));
   2623 +
   2624 +      switch (result)
   2625 +        {
   2626 +        case NO:
   2627 +          gtk_action_set_visible (action, FALSE);
   2628 +          break;
   2629 +        case YES:
   2630 +          gtk_action_set_visible (action, TRUE);
   2631 +          gtk_action_set_sensitive (action, TRUE);
   2632 +          g_value_init (&name,G_TYPE_STRING);
   2633 +          /* SUN_BRANDING */
   2634 +          g_value_set_static_string (&name, _("Explore versions"));
   2635 +          g_object_set_property (G_OBJECT (action), "label", &name);
   2636 +          break;
   2637 +        case UNKNOWN_STATE:
   2638 +          gtk_action_set_visible (action, TRUE);
   2639 +          gtk_action_set_sensitive (action, FALSE);
   2640 +          g_value_init (&name,G_TYPE_STRING);
   2641 +          /* SUN_BRANDING */
   2642 +          g_value_set_static_string (&name, _("Scanning for versions"));
   2643 +          g_object_set_property (G_OBJECT (action), "label", &name);
   2644 +          break;
   2645 +        }
   2646 +
   2647 +
   2648 +      if (result == UNKNOWN_STATE)
   2649 +        {
   2650 +          HasSnapshotData *data = g_new0 (HasSnapshotData, 1);
   2651 +          data->action = action;
   2652 +          data->file = NAUTILUS_FILE (selection->data);
   2653 +          data->cancel = g_cancellable_new ();
   2654 +          nautilus_file_get_snapshot_version (NAUTILUS_FILE (selection->data),
   2655 +                                              has_snapshot_ready_callback,
   2656 +                                              data->cancel,
   2657 +                                              data);
   2658 +        }
   2659 +    }
   2660 +  else
   2661 +    gtk_action_set_visible (action, FALSE);
   2662 +
   2663 +
   2664 +
   2665  	real_update_paste_menu (view, selection, selection_count);
   2666  
   2667  	action = gtk_action_group_get_action (view->details->dir_action_group,
   2668 diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/file-manager/nautilus-directory-view-ui.xml nautilus-2.24.2/src/file-manager/nautilus-directory-view-ui.xml
   2669 --- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/file-manager/nautilus-directory-view-ui.xml	2008-10-06 19:22:18.000000000 +0200
   2670 +++ nautilus-2.24.2/src/file-manager/nautilus-directory-view-ui.xml	2009-01-23 22:36:10.677724357 +0100
   2671 @@ -64,6 +64,9 @@
   2672  			<menuitem name="Duplicate" action="Duplicate"/>
   2673  			<menuitem name="Create Link" action="Create Link"/>
   2674  			<menuitem name="Rename" action="Rename"/>
   2675 +			<menuitem name="Restore to" action="Restore to"/>
   2676 +			<menuitem name="Snapshot now" action="Snap Now"/>
   2677 +			<menuitem name="Scanning...." action="View Snap"/>
   2678  		</placeholder>
   2679  		<placeholder name="Dangerous File Items Placeholder">
   2680  			<menuitem name="Trash" action="Trash"/>
   2681 @@ -147,6 +150,9 @@
   2682  	<placeholder name="File Actions">
   2683  		<menuitem name="Create Link" action="Create Link"/>
   2684  		<menuitem name="Rename" action="Rename"/>
   2685 +		<menuitem name="Restore to" action="Restore to"/>
   2686 +		<menuitem name="Snapshot now" action="Snap Now"/>
   2687 +		<menuitem name="Scanning...." action="View Snap"/>
   2688  	</placeholder>
   2689  	<separator name="Dangerous separator"/>
   2690  	<placeholder name="Dangerous File Actions">
   2691 @@ -184,6 +190,7 @@
   2692  	</placeholder>
   2693  	<separator name="Location After Clipboard Separator"/>
   2694  	<placeholder name="Dangerous File Actions">
   2695 +		<menuitem name="Restore" action="Restore"/>
   2696  		<menuitem name="Trash" action="LocationTrash"/>
   2697  		<menuitem name="Delete" action="LocationDelete"/>
   2698  		<menuitem name="Restore From Trash" action="LocationRestoreFromTrash"/>
   2699 diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-actions.h nautilus-2.24.2/src/nautilus-actions.h
   2700 --- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-actions.h	2008-10-06 19:22:18.000000000 +0200
   2701 +++ nautilus-2.24.2/src/nautilus-actions.h	2009-01-23 22:36:10.788601269 +0100
   2702 @@ -28,6 +28,7 @@
   2703  
   2704  #define NAUTILUS_ACTION_STOP "Stop"
   2705  #define NAUTILUS_ACTION_RELOAD "Reload"
   2706 +#define NAUTILUS_ACTION_RESTORE "Restore"
   2707  #define NAUTILUS_ACTION_BACK "Back"
   2708  #define NAUTILUS_ACTION_UP "Up"
   2709  #define NAUTILUS_ACTION_UP_ACCEL "UpAccel"
   2710 diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-file-management-properties.c nautilus-2.24.2/src/nautilus-file-management-properties.c
   2711 --- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-file-management-properties.c	2008-10-06 19:22:18.000000000 +0200
   2712 +++ nautilus-2.24.2/src/nautilus-file-management-properties.c	2009-01-23 22:36:10.640141631 +0100
   2713 @@ -73,6 +73,7 @@
   2714  #define NAUTILUS_FILE_MANAGEMENT_PROPERTIES_TREE_VIEW_FOLDERS_WIDGET "treeview_folders_checkbutton"
   2715  #define NAUTILUS_FILE_MANAGEMENT_PROPERTIES_MEDIA_AUTOMOUNT_OPEN "media_automount_open_checkbutton"
   2716  #define NAUTILUS_FILE_MANAGEMENT_PROPERTIES_MEDIA_AUTORUN_NEVER "media_autorun_never_checkbutton"
   2717 +#define NAUTILUS_FILE_MANAGEMENT_PROPERTIES_ENABLE_TIME_SLIDER "time_slider_enabled_checkbutton"
   2718  
   2719  /* int enums */
   2720  #define NAUTILUS_FILE_MANAGEMENT_PROPERTIES_THUMBNAIL_LIMIT_WIDGET "preview_image_size_combobox"
   2721 @@ -725,6 +726,9 @@ nautilus_file_management_properties_dial
   2722  	eel_preferences_glade_connect_bool (xml_dialog,
   2723  					    NAUTILUS_FILE_MANAGEMENT_PROPERTIES_TREE_VIEW_FOLDERS_WIDGET,
   2724  					    NAUTILUS_PREFERENCES_TREE_SHOW_ONLY_DIRECTORIES);
   2725 +	eel_preferences_glade_connect_bool (xml_dialog,
   2726 +					    NAUTILUS_FILE_MANAGEMENT_PROPERTIES_ENABLE_TIME_SLIDER,
   2727 +					    NAUTILUS_PREFERENCES_ENABLE_TIME_SLIDER);
   2728  
   2729  	eel_preferences_glade_connect_string_enum_combo_box (xml_dialog,
   2730  							     NAUTILUS_FILE_MANAGEMENT_PROPERTIES_DEFAULT_VIEW_WIDGET,
   2731 diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-file-management-properties.glade nautilus-2.24.2/src/nautilus-file-management-properties.glade
   2732 --- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-file-management-properties.glade	2008-10-06 19:22:18.000000000 +0200
   2733 +++ nautilus-2.24.2/src/nautilus-file-management-properties.glade	2009-01-23 22:36:10.778222728 +0100
   2734 @@ -1,2041 +1,1167 @@
   2735 -<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
   2736 -<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
   2737 -
   2738 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
   2739 +<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
   2740 +<!--*- mode: xml -*-->
   2741  <glade-interface>
   2742 -
   2743 -<widget class="GtkDialog" id="file_management_dialog">
   2744 -  <property name="border_width">5</property>
   2745 -  <property name="title" translatable="yes">File Management Preferences</property>
   2746 -  <property name="type">GTK_WINDOW_TOPLEVEL</property>
   2747 -  <property name="window_position">GTK_WIN_POS_CENTER</property>
   2748 -  <property name="modal">False</property>
   2749 -  <property name="resizable">True</property>
   2750 -  <property name="destroy_with_parent">False</property>
   2751 -  <property name="decorated">True</property>
   2752 -  <property name="skip_taskbar_hint">False</property>
   2753 -  <property name="skip_pager_hint">False</property>
   2754 -  <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
   2755 -  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
   2756 -  <property name="focus_on_map">True</property>
   2757 -  <property name="urgency_hint">False</property>
   2758 -  <property name="has_separator">False</property>
   2759 -
   2760 -  <child internal-child="vbox">
   2761 -    <widget class="GtkVBox" id="dialog-vbox1">
   2762 -      <property name="visible">True</property>
   2763 -      <property name="homogeneous">False</property>
   2764 -      <property name="spacing">2</property>
   2765 -
   2766 -      <child internal-child="action_area">
   2767 -	<widget class="GtkHButtonBox" id="dialog-action_area1">
   2768 -	  <property name="visible">True</property>
   2769 -	  <property name="layout_style">GTK_BUTTONBOX_END</property>
   2770 -
   2771 -	  <child>
   2772 -	    <widget class="GtkButton" id="helpbutton1">
   2773 -	      <property name="visible">True</property>
   2774 -	      <property name="can_default">True</property>
   2775 -	      <property name="can_focus">True</property>
   2776 -	      <property name="label">gtk-help</property>
   2777 -	      <property name="use_stock">True</property>
   2778 -	      <property name="relief">GTK_RELIEF_NORMAL</property>
   2779 -	      <property name="focus_on_click">True</property>
   2780 -	      <property name="response_id">-11</property>
   2781 -	    </widget>
   2782 -	  </child>
   2783 -
   2784 -	  <child>
   2785 -	    <widget class="GtkButton" id="closebutton1">
   2786 -	      <property name="visible">True</property>
   2787 -	      <property name="can_default">True</property>
   2788 -	      <property name="can_focus">True</property>
   2789 -	      <property name="label">gtk-close</property>
   2790 -	      <property name="use_stock">True</property>
   2791 -	      <property name="relief">GTK_RELIEF_NORMAL</property>
   2792 -	      <property name="focus_on_click">True</property>
   2793 -	      <property name="response_id">-7</property>
   2794 -	    </widget>
   2795 -	  </child>
   2796 -	</widget>
   2797 -	<packing>
   2798 -	  <property name="padding">0</property>
   2799 -	  <property name="expand">False</property>
   2800 -	  <property name="fill">True</property>
   2801 -	  <property name="pack_type">GTK_PACK_END</property>
   2802 -	</packing>
   2803 -      </child>
   2804 -
   2805 -      <child>
   2806 -	<widget class="GtkNotebook" id="notebook1">
   2807 -	  <property name="border_width">5</property>
   2808 -	  <property name="visible">True</property>
   2809 -	  <property name="can_focus">True</property>
   2810 -	  <property name="show_tabs">True</property>
   2811 -	  <property name="show_border">True</property>
   2812 -	  <property name="tab_pos">GTK_POS_TOP</property>
   2813 -	  <property name="scrollable">False</property>
   2814 -	  <property name="enable_popup">False</property>
   2815 -
   2816 -	  <child>
   2817 -	    <widget class="GtkVBox" id="vbox1">
   2818 -	      <property name="border_width">12</property>
   2819 -	      <property name="visible">True</property>
   2820 -	      <property name="homogeneous">False</property>
   2821 -	      <property name="spacing">18</property>
   2822 -
   2823 -	      <child>
   2824 -		<widget class="GtkVBox" id="vbox2">
   2825 -		  <property name="visible">True</property>
   2826 -		  <property name="homogeneous">False</property>
   2827 -		  <property name="spacing">6</property>
   2828 -
   2829 -		  <child>
   2830 -		    <widget class="GtkLabel" id="label4">
   2831 -		      <property name="visible">True</property>
   2832 -		      <property name="label" translatable="yes">&lt;b&gt;Default View&lt;/b&gt;</property>
   2833 -		      <property name="use_underline">False</property>
   2834 -		      <property name="use_markup">True</property>
   2835 -		      <property name="justify">GTK_JUSTIFY_LEFT</property>
   2836 -		      <property name="wrap">False</property>
   2837 -		      <property name="selectable">False</property>
   2838 -		      <property name="xalign">0</property>
   2839 -		      <property name="yalign">0.5</property>
   2840 -		      <property name="xpad">0</property>
   2841 -		      <property name="ypad">0</property>
   2842 -		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   2843 -		      <property name="width_chars">-1</property>
   2844 -		      <property name="single_line_mode">False</property>
   2845 -		      <property name="angle">0</property>
   2846 -		    </widget>
   2847 -		    <packing>
   2848 -		      <property name="padding">0</property>
   2849 -		      <property name="expand">False</property>
   2850 -		      <property name="fill">False</property>
   2851 -		    </packing>
   2852 -		  </child>
   2853 -
   2854 -		  <child>
   2855 -		    <widget class="GtkAlignment" id="alignment2">
   2856 -		      <property name="visible">True</property>
   2857 -		      <property name="xalign">0.5</property>
   2858 -		      <property name="yalign">0.5</property>
   2859 -		      <property name="xscale">1</property>
   2860 -		      <property name="yscale">1</property>
   2861 -		      <property name="top_padding">0</property>
   2862 -		      <property name="bottom_padding">0</property>
   2863 -		      <property name="left_padding">12</property>
   2864 -		      <property name="right_padding">0</property>
   2865 -
   2866 -		      <child>
   2867 -			<widget class="GtkVBox" id="vbox14">
   2868 -			  <property name="visible">True</property>
   2869 -			  <property name="homogeneous">False</property>
   2870 -			  <property name="spacing">6</property>
   2871 -
   2872 -			  <child>
   2873 -			    <widget class="GtkHBox" id="hbox34">
   2874 -			      <property name="visible">True</property>
   2875 -			      <property name="homogeneous">False</property>
   2876 -			      <property name="spacing">12</property>
   2877 -
   2878 -			      <child>
   2879 -				<widget class="GtkLabel" id="views_label_0">
   2880 -				  <property name="visible">True</property>
   2881 -				  <property name="label" translatable="yes">View _new folders using:</property>
   2882 -				  <property name="use_underline">True</property>
   2883 -				  <property name="use_markup">False</property>
   2884 -				  <property name="justify">GTK_JUSTIFY_LEFT</property>
   2885 -				  <property name="wrap">False</property>
   2886 -				  <property name="selectable">False</property>
   2887 -				  <property name="xalign">0</property>
   2888 -				  <property name="yalign">0.5</property>
   2889 -				  <property name="xpad">0</property>
   2890 -				  <property name="ypad">0</property>
   2891 -				  <property name="mnemonic_widget">default_view_combobox</property>
   2892 -				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   2893 -				  <property name="width_chars">-1</property>
   2894 -				  <property name="single_line_mode">False</property>
   2895 -				  <property name="angle">0</property>
   2896 -				</widget>
   2897 -				<packing>
   2898 -				  <property name="padding">0</property>
   2899 -				  <property name="expand">False</property>
   2900 -				  <property name="fill">False</property>
   2901 -				</packing>
   2902 -			      </child>
   2903 -
   2904 -			      <child>
   2905 -				<widget class="GtkComboBox" id="default_view_combobox">
   2906 -				  <property name="visible">True</property>
   2907 -				  <property name="items" translatable="yes">Icon View
   2908 +  <widget class="GtkDialog" id="file_management_dialog">
   2909 +    <property name="border_width">5</property>
   2910 +    <property name="title" translatable="yes">File Management Preferences</property>
   2911 +    <property name="window_position">GTK_WIN_POS_CENTER</property>
   2912 +    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
   2913 +    <property name="has_separator">False</property>
   2914 +    <child internal-child="vbox">
   2915 +      <widget class="GtkVBox" id="dialog-vbox1">
   2916 +        <property name="visible">True</property>
   2917 +        <property name="spacing">2</property>
   2918 +        <child>
   2919 +          <widget class="GtkNotebook" id="notebook1">
   2920 +            <property name="visible">True</property>
   2921 +            <property name="can_focus">True</property>
   2922 +            <property name="border_width">5</property>
   2923 +            <child>
   2924 +              <widget class="GtkVBox" id="vbox1">
   2925 +                <property name="visible">True</property>
   2926 +                <property name="border_width">12</property>
   2927 +                <property name="spacing">18</property>
   2928 +                <child>
   2929 +                  <widget class="GtkVBox" id="vbox2">
   2930 +                    <property name="visible">True</property>
   2931 +                    <property name="spacing">6</property>
   2932 +                    <child>
   2933 +                      <widget class="GtkLabel" id="label4">
   2934 +                        <property name="visible">True</property>
   2935 +                        <property name="xalign">0</property>
   2936 +                        <property name="label" translatable="yes">&lt;b&gt;Default View&lt;/b&gt;</property>
   2937 +                        <property name="use_markup">True</property>
   2938 +                      </widget>
   2939 +                      <packing>
   2940 +                        <property name="expand">False</property>
   2941 +                        <property name="fill">False</property>
   2942 +                      </packing>
   2943 +                    </child>
   2944 +                    <child>
   2945 +                      <widget class="GtkAlignment" id="alignment2">
   2946 +                        <property name="visible">True</property>
   2947 +                        <property name="left_padding">12</property>
   2948 +                        <child>
   2949 +                          <widget class="GtkVBox" id="vbox14">
   2950 +                            <property name="visible">True</property>
   2951 +                            <property name="spacing">6</property>
   2952 +                            <child>
   2953 +                              <widget class="GtkHBox" id="hbox34">
   2954 +                                <property name="visible">True</property>
   2955 +                                <property name="spacing">12</property>
   2956 +                                <child>
   2957 +                                  <widget class="GtkLabel" id="views_label_0">
   2958 +                                    <property name="visible">True</property>
   2959 +                                    <property name="xalign">0</property>
   2960 +                                    <property name="label" translatable="yes">View _new folders using:</property>
   2961 +                                    <property name="use_underline">True</property>
   2962 +                                    <property name="mnemonic_widget">default_view_combobox</property>
   2963 +                                  </widget>
   2964 +                                  <packing>
   2965 +                                    <property name="expand">False</property>
   2966 +                                    <property name="fill">False</property>
   2967 +                                  </packing>
   2968 +                                </child>
   2969 +                                <child>
   2970 +                                  <widget class="GtkComboBox" id="default_view_combobox">
   2971 +                                    <property name="visible">True</property>
   2972 +                                    <property name="items" translatable="yes">Icon View
   2973  List View
   2974  Compact View</property>
   2975 -				  <property name="add_tearoffs">False</property>
   2976 -				  <property name="focus_on_click">True</property>
   2977 -				</widget>
   2978 -				<packing>
   2979 -				  <property name="padding">0</property>
   2980 -				  <property name="expand">True</property>
   2981 -				  <property name="fill">True</property>
   2982 -				</packing>
   2983 -			      </child>
   2984 -			    </widget>
   2985 -			    <packing>
   2986 -			      <property name="padding">0</property>
   2987 -			      <property name="expand">True</property>
   2988 -			      <property name="fill">True</property>
   2989 -			    </packing>
   2990 -			  </child>
   2991 -
   2992 -			  <child>
   2993 -			    <widget class="GtkHBox" id="hbox11">
   2994 -			      <property name="visible">True</property>
   2995 -			      <property name="homogeneous">False</property>
   2996 -			      <property name="spacing">12</property>
   2997 -
   2998 -			      <child>
   2999 -				<widget class="GtkLabel" id="views_label_1">
   3000 -				  <property name="visible">True</property>
   3001 -				  <property name="label" translatable="yes">_Arrange items:</property>
   3002 -				  <property name="use_underline">True</property>
   3003 -				  <property name="use_markup">False</property>
   3004 -				  <property name="justify">GTK_JUSTIFY_LEFT</property>
   3005 -				  <property name="wrap">False</property>
   3006 -				  <property name="selectable">False</property>
   3007 -				  <property name="xalign">0</property>
   3008 -				  <property name="yalign">0.5</property>
   3009 -				  <property name="xpad">0</property>
   3010 -				  <property name="ypad">0</property>
   3011 -				  <property name="mnemonic_widget">sort_order_combobox</property>
   3012 -				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   3013 -				  <property name="width_chars">-1</property>
   3014 -				  <property name="single_line_mode">False</property>
   3015 -				  <property name="angle">0</property>
   3016 -				</widget>
   3017 -				<packing>
   3018 -				  <property name="padding">0</property>
   3019 -				  <property name="expand">False</property>
   3020 -				  <property name="fill">False</property>
   3021 -				</packing>
   3022 -			      </child>
   3023 -
   3024 -			      <child>
   3025 -				<widget class="GtkComboBox" id="sort_order_combobox">
   3026 -				  <property name="visible">True</property>
   3027 -				  <property name="items" translatable="yes">By Name
   3028 +                                  </widget>
   3029 +                                  <packing>
   3030 +                                    <property name="position">1</property>
   3031 +                                  </packing>
   3032 +                                </child>
   3033 +                              </widget>
   3034 +                            </child>
   3035 +                            <child>
   3036 +                              <widget class="GtkHBox" id="hbox11">
   3037 +                                <property name="visible">True</property>
   3038 +                                <property name="spacing">12</property>
   3039 +                                <child>
   3040 +                                  <widget class="GtkLabel" id="views_label_1">
   3041 +                                    <property name="visible">True</property>
   3042 +                                    <property name="xalign">0</property>
   3043 +                                    <property name="label" translatable="yes">_Arrange items:</property>
   3044 +                                    <property name="use_underline">True</property>
   3045 +                                    <property name="mnemonic_widget">sort_order_combobox</property>
   3046 +                                  </widget>
   3047 +                                  <packing>
   3048 +                                    <property name="expand">False</property>
   3049 +                                    <property name="fill">False</property>
   3050 +                                  </packing>
   3051 +                                </child>
   3052 +                                <child>
   3053 +                                  <widget class="GtkComboBox" id="sort_order_combobox">
   3054 +                                    <property name="visible">True</property>
   3055 +                                    <property name="items" translatable="yes">By Name
   3056  By Size
   3057  By Type
   3058  By Modification Date
   3059  By Emblems</property>
   3060 -				  <property name="add_tearoffs">False</property>
   3061 -				  <property name="focus_on_click">True</property>
   3062 -				</widget>
   3063 -				<packing>
   3064 -				  <property name="padding">0</property>
   3065 -				  <property name="expand">True</property>
   3066 -				  <property name="fill">True</property>
   3067 -				</packing>
   3068 -			      </child>
   3069 -			    </widget>
   3070 -			    <packing>
   3071 -			      <property name="padding">0</property>
   3072 -			      <property name="expand">True</property>
   3073 -			      <property name="fill">True</property>
   3074 -			    </packing>
   3075 -			  </child>
   3076 -
   3077 -			  <child>
   3078 -			    <widget class="GtkCheckButton" id="sort_folders_first_checkbutton">
   3079 -			      <property name="visible">True</property>
   3080 -			      <property name="can_focus">True</property>
   3081 -			      <property name="label" translatable="yes">Sort _folders before files</property>
   3082 -			      <property name="use_underline">True</property>
   3083 -			      <property name="relief">GTK_RELIEF_NORMAL</property>
   3084 -			      <property name="focus_on_click">True</property>
   3085 -			      <property name="active">False</property>
   3086 -			      <property name="inconsistent">False</property>
   3087 -			      <property name="draw_indicator">True</property>
   3088 -			    </widget>
   3089 -			    <packing>
   3090 -			      <property name="padding">0</property>
   3091 -			      <property name="expand">False</property>
   3092 -			      <property name="fill">False</property>
   3093 -			    </packing>
   3094 -			  </child>
   3095 -
   3096 -			  <child>
   3097 -			    <widget class="GtkCheckButton" id="hidden_files_checkbutton">
   3098 -			      <property name="visible">True</property>
   3099 -			      <property name="can_focus">True</property>
   3100 -			      <property name="label" translatable="yes">Show hidden and _backup files</property>
   3101 -			      <property name="use_underline">True</property>
   3102 -			      <property name="relief">GTK_RELIEF_NORMAL</property>
   3103 -			      <property name="focus_on_click">True</property>
   3104 -			      <property name="active">False</property>
   3105 -			      <property name="inconsistent">False</property>
   3106 -			      <property name="draw_indicator">True</property>
   3107 -			    </widget>
   3108 -			    <packing>
   3109 -			      <property name="padding">0</property>
   3110 -			      <property name="expand">False</property>
   3111 -			      <property name="fill">False</property>
   3112 -			    </packing>
   3113 -			  </child>
   3114 -			</widget>
   3115 -		      </child>
   3116 -		    </widget>
   3117 -		    <packing>
   3118 -		      <property name="padding">0</property>
   3119 -		      <property name="expand">True</property>
   3120 -		      <property name="fill">True</property>
   3121 -		    </packing>
   3122 -		  </child>
   3123 -		</widget>
   3124 -		<packing>
   3125 -		  <property name="padding">0</property>
   3126 -		  <property name="expand">False</property>
   3127 -		  <property name="fill">True</property>
   3128 -		</packing>
   3129 -	      </child>
   3130 -
   3131 -	      <child>
   3132 -		<widget class="GtkVBox" id="vbox3">
   3133 -		  <property name="visible">True</property>
   3134 -		  <property name="homogeneous">False</property>
   3135 -		  <property name="spacing">6</property>
   3136 -
   3137 -		  <child>
   3138 -		    <widget class="GtkLabel" id="label5">
   3139 -		      <property name="visible">True</property>
   3140 -		      <property name="label" translatable="yes">&lt;b&gt;Icon View Defaults&lt;/b&gt;</property>
   3141 -		      <property name="use_underline">False</property>
   3142 -		      <property name="use_markup">True</property>
   3143 -		      <property name="justify">GTK_JUSTIFY_LEFT</property>
   3144 -		      <property name="wrap">False</property>
   3145 -		      <property name="selectable">False</property>
   3146 -		      <property name="xalign">0</property>
   3147 -		      <property name="yalign">0.5</property>
   3148 -		      <property name="xpad">0</property>
   3149 -		      <property name="ypad">0</property>
   3150 -		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   3151 -		      <property name="width_chars">-1</property>
   3152 -		      <property name="single_line_mode">False</property>
   3153 -		      <property name="angle">0</property>
   3154 -		    </widget>
   3155 -		    <packing>
   3156 -		      <property name="padding">0</property>
   3157 -		      <property name="expand">False</property>
   3158 -		      <property name="fill">False</property>
   3159 -		    </packing>
   3160 -		  </child>
   3161 -
   3162 -		  <child>
   3163 -		    <widget class="GtkAlignment" id="alignment1">
   3164 -		      <property name="visible">True</property>
   3165 -		      <property name="xalign">0.5</property>
   3166 -		      <property name="yalign">0.5</property>
   3167 -		      <property name="xscale">1</property>
   3168 -		      <property name="yscale">1</property>
   3169 -		      <property name="top_padding">0</property>
   3170 -		      <property name="bottom_padding">0</property>
   3171 -		      <property name="left_padding">12</property>
   3172 -		      <property name="right_padding">0</property>
   3173 -
   3174 -		      <child>
   3175 -			<widget class="GtkVBox" id="vbox16">
   3176 -			  <property name="visible">True</property>
   3177 -			  <property name="homogeneous">False</property>
   3178 -			  <property name="spacing">6</property>
   3179 -
   3180 -			  <child>
   3181 -			    <widget class="GtkHBox" id="hbox35">
   3182 -			      <property name="visible">True</property>
   3183 -			      <property name="homogeneous">False</property>
   3184 -			      <property name="spacing">12</property>
   3185 -
   3186 -			      <child>
   3187 -				<widget class="GtkLabel" id="views_label_2">
   3188 -				  <property name="visible">True</property>
   3189 -				  <property name="label" translatable="yes">Default _zoom level:</property>
   3190 -				  <property name="use_underline">True</property>
   3191 -				  <property name="use_markup">False</property>
   3192 -				  <property name="justify">GTK_JUSTIFY_LEFT</property>
   3193 -				  <property name="wrap">False</property>
   3194 -				  <property name="selectable">False</property>
   3195 -				  <property name="xalign">0</property>
   3196 -				  <property name="yalign">0.5</property>
   3197 -				  <property name="xpad">0</property>
   3198 -				  <property name="ypad">0</property>
   3199 -				  <property name="mnemonic_widget">icon_view_zoom_combobox</property>
   3200 -				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   3201 -				  <property name="width_chars">-1</property>
   3202 -				  <property name="single_line_mode">False</property>
   3203 -				  <property name="angle">0</property>
   3204 -				</widget>
   3205 -				<packing>
   3206 -				  <property name="padding">0</property>
   3207 -				  <property name="expand">False</property>
   3208 -				  <property name="fill">False</property>
   3209 -				</packing>
   3210 -			      </child>
   3211 -
   3212 -			      <child>
   3213 -				<widget class="GtkComboBox" id="icon_view_zoom_combobox">
   3214 -				  <property name="visible">True</property>
   3215 -				  <property name="items" translatable="yes">33%
   3216 +                                  </widget>
   3217 +                                  <packing>
   3218 +                                    <property name="position">1</property>
   3219 +                                  </packing>
   3220 +                                </child>
   3221 +                              </widget>
   3222 +                              <packing>
   3223 +                                <property name="position">1</property>
   3224 +                              </packing>
   3225 +                            </child>
   3226 +                            <child>
   3227 +                              <widget class="GtkCheckButton" id="sort_folders_first_checkbutton">
   3228 +                                <property name="visible">True</property>
   3229 +                                <property name="can_focus">True</property>
   3230 +                                <property name="label" translatable="yes">Sort _folders before files</property>
   3231 +                                <property name="use_underline">True</property>
   3232 +                                <property name="response_id">0</property>
   3233 +                                <property name="draw_indicator">True</property>
   3234 +                              </widget>
   3235 +                              <packing>
   3236 +                                <property name="expand">False</property>
   3237 +                                <property name="fill">False</property>
   3238 +                                <property name="position">2</property>
   3239 +                              </packing>
   3240 +                            </child>
   3241 +                            <child>
   3242 +                              <widget class="GtkCheckButton" id="hidden_files_checkbutton">
   3243 +                                <property name="visible">True</property>
   3244 +                                <property name="can_focus">True</property>
   3245 +                                <property name="label" translatable="yes">Show hidden and _backup files</property>
   3246 +                                <property name="use_underline">True</property>
   3247 +                                <property name="response_id">0</property>
   3248 +                                <property name="draw_indicator">True</property>
   3249 +                              </widget>
   3250 +                              <packing>
   3251 +                                <property name="expand">False</property>
   3252 +                                <property name="fill">False</property>
   3253 +                                <property name="position">3</property>
   3254 +                              </packing>
   3255 +                            </child>
   3256 +                          </widget>
   3257 +                        </child>
   3258 +                      </widget>
   3259 +                      <packing>
   3260 +                        <property name="position">1</property>
   3261 +                      </packing>
   3262 +                    </child>
   3263 +                  </widget>
   3264 +                  <packing>
   3265 +                    <property name="expand">False</property>
   3266 +                  </packing>
   3267 +                </child>
   3268 +                <child>
   3269 +                  <widget class="GtkVBox" id="vbox3">
   3270 +                    <property name="visible">True</property>
   3271 +                    <property name="spacing">6</property>
   3272 +                    <child>
   3273 +                      <widget class="GtkLabel" id="label5">
   3274 +                        <property name="visible">True</property>
   3275 +                        <property name="xalign">0</property>
   3276 +                        <property name="label" translatable="yes">&lt;b&gt;Icon View Defaults&lt;/b&gt;</property>
   3277 +                        <property name="use_markup">True</property>
   3278 +                      </widget>
   3279 +                      <packing>
   3280 +                        <property name="expand">False</property>
   3281 +                        <property name="fill">False</property>
   3282 +                      </packing>
   3283 +                    </child>
   3284 +                    <child>
   3285 +                      <widget class="GtkAlignment" id="alignment1">
   3286 +                        <property name="visible">True</property>
   3287 +                        <property name="left_padding">12</property>
   3288 +                        <child>
   3289 +                          <widget class="GtkVBox" id="vbox16">
   3290 +                            <property name="visible">True</property>
   3291 +                            <property name="spacing">6</property>
   3292 +                            <child>
   3293 +                              <widget class="GtkHBox" id="hbox35">
   3294 +                                <property name="visible">True</property>
   3295 +                                <property name="spacing">12</property>
   3296 +                                <child>
   3297 +                                  <widget class="GtkLabel" id="views_label_2">
   3298 +                                    <property name="visible">True</property>
   3299 +                                    <property name="xalign">0</property>
   3300 +                                    <property name="label" translatable="yes">Default _zoom level:</property>
   3301 +                                    <property name="use_underline">True</property>
   3302 +                                    <property name="mnemonic_widget">icon_view_zoom_combobox</property>
   3303 +                                  </widget>
   3304 +                                  <packing>
   3305 +                                    <property name="expand">False</property>
   3306 +                                    <property name="fill">False</property>
   3307 +                                  </packing>
   3308 +                                </child>
   3309 +                                <child>
   3310 +                                  <widget class="GtkComboBox" id="icon_view_zoom_combobox">
   3311 +                                    <property name="visible">True</property>
   3312 +                                    <property name="items" translatable="yes">33%
   3313  50%
   3314  66%
   3315  100%
   3316  150%
   3317  200%
   3318  400%</property>
   3319 -				  <property name="add_tearoffs">False</property>
   3320 -				  <property name="focus_on_click">True</property>
   3321 -				</widget>
   3322 -				<packing>
   3323 -				  <property name="padding">0</property>
   3324 -				  <property name="expand">True</property>
   3325 -				  <property name="fill">True</property>
   3326 -				</packing>
   3327 -			      </child>
   3328 -			    </widget>
   3329 -			    <packing>
   3330 -			      <property name="padding">0</property>
   3331 -			      <property name="expand">True</property>
   3332 -			      <property name="fill">True</property>
   3333 -			    </packing>
   3334 -			  </child>
   3335 -
   3336 -			  <child>
   3337 -			    <widget class="GtkCheckButton" id="compact_layout_checkbutton">
   3338 -			      <property name="visible">True</property>
   3339 -			      <property name="can_focus">True</property>
   3340 -			      <property name="label" translatable="yes">_Use compact layout</property>
   3341 -			      <property name="use_underline">True</property>
   3342 -			      <property name="relief">GTK_RELIEF_NORMAL</property>
   3343 -			      <property name="focus_on_click">True</property>
   3344 -			      <property name="active">False</property>
   3345 -			      <property name="inconsistent">False</property>
   3346 -			      <property name="draw_indicator">True</property>
   3347 -			    </widget>
   3348 -			    <packing>
   3349 -			      <property name="padding">0</property>
   3350 -			      <property name="expand">False</property>
   3351 -			      <property name="fill">False</property>
   3352 -			    </packing>
   3353 -			  </child>
   3354 -
   3355 -			  <child>
   3356 -			    <widget class="GtkCheckButton" id="labels_beside_icons_checkbutton">
   3357 -			      <property name="visible">True</property>
   3358 -			      <property name="can_focus">True</property>
   3359 -			      <property name="label" translatable="yes">_Text beside icons</property>
   3360 -			      <property name="use_underline">True</property>
   3361 -			      <property name="relief">GTK_RELIEF_NORMAL</property>
   3362 -			      <property name="focus_on_click">True</property>
   3363 -			      <property name="active">False</property>
   3364 -			      <property name="inconsistent">False</property>
   3365 -			      <property name="draw_indicator">True</property>
   3366 -			    </widget>
   3367 -			    <packing>
   3368 -			      <property name="padding">0</property>
   3369 -			      <property name="expand">False</property>
   3370 -			      <property name="fill">False</property>
   3371 -			    </packing>
   3372 -			  </child>
   3373 -			</widget>
   3374 -		      </child>
   3375 -		    </widget>
   3376 -		    <packing>
   3377 -		      <property name="padding">0</property>
   3378 -		      <property name="expand">True</property>
   3379 -		      <property name="fill">True</property>
   3380 -		    </packing>
   3381 -		  </child>
   3382 -		</widget>
   3383 -		<packing>
   3384 -		  <property name="padding">0</property>
   3385 -		  <property name="expand">False</property>
   3386 -		  <property name="fill">True</property>
   3387 -		</packing>
   3388 -	      </child>
   3389 -
   3390 -	      <child>
   3391 -		<widget class="GtkVBox" id="vbox">
   3392 -		  <property name="visible">True</property>
   3393 -		  <property name="homogeneous">False</property>
   3394 -		  <property name="spacing">6</property>
   3395 -
   3396 -		  <child>
   3397 -		    <widget class="GtkLabel" id="label">
   3398 -		      <property name="visible">True</property>
   3399 -		      <property name="label" translatable="yes">&lt;b&gt;Compact View Defaults&lt;/b&gt;</property>
   3400 -		      <property name="use_underline">False</property>
   3401 -		      <property name="use_markup">True</property>
   3402 -		      <property name="justify">GTK_JUSTIFY_LEFT</property>
   3403 -		      <property name="wrap">False</property>
   3404 -		      <property name="selectable">False</property>
   3405 -		      <property name="xalign">0</property>
   3406 -		      <property name="yalign">0.5</property>
   3407 -		      <property name="xpad">0</property>
   3408 -		      <property name="ypad">0</property>
   3409 -		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   3410 -		      <property name="width_chars">-1</property>
   3411 -		      <property name="single_line_mode">False</property>
   3412 -		      <property name="angle">0</property>
   3413 -		    </widget>
   3414 -		    <packing>
   3415 -		      <property name="padding">0</property>
   3416 -		      <property name="expand">False</property>
   3417 -		      <property name="fill">False</property>
   3418 -		    </packing>
   3419 -		  </child>
   3420 -
   3421 -		  <child>
   3422 -		    <widget class="GtkAlignment" id="alignment">
   3423 -		      <property name="visible">True</property>
   3424 -		      <property name="xalign">0.5</property>
   3425 -		      <property name="yalign">0.5</property>
   3426 -		      <property name="xscale">1</property>
   3427 -		      <property name="yscale">1</property>
   3428 -		      <property name="top_padding">0</property>
   3429 -		      <property name="bottom_padding">0</property>
   3430 -		      <property name="left_padding">12</property>
   3431 -		      <property name="right_padding">0</property>
   3432 -
   3433 -		      <child>
   3434 -			<widget class="GtkVBox" id="vbox">
   3435 -			  <property name="visible">True</property>
   3436 -			  <property name="homogeneous">False</property>
   3437 -			  <property name="spacing">6</property>
   3438 -
   3439 -			  <child>
   3440 -			    <widget class="GtkHBox" id="hbox">
   3441 -			      <property name="visible">True</property>
   3442 -			      <property name="homogeneous">False</property>
   3443 -			      <property name="spacing">12</property>
   3444 -
   3445 -			      <child>
   3446 -				<widget class="GtkLabel" id="views_label_4">
   3447 -				  <property name="visible">True</property>
   3448 -				  <property name="label" translatable="yes">_Default zoom level:</property>
   3449 -				  <property name="use_underline">True</property>
   3450 -				  <property name="use_markup">False</property>
   3451 -				  <property name="justify">GTK_JUSTIFY_LEFT</property>
   3452 -				  <property name="wrap">False</property>
   3453 -				  <property name="selectable">False</property>
   3454 -				  <property name="xalign">0</property>
   3455 -				  <property name="yalign">0.5</property>
   3456 -				  <property name="xpad">0</property>
   3457 -				  <property name="ypad">0</property>
   3458 -				  <property name="mnemonic_widget">compact_view_zoom_combobox</property>
   3459 -				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   3460 -				  <property name="width_chars">-1</property>
   3461 -				  <property name="single_line_mode">False</property>
   3462 -				  <property name="angle">0</property>
   3463 -				</widget>
   3464 -				<packing>
   3465 -				  <property name="padding">0</property>
   3466 -				  <property name="expand">False</property>
   3467 -				  <property name="fill">False</property>
   3468 -				</packing>
   3469 -			      </child>
   3470 -
   3471 -			      <child>
   3472 -				<widget class="GtkComboBox" id="compact_view_zoom_combobox">
   3473 -				  <property name="visible">True</property>
   3474 -				  <property name="items" translatable="yes">33%
   3475 +                                  </widget>
   3476 +                                  <packing>
   3477 +                                    <property name="position">1</property>
   3478 +                                  </packing>
   3479 +                                </child>
   3480 +                              </widget>
   3481 +                            </child>
   3482 +                            <child>
   3483 +                              <widget class="GtkCheckButton" id="compact_layout_checkbutton">
   3484 +                                <property name="visible">True</property>
   3485 +                                <property name="can_focus">True</property>
   3486 +                                <property name="label" translatable="yes">_Use compact layout</property>
   3487 +                                <property name="use_underline">True</property>
   3488 +                                <property name="response_id">0</property>
   3489 +                                <property name="draw_indicator">True</property>
   3490 +                              </widget>
   3491 +                              <packing>
   3492 +                                <property name="expand">False</property>
   3493 +                                <property name="fill">False</property>
   3494 +                                <property name="position">1</property>
   3495 +                              </packing>
   3496 +                            </child>
   3497 +                            <child>
   3498 +                              <widget class="GtkCheckButton" id="labels_beside_icons_checkbutton">
   3499 +                                <property name="visible">True</property>
   3500 +                                <property name="can_focus">True</property>
   3501 +                                <property name="label" translatable="yes">_Text beside icons</property>
   3502 +                                <property name="use_underline">True</property>
   3503 +                                <property name="response_id">0</property>
   3504 +                                <property name="draw_indicator">True</property>
   3505 +                              </widget>
   3506 +                              <packing>
   3507 +                                <property name="expand">False</property>
   3508 +                                <property name="fill">False</property>
   3509 +                                <property name="position">2</property>
   3510 +                              </packing>
   3511 +                            </child>
   3512 +                          </widget>
   3513 +                        </child>
   3514 +                      </widget>
   3515 +                      <packing>
   3516 +                        <property name="position">1</property>
   3517 +                      </packing>
   3518 +                    </child>
   3519 +                  </widget>
   3520 +                  <packing>
   3521 +                    <property name="expand">False</property>
   3522 +                    <property name="position">1</property>
   3523 +                  </packing>
   3524 +                </child>
   3525 +                <child>
   3526 +                  <widget class="GtkVBox" id="vbox">
   3527 +                    <property name="visible">True</property>
   3528 +                    <property name="spacing">6</property>
   3529 +                    <child>
   3530 +                      <widget class="GtkLabel" id="label">
   3531 +                        <property name="visible">True</property>
   3532 +                        <property name="xalign">0</property>
   3533 +                        <property name="label" translatable="yes">&lt;b&gt;Compact View Defaults&lt;/b&gt;</property>
   3534 +                        <property name="use_markup">True</property>
   3535 +                      </widget>
   3536 +                      <packing>
   3537 +                        <property name="expand">False</property>
   3538 +                        <property name="fill">False</property>
   3539 +                      </packing>
   3540 +                    </child>
   3541 +                    <child>
   3542 +                      <widget class="GtkAlignment" id="alignment">
   3543 +                        <property name="visible">True</property>
   3544 +                        <property name="left_padding">12</property>
   3545 +                        <child>
   3546 +                          <widget class="GtkVBox" id="vbox">
   3547 +                            <property name="visible">True</property>
   3548 +                            <property name="spacing">6</property>
   3549 +                            <child>
   3550 +                              <widget class="GtkHBox" id="hbox">
   3551 +                                <property name="visible">True</property>
   3552 +                                <property name="spacing">12</property>
   3553 +                                <child>
   3554 +                                  <widget class="GtkLabel" id="views_label_4">
   3555 +                                    <property name="visible">True</property>
   3556 +                                    <property name="xalign">0</property>
   3557 +                                    <property name="label" translatable="yes">_Default zoom level:</property>
   3558 +                                    <property name="use_underline">True</property>
   3559 +                                    <property name="mnemonic_widget">compact_view_zoom_combobox</property>
   3560 +                                  </widget>
   3561 +                                  <packing>
   3562 +                                    <property name="expand">False</property>
   3563 +                                    <property name="fill">False</property>
   3564 +                                  </packing>
   3565 +                                </child>
   3566 +                                <child>
   3567 +                                  <widget class="GtkComboBox" id="compact_view_zoom_combobox">
   3568 +                                    <property name="visible">True</property>
   3569 +                                    <property name="items" translatable="yes">33%
   3570  50%
   3571  66%
   3572  100%
   3573  150%
   3574  200%
   3575  400%</property>
   3576 -				  <property name="add_tearoffs">False</property>
   3577 -				  <property name="focus_on_click">True</property>
   3578 -				</widget>
   3579 -				<packing>
   3580 -				  <property name="padding">0</property>
   3581 -				  <property name="expand">True</property>
   3582 -				  <property name="fill">True</property>
   3583 -				</packing>
   3584 -			      </child>
   3585 -			    </widget>
   3586 -			    <packing>
   3587 -			      <property name="padding">0</property>
   3588 -			      <property name="expand">True</property>
   3589 -			      <property name="fill">True</property>
   3590 -			    </packing>
   3591 -			  </child>
   3592 -
   3593 -			  <child>
   3594 -			    <widget class="GtkCheckButton" id="all_columns_same_width_checkbutton">
   3595 -			      <property name="visible">True</property>
   3596 -			      <property name="can_focus">True</property>
   3597 -			      <property name="label" translatable="yes">A_ll columns have the same width</property>
   3598 -			      <property name="use_underline">True</property>
   3599 -			      <property name="relief">GTK_RELIEF_NORMAL</property>
   3600 -			      <property name="focus_on_click">True</property>
   3601 -			      <property name="active">False</property>
   3602 -			      <property name="inconsistent">False</property>
   3603 -			      <property name="draw_indicator">True</property>
   3604 -			    </widget>
   3605 -			    <packing>
   3606 -			      <property name="padding">0</property>
   3607 -			      <property name="expand">False</property>
   3608 -			      <property name="fill">False</property>
   3609 -			    </packing>
   3610 -			  </child>
   3611 -			</widget>
   3612 -		      </child>
   3613 -		    </widget>
   3614 -		    <packing>
   3615 -		      <property name="padding">0</property>
   3616 -		      <property name="expand">True</property>
   3617 -		      <property name="fill">True</property>
   3618 -		    </packing>
   3619 -		  </child>
   3620 -		</widget>
   3621 -		<packing>
   3622 -		  <property name="padding">0</property>
   3623 -		  <property name="expand">False</property>
   3624 -		  <property name="fill">True</property>
   3625 -		</packing>
   3626 -	      </child>
   3627 -
   3628 -	      <child>
   3629 -		<widget class="GtkVBox" id="vbox4">
   3630 -		  <property name="visible">True</property>
   3631 -		  <property name="homogeneous">False</property>
   3632 -		  <property name="spacing">6</property>
   3633 -
   3634 -		  <child>
   3635 -		    <widget class="GtkLabel" id="label6">
   3636 -		      <property name="visible">True</property>
   3637 -		      <property name="label" translatable="yes">&lt;b&gt;List View Defaults&lt;/b&gt;</property>
   3638 -		      <property name="use_underline">False</property>
   3639 -		      <property name="use_markup">True</property>
   3640 -		      <property name="justify">GTK_JUSTIFY_LEFT</property>
   3641 -		      <property name="wrap">False</property>
   3642 -		      <property name="selectable">False</property>
   3643 -		      <property name="xalign">0</property>
   3644 -		      <property name="yalign">0.5</property>
   3645 -		      <property name="xpad">0</property>
   3646 -		      <property name="ypad">0</property>
   3647 -		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   3648 -		      <property name="width_chars">-1</property>
   3649 -		      <property name="single_line_mode">False</property>
   3650 -		      <property name="angle">0</property>
   3651 -		    </widget>
   3652 -		    <packing>
   3653 -		      <property name="padding">0</property>
   3654 -		      <property name="expand">False</property>
   3655 -		      <property name="fill">False</property>
   3656 -		    </packing>
   3657 -		  </child>
   3658 -
   3659 -		  <child>
   3660 -		    <widget class="GtkAlignment" id="alignment3">
   3661 -		      <property name="visible">True</property>
   3662 -		      <property name="xalign">0.5</property>
   3663 -		      <property name="yalign">0.5</property>
   3664 -		      <property name="xscale">1</property>
   3665 -		      <property name="yscale">1</property>
   3666 -		      <property name="top_padding">0</property>
   3667 -		      <property name="bottom_padding">0</property>
   3668 -		      <property name="left_padding">12</property>
   3669 -		      <property name="right_padding">0</property>
   3670 -
   3671 -		      <child>
   3672 -			<widget class="GtkVBox" id="vbox15">
   3673 -			  <property name="visible">True</property>
   3674 -			  <property name="homogeneous">False</property>
   3675 -			  <property name="spacing">6</property>
   3676 -
   3677 -			  <child>
   3678 -			    <widget class="GtkHBox" id="hbox36">
   3679 -			      <property name="visible">True</property>
   3680 -			      <property name="homogeneous">False</property>
   3681 -			      <property name="spacing">12</property>
   3682 -
   3683 -			      <child>
   3684 -				<widget class="GtkLabel" id="views_label_3">
   3685 -				  <property name="visible">True</property>
   3686 -				  <property name="label" translatable="yes">D_efault zoom level:</property>
   3687 -				  <property name="use_underline">True</property>
   3688 -				  <property name="use_markup">False</property>
   3689 -				  <property name="justify">GTK_JUSTIFY_LEFT</property>
   3690 -				  <property name="wrap">False</property>
   3691 -				  <property name="selectable">False</property>
   3692 -				  <property name="xalign">0</property>
   3693 -				  <property name="yalign">0.5</property>
   3694 -				  <property name="xpad">0</property>
   3695 -				  <property name="ypad">0</property>
   3696 -				  <property name="mnemonic_widget">list_view_zoom_combobox</property>
   3697 -				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   3698 -				  <property name="width_chars">-1</property>
   3699 -				  <property name="single_line_mode">False</property>
   3700 -				  <property name="angle">0</property>
   3701 -				</widget>
   3702 -				<packing>
   3703 -				  <property name="padding">0</property>
   3704 -				  <property name="expand">False</property>
   3705 -				  <property name="fill">False</property>
   3706 -				</packing>
   3707 -			      </child>
   3708 -
   3709 -			      <child>
   3710 -				<widget class="GtkComboBox" id="list_view_zoom_combobox">
   3711 -				  <property name="visible">True</property>
   3712 -				  <property name="items" translatable="yes">33%
   3713 +                                  </widget>
   3714 +                                  <packing>
   3715 +                                    <property name="position">1</property>
   3716 +                                  </packing>
   3717 +                                </child>
   3718 +                              </widget>
   3719 +                            </child>
   3720 +                            <child>
   3721 +                              <widget class="GtkCheckButton" id="all_columns_same_width_checkbutton">
   3722 +                                <property name="visible">True</property>
   3723 +                                <property name="can_focus">True</property>
   3724 +                                <property name="label" translatable="yes">A_ll columns have the same width</property>
   3725 +                                <property name="use_underline">True</property>
   3726 +                                <property name="response_id">0</property>
   3727 +                                <property name="draw_indicator">True</property>
   3728 +                              </widget>
   3729 +                              <packing>
   3730 +                                <property name="expand">False</property>
   3731 +                                <property name="fill">False</property>
   3732 +                                <property name="position">1</property>
   3733 +                              </packing>
   3734 +                            </child>
   3735 +                          </widget>
   3736 +                        </child>
   3737 +                      </widget>
   3738 +                      <packing>
   3739 +                        <property name="position">1</property>
   3740 +                      </packing>
   3741 +                    </child>
   3742 +                  </widget>
   3743 +                  <packing>
   3744 +                    <property name="expand">False</property>
   3745 +                    <property name="position">2</property>
   3746 +                  </packing>
   3747 +                </child>
   3748 +                <child>
   3749 +                  <widget class="GtkVBox" id="vbox4">
   3750 +                    <property name="visible">True</property>
   3751 +                    <property name="spacing">6</property>
   3752 +                    <child>
   3753 +                      <widget class="GtkLabel" id="label6">
   3754 +                        <property name="visible">True</property>
   3755 +                        <property name="xalign">0</property>
   3756 +                        <property name="label" translatable="yes">&lt;b&gt;List View Defaults&lt;/b&gt;</property>
   3757 +                        <property name="use_markup">True</property>
   3758 +                      </widget>
   3759 +                      <packing>
   3760 +                        <property name="expand">False</property>
   3761 +                        <property name="fill">False</property>
   3762 +                      </packing>
   3763 +                    </child>
   3764 +                    <child>
   3765 +                      <widget class="GtkAlignment" id="alignment3">
   3766 +                        <property name="visible">True</property>
   3767 +                        <property name="left_padding">12</property>
   3768 +                        <child>
   3769 +                          <widget class="GtkVBox" id="vbox15">
   3770 +                            <property name="visible">True</property>
   3771 +                            <property name="spacing">6</property>
   3772 +                            <child>
   3773 +                              <widget class="GtkHBox" id="hbox36">
   3774 +                                <property name="visible">True</property>
   3775 +                                <property name="spacing">12</property>
   3776 +                                <child>
   3777 +                                  <widget class="GtkLabel" id="views_label_3">
   3778 +                                    <property name="visible">True</property>
   3779 +                                    <property name="xalign">0</property>
   3780 +                                    <property name="label" translatable="yes">D_efault zoom level:</property>
   3781 +                                    <property name="use_underline">True</property>
   3782 +                                    <property name="mnemonic_widget">list_view_zoom_combobox</property>
   3783 +                                  </widget>
   3784 +                                  <packing>
   3785 +                                    <property name="expand">False</property>
   3786 +                                    <property name="fill">False</property>
   3787 +                                  </packing>
   3788 +                                </child>
   3789 +                                <child>
   3790 +                                  <widget class="GtkComboBox" id="list_view_zoom_combobox">
   3791 +                                    <property name="visible">True</property>
   3792 +                                    <property name="items" translatable="yes">33%
   3793  50%
   3794  66%
   3795  100%
   3796  150%
   3797  200%
   3798  400%</property>
   3799 -				  <property name="add_tearoffs">False</property>
   3800 -				  <property name="focus_on_click">True</property>
   3801 -				</widget>
   3802 -				<packing>
   3803 -				  <property name="padding">0</property>
   3804 -				  <property name="expand">True</property>
   3805 -				  <property name="fill">True</property>
   3806 -				</packing>
   3807 -			      </child>
   3808 -			    </widget>
   3809 -			    <packing>
   3810 -			      <property name="padding">0</property>
   3811 -			      <property name="expand">True</property>
   3812 -			      <property name="fill">True</property>
   3813 -			    </packing>
   3814 -			  </child>
   3815 -			</widget>
   3816 -		      </child>
   3817 -		    </widget>
   3818 -		    <packing>
   3819 -		      <property name="padding">0</property>
   3820 -		      <property name="expand">True</property>
   3821 -		      <property name="fill">True</property>
   3822 -		    </packing>
   3823 -		  </child>
   3824 -		</widget>
   3825 -		<packing>
   3826 -		  <property name="padding">0</property>
   3827 -		  <property name="expand">False</property>
   3828 -		  <property name="fill">True</property>
   3829 -		</packing>
   3830 -	      </child>
   3831 -
   3832 -	      <child>
   3833 -		<widget class="GtkVBox" id="vbox24">
   3834 -		  <property name="visible">True</property>
   3835 -		  <property name="homogeneous">False</property>
   3836 -		  <property name="spacing">6</property>
   3837 -
   3838 -		  <child>
   3839 -		    <widget class="GtkLabel" id="label25">
   3840 -		      <property name="visible">True</property>
   3841 -		      <property name="label" translatable="yes">&lt;b&gt;Tree View Defaults&lt;/b&gt;</property>
   3842 -		      <property name="use_underline">False</property>
   3843 -		      <property name="use_markup">True</property>
   3844 -		      <property name="justify">GTK_JUSTIFY_LEFT</property>
   3845 -		      <property name="wrap">False</property>
   3846 -		      <property name="selectable">False</property>
   3847 -		      <property name="xalign">0</property>
   3848 -		      <property name="yalign">0.5</property>
   3849 -		      <property name="xpad">0</property>
   3850 -		      <property name="ypad">0</property>
   3851 -		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   3852 -		      <property name="width_chars">-1</property>
   3853 -		      <property name="single_line_mode">False</property>
   3854 -		      <property name="angle">0</property>
   3855 -		    </widget>
   3856 -		    <packing>
   3857 -		      <property name="padding">0</property>
   3858 -		      <property name="expand">False</property>
   3859 -		      <property name="fill">False</property>
   3860 -		    </packing>
   3861 -		  </child>
   3862 -
   3863 -		  <child>
   3864 -		    <widget class="GtkAlignment" id="alignment4">
   3865 -		      <property name="visible">True</property>
   3866 -		      <property name="xalign">0.5</property>
   3867 -		      <property name="yalign">0.5</property>
   3868 -		      <property name="xscale">1</property>
   3869 -		      <property name="yscale">1</property>
   3870 -		      <property name="top_padding">0</property>
   3871 -		      <property name="bottom_padding">0</property>
   3872 -		      <property name="left_padding">12</property>
   3873 -		      <property name="right_padding">0</property>
   3874 -
   3875 -		      <child>
   3876 -			<widget class="GtkVBox" id="vbox25">
   3877 -			  <property name="visible">True</property>
   3878 -			  <property name="homogeneous">False</property>
   3879 -			  <property name="spacing">6</property>
   3880 -
   3881 -			  <child>
   3882 -			    <widget class="GtkCheckButton" id="treeview_folders_checkbutton">
   3883 -			      <property name="visible">True</property>
   3884 -			      <property name="can_focus">True</property>
   3885 -			      <property name="label" translatable="yes">Show _only folders</property>
   3886 -			      <property name="use_underline">True</property>
   3887 -			      <property name="relief">GTK_RELIEF_NORMAL</property>
   3888 -			      <property name="focus_on_click">True</property>
   3889 -			      <property name="active">False</property>
   3890 -			      <property name="inconsistent">False</property>
   3891 -			      <property name="draw_indicator">True</property>
   3892 -			    </widget>
   3893 -			    <packing>
   3894 -			      <property name="padding">0</property>
   3895 -			      <property name="expand">False</property>
   3896 -			      <property name="fill">False</property>
   3897 -			    </packing>
   3898 -			  </child>
   3899 -			</widget>
   3900 -		      </child>
   3901 -		    </widget>
   3902 -		    <packing>
   3903 -		      <property name="padding">0</property>
   3904 -		      <property name="expand">True</property>
   3905 -		      <property name="fill">True</property>
   3906 -		    </packing>
   3907 -		  </child>
   3908 -		</widget>
   3909 -		<packing>
   3910 -		  <property name="padding">0</property>
   3911 -		  <property name="expand">False</property>
   3912 -		  <property name="fill">True</property>
   3913 -		</packing>
   3914 -	      </child>
   3915 -	    </widget>
   3916 -	    <packing>
   3917 -	      <property name="tab_expand">False</property>
   3918 -	      <property name="tab_fill">True</property>
   3919 -	    </packing>
   3920 -	  </child>
   3921 -
   3922 -	  <child>
   3923 -	    <widget class="GtkLabel" id="label1">
   3924 -	      <property name="visible">True</property>
   3925 -	      <property name="label" translatable="yes">Views</property>
   3926 -	      <property name="use_underline">False</property>
   3927 -	      <property name="use_markup">False</property>
   3928 -	      <property name="justify">GTK_JUSTIFY_LEFT</property>
   3929 -	      <property name="wrap">False</property>
   3930 -	      <property name="selectable">False</property>
   3931 -	      <property name="xalign">0.5</property>
   3932 -	      <property name="yalign">0.5</property>
   3933 -	      <property name="xpad">0</property>
   3934 -	      <property name="ypad">0</property>
   3935 -	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   3936 -	      <property name="width_chars">-1</property>
   3937 -	      <property name="single_line_mode">False</property>
   3938 -	      <property name="angle">0</property>
   3939 -	    </widget>
   3940 -	    <packing>
   3941 -	      <property name="type">tab</property>
   3942 -	    </packing>
   3943 -	  </child>
   3944 -
   3945 -	  <child>
   3946 -	    <widget class="GtkVBox" id="vbox5">
   3947 -	      <property name="border_width">12</property>
   3948 -	      <property name="visible">True</property>
   3949 -	      <property name="homogeneous">False</property>
   3950 -	      <property name="spacing">18</property>
   3951 -
   3952 -	      <child>
   3953 -		<widget class="GtkVBox" id="vbox6">
   3954 -		  <property name="visible">True</property>
   3955 -		  <property name="homogeneous">False</property>
   3956 -		  <property name="spacing">6</property>
   3957 -
   3958 -		  <child>
   3959 -		    <widget class="GtkLabel" id="label10">
   3960 -		      <property name="visible">True</property>
   3961 -		      <property name="label" translatable="yes">&lt;b&gt;Behavior&lt;/b&gt;</property>
   3962 -		      <property name="use_underline">False</property>
   3963 -		      <property name="use_markup">True</property>
   3964 -		      <property name="justify">GTK_JUSTIFY_LEFT</property>
   3965 -		      <property name="wrap">False</property>
   3966 -		      <property name="selectable">False</property>
   3967 -		      <property name="xalign">0</property>
   3968 -		      <property name="yalign">0.5</property>
   3969 -		      <property name="xpad">0</property>
   3970 -		      <property name="ypad">0</property>
   3971 -		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   3972 -		      <property name="width_chars">-1</property>
   3973 -		      <property name="single_line_mode">False</property>
   3974 -		      <property name="angle">0</property>
   3975 -		    </widget>
   3976 -		    <packing>
   3977 -		      <property name="padding">0</property>
   3978 -		      <property name="expand">False</property>
   3979 -		      <property name="fill">False</property>
   3980 -		    </packing>
   3981 -		  </child>
   3982 -
   3983 -		  <child>
   3984 -		    <widget class="GtkAlignment" id="alignment5">
   3985 -		      <property name="visible">True</property>
   3986 -		      <property name="xalign">0.5</property>
   3987 -		      <property name="yalign">0.5</property>
   3988 -		      <property name="xscale">1</property>
   3989 -		      <property name="yscale">1</property>
   3990 -		      <property name="top_padding">0</property>
   3991 -		      <property name="bottom_padding">0</property>
   3992 -		      <property name="left_padding">12</property>
   3993 -		      <property name="right_padding">0</property>
   3994 -
   3995 -		      <child>
   3996 -			<widget class="GtkVBox" id="vbox17">
   3997 -			  <property name="visible">True</property>
   3998 -			  <property name="homogeneous">False</property>
   3999 -			  <property name="spacing">0</property>
   4000 -
   4001 -			  <child>
   4002 -			    <widget class="GtkRadioButton" id="single_click_radiobutton">
   4003 -			      <property name="visible">True</property>
   4004 -			      <property name="can_focus">True</property>
   4005 -			      <property name="label" translatable="yes">_Single click to open items</property>
   4006 -			      <property name="use_underline">True</property>
   4007 -			      <property name="relief">GTK_RELIEF_NORMAL</property>
   4008 -			      <property name="focus_on_click">True</property>
   4009 -			      <property name="active">False</property>
   4010 -			      <property name="inconsistent">False</property>
   4011 -			      <property name="draw_indicator">True</property>
   4012 -			    </widget>
   4013 -			    <packing>
   4014 -			      <property name="padding">0</property>
   4015 -			      <property name="expand">False</property>
   4016 -			      <property name="fill">False</property>
   4017 -			    </packing>
   4018 -			  </child>
   4019 -
   4020 -			  <child>
   4021 -			    <widget class="GtkRadioButton" id="double_click_radiobutton">
   4022 -			      <property name="visible">True</property>
   4023 -			      <property name="can_focus">True</property>
   4024 -			      <property name="label" translatable="yes">_Double click to open items</property>
   4025 -			      <property name="use_underline">True</property>
   4026 -			      <property name="relief">GTK_RELIEF_NORMAL</property>
   4027 -			      <property name="focus_on_click">True</property>
   4028 -			      <property name="active">False</property>
   4029 -			      <property name="inconsistent">False</property>
   4030 -			      <property name="draw_indicator">True</property>
   4031 -			      <property name="group">single_click_radiobutton</property>
   4032 -			    </widget>
   4033 -			    <packing>
   4034 -			      <property name="padding">6</property>
   4035 -			      <property name="expand">False</property>
   4036 -			      <property name="fill">False</property>
   4037 -			    </packing>
   4038 -			  </child>
   4039 -
   4040 -			  <child>
   4041 -			    <widget class="GtkLabel" id="label">
   4042 -			      <property name="height_request">6</property>
   4043 -			      <property name="visible">True</property>
   4044 -			      <property name="label" translatable="yes"></property>
   4045 -			      <property name="use_underline">False</property>
   4046 -			      <property name="use_markup">False</property>
   4047 -			      <property name="justify">GTK_JUSTIFY_LEFT</property>
   4048 -			      <property name="wrap">False</property>
   4049 -			      <property name="selectable">False</property>
   4050 -			      <property name="xalign">0.5</property>
   4051 -			      <property name="yalign">0.5</property>
   4052 -			      <property name="xpad">0</property>
   4053 -			      <property name="ypad">0</property>
   4054 -			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   4055 -			      <property name="width_chars">-1</property>
   4056 -			      <property name="single_line_mode">False</property>
   4057 -			      <property name="angle">0</property>
   4058 -			    </widget>
   4059 -			    <packing>
   4060 -			      <property name="padding">0</property>
   4061 -			      <property name="expand">True</property>
   4062 -			      <property name="fill">True</property>
   4063 -			    </packing>
   4064 -			  </child>
   4065 -
   4066 -			  <child>
   4067 -			    <widget class="GtkCheckButton" id="always_use_browser_checkbutton">
   4068 -			      <property name="visible">True</property>
   4069 -			      <property name="can_focus">True</property>
   4070 -			      <property name="label" translatable="yes">Always open in _browser windows</property>
   4071 -			      <property name="use_underline">True</property>
   4072 -			      <property name="relief">GTK_RELIEF_NORMAL</property>
   4073 -			      <property name="focus_on_click">True</property>
   4074 -			      <property name="active">False</property>
   4075 -			      <property name="inconsistent">False</property>
   4076 -			      <property name="draw_indicator">True</property>
   4077 -			    </widget>
   4078 -			    <packing>
   4079 -			      <property name="padding">0</property>
   4080 -			      <property name="expand">False</property>
   4081 -			      <property name="fill">False</property>
   4082 -			    </packing>
   4083 -			  </child>
   4084 -			</widget>
   4085 -		      </child>
   4086 -		    </widget>
   4087 -		    <packing>
   4088 -		      <property name="padding">0</property>
   4089 -		      <property name="expand">True</property>
   4090 -		      <property name="fill">True</property>
   4091 -		    </packing>
   4092 -		  </child>
   4093 -		</widget>
   4094 -		<packing>
   4095 -		  <property name="padding">0</property>
   4096 -		  <property name="expand">False</property>
   4097 -		  <property name="fill">True</property>
   4098 -		</packing>
   4099 -	      </child>
   4100 -
   4101 -	      <child>
   4102 -		<widget class="GtkVBox" id="vbox7">
   4103 -		  <property name="visible">True</property>
   4104 -		  <property name="homogeneous">False</property>
   4105 -		  <property name="spacing">6</property>
   4106 -
   4107 -		  <child>
   4108 -		    <widget class="GtkLabel" id="label12">
   4109 -		      <property name="visible">True</property>
   4110 -		      <property name="label" translatable="yes">&lt;b&gt;Executable Text Files&lt;/b&gt;</property>
   4111 -		      <property name="use_underline">False</property>
   4112 -		      <property name="use_markup">True</property>
   4113 -		      <property name="justify">GTK_JUSTIFY_LEFT</property>
   4114 -		      <property name="wrap">False</property>
   4115 -		      <property name="selectable">False</property>
   4116 -		      <property name="xalign">0</property>
   4117 -		      <property name="yalign">0.5</property>
   4118 -		      <property name="xpad">0</property>
   4119 -		      <property name="ypad">0</property>
   4120 -		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   4121 -		      <property name="width_chars">-1</property>
   4122 -		      <property name="single_line_mode">False</property>
   4123 -		      <property name="angle">0</property>
   4124 -		    </widget>
   4125 -		    <packing>
   4126 -		      <property name="padding">0</property>
   4127 -		      <property name="expand">False</property>
   4128 -		      <property name="fill">False</property>
   4129 -		    </packing>
   4130 -		  </child>
   4131 -
   4132 -		  <child>
   4133 -		    <widget class="GtkAlignment" id="alignment6">
   4134 -		      <property name="visible">True</property>
   4135 -		      <property name="xalign">0.5</property>
   4136 -		      <property name="yalign">0.5</property>
   4137 -		      <property name="xscale">1</property>
   4138 -		      <property name="yscale">1</property>
   4139 -		      <property name="top_padding">0</property>
   4140 -		      <property name="bottom_padding">0</property>
   4141 -		      <property name="left_padding">12</property>
   4142 -		      <property name="right_padding">0</property>
   4143 -
   4144 -		      <child>
   4145 -			<widget class="GtkVBox" id="vbox18">
   4146 -			  <property name="visible">True</property>
   4147 -			  <property name="homogeneous">False</property>
   4148 -			  <property name="spacing">6</property>
   4149 -
   4150 -			  <child>
   4151 -			    <widget class="GtkRadioButton" id="scripts_execute_radiobutton">
   4152 -			      <property name="visible">True</property>
   4153 -			      <property name="can_focus">True</property>
   4154 -			      <property name="label" translatable="yes">_Run executable text files when they are opened</property>
   4155 -			      <property name="use_underline">True</property>
   4156 -			      <property name="relief">GTK_RELIEF_NORMAL</property>
   4157 -			      <property name="focus_on_click">True</property>
   4158 -			      <property name="active">False</property>
   4159 -			      <property name="inconsistent">False</property>
   4160 -			      <property name="draw_indicator">True</property>
   4161 -			    </widget>
   4162 -			    <packing>
   4163 -			      <property name="padding">0</property>
   4164 -			      <property name="expand">False</property>
   4165 -			      <property name="fill">False</property>
   4166 -			    </packing>
   4167 -			  </child>
   4168 -
   4169 -			  <child>
   4170 -			    <widget class="GtkRadioButton" id="scripts_view_radiobutton">
   4171 -			      <property name="visible">True</property>
   4172 -			      <property name="can_focus">True</property>
   4173 -			      <property name="label" translatable="yes">_View executable text files when they are opened</property>
   4174 -			      <property name="use_underline">True</property>
   4175 -			      <property name="relief">GTK_RELIEF_NORMAL</property>
   4176 -			      <property name="focus_on_click">True</property>
   4177 -			      <property name="active">False</property>
   4178 -			      <property name="inconsistent">False</property>
   4179 -			      <property name="draw_indicator">True</property>
   4180 -			      <property name="group">scripts_execute_radiobutton</property>
   4181 -			    </widget>
   4182 -			    <packing>
   4183 -			      <property name="padding">0</property>
   4184 -			      <property name="expand">False</property>
   4185 -			      <property name="fill">False</property>
   4186 -			    </packing>
   4187 -			  </child>
   4188 -
   4189 -			  <child>
   4190 -			    <widget class="GtkRadioButton" id="scripts_confirm_radiobutton">
   4191 -			      <property name="visible">True</property>
   4192 -			      <property name="can_focus">True</property>
   4193 -			      <property name="label" translatable="yes">_Ask each time</property>
   4194 -			      <property name="use_underline">True</property>
   4195 -			      <property name="relief">GTK_RELIEF_NORMAL</property>
   4196 -			      <property name="focus_on_click">True</property>
   4197 -			      <property name="active">False</property>
   4198 -			      <property name="inconsistent">False</property>
   4199 -			      <property name="draw_indicator">True</property>
   4200 -			      <property name="group">scripts_execute_radiobutton</property>
   4201 -			    </widget>
   4202 -			    <packing>
   4203 -			      <property name="padding">0</property>
   4204 -			      <property name="expand">False</property>
   4205 -			      <property name="fill">False</property>
   4206 -			    </packing>
   4207 -			  </child>
   4208 -			</widget>
   4209 -		      </child>
   4210 -		    </widget>
   4211 -		    <packing>
   4212 -		      <property name="padding">0</property>
   4213 -		      <property name="expand">True</property>
   4214 -		      <property name="fill">True</property>
   4215 -		    </packing>
   4216 -		  </child>
   4217 -		</widget>
   4218 -		<packing>
   4219 -		  <property name="padding">0</property>
   4220 -		  <property name="expand">False</property>
   4221 -		  <property name="fill">True</property>
   4222 -		</packing>
   4223 -	      </child>
   4224 -
   4225 -	      <child>
   4226 -		<widget class="GtkVBox" id="vbox8">
   4227 -		  <property name="visible">True</property>
   4228 -		  <property name="homogeneous">False</property>
   4229 -		  <property name="spacing">6</property>
   4230 -
   4231 -		  <child>
   4232 -		    <widget class="GtkLabel" id="label14">
   4233 -		      <property name="visible">True</property>
   4234 -		      <property name="label" translatable="yes">&lt;b&gt;Trash&lt;/b&gt;</property>
   4235 -		      <property name="use_underline">False</property>
   4236 -		      <property name="use_markup">True</property>
   4237 -		      <property name="justify">GTK_JUSTIFY_LEFT</property>
   4238 -		      <property name="wrap">False</property>
   4239 -		      <property name="selectable">False</property>
   4240 -		      <property name="xalign">0</property>
   4241 -		      <property name="yalign">0.5</property>
   4242 -		      <property name="xpad">0</property>
   4243 -		      <property name="ypad">0</property>
   4244 -		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   4245 -		      <property name="width_chars">-1</property>
   4246 -		      <property name="single_line_mode">False</property>
   4247 -		      <property name="angle">0</property>
   4248 -		    </widget>
   4249 -		    <packing>
   4250 -		      <property name="padding">0</property>
   4251 -		      <property name="expand">False</property>
   4252 -		      <property name="fill">False</property>
   4253 -		    </packing>
   4254 -		  </child>
   4255 -
   4256 -		  <child>
   4257 -		    <widget class="GtkAlignment" id="alignment7">
   4258 -		      <property name="visible">True</property>
   4259 -		      <property name="xalign">0.5</property>
   4260 -		      <property name="yalign">0.5</property>
   4261 -		      <property name="xscale">1</property>
   4262 -		      <property name="yscale">1</property>
   4263 -		      <property name="top_padding">0</property>
   4264 -		      <property name="bottom_padding">0</property>
   4265 -		      <property name="left_padding">12</property>
   4266 -		      <property name="right_padding">0</property>
   4267 -
   4268 -		      <child>
   4269 -			<widget class="GtkVBox" id="vbox19">
   4270 -			  <property name="visible">True</property>
   4271 -			  <property name="homogeneous">False</property>
   4272 -			  <property name="spacing">6</property>
   4273 -
   4274 -			  <child>
   4275 -			    <widget class="GtkCheckButton" id="trash_confirm_checkbutton">
   4276 -			      <property name="visible">True</property>
   4277 -			      <property name="can_focus">True</property>
   4278 -			      <property name="label" translatable="yes">Ask before _emptying the Trash or deleting files</property>
   4279 -			      <property name="use_underline">True</property>
   4280 -			      <property name="relief">GTK_RELIEF_NORMAL</property>
   4281 -			      <property name="focus_on_click">True</property>
   4282 -			      <property name="active">False</property>
   4283 -			      <property name="inconsistent">False</property>
   4284 -			      <property name="draw_indicator">True</property>
   4285 -			    </widget>
   4286 -			    <packing>
   4287 -			      <property name="padding">0</property>
   4288 -			      <property name="expand">False</property>
   4289 -			      <property name="fill">False</property>
   4290 -			    </packing>
   4291 -			  </child>
   4292 -
   4293 -			  <child>
   4294 -			    <widget class="GtkCheckButton" id="trash_delete_checkbutton">
   4295 -			      <property name="visible">True</property>
   4296 -			      <property name="can_focus">True</property>
   4297 -			      <property name="label" translatable="yes">I_nclude a Delete command that bypasses Trash</property>
   4298 -			      <property name="use_underline">True</property>
   4299 -			      <property name="relief">GTK_RELIEF_NORMAL</property>
   4300 -			      <property name="focus_on_click">True</property>
   4301 -			      <property name="active">False</property>
   4302 -			      <property name="inconsistent">False</property>
   4303 -			      <property name="draw_indicator">True</property>
   4304 -			    </widget>
   4305 -			    <packing>
   4306 -			      <property name="padding">0</property>
   4307 -			      <property name="expand">False</property>
   4308 -			      <property name="fill">False</property>
   4309 -			    </packing>
   4310 -			  </child>
   4311 -			</widget>
   4312 -		      </child>
   4313 -		    </widget>
   4314 -		    <packing>
   4315 -		      <property name="padding">0</property>
   4316 -		      <property name="expand">True</property>
   4317 -		      <property name="fill">True</property>
   4318 -		    </packing>
   4319 -		  </child>
   4320 -		</widget>
   4321 -		<packing>
   4322 -		  <property name="padding">0</property>
   4323 -		  <property name="expand">False</property>
   4324 -		  <property name="fill">True</property>
   4325 -		</packing>
   4326 -	      </child>
   4327 -	    </widget>
   4328 -	    <packing>
   4329 -	      <property name="tab_expand">False</property>
   4330 -	      <property name="tab_fill">True</property>
   4331 -	    </packing>
   4332 -	  </child>
   4333 -
   4334 -	  <child>
   4335 -	    <widget class="GtkLabel" id="label2">
   4336 -	      <property name="visible">True</property>
   4337 -	      <property name="label" translatable="yes">Behavior</property>
   4338 -	      <property name="use_underline">False</property>
   4339 -	      <property name="use_markup">False</property>
   4340 -	      <property name="justify">GTK_JUSTIFY_LEFT</property>
   4341 -	      <property name="wrap">False</property>
   4342 -	      <property name="selectable">False</property>
   4343 -	      <property name="xalign">0.5</property>
   4344 -	      <property name="yalign">0.5</property>
   4345 -	      <property name="xpad">0</property>
   4346 -	      <property name="ypad">0</property>
   4347 -	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   4348 -	      <property name="width_chars">-1</property>
   4349 -	      <property name="single_line_mode">False</property>
   4350 -	      <property name="angle">0</property>
   4351 -	    </widget>
   4352 -	    <packing>
   4353 -	      <property name="type">tab</property>
   4354 -	    </packing>
   4355 -	  </child>
   4356 -
   4357 -	  <child>
   4358 -	    <widget class="GtkVBox" id="vbox26">
   4359 -	      <property name="border_width">12</property>
   4360 -	      <property name="visible">True</property>
   4361 -	      <property name="homogeneous">False</property>
   4362 -	      <property name="spacing">18</property>
   4363 -
   4364 -	      <child>
   4365 -		<widget class="GtkVBox" id="vbox27">
   4366 -		  <property name="visible">True</property>
   4367 -		  <property name="homogeneous">False</property>
   4368 -		  <property name="spacing">6</property>
   4369 -
   4370 -		  <child>
   4371 -		    <widget class="GtkLabel" id="label28">
   4372 -		      <property name="visible">True</property>
   4373 -		      <property name="label" translatable="yes">&lt;b&gt;Icon Captions&lt;/b&gt;</property>
   4374 -		      <property name="use_underline">False</property>
   4375 -		      <property name="use_markup">True</property>
   4376 -		      <property name="justify">GTK_JUSTIFY_LEFT</property>
   4377 -		      <property name="wrap">False</property>
   4378 -		      <property name="selectable">False</property>
   4379 -		      <property name="xalign">0</property>
   4380 -		      <property name="yalign">0.5</property>
   4381 -		      <property name="xpad">0</property>
   4382 -		      <property name="ypad">0</property>
   4383 -		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   4384 -		      <property name="width_chars">-1</property>
   4385 -		      <property name="single_line_mode">False</property>
   4386 -		      <property name="angle">0</property>
   4387 -		    </widget>
   4388 -		    <packing>
   4389 -		      <property name="padding">0</property>
   4390 -		      <property name="expand">False</property>
   4391 -		      <property name="fill">False</property>
   4392 -		    </packing>
   4393 -		  </child>
   4394 -
   4395 -		  <child>
   4396 -		    <widget class="GtkAlignment" id="alignment8">
   4397 -		      <property name="visible">True</property>
   4398 -		      <property name="xalign">0.5</property>
   4399 -		      <property name="yalign">0.5</property>
   4400 -		      <property name="xscale">1</property>
   4401 -		      <property name="yscale">1</property>
   4402 -		      <property name="top_padding">0</property>
   4403 -		      <property name="bottom_padding">0</property>
   4404 -		      <property name="left_padding">12</property>
   4405 -		      <property name="right_padding">0</property>
   4406 -
   4407 -		      <child>
   4408 -			<widget class="GtkVBox" id="vbox28">
   4409 -			  <property name="visible">True</property>
   4410 -			  <property name="homogeneous">False</property>
   4411 -			  <property name="spacing">6</property>
   4412 -
   4413 -			  <child>
   4414 -			    <widget class="GtkLabel" id="label29">
   4415 -			      <property name="visible">True</property>
   4416 -			      <property name="label" translatable="yes">Choose the order of information to appear beneath icon names. More information will appear when zooming in closer.</property>
   4417 -			      <property name="use_underline">False</property>
   4418 -			      <property name="use_markup">False</property>
   4419 -			      <property name="justify">GTK_JUSTIFY_LEFT</property>
   4420 -			      <property name="wrap">True</property>
   4421 -			      <property name="selectable">False</property>
   4422 -			      <property name="xalign">0</property>
   4423 -			      <property name="yalign">0.5</property>
   4424 -			      <property name="xpad">0</property>
   4425 -			      <property name="ypad">0</property>
   4426 -			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   4427 -			      <property name="width_chars">-1</property>
   4428 -			      <property name="single_line_mode">False</property>
   4429 -			      <property name="angle">0</property>
   4430 -			    </widget>
   4431 -			    <packing>
   4432 -			      <property name="padding">0</property>
   4433 -			      <property name="expand">False</property>
   4434 -			      <property name="fill">False</property>
   4435 -			    </packing>
   4436 -			  </child>
   4437 -
   4438 -			  <child>
   4439 -			    <widget class="GtkHBox" id="hbox28">
   4440 -			      <property name="visible">True</property>
   4441 -			      <property name="homogeneous">False</property>
   4442 -			      <property name="spacing">0</property>
   4443 -
   4444 -			      <child>
   4445 -				<widget class="GtkLabel" id="captions_label_0">
   4446 -				  <property name="visible">True</property>
   4447 -				  <property name="label"></property>
   4448 -				  <property name="use_underline">False</property>
   4449 -				  <property name="use_markup">False</property>
   4450 -				  <property name="justify">GTK_JUSTIFY_LEFT</property>
   4451 -				  <property name="wrap">False</property>
   4452 -				  <property name="selectable">False</property>
   4453 -				  <property name="xalign">0.5</property>
   4454 -				  <property name="yalign">0.5</property>
   4455 -				  <property name="xpad">0</property>
   4456 -				  <property name="ypad">0</property>
   4457 -				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   4458 -				  <property name="width_chars">-1</property>
   4459 -				  <property name="single_line_mode">False</property>
   4460 -				  <property name="angle">0</property>
   4461 -				</widget>
   4462 -				<packing>
   4463 -				  <property name="padding">0</property>
   4464 -				  <property name="expand">False</property>
   4465 -				  <property name="fill">False</property>
   4466 -				</packing>
   4467 -			      </child>
   4468 -
   4469 -			      <child>
   4470 -				<widget class="GtkComboBox" id="captions_0_combobox">
   4471 -				  <property name="visible">True</property>
   4472 -				  <property name="items" translatable="yes"></property>
   4473 -				  <property name="add_tearoffs">False</property>
   4474 -				  <property name="focus_on_click">True</property>
   4475 -				</widget>
   4476 -				<packing>
   4477 -				  <property name="padding">0</property>
   4478 -				  <property name="expand">False</property>
   4479 -				  <property name="fill">True</property>
   4480 -				</packing>
   4481 -			      </child>
   4482 -			    </widget>
   4483 -			    <packing>
   4484 -			      <property name="padding">0</property>
   4485 -			      <property name="expand">True</property>
   4486 -			      <property name="fill">True</property>
   4487 -			    </packing>
   4488 -			  </child>
   4489 -
   4490 -			  <child>
   4491 -			    <widget class="GtkHBox" id="hbox29">
   4492 -			      <property name="visible">True</property>
   4493 -			      <property name="homogeneous">False</property>
   4494 -			      <property name="spacing">0</property>
   4495 -
   4496 -			      <child>
   4497 -				<widget class="GtkLabel" id="captions_label_1">
   4498 -				  <property name="visible">True</property>
   4499 -				  <property name="label"></property>
   4500 -				  <property name="use_underline">True</property>
   4501 -				  <property name="use_markup">False</property>
   4502 -				  <property name="justify">GTK_JUSTIFY_LEFT</property>
   4503 -				  <property name="wrap">False</property>
   4504 -				  <property name="selectable">False</property>
   4505 -				  <property name="xalign">0.5</property>
   4506 -				  <property name="yalign">0.5</property>
   4507 -				  <property name="xpad">0</property>
   4508 -				  <property name="ypad">0</property>
   4509 -				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   4510 -				  <property name="width_chars">-1</property>
   4511 -				  <property name="single_line_mode">False</property>
   4512 -				  <property name="angle">0</property>
   4513 -				</widget>
   4514 -				<packing>
   4515 -				  <property name="padding">0</property>
   4516 -				  <property name="expand">False</property>
   4517 -				  <property name="fill">False</property>
   4518 -				</packing>
   4519 -			      </child>
   4520 -
   4521 -			      <child>
   4522 -				<widget class="GtkComboBox" id="captions_1_combobox">
   4523 -				  <property name="visible">True</property>
   4524 -				  <property name="items" translatable="yes"></property>
   4525 -				  <property name="add_tearoffs">False</property>
   4526 -				  <property name="focus_on_click">True</property>
   4527 -				</widget>
   4528 -				<packing>
   4529 -				  <property name="padding">0</property>
   4530 -				  <property name="expand">False</property>
   4531 -				  <property name="fill">True</property>
   4532 -				</packing>
   4533 -			      </child>
   4534 -			    </widget>
   4535 -			    <packing>
   4536 -			      <property name="padding">0</property>
   4537 -			      <property name="expand">False</property>
   4538 -			      <property name="fill">False</property>
   4539 -			    </packing>
   4540 -			  </child>
   4541 -
   4542 -			  <child>
   4543 -			    <widget class="GtkHBox" id="hbox30">
   4544 -			      <property name="visible">True</property>
   4545 -			      <property name="homogeneous">False</property>
   4546 -			      <property name="spacing">0</property>
   4547 -
   4548 -			      <child>
   4549 -				<widget class="GtkLabel" id="captions_label_2">
   4550 -				  <property name="visible">True</property>
   4551 -				  <property name="label"></property>
   4552 -				  <property name="use_underline">False</property>
   4553 -				  <property name="use_markup">False</property>
   4554 -				  <property name="justify">GTK_JUSTIFY_LEFT</property>
   4555 -				  <property name="wrap">False</property>
   4556 -				  <property name="selectable">False</property>
   4557 -				  <property name="xalign">0.5</property>
   4558 -				  <property name="yalign">0.5</property>
   4559 -				  <property name="xpad">0</property>
   4560 -				  <property name="ypad">0</property>
   4561 -				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   4562 -				  <property name="width_chars">-1</property>
   4563 -				  <property name="single_line_mode">False</property>
   4564 -				  <property name="angle">0</property>
   4565 -				</widget>
   4566 -				<packing>
   4567 -				  <property name="padding">0</property>
   4568 -				  <property name="expand">False</property>
   4569 -				  <property name="fill">False</property>
   4570 -				</packing>
   4571 -			      </child>
   4572 -
   4573 -			      <child>
   4574 -				<widget class="GtkComboBox" id="captions_2_combobox">
   4575 -				  <property name="visible">True</property>
   4576 -				  <property name="items" translatable="yes"></property>
   4577 -				  <property name="add_tearoffs">False</property>
   4578 -				  <property name="focus_on_click">True</property>
   4579 -				</widget>
   4580 -				<packing>
   4581 -				  <property name="padding">0</property>
   4582 -				  <property name="expand">False</property>
   4583 -				  <property name="fill">True</property>
   4584 -				</packing>
   4585 -			      </child>
   4586 -			    </widget>
   4587 -			    <packing>
   4588 -			      <property name="padding">0</property>
   4589 -			      <property name="expand">True</property>
   4590 -			      <property name="fill">True</property>
   4591 -			    </packing>
   4592 -			  </child>
   4593 -			</widget>
   4594 -		      </child>
   4595 -		    </widget>
   4596 -		    <packing>
   4597 -		      <property name="padding">0</property>
   4598 -		      <property name="expand">True</property>
   4599 -		      <property name="fill">True</property>
   4600 -		    </packing>
   4601 -		  </child>
   4602 -		</widget>
   4603 -		<packing>
   4604 -		  <property name="padding">0</property>
   4605 -		  <property name="expand">False</property>
   4606 -		  <property name="fill">True</property>
   4607 -		</packing>
   4608 -	      </child>
   4609 -
   4610 -	      <child>
   4611 -		<widget class="GtkVBox" id="vbox31">
   4612 -		  <property name="visible">True</property>
   4613 -		  <property name="homogeneous">False</property>
   4614 -		  <property name="spacing">6</property>
   4615 -
   4616 -		  <child>
   4617 -		    <widget class="GtkLabel" id="label34">
   4618 -		      <property name="visible">True</property>
   4619 -		      <property name="label" translatable="yes">&lt;b&gt;Date&lt;/b&gt;</property>
   4620 -		      <property name="use_underline">False</property>
   4621 -		      <property name="use_markup">True</property>
   4622 -		      <property name="justify">GTK_JUSTIFY_LEFT</property>
   4623 -		      <property name="wrap">False</property>
   4624 -		      <property name="selectable">False</property>
   4625 -		      <property name="xalign">0</property>
   4626 -		      <property name="yalign">0.5</property>
   4627 -		      <property name="xpad">0</property>
   4628 -		      <property name="ypad">0</property>
   4629 -		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   4630 -		      <property name="width_chars">-1</property>
   4631 -		      <property name="single_line_mode">False</property>
   4632 -		      <property name="angle">0</property>
   4633 -		    </widget>
   4634 -		    <packing>
   4635 -		      <property name="padding">0</property>
   4636 -		      <property name="expand">False</property>
   4637 -		      <property name="fill">False</property>
   4638 -		    </packing>
   4639 -		  </child>
   4640 -
   4641 -		  <child>
   4642 -		    <widget class="GtkAlignment" id="alignment9">
   4643 -		      <property name="visible">True</property>
   4644 -		      <property name="xalign">0.5</property>
   4645 -		      <property name="yalign">0.5</property>
   4646 -		      <property name="xscale">1</property>
   4647 -		      <property name="yscale">1</property>
   4648 -		      <property name="top_padding">0</property>
   4649 -		      <property name="bottom_padding">0</property>
   4650 -		      <property name="left_padding">12</property>
   4651 -		      <property name="right_padding">0</property>
   4652 -
   4653 -		      <child>
   4654 -			<widget class="GtkHBox" id="hbox33">
   4655 -			  <property name="visible">True</property>
   4656 -			  <property name="homogeneous">False</property>
   4657 -			  <property name="spacing">12</property>
   4658 -
   4659 -			  <child>
   4660 -			    <widget class="GtkLabel" id="label36">
   4661 -			      <property name="visible">True</property>
   4662 -			      <property name="label" translatable="yes">_Format:</property>
   4663 -			      <property name="use_underline">True</property>
   4664 -			      <property name="use_markup">False</property>
   4665 -			      <property name="justify">GTK_JUSTIFY_LEFT</property>
   4666 -			      <property name="wrap">False</property>
   4667 -			      <property name="selectable">False</property>
   4668 -			      <property name="xalign">0.5</property>
   4669 -			      <property name="yalign">0.5</property>
   4670 -			      <property name="xpad">0</property>
   4671 -			      <property name="ypad">0</property>
   4672 -			      <property name="mnemonic_widget">date_format_combobox</property>
   4673 -			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   4674 -			      <property name="width_chars">-1</property>
   4675 -			      <property name="single_line_mode">False</property>
   4676 -			      <property name="angle">0</property>
   4677 -			    </widget>
   4678 -			    <packing>
   4679 -			      <property name="padding">0</property>
   4680 -			      <property name="expand">False</property>
   4681 -			      <property name="fill">False</property>
   4682 -			    </packing>
   4683 -			  </child>
   4684 -
   4685 -			  <child>
   4686 -			    <widget class="GtkComboBox" id="date_format_combobox">
   4687 -			      <property name="visible">True</property>
   4688 -			      <property name="items" translatable="yes"></property>
   4689 -			      <property name="add_tearoffs">False</property>
   4690 -			      <property name="focus_on_click">True</property>
   4691 -			    </widget>
   4692 -			    <packing>
   4693 -			      <property name="padding">0</property>
   4694 -			      <property name="expand">False</property>
   4695 -			      <property name="fill">False</property>
   4696 -			    </packing>
   4697 -			  </child>
   4698 -			</widget>
   4699 -		      </child>
   4700 -		    </widget>
   4701 -		    <packing>
   4702 -		      <property name="padding">0</property>
   4703 -		      <property name="expand">True</property>
   4704 -		      <property name="fill">True</property>
   4705 -		    </packing>
   4706 -		  </child>
   4707 -		</widget>
   4708 -		<packing>
   4709 -		  <property name="padding">0</property>
   4710 -		  <property name="expand">False</property>
   4711 -		  <property name="fill">True</property>
   4712 -		</packing>
   4713 -	      </child>
   4714 -	    </widget>
   4715 -	    <packing>
   4716 -	      <property name="tab_expand">False</property>
   4717 -	      <property name="tab_fill">True</property>
   4718 -	    </packing>
   4719 -	  </child>
   4720 -
   4721 -	  <child>
   4722 -	    <widget class="GtkLabel" id="label24">
   4723 -	      <property name="visible">True</property>
   4724 -	      <property name="label" translatable="yes">Display</property>
   4725 -	      <property name="use_underline">False</property>
   4726 -	      <property name="use_markup">False</property>
   4727 -	      <property name="justify">GTK_JUSTIFY_LEFT</property>
   4728 -	      <property name="wrap">False</property>
   4729 -	      <property name="selectable">False</property>
   4730 -	      <property name="xalign">0.5</property>
   4731 -	      <property name="yalign">0.5</property>
   4732 -	      <property name="xpad">0</property>
   4733 -	      <property name="ypad">0</property>
   4734 -	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   4735 -	      <property name="width_chars">-1</property>
   4736 -	      <property name="single_line_mode">False</property>
   4737 -	      <property name="angle">0</property>
   4738 -	    </widget>
   4739 -	    <packing>
   4740 -	      <property name="type">tab</property>
   4741 -	    </packing>
   4742 -	  </child>
   4743 -
   4744 -	  <child>
   4745 -	    <widget class="GtkVBox" id="vbox29">
   4746 -	      <property name="border_width">12</property>
   4747 -	      <property name="visible">True</property>
   4748 -	      <property name="homogeneous">False</property>
   4749 -	      <property name="spacing">18</property>
   4750 -
   4751 -	      <child>
   4752 -		<widget class="GtkVBox" id="vbox30">
   4753 -		  <property name="visible">True</property>
   4754 -		  <property name="homogeneous">False</property>
   4755 -		  <property name="spacing">6</property>
   4756 -
   4757 -		  <child>
   4758 -		    <widget class="GtkLabel" id="label31">
   4759 -		      <property name="visible">True</property>
   4760 -		      <property name="label" translatable="yes">&lt;b&gt;List Columns&lt;/b&gt;</property>
   4761 -		      <property name="use_underline">False</property>
   4762 -		      <property name="use_markup">True</property>
   4763 -		      <property name="justify">GTK_JUSTIFY_LEFT</property>
   4764 -		      <property name="wrap">False</property>
   4765 -		      <property name="selectable">False</property>
   4766 -		      <property name="xalign">0</property>
   4767 -		      <property name="yalign">0.5</property>
   4768 -		      <property name="xpad">0</property>
   4769 -		      <property name="ypad">0</property>
   4770 -		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   4771 -		      <property name="width_chars">-1</property>
   4772 -		      <property name="single_line_mode">False</property>
   4773 -		      <property name="angle">0</property>
   4774 -		    </widget>
   4775 -		    <packing>
   4776 -		      <property name="padding">0</property>
   4777 -		      <property name="expand">False</property>
   4778 -		      <property name="fill">False</property>
   4779 -		    </packing>
   4780 -		  </child>
   4781 -
   4782 -		  <child>
   4783 -		    <widget class="GtkAlignment" id="alignment21">
   4784 -		      <property name="visible">True</property>
   4785 -		      <property name="xalign">0.5</property>
   4786 -		      <property name="yalign">0.5</property>
   4787 -		      <property name="xscale">1</property>
   4788 -		      <property name="yscale">1</property>
   4789 -		      <property name="top_padding">0</property>
   4790 -		      <property name="bottom_padding">0</property>
   4791 -		      <property name="left_padding">12</property>
   4792 -		      <property name="right_padding">0</property>
   4793 -
   4794 -		      <child>
   4795 -			<widget class="GtkVBox" id="list_columns_vbox">
   4796 -			  <property name="visible">True</property>
   4797 -			  <property name="homogeneous">False</property>
   4798 -			  <property name="spacing">6</property>
   4799 -
   4800 -			  <child>
   4801 -			    <widget class="GtkLabel" id="label33">
   4802 -			      <property name="visible">True</property>
   4803 -			      <property name="label" translatable="yes">Choose the order of information to appear in the list view.</property>
   4804 -			      <property name="use_underline">False</property>
   4805 -			      <property name="use_markup">False</property>
   4806 -			      <property name="justify">GTK_JUSTIFY_LEFT</property>
   4807 -			      <property name="wrap">True</property>
   4808 -			      <property name="selectable">False</property>
   4809 -			      <property name="xalign">0</property>
   4810 -			      <property name="yalign">0.5</property>
   4811 -			      <property name="xpad">0</property>
   4812 -			      <property name="ypad">0</property>
   4813 -			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   4814 -			      <property name="width_chars">-1</property>
   4815 -			      <property name="single_line_mode">False</property>
   4816 -			      <property name="angle">0</property>
   4817 -			    </widget>
   4818 -			    <packing>
   4819 -			      <property name="padding">0</property>
   4820 -			      <property name="expand">False</property>
   4821 -			      <property name="fill">False</property>
   4822 -			    </packing>
   4823 -			  </child>
   4824 -
   4825 -			  <child>
   4826 -			    <placeholder/>
   4827 -			  </child>
   4828 -			</widget>
   4829 -		      </child>
   4830 -		    </widget>
   4831 -		    <packing>
   4832 -		      <property name="padding">0</property>
   4833 -		      <property name="expand">True</property>
   4834 -		      <property name="fill">True</property>
   4835 -		    </packing>
   4836 -		  </child>
   4837 -		</widget>
   4838 -		<packing>
   4839 -		  <property name="padding">0</property>
   4840 -		  <property name="expand">True</property>
   4841 -		  <property name="fill">True</property>
   4842 -		</packing>
   4843 -	      </child>
   4844 -	    </widget>
   4845 -	    <packing>
   4846 -	      <property name="tab_expand">False</property>
   4847 -	      <property name="tab_fill">True</property>
   4848 -	    </packing>
   4849 -	  </child>
   4850 -
   4851 -	  <child>
   4852 -	    <widget class="GtkLabel" id="label30">
   4853 -	      <property name="visible">True</property>
   4854 -	      <property name="label" translatable="yes">List Columns</property>
   4855 -	      <property name="use_underline">False</property>
   4856 -	      <property name="use_markup">False</property>
   4857 -	      <property name="justify">GTK_JUSTIFY_LEFT</property>
   4858 -	      <property name="wrap">False</property>
   4859 -	      <property name="selectable">False</property>
   4860 -	      <property name="xalign">0.5</property>
   4861 -	      <property name="yalign">0.5</property>
   4862 -	      <property name="xpad">0</property>
   4863 -	      <property name="ypad">0</property>
   4864 -	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   4865 -	      <property name="width_chars">-1</property>
   4866 -	      <property name="single_line_mode">False</property>
   4867 -	      <property name="angle">0</property>
   4868 -	    </widget>
   4869 -	    <packing>
   4870 -	      <property name="type">tab</property>
   4871 -	    </packing>
   4872 -	  </child>
   4873 -
   4874 -	  <child>
   4875 -	    <widget class="GtkVBox" id="vbox9">
   4876 -	      <property name="border_width">12</property>
   4877 -	      <property name="visible">True</property>
   4878 -	      <property name="homogeneous">False</property>
   4879 -	      <property name="spacing">18</property>
   4880 -
   4881 -	      <child>
   4882 -		<widget class="GtkVBox" id="vbox10">
   4883 -		  <property name="visible">True</property>
   4884 -		  <property name="homogeneous">False</property>
   4885 -		  <property name="spacing">6</property>
   4886 -
   4887 -		  <child>
   4888 -		    <widget class="GtkLabel" id="label16">
   4889 -		      <property name="visible">True</property>
   4890 -		      <property name="label" translatable="yes">&lt;b&gt;Text Files&lt;/b&gt;</property>
   4891 -		      <property name="use_underline">False</property>
   4892 -		      <property name="use_markup">True</property>
   4893 -		      <property name="justify">GTK_JUSTIFY_LEFT</property>
   4894 -		      <property name="wrap">False</property>
   4895 -		      <property name="selectable">False</property>
   4896 -		      <property name="xalign">0</property>
   4897 -		      <property name="yalign">0.5</property>
   4898 -		      <property name="xpad">0</property>
   4899 -		      <property name="ypad">0</property>
   4900 -		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   4901 -		      <property name="width_chars">-1</property>
   4902 -		      <property name="single_line_mode">False</property>
   4903 -		      <property name="angle">0</property>
   4904 -		    </widget>
   4905 -		    <packing>
   4906 -		      <property name="padding">0</property>
   4907 -		      <property name="expand">False</property>
   4908 -		      <property name="fill">False</property>
   4909 -		    </packing>
   4910 -		  </child>
   4911 -
   4912 -		  <child>
   4913 -		    <widget class="GtkAlignment" id="alignment10">
   4914 -		      <property name="visible">True</property>
   4915 -		      <property name="xalign">0.5</property>
   4916 -		      <property name="yalign">0.5</property>
   4917 -		      <property name="xscale">1</property>
   4918 -		      <property name="yscale">1</property>
   4919 -		      <property name="top_padding">0</property>
   4920 -		      <property name="bottom_padding">0</property>
   4921 -		      <property name="left_padding">12</property>
   4922 -		      <property name="right_padding">0</property>
   4923 -
   4924 -		      <child>
   4925 -			<widget class="GtkVBox" id="vbox20">
   4926 -			  <property name="visible">True</property>
   4927 -			  <property name="homogeneous">False</property>
   4928 -			  <property name="spacing">6</property>
   4929 -
   4930 -			  <child>
   4931 -			    <widget class="GtkHBox" id="hbox24">
   4932 -			      <property name="visible">True</property>
   4933 -			      <property name="homogeneous">False</property>
   4934 -			      <property name="spacing">12</property>
   4935 -
   4936 -			      <child>
   4937 -				<widget class="GtkLabel" id="preview_label_0">
   4938 -				  <property name="visible">True</property>
   4939 -				  <property name="label" translatable="yes">Show te_xt in icons:</property>
   4940 -				  <property name="use_underline">True</property>
   4941 -				  <property name="use_markup">False</property>
   4942 -				  <property name="justify">GTK_JUSTIFY_LEFT</property>
   4943 -				  <property name="wrap">False</property>
   4944 -				  <property name="selectable">False</property>
   4945 -				  <property name="xalign">0</property>
   4946 -				  <property name="yalign">0.5</property>
   4947 -				  <property name="xpad">0</property>
   4948 -				  <property name="ypad">0</property>
   4949 -				  <property name="mnemonic_widget">preview_text_combobox</property>
   4950 -				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   4951 -				  <property name="width_chars">-1</property>
   4952 -				  <property name="single_line_mode">False</property>
   4953 -				  <property name="angle">0</property>
   4954 -				</widget>
   4955 -				<packing>
   4956 -				  <property name="padding">0</property>
   4957 -				  <property name="expand">False</property>
   4958 -				  <property name="fill">False</property>
   4959 -				</packing>
   4960 -			      </child>
   4961 -
   4962 -			      <child>
   4963 -				<widget class="GtkComboBox" id="preview_text_combobox">
   4964 -				  <property name="visible">True</property>
   4965 -				  <property name="items" translatable="yes">Always
   4966 +                                  </widget>
   4967 +                                  <packing>
   4968 +                                    <property name="position">1</property>
   4969 +                                  </packing>
   4970 +                                </child>
   4971 +                              </widget>
   4972 +                            </child>
   4973 +                          </widget>
   4974 +                        </child>
   4975 +                      </widget>
   4976 +                      <packing>
   4977 +                        <property name="position">1</property>
   4978 +                      </packing>
   4979 +                    </child>
   4980 +                  </widget>
   4981 +                  <packing>
   4982 +                    <property name="expand">False</property>
   4983 +                    <property name="position">3</property>
   4984 +                  </packing>
   4985 +                </child>
   4986 +                <child>
   4987 +                  <widget class="GtkVBox" id="vbox24">
   4988 +                    <property name="visible">True</property>
   4989 +                    <property name="spacing">6</property>
   4990 +                    <child>
   4991 +                      <widget class="GtkLabel" id="label25">
   4992 +                        <property name="visible">True</property>
   4993 +                        <property name="xalign">0</property>
   4994 +                        <property name="label" translatable="yes">&lt;b&gt;Tree View Defaults&lt;/b&gt;</property>
   4995 +                        <property name="use_markup">True</property>
   4996 +                      </widget>
   4997 +                      <packing>
   4998 +                        <property name="expand">False</property>
   4999 +                        <property name="fill">False</property>
   5000 +                      </packing>
   5001 +                    </child>
   5002 +                    <child>
   5003 +                      <widget class="GtkAlignment" id="alignment4">
   5004 +                        <property name="visible">True</property>
   5005 +                        <property name="left_padding">12</property>
   5006 +                        <child>
   5007 +                          <widget class="GtkVBox" id="vbox25">
   5008 +                            <property name="visible">True</property>
   5009 +                            <property name="spacing">6</property>
   5010 +                            <child>
   5011 +                              <widget class="GtkCheckButton" id="treeview_folders_checkbutton">
   5012 +                                <property name="visible">True</property>
   5013 +                                <property name="can_focus">True</property>
   5014 +                                <property name="label" translatable="yes">Show _only folders</property>
   5015 +                                <property name="use_underline">True</property>
   5016 +                                <property name="response_id">0</property>
   5017 +                                <property name="draw_indicator">True</property>
   5018 +                              </widget>
   5019 +                              <packing>
   5020 +                                <property name="expand">False</property>
   5021 +                                <property name="fill">False</property>
   5022 +                              </packing>
   5023 +                            </child>
   5024 +                          </widget>
   5025 +                        </child>
   5026 +                      </widget>
   5027 +                      <packing>
   5028 +                        <property name="position">1</property>
   5029 +                      </packing>
   5030 +                    </child>
   5031 +                  </widget>
   5032 +                  <packing>
   5033 +                    <property name="expand">False</property>
   5034 +                    <property name="position">4</property>
   5035 +                  </packing>
   5036 +                </child>
   5037 +              </widget>
   5038 +            </child>
   5039 +            <child>
   5040 +              <widget class="GtkLabel" id="label1">
   5041 +                <property name="visible">True</property>
   5042 +                <property name="label" translatable="yes">Views</property>
   5043 +              </widget>
   5044 +              <packing>
   5045 +                <property name="type">tab</property>
   5046 +                <property name="tab_fill">False</property>
   5047 +              </packing>
   5048 +            </child>
   5049 +            <child>
   5050 +              <widget class="GtkVBox" id="vbox5">
   5051 +                <property name="visible">True</property>
   5052 +                <property name="border_width">12</property>
   5053 +                <property name="spacing">18</property>
   5054 +                <child>
   5055 +                  <widget class="GtkVBox" id="vbox6">
   5056 +                    <property name="visible">True</property>
   5057 +                    <property name="spacing">6</property>
   5058 +                    <child>
   5059 +                      <widget class="GtkLabel" id="label10">
   5060 +                        <property name="visible">True</property>
   5061 +                        <property name="xalign">0</property>
   5062 +                        <property name="label" translatable="yes">&lt;b&gt;Behavior&lt;/b&gt;</property>
   5063 +                        <property name="use_markup">True</property>
   5064 +                      </widget>
   5065 +                      <packing>
   5066 +                        <property name="expand">False</property>
   5067 +                        <property name="fill">False</property>
   5068 +                      </packing>
   5069 +                    </child>
   5070 +                    <child>
   5071 +                      <widget class="GtkAlignment" id="alignment5">
   5072 +                        <property name="visible">True</property>
   5073 +                        <property name="left_padding">12</property>
   5074 +                        <child>
   5075 +                          <widget class="GtkVBox" id="vbox17">
   5076 +                            <property name="visible">True</property>
   5077 +                            <child>
   5078 +                              <widget class="GtkRadioButton" id="single_click_radiobutton">
   5079 +                                <property name="visible">True</property>
   5080 +                                <property name="can_focus">True</property>
   5081 +                                <property name="label" translatable="yes">_Single click to open items</property>
   5082 +                                <property name="use_underline">True</property>
   5083 +                                <property name="response_id">0</property>
   5084 +                                <property name="draw_indicator">True</property>
   5085 +                              </widget>
   5086 +                              <packing>
   5087 +                                <property name="expand">False</property>
   5088 +                                <property name="fill">False</property>
   5089 +                              </packing>
   5090 +                            </child>
   5091 +                            <child>
   5092 +                              <widget class="GtkRadioButton" id="double_click_radiobutton">
   5093 +                                <property name="visible">True</property>
   5094 +                                <property name="can_focus">True</property>
   5095 +                                <property name="label" translatable="yes">_Double click to open items</property>
   5096 +                                <property name="use_underline">True</property>
   5097 +                                <property name="response_id">0</property>
   5098 +                                <property name="draw_indicator">True</property>
   5099 +                                <property name="group">single_click_radiobutton</property>
   5100 +                              </widget>
   5101 +                              <packing>
   5102 +                                <property name="expand">False</property>
   5103 +                                <property name="fill">False</property>
   5104 +                                <property name="padding">6</property>
   5105 +                                <property name="position">1</property>
   5106 +                              </packing>
   5107 +                            </child>
   5108 +                            <child>
   5109 +                              <widget class="GtkLabel" id="label2">
   5110 +                                <property name="height_request">6</property>
   5111 +                                <property name="visible">True</property>
   5112 +                              </widget>
   5113 +                              <packing>
   5114 +                                <property name="position">2</property>
   5115 +                              </packing>
   5116 +                            </child>
   5117 +                            <child>
   5118 +                              <widget class="GtkCheckButton" id="always_use_browser_checkbutton">
   5119 +                                <property name="visible">True</property>
   5120 +                                <property name="can_focus">True</property>
   5121 +                                <property name="label" translatable="yes">Always open in _browser windows</property>
   5122 +                                <property name="use_underline">True</property>
   5123 +                                <property name="response_id">0</property>
   5124 +                                <property name="draw_indicator">True</property>
   5125 +                              </widget>
   5126 +                              <packing>
   5127 +                                <property name="expand">False</property>
   5128 +                                <property name="fill">False</property>
   5129 +                                <property name="position">3</property>
   5130 +                              </packing>
   5131 +                            </child>
   5132 +                          </widget>
   5133 +                        </child>
   5134 +                      </widget>
   5135 +                      <packing>
   5136 +                        <property name="position">1</property>
   5137 +                      </packing>
   5138 +                    </child>
   5139 +                  </widget>
   5140 +                  <packing>
   5141 +                    <property name="expand">False</property>
   5142 +                  </packing>
   5143 +                </child>
   5144 +                <child>
   5145 +                  <widget class="GtkVBox" id="vbox7">
   5146 +                    <property name="visible">True</property>
   5147 +                    <property name="spacing">6</property>
   5148 +                    <child>
   5149 +                      <widget class="GtkLabel" id="label12">
   5150 +                        <property name="visible">True</property>
   5151 +                        <property name="xalign">0</property>
   5152 +                        <property name="label" translatable="yes">&lt;b&gt;Executable Text Files&lt;/b&gt;</property>
   5153 +                        <property name="use_markup">True</property>
   5154 +                      </widget>
   5155 +                      <packing>
   5156 +                        <property name="expand">False</property>
   5157 +                        <property name="fill">False</property>
   5158 +                      </packing>
   5159 +                    </child>
   5160 +                    <child>
   5161 +                      <widget class="GtkAlignment" id="alignment6">
   5162 +                        <property name="visible">True</property>
   5163 +                        <property name="left_padding">12</property>
   5164 +                        <child>
   5165 +                          <widget class="GtkVBox" id="vbox18">
   5166 +                            <property name="visible">True</property>
   5167 +                            <property name="spacing">6</property>
   5168 +                            <child>
   5169 +                              <widget class="GtkRadioButton" id="scripts_execute_radiobutton">
   5170 +                                <property name="visible">True</property>
   5171 +                                <property name="can_focus">True</property>
   5172 +                                <property name="label" translatable="yes">_Run executable text files when they are opened</property>
   5173 +                                <property name="use_underline">True</property>
   5174 +                                <property name="response_id">0</property>
   5175 +                                <property name="draw_indicator">True</property>
   5176 +                              </widget>
   5177 +                              <packing>
   5178 +                                <property name="expand">False</property>
   5179 +                                <property name="fill">False</property>
   5180 +                              </packing>
   5181 +                            </child>
   5182 +                            <child>
   5183 +                              <widget class="GtkRadioButton" id="scripts_view_radiobutton">
   5184 +                                <property name="visible">True</property>
   5185 +                                <property name="can_focus">True</property>
   5186 +                                <property name="label" translatable="yes">_View executable text files when they are opened</property>
   5187 +                                <property name="use_underline">True</property>
   5188 +                                <property name="response_id">0</property>
   5189 +                                <property name="draw_indicator">True</property>
   5190 +                                <property name="group">scripts_execute_radiobutton</property>
   5191 +                              </widget>
   5192 +                              <packing>
   5193 +                                <property name="expand">False</property>
   5194 +                                <property name="fill">False</property>
   5195 +                                <property name="position">1</property>
   5196 +                              </packing>
   5197 +                            </child>
   5198 +                            <child>
   5199 +                              <widget class="GtkRadioButton" id="scripts_confirm_radiobutton">
   5200 +                                <property name="visible">True</property>
   5201 +                                <property name="can_focus">True</property>
   5202 +                                <property name="label" translatable="yes">_Ask each time</property>
   5203 +                                <property name="use_underline">True</property>
   5204 +                                <property name="response_id">0</property>
   5205 +                                <property name="draw_indicator">True</property>
   5206 +                                <property name="group">scripts_execute_radiobutton</property>
   5207 +                              </widget>
   5208 +                              <packing>
   5209 +                                <property name="expand">False</property>
   5210 +                                <property name="fill">False</property>
   5211 +                                <property name="position">2</property>
   5212 +                              </packing>
   5213 +                            </child>
   5214 +                          </widget>
   5215 +                        </child>
   5216 +                      </widget>
   5217 +                      <packing>
   5218 +                        <property name="position">1</property>
   5219 +                      </packing>
   5220 +                    </child>
   5221 +                  </widget>
   5222 +                  <packing>
   5223 +                    <property name="expand">False</property>
   5224 +                    <property name="position">1</property>
   5225 +                  </packing>
   5226 +                </child>
   5227 +                <child>
   5228 +                  <widget class="GtkVBox" id="vbox8">
   5229 +                    <property name="visible">True</property>
   5230 +                    <property name="spacing">6</property>
   5231 +                    <child>
   5232 +                      <widget class="GtkLabel" id="label14">
   5233 +                        <property name="visible">True</property>
   5234 +                        <property name="xalign">0</property>
   5235 +                        <property name="label" translatable="yes">&lt;b&gt;Trash&lt;/b&gt;</property>
   5236 +                        <property name="use_markup">True</property>
   5237 +                      </widget>
   5238 +                      <packing>
   5239 +                        <property name="expand">False</property>
   5240 +                        <property name="fill">False</property>
   5241 +                      </packing>
   5242 +                    </child>
   5243 +                    <child>
   5244 +                      <widget class="GtkAlignment" id="alignment7">
   5245 +                        <property name="visible">True</property>
   5246 +                        <property name="left_padding">12</property>
   5247 +                        <child>
   5248 +                          <widget class="GtkVBox" id="vbox19">
   5249 +                            <property name="visible">True</property>
   5250 +                            <property name="spacing">6</property>
   5251 +                            <child>
   5252 +                              <widget class="GtkCheckButton" id="trash_confirm_checkbutton">
   5253 +                                <property name="visible">True</property>
   5254 +                                <property name="can_focus">True</property>
   5255 +                                <property name="label" translatable="yes">Ask before _emptying the Trash or deleting files</property>
   5256 +                                <property name="use_underline">True</property>
   5257 +                                <property name="response_id">0</property>
   5258 +                                <property name="draw_indicator">True</property>
   5259 +                              </widget>
   5260 +                              <packing>
   5261 +                                <property name="expand">False</property>
   5262 +                                <property name="fill">False</property>
   5263 +                              </packing>
   5264 +                            </child>
   5265 +                            <child>
   5266 +                              <widget class="GtkCheckButton" id="trash_delete_checkbutton">
   5267 +                                <property name="visible">True</property>
   5268 +                                <property name="can_focus">True</property>
   5269 +                                <property name="label" translatable="yes">I_nclude a Delete command that bypasses Trash</property>
   5270 +                                <property name="use_underline">True</property>
   5271 +                                <property name="response_id">0</property>
   5272 +                                <property name="draw_indicator">True</property>
   5273 +                              </widget>
   5274 +                              <packing>
   5275 +                                <property name="expand">False</property>
   5276 +                                <property name="fill">False</property>
   5277 +                                <property name="position">1</property>
   5278 +                              </packing>
   5279 +                            </child>
   5280 +                          </widget>
   5281 +                        </child>
   5282 +                      </widget>
   5283 +                      <packing>
   5284 +                        <property name="position">1</property>
   5285 +                      </packing>
   5286 +                    </child>
   5287 +                  </widget>
   5288 +                  <packing>
   5289 +                    <property name="expand">False</property>
   5290 +                    <property name="position">2</property>
   5291 +                  </packing>
   5292 +                </child>
   5293 +              </widget>
   5294 +              <packing>
   5295 +                <property name="position">1</property>
   5296 +              </packing>
   5297 +            </child>
   5298 +            <child>
   5299 +              <widget class="GtkLabel" id="label3">
   5300 +                <property name="visible">True</property>
   5301 +                <property name="label" translatable="yes">Behavior</property>
   5302 +              </widget>
   5303 +              <packing>
   5304 +                <property name="type">tab</property>
   5305 +                <property name="position">1</property>
   5306 +                <property name="tab_fill">False</property>
   5307 +              </packing>
   5308 +            </child>
   5309 +            <child>
   5310 +              <widget class="GtkVBox" id="vbox26">
   5311 +                <property name="visible">True</property>
   5312 +                <property name="border_width">12</property>
   5313 +                <property name="spacing">18</property>
   5314 +                <child>
   5315 +                  <widget class="GtkVBox" id="vbox27">
   5316 +                    <property name="visible">True</property>
   5317 +                    <property name="spacing">6</property>
   5318 +                    <child>
   5319 +                      <widget class="GtkLabel" id="label28">
   5320 +                        <property name="visible">True</property>
   5321 +                        <property name="xalign">0</property>
   5322 +                        <property name="label" translatable="yes">&lt;b&gt;Icon Captions&lt;/b&gt;</property>
   5323 +                        <property name="use_markup">True</property>
   5324 +                      </widget>
   5325 +                      <packing>
   5326 +                        <property name="expand">False</property>
   5327 +                        <property name="fill">False</property>
   5328 +                      </packing>
   5329 +                    </child>
   5330 +                    <child>
   5331 +                      <widget class="GtkAlignment" id="alignment8">
   5332 +                        <property name="visible">True</property>
   5333 +                        <property name="left_padding">12</property>
   5334 +                        <child>
   5335 +                          <widget class="GtkVBox" id="vbox28">
   5336 +                            <property name="visible">True</property>
   5337 +                            <property name="spacing">6</property>
   5338 +                            <child>
   5339 +                              <widget class="GtkLabel" id="label29">
   5340 +                                <property name="visible">True</property>
   5341 +                                <property name="xalign">0</property>
   5342 +                                <property name="label" translatable="yes">Choose the order of information to appear beneath icon names. More information will appear when zooming in closer.</property>
   5343 +                                <property name="wrap">True</property>
   5344 +                              </widget>
   5345 +                              <packing>
   5346 +                                <property name="expand">False</property>
   5347 +                                <property name="fill">False</property>
   5348 +                              </packing>
   5349 +                            </child>
   5350 +                            <child>
   5351 +                              <widget class="GtkHBox" id="hbox28">
   5352 +                                <property name="visible">True</property>
   5353 +                                <child>
   5354 +                                  <widget class="GtkLabel" id="captions_label_0">
   5355 +                                    <property name="visible">True</property>
   5356 +                                  </widget>
   5357 +                                  <packing>
   5358 +                                    <property name="expand">False</property>
   5359 +                                    <property name="fill">False</property>
   5360 +                                  </packing>
   5361 +                                </child>
   5362 +                                <child>
   5363 +                                  <widget class="GtkComboBox" id="captions_0_combobox">
   5364 +                                    <property name="visible">True</property>
   5365 +                                    <property name="items" translatable="yes"></property>
   5366 +                                  </widget>
   5367 +                                  <packing>
   5368 +                                    <property name="expand">False</property>
   5369 +                                    <property name="position">1</property>
   5370 +                                  </packing>
   5371 +                                </child>
   5372 +                              </widget>
   5373 +                              <packing>
   5374 +                                <property name="position">1</property>
   5375 +                              </packing>
   5376 +                            </child>
   5377 +                            <child>
   5378 +                              <widget class="GtkHBox" id="hbox29">
   5379 +                                <property name="visible">True</property>
   5380 +                                <child>
   5381 +                                  <widget class="GtkLabel" id="captions_label_1">
   5382 +                                    <property name="visible">True</property>
   5383 +                                    <property name="use_underline">True</property>
   5384 +                                  </widget>
   5385 +                                  <packing>
   5386 +                                    <property name="expand">False</property>
   5387 +                                    <property name="fill">False</property>
   5388 +                                  </packing>
   5389 +                                </child>
   5390 +                                <child>
   5391 +                                  <widget class="GtkComboBox" id="captions_1_combobox">
   5392 +                                    <property name="visible">True</property>
   5393 +                                    <property name="items" translatable="yes"></property>
   5394 +                                  </widget>
   5395 +                                  <packing>
   5396 +                                    <property name="expand">False</property>
   5397 +                                    <property name="position">1</property>
   5398 +                                  </packing>
   5399 +                                </child>
   5400 +                              </widget>
   5401 +                              <packing>
   5402 +                                <property name="expand">False</property>
   5403 +                                <property name="fill">False</property>
   5404 +                                <property name="position">2</property>
   5405 +                              </packing>
   5406 +                            </child>
   5407 +                            <child>
   5408 +                              <widget class="GtkHBox" id="hbox30">
   5409 +                                <property name="visible">True</property>
   5410 +                                <child>
   5411 +                                  <widget class="GtkLabel" id="captions_label_2">
   5412 +                                    <property name="visible">True</property>
   5413 +                                  </widget>
   5414 +                                  <packing>
   5415 +                                    <property name="expand">False</property>
   5416 +                                    <property name="fill">False</property>
   5417 +                                  </packing>
   5418 +                                </child>
   5419 +                                <child>
   5420 +                                  <widget class="GtkComboBox" id="captions_2_combobox">
   5421 +                                    <property name="visible">True</property>
   5422 +                                    <property name="items" translatable="yes"></property>
   5423 +                                  </widget>
   5424 +                                  <packing>
   5425 +                                    <property name="expand">False</property>
   5426 +                                    <property name="position">1</property>
   5427 +                                  </packing>
   5428 +                                </child>
   5429 +                              </widget>
   5430 +                              <packing>
   5431 +                                <property name="position">3</property>
   5432 +                              </packing>
   5433 +                            </child>
   5434 +                          </widget>
   5435 +                        </child>
   5436 +                      </widget>
   5437 +                      <packing>
   5438 +                        <property name="position">1</property>
   5439 +                      </packing>
   5440 +                    </child>
   5441 +                  </widget>
   5442 +                  <packing>
   5443 +                    <property name="expand">False</property>
   5444 +                  </packing>
   5445 +                </child>
   5446 +                <child>
   5447 +                  <widget class="GtkVBox" id="vbox31">
   5448 +                    <property name="visible">True</property>
   5449 +                    <property name="spacing">6</property>
   5450 +                    <child>
   5451 +                      <widget class="GtkLabel" id="label34">
   5452 +                        <property name="visible">True</property>
   5453 +                        <property name="xalign">0</property>
   5454 +                        <property name="label" translatable="yes">&lt;b&gt;Date&lt;/b&gt;</property>
   5455 +                        <property name="use_markup">True</property>
   5456 +                      </widget>
   5457 +                      <packing>
   5458 +                        <property name="expand">False</property>
   5459 +                        <property name="fill">False</property>
   5460 +                      </packing>
   5461 +                    </child>
   5462 +                    <child>
   5463 +                      <widget class="GtkAlignment" id="alignment9">
   5464 +                        <property name="visible">True</property>
   5465 +                        <property name="left_padding">12</property>
   5466 +                        <child>
   5467 +                          <widget class="GtkHBox" id="hbox33">
   5468 +                            <property name="visible">True</property>
   5469 +                            <property name="spacing">12</property>
   5470 +                            <child>
   5471 +                              <widget class="GtkLabel" id="label36">
   5472 +                                <property name="visible">True</property>
   5473 +                                <property name="label" translatable="yes">_Format:</property>
   5474 +                                <property name="use_underline">True</property>
   5475 +                                <property name="mnemonic_widget">date_format_combobox</property>
   5476 +                              </widget>
   5477 +                              <packing>
   5478 +                                <property name="expand">False</property>
   5479 +                                <property name="fill">False</property>
   5480 +                              </packing>
   5481 +                            </child>
   5482 +                            <child>
   5483 +                              <widget class="GtkComboBox" id="date_format_combobox">
   5484 +                                <property name="visible">True</property>
   5485 +                                <property name="items" translatable="yes"></property>
   5486 +                              </widget>
   5487 +                              <packing>
   5488 +                                <property name="expand">False</property>
   5489 +                                <property name="fill">False</property>
   5490 +                                <property name="position">1</property>
   5491 +                              </packing>
   5492 +                            </child>
   5493 +                          </widget>
   5494 +                        </child>
   5495 +                      </widget>
   5496 +                      <packing>
   5497 +                        <property name="position">1</property>
   5498 +                      </packing>
   5499 +                    </child>
   5500 +                  </widget>
   5501 +                  <packing>
   5502 +                    <property name="expand">False</property>
   5503 +                    <property name="position">1</property>
   5504 +                  </packing>
   5505 +                </child>
   5506 +              </widget>
   5507 +              <packing>
   5508 +                <property name="position">2</property>
   5509 +              </packing>
   5510 +            </child>
   5511 +            <child>
   5512 +              <widget class="GtkLabel" id="label24">
   5513 +                <property name="visible">True</property>
   5514 +                <property name="label" translatable="yes">Display</property>
   5515 +              </widget>
   5516 +              <packing>
   5517 +                <property name="type">tab</property>
   5518 +                <property name="position">2</property>
   5519 +                <property name="tab_fill">False</property>
   5520 +              </packing>
   5521 +            </child>
   5522 +            <child>
   5523 +              <widget class="GtkVBox" id="vbox29">
   5524 +                <property name="visible">True</property>
   5525 +                <property name="border_width">12</property>
   5526 +                <property name="spacing">18</property>
   5527 +                <child>
   5528 +                  <widget class="GtkVBox" id="vbox30">
   5529 +                    <property name="visible">True</property>
   5530 +                    <property name="spacing">6</property>
   5531 +                    <child>
   5532 +                      <widget class="GtkLabel" id="label31">
   5533 +                        <property name="visible">True</property>
   5534 +                        <property name="xalign">0</property>
   5535 +                        <property name="label" translatable="yes">&lt;b&gt;List Columns&lt;/b&gt;</property>
   5536 +                        <property name="use_markup">True</property>
   5537 +                      </widget>
   5538 +                      <packing>
   5539 +                        <property name="expand">False</property>
   5540 +                        <property name="fill">False</property>
   5541 +                      </packing>
   5542 +                    </child>
   5543 +                    <child>
   5544 +                      <widget class="GtkAlignment" id="alignment21">
   5545 +                        <property name="visible">True</property>
   5546 +                        <property name="left_padding">12</property>
   5547 +                        <child>
   5548 +                          <widget class="GtkVBox" id="list_columns_vbox">
   5549 +                            <property name="visible">True</property>
   5550 +                            <property name="spacing">6</property>
   5551 +                            <child>
   5552 +                              <widget class="GtkLabel" id="label33">
   5553 +                                <property name="visible">True</property>
   5554 +                                <property name="xalign">0</property>
   5555 +                                <property name="label" translatable="yes">Choose the order of information to appear in the list view.</property>
   5556 +                                <property name="wrap">True</property>
   5557 +                              </widget>
   5558 +                              <packing>
   5559 +                                <property name="expand">False</property>
   5560 +                                <property name="fill">False</property>
   5561 +                              </packing>
   5562 +                            </child>
   5563 +                            <child>
   5564 +                              <placeholder/>
   5565 +                            </child>
   5566 +                          </widget>
   5567 +                        </child>
   5568 +                      </widget>
   5569 +                      <packing>
   5570 +                        <property name="position">1</property>
   5571 +                      </packing>
   5572 +                    </child>
   5573 +                  </widget>
   5574 +                </child>
   5575 +              </widget>
   5576 +              <packing>
   5577 +                <property name="position">3</property>
   5578 +              </packing>
   5579 +            </child>
   5580 +            <child>
   5581 +              <widget class="GtkLabel" id="label30">
   5582 +                <property name="visible">True</property>
   5583 +                <property name="label" translatable="yes">List Columns</property>
   5584 +              </widget>
   5585 +              <packing>
   5586 +                <property name="type">tab</property>
   5587 +                <property name="position">3</property>
   5588 +                <property name="tab_fill">False</property>
   5589 +              </packing>
   5590 +            </child>
   5591 +            <child>
   5592 +              <widget class="GtkVBox" id="vbox9">
   5593 +                <property name="visible">True</property>
   5594 +                <property name="border_width">12</property>
   5595 +                <property name="spacing">18</property>
   5596 +                <child>
   5597 +                  <widget class="GtkVBox" id="vbox10">
   5598 +                    <property name="visible">True</property>
   5599 +                    <property name="spacing">6</property>
   5600 +                    <child>
   5601 +                      <widget class="GtkLabel" id="label16">
   5602 +                        <property name="visible">True</property>
   5603 +                        <property name="xalign">0</property>
   5604 +                        <property name="label" translatable="yes">&lt;b&gt;Text Files&lt;/b&gt;</property>
   5605 +                        <property name="use_markup">True</property>
   5606 +                      </widget>
   5607 +                      <packing>
   5608 +                        <property name="expand">False</property>
   5609 +                        <property name="fill">False</property>
   5610 +                      </packing>
   5611 +                    </child>
   5612 +                    <child>
   5613 +                      <widget class="GtkAlignment" id="alignment10">
   5614 +                        <property name="visible">True</property>
   5615 +                        <property name="left_padding">12</property>
   5616 +                        <child>
   5617 +                          <widget class="GtkVBox" id="vbox20">
   5618 +                            <property name="visible">True</property>
   5619 +                            <property name="spacing">6</property>
   5620 +                            <child>
   5621 +                              <widget class="GtkHBox" id="hbox24">
   5622 +                                <property name="visible">True</property>
   5623 +                                <property name="spacing">12</property>
   5624 +                                <child>
   5625 +                                  <widget class="GtkLabel" id="preview_label_0">
   5626 +                                    <property name="visible">True</property>
   5627 +                                    <property name="xalign">0</property>
   5628 +                                    <property name="label" translatable="yes">Show te_xt in icons:</property>
   5629 +                                    <property name="use_underline">True</property>
   5630 +                                    <property name="mnemonic_widget">preview_text_combobox</property>
   5631 +                                  </widget>
   5632 +                                  <packing>
   5633 +                                    <property name="expand">False</property>
   5634 +                                    <property name="fill">False</property>
   5635 +                                  </packing>
   5636 +                                </child>
   5637 +                                <child>
   5638 +                                  <widget class="GtkComboBox" id="preview_text_combobox">
   5639 +                                    <property name="visible">True</property>
   5640 +                                    <property name="items" translatable="yes">Always
   5641  Local Files Only
   5642  Never</property>
   5643 -				  <property name="add_tearoffs">False</property>
   5644 -				  <property name="focus_on_click">True</property>
   5645 -				</widget>
   5646 -				<packing>
   5647 -				  <property name="padding">0</property>
   5648 -				  <property name="expand">True</property>
   5649 -				  <property name="fill">True</property>
   5650 -				</packing>
   5651 -			      </child>
   5652 -			    </widget>
   5653 -			    <packing>
   5654 -			      <property name="padding">0</property>
   5655 -			      <property name="expand">True</property>
   5656 -			      <property name="fill">True</property>
   5657 -			    </packing>
   5658 -			  </child>
   5659 -			</widget>
   5660 -		      </child>
   5661 -		    </widget>
   5662 -		    <packing>
   5663 -		      <property name="padding">0</property>
   5664 -		      <property name="expand">True</property>
   5665 -		      <property name="fill">True</property>
   5666 -		    </packing>
   5667 -		  </child>
   5668 -		</widget>
   5669 -		<packing>
   5670 -		  <property name="padding">0</property>
   5671 -		  <property name="expand">False</property>
   5672 -		  <property name="fill">True</property>
   5673 -		</packing>
   5674 -	      </child>
   5675 -
   5676 -	      <child>
   5677 -		<widget class="GtkVBox" id="vbox11">
   5678 -		  <property name="visible">True</property>
   5679 -		  <property name="homogeneous">False</property>
   5680 -		  <property name="spacing">6</property>
   5681 -
   5682 -		  <child>
   5683 -		    <widget class="GtkLabel" id="label18">
   5684 -		      <property name="visible">True</property>
   5685 -		      <property name="label" translatable="yes">&lt;b&gt;Other Previewable Files&lt;/b&gt;</property>
   5686 -		      <property name="use_underline">False</property>
   5687 -		      <property name="use_markup">True</property>
   5688 -		      <property name="justify">GTK_JUSTIFY_LEFT</property>
   5689 -		      <property name="wrap">False</property>
   5690 -		      <property name="selectable">False</property>
   5691 -		      <property name="xalign">0</property>
   5692 -		      <property name="yalign">0.5</property>
   5693 -		      <property name="xpad">0</property>
   5694 -		      <property name="ypad">0</property>
   5695 -		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   5696 -		      <property name="width_chars">-1</property>
   5697 -		      <property name="single_line_mode">False</property>
   5698 -		      <property name="angle">0</property>
   5699 -		    </widget>
   5700 -		    <packing>
   5701 -		      <property name="padding">0</property>
   5702 -		      <property name="expand">False</property>
   5703 -		      <property name="fill">False</property>
   5704 -		    </packing>
   5705 -		  </child>
   5706 -
   5707 -		  <child>
   5708 -		    <widget class="GtkAlignment" id="alignment11">
   5709 -		      <property name="visible">True</property>
   5710 -		      <property name="xalign">0.5</property>
   5711 -		      <property name="yalign">0.5</property>
   5712 -		      <property name="xscale">1</property>
   5713 -		      <property name="yscale">1</property>
   5714 -		      <property name="top_padding">0</property>
   5715 -		      <property name="bottom_padding">0</property>
   5716 -		      <property name="left_padding">12</property>
   5717 -		      <property name="right_padding">0</property>
   5718 -
   5719 -		      <child>
   5720 -			<widget class="GtkVBox" id="vbox21">
   5721 -			  <property name="visible">True</property>
   5722 -			  <property name="homogeneous">False</property>
   5723 -			  <property name="spacing">6</property>
   5724 -
   5725 -			  <child>
   5726 -			    <widget class="GtkHBox" id="hbox20">
   5727 -			      <property name="visible">True</property>
   5728 -			      <property name="homogeneous">False</property>
   5729 -			      <property name="spacing">12</property>
   5730 -
   5731 -			      <child>
   5732 -				<widget class="GtkLabel" id="preview_label_1">
   5733 -				  <property name="visible">True</property>
   5734 -				  <property name="label" translatable="yes">Show _thumbnails:</property>
   5735 -				  <property name="use_underline">True</property>
   5736 -				  <property name="use_markup">False</property>
   5737 -				  <property name="justify">GTK_JUSTIFY_LEFT</property>
   5738 -				  <property name="wrap">False</property>
   5739 -				  <property name="selectable">False</property>
   5740 -				  <property name="xalign">0</property>
   5741 -				  <property name="yalign">0.5</property>
   5742 -				  <property name="xpad">0</property>
   5743 -				  <property name="ypad">0</property>
   5744 -				  <property name="mnemonic_widget">preview_image_combobox</property>
   5745 -				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   5746 -				  <property name="width_chars">-1</property>
   5747 -				  <property name="single_line_mode">False</property>
   5748 -				  <property name="angle">0</property>
   5749 -				</widget>
   5750 -				<packing>
   5751 -				  <property name="padding">0</property>
   5752 -				  <property name="expand">False</property>
   5753 -				  <property name="fill">False</property>
   5754 -				</packing>
   5755 -			      </child>
   5756 -
   5757 -			      <child>
   5758 -				<widget class="GtkComboBox" id="preview_image_combobox">
   5759 -				  <property name="visible">True</property>
   5760 -				  <property name="items" translatable="yes">Always
   5761 +                                  </widget>
   5762 +                                  <packing>
   5763 +                                    <property name="position">1</property>
   5764 +                                  </packing>
   5765 +                                </child>
   5766 +                              </widget>
   5767 +                            </child>
   5768 +                          </widget>
   5769 +                        </child>
   5770 +                      </widget>
   5771 +                      <packing>
   5772 +                        <property name="position">1</property>
   5773 +                      </packing>
   5774 +                    </child>
   5775 +                  </widget>
   5776 +                  <packing>
   5777 +                    <property name="expand">False</property>
   5778 +                  </packing>
   5779 +                </child>
   5780 +                <child>
   5781 +                  <widget class="GtkVBox" id="vbox11">
   5782 +                    <property name="visible">True</property>
   5783 +                    <property name="spacing">6</property>
   5784 +                    <child>
   5785 +                      <widget class="GtkLabel" id="label18">
   5786 +                        <property name="visible">True</property>
   5787 +                        <property name="xalign">0</property>
   5788 +                        <property name="label" translatable="yes">&lt;b&gt;Other Previewable Files&lt;/b&gt;</property>
   5789 +                        <property name="use_markup">True</property>
   5790 +                      </widget>
   5791 +                      <packing>
   5792 +                        <property name="expand">False</property>
   5793 +                        <property name="fill">False</property>
   5794 +                      </packing>
   5795 +                    </child>
   5796 +                    <child>
   5797 +                      <widget class="GtkAlignment" id="alignment11">
   5798 +                        <property name="visible">True</property>
   5799 +                        <property name="left_padding">12</property>
   5800 +                        <child>
   5801 +                          <widget class="GtkVBox" id="vbox21">
   5802 +                            <property name="visible">True</property>
   5803 +                            <property name="spacing">6</property>
   5804 +                            <child>
   5805 +                              <widget class="GtkHBox" id="hbox20">
   5806 +                                <property name="visible">True</property>
   5807 +                                <property name="spacing">12</property>
   5808 +                                <child>
   5809 +                                  <widget class="GtkLabel" id="preview_label_1">
   5810 +                                    <property name="visible">True</property>
   5811 +                                    <property name="xalign">0</property>
   5812 +                                    <property name="label" translatable="yes">Show _thumbnails:</property>
   5813 +                                    <property name="use_underline">True</property>
   5814 +                                    <property name="mnemonic_widget">preview_image_combobox</property>
   5815 +                                  </widget>
   5816 +                                  <packing>
   5817 +                                    <property name="expand">False</property>
   5818 +                                    <property name="fill">False</property>
   5819 +                                  </packing>
   5820 +                                </child>
   5821 +                                <child>
   5822 +                                  <widget class="GtkComboBox" id="preview_image_combobox">
   5823 +                                    <property name="visible">True</property>
   5824 +                                    <property name="items" translatable="yes">Always
   5825  Local Files Only
   5826  Never</property>
   5827 -				  <property name="add_tearoffs">False</property>
   5828 -				  <property name="focus_on_click">True</property>
   5829 -				</widget>
   5830 -				<packing>
   5831 -				  <property name="padding">0</property>
   5832 -				  <property name="expand">True</property>
   5833 -				  <property name="fill">True</property>
   5834 -				</packing>
   5835 -			      </child>
   5836 -			    </widget>
   5837 -			    <packing>
   5838 -			      <property name="padding">0</property>
   5839 -			      <property name="expand">True</property>
   5840 -			      <property name="fill">True</property>
   5841 -			    </packing>
   5842 -			  </child>
   5843 -
   5844 -			  <child>
   5845 -			    <widget class="GtkHBox" id="hbox21">
   5846 -			      <property name="visible">True</property>
   5847 -			      <property name="homogeneous">False</property>
   5848 -			      <property name="spacing">12</property>
   5849 -
   5850 -			      <child>
   5851 -				<widget class="GtkLabel" id="preview_label_2">
   5852 -				  <property name="visible">True</property>
   5853 -				  <property name="label" translatable="yes">_Only for files smaller than:</property>
   5854 -				  <property name="use_underline">True</property>
   5855 -				  <property name="use_markup">False</property>
   5856 -				  <property name="justify">GTK_JUSTIFY_LEFT</property>
   5857 -				  <property name="wrap">False</property>
   5858 -				  <property name="selectable">False</property>
   5859 -				  <property name="xalign">0</property>
   5860 -				  <property name="yalign">0.5</property>
   5861 -				  <property name="xpad">0</property>
   5862 -				  <property name="ypad">0</property>
   5863 -				  <property name="mnemonic_widget">preview_image_size_combobox</property>
   5864 -				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   5865 -				  <property name="width_chars">-1</property>
   5866 -				  <property name="single_line_mode">False</property>
   5867 -				  <property name="angle">0</property>
   5868 -				</widget>
   5869 -				<packing>
   5870 -				  <property name="padding">0</property>
   5871 -				  <property name="expand">False</property>
   5872 -				  <property name="fill">False</property>
   5873 -				</packing>
   5874 -			      </child>
   5875 -
   5876 -			      <child>
   5877 -				<widget class="GtkComboBox" id="preview_image_size_combobox">
   5878 -				  <property name="visible">True</property>
   5879 -				  <property name="items" translatable="yes">100 KB
   5880 +                                  </widget>
   5881 +                                  <packing>
   5882 +                                    <property name="position">1</property>
   5883 +                                  </packing>
   5884 +                                </child>
   5885 +                              </widget>
   5886 +                            </child>
   5887 +                            <child>
   5888 +                              <widget class="GtkHBox" id="hbox21">
   5889 +                                <property name="visible">True</property>
   5890 +                                <property name="spacing">12</property>
   5891 +                                <child>
   5892 +                                  <widget class="GtkLabel" id="preview_label_2">
   5893 +                                    <property name="visible">True</property>
   5894 +                                    <property name="xalign">0</property>
   5895 +                                    <property name="label" translatable="yes">_Only for files smaller than:</property>
   5896 +                                    <property name="use_underline">True</property>
   5897 +                                    <property name="mnemonic_widget">preview_image_size_combobox</property>
   5898 +                                  </widget>
   5899 +                                  <packing>
   5900 +                                    <property name="expand">False</property>
   5901 +                                    <property name="fill">False</property>
   5902 +                                  </packing>
   5903 +                                </child>
   5904 +                                <child>
   5905 +                                  <widget class="GtkComboBox" id="preview_image_size_combobox">
   5906 +                                    <property name="visible">True</property>
   5907 +                                    <property name="items" translatable="yes">100 KB
   5908  500 KB
   5909  1 MB
   5910  3 MB
   5911 @@ -2043,928 +1169,599 @@ Never</property>
   5912  10 MB
   5913  100 MB
   5914  1 GB</property>
   5915 -				  <property name="add_tearoffs">False</property>
   5916 -				  <property name="focus_on_click">True</property>
   5917 -				</widget>
   5918 -				<packing>
   5919 -				  <property name="padding">0</property>
   5920 -				  <property name="expand">True</property>
   5921 -				  <property name="fill">True</property>
   5922 -				</packing>
   5923 -			      </child>
   5924 -			    </widget>
   5925 -			    <packing>
   5926 -			      <property name="padding">0</property>
   5927 -			      <property name="expand">True</property>
   5928 -			      <property name="fill">True</property>
   5929 -			    </packing>
   5930 -			  </child>
   5931 -			</widget>
   5932 -		      </child>
   5933 -		    </widget>
   5934 -		    <packing>
   5935 -		      <property name="padding">0</property>
   5936 -		      <property name="expand">True</property>
   5937 -		      <property name="fill">True</property>
   5938 -		    </packing>
   5939 -		  </child>
   5940 -		</widget>
   5941 -		<packing>
   5942 -		  <property name="padding">0</property>
   5943 -		  <property name="expand">False</property>
   5944 -		  <property name="fill">True</property>
   5945 -		</packing>
   5946 -	      </child>
   5947 -
   5948 -	      <child>
   5949 -		<widget class="GtkVBox" id="vbox12">
   5950 -		  <property name="visible">True</property>
   5951 -		  <property name="homogeneous">False</property>
   5952 -		  <property name="spacing">6</property>
   5953 -
   5954 -		  <child>
   5955 -		    <widget class="GtkLabel" id="label20">
   5956 -		      <property name="visible">True</property>
   5957 -		      <property name="label" translatable="yes">&lt;b&gt;Sound Files&lt;/b&gt;</property>
   5958 -		      <property name="use_underline">False</property>
   5959 -		      <property name="use_markup">True</property>
   5960 -		      <property name="justify">GTK_JUSTIFY_LEFT</property>
   5961 -		      <property name="wrap">False</property>
   5962 -		      <property name="selectable">False</property>
   5963 -		      <property name="xalign">0</property>
   5964 -		      <property name="yalign">0.5</property>
   5965 -		      <property name="xpad">0</property>
   5966 -		      <property name="ypad">0</property>
   5967 -		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   5968 -		      <property name="width_chars">-1</property>
   5969 -		      <property name="single_line_mode">False</property>
   5970 -		      <property name="angle">0</property>
   5971 -		    </widget>
   5972 -		    <packing>
   5973 -		      <property name="padding">0</property>
   5974 -		      <property name="expand">False</property>
   5975 -		      <property name="fill">False</property>
   5976 -		    </packing>
   5977 -		  </child>
   5978 -
   5979 -		  <child>
   5980 -		    <widget class="GtkAlignment" id="alignment12">
   5981 -		      <property name="visible">True</property>
   5982 -		      <property name="xalign">0.5</property>
   5983 -		      <property name="yalign">0.5</property>
   5984 -		      <property name="xscale">1</property>
   5985 -		      <property name="yscale">1</property>
   5986 -		      <property name="top_padding">0</property>
   5987 -		      <property name="bottom_padding">0</property>
   5988 -		      <property name="left_padding">12</property>
   5989 -		      <property name="right_padding">0</property>
   5990 -
   5991 -		      <child>
   5992 -			<widget class="GtkVBox" id="vbox22">
   5993 -			  <property name="visible">True</property>
   5994 -			  <property name="homogeneous">False</property>
   5995 -			  <property name="spacing">6</property>
   5996 -
   5997 -			  <child>
   5998 -			    <widget class="GtkHBox" id="hbox22">
   5999 -			      <property name="visible">True</property>
   6000 -			      <property name="homogeneous">False</property>
   6001 -			      <property name="spacing">12</property>
   6002 -
   6003 -			      <child>
   6004 -				<widget class="GtkLabel" id="preview_label_3">
   6005 -				  <property name="visible">True</property>
   6006 -				  <property name="label" translatable="yes">Preview _sound files:</property>
   6007 -				  <property name="use_underline">True</property>
   6008 -				  <property name="use_markup">False</property>
   6009 -				  <property name="justify">GTK_JUSTIFY_LEFT</property>
   6010 -				  <property name="wrap">False</property>
   6011 -				  <property name="selectable">False</property>
   6012 -				  <property name="xalign">0</property>
   6013 -				  <property name="yalign">0.5</property>
   6014 -				  <property name="xpad">0</property>
   6015 -				  <property name="ypad">0</property>
   6016 -				  <property name="mnemonic_widget">preview_sound_combobox</property>
   6017 -				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   6018 -				  <property name="width_chars">-1</property>
   6019 -				  <property name="single_line_mode">False</property>
   6020 -				  <property name="angle">0</property>
   6021 -				</widget>
   6022 -				<packing>
   6023 -				  <property name="padding">0</property>
   6024 -				  <property name="expand">False</property>
   6025 -				  <property name="fill">False</property>
   6026 -				</packing>
   6027 -			      </child>
   6028 -
   6029 -			      <child>
   6030 -				<widget class="GtkComboBox" id="preview_sound_combobox">
   6031 -				  <property name="visible">True</property>
   6032 -				  <property name="items" translatable="yes">Always
   6033 +                                  </widget>
   6034 +                                  <packing>
   6035 +                                    <property name="position">1</property>
   6036 +                                  </packing>
   6037 +                                </child>
   6038 +                              </widget>
   6039 +                              <packing>
   6040 +                                <property name="position">1</property>
   6041 +                              </packing>
   6042 +                            </child>
   6043 +                          </widget>
   6044 +                        </child>
   6045 +                      </widget>
   6046 +                      <packing>
   6047 +                        <property name="position">1</property>
   6048 +                      </packing>
   6049 +                    </child>
   6050 +                  </widget>
   6051 +                  <packing>
   6052 +                    <property name="expand">False</property>
   6053 +                    <property name="position">1</property>
   6054 +                  </packing>
   6055 +                </child>
   6056 +                <child>
   6057 +                  <widget class="GtkVBox" id="vbox12">
   6058 +                    <property name="visible">True</property>
   6059 +                    <property name="spacing">6</property>
   6060 +                    <child>
   6061 +                      <widget class="GtkLabel" id="label20">
   6062 +                        <property name="visible">True</property>
   6063 +                        <property name="xalign">0</property>
   6064 +                        <property name="label" translatable="yes">&lt;b&gt;Sound Files&lt;/b&gt;</property>
   6065 +                        <property name="use_markup">True</property>
   6066 +                      </widget>
   6067 +                      <packing>
   6068 +                        <property name="expand">False</property>
   6069 +                        <property name="fill">False</property>
   6070 +                      </packing>
   6071 +                    </child>
   6072 +                    <child>
   6073 +                      <widget class="GtkAlignment" id="alignment12">
   6074 +                        <property name="visible">True</property>
   6075 +                        <property name="left_padding">12</property>
   6076 +                        <child>
   6077 +                          <widget class="GtkVBox" id="vbox22">
   6078 +                            <property name="visible">True</property>
   6079 +                            <property name="spacing">6</property>
   6080 +                            <child>
   6081 +                              <widget class="GtkHBox" id="hbox22">
   6082 +                                <property name="visible">True</property>
   6083 +                                <property name="spacing">12</property>
   6084 +                                <child>
   6085 +                                  <widget class="GtkLabel" id="preview_label_3">
   6086 +                                    <property name="visible">True</property>
   6087 +                                    <property name="xalign">0</property>
   6088 +                                    <property name="label" translatable="yes">Preview _sound files:</property>
   6089 +                                    <property name="use_underline">True</property>
   6090 +                                    <property name="mnemonic_widget">preview_sound_combobox</property>
   6091 +                                  </widget>
   6092 +                                  <packing>
   6093 +                                    <property name="expand">False</property>
   6094 +                                    <property name="fill">False</property>
   6095 +                                  </packing>
   6096 +                                </child>
   6097 +                                <child>
   6098 +                                  <widget class="GtkComboBox" id="preview_sound_combobox">
   6099 +                                    <property name="visible">True</property>
   6100 +                                    <property name="items" translatable="yes">Always
   6101  Local Files Only
   6102  Never</property>
   6103 -				  <property name="add_tearoffs">False</property>
   6104 -				  <property name="focus_on_click">True</property>
   6105 -				</widget>
   6106 -				<packing>
   6107 -				  <property name="padding">0</property>
   6108 -				  <property name="expand">True</property>
   6109 -				  <property name="fill">True</property>
   6110 -				</packing>
   6111 -			      </child>
   6112 -			    </widget>
   6113 -			    <packing>
   6114 -			      <property name="padding">0</property>
   6115 -			      <property name="expand">True</property>
   6116 -			      <property name="fill">True</property>
   6117 -			    </packing>
   6118 -			  </child>
   6119 -			</widget>
   6120 -		      </child>
   6121 -		    </widget>
   6122 -		    <packing>
   6123 -		      <property name="padding">0</property>
   6124 -		      <property name="expand">True</property>
   6125 -		      <property name="fill">True</property>
   6126 -		    </packing>
   6127 -		  </child>
   6128 -		</widget>
   6129 -		<packing>
   6130 -		  <property name="padding">0</property>
   6131 -		  <property name="expand">False</property>
   6132 -		  <property name="fill">True</property>
   6133 -		</packing>
   6134 -	      </child>
   6135 -
   6136 -	      <child>
   6137 -		<widget class="GtkVBox" id="vbox13">
   6138 -		  <property name="visible">True</property>
   6139 -		  <property name="homogeneous">False</property>
   6140 -		  <property name="spacing">6</property>
   6141 -
   6142 -		  <child>
   6143 -		    <widget class="GtkLabel" id="label22">
   6144 -		      <property name="visible">True</property>
   6145 -		      <property name="label" translatable="yes">&lt;b&gt;Folders&lt;/b&gt;</property>
   6146 -		      <property name="use_underline">False</property>
   6147 -		      <property name="use_markup">True</property>
   6148 -		      <property name="justify">GTK_JUSTIFY_LEFT</property>
   6149 -		      <property name="wrap">False</property>
   6150 -		      <property name="selectable">False</property>
   6151 -		      <property name="xalign">0</property>
   6152 -		      <property name="yalign">0.5</property>
   6153 -		      <property name="xpad">0</property>
   6154 -		      <property name="ypad">0</property>
   6155 -		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
   6156 -		      <property name="width_chars">-1</property>
   6157 -		      <property name="single_line_mode">False</property>
   6158 -		      <property name="angle">0</property>
   6159 -		    </widget>
   6160 -		    <packing>
   6161 -		      <property name="padding">0</property>
   6162 -		      <property name="expand">False</property>
   6163 -		      <property name="fill">False</property>
   6164 -		    </packing>
   6165 -		  </child>
   6166 -
   6167 -		  <child>
   6168 -		    <widget class="GtkAlignment" id="alignment13">
   6169 -		      <property name="visible">True</property>
   6170 -		      <property name="xalign">0.5</property>
   6171 -		      <property name="yalign">0.5</property>
   6172 -		      <property name="xscale">1</property>
   6173 -		      <property name="yscale">1</property>
   6174 -		      <property name="top_padding">0</property>
   6175 -		      <property name="bottom_padding">0</property>
   6176 -		      <property name="left_padding">12</property>
   6177 -		      <property name="right_padding">0</property>
   6178 -
   6179 -		      <child>
   6180 -			<widget class="GtkVBox" id="vbox23">
   6181 -			  <property name="visible">True</property>
   6182 -			  <property name="homogeneous">False</property>
   6183 -			  <property name="spacing">6</property>
   6184 -
   6185 -			  <child>
   6186 -			    <widget class="GtkHBox" id="hbox23">
   6187 -			      <property name="visible">True</property>
   6188 -			      <property name="homogeneous">False</property>
   6189 -			      <property name="spacing">12</property>
   6190 -
   6191 -			      <child>
   6192 -				<widget class="GtkLabel" id="preview_label_4">
   6193 -				  <property nam