diff --git a/ChangeLog b/ChangeLog
index b6dabe0e85dd0edc65f9b102fcf73f4bb77dad6b..dfe12ba36e030ddbda3ea0c7b6d1efb7a1156470 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,45 @@
+2006-01-08	Benedikt Meurer <benny@xfce.org>
+
+	* thunar-vfs/thunar-vfs-monitor.c
+	  (thunar_vfs_monitor_queue_notification): Don't use strcmp() here, as
+	  the notification's filename may be NULL.
+	* thunar-vfs/thunar-vfs-info.{c,h}, thunar-vfs/thunar-vfs.symbols: Drop
+	  thunar_vfs_info_chmod() and thunar_vfs_info_chgrp() again.
+	* thunar-vfs/thunar-vfs-chmod-job.{c,h}, thunar-vfs/thunar-vfs.{c,h},
+	  thunar-vfs/thunar-vfs-chown-job.{c,h}, thunar-vfs/Makefile.am: Add
+	  new classes ThunarVfsChmodJob and ThunarVfsChownJob as replacements
+	  for the thunar_vfs_info_chmod() and thunar_vfs_info_chgrp() functions.
+	  These jobs can operate recursively. Add interfaces to the new classes,
+	  thunar_vfs_change_mode() and thunar_vfs_change_group().
+	* docs/reference/thunar-vfs/: Update documentation.
+	* thunar/thunar-file.{c,h}: Drop thunar_file_chmod(),thunar_file_chgrp()
+	  and thunar_file_is_chgrpable(), as we'll use the asynchronous jobs
+	  added to Thunar-VFS now.
+	* thunar/thunar-advanced-permissions-dialog.{c,h},
+	  thunar/thunar-change-group-dialog.{c,h},
+	  thunar/thunar-permissions-model.{c,h},
+	  thunar/thunar-permissions-view.{c,h}, thunar/Makefile.am,
+	  thunar/thunar-properties-dialog.c: Ditch the ACL aware permissions
+	  user interface, as it's unlikely that ACL support will be there for
+	  1.0 and so there's no need to reduce the usability of the permissions
+	  user interface yet.
+	* thunar/thunar-pango-extensions.{c,h}: Add new Pango helper method
+	  thunar_pango_attr_list_small_italic().
+	* thunar/thunar-enum-types.{c,h}: Import new files to contain enum
+	  types that don't fit anywhere else and provide conversation functions
+	  for these types.
+	* thunar/thunar-permissions-chooser.{c,h}, thunar/Makefile.am,
+	  thunar/thunar-properties-dialog.c: Import simplified permissions
+	  chooser, similar to the Aqua Finder one, with support to change
+	  permissions recursively for folders.
+	* thunar/thunar-preferences-dialog.c, thunar/thunar-preferences.c: Add
+	  option "misc-recursive-permissions", which controls whether
+	  permissions are always/never applied recursively, or whether Thunar
+	  should ask the user everytime a permission flag is changed.
+	* icons/16x16/, thunar/thunar-stock.{c,h}: Remove now obsolete icon
+	  thunar-permissions-other. Rename the user and group icons.
+	* po/*.po, po/POTFILES.in: Update file list. Merge new strings.
+
 2006-01-05	Benedikt Meurer <benny@xfce.org>
 
 	* thunar/thunar-text-renderer.c: Don't determine the focus-padding and
diff --git a/docs/reference/thunar-vfs/thunar-vfs-sections.txt b/docs/reference/thunar-vfs/thunar-vfs-sections.txt
index 270015a995aeb5a45dfee27063c5989175be1749..676b7a1ee2ba0c28204005330be7b8b6f13f4eec 100644
--- a/docs/reference/thunar-vfs/thunar-vfs-sections.txt
+++ b/docs/reference/thunar-vfs/thunar-vfs-sections.txt
@@ -30,8 +30,6 @@ thunar_vfs_info_new_for_path
 thunar_vfs_info_ref
 thunar_vfs_info_unref
 thunar_vfs_info_execute
-thunar_vfs_info_chgrp
-thunar_vfs_info_chmod
 thunar_vfs_info_rename
 thunar_vfs_info_matches
 thunar_vfs_info_list_free
@@ -221,6 +219,8 @@ thunar_vfs_unlink_file
 thunar_vfs_unlink_files
 thunar_vfs_make_directory
 thunar_vfs_make_directories
+thunar_vfs_change_mode
+thunar_vfs_change_group
 </SECTION>
 
 
diff --git a/docs/reference/thunar-vfs/tmpl/thunar-vfs-info.sgml b/docs/reference/thunar-vfs/tmpl/thunar-vfs-info.sgml
index 5cda7ded5713447359b0bdbede23c8d8b92e6571..5b8bf1ca7402edc26311ea580089808bf81da6a5 100644
--- a/docs/reference/thunar-vfs/tmpl/thunar-vfs-info.sgml
+++ b/docs/reference/thunar-vfs/tmpl/thunar-vfs-info.sgml
@@ -79,28 +79,6 @@ ThunarVfsInfo
 @uris: 
 
 
-<!-- ##### FUNCTION thunar_vfs_info_chgrp ##### -->
-<para>
-
-</para>
-
-@info: 
-@gid: 
-@error: 
-@Returns: 
-
-
-<!-- ##### FUNCTION thunar_vfs_info_chmod ##### -->
-<para>
-
-</para>
-
-@info: 
-@mode: 
-@error: 
-@Returns: 
-
-
 <!-- ##### FUNCTION thunar_vfs_info_rename ##### -->
 <para>
 
diff --git a/docs/reference/thunar-vfs/tmpl/thunar-vfs-operations.sgml b/docs/reference/thunar-vfs/tmpl/thunar-vfs-operations.sgml
index 4c211e6a8d0aa5c32fe4392240739f820159d4ab..50ece7f87bcf9bc9a77060c57ab07882e8c81424 100644
--- a/docs/reference/thunar-vfs/tmpl/thunar-vfs-operations.sgml
+++ b/docs/reference/thunar-vfs/tmpl/thunar-vfs-operations.sgml
@@ -135,3 +135,30 @@ Operations
 @Returns: 
 
 
+<!-- ##### FUNCTION thunar_vfs_change_mode ##### -->
+<para>
+
+</para>
+
+@path: 
+@dir_mask: 
+@dir_mode: 
+@file_mask: 
+@file_mode: 
+@recursive: 
+@error: 
+@Returns: 
+
+
+<!-- ##### FUNCTION thunar_vfs_change_group ##### -->
+<para>
+
+</para>
+
+@path: 
+@gid: 
+@recursive: 
+@error: 
+@Returns: 
+
+
diff --git a/icons/16x16/Makefile.am b/icons/16x16/Makefile.am
index bbbc8999097a866986ba8e8e7b7bf9bc62b7f9d5..4680093fca3bfbb8ee384595b170a95851fb57b2 100644
--- a/icons/16x16/Makefile.am
+++ b/icons/16x16/Makefile.am
@@ -2,9 +2,8 @@
 
 iconsdir = $(datadir)/icons/hicolor/16x16/stock/generic
 icons_DATA =								\
-	stock_thunar-permissions-group.png				\
-	stock_thunar-permissions-other.png				\
-	stock_thunar-permissions-user.png
+	stock_thunar-group.png						\
+	stock_thunar-user.png
 
 EXTRA_DIST =								\
 	$(icons_DATA)
diff --git a/icons/16x16/stock_thunar-permissions-group.png b/icons/16x16/stock_thunar-group.png
similarity index 100%
rename from icons/16x16/stock_thunar-permissions-group.png
rename to icons/16x16/stock_thunar-group.png
diff --git a/icons/16x16/stock_thunar-permissions-other.png b/icons/16x16/stock_thunar-permissions-other.png
deleted file mode 100644
index 320d55d1c3dc12e1001788d07fe6698ee626a58e..0000000000000000000000000000000000000000
Binary files a/icons/16x16/stock_thunar-permissions-other.png and /dev/null differ
diff --git a/icons/16x16/stock_thunar-permissions-user.png b/icons/16x16/stock_thunar-user.png
similarity index 100%
rename from icons/16x16/stock_thunar-permissions-user.png
rename to icons/16x16/stock_thunar-user.png
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 6c854595abc66bb662a47cf10555e2e3023f0bc4..26bf1ebce651882c4c1182a7982567e5ab2fdb61 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1,3 +1,5 @@
+thunar-vfs/thunar-vfs-chmod-job.c
+thunar-vfs/thunar-vfs-chown-job.c
 thunar-vfs/thunar-vfs-config.c
 thunar-vfs/thunar-vfs-exec.c
 thunar-vfs/thunar-vfs-info.c
@@ -29,9 +31,7 @@ thunar-vfs/thunar-vfs-xfer.c
 thunar-vfs/thunar-vfs.c
 
 thunar/main.c
-thunar/thunar-advanced-permissions-dialog.c
 thunar/thunar-application.c
-thunar/thunar-change-group-dialog.c
 thunar/thunar-chooser-dialog.c
 thunar/thunar-chooser-model.c
 thunar/thunar-clipboard-manager.c
@@ -58,8 +58,7 @@ thunar/thunar-metafile.c
 thunar/thunar-navigator.c
 thunar/thunar-open-with-action.c
 thunar/thunar-path-entry.c
-thunar/thunar-permissions-model.c
-thunar/thunar-permissions-view.c
+thunar/thunar-permissions-chooser.c
 thunar/thunar-preferences-dialog.c
 thunar/thunar-preferences.c
 thunar/thunar-progress-dialog.c
diff --git a/po/ca.po b/po/ca.po
index 8eb524fc32bab18bbda7be7f53c5817737f38bad..e4ff400609709639d9be4031e9370e55010bc960 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Thunar 0.1.4svn\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-01-04 18:34+0100\n"
+"POT-Creation-Date: 2006-01-08 22:45+0100\n"
 "PO-Revision-Date: 2006-01-08 21:52+0100\n"
 "Last-Translator: Pau Rul·lan Ferragut <paurullan@bulma.net>\n"
 "Language-Team: catalan\n"
@@ -16,23 +16,67 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n!=1;\n"
 
-#: ../thunar-vfs/thunar-vfs-info.c:362
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:168
+#: ../thunar-vfs/thunar-vfs-chown-job.c:166
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:267
+msgid "Collecting files..."
+msgstr "Recol·lectant fitxers..."
+
+#. ask the user whether we should skip the file
+#. ask the user whether to skip this file (used for cancellation only)
+#. ask the user whether to skip
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:189
+#: ../thunar-vfs/thunar-vfs-chown-job.c:187
+#: ../thunar-vfs/thunar-vfs-link-job.c:212
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:747
+#, fuzzy, c-format
+msgid ""
+"%s.\n"
+"\n"
+"Do you want to skip it?"
+msgstr ""
+"\n"
+"\n"
+"Voleu ometre-ho?"
+
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:246
+#: ../thunar-vfs/thunar-vfs-chown-job.c:244
+#, fuzzy, c-format
+msgid "Failed to determine file info of `%s': %s"
+msgstr "No s'ha pogut eliminar %s."
+
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:272
+#, fuzzy, c-format
+msgid "Failed to change permissions of `%s': %s"
+msgstr "Impossible de carregar el programa des del fitxer %s"
+
+#: ../thunar-vfs/thunar-vfs-chown-job.c:260
+#, fuzzy, c-format
+msgid "Failed to change file owner of `%s': %s"
+msgstr "Impossible de carregar el programa des del fitxer %s"
+
+#: ../thunar-vfs/thunar-vfs-chown-job.c:262
+#, fuzzy, c-format
+msgid "Failed to change file group of `%s': %s"
+msgstr "Impossible de carregar el programa des del fitxer %s"
+
+#: ../thunar-vfs/thunar-vfs-info.c:261
 msgid "No Exec field specified"
 msgstr "No ha especificat un camp executable"
 
-#: ../thunar-vfs/thunar-vfs-info.c:370
+#: ../thunar-vfs/thunar-vfs-info.c:269
 msgid "Unable to parse file"
 msgstr "No s'ha pogut analitzar el fitxer"
 
-#: ../thunar-vfs/thunar-vfs-info.c:460
+#: ../thunar-vfs/thunar-vfs-info.c:359
 msgid "Invalid file name"
 msgstr "El nom del fitxer no és vàlid"
 
-#: ../thunar-vfs/thunar-vfs-info.c:482
+#: ../thunar-vfs/thunar-vfs-info.c:381
 msgid "Invalid desktop file"
 msgstr "El nom de l'escriptori no és vàlid"
 
-#: ../thunar-vfs/thunar-vfs-info.c:716
+#: ../thunar-vfs/thunar-vfs-info.c:615
 #, c-format
 msgid "Failed to stat file `%s': %s"
 msgstr ""
@@ -56,20 +100,6 @@ msgstr ""
 msgid "Failed to remove `%s': %s"
 msgstr "No s'ha pogut eliminar %s."
 
-#. ask the user whether to skip this file (used for cancellation only)
-#. ask the user whether to skip
-#: ../thunar-vfs/thunar-vfs-link-job.c:212
-#: ../thunar-vfs/thunar-vfs-transfer-job.c:747
-#, fuzzy, c-format
-msgid ""
-"%s.\n"
-"\n"
-"Do you want to skip it?"
-msgstr ""
-"\n"
-"\n"
-"Voleu ometre-ho?"
-
 #: ../thunar-vfs/thunar-vfs-mime-database.c:1657
 #, c-format
 msgid "Failed to load application from file %s"
@@ -101,10 +131,6 @@ msgstr "Mida"
 msgid "The desired thumbnail size"
 msgstr "Tamany de les miniatures"
 
-#: ../thunar-vfs/thunar-vfs-transfer-job.c:267
-msgid "Collecting files..."
-msgstr "Recol·lectant fitxers..."
-
 #. display info message
 #: ../thunar-vfs/thunar-vfs-transfer-job.c:329
 #, fuzzy
@@ -145,7 +171,7 @@ msgid "copy of %s"
 msgstr ""
 
 #: ../thunar-vfs/thunar-vfs-xfer.c:158 ../thunar/thunar-list-model.c:703
-#: ../thunar/thunar-properties-dialog.c:643
+#: ../thunar/thunar-properties-dialog.c:631
 #, c-format
 msgid "link to %s"
 msgstr ""
@@ -261,58 +287,6 @@ msgstr ""
 msgid "Thunar"
 msgstr ""
 
-#: ../thunar/thunar-advanced-permissions-dialog.c:159
-#, fuzzy
-msgid "Advanced Permissions"
-msgstr "Permisos"
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:167
-msgid "Special Bits"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:180
-msgid "Set _User ID (SUID)"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:190
-msgid ""
-"An executable file whose Set User ID (SUID) bit is\n"
-"set will always be executed with the privileges of\n"
-"the owner of the executable."
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:211
-msgid "Set _Group ID (SGID)"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:221
-msgid ""
-"An executable file whose Set Group ID (SGID) bit is\n"
-"set will always be executed with the privileges of the\n"
-"group of the executable."
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:242
-msgid "_Sticky"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:252
-msgid ""
-"A file in a sticky directory may only be removed or\n"
-"renamed by a user if the user has write permission\n"
-"for the directory and the user is the owner of the\n"
-"file, the owner of the directory or the superuser."
-msgstr ""
-
-#. display an error message to the user
-#. display an error to the user (when we get here, we definitely have a valid file!)
-#: ../thunar/thunar-advanced-permissions-dialog.c:356
-#: ../thunar/thunar-permissions-model.c:830
-#: ../thunar/thunar-permissions-view.c:494
-#, fuzzy, c-format
-msgid "Failed to change permissions of `%s'"
-msgstr "Impossible de carregar el programa des del fitxer %s"
-
 #. display an error message to the user
 #: ../thunar/thunar-application.c:222
 msgid "Failed to launch operation"
@@ -339,25 +313,11 @@ msgstr ""
 msgid "Creating directories..."
 msgstr "Recol·lectant fitxers..."
 
-#: ../thunar/thunar-change-group-dialog.c:193
-msgid "Change Group"
-msgstr ""
-
-#: ../thunar/thunar-change-group-dialog.c:200
-msgid "_Group:"
-msgstr ""
-
-#. display an error message
-#: ../thunar/thunar-change-group-dialog.c:309
-#, c-format
-msgid "Failed to change the group to which `%s' belongs"
-msgstr ""
-
 #: ../thunar/thunar-chooser-dialog.c:169 ../thunar/thunar-emblem-chooser.c:147
 #: ../thunar/thunar-emblem-chooser.c:148 ../thunar/thunar-icon-renderer.c:161
 #: ../thunar/thunar-open-with-action.c:146
 #: ../thunar/thunar-open-with-action.c:147
-#: ../thunar/thunar-properties-dialog.c:172 ../thunar/thunar-statusbar.c:190
+#: ../thunar/thunar-properties-dialog.c:173 ../thunar/thunar-statusbar.c:190
 msgid "File"
 msgstr "Fitxer"
 
@@ -407,37 +367,37 @@ msgid "Failed to execute `%s'"
 msgstr ""
 
 #. update the header label
-#: ../thunar/thunar-chooser-dialog.c:612
+#: ../thunar/thunar-chooser-dialog.c:613
 #, c-format
 msgid "Open <i>%s</i> and other files of type \"%s\" with:"
 msgstr "Obre <i>%s</i> i d'altres fitxers de tipus «%s» amb:"
 
-#: ../thunar/thunar-chooser-dialog.c:634 ../thunar-uca/thunar-uca-editor.c:491
+#: ../thunar/thunar-chooser-dialog.c:635 ../thunar-uca/thunar-uca-editor.c:491
 msgid "Select an Application"
 msgstr "Seleccioneu una aplicació"
 
-#: ../thunar/thunar-chooser-dialog.c:644 ../thunar-uca/thunar-uca-editor.c:501
+#: ../thunar/thunar-chooser-dialog.c:645 ../thunar-uca/thunar-uca-editor.c:501
 #: ../thunar-uca/thunar-uca-editor.c:640
 msgid "All Files"
 msgstr "Tots els fitxers"
 
-#: ../thunar/thunar-chooser-dialog.c:649 ../thunar-uca/thunar-uca-editor.c:506
+#: ../thunar/thunar-chooser-dialog.c:650 ../thunar-uca/thunar-uca-editor.c:506
 msgid "Executable Files"
 msgstr ""
 
-#: ../thunar/thunar-chooser-dialog.c:664 ../thunar-uca/thunar-uca-editor.c:521
+#: ../thunar/thunar-chooser-dialog.c:665 ../thunar-uca/thunar-uca-editor.c:521
 msgid "Perl Scripts"
 msgstr ""
 
-#: ../thunar/thunar-chooser-dialog.c:670 ../thunar-uca/thunar-uca-editor.c:527
+#: ../thunar/thunar-chooser-dialog.c:671 ../thunar-uca/thunar-uca-editor.c:527
 msgid "Python Scripts"
 msgstr ""
 
-#: ../thunar/thunar-chooser-dialog.c:676 ../thunar-uca/thunar-uca-editor.c:533
+#: ../thunar/thunar-chooser-dialog.c:677 ../thunar-uca/thunar-uca-editor.c:533
 msgid "Ruby Scripts"
 msgstr ""
 
-#: ../thunar/thunar-chooser-dialog.c:682 ../thunar-uca/thunar-uca-editor.c:539
+#: ../thunar/thunar-chooser-dialog.c:683 ../thunar-uca/thunar-uca-editor.c:539
 msgid "Shell Scripts"
 msgstr ""
 
@@ -507,7 +467,7 @@ msgstr "Nom"
 #. Permissions chooser
 #.
 #: ../thunar/thunar-details-view.c:197
-#: ../thunar/thunar-properties-dialog.c:382
+#: ../thunar/thunar-properties-dialog.c:374
 msgid "Permissions"
 msgstr "Permisos"
 
@@ -557,11 +517,11 @@ msgstr "No s'ha pogut analitzar el fitxer"
 msgid "The root folder has no parent"
 msgstr ""
 
-#: ../thunar/thunar-file.c:1032
+#: ../thunar/thunar-file.c:967
 msgid "Filesystem"
 msgstr "Sistema de fitxers"
 
-#: ../thunar/thunar-file.c:1056
+#: ../thunar/thunar-file.c:991
 msgid "Home"
 msgstr "Inici"
 
@@ -618,7 +578,7 @@ msgid "The file whose icon to render"
 msgstr ""
 
 #: ../thunar/thunar-icon-renderer.c:177 ../thunar/thunar-icon-renderer.c:178
-#: ../thunar/thunar-text-renderer.c:202 ../thunar/thunar-text-renderer.c:203
+#: ../thunar/thunar-text-renderer.c:203 ../thunar/thunar-text-renderer.c:204
 msgid "Follow state"
 msgstr ""
 
@@ -789,7 +749,7 @@ msgstr ""
 msgid "Whether to display hidden files"
 msgstr ""
 
-#: ../thunar/thunar-list-model.c:701 ../thunar/thunar-properties-dialog.c:641
+#: ../thunar/thunar-list-model.c:701 ../thunar/thunar-properties-dialog.c:629
 msgid "broken link"
 msgstr ""
 
@@ -829,11 +789,11 @@ msgid_plural "%d items selected (%s)"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../thunar/thunar-location-buttons.c:258
+#: ../thunar/thunar-location-buttons.c:257
 msgid "Spacing"
 msgstr "Espaiat"
 
-#: ../thunar/thunar-location-buttons.c:259
+#: ../thunar/thunar-location-buttons.c:258
 msgid "The amount of space between the path buttons"
 msgstr ""
 
@@ -875,255 +835,313 @@ msgstr ""
 msgid "The icon size for the path entry"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:440
-#, c-format
-msgid "%s (%s)"
+#. 0000
+#: ../thunar/thunar-permissions-chooser.c:234
+msgid "None"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:447
-msgid "Unknown file owner"
+#. 0002
+#: ../thunar/thunar-permissions-chooser.c:236
+msgid "Write only"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:460
-msgid "Unknown file group"
+#. 0004
+#: ../thunar/thunar-permissions-chooser.c:238
+msgid "Read only"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:465
-msgid "All other users"
+#. 0006
+#: ../thunar/thunar-permissions-chooser.c:240
+msgid "Read & Write"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:474
-msgid "Read"
+#: ../thunar/thunar-permissions-chooser.c:252
+msgid "Owner:"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:478
-msgid "Write"
+#: ../thunar/thunar-permissions-chooser.c:266
+msgid "Unknown"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:482
-msgid "List folder contents"
+#: ../thunar/thunar-permissions-chooser.c:280
+#: ../thunar/thunar-permissions-chooser.c:335
+#, fuzzy
+msgid "Access:"
+msgstr "Accedit:"
+
+#: ../thunar/thunar-permissions-chooser.c:309
+msgid "Group:"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:482
-#, fuzzy
-msgid "Execute"
-msgstr "_Executa"
+#: ../thunar/thunar-permissions-chooser.c:364
+msgid "Others:"
+msgstr ""
+
+#: ../thunar/thunar-permissions-chooser.c:393
+msgid "Program:"
+msgstr ""
+
+#: ../thunar/thunar-permissions-chooser.c:399
+msgid "Allow this file to _run as a program"
+msgstr ""
+
+#: ../thunar/thunar-permissions-chooser.c:423
+msgid ""
+"Allowing untrusted programs to run \n"
+"presents a security risk to your system."
+msgstr ""
 
-#. actions for the group item
-#: ../thunar/thunar-permissions-model.c:884
-msgid "Change _Group..."
+#: ../thunar/thunar-permissions-chooser.c:434
+msgid "Please wait..."
 msgstr ""
 
-#. append the "Grant Permission" action
-#: ../thunar/thunar-permissions-model.c:897
+#. display an error to the user
+#: ../thunar/thunar-permissions-chooser.c:545
 #, fuzzy
-msgid "_Grant Permission"
-msgstr "Permisos"
+msgid "Failed to change group"
+msgstr "Impossible de carregar el programa des del fitxer %s"
 
-#. append the "Deny Permission" action
-#: ../thunar/thunar-permissions-model.c:906
+#. display an error to the user
+#: ../thunar/thunar-permissions-chooser.c:580
 #, fuzzy
-msgid "_Deny Permission"
-msgstr "Permisos"
+msgid "Failed to apply new permissions"
+msgstr "Impossible de carregar el programa des del fitxer %s"
+
+#. allocate the question dialog
+#: ../thunar/thunar-permissions-chooser.c:619
+#: ../thunar/thunar-permissions-chooser.c:961
+#: ../thunar/thunar-progress-dialog.c:295
+msgid "Question"
+msgstr "Pregunta"
 
-#: ../thunar/thunar-permissions-view.c:213
+#: ../thunar/thunar-permissions-chooser.c:642
+msgid "Apply recursively?"
+msgstr ""
+
+#: ../thunar/thunar-permissions-chooser.c:648
 msgid ""
-"For special permissions and for\n"
-"advanced settings, click Advanced."
+"Do you want to apply your changes recursively to\n"
+"all files and subfolder below the selected folder?"
 msgstr ""
 
-#: ../thunar/thunar-permissions-view.c:222
-msgid "_Advanced..."
+#: ../thunar/thunar-permissions-chooser.c:653
+msgid "Do _not ask me again"
 msgstr ""
 
-#: ../thunar/thunar-permissions-view.c:223
-msgid "Click here for special permissions and for advanced settings."
+#: ../thunar/thunar-permissions-chooser.c:851
+msgid "Unknown file owner"
 msgstr ""
 
-#: ../thunar/thunar-permissions-view.c:243
-msgid ""
-"You are not the owner of this file, so\n"
-"you cannot change these permissions."
+#: ../thunar/thunar-permissions-chooser.c:990
+#: ../thunar/thunar-progress-dialog.c:321
+msgid "_Yes"
+msgstr "_Sí"
+
+#: ../thunar/thunar-permissions-chooser.c:994
+#: ../thunar/thunar-progress-dialog.c:325
+msgid "Yes to _all"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:184
+#: ../thunar/thunar-permissions-chooser.c:998
+#: ../thunar/thunar-progress-dialog.c:329
+msgid "_No"
+msgstr "_No"
+
+#: ../thunar/thunar-permissions-chooser.c:1002
+#: ../thunar/thunar-progress-dialog.c:333
+msgid "_Cancel"
+msgstr "_Cancel·la"
+
+#: ../thunar/thunar-preferences-dialog.c:186
 #, fuzzy
 msgid "File Manager Preferences"
 msgstr "Gestor de fitxers"
 
-#: ../thunar/thunar-preferences-dialog.c:200
-msgid "<b>Default View</b>"
+#.
+#. Views
+#.
+#: ../thunar/thunar-preferences-dialog.c:203
+#, fuzzy
+msgid "Views"
+msgstr "_Visualitza"
+
+#: ../thunar/thunar-preferences-dialog.c:213
+msgid "Default View"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:211
+#: ../thunar/thunar-preferences-dialog.c:225
 msgid "View _new folders using:"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:216
+#: ../thunar/thunar-preferences-dialog.c:230
+#: ../thunar/thunar-preferences-dialog.c:267
 #, fuzzy
 msgid "Icon View"
 msgstr "Mida d'icona"
 
-#: ../thunar/thunar-preferences-dialog.c:217
+#: ../thunar/thunar-preferences-dialog.c:231
 msgid "Detailed List View"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:218
+#: ../thunar/thunar-preferences-dialog.c:232
 msgid "Last Active View"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:233
+#: ../thunar/thunar-preferences-dialog.c:249
 msgid "Sort _folders before files"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:235
+#: ../thunar/thunar-preferences-dialog.c:251
 msgid "Select this option to list folders before files when you sort a folder."
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:239
+#: ../thunar/thunar-preferences-dialog.c:255
 msgid "Show hidden and _backup files"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:241
+#: ../thunar/thunar-preferences-dialog.c:257
 msgid ""
 "Select this option to show hidden and backup files in new windows. The first "
 "character in a hidden filename is a period (.). The last character in a "
 "backup filename is a tilde (~)."
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:251
-msgid "<b>Icon View</b>"
-msgstr ""
-
-#: ../thunar/thunar-preferences-dialog.c:262
+#: ../thunar/thunar-preferences-dialog.c:279
 msgid "_Text beside icons"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:264
+#: ../thunar/thunar-preferences-dialog.c:281
 msgid ""
 "Select this option to place the icon captions for items beside the icon "
 "rather than below the icon."
 msgstr ""
 
-#: ../thunar/thunar-preferences.c:255
+#.
+#. Advanced
+#.
+#: ../thunar/thunar-preferences-dialog.c:290
+msgid "Advanced"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:300
+msgid "Miscellaneous"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:312
+msgid "Apply permissions _recursively:"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:317
+msgid "Ask everytime"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:318
+msgid "Always"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:319
+msgid "Never"
+msgstr ""
+
+#: ../thunar/thunar-preferences.c:272
 #, c-format
 msgid "Failed to create the Thunar configuration directory in %s"
 msgstr ""
 
-#: ../thunar/thunar-preferences.c:263
+#: ../thunar/thunar-preferences.c:280
 #, c-format
 msgid "Failed to open preferences database in %s: %s"
 msgstr ""
 
-#: ../thunar/thunar-progress-dialog.c:150
+#: ../thunar/thunar-progress-dialog.c:151
 msgid "Job"
 msgstr "Treball"
 
-#: ../thunar/thunar-progress-dialog.c:151
+#: ../thunar/thunar-progress-dialog.c:152
 msgid "The job whose progress to display"
 msgstr ""
 
-#: ../thunar/thunar-progress-dialog.c:303
-msgid "Question"
-msgstr "Pregunta"
-
-#: ../thunar/thunar-progress-dialog.c:329
-msgid "_Yes"
-msgstr "_Sí"
-
-#: ../thunar/thunar-progress-dialog.c:333
-msgid "Yes to _all"
-msgstr ""
-
-#: ../thunar/thunar-progress-dialog.c:337
-msgid "_No"
-msgstr "_No"
-
-#: ../thunar/thunar-progress-dialog.c:341
-msgid "_Cancel"
-msgstr "_Cancel·la"
-
-#: ../thunar/thunar-progress-dialog.c:467
+#: ../thunar/thunar-progress-dialog.c:459
 #, c-format
 msgid "(%lu hour remaining)"
 msgid_plural "(%lu hours remaining)"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../thunar/thunar-progress-dialog.c:472
+#: ../thunar/thunar-progress-dialog.c:464
 #, c-format
 msgid "(%lu minute remaining)"
 msgid_plural "(%lu minutes remaining)"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../thunar/thunar-progress-dialog.c:477
+#: ../thunar/thunar-progress-dialog.c:469
 #, c-format
 msgid "(%lu second remaining)"
 msgid_plural "(%lu seconds remaining)"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../thunar/thunar-properties-dialog.c:173
+#: ../thunar/thunar-properties-dialog.c:174
 msgid "The file displayed by the dialog"
 msgstr ""
 
-#: ../thunar/thunar-properties-dialog.c:220
+#: ../thunar/thunar-properties-dialog.c:212
 msgid "General"
 msgstr "General"
 
-#: ../thunar/thunar-properties-dialog.c:237
+#: ../thunar/thunar-properties-dialog.c:229
 msgid "Name:"
 msgstr "Nom:"
 
 #.
 #. Second box (kind)
 #.
-#: ../thunar/thunar-properties-dialog.c:262
+#: ../thunar/thunar-properties-dialog.c:254
 msgid "Kind:"
 msgstr ""
 
 #.
 #. Third box (modified, accessed)
 #.
-#: ../thunar/thunar-properties-dialog.c:287
+#: ../thunar/thunar-properties-dialog.c:279
 msgid "Modified:"
 msgstr "Modificat:"
 
-#: ../thunar/thunar-properties-dialog.c:300
+#: ../thunar/thunar-properties-dialog.c:292
 msgid "Accessed:"
 msgstr "Accedit:"
 
 #.
 #. Fourth box (volume, size)
 #.
-#: ../thunar/thunar-properties-dialog.c:324
+#: ../thunar/thunar-properties-dialog.c:316
 msgid "Volume:"
 msgstr "Volum:"
 
-#: ../thunar/thunar-properties-dialog.c:347
+#: ../thunar/thunar-properties-dialog.c:339
 msgid "Size:"
 msgstr "Mida:"
 
 #.
 #. Emblem chooser
 #.
-#: ../thunar/thunar-properties-dialog.c:371
+#: ../thunar/thunar-properties-dialog.c:363
 msgid "Emblems"
 msgstr ""
 
-#: ../thunar/thunar-properties-dialog.c:618
+#: ../thunar/thunar-properties-dialog.c:606
 #, c-format
 msgid "%s Info"
 msgstr ""
 
-#: ../thunar/thunar-properties-dialog.c:699
+#: ../thunar/thunar-properties-dialog.c:687
 #, c-format
 msgid "%s (%u Bytes)"
 msgstr ""
 
 #. display an error message
-#: ../thunar/thunar-properties-dialog.c:745
+#: ../thunar/thunar-properties-dialog.c:733
 #: ../thunar/thunar-standard-view.c:2170
 #, fuzzy, c-format
 msgid "Failed to rename `%s'"
@@ -1352,27 +1370,27 @@ msgstr ""
 msgid "The main text to be displayed in the statusbar"
 msgstr ""
 
-#: ../thunar/thunar-text-renderer.c:215
+#: ../thunar/thunar-text-renderer.c:216
 msgid "Text"
 msgstr "Text"
 
-#: ../thunar/thunar-text-renderer.c:216
+#: ../thunar/thunar-text-renderer.c:217
 msgid "The text to render"
 msgstr ""
 
-#: ../thunar/thunar-text-renderer.c:230
+#: ../thunar/thunar-text-renderer.c:231
 msgid "Wrap mode"
 msgstr "Mode d'ajust"
 
-#: ../thunar/thunar-text-renderer.c:231
+#: ../thunar/thunar-text-renderer.c:232
 msgid "The wrap mode"
 msgstr ""
 
-#: ../thunar/thunar-text-renderer.c:246
+#: ../thunar/thunar-text-renderer.c:247
 msgid "Wrap width"
 msgstr "Ajusta l'amplada"
 
-#: ../thunar/thunar-text-renderer.c:247
+#: ../thunar/thunar-text-renderer.c:248
 msgid "The wrap width"
 msgstr ""
 
@@ -1857,3 +1875,19 @@ msgstr "Gestor de fitxers"
 #: ../Thunar.desktop.in.h:3
 msgid "Thunar File Manager"
 msgstr ""
+
+#, fuzzy
+#~ msgid "Advanced Permissions"
+#~ msgstr "Permisos"
+
+#, fuzzy
+#~ msgid "Execute"
+#~ msgstr "_Executa"
+
+#, fuzzy
+#~ msgid "_Grant Permission"
+#~ msgstr "Permisos"
+
+#, fuzzy
+#~ msgid "_Deny Permission"
+#~ msgstr "Permisos"
diff --git a/po/de.po b/po/de.po
index f933abece3f0e20701486d9cba0de476b8dfb65f..91b11d698ca40e48d4f9e7b87369511be6157979 100644
--- a/po/de.po
+++ b/po/de.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Thunar 0.1.4svn\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-01-04 18:34+0100\n"
+"POT-Creation-Date: 2006-01-08 22:45+0100\n"
 "PO-Revision-Date: 2005-10-06 22:03+0900\n"
 "Last-Translator: Benedikt Meurer <benny@xfce.org>\n"
 "Language-Team: German <de@li.org>\n"
@@ -15,23 +15,64 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ../thunar-vfs/thunar-vfs-info.c:362
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:168
+#: ../thunar-vfs/thunar-vfs-chown-job.c:166
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:267
+msgid "Collecting files..."
+msgstr ""
+
+#. ask the user whether we should skip the file
+#. ask the user whether to skip this file (used for cancellation only)
+#. ask the user whether to skip
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:189
+#: ../thunar-vfs/thunar-vfs-chown-job.c:187
+#: ../thunar-vfs/thunar-vfs-link-job.c:212
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:747
+#, c-format
+msgid ""
+"%s.\n"
+"\n"
+"Do you want to skip it?"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:246
+#: ../thunar-vfs/thunar-vfs-chown-job.c:244
+#, fuzzy, c-format
+msgid "Failed to determine file info of `%s': %s"
+msgstr "Andere Anwendung..."
+
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:272
+#, fuzzy, c-format
+msgid "Failed to change permissions of `%s': %s"
+msgstr "Andere Anwendung..."
+
+#: ../thunar-vfs/thunar-vfs-chown-job.c:260
+#, fuzzy, c-format
+msgid "Failed to change file owner of `%s': %s"
+msgstr "Andere Anwendung..."
+
+#: ../thunar-vfs/thunar-vfs-chown-job.c:262
+#, fuzzy, c-format
+msgid "Failed to change file group of `%s': %s"
+msgstr "Andere Anwendung..."
+
+#: ../thunar-vfs/thunar-vfs-info.c:261
 msgid "No Exec field specified"
 msgstr ""
 
-#: ../thunar-vfs/thunar-vfs-info.c:370
+#: ../thunar-vfs/thunar-vfs-info.c:269
 msgid "Unable to parse file"
 msgstr ""
 
-#: ../thunar-vfs/thunar-vfs-info.c:460
+#: ../thunar-vfs/thunar-vfs-info.c:359
 msgid "Invalid file name"
 msgstr ""
 
-#: ../thunar-vfs/thunar-vfs-info.c:482
+#: ../thunar-vfs/thunar-vfs-info.c:381
 msgid "Invalid desktop file"
 msgstr ""
 
-#: ../thunar-vfs/thunar-vfs-info.c:716
+#: ../thunar-vfs/thunar-vfs-info.c:615
 #, c-format
 msgid "Failed to stat file `%s': %s"
 msgstr ""
@@ -52,17 +93,6 @@ msgstr ""
 msgid "Failed to remove `%s': %s"
 msgstr ""
 
-#. ask the user whether to skip this file (used for cancellation only)
-#. ask the user whether to skip
-#: ../thunar-vfs/thunar-vfs-link-job.c:212
-#: ../thunar-vfs/thunar-vfs-transfer-job.c:747
-#, c-format
-msgid ""
-"%s.\n"
-"\n"
-"Do you want to skip it?"
-msgstr ""
-
 #: ../thunar-vfs/thunar-vfs-mime-database.c:1657
 #, c-format
 msgid "Failed to load application from file %s"
@@ -94,10 +124,6 @@ msgstr "Größe"
 msgid "The desired thumbnail size"
 msgstr ""
 
-#: ../thunar-vfs/thunar-vfs-transfer-job.c:267
-msgid "Collecting files..."
-msgstr ""
-
 #. display info message
 #: ../thunar-vfs/thunar-vfs-transfer-job.c:329
 #, fuzzy
@@ -138,7 +164,7 @@ msgid "copy of %s"
 msgstr ""
 
 #: ../thunar-vfs/thunar-vfs-xfer.c:158 ../thunar/thunar-list-model.c:703
-#: ../thunar/thunar-properties-dialog.c:643
+#: ../thunar/thunar-properties-dialog.c:631
 #, c-format
 msgid "link to %s"
 msgstr ""
@@ -254,58 +280,6 @@ msgstr ""
 msgid "Thunar"
 msgstr "Thunar"
 
-#: ../thunar/thunar-advanced-permissions-dialog.c:159
-#, fuzzy
-msgid "Advanced Permissions"
-msgstr "Berechtigungen"
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:167
-msgid "Special Bits"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:180
-msgid "Set _User ID (SUID)"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:190
-msgid ""
-"An executable file whose Set User ID (SUID) bit is\n"
-"set will always be executed with the privileges of\n"
-"the owner of the executable."
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:211
-msgid "Set _Group ID (SGID)"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:221
-msgid ""
-"An executable file whose Set Group ID (SGID) bit is\n"
-"set will always be executed with the privileges of the\n"
-"group of the executable."
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:242
-msgid "_Sticky"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:252
-msgid ""
-"A file in a sticky directory may only be removed or\n"
-"renamed by a user if the user has write permission\n"
-"for the directory and the user is the owner of the\n"
-"file, the owner of the directory or the superuser."
-msgstr ""
-
-#. display an error message to the user
-#. display an error to the user (when we get here, we definitely have a valid file!)
-#: ../thunar/thunar-advanced-permissions-dialog.c:356
-#: ../thunar/thunar-permissions-model.c:830
-#: ../thunar/thunar-permissions-view.c:494
-#, fuzzy, c-format
-msgid "Failed to change permissions of `%s'"
-msgstr "Andere Anwendung..."
-
 #. display an error message to the user
 #: ../thunar/thunar-application.c:222
 msgid "Failed to launch operation"
@@ -331,25 +305,11 @@ msgstr ""
 msgid "Creating directories..."
 msgstr ""
 
-#: ../thunar/thunar-change-group-dialog.c:193
-msgid "Change Group"
-msgstr ""
-
-#: ../thunar/thunar-change-group-dialog.c:200
-msgid "_Group:"
-msgstr ""
-
-#. display an error message
-#: ../thunar/thunar-change-group-dialog.c:309
-#, c-format
-msgid "Failed to change the group to which `%s' belongs"
-msgstr ""
-
 #: ../thunar/thunar-chooser-dialog.c:169 ../thunar/thunar-emblem-chooser.c:147
 #: ../thunar/thunar-emblem-chooser.c:148 ../thunar/thunar-icon-renderer.c:161
 #: ../thunar/thunar-open-with-action.c:146
 #: ../thunar/thunar-open-with-action.c:147
-#: ../thunar/thunar-properties-dialog.c:172 ../thunar/thunar-statusbar.c:190
+#: ../thunar/thunar-properties-dialog.c:173 ../thunar/thunar-statusbar.c:190
 msgid "File"
 msgstr ""
 
@@ -401,38 +361,38 @@ msgid "Failed to execute `%s'"
 msgstr ""
 
 #. update the header label
-#: ../thunar/thunar-chooser-dialog.c:612
+#: ../thunar/thunar-chooser-dialog.c:613
 #, c-format
 msgid "Open <i>%s</i> and other files of type \"%s\" with:"
 msgstr ""
 
-#: ../thunar/thunar-chooser-dialog.c:634 ../thunar-uca/thunar-uca-editor.c:491
+#: ../thunar/thunar-chooser-dialog.c:635 ../thunar-uca/thunar-uca-editor.c:491
 #, fuzzy
 msgid "Select an Application"
 msgstr "Andere Anwendung..."
 
-#: ../thunar/thunar-chooser-dialog.c:644 ../thunar-uca/thunar-uca-editor.c:501
+#: ../thunar/thunar-chooser-dialog.c:645 ../thunar-uca/thunar-uca-editor.c:501
 #: ../thunar-uca/thunar-uca-editor.c:640
 msgid "All Files"
 msgstr ""
 
-#: ../thunar/thunar-chooser-dialog.c:649 ../thunar-uca/thunar-uca-editor.c:506
+#: ../thunar/thunar-chooser-dialog.c:650 ../thunar-uca/thunar-uca-editor.c:506
 msgid "Executable Files"
 msgstr ""
 
-#: ../thunar/thunar-chooser-dialog.c:664 ../thunar-uca/thunar-uca-editor.c:521
+#: ../thunar/thunar-chooser-dialog.c:665 ../thunar-uca/thunar-uca-editor.c:521
 msgid "Perl Scripts"
 msgstr ""
 
-#: ../thunar/thunar-chooser-dialog.c:670 ../thunar-uca/thunar-uca-editor.c:527
+#: ../thunar/thunar-chooser-dialog.c:671 ../thunar-uca/thunar-uca-editor.c:527
 msgid "Python Scripts"
 msgstr ""
 
-#: ../thunar/thunar-chooser-dialog.c:676 ../thunar-uca/thunar-uca-editor.c:533
+#: ../thunar/thunar-chooser-dialog.c:677 ../thunar-uca/thunar-uca-editor.c:533
 msgid "Ruby Scripts"
 msgstr ""
 
-#: ../thunar/thunar-chooser-dialog.c:682 ../thunar-uca/thunar-uca-editor.c:539
+#: ../thunar/thunar-chooser-dialog.c:683 ../thunar-uca/thunar-uca-editor.c:539
 msgid "Shell Scripts"
 msgstr ""
 
@@ -503,7 +463,7 @@ msgstr "Name"
 #. Permissions chooser
 #.
 #: ../thunar/thunar-details-view.c:197
-#: ../thunar/thunar-properties-dialog.c:382
+#: ../thunar/thunar-properties-dialog.c:374
 msgid "Permissions"
 msgstr "Berechtigungen"
 
@@ -553,11 +513,11 @@ msgstr ""
 msgid "The root folder has no parent"
 msgstr ""
 
-#: ../thunar/thunar-file.c:1032
+#: ../thunar/thunar-file.c:967
 msgid "Filesystem"
 msgstr "Dateisystem"
 
-#: ../thunar/thunar-file.c:1056
+#: ../thunar/thunar-file.c:991
 msgid "Home"
 msgstr ""
 
@@ -614,7 +574,7 @@ msgid "The file whose icon to render"
 msgstr ""
 
 #: ../thunar/thunar-icon-renderer.c:177 ../thunar/thunar-icon-renderer.c:178
-#: ../thunar/thunar-text-renderer.c:202 ../thunar/thunar-text-renderer.c:203
+#: ../thunar/thunar-text-renderer.c:203 ../thunar/thunar-text-renderer.c:204
 msgid "Follow state"
 msgstr ""
 
@@ -785,7 +745,7 @@ msgstr ""
 msgid "Whether to display hidden files"
 msgstr ""
 
-#: ../thunar/thunar-list-model.c:701 ../thunar/thunar-properties-dialog.c:641
+#: ../thunar/thunar-list-model.c:701 ../thunar/thunar-properties-dialog.c:629
 msgid "broken link"
 msgstr ""
 
@@ -825,11 +785,11 @@ msgid_plural "%d items selected (%s)"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../thunar/thunar-location-buttons.c:258
+#: ../thunar/thunar-location-buttons.c:257
 msgid "Spacing"
 msgstr ""
 
-#: ../thunar/thunar-location-buttons.c:259
+#: ../thunar/thunar-location-buttons.c:258
 msgid "The amount of space between the path buttons"
 msgstr ""
 
@@ -871,254 +831,314 @@ msgstr ""
 msgid "The icon size for the path entry"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:440
-#, fuzzy, c-format
-msgid "%s (%s)"
-msgstr "%s (%u Byte)"
-
-#: ../thunar/thunar-permissions-model.c:447
-msgid "Unknown file owner"
+#. 0000
+#: ../thunar/thunar-permissions-chooser.c:234
+msgid "None"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:460
-msgid "Unknown file group"
+#. 0002
+#: ../thunar/thunar-permissions-chooser.c:236
+msgid "Write only"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:465
-msgid "All other users"
+#. 0004
+#: ../thunar/thunar-permissions-chooser.c:238
+msgid "Read only"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:474
-msgid "Read"
+#. 0006
+#: ../thunar/thunar-permissions-chooser.c:240
+msgid "Read & Write"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:478
-msgid "Write"
+#: ../thunar/thunar-permissions-chooser.c:252
+msgid "Owner:"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:482
-msgid "List folder contents"
+#: ../thunar/thunar-permissions-chooser.c:266
+msgid "Unknown"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:482
-msgid "Execute"
+#: ../thunar/thunar-permissions-chooser.c:280
+#: ../thunar/thunar-permissions-chooser.c:335
+msgid "Access:"
 msgstr ""
 
-#. actions for the group item
-#: ../thunar/thunar-permissions-model.c:884
-msgid "Change _Group..."
+#: ../thunar/thunar-permissions-chooser.c:309
+msgid "Group:"
 msgstr ""
 
-#. append the "Grant Permission" action
-#: ../thunar/thunar-permissions-model.c:897
+#: ../thunar/thunar-permissions-chooser.c:364
 #, fuzzy
-msgid "_Grant Permission"
-msgstr "Berechtigungen"
+msgid "Others:"
+msgstr "A_ndere Dateien"
 
-#. append the "Deny Permission" action
-#: ../thunar/thunar-permissions-model.c:906
-#, fuzzy
-msgid "_Deny Permission"
-msgstr "Berechtigungen"
+#: ../thunar/thunar-permissions-chooser.c:393
+msgid "Program:"
+msgstr ""
 
-#: ../thunar/thunar-permissions-view.c:213
+#: ../thunar/thunar-permissions-chooser.c:399
+msgid "Allow this file to _run as a program"
+msgstr ""
+
+#: ../thunar/thunar-permissions-chooser.c:423
 msgid ""
-"For special permissions and for\n"
-"advanced settings, click Advanced."
+"Allowing untrusted programs to run \n"
+"presents a security risk to your system."
 msgstr ""
 
-#: ../thunar/thunar-permissions-view.c:222
-msgid "_Advanced..."
+#: ../thunar/thunar-permissions-chooser.c:434
+msgid "Please wait..."
 msgstr ""
 
-#: ../thunar/thunar-permissions-view.c:223
-msgid "Click here for special permissions and for advanced settings."
+#. display an error to the user
+#: ../thunar/thunar-permissions-chooser.c:545
+#, fuzzy
+msgid "Failed to change group"
+msgstr "Andere Anwendung..."
+
+#. display an error to the user
+#: ../thunar/thunar-permissions-chooser.c:580
+#, fuzzy
+msgid "Failed to apply new permissions"
+msgstr "Andere Anwendung..."
+
+#. allocate the question dialog
+#: ../thunar/thunar-permissions-chooser.c:619
+#: ../thunar/thunar-permissions-chooser.c:961
+#: ../thunar/thunar-progress-dialog.c:295
+msgid "Question"
+msgstr "Frage"
+
+#: ../thunar/thunar-permissions-chooser.c:642
+msgid "Apply recursively?"
 msgstr ""
 
-#: ../thunar/thunar-permissions-view.c:243
+#: ../thunar/thunar-permissions-chooser.c:648
 msgid ""
-"You are not the owner of this file, so\n"
-"you cannot change these permissions."
+"Do you want to apply your changes recursively to\n"
+"all files and subfolder below the selected folder?"
+msgstr ""
+
+#: ../thunar/thunar-permissions-chooser.c:653
+msgid "Do _not ask me again"
+msgstr ""
+
+#: ../thunar/thunar-permissions-chooser.c:851
+msgid "Unknown file owner"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:184
+#: ../thunar/thunar-permissions-chooser.c:990
+#: ../thunar/thunar-progress-dialog.c:321
+msgid "_Yes"
+msgstr "_Ja"
+
+#: ../thunar/thunar-permissions-chooser.c:994
+#: ../thunar/thunar-progress-dialog.c:325
+msgid "Yes to _all"
+msgstr "Ja zu _allen"
+
+#: ../thunar/thunar-permissions-chooser.c:998
+#: ../thunar/thunar-progress-dialog.c:329
+msgid "_No"
+msgstr "_Nein"
+
+#: ../thunar/thunar-permissions-chooser.c:1002
+#: ../thunar/thunar-progress-dialog.c:333
+msgid "_Cancel"
+msgstr "_Abbrechen"
+
+#: ../thunar/thunar-preferences-dialog.c:186
 #, fuzzy
 msgid "File Manager Preferences"
 msgstr "Dateimanager"
 
-#: ../thunar/thunar-preferences-dialog.c:200
-msgid "<b>Default View</b>"
-msgstr ""
+#.
+#. Views
+#.
+#: ../thunar/thunar-preferences-dialog.c:203
+#, fuzzy
+msgid "Views"
+msgstr "_Anzeige"
+
+#: ../thunar/thunar-preferences-dialog.c:213
+#, fuzzy
+msgid "Default View"
+msgstr "Detailansicht"
 
-#: ../thunar/thunar-preferences-dialog.c:211
+#: ../thunar/thunar-preferences-dialog.c:225
 msgid "View _new folders using:"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:216
+#: ../thunar/thunar-preferences-dialog.c:230
+#: ../thunar/thunar-preferences-dialog.c:267
 msgid "Icon View"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:217
+#: ../thunar/thunar-preferences-dialog.c:231
 #, fuzzy
 msgid "Detailed List View"
 msgstr "Detailansicht"
 
-#: ../thunar/thunar-preferences-dialog.c:218
+#: ../thunar/thunar-preferences-dialog.c:232
 msgid "Last Active View"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:233
+#: ../thunar/thunar-preferences-dialog.c:249
 msgid "Sort _folders before files"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:235
+#: ../thunar/thunar-preferences-dialog.c:251
 msgid "Select this option to list folders before files when you sort a folder."
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:239
+#: ../thunar/thunar-preferences-dialog.c:255
 msgid "Show hidden and _backup files"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:241
+#: ../thunar/thunar-preferences-dialog.c:257
 msgid ""
 "Select this option to show hidden and backup files in new windows. The first "
 "character in a hidden filename is a period (.). The last character in a "
 "backup filename is a tilde (~)."
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:251
-msgid "<b>Icon View</b>"
-msgstr ""
-
-#: ../thunar/thunar-preferences-dialog.c:262
+#: ../thunar/thunar-preferences-dialog.c:279
 msgid "_Text beside icons"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:264
+#: ../thunar/thunar-preferences-dialog.c:281
 msgid ""
 "Select this option to place the icon captions for items beside the icon "
 "rather than below the icon."
 msgstr ""
 
-#: ../thunar/thunar-preferences.c:255
+#.
+#. Advanced
+#.
+#: ../thunar/thunar-preferences-dialog.c:290
+msgid "Advanced"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:300
+msgid "Miscellaneous"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:312
+msgid "Apply permissions _recursively:"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:317
+msgid "Ask everytime"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:318
+msgid "Always"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:319
+msgid "Never"
+msgstr ""
+
+#: ../thunar/thunar-preferences.c:272
 #, c-format
 msgid "Failed to create the Thunar configuration directory in %s"
 msgstr ""
 
-#: ../thunar/thunar-preferences.c:263
+#: ../thunar/thunar-preferences.c:280
 #, c-format
 msgid "Failed to open preferences database in %s: %s"
 msgstr ""
 
-#: ../thunar/thunar-progress-dialog.c:150
+#: ../thunar/thunar-progress-dialog.c:151
 msgid "Job"
 msgstr ""
 
-#: ../thunar/thunar-progress-dialog.c:151
+#: ../thunar/thunar-progress-dialog.c:152
 msgid "The job whose progress to display"
 msgstr ""
 
-#: ../thunar/thunar-progress-dialog.c:303
-msgid "Question"
-msgstr "Frage"
-
-#: ../thunar/thunar-progress-dialog.c:329
-msgid "_Yes"
-msgstr "_Ja"
-
-#: ../thunar/thunar-progress-dialog.c:333
-msgid "Yes to _all"
-msgstr "Ja zu _allen"
-
-#: ../thunar/thunar-progress-dialog.c:337
-msgid "_No"
-msgstr "_Nein"
-
-#: ../thunar/thunar-progress-dialog.c:341
-msgid "_Cancel"
-msgstr "_Abbrechen"
-
-#: ../thunar/thunar-progress-dialog.c:467
+#: ../thunar/thunar-progress-dialog.c:459
 #, c-format
 msgid "(%lu hour remaining)"
 msgid_plural "(%lu hours remaining)"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../thunar/thunar-progress-dialog.c:472
+#: ../thunar/thunar-progress-dialog.c:464
 #, c-format
 msgid "(%lu minute remaining)"
 msgid_plural "(%lu minutes remaining)"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../thunar/thunar-progress-dialog.c:477
+#: ../thunar/thunar-progress-dialog.c:469
 #, c-format
 msgid "(%lu second remaining)"
 msgid_plural "(%lu seconds remaining)"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../thunar/thunar-properties-dialog.c:173
+#: ../thunar/thunar-properties-dialog.c:174
 msgid "The file displayed by the dialog"
 msgstr ""
 
-#: ../thunar/thunar-properties-dialog.c:220
+#: ../thunar/thunar-properties-dialog.c:212
 msgid "General"
 msgstr "Allgemein"
 
-#: ../thunar/thunar-properties-dialog.c:237
+#: ../thunar/thunar-properties-dialog.c:229
 msgid "Name:"
 msgstr "Name:"
 
 #.
 #. Second box (kind)
 #.
-#: ../thunar/thunar-properties-dialog.c:262
+#: ../thunar/thunar-properties-dialog.c:254
 msgid "Kind:"
 msgstr ""
 
 #.
 #. Third box (modified, accessed)
 #.
-#: ../thunar/thunar-properties-dialog.c:287
+#: ../thunar/thunar-properties-dialog.c:279
 msgid "Modified:"
 msgstr ""
 
-#: ../thunar/thunar-properties-dialog.c:300
+#: ../thunar/thunar-properties-dialog.c:292
 msgid "Accessed:"
 msgstr ""
 
 #.
 #. Fourth box (volume, size)
 #.
-#: ../thunar/thunar-properties-dialog.c:324
+#: ../thunar/thunar-properties-dialog.c:316
 msgid "Volume:"
 msgstr ""
 
-#: ../thunar/thunar-properties-dialog.c:347
+#: ../thunar/thunar-properties-dialog.c:339
 msgid "Size:"
 msgstr "Größe:"
 
 #.
 #. Emblem chooser
 #.
-#: ../thunar/thunar-properties-dialog.c:371
+#: ../thunar/thunar-properties-dialog.c:363
 msgid "Emblems"
 msgstr ""
 
-#: ../thunar/thunar-properties-dialog.c:618
+#: ../thunar/thunar-properties-dialog.c:606
 #, c-format
 msgid "%s Info"
 msgstr ""
 
-#: ../thunar/thunar-properties-dialog.c:699
+#: ../thunar/thunar-properties-dialog.c:687
 #, c-format
 msgid "%s (%u Bytes)"
 msgstr "%s (%u Byte)"
 
 #. display an error message
-#: ../thunar/thunar-properties-dialog.c:745
+#: ../thunar/thunar-properties-dialog.c:733
 #: ../thunar/thunar-standard-view.c:2170
 #, c-format
 msgid "Failed to rename `%s'"
@@ -1344,27 +1364,27 @@ msgstr ""
 msgid "The main text to be displayed in the statusbar"
 msgstr ""
 
-#: ../thunar/thunar-text-renderer.c:215
+#: ../thunar/thunar-text-renderer.c:216
 msgid "Text"
 msgstr ""
 
-#: ../thunar/thunar-text-renderer.c:216
+#: ../thunar/thunar-text-renderer.c:217
 msgid "The text to render"
 msgstr ""
 
-#: ../thunar/thunar-text-renderer.c:230
+#: ../thunar/thunar-text-renderer.c:231
 msgid "Wrap mode"
 msgstr ""
 
-#: ../thunar/thunar-text-renderer.c:231
+#: ../thunar/thunar-text-renderer.c:232
 msgid "The wrap mode"
 msgstr ""
 
-#: ../thunar/thunar-text-renderer.c:246
+#: ../thunar/thunar-text-renderer.c:247
 msgid "Wrap width"
 msgstr ""
 
-#: ../thunar/thunar-text-renderer.c:247
+#: ../thunar/thunar-text-renderer.c:248
 msgid "The wrap width"
 msgstr ""
 
@@ -1838,3 +1858,19 @@ msgstr "Dateimanager"
 #: ../Thunar.desktop.in.h:3
 msgid "Thunar File Manager"
 msgstr "Thunar Dateimanager"
+
+#, fuzzy
+#~ msgid "Advanced Permissions"
+#~ msgstr "Berechtigungen"
+
+#, fuzzy
+#~ msgid "%s (%s)"
+#~ msgstr "%s (%u Byte)"
+
+#, fuzzy
+#~ msgid "_Grant Permission"
+#~ msgstr "Berechtigungen"
+
+#, fuzzy
+#~ msgid "_Deny Permission"
+#~ msgstr "Berechtigungen"
diff --git a/po/el.po b/po/el.po
index fae18e108f120ee7914a76c54567bd6328528888..46ba6810b6266bd85ffa60238d5bb8be0b0cd1d0 100644
--- a/po/el.po
+++ b/po/el.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Thunar 0.1.4svn\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-01-04 18:34+0100\n"
+"POT-Creation-Date: 2006-01-08 22:45+0100\n"
 "PO-Revision-Date: 2005-12-04 23:18+0900\n"
 "Last-Translator: Stavros Giannouris <stavrosg2002@freemail.gr>\n"
 "Language-Team: Greek <nls@tux.hellug.gr>\n"
@@ -18,23 +18,67 @@ msgstr ""
 "X-Poedit-Country: GREECE\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: ../thunar-vfs/thunar-vfs-info.c:362
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:168
+#: ../thunar-vfs/thunar-vfs-chown-job.c:166
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:267
+msgid "Collecting files..."
+msgstr "Συλλογή αρχείων..."
+
+#. ask the user whether we should skip the file
+#. ask the user whether to skip this file (used for cancellation only)
+#. ask the user whether to skip
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:189
+#: ../thunar-vfs/thunar-vfs-chown-job.c:187
+#: ../thunar-vfs/thunar-vfs-link-job.c:212
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:747
+#, c-format
+msgid ""
+"%s.\n"
+"\n"
+"Do you want to skip it?"
+msgstr ""
+"%s.\n"
+"\n"
+"Θέλετε να το προσπεράσετε;"
+
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:246
+#: ../thunar-vfs/thunar-vfs-chown-job.c:244
+#, fuzzy, c-format
+msgid "Failed to determine file info of `%s': %s"
+msgstr "Ο προσδιορισμός των πληροφοριών αρχείου για το `%s' απέτυχε"
+
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:272
+#, fuzzy, c-format
+msgid "Failed to change permissions of `%s': %s"
+msgstr "Η προσθήκη της εφαρμογής `%s' απέτυχε."
+
+#: ../thunar-vfs/thunar-vfs-chown-job.c:260
+#, fuzzy, c-format
+msgid "Failed to change file owner of `%s': %s"
+msgstr "Η προσθήκη της εφαρμογής `%s' απέτυχε."
+
+#: ../thunar-vfs/thunar-vfs-chown-job.c:262
+#, fuzzy, c-format
+msgid "Failed to change file group of `%s': %s"
+msgstr "Η προσθήκη της εφαρμογής `%s' απέτυχε."
+
+#: ../thunar-vfs/thunar-vfs-info.c:261
 msgid "No Exec field specified"
 msgstr "Δεν έχει οριστεί το πεδίο Exec"
 
-#: ../thunar-vfs/thunar-vfs-info.c:370
+#: ../thunar-vfs/thunar-vfs-info.c:269
 msgid "Unable to parse file"
 msgstr "Δεν ήταν δυνατή η ανάγνωση του αρχείου"
 
-#: ../thunar-vfs/thunar-vfs-info.c:460
+#: ../thunar-vfs/thunar-vfs-info.c:359
 msgid "Invalid file name"
 msgstr "Μη έγκυρο όνομα αρχείου"
 
-#: ../thunar-vfs/thunar-vfs-info.c:482
+#: ../thunar-vfs/thunar-vfs-info.c:381
 msgid "Invalid desktop file"
 msgstr "Μη έγκυρο αρχείο συντόμευσης"
 
-#: ../thunar-vfs/thunar-vfs-info.c:716
+#: ../thunar-vfs/thunar-vfs-info.c:615
 #, c-format
 msgid "Failed to stat file `%s': %s"
 msgstr ""
@@ -58,20 +102,6 @@ msgstr ""
 msgid "Failed to remove `%s': %s"
 msgstr "Η διαγραφή του `%s' απέτυχε: %s"
 
-#. ask the user whether to skip this file (used for cancellation only)
-#. ask the user whether to skip
-#: ../thunar-vfs/thunar-vfs-link-job.c:212
-#: ../thunar-vfs/thunar-vfs-transfer-job.c:747
-#, c-format
-msgid ""
-"%s.\n"
-"\n"
-"Do you want to skip it?"
-msgstr ""
-"%s.\n"
-"\n"
-"Θέλετε να το προσπεράσετε;"
-
 #: ../thunar-vfs/thunar-vfs-mime-database.c:1657
 #, c-format
 msgid "Failed to load application from file %s"
@@ -103,10 +133,6 @@ msgstr "Μέγεθος"
 msgid "The desired thumbnail size"
 msgstr "Το επιθυμητό μέγεθος μικρογραφιών"
 
-#: ../thunar-vfs/thunar-vfs-transfer-job.c:267
-msgid "Collecting files..."
-msgstr "Συλλογή αρχείων..."
-
 #. display info message
 #: ../thunar-vfs/thunar-vfs-transfer-job.c:329
 msgid "Deleting directories..."
@@ -149,7 +175,7 @@ msgid "copy of %s"
 msgstr "αντίγραφο του %s"
 
 #: ../thunar-vfs/thunar-vfs-xfer.c:158 ../thunar/thunar-list-model.c:703
-#: ../thunar/thunar-properties-dialog.c:643
+#: ../thunar/thunar-properties-dialog.c:631
 #, c-format
 msgid "link to %s"
 msgstr "δεσμός προς το %s"
@@ -265,58 +291,6 @@ msgstr "Δεν είναι δυνατή η δημιουργία συμβολικ
 msgid "Thunar"
 msgstr "Thunar"
 
-#: ../thunar/thunar-advanced-permissions-dialog.c:159
-#, fuzzy
-msgid "Advanced Permissions"
-msgstr "Δικαιώματα"
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:167
-msgid "Special Bits"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:180
-msgid "Set _User ID (SUID)"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:190
-msgid ""
-"An executable file whose Set User ID (SUID) bit is\n"
-"set will always be executed with the privileges of\n"
-"the owner of the executable."
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:211
-msgid "Set _Group ID (SGID)"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:221
-msgid ""
-"An executable file whose Set Group ID (SGID) bit is\n"
-"set will always be executed with the privileges of the\n"
-"group of the executable."
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:242
-msgid "_Sticky"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:252
-msgid ""
-"A file in a sticky directory may only be removed or\n"
-"renamed by a user if the user has write permission\n"
-"for the directory and the user is the owner of the\n"
-"file, the owner of the directory or the superuser."
-msgstr ""
-
-#. display an error message to the user
-#. display an error to the user (when we get here, we definitely have a valid file!)
-#: ../thunar/thunar-advanced-permissions-dialog.c:356
-#: ../thunar/thunar-permissions-model.c:830
-#: ../thunar/thunar-permissions-view.c:494
-#, fuzzy, c-format
-msgid "Failed to change permissions of `%s'"
-msgstr "Η προσθήκη της εφαρμογής `%s' απέτυχε."
-
 #. display an error message to the user
 #: ../thunar/thunar-application.c:222
 msgid "Failed to launch operation"
@@ -342,25 +316,11 @@ msgstr "Διαγραφή αρχείων..."
 msgid "Creating directories..."
 msgstr "Δημιουργία καταλόγων..."
 
-#: ../thunar/thunar-change-group-dialog.c:193
-msgid "Change Group"
-msgstr ""
-
-#: ../thunar/thunar-change-group-dialog.c:200
-msgid "_Group:"
-msgstr ""
-
-#. display an error message
-#: ../thunar/thunar-change-group-dialog.c:309
-#, c-format
-msgid "Failed to change the group to which `%s' belongs"
-msgstr ""
-
 #: ../thunar/thunar-chooser-dialog.c:169 ../thunar/thunar-emblem-chooser.c:147
 #: ../thunar/thunar-emblem-chooser.c:148 ../thunar/thunar-icon-renderer.c:161
 #: ../thunar/thunar-open-with-action.c:146
 #: ../thunar/thunar-open-with-action.c:147
-#: ../thunar/thunar-properties-dialog.c:172 ../thunar/thunar-statusbar.c:190
+#: ../thunar/thunar-properties-dialog.c:173 ../thunar/thunar-statusbar.c:190
 msgid "File"
 msgstr "Αρχείο"
 
@@ -410,37 +370,37 @@ msgid "Failed to execute `%s'"
 msgstr "Η εκτέλεση του `%s' απέτυχε"
 
 #. update the header label
-#: ../thunar/thunar-chooser-dialog.c:612
+#: ../thunar/thunar-chooser-dialog.c:613
 #, c-format
 msgid "Open <i>%s</i> and other files of type \"%s\" with:"
 msgstr "Άνοιγμα του <i>%s</i> και των άλλων αρχείων του τύπου \"%s\" με:"
 
-#: ../thunar/thunar-chooser-dialog.c:634 ../thunar-uca/thunar-uca-editor.c:491
+#: ../thunar/thunar-chooser-dialog.c:635 ../thunar-uca/thunar-uca-editor.c:491
 msgid "Select an Application"
 msgstr "Επιλογή Εφαρμογής"
 
-#: ../thunar/thunar-chooser-dialog.c:644 ../thunar-uca/thunar-uca-editor.c:501
+#: ../thunar/thunar-chooser-dialog.c:645 ../thunar-uca/thunar-uca-editor.c:501
 #: ../thunar-uca/thunar-uca-editor.c:640
 msgid "All Files"
 msgstr "Όλα τα Αρχεία"
 
-#: ../thunar/thunar-chooser-dialog.c:649 ../thunar-uca/thunar-uca-editor.c:506
+#: ../thunar/thunar-chooser-dialog.c:650 ../thunar-uca/thunar-uca-editor.c:506
 msgid "Executable Files"
 msgstr "Εκτελέσιμα Αρχεία"
 
-#: ../thunar/thunar-chooser-dialog.c:664 ../thunar-uca/thunar-uca-editor.c:521
+#: ../thunar/thunar-chooser-dialog.c:665 ../thunar-uca/thunar-uca-editor.c:521
 msgid "Perl Scripts"
 msgstr ""
 
-#: ../thunar/thunar-chooser-dialog.c:670 ../thunar-uca/thunar-uca-editor.c:527
+#: ../thunar/thunar-chooser-dialog.c:671 ../thunar-uca/thunar-uca-editor.c:527
 msgid "Python Scripts"
 msgstr ""
 
-#: ../thunar/thunar-chooser-dialog.c:676 ../thunar-uca/thunar-uca-editor.c:533
+#: ../thunar/thunar-chooser-dialog.c:677 ../thunar-uca/thunar-uca-editor.c:533
 msgid "Ruby Scripts"
 msgstr ""
 
-#: ../thunar/thunar-chooser-dialog.c:682 ../thunar-uca/thunar-uca-editor.c:539
+#: ../thunar/thunar-chooser-dialog.c:683 ../thunar-uca/thunar-uca-editor.c:539
 msgid "Shell Scripts"
 msgstr ""
 
@@ -509,7 +469,7 @@ msgstr "Όνομα"
 #. Permissions chooser
 #.
 #: ../thunar/thunar-details-view.c:197
-#: ../thunar/thunar-properties-dialog.c:382
+#: ../thunar/thunar-properties-dialog.c:374
 msgid "Permissions"
 msgstr "Δικαιώματα"
 
@@ -559,11 +519,11 @@ msgstr "Δεν ήταν δυνατή η εκτέλεση του αρχείου `
 msgid "The root folder has no parent"
 msgstr "Ο ριζικός φάκελος δεν έχει γονεϊκό φάκελο"
 
-#: ../thunar/thunar-file.c:1032
+#: ../thunar/thunar-file.c:967
 msgid "Filesystem"
 msgstr "Σύστημα αρχείων"
 
-#: ../thunar/thunar-file.c:1056
+#: ../thunar/thunar-file.c:991
 msgid "Home"
 msgstr "Αρχή"
 
@@ -620,7 +580,7 @@ msgid "The file whose icon to render"
 msgstr "Το αρχείο του οποίου το εικονίδιο να προβληθει"
 
 #: ../thunar/thunar-icon-renderer.c:177 ../thunar/thunar-icon-renderer.c:178
-#: ../thunar/thunar-text-renderer.c:202 ../thunar/thunar-text-renderer.c:203
+#: ../thunar/thunar-text-renderer.c:203 ../thunar/thunar-text-renderer.c:204
 msgid "Follow state"
 msgstr "Παρακολούθηση κατάστασης"
 
@@ -791,7 +751,7 @@ msgstr "Προβολή κρυφών"
 msgid "Whether to display hidden files"
 msgstr "Αν θα προβάλλονται τα κρυφά αρχεία"
 
-#: ../thunar/thunar-list-model.c:701 ../thunar/thunar-properties-dialog.c:641
+#: ../thunar/thunar-list-model.c:701 ../thunar/thunar-properties-dialog.c:629
 msgid "broken link"
 msgstr "σπασμένος δεσμός"
 
@@ -831,11 +791,11 @@ msgid_plural "%d items selected (%s)"
 msgstr[0] "%d επιλεγμένο αντικείμενο"
 msgstr[1] "%d επιλεγμένα αντικείμενα (%s)"
 
-#: ../thunar/thunar-location-buttons.c:258
+#: ../thunar/thunar-location-buttons.c:257
 msgid "Spacing"
 msgstr "Διάστιχο"
 
-#: ../thunar/thunar-location-buttons.c:259
+#: ../thunar/thunar-location-buttons.c:258
 msgid "The amount of space between the path buttons"
 msgstr "Το μέγεθος του διαστήματος μεταξύ κουμπιών διαδρομής"
 
@@ -877,256 +837,315 @@ msgstr "Το αρχείο που εμφανίζεται τώρα"
 msgid "The icon size for the path entry"
 msgstr "Μέγεθος εικονιδίου για τη διαδρομή"
 
-#: ../thunar/thunar-permissions-model.c:440
-#, fuzzy, c-format
-msgid "%s (%s)"
-msgstr "\"%s\" (%s) %s"
+#. 0000
+#: ../thunar/thunar-permissions-chooser.c:234
+msgid "None"
+msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:447
-msgid "Unknown file owner"
+#. 0002
+#: ../thunar/thunar-permissions-chooser.c:236
+msgid "Write only"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:460
-msgid "Unknown file group"
+#. 0004
+#: ../thunar/thunar-permissions-chooser.c:238
+msgid "Read only"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:465
-msgid "All other users"
+#. 0006
+#: ../thunar/thunar-permissions-chooser.c:240
+msgid "Read & Write"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:474
-msgid "Read"
+#: ../thunar/thunar-permissions-chooser.c:252
+msgid "Owner:"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:478
-msgid "Write"
+#: ../thunar/thunar-permissions-chooser.c:266
+msgid "Unknown"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:482
+#: ../thunar/thunar-permissions-chooser.c:280
+#: ../thunar/thunar-permissions-chooser.c:335
 #, fuzzy
-msgid "List folder contents"
-msgstr "Φόρτωμα περιεχομένων φακέλου..."
+msgid "Access:"
+msgstr "Προσπελάστηκε:"
 
-#: ../thunar/thunar-permissions-model.c:482
+#: ../thunar/thunar-permissions-chooser.c:309
+msgid "Group:"
+msgstr ""
+
+#: ../thunar/thunar-permissions-chooser.c:364
 #, fuzzy
-msgid "Execute"
-msgstr "_Εκτέλεση"
+msgid "Others:"
+msgstr "_Άλλα Αρχεία"
+
+#: ../thunar/thunar-permissions-chooser.c:393
+msgid "Program:"
+msgstr ""
 
-#. actions for the group item
-#: ../thunar/thunar-permissions-model.c:884
-msgid "Change _Group..."
+#: ../thunar/thunar-permissions-chooser.c:399
+msgid "Allow this file to _run as a program"
 msgstr ""
 
-#. append the "Grant Permission" action
-#: ../thunar/thunar-permissions-model.c:897
+#: ../thunar/thunar-permissions-chooser.c:423
+msgid ""
+"Allowing untrusted programs to run \n"
+"presents a security risk to your system."
+msgstr ""
+
+#: ../thunar/thunar-permissions-chooser.c:434
+msgid "Please wait..."
+msgstr ""
+
+#. display an error to the user
+#: ../thunar/thunar-permissions-chooser.c:545
 #, fuzzy
-msgid "_Grant Permission"
-msgstr "Δικαιώματα"
+msgid "Failed to change group"
+msgstr "Η προσθήκη νέας συντόμευσης απέτυχε"
 
-#. append the "Deny Permission" action
-#: ../thunar/thunar-permissions-model.c:906
+#. display an error to the user
+#: ../thunar/thunar-permissions-chooser.c:580
 #, fuzzy
-msgid "_Deny Permission"
-msgstr "Δικαιώματα"
+msgid "Failed to apply new permissions"
+msgstr "Η προσθήκη της εφαρμογής `%s' απέτυχε."
 
-#: ../thunar/thunar-permissions-view.c:213
-msgid ""
-"For special permissions and for\n"
-"advanced settings, click Advanced."
+#. allocate the question dialog
+#: ../thunar/thunar-permissions-chooser.c:619
+#: ../thunar/thunar-permissions-chooser.c:961
+#: ../thunar/thunar-progress-dialog.c:295
+msgid "Question"
+msgstr "Ερώτηση"
+
+#: ../thunar/thunar-permissions-chooser.c:642
+msgid "Apply recursively?"
 msgstr ""
 
-#: ../thunar/thunar-permissions-view.c:222
-msgid "_Advanced..."
+#: ../thunar/thunar-permissions-chooser.c:648
+msgid ""
+"Do you want to apply your changes recursively to\n"
+"all files and subfolder below the selected folder?"
 msgstr ""
 
-#: ../thunar/thunar-permissions-view.c:223
-msgid "Click here for special permissions and for advanced settings."
+#: ../thunar/thunar-permissions-chooser.c:653
+msgid "Do _not ask me again"
 msgstr ""
 
-#: ../thunar/thunar-permissions-view.c:243
-msgid ""
-"You are not the owner of this file, so\n"
-"you cannot change these permissions."
+#: ../thunar/thunar-permissions-chooser.c:851
+msgid "Unknown file owner"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:184
+#: ../thunar/thunar-permissions-chooser.c:990
+#: ../thunar/thunar-progress-dialog.c:321
+msgid "_Yes"
+msgstr "_Ναι"
+
+#: ../thunar/thunar-permissions-chooser.c:994
+#: ../thunar/thunar-progress-dialog.c:325
+msgid "Yes to _all"
+msgstr "Ναι σε ό_λα"
+
+#: ../thunar/thunar-permissions-chooser.c:998
+#: ../thunar/thunar-progress-dialog.c:329
+msgid "_No"
+msgstr "_Όχι"
+
+#: ../thunar/thunar-permissions-chooser.c:1002
+#: ../thunar/thunar-progress-dialog.c:333
+msgid "_Cancel"
+msgstr "_Ακύρωση"
+
+#: ../thunar/thunar-preferences-dialog.c:186
 msgid "File Manager Preferences"
 msgstr "Προτιμήσεις Διαχειριστή Αρχείων"
 
-#: ../thunar/thunar-preferences-dialog.c:200
-msgid "<b>Default View</b>"
+#.
+#. Views
+#.
+#: ../thunar/thunar-preferences-dialog.c:203
+#, fuzzy
+msgid "Views"
+msgstr "_Προβολή"
+
+#: ../thunar/thunar-preferences-dialog.c:213
+#, fuzzy
+msgid "Default View"
 msgstr "<b>Προκαθορισμένη Προβολή</b>"
 
-#: ../thunar/thunar-preferences-dialog.c:211
+#: ../thunar/thunar-preferences-dialog.c:225
 msgid "View _new folders using:"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:216
+#: ../thunar/thunar-preferences-dialog.c:230
+#: ../thunar/thunar-preferences-dialog.c:267
 msgid "Icon View"
 msgstr "Εικονίδια"
 
-#: ../thunar/thunar-preferences-dialog.c:217
+#: ../thunar/thunar-preferences-dialog.c:231
 msgid "Detailed List View"
 msgstr "Λεπτομέρειες"
 
-#: ../thunar/thunar-preferences-dialog.c:218
+#: ../thunar/thunar-preferences-dialog.c:232
 msgid "Last Active View"
 msgstr "Τελευταία Ενεργή Προβολή"
 
-#: ../thunar/thunar-preferences-dialog.c:233
+#: ../thunar/thunar-preferences-dialog.c:249
 msgid "Sort _folders before files"
 msgstr "Ταξινόμηση _φακέλων πριν τα αρχεία"
 
-#: ../thunar/thunar-preferences-dialog.c:235
+#: ../thunar/thunar-preferences-dialog.c:251
 msgid "Select this option to list folders before files when you sort a folder."
 msgstr ""
 "Επιλέξτε αυτό για να τοποθετούνται οι φάκελοι πριν από τα αρχεία κατά την "
 "ταξινόμηση ενός φακέλου."
 
-#: ../thunar/thunar-preferences-dialog.c:239
+#: ../thunar/thunar-preferences-dialog.c:255
 msgid "Show hidden and _backup files"
 msgstr "Εμφάνιση κρυφών αρχείων και _αντιγράφων ασφαλείας"
 
-#: ../thunar/thunar-preferences-dialog.c:241
+#: ../thunar/thunar-preferences-dialog.c:257
 msgid ""
 "Select this option to show hidden and backup files in new windows. The first "
 "character in a hidden filename is a period (.). The last character in a "
 "backup filename is a tilde (~)."
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:251
-msgid "<b>Icon View</b>"
-msgstr "<b>Εικονίδια</b>"
-
-#: ../thunar/thunar-preferences-dialog.c:262
+#: ../thunar/thunar-preferences-dialog.c:279
 msgid "_Text beside icons"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:264
+#: ../thunar/thunar-preferences-dialog.c:281
 msgid ""
 "Select this option to place the icon captions for items beside the icon "
 "rather than below the icon."
 msgstr ""
 
-#: ../thunar/thunar-preferences.c:255
+#.
+#. Advanced
+#.
+#: ../thunar/thunar-preferences-dialog.c:290
+msgid "Advanced"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:300
+msgid "Miscellaneous"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:312
+msgid "Apply permissions _recursively:"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:317
+msgid "Ask everytime"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:318
+msgid "Always"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:319
+msgid "Never"
+msgstr ""
+
+#: ../thunar/thunar-preferences.c:272
 #, c-format
 msgid "Failed to create the Thunar configuration directory in %s"
 msgstr "Η δημιουργία του καταλόγου ρυθμίσεων του Thunar στο %s απέτυχε"
 
-#: ../thunar/thunar-preferences.c:263
+#: ../thunar/thunar-preferences.c:280
 #, c-format
 msgid "Failed to open preferences database in %s: %s"
 msgstr "Το άνοιγμα των προτιμήσεων στο %s απέτυχε: %s"
 
-#: ../thunar/thunar-progress-dialog.c:150
+#: ../thunar/thunar-progress-dialog.c:151
 msgid "Job"
 msgstr "Εργασία"
 
-#: ../thunar/thunar-progress-dialog.c:151
+#: ../thunar/thunar-progress-dialog.c:152
 msgid "The job whose progress to display"
 msgstr "Ποιας εργασίας η πρόοδος θα παρουσιαστεί"
 
-#: ../thunar/thunar-progress-dialog.c:303
-msgid "Question"
-msgstr "Ερώτηση"
-
-#: ../thunar/thunar-progress-dialog.c:329
-msgid "_Yes"
-msgstr "_Ναι"
-
-#: ../thunar/thunar-progress-dialog.c:333
-msgid "Yes to _all"
-msgstr "Ναι σε ό_λα"
-
-#: ../thunar/thunar-progress-dialog.c:337
-msgid "_No"
-msgstr "_Όχι"
-
-#: ../thunar/thunar-progress-dialog.c:341
-msgid "_Cancel"
-msgstr "_Ακύρωση"
-
-#: ../thunar/thunar-progress-dialog.c:467
+#: ../thunar/thunar-progress-dialog.c:459
 #, c-format
 msgid "(%lu hour remaining)"
 msgid_plural "(%lu hours remaining)"
 msgstr[0] "(απομένει %lu ώρα)"
 msgstr[1] "(απομένουν %lu ώρες)"
 
-#: ../thunar/thunar-progress-dialog.c:472
+#: ../thunar/thunar-progress-dialog.c:464
 #, c-format
 msgid "(%lu minute remaining)"
 msgid_plural "(%lu minutes remaining)"
 msgstr[0] "(απομένει %lu λεπτό)"
 msgstr[1] "(απομένουν %lu λεπτά)"
 
-#: ../thunar/thunar-progress-dialog.c:477
+#: ../thunar/thunar-progress-dialog.c:469
 #, c-format
 msgid "(%lu second remaining)"
 msgid_plural "(%lu seconds remaining)"
 msgstr[0] "(απομένει %lu δευτερόλεπτο)"
 msgstr[1] "(απομένουν %lu δευτερόλεπτα)"
 
-#: ../thunar/thunar-properties-dialog.c:173
+#: ../thunar/thunar-properties-dialog.c:174
 msgid "The file displayed by the dialog"
 msgstr "Το αρχείο που απεικονίζεται από το διάλογο"
 
-#: ../thunar/thunar-properties-dialog.c:220
+#: ../thunar/thunar-properties-dialog.c:212
 msgid "General"
 msgstr "Γενικές"
 
-#: ../thunar/thunar-properties-dialog.c:237
+#: ../thunar/thunar-properties-dialog.c:229
 msgid "Name:"
 msgstr "Όνομα:"
 
 #.
 #. Second box (kind)
 #.
-#: ../thunar/thunar-properties-dialog.c:262
+#: ../thunar/thunar-properties-dialog.c:254
 msgid "Kind:"
 msgstr "Είδος:"
 
 #.
 #. Third box (modified, accessed)
 #.
-#: ../thunar/thunar-properties-dialog.c:287
+#: ../thunar/thunar-properties-dialog.c:279
 msgid "Modified:"
 msgstr "Τροποποιήθηκε:"
 
-#: ../thunar/thunar-properties-dialog.c:300
+#: ../thunar/thunar-properties-dialog.c:292
 msgid "Accessed:"
 msgstr "Προσπελάστηκε:"
 
 #.
 #. Fourth box (volume, size)
 #.
-#: ../thunar/thunar-properties-dialog.c:324
+#: ../thunar/thunar-properties-dialog.c:316
 msgid "Volume:"
 msgstr "Τόμος:"
 
-#: ../thunar/thunar-properties-dialog.c:347
+#: ../thunar/thunar-properties-dialog.c:339
 msgid "Size:"
 msgstr "Μέγεθος:"
 
 #.
 #. Emblem chooser
 #.
-#: ../thunar/thunar-properties-dialog.c:371
+#: ../thunar/thunar-properties-dialog.c:363
 msgid "Emblems"
 msgstr "Εμβλήματα"
 
-#: ../thunar/thunar-properties-dialog.c:618
+#: ../thunar/thunar-properties-dialog.c:606
 #, c-format
 msgid "%s Info"
 msgstr "%s Πληροφορίες"
 
-#: ../thunar/thunar-properties-dialog.c:699
+#: ../thunar/thunar-properties-dialog.c:687
 #, c-format
 msgid "%s (%u Bytes)"
 msgstr "%s (%u Bytes)"
 
 #. display an error message
-#: ../thunar/thunar-properties-dialog.c:745
+#: ../thunar/thunar-properties-dialog.c:733
 #: ../thunar/thunar-standard-view.c:2170
 #, c-format
 msgid "Failed to rename `%s'"
@@ -1355,27 +1374,27 @@ msgstr "Κείμενο μπάρας κατάστασης"
 msgid "The main text to be displayed in the statusbar"
 msgstr "Το κυρίως κείμενο που θα εμφανίζεται στη μπάρα κατάστασης"
 
-#: ../thunar/thunar-text-renderer.c:215
+#: ../thunar/thunar-text-renderer.c:216
 msgid "Text"
 msgstr "Κείμενο"
 
-#: ../thunar/thunar-text-renderer.c:216
+#: ../thunar/thunar-text-renderer.c:217
 msgid "The text to render"
 msgstr "Κείμενο προς εμφάνιση"
 
-#: ../thunar/thunar-text-renderer.c:230
+#: ../thunar/thunar-text-renderer.c:231
 msgid "Wrap mode"
 msgstr "Κατάσταση αναδίπλωσης"
 
-#: ../thunar/thunar-text-renderer.c:231
+#: ../thunar/thunar-text-renderer.c:232
 msgid "The wrap mode"
 msgstr "Η κατάσταση αναδίπλωσης"
 
-#: ../thunar/thunar-text-renderer.c:246
+#: ../thunar/thunar-text-renderer.c:247
 msgid "Wrap width"
 msgstr "Πλάτος αναδίπλωσης"
 
-#: ../thunar/thunar-text-renderer.c:247
+#: ../thunar/thunar-text-renderer.c:248
 msgid "The wrap width"
 msgstr "Το πλάτος αναδίπλωσης"
 
@@ -1848,3 +1867,30 @@ msgstr "Διαχειριστής Αρχείων"
 #: ../Thunar.desktop.in.h:3
 msgid "Thunar File Manager"
 msgstr "Διαχειριστής Αρχείων Thunar"
+
+#, fuzzy
+#~ msgid "Advanced Permissions"
+#~ msgstr "Δικαιώματα"
+
+#, fuzzy
+#~ msgid "%s (%s)"
+#~ msgstr "\"%s\" (%s) %s"
+
+#, fuzzy
+#~ msgid "List folder contents"
+#~ msgstr "Φόρτωμα περιεχομένων φακέλου..."
+
+#, fuzzy
+#~ msgid "Execute"
+#~ msgstr "_Εκτέλεση"
+
+#, fuzzy
+#~ msgid "_Grant Permission"
+#~ msgstr "Δικαιώματα"
+
+#, fuzzy
+#~ msgid "_Deny Permission"
+#~ msgstr "Δικαιώματα"
+
+#~ msgid "<b>Icon View</b>"
+#~ msgstr "<b>Εικονίδια</b>"
diff --git a/po/es.po b/po/es.po
index f0200d90b5f03d38f931ce9937462cd9e819f49f..35dd4aaa8075e37ea0fe985257c7cc4680f86eff 100644
--- a/po/es.po
+++ b/po/es.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Thunar 0.1.4svn\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-01-04 18:34+0100\n"
+"POT-Creation-Date: 2006-01-08 22:45+0100\n"
 "PO-Revision-Date: 2005-10-14 23:57+0900\n"
 "Last-Translator: Pablo Hernández-M. Saiz <homeless3d@gmail.com>\n"
 "Language-Team: Spanish <es@li.org>\n"
@@ -16,23 +16,67 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms:  nplurals=2; plural=(n != 1);\n"
 
-#: ../thunar-vfs/thunar-vfs-info.c:362
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:168
+#: ../thunar-vfs/thunar-vfs-chown-job.c:166
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:267
+msgid "Collecting files..."
+msgstr ""
+
+#. ask the user whether we should skip the file
+#. ask the user whether to skip this file (used for cancellation only)
+#. ask the user whether to skip
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:189
+#: ../thunar-vfs/thunar-vfs-chown-job.c:187
+#: ../thunar-vfs/thunar-vfs-link-job.c:212
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:747
+#, fuzzy, c-format
+msgid ""
+"%s.\n"
+"\n"
+"Do you want to skip it?"
+msgstr ""
+"\n"
+"\n"
+"¿Quiere dejarlo como está?"
+
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:246
+#: ../thunar-vfs/thunar-vfs-chown-job.c:244
+#, fuzzy, c-format
+msgid "Failed to determine file info of `%s': %s"
+msgstr "Imposible renombrar %s."
+
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:272
+#, fuzzy, c-format
+msgid "Failed to change permissions of `%s': %s"
+msgstr "Imposible renombrar %s."
+
+#: ../thunar-vfs/thunar-vfs-chown-job.c:260
+#, fuzzy, c-format
+msgid "Failed to change file owner of `%s': %s"
+msgstr "Imposible renombrar %s."
+
+#: ../thunar-vfs/thunar-vfs-chown-job.c:262
+#, fuzzy, c-format
+msgid "Failed to change file group of `%s': %s"
+msgstr "Imposible renombrar %s."
+
+#: ../thunar-vfs/thunar-vfs-info.c:261
 msgid "No Exec field specified"
 msgstr "Campo de ejecución no especificado"
 
-#: ../thunar-vfs/thunar-vfs-info.c:370
+#: ../thunar-vfs/thunar-vfs-info.c:269
 msgid "Unable to parse file"
 msgstr "Imposible interpretar archivo"
 
-#: ../thunar-vfs/thunar-vfs-info.c:460
+#: ../thunar-vfs/thunar-vfs-info.c:359
 msgid "Invalid file name"
 msgstr "Nombre de archivo inválido"
 
-#: ../thunar-vfs/thunar-vfs-info.c:482
+#: ../thunar-vfs/thunar-vfs-info.c:381
 msgid "Invalid desktop file"
 msgstr ""
 
-#: ../thunar-vfs/thunar-vfs-info.c:716
+#: ../thunar-vfs/thunar-vfs-info.c:615
 #, fuzzy, c-format
 msgid "Failed to stat file `%s': %s"
 msgstr "Imposible renombrar %s."
@@ -56,20 +100,6 @@ msgstr ""
 msgid "Failed to remove `%s': %s"
 msgstr "Imposible renombrar %s."
 
-#. ask the user whether to skip this file (used for cancellation only)
-#. ask the user whether to skip
-#: ../thunar-vfs/thunar-vfs-link-job.c:212
-#: ../thunar-vfs/thunar-vfs-transfer-job.c:747
-#, fuzzy, c-format
-msgid ""
-"%s.\n"
-"\n"
-"Do you want to skip it?"
-msgstr ""
-"\n"
-"\n"
-"¿Quiere dejarlo como está?"
-
 #: ../thunar-vfs/thunar-vfs-mime-database.c:1657
 #, c-format
 msgid "Failed to load application from file %s"
@@ -101,10 +131,6 @@ msgstr "Tamaño"
 msgid "The desired thumbnail size"
 msgstr ""
 
-#: ../thunar-vfs/thunar-vfs-transfer-job.c:267
-msgid "Collecting files..."
-msgstr ""
-
 #. display info message
 #: ../thunar-vfs/thunar-vfs-transfer-job.c:329
 #, fuzzy
@@ -148,7 +174,7 @@ msgid "copy of %s"
 msgstr ""
 
 #: ../thunar-vfs/thunar-vfs-xfer.c:158 ../thunar/thunar-list-model.c:703
-#: ../thunar/thunar-properties-dialog.c:643
+#: ../thunar/thunar-properties-dialog.c:631
 #, c-format
 msgid "link to %s"
 msgstr ""
@@ -264,58 +290,6 @@ msgstr "Imposible crear el enlace de %s."
 msgid "Thunar"
 msgstr "Thunar"
 
-#: ../thunar/thunar-advanced-permissions-dialog.c:159
-#, fuzzy
-msgid "Advanced Permissions"
-msgstr "Permisos"
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:167
-msgid "Special Bits"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:180
-msgid "Set _User ID (SUID)"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:190
-msgid ""
-"An executable file whose Set User ID (SUID) bit is\n"
-"set will always be executed with the privileges of\n"
-"the owner of the executable."
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:211
-msgid "Set _Group ID (SGID)"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:221
-msgid ""
-"An executable file whose Set Group ID (SGID) bit is\n"
-"set will always be executed with the privileges of the\n"
-"group of the executable."
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:242
-msgid "_Sticky"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:252
-msgid ""
-"A file in a sticky directory may only be removed or\n"
-"renamed by a user if the user has write permission\n"
-"for the directory and the user is the owner of the\n"
-"file, the owner of the directory or the superuser."
-msgstr ""
-
-#. display an error message to the user
-#. display an error to the user (when we get here, we definitely have a valid file!)
-#: ../thunar/thunar-advanced-permissions-dialog.c:356
-#: ../thunar/thunar-permissions-model.c:830
-#: ../thunar/thunar-permissions-view.c:494
-#, fuzzy, c-format
-msgid "Failed to change permissions of `%s'"
-msgstr "Imposible renombrar %s."
-
 #. display an error message to the user
 #: ../thunar/thunar-application.c:222
 #, fuzzy
@@ -343,25 +317,11 @@ msgstr "Borrando archivos..."
 msgid "Creating directories..."
 msgstr "Directorio actual"
 
-#: ../thunar/thunar-change-group-dialog.c:193
-msgid "Change Group"
-msgstr ""
-
-#: ../thunar/thunar-change-group-dialog.c:200
-msgid "_Group:"
-msgstr ""
-
-#. display an error message
-#: ../thunar/thunar-change-group-dialog.c:309
-#, fuzzy, c-format
-msgid "Failed to change the group to which `%s' belongs"
-msgstr "Imposible renombrar %s."
-
 #: ../thunar/thunar-chooser-dialog.c:169 ../thunar/thunar-emblem-chooser.c:147
 #: ../thunar/thunar-emblem-chooser.c:148 ../thunar/thunar-icon-renderer.c:161
 #: ../thunar/thunar-open-with-action.c:146
 #: ../thunar/thunar-open-with-action.c:147
-#: ../thunar/thunar-properties-dialog.c:172 ../thunar/thunar-statusbar.c:190
+#: ../thunar/thunar-properties-dialog.c:173 ../thunar/thunar-statusbar.c:190
 msgid "File"
 msgstr "Archivo"
 
@@ -412,40 +372,40 @@ msgid "Failed to execute `%s'"
 msgstr "Imposible renombrar %s."
 
 #. update the header label
-#: ../thunar/thunar-chooser-dialog.c:612
+#: ../thunar/thunar-chooser-dialog.c:613
 #, c-format
 msgid "Open <i>%s</i> and other files of type \"%s\" with:"
 msgstr ""
 
-#: ../thunar/thunar-chooser-dialog.c:634 ../thunar-uca/thunar-uca-editor.c:491
+#: ../thunar/thunar-chooser-dialog.c:635 ../thunar-uca/thunar-uca-editor.c:491
 #, fuzzy
 msgid "Select an Application"
 msgstr "Otra aplicación..."
 
-#: ../thunar/thunar-chooser-dialog.c:644 ../thunar-uca/thunar-uca-editor.c:501
+#: ../thunar/thunar-chooser-dialog.c:645 ../thunar-uca/thunar-uca-editor.c:501
 #: ../thunar-uca/thunar-uca-editor.c:640
 #, fuzzy
 msgid "All Files"
 msgstr "Archivos"
 
-#: ../thunar/thunar-chooser-dialog.c:649 ../thunar-uca/thunar-uca-editor.c:506
+#: ../thunar/thunar-chooser-dialog.c:650 ../thunar-uca/thunar-uca-editor.c:506
 #, fuzzy
 msgid "Executable Files"
 msgstr "Seleccionar _todos los archivos"
 
-#: ../thunar/thunar-chooser-dialog.c:664 ../thunar-uca/thunar-uca-editor.c:521
+#: ../thunar/thunar-chooser-dialog.c:665 ../thunar-uca/thunar-uca-editor.c:521
 msgid "Perl Scripts"
 msgstr ""
 
-#: ../thunar/thunar-chooser-dialog.c:670 ../thunar-uca/thunar-uca-editor.c:527
+#: ../thunar/thunar-chooser-dialog.c:671 ../thunar-uca/thunar-uca-editor.c:527
 msgid "Python Scripts"
 msgstr ""
 
-#: ../thunar/thunar-chooser-dialog.c:676 ../thunar-uca/thunar-uca-editor.c:533
+#: ../thunar/thunar-chooser-dialog.c:677 ../thunar-uca/thunar-uca-editor.c:533
 msgid "Ruby Scripts"
 msgstr ""
 
-#: ../thunar/thunar-chooser-dialog.c:682 ../thunar-uca/thunar-uca-editor.c:539
+#: ../thunar/thunar-chooser-dialog.c:683 ../thunar-uca/thunar-uca-editor.c:539
 msgid "Shell Scripts"
 msgstr ""
 
@@ -516,7 +476,7 @@ msgstr "Nombre"
 #. Permissions chooser
 #.
 #: ../thunar/thunar-details-view.c:197
-#: ../thunar/thunar-properties-dialog.c:382
+#: ../thunar/thunar-properties-dialog.c:374
 msgid "Permissions"
 msgstr "Permisos"
 
@@ -567,12 +527,12 @@ msgstr "No se puede ejecutar el archivo \"%s\"."
 msgid "The root folder has no parent"
 msgstr ""
 
-#: ../thunar/thunar-file.c:1032
+#: ../thunar/thunar-file.c:967
 msgid "Filesystem"
 msgstr "Raíz"
 
 # msgstr "Sistema de archivos"
-#: ../thunar/thunar-file.c:1056
+#: ../thunar/thunar-file.c:991
 msgid "Home"
 msgstr "Casa"
 
@@ -629,7 +589,7 @@ msgid "The file whose icon to render"
 msgstr ""
 
 #: ../thunar/thunar-icon-renderer.c:177 ../thunar/thunar-icon-renderer.c:178
-#: ../thunar/thunar-text-renderer.c:202 ../thunar/thunar-text-renderer.c:203
+#: ../thunar/thunar-text-renderer.c:203 ../thunar/thunar-text-renderer.c:204
 msgid "Follow state"
 msgstr ""
 
@@ -801,7 +761,7 @@ msgstr "Mostrar ocultos"
 msgid "Whether to display hidden files"
 msgstr ""
 
-#: ../thunar/thunar-list-model.c:701 ../thunar/thunar-properties-dialog.c:641
+#: ../thunar/thunar-list-model.c:701 ../thunar/thunar-properties-dialog.c:629
 msgid "broken link"
 msgstr ""
 
@@ -841,11 +801,11 @@ msgid_plural "%d items selected (%s)"
 msgstr[0] "%d elemento seleccionado"
 msgstr[1] "%d elementos seleccionados (%s)"
 
-#: ../thunar/thunar-location-buttons.c:258
+#: ../thunar/thunar-location-buttons.c:257
 msgid "Spacing"
 msgstr "Espaciado"
 
-#: ../thunar/thunar-location-buttons.c:259
+#: ../thunar/thunar-location-buttons.c:258
 msgid "The amount of space between the path buttons"
 msgstr "Espacio entre los botones del path"
 
@@ -887,259 +847,317 @@ msgstr ""
 msgid "The icon size for the path entry"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:440
-#, fuzzy, c-format
-msgid "%s (%s)"
-msgstr "\"%s\" (%s) %s"
+#. 0000
+#: ../thunar/thunar-permissions-chooser.c:234
+msgid "None"
+msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:447
-msgid "Unknown file owner"
+#. 0002
+#: ../thunar/thunar-permissions-chooser.c:236
+msgid "Write only"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:460
-msgid "Unknown file group"
+#. 0004
+#: ../thunar/thunar-permissions-chooser.c:238
+msgid "Read only"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:465
-msgid "All other users"
+#. 0006
+#: ../thunar/thunar-permissions-chooser.c:240
+msgid "Read & Write"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:474
-msgid "Read"
+#: ../thunar/thunar-permissions-chooser.c:252
+msgid "Owner:"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:478
-msgid "Write"
+#: ../thunar/thunar-permissions-chooser.c:266
+msgid "Unknown"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:482
+#: ../thunar/thunar-permissions-chooser.c:280
+#: ../thunar/thunar-permissions-chooser.c:335
 #, fuzzy
-msgid "List folder contents"
-msgstr "Cargando el contenido de la carpeta..."
+msgid "Access:"
+msgstr "Accedido:"
 
-#: ../thunar/thunar-permissions-model.c:482
+#: ../thunar/thunar-permissions-chooser.c:309
+msgid "Group:"
+msgstr ""
+
+#: ../thunar/thunar-permissions-chooser.c:364
 #, fuzzy
-msgid "Execute"
-msgstr "Ejecutar"
+msgid "Others:"
+msgstr "_Pegar archivos"
+
+#: ../thunar/thunar-permissions-chooser.c:393
+msgid "Program:"
+msgstr ""
+
+#: ../thunar/thunar-permissions-chooser.c:399
+msgid "Allow this file to _run as a program"
+msgstr ""
+
+#: ../thunar/thunar-permissions-chooser.c:423
+msgid ""
+"Allowing untrusted programs to run \n"
+"presents a security risk to your system."
+msgstr ""
 
-#. actions for the group item
-#: ../thunar/thunar-permissions-model.c:884
-msgid "Change _Group..."
+#: ../thunar/thunar-permissions-chooser.c:434
+msgid "Please wait..."
 msgstr ""
 
-#. append the "Grant Permission" action
-#: ../thunar/thunar-permissions-model.c:897
+#. display an error to the user
+#: ../thunar/thunar-permissions-chooser.c:545
 #, fuzzy
-msgid "_Grant Permission"
-msgstr "Permisos"
+msgid "Failed to change group"
+msgstr "Imposible renombrar %s."
 
-#. append the "Deny Permission" action
-#: ../thunar/thunar-permissions-model.c:906
+#. display an error to the user
+#: ../thunar/thunar-permissions-chooser.c:580
 #, fuzzy
-msgid "_Deny Permission"
-msgstr "Permisos"
+msgid "Failed to apply new permissions"
+msgstr "Imposible renombrar %s."
 
-#: ../thunar/thunar-permissions-view.c:213
-msgid ""
-"For special permissions and for\n"
-"advanced settings, click Advanced."
+#. allocate the question dialog
+#: ../thunar/thunar-permissions-chooser.c:619
+#: ../thunar/thunar-permissions-chooser.c:961
+#: ../thunar/thunar-progress-dialog.c:295
+msgid "Question"
 msgstr ""
 
-#: ../thunar/thunar-permissions-view.c:222
-msgid "_Advanced..."
+#: ../thunar/thunar-permissions-chooser.c:642
+msgid "Apply recursively?"
 msgstr ""
 
-#: ../thunar/thunar-permissions-view.c:223
-msgid "Click here for special permissions and for advanced settings."
+#: ../thunar/thunar-permissions-chooser.c:648
+msgid ""
+"Do you want to apply your changes recursively to\n"
+"all files and subfolder below the selected folder?"
 msgstr ""
 
-#: ../thunar/thunar-permissions-view.c:243
-msgid ""
-"You are not the owner of this file, so\n"
-"you cannot change these permissions."
+#: ../thunar/thunar-permissions-chooser.c:653
+msgid "Do _not ask me again"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:184
+#: ../thunar/thunar-permissions-chooser.c:851
+msgid "Unknown file owner"
+msgstr ""
+
+#: ../thunar/thunar-permissions-chooser.c:990
+#: ../thunar/thunar-progress-dialog.c:321
+msgid "_Yes"
+msgstr "_Si"
+
+#: ../thunar/thunar-permissions-chooser.c:994
+#: ../thunar/thunar-progress-dialog.c:325
+msgid "Yes to _all"
+msgstr "Si a_todo"
+
+#: ../thunar/thunar-permissions-chooser.c:998
+#: ../thunar/thunar-progress-dialog.c:329
+msgid "_No"
+msgstr "_No"
+
+#: ../thunar/thunar-permissions-chooser.c:1002
+#: ../thunar/thunar-progress-dialog.c:333
+msgid "_Cancel"
+msgstr "_Cancelar"
+
+#: ../thunar/thunar-preferences-dialog.c:186
 #, fuzzy
 msgid "File Manager Preferences"
 msgstr "Gestor de archivos"
 
-#: ../thunar/thunar-preferences-dialog.c:200
-msgid "<b>Default View</b>"
-msgstr ""
+#.
+#. Views
+#.
+#: ../thunar/thunar-preferences-dialog.c:203
+#, fuzzy
+msgid "Views"
+msgstr "_Ver"
+
+#: ../thunar/thunar-preferences-dialog.c:213
+#, fuzzy
+msgid "Default View"
+msgstr "Vista detallada"
 
-#: ../thunar/thunar-preferences-dialog.c:211
+#: ../thunar/thunar-preferences-dialog.c:225
 msgid "View _new folders using:"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:216
+#: ../thunar/thunar-preferences-dialog.c:230
+#: ../thunar/thunar-preferences-dialog.c:267
 #, fuzzy
 msgid "Icon View"
 msgstr "Vista de iconos"
 
-#: ../thunar/thunar-preferences-dialog.c:217
+#: ../thunar/thunar-preferences-dialog.c:231
 #, fuzzy
 msgid "Detailed List View"
 msgstr "Vista detallada"
 
-#: ../thunar/thunar-preferences-dialog.c:218
+#: ../thunar/thunar-preferences-dialog.c:232
 msgid "Last Active View"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:233
+#: ../thunar/thunar-preferences-dialog.c:249
 msgid "Sort _folders before files"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:235
+#: ../thunar/thunar-preferences-dialog.c:251
 msgid "Select this option to list folders before files when you sort a folder."
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:239
+#: ../thunar/thunar-preferences-dialog.c:255
 #, fuzzy
 msgid "Show hidden and _backup files"
 msgstr "Mostrar los archivos _ocultos"
 
-#: ../thunar/thunar-preferences-dialog.c:241
+#: ../thunar/thunar-preferences-dialog.c:257
 msgid ""
 "Select this option to show hidden and backup files in new windows. The first "
 "character in a hidden filename is a period (.). The last character in a "
 "backup filename is a tilde (~)."
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:251
-#, fuzzy
-msgid "<b>Icon View</b>"
-msgstr "Vista de iconos"
-
-#: ../thunar/thunar-preferences-dialog.c:262
+#: ../thunar/thunar-preferences-dialog.c:279
 msgid "_Text beside icons"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:264
+#: ../thunar/thunar-preferences-dialog.c:281
 msgid ""
 "Select this option to place the icon captions for items beside the icon "
 "rather than below the icon."
 msgstr ""
 
-#: ../thunar/thunar-preferences.c:255
+#.
+#. Advanced
+#.
+#: ../thunar/thunar-preferences-dialog.c:290
+msgid "Advanced"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:300
+msgid "Miscellaneous"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:312
+msgid "Apply permissions _recursively:"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:317
+msgid "Ask everytime"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:318
+msgid "Always"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:319
+msgid "Never"
+msgstr ""
+
+#: ../thunar/thunar-preferences.c:272
 #, fuzzy, c-format
 msgid "Failed to create the Thunar configuration directory in %s"
 msgstr "Imposible crear el directorio %s."
 
-#: ../thunar/thunar-preferences.c:263
+#: ../thunar/thunar-preferences.c:280
 #, fuzzy, c-format
 msgid "Failed to open preferences database in %s: %s"
 msgstr "Imposible renombrar %s."
 
-#: ../thunar/thunar-progress-dialog.c:150
+#: ../thunar/thunar-progress-dialog.c:151
 msgid "Job"
 msgstr "Trabajo"
 
-#: ../thunar/thunar-progress-dialog.c:151
+#: ../thunar/thunar-progress-dialog.c:152
 msgid "The job whose progress to display"
 msgstr ""
 
-#: ../thunar/thunar-progress-dialog.c:303
-msgid "Question"
-msgstr ""
-
-#: ../thunar/thunar-progress-dialog.c:329
-msgid "_Yes"
-msgstr "_Si"
-
-#: ../thunar/thunar-progress-dialog.c:333
-msgid "Yes to _all"
-msgstr "Si a_todo"
-
-#: ../thunar/thunar-progress-dialog.c:337
-msgid "_No"
-msgstr "_No"
-
-#: ../thunar/thunar-progress-dialog.c:341
-msgid "_Cancel"
-msgstr "_Cancelar"
-
-#: ../thunar/thunar-progress-dialog.c:467
+#: ../thunar/thunar-progress-dialog.c:459
 #, c-format
 msgid "(%lu hour remaining)"
 msgid_plural "(%lu hours remaining)"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../thunar/thunar-progress-dialog.c:472
+#: ../thunar/thunar-progress-dialog.c:464
 #, c-format
 msgid "(%lu minute remaining)"
 msgid_plural "(%lu minutes remaining)"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../thunar/thunar-progress-dialog.c:477
+#: ../thunar/thunar-progress-dialog.c:469
 #, c-format
 msgid "(%lu second remaining)"
 msgid_plural "(%lu seconds remaining)"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../thunar/thunar-properties-dialog.c:173
+#: ../thunar/thunar-properties-dialog.c:174
 msgid "The file displayed by the dialog"
 msgstr ""
 
-#: ../thunar/thunar-properties-dialog.c:220
+#: ../thunar/thunar-properties-dialog.c:212
 msgid "General"
 msgstr "General"
 
-#: ../thunar/thunar-properties-dialog.c:237
+#: ../thunar/thunar-properties-dialog.c:229
 msgid "Name:"
 msgstr "Nombre:"
 
 #.
 #. Second box (kind)
 #.
-#: ../thunar/thunar-properties-dialog.c:262
+#: ../thunar/thunar-properties-dialog.c:254
 msgid "Kind:"
 msgstr "Tipo:"
 
 #.
 #. Third box (modified, accessed)
 #.
-#: ../thunar/thunar-properties-dialog.c:287
+#: ../thunar/thunar-properties-dialog.c:279
 msgid "Modified:"
 msgstr "Modificado:"
 
-#: ../thunar/thunar-properties-dialog.c:300
+#: ../thunar/thunar-properties-dialog.c:292
 msgid "Accessed:"
 msgstr "Accedido:"
 
 #.
 #. Fourth box (volume, size)
 #.
-#: ../thunar/thunar-properties-dialog.c:324
+#: ../thunar/thunar-properties-dialog.c:316
 msgid "Volume:"
 msgstr "Volumen:"
 
-#: ../thunar/thunar-properties-dialog.c:347
+#: ../thunar/thunar-properties-dialog.c:339
 msgid "Size:"
 msgstr "Tamaño:"
 
 #.
 #. Emblem chooser
 #.
-#: ../thunar/thunar-properties-dialog.c:371
+#: ../thunar/thunar-properties-dialog.c:363
 msgid "Emblems"
 msgstr ""
 
-#: ../thunar/thunar-properties-dialog.c:618
+#: ../thunar/thunar-properties-dialog.c:606
 #, c-format
 msgid "%s Info"
 msgstr ""
 
-#: ../thunar/thunar-properties-dialog.c:699
+#: ../thunar/thunar-properties-dialog.c:687
 #, c-format
 msgid "%s (%u Bytes)"
 msgstr "%s (%u Bytes)"
 
 #. display an error message
-#: ../thunar/thunar-properties-dialog.c:745
+#: ../thunar/thunar-properties-dialog.c:733
 #: ../thunar/thunar-standard-view.c:2170
 #, fuzzy, c-format
 msgid "Failed to rename `%s'"
@@ -1384,27 +1402,27 @@ msgstr "Texto de la barra de estado"
 msgid "The main text to be displayed in the statusbar"
 msgstr ""
 
-#: ../thunar/thunar-text-renderer.c:215
+#: ../thunar/thunar-text-renderer.c:216
 msgid "Text"
 msgstr "Texto"
 
-#: ../thunar/thunar-text-renderer.c:216
+#: ../thunar/thunar-text-renderer.c:217
 msgid "The text to render"
 msgstr ""
 
-#: ../thunar/thunar-text-renderer.c:230
+#: ../thunar/thunar-text-renderer.c:231
 msgid "Wrap mode"
 msgstr ""
 
-#: ../thunar/thunar-text-renderer.c:231
+#: ../thunar/thunar-text-renderer.c:232
 msgid "The wrap mode"
 msgstr ""
 
-#: ../thunar/thunar-text-renderer.c:246
+#: ../thunar/thunar-text-renderer.c:247
 msgid "Wrap width"
 msgstr ""
 
-#: ../thunar/thunar-text-renderer.c:247
+#: ../thunar/thunar-text-renderer.c:248
 msgid "The wrap width"
 msgstr ""
 
@@ -1902,3 +1920,35 @@ msgstr "Gestor de archivos"
 #: ../Thunar.desktop.in.h:3
 msgid "Thunar File Manager"
 msgstr "Gestor de archivos Thunar"
+
+#, fuzzy
+#~ msgid "Advanced Permissions"
+#~ msgstr "Permisos"
+
+#, fuzzy
+#~ msgid "Failed to change the group to which `%s' belongs"
+#~ msgstr "Imposible renombrar %s."
+
+#, fuzzy
+#~ msgid "%s (%s)"
+#~ msgstr "\"%s\" (%s) %s"
+
+#, fuzzy
+#~ msgid "List folder contents"
+#~ msgstr "Cargando el contenido de la carpeta..."
+
+#, fuzzy
+#~ msgid "Execute"
+#~ msgstr "Ejecutar"
+
+#, fuzzy
+#~ msgid "_Grant Permission"
+#~ msgstr "Permisos"
+
+#, fuzzy
+#~ msgid "_Deny Permission"
+#~ msgstr "Permisos"
+
+#, fuzzy
+#~ msgid "<b>Icon View</b>"
+#~ msgstr "Vista de iconos"
diff --git a/po/fr.po b/po/fr.po
index 03f4fd0eb94971580d1fbf76ad15a1291856ed53..ba86be117b7c42234cb4a8b7c5cd95d30018dce1 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Thunar 0.1.4svn\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-01-04 18:34+0100\n"
+"POT-Creation-Date: 2006-01-08 22:45+0100\n"
 "PO-Revision-Date: 2006-01-01 15:02+0100\n"
 "Last-Translator: Stephane Roy <sroy@j2n.net>\n"
 "Language-Team: French <traduc@traduc.org>\n"
@@ -16,23 +16,67 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: ../thunar-vfs/thunar-vfs-info.c:362
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:168
+#: ../thunar-vfs/thunar-vfs-chown-job.c:166
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:267
+msgid "Collecting files..."
+msgstr "Récupération des fichiers..."
+
+#. ask the user whether we should skip the file
+#. ask the user whether to skip this file (used for cancellation only)
+#. ask the user whether to skip
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:189
+#: ../thunar-vfs/thunar-vfs-chown-job.c:187
+#: ../thunar-vfs/thunar-vfs-link-job.c:212
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:747
+#, c-format
+msgid ""
+"%s.\n"
+"\n"
+"Do you want to skip it?"
+msgstr ""
+"%s.\n"
+"\n"
+"Voulez-vous l'ignorer ?"
+
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:246
+#: ../thunar-vfs/thunar-vfs-chown-job.c:244
+#, fuzzy, c-format
+msgid "Failed to determine file info of `%s': %s"
+msgstr "Échec à la détermination d'informations sur le fichier `%s'"
+
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:272
+#, fuzzy, c-format
+msgid "Failed to change permissions of `%s': %s"
+msgstr "Échec au changement de mode de `%s'"
+
+#: ../thunar-vfs/thunar-vfs-chown-job.c:260
+#, fuzzy, c-format
+msgid "Failed to change file owner of `%s': %s"
+msgstr "Échec au changement de mode de `%s'"
+
+#: ../thunar-vfs/thunar-vfs-chown-job.c:262
+#, fuzzy, c-format
+msgid "Failed to change file group of `%s': %s"
+msgstr "Échec au changement de mode de `%s'"
+
+#: ../thunar-vfs/thunar-vfs-info.c:261
 msgid "No Exec field specified"
 msgstr "Aucun champ Exec spécifié"
 
-#: ../thunar-vfs/thunar-vfs-info.c:370
+#: ../thunar-vfs/thunar-vfs-info.c:269
 msgid "Unable to parse file"
 msgstr "Impossible d'analyser le fichier"
 
-#: ../thunar-vfs/thunar-vfs-info.c:460
+#: ../thunar-vfs/thunar-vfs-info.c:359
 msgid "Invalid file name"
 msgstr "Nom de fichier invalide"
 
-#: ../thunar-vfs/thunar-vfs-info.c:482
+#: ../thunar-vfs/thunar-vfs-info.c:381
 msgid "Invalid desktop file"
 msgstr "Fichier de bureau invalide"
 
-#: ../thunar-vfs/thunar-vfs-info.c:716
+#: ../thunar-vfs/thunar-vfs-info.c:615
 #, c-format
 msgid "Failed to stat file `%s': %s"
 msgstr "Échec pour récupérer le statut du fichier `%s' : %s"
@@ -56,20 +100,6 @@ msgstr ""
 msgid "Failed to remove `%s': %s"
 msgstr "Échec à la suppression de `%s' : %s"
 
-#. ask the user whether to skip this file (used for cancellation only)
-#. ask the user whether to skip
-#: ../thunar-vfs/thunar-vfs-link-job.c:212
-#: ../thunar-vfs/thunar-vfs-transfer-job.c:747
-#, c-format
-msgid ""
-"%s.\n"
-"\n"
-"Do you want to skip it?"
-msgstr ""
-"%s.\n"
-"\n"
-"Voulez-vous l'ignorer ?"
-
 #: ../thunar-vfs/thunar-vfs-mime-database.c:1657
 #, c-format
 msgid "Failed to load application from file %s"
@@ -101,10 +131,6 @@ msgstr "Taille"
 msgid "The desired thumbnail size"
 msgstr "La taille de vignette désirée"
 
-#: ../thunar-vfs/thunar-vfs-transfer-job.c:267
-msgid "Collecting files..."
-msgstr "Récupération des fichiers..."
-
 #. display info message
 #: ../thunar-vfs/thunar-vfs-transfer-job.c:329
 msgid "Deleting directories..."
@@ -147,7 +173,7 @@ msgid "copy of %s"
 msgstr "copie de %s"
 
 #: ../thunar-vfs/thunar-vfs-xfer.c:158 ../thunar/thunar-list-model.c:703
-#: ../thunar/thunar-properties-dialog.c:643
+#: ../thunar/thunar-properties-dialog.c:631
 #, c-format
 msgid "link to %s"
 msgstr "lien vers %s"
@@ -263,58 +289,6 @@ msgstr "Échec à la création du lien symbolique `%s'"
 msgid "Thunar"
 msgstr "Thunar"
 
-#: ../thunar/thunar-advanced-permissions-dialog.c:159
-#, fuzzy
-msgid "Advanced Permissions"
-msgstr "Permissions"
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:167
-msgid "Special Bits"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:180
-msgid "Set _User ID (SUID)"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:190
-msgid ""
-"An executable file whose Set User ID (SUID) bit is\n"
-"set will always be executed with the privileges of\n"
-"the owner of the executable."
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:211
-msgid "Set _Group ID (SGID)"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:221
-msgid ""
-"An executable file whose Set Group ID (SGID) bit is\n"
-"set will always be executed with the privileges of the\n"
-"group of the executable."
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:242
-msgid "_Sticky"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:252
-msgid ""
-"A file in a sticky directory may only be removed or\n"
-"renamed by a user if the user has write permission\n"
-"for the directory and the user is the owner of the\n"
-"file, the owner of the directory or the superuser."
-msgstr ""
-
-#. display an error message to the user
-#. display an error to the user (when we get here, we definitely have a valid file!)
-#: ../thunar/thunar-advanced-permissions-dialog.c:356
-#: ../thunar/thunar-permissions-model.c:830
-#: ../thunar/thunar-permissions-view.c:494
-#, fuzzy, c-format
-msgid "Failed to change permissions of `%s'"
-msgstr "Échec au changement de mode de `%s'"
-
 #. display an error message to the user
 #: ../thunar/thunar-application.c:222
 msgid "Failed to launch operation"
@@ -340,25 +314,11 @@ msgstr "Suppression des fichiers..."
 msgid "Creating directories..."
 msgstr "Création de répertoires..."
 
-#: ../thunar/thunar-change-group-dialog.c:193
-msgid "Change Group"
-msgstr ""
-
-#: ../thunar/thunar-change-group-dialog.c:200
-msgid "_Group:"
-msgstr ""
-
-#. display an error message
-#: ../thunar/thunar-change-group-dialog.c:309
-#, fuzzy, c-format
-msgid "Failed to change the group to which `%s' belongs"
-msgstr "Échec au changement de mode de `%s'"
-
 #: ../thunar/thunar-chooser-dialog.c:169 ../thunar/thunar-emblem-chooser.c:147
 #: ../thunar/thunar-emblem-chooser.c:148 ../thunar/thunar-icon-renderer.c:161
 #: ../thunar/thunar-open-with-action.c:146
 #: ../thunar/thunar-open-with-action.c:147
-#: ../thunar/thunar-properties-dialog.c:172 ../thunar/thunar-statusbar.c:190
+#: ../thunar/thunar-properties-dialog.c:173 ../thunar/thunar-statusbar.c:190
 msgid "File"
 msgstr "Fichier"
 
@@ -408,37 +368,37 @@ msgid "Failed to execute `%s'"
 msgstr "Échec à l'exécution de `%s'"
 
 #. update the header label
-#: ../thunar/thunar-chooser-dialog.c:612
+#: ../thunar/thunar-chooser-dialog.c:613
 #, c-format
 msgid "Open <i>%s</i> and other files of type \"%s\" with:"
 msgstr "Ouvrir <i>%s</i> et les autres fichiers de type \"%s\" avec :"
 
-#: ../thunar/thunar-chooser-dialog.c:634 ../thunar-uca/thunar-uca-editor.c:491
+#: ../thunar/thunar-chooser-dialog.c:635 ../thunar-uca/thunar-uca-editor.c:491
 msgid "Select an Application"
 msgstr "Sélectionner une application"
 
-#: ../thunar/thunar-chooser-dialog.c:644 ../thunar-uca/thunar-uca-editor.c:501
+#: ../thunar/thunar-chooser-dialog.c:645 ../thunar-uca/thunar-uca-editor.c:501
 #: ../thunar-uca/thunar-uca-editor.c:640
 msgid "All Files"
 msgstr "Tous les fichiers"
 
-#: ../thunar/thunar-chooser-dialog.c:649 ../thunar-uca/thunar-uca-editor.c:506
+#: ../thunar/thunar-chooser-dialog.c:650 ../thunar-uca/thunar-uca-editor.c:506
 msgid "Executable Files"
 msgstr "Fichiers exécutables"
 
-#: ../thunar/thunar-chooser-dialog.c:664 ../thunar-uca/thunar-uca-editor.c:521
+#: ../thunar/thunar-chooser-dialog.c:665 ../thunar-uca/thunar-uca-editor.c:521
 msgid "Perl Scripts"
 msgstr "Scripts perl"
 
-#: ../thunar/thunar-chooser-dialog.c:670 ../thunar-uca/thunar-uca-editor.c:527
+#: ../thunar/thunar-chooser-dialog.c:671 ../thunar-uca/thunar-uca-editor.c:527
 msgid "Python Scripts"
 msgstr "Scripts python"
 
-#: ../thunar/thunar-chooser-dialog.c:676 ../thunar-uca/thunar-uca-editor.c:533
+#: ../thunar/thunar-chooser-dialog.c:677 ../thunar-uca/thunar-uca-editor.c:533
 msgid "Ruby Scripts"
 msgstr "Scripts ruby"
 
-#: ../thunar/thunar-chooser-dialog.c:682 ../thunar-uca/thunar-uca-editor.c:539
+#: ../thunar/thunar-chooser-dialog.c:683 ../thunar-uca/thunar-uca-editor.c:539
 msgid "Shell Scripts"
 msgstr "Scripts shell"
 
@@ -507,7 +467,7 @@ msgstr "Nom"
 #. Permissions chooser
 #.
 #: ../thunar/thunar-details-view.c:197
-#: ../thunar/thunar-properties-dialog.c:382
+#: ../thunar/thunar-properties-dialog.c:374
 msgid "Permissions"
 msgstr "Permissions"
 
@@ -557,11 +517,11 @@ msgstr "Impossible d'exécuter le fichier `%s'"
 msgid "The root folder has no parent"
 msgstr "Le dossier racine n'a pas de père"
 
-#: ../thunar/thunar-file.c:1032
+#: ../thunar/thunar-file.c:967
 msgid "Filesystem"
 msgstr "Système de fichier"
 
-#: ../thunar/thunar-file.c:1056
+#: ../thunar/thunar-file.c:991
 msgid "Home"
 msgstr "Répertoire personnel"
 
@@ -618,7 +578,7 @@ msgid "The file whose icon to render"
 msgstr ""
 
 #: ../thunar/thunar-icon-renderer.c:177 ../thunar/thunar-icon-renderer.c:178
-#: ../thunar/thunar-text-renderer.c:202 ../thunar/thunar-text-renderer.c:203
+#: ../thunar/thunar-text-renderer.c:203 ../thunar/thunar-text-renderer.c:204
 msgid "Follow state"
 msgstr ""
 
@@ -790,7 +750,7 @@ msgstr "Montrer cachés"
 msgid "Whether to display hidden files"
 msgstr "Montrer ou non les fichiers cachés"
 
-#: ../thunar/thunar-list-model.c:701 ../thunar/thunar-properties-dialog.c:641
+#: ../thunar/thunar-list-model.c:701 ../thunar/thunar-properties-dialog.c:629
 msgid "broken link"
 msgstr "lien cassé"
 
@@ -830,11 +790,11 @@ msgid_plural "%d items selected (%s)"
 msgstr[0] "%d élément sélectionné"
 msgstr[1] "%d éléments sélectionnés (%s)"
 
-#: ../thunar/thunar-location-buttons.c:258
+#: ../thunar/thunar-location-buttons.c:257
 msgid "Spacing"
 msgstr "Espace"
 
-#: ../thunar/thunar-location-buttons.c:259
+#: ../thunar/thunar-location-buttons.c:258
 msgid "The amount of space between the path buttons"
 msgstr "Quantité d'espace entre les boutons du chemin"
 
@@ -876,117 +836,173 @@ msgstr "Le fichier actuellement affiché"
 msgid "The icon size for the path entry"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:440
-#, fuzzy, c-format
-msgid "%s (%s)"
-msgstr "\"%s\" (%s) %s"
+#. 0000
+#: ../thunar/thunar-permissions-chooser.c:234
+msgid "None"
+msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:447
-msgid "Unknown file owner"
+#. 0002
+#: ../thunar/thunar-permissions-chooser.c:236
+msgid "Write only"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:460
-msgid "Unknown file group"
+#. 0004
+#: ../thunar/thunar-permissions-chooser.c:238
+msgid "Read only"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:465
-msgid "All other users"
+#. 0006
+#: ../thunar/thunar-permissions-chooser.c:240
+msgid "Read & Write"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:474
-msgid "Read"
+#: ../thunar/thunar-permissions-chooser.c:252
+msgid "Owner:"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:478
-msgid "Write"
+#: ../thunar/thunar-permissions-chooser.c:266
+msgid "Unknown"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:482
+#: ../thunar/thunar-permissions-chooser.c:280
+#: ../thunar/thunar-permissions-chooser.c:335
 #, fuzzy
-msgid "List folder contents"
-msgstr "Chargement du contenu du dossier..."
+msgid "Access:"
+msgstr "Accédé :"
+
+#: ../thunar/thunar-permissions-chooser.c:309
+msgid "Group:"
+msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:482
+#: ../thunar/thunar-permissions-chooser.c:364
 #, fuzzy
-msgid "Execute"
-msgstr "_Exécuter"
+msgid "Others:"
+msgstr "Autres _fichiers"
 
-#. actions for the group item
-#: ../thunar/thunar-permissions-model.c:884
-msgid "Change _Group..."
+#: ../thunar/thunar-permissions-chooser.c:393
+msgid "Program:"
 msgstr ""
 
-#. append the "Grant Permission" action
-#: ../thunar/thunar-permissions-model.c:897
+#: ../thunar/thunar-permissions-chooser.c:399
+msgid "Allow this file to _run as a program"
+msgstr ""
+
+#: ../thunar/thunar-permissions-chooser.c:423
+msgid ""
+"Allowing untrusted programs to run \n"
+"presents a security risk to your system."
+msgstr ""
+
+#: ../thunar/thunar-permissions-chooser.c:434
+msgid "Please wait..."
+msgstr ""
+
+#. display an error to the user
+#: ../thunar/thunar-permissions-chooser.c:545
 #, fuzzy
-msgid "_Grant Permission"
-msgstr "Permissions"
+msgid "Failed to change group"
+msgstr "Échec au changement de mode de `%s'"
 
-#. append the "Deny Permission" action
-#: ../thunar/thunar-permissions-model.c:906
+#. display an error to the user
+#: ../thunar/thunar-permissions-chooser.c:580
 #, fuzzy
-msgid "_Deny Permission"
-msgstr "Permissions"
+msgid "Failed to apply new permissions"
+msgstr "Échec au changement de mode de `%s'"
 
-#: ../thunar/thunar-permissions-view.c:213
-msgid ""
-"For special permissions and for\n"
-"advanced settings, click Advanced."
+#. allocate the question dialog
+#: ../thunar/thunar-permissions-chooser.c:619
+#: ../thunar/thunar-permissions-chooser.c:961
+#: ../thunar/thunar-progress-dialog.c:295
+msgid "Question"
+msgstr "Question"
+
+#: ../thunar/thunar-permissions-chooser.c:642
+msgid "Apply recursively?"
 msgstr ""
 
-#: ../thunar/thunar-permissions-view.c:222
-msgid "_Advanced..."
+#: ../thunar/thunar-permissions-chooser.c:648
+msgid ""
+"Do you want to apply your changes recursively to\n"
+"all files and subfolder below the selected folder?"
 msgstr ""
 
-#: ../thunar/thunar-permissions-view.c:223
-msgid "Click here for special permissions and for advanced settings."
+#: ../thunar/thunar-permissions-chooser.c:653
+msgid "Do _not ask me again"
 msgstr ""
 
-#: ../thunar/thunar-permissions-view.c:243
-msgid ""
-"You are not the owner of this file, so\n"
-"you cannot change these permissions."
+#: ../thunar/thunar-permissions-chooser.c:851
+msgid "Unknown file owner"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:184
+#: ../thunar/thunar-permissions-chooser.c:990
+#: ../thunar/thunar-progress-dialog.c:321
+msgid "_Yes"
+msgstr "_Oui"
+
+#: ../thunar/thunar-permissions-chooser.c:994
+#: ../thunar/thunar-progress-dialog.c:325
+msgid "Yes to _all"
+msgstr "Oui pour _tout"
+
+#: ../thunar/thunar-permissions-chooser.c:998
+#: ../thunar/thunar-progress-dialog.c:329
+msgid "_No"
+msgstr "_Non"
+
+#: ../thunar/thunar-permissions-chooser.c:1002
+#: ../thunar/thunar-progress-dialog.c:333
+msgid "_Cancel"
+msgstr "_Annuler"
+
+#: ../thunar/thunar-preferences-dialog.c:186
 msgid "File Manager Preferences"
 msgstr "Préférences du gestionnaire de fichier"
 
-#: ../thunar/thunar-preferences-dialog.c:200
-msgid "<b>Default View</b>"
+#.
+#. Views
+#.
+#: ../thunar/thunar-preferences-dialog.c:203
+#, fuzzy
+msgid "Views"
+msgstr "_Voir"
+
+#: ../thunar/thunar-preferences-dialog.c:213
+#, fuzzy
+msgid "Default View"
 msgstr "<b>Vue par défaut</b>"
 
-#: ../thunar/thunar-preferences-dialog.c:211
+#: ../thunar/thunar-preferences-dialog.c:225
 msgid "View _new folders using:"
 msgstr "Voir un _nouveau dossier en utilisant :"
 
-#: ../thunar/thunar-preferences-dialog.c:216
+#: ../thunar/thunar-preferences-dialog.c:230
+#: ../thunar/thunar-preferences-dialog.c:267
 msgid "Icon View"
 msgstr "vue d'icônes"
 
-#: ../thunar/thunar-preferences-dialog.c:217
+#: ../thunar/thunar-preferences-dialog.c:231
 msgid "Detailed List View"
 msgstr "liste détaillée"
 
-#: ../thunar/thunar-preferences-dialog.c:218
+#: ../thunar/thunar-preferences-dialog.c:232
 msgid "Last Active View"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:233
+#: ../thunar/thunar-preferences-dialog.c:249
 msgid "Sort _folders before files"
 msgstr "Trier les _dossiers avant les fichiers"
 
-#: ../thunar/thunar-preferences-dialog.c:235
+#: ../thunar/thunar-preferences-dialog.c:251
 msgid "Select this option to list folders before files when you sort a folder."
 msgstr ""
 "Sélectionner cette option pour lister les dossiers avant les fichiers quand "
 "vous trier un dossier."
 
-#: ../thunar/thunar-preferences-dialog.c:239
+#: ../thunar/thunar-preferences-dialog.c:255
 msgid "Show hidden and _backup files"
 msgstr "Montrer les fichiers _cachés et de sauvegardes"
 
-#: ../thunar/thunar-preferences-dialog.c:241
+#: ../thunar/thunar-preferences-dialog.c:257
 msgid ""
 "Select this option to show hidden and backup files in new windows. The first "
 "character in a hidden filename is a period (.). The last character in a "
@@ -996,15 +1012,11 @@ msgstr ""
 "dans une nouvelle fenêtre. Le premier caractère d'un fichier caché est un "
 "point (.). Le dernier caractère d'un fichier de sauvegarde est un tilde (~)."
 
-#: ../thunar/thunar-preferences-dialog.c:251
-msgid "<b>Icon View</b>"
-msgstr "<b>Vue d'icônes</b>"
-
-#: ../thunar/thunar-preferences-dialog.c:262
+#: ../thunar/thunar-preferences-dialog.c:279
 msgid "_Text beside icons"
 msgstr "_Texte à côté des icônes"
 
-#: ../thunar/thunar-preferences-dialog.c:264
+#: ../thunar/thunar-preferences-dialog.c:281
 msgid ""
 "Select this option to place the icon captions for items beside the icon "
 "rather than below the icon."
@@ -1012,126 +1024,133 @@ msgstr ""
 "Sélectionner cette option pour placer la légende des éléments à côté de "
 "l'icône au lieu d'en dessous."
 
-#: ../thunar/thunar-preferences.c:255
+#.
+#. Advanced
+#.
+#: ../thunar/thunar-preferences-dialog.c:290
+msgid "Advanced"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:300
+msgid "Miscellaneous"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:312
+msgid "Apply permissions _recursively:"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:317
+msgid "Ask everytime"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:318
+msgid "Always"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:319
+msgid "Never"
+msgstr ""
+
+#: ../thunar/thunar-preferences.c:272
 #, c-format
 msgid "Failed to create the Thunar configuration directory in %s"
 msgstr ""
 "Échec dans la création du répertoire de configuration de Thunar dans %s"
 
-#: ../thunar/thunar-preferences.c:263
+#: ../thunar/thunar-preferences.c:280
 #, c-format
 msgid "Failed to open preferences database in %s: %s"
 msgstr ""
 
-#: ../thunar/thunar-progress-dialog.c:150
+#: ../thunar/thunar-progress-dialog.c:151
 msgid "Job"
 msgstr ""
 
-#: ../thunar/thunar-progress-dialog.c:151
+#: ../thunar/thunar-progress-dialog.c:152
 msgid "The job whose progress to display"
 msgstr ""
 
-#: ../thunar/thunar-progress-dialog.c:303
-msgid "Question"
-msgstr "Question"
-
-#: ../thunar/thunar-progress-dialog.c:329
-msgid "_Yes"
-msgstr "_Oui"
-
-#: ../thunar/thunar-progress-dialog.c:333
-msgid "Yes to _all"
-msgstr "Oui pour _tout"
-
-#: ../thunar/thunar-progress-dialog.c:337
-msgid "_No"
-msgstr "_Non"
-
-#: ../thunar/thunar-progress-dialog.c:341
-msgid "_Cancel"
-msgstr "_Annuler"
-
-#: ../thunar/thunar-progress-dialog.c:467
+#: ../thunar/thunar-progress-dialog.c:459
 #, c-format
 msgid "(%lu hour remaining)"
 msgid_plural "(%lu hours remaining)"
 msgstr[0] "(%lu houre restante)"
 msgstr[1] "(%lu heures restantes)"
 
-#: ../thunar/thunar-progress-dialog.c:472
+#: ../thunar/thunar-progress-dialog.c:464
 #, c-format
 msgid "(%lu minute remaining)"
 msgid_plural "(%lu minutes remaining)"
 msgstr[0] "(%lu minute restante)"
 msgstr[1] "(%lu minutes restantes)"
 
-#: ../thunar/thunar-progress-dialog.c:477
+#: ../thunar/thunar-progress-dialog.c:469
 #, c-format
 msgid "(%lu second remaining)"
 msgid_plural "(%lu seconds remaining)"
 msgstr[0] "(%lu seconde restante)"
 msgstr[1] "(%lu secondes restantes)"
 
-#: ../thunar/thunar-properties-dialog.c:173
+#: ../thunar/thunar-properties-dialog.c:174
 msgid "The file displayed by the dialog"
 msgstr "La fichier affiché par la fenêtre de dialogue"
 
-#: ../thunar/thunar-properties-dialog.c:220
+#: ../thunar/thunar-properties-dialog.c:212
 msgid "General"
 msgstr "Général"
 
-#: ../thunar/thunar-properties-dialog.c:237
+#: ../thunar/thunar-properties-dialog.c:229
 msgid "Name:"
 msgstr "Nom :"
 
 #.
 #. Second box (kind)
 #.
-#: ../thunar/thunar-properties-dialog.c:262
+#: ../thunar/thunar-properties-dialog.c:254
 msgid "Kind:"
 msgstr "Type :"
 
 #.
 #. Third box (modified, accessed)
 #.
-#: ../thunar/thunar-properties-dialog.c:287
+#: ../thunar/thunar-properties-dialog.c:279
 msgid "Modified:"
 msgstr "Modifié :"
 
-#: ../thunar/thunar-properties-dialog.c:300
+#: ../thunar/thunar-properties-dialog.c:292
 msgid "Accessed:"
 msgstr "Accédé :"
 
 #.
 #. Fourth box (volume, size)
 #.
-#: ../thunar/thunar-properties-dialog.c:324
+#: ../thunar/thunar-properties-dialog.c:316
 msgid "Volume:"
 msgstr "Volume :"
 
-#: ../thunar/thunar-properties-dialog.c:347
+#: ../thunar/thunar-properties-dialog.c:339
 msgid "Size:"
 msgstr "Taille :"
 
 #.
 #. Emblem chooser
 #.
-#: ../thunar/thunar-properties-dialog.c:371
+#: ../thunar/thunar-properties-dialog.c:363
 msgid "Emblems"
 msgstr "Emblèmes"
 
-#: ../thunar/thunar-properties-dialog.c:618
+#: ../thunar/thunar-properties-dialog.c:606
 #, c-format
 msgid "%s Info"
 msgstr "Info %s"
 
-#: ../thunar/thunar-properties-dialog.c:699
+#: ../thunar/thunar-properties-dialog.c:687
 #, c-format
 msgid "%s (%u Bytes)"
 msgstr "%s (%u octets)"
 
 #. display an error message
-#: ../thunar/thunar-properties-dialog.c:745
+#: ../thunar/thunar-properties-dialog.c:733
 #: ../thunar/thunar-standard-view.c:2170
 #, c-format
 msgid "Failed to rename `%s'"
@@ -1358,27 +1377,27 @@ msgstr "Texte de la barre de statut"
 msgid "The main text to be displayed in the statusbar"
 msgstr "Le texte principal à afficher dans la barre de statut"
 
-#: ../thunar/thunar-text-renderer.c:215
+#: ../thunar/thunar-text-renderer.c:216
 msgid "Text"
 msgstr "Texte"
 
-#: ../thunar/thunar-text-renderer.c:216
+#: ../thunar/thunar-text-renderer.c:217
 msgid "The text to render"
 msgstr ""
 
-#: ../thunar/thunar-text-renderer.c:230
+#: ../thunar/thunar-text-renderer.c:231
 msgid "Wrap mode"
 msgstr "Mode retour à la ligne"
 
-#: ../thunar/thunar-text-renderer.c:231
+#: ../thunar/thunar-text-renderer.c:232
 msgid "The wrap mode"
 msgstr "Le mode de retour à la ligne automatique"
 
-#: ../thunar/thunar-text-renderer.c:246
+#: ../thunar/thunar-text-renderer.c:247
 msgid "Wrap width"
 msgstr "Largeur de retour à la ligne"
 
-#: ../thunar/thunar-text-renderer.c:247
+#: ../thunar/thunar-text-renderer.c:248
 msgid "The wrap width"
 msgstr "La largeur pour le retour à la ligne automatique"
 
@@ -1884,3 +1903,34 @@ msgstr "Gestionnaire de fichier"
 #: ../Thunar.desktop.in.h:3
 msgid "Thunar File Manager"
 msgstr "Gestionnaire de Fichier Thunar"
+
+#, fuzzy
+#~ msgid "Advanced Permissions"
+#~ msgstr "Permissions"
+
+#, fuzzy
+#~ msgid "Failed to change the group to which `%s' belongs"
+#~ msgstr "Échec au changement de mode de `%s'"
+
+#, fuzzy
+#~ msgid "%s (%s)"
+#~ msgstr "\"%s\" (%s) %s"
+
+#, fuzzy
+#~ msgid "List folder contents"
+#~ msgstr "Chargement du contenu du dossier..."
+
+#, fuzzy
+#~ msgid "Execute"
+#~ msgstr "_Exécuter"
+
+#, fuzzy
+#~ msgid "_Grant Permission"
+#~ msgstr "Permissions"
+
+#, fuzzy
+#~ msgid "_Deny Permission"
+#~ msgstr "Permissions"
+
+#~ msgid "<b>Icon View</b>"
+#~ msgstr "<b>Vue d'icônes</b>"
diff --git a/po/hu.po b/po/hu.po
index 6874fb7bedd4495c790c86b4425ede4a11ba6500..697ddd72176c1523ca2d4fff8d924c8e4470bff6 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Thunar 0.1.4svn\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-01-04 18:34+0100\n"
+"POT-Creation-Date: 2006-01-08 22:45+0100\n"
 "PO-Revision-Date: 2005-10-06 22:02+0900\n"
 "Last-Translator: SZERVÁC Attila <sas@321.hu>\n"
 "Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
@@ -15,24 +15,68 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ../thunar-vfs/thunar-vfs-info.c:362
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:168
+#: ../thunar-vfs/thunar-vfs-chown-job.c:166
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:267
+msgid "Collecting files..."
+msgstr "Fájlok gyűjtése..."
+
+#. ask the user whether we should skip the file
+#. ask the user whether to skip this file (used for cancellation only)
+#. ask the user whether to skip
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:189
+#: ../thunar-vfs/thunar-vfs-chown-job.c:187
+#: ../thunar-vfs/thunar-vfs-link-job.c:212
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:747
+#, fuzzy, c-format
+msgid ""
+"%s.\n"
+"\n"
+"Do you want to skip it?"
+msgstr ""
+"\n"
+"\n"
+"Kihagyod?"
+
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:246
+#: ../thunar-vfs/thunar-vfs-chown-job.c:244
+#, fuzzy, c-format
+msgid "Failed to determine file info of `%s': %s"
+msgstr "Nem sikerült meghatározni a szülő URI-t ehhez: %s"
+
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:272
+#, fuzzy, c-format
+msgid "Failed to change permissions of `%s': %s"
+msgstr "Nem törölhető: %s"
+
+#: ../thunar-vfs/thunar-vfs-chown-job.c:260
+#, fuzzy, c-format
+msgid "Failed to change file owner of `%s': %s"
+msgstr "Nem törölhető: %s"
+
+#: ../thunar-vfs/thunar-vfs-chown-job.c:262
+#, fuzzy, c-format
+msgid "Failed to change file group of `%s': %s"
+msgstr "Nem törölhető: %s"
+
+#: ../thunar-vfs/thunar-vfs-info.c:261
 msgid "No Exec field specified"
 msgstr ""
 
-#: ../thunar-vfs/thunar-vfs-info.c:370
+#: ../thunar-vfs/thunar-vfs-info.c:269
 #, fuzzy
 msgid "Unable to parse file"
 msgstr "Nem nyitható meg e fájl: %s"
 
-#: ../thunar-vfs/thunar-vfs-info.c:460
+#: ../thunar-vfs/thunar-vfs-info.c:359
 msgid "Invalid file name"
 msgstr ""
 
-#: ../thunar-vfs/thunar-vfs-info.c:482
+#: ../thunar-vfs/thunar-vfs-info.c:381
 msgid "Invalid desktop file"
 msgstr ""
 
-#: ../thunar-vfs/thunar-vfs-info.c:716
+#: ../thunar-vfs/thunar-vfs-info.c:615
 #, fuzzy, c-format
 msgid "Failed to stat file `%s': %s"
 msgstr "Nem törölhető: %s"
@@ -56,20 +100,6 @@ msgstr ""
 msgid "Failed to remove `%s': %s"
 msgstr "Nem törölhető: %s"
 
-#. ask the user whether to skip this file (used for cancellation only)
-#. ask the user whether to skip
-#: ../thunar-vfs/thunar-vfs-link-job.c:212
-#: ../thunar-vfs/thunar-vfs-transfer-job.c:747
-#, fuzzy, c-format
-msgid ""
-"%s.\n"
-"\n"
-"Do you want to skip it?"
-msgstr ""
-"\n"
-"\n"
-"Kihagyod?"
-
 #: ../thunar-vfs/thunar-vfs-mime-database.c:1657
 #, c-format
 msgid "Failed to load application from file %s"
@@ -101,10 +131,6 @@ msgstr "Méret"
 msgid "The desired thumbnail size"
 msgstr ""
 
-#: ../thunar-vfs/thunar-vfs-transfer-job.c:267
-msgid "Collecting files..."
-msgstr "Fájlok gyűjtése..."
-
 #. display info message
 #: ../thunar-vfs/thunar-vfs-transfer-job.c:329
 #, fuzzy
@@ -148,7 +174,7 @@ msgid "copy of %s"
 msgstr ""
 
 #: ../thunar-vfs/thunar-vfs-xfer.c:158 ../thunar/thunar-list-model.c:703
-#: ../thunar/thunar-properties-dialog.c:643
+#: ../thunar/thunar-properties-dialog.c:631
 #, c-format
 msgid "link to %s"
 msgstr ""
@@ -264,58 +290,6 @@ msgstr "Nem hozható létre e szimlink: %s"
 msgid "Thunar"
 msgstr "Thunar"
 
-#: ../thunar/thunar-advanced-permissions-dialog.c:159
-#, fuzzy
-msgid "Advanced Permissions"
-msgstr "Jogok"
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:167
-msgid "Special Bits"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:180
-msgid "Set _User ID (SUID)"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:190
-msgid ""
-"An executable file whose Set User ID (SUID) bit is\n"
-"set will always be executed with the privileges of\n"
-"the owner of the executable."
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:211
-msgid "Set _Group ID (SGID)"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:221
-msgid ""
-"An executable file whose Set Group ID (SGID) bit is\n"
-"set will always be executed with the privileges of the\n"
-"group of the executable."
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:242
-msgid "_Sticky"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:252
-msgid ""
-"A file in a sticky directory may only be removed or\n"
-"renamed by a user if the user has write permission\n"
-"for the directory and the user is the owner of the\n"
-"file, the owner of the directory or the superuser."
-msgstr ""
-
-#. display an error message to the user
-#. display an error to the user (when we get here, we definitely have a valid file!)
-#: ../thunar/thunar-advanced-permissions-dialog.c:356
-#: ../thunar/thunar-permissions-model.c:830
-#: ../thunar/thunar-permissions-view.c:494
-#, fuzzy, c-format
-msgid "Failed to change permissions of `%s'"
-msgstr "Nem törölhető: %s"
-
 #. display an error message to the user
 #: ../thunar/thunar-application.c:222
 #, fuzzy
@@ -344,25 +318,11 @@ msgstr "Fájlok gyűjtése..."
 msgid "Creating directories..."
 msgstr "Jelenlegi könyvtár"
 
-#: ../thunar/thunar-change-group-dialog.c:193
-msgid "Change Group"
-msgstr ""
-
-#: ../thunar/thunar-change-group-dialog.c:200
-msgid "_Group:"
-msgstr ""
-
-#. display an error message
-#: ../thunar/thunar-change-group-dialog.c:309
-#, fuzzy, c-format
-msgid "Failed to change the group to which `%s' belongs"
-msgstr "Nem törölhető: %s"
-
 #: ../thunar/thunar-chooser-dialog.c:169 ../thunar/thunar-emblem-chooser.c:147
 #: ../thunar/thunar-emblem-chooser.c:148 ../thunar/thunar-icon-renderer.c:161
 #: ../thunar/thunar-open-with-action.c:146
 #: ../thunar/thunar-open-with-action.c:147
-#: ../thunar/thunar-properties-dialog.c:172 ../thunar/thunar-statusbar.c:190
+#: ../thunar/thunar-properties-dialog.c:173 ../thunar/thunar-statusbar.c:190
 msgid "File"
 msgstr "Fájl"
 
@@ -413,40 +373,40 @@ msgid "Failed to execute `%s'"
 msgstr "Nem törölhető: %s"
 
 #. update the header label
-#: ../thunar/thunar-chooser-dialog.c:612
+#: ../thunar/thunar-chooser-dialog.c:613
 #, c-format
 msgid "Open <i>%s</i> and other files of type \"%s\" with:"
 msgstr ""
 
-#: ../thunar/thunar-chooser-dialog.c:634 ../thunar-uca/thunar-uca-editor.c:491
+#: ../thunar/thunar-chooser-dialog.c:635 ../thunar-uca/thunar-uca-editor.c:491
 #, fuzzy
 msgid "Select an Application"
 msgstr "_Hely megnyitása..."
 
-#: ../thunar/thunar-chooser-dialog.c:644 ../thunar-uca/thunar-uca-editor.c:501
+#: ../thunar/thunar-chooser-dialog.c:645 ../thunar-uca/thunar-uca-editor.c:501
 #: ../thunar-uca/thunar-uca-editor.c:640
 #, fuzzy
 msgid "All Files"
 msgstr "Fájlok"
 
-#: ../thunar/thunar-chooser-dialog.c:649 ../thunar-uca/thunar-uca-editor.c:506
+#: ../thunar/thunar-chooser-dialog.c:650 ../thunar-uca/thunar-uca-editor.c:506
 #, fuzzy
 msgid "Executable Files"
 msgstr "Minden fájl kiválasztása"
 
-#: ../thunar/thunar-chooser-dialog.c:664 ../thunar-uca/thunar-uca-editor.c:521
+#: ../thunar/thunar-chooser-dialog.c:665 ../thunar-uca/thunar-uca-editor.c:521
 msgid "Perl Scripts"
 msgstr ""
 
-#: ../thunar/thunar-chooser-dialog.c:670 ../thunar-uca/thunar-uca-editor.c:527
+#: ../thunar/thunar-chooser-dialog.c:671 ../thunar-uca/thunar-uca-editor.c:527
 msgid "Python Scripts"
 msgstr ""
 
-#: ../thunar/thunar-chooser-dialog.c:676 ../thunar-uca/thunar-uca-editor.c:533
+#: ../thunar/thunar-chooser-dialog.c:677 ../thunar-uca/thunar-uca-editor.c:533
 msgid "Ruby Scripts"
 msgstr ""
 
-#: ../thunar/thunar-chooser-dialog.c:682 ../thunar-uca/thunar-uca-editor.c:539
+#: ../thunar/thunar-chooser-dialog.c:683 ../thunar-uca/thunar-uca-editor.c:539
 msgid "Shell Scripts"
 msgstr ""
 
@@ -519,7 +479,7 @@ msgstr "Név"
 #. Permissions chooser
 #.
 #: ../thunar/thunar-details-view.c:197
-#: ../thunar/thunar-properties-dialog.c:382
+#: ../thunar/thunar-properties-dialog.c:374
 msgid "Permissions"
 msgstr "Jogok"
 
@@ -570,11 +530,11 @@ msgstr "Nem lehet másolni a fájlt: %s"
 msgid "The root folder has no parent"
 msgstr ""
 
-#: ../thunar/thunar-file.c:1032
+#: ../thunar/thunar-file.c:967
 msgid "Filesystem"
 msgstr "Fájlrendszer"
 
-#: ../thunar/thunar-file.c:1056
+#: ../thunar/thunar-file.c:991
 msgid "Home"
 msgstr "Saját könyvtár"
 
@@ -632,7 +592,7 @@ msgid "The file whose icon to render"
 msgstr "A kirajzolandó ikon"
 
 #: ../thunar/thunar-icon-renderer.c:177 ../thunar/thunar-icon-renderer.c:178
-#: ../thunar/thunar-text-renderer.c:202 ../thunar/thunar-text-renderer.c:203
+#: ../thunar/thunar-text-renderer.c:203 ../thunar/thunar-text-renderer.c:204
 msgid "Follow state"
 msgstr ""
 
@@ -806,7 +766,7 @@ msgstr "Rejtettek mutatása"
 msgid "Whether to display hidden files"
 msgstr "Mutassuk-e a rejtett fájlokat"
 
-#: ../thunar/thunar-list-model.c:701 ../thunar/thunar-properties-dialog.c:641
+#: ../thunar/thunar-list-model.c:701 ../thunar/thunar-properties-dialog.c:629
 msgid "broken link"
 msgstr ""
 
@@ -846,11 +806,11 @@ msgid_plural "%d items selected (%s)"
 msgstr[0] "%d elem kijelölve"
 msgstr[1] "%d elem kijelölve"
 
-#: ../thunar/thunar-location-buttons.c:258
+#: ../thunar/thunar-location-buttons.c:257
 msgid "Spacing"
 msgstr "Távolság"
 
-#: ../thunar/thunar-location-buttons.c:259
+#: ../thunar/thunar-location-buttons.c:258
 msgid "The amount of space between the path buttons"
 msgstr "Ösvénygombok közti táv"
 
@@ -893,259 +853,317 @@ msgstr "A most megjelenített fájl"
 msgid "The icon size for the path entry"
 msgstr "Az ösvényelem ikonmérete"
 
-#: ../thunar/thunar-permissions-model.c:440
-#, fuzzy, c-format
-msgid "%s (%s)"
-msgstr "\"%s\" (%s) %s"
+#. 0000
+#: ../thunar/thunar-permissions-chooser.c:234
+msgid "None"
+msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:447
-msgid "Unknown file owner"
+#. 0002
+#: ../thunar/thunar-permissions-chooser.c:236
+msgid "Write only"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:460
-msgid "Unknown file group"
+#. 0004
+#: ../thunar/thunar-permissions-chooser.c:238
+msgid "Read only"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:465
-msgid "All other users"
+#. 0006
+#: ../thunar/thunar-permissions-chooser.c:240
+msgid "Read & Write"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:474
-msgid "Read"
+#: ../thunar/thunar-permissions-chooser.c:252
+msgid "Owner:"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:478
-msgid "Write"
+#: ../thunar/thunar-permissions-chooser.c:266
+msgid "Unknown"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:482
+#: ../thunar/thunar-permissions-chooser.c:280
+#: ../thunar/thunar-permissions-chooser.c:335
 #, fuzzy
-msgid "List folder contents"
-msgstr "Mappa beolvasása..."
+msgid "Access:"
+msgstr "Megnyitva:"
 
-#: ../thunar/thunar-permissions-model.c:482
+#: ../thunar/thunar-permissions-chooser.c:309
+msgid "Group:"
+msgstr ""
+
+#: ../thunar/thunar-permissions-chooser.c:364
 #, fuzzy
-msgid "Execute"
-msgstr "Minden fájl kiválasztása"
+msgid "Others:"
+msgstr "Fájlok beillesztése"
+
+#: ../thunar/thunar-permissions-chooser.c:393
+msgid "Program:"
+msgstr ""
+
+#: ../thunar/thunar-permissions-chooser.c:399
+msgid "Allow this file to _run as a program"
+msgstr ""
+
+#: ../thunar/thunar-permissions-chooser.c:423
+msgid ""
+"Allowing untrusted programs to run \n"
+"presents a security risk to your system."
+msgstr ""
 
-#. actions for the group item
-#: ../thunar/thunar-permissions-model.c:884
-msgid "Change _Group..."
+#: ../thunar/thunar-permissions-chooser.c:434
+msgid "Please wait..."
 msgstr ""
 
-#. append the "Grant Permission" action
-#: ../thunar/thunar-permissions-model.c:897
+#. display an error to the user
+#: ../thunar/thunar-permissions-chooser.c:545
 #, fuzzy
-msgid "_Grant Permission"
-msgstr "Jogok"
+msgid "Failed to change group"
+msgstr "Nem törölhető: %s"
 
-#. append the "Deny Permission" action
-#: ../thunar/thunar-permissions-model.c:906
+#. display an error to the user
+#: ../thunar/thunar-permissions-chooser.c:580
 #, fuzzy
-msgid "_Deny Permission"
-msgstr "Jogok"
+msgid "Failed to apply new permissions"
+msgstr "Nem törölhető: %s"
 
-#: ../thunar/thunar-permissions-view.c:213
-msgid ""
-"For special permissions and for\n"
-"advanced settings, click Advanced."
+#. allocate the question dialog
+#: ../thunar/thunar-permissions-chooser.c:619
+#: ../thunar/thunar-permissions-chooser.c:961
+#: ../thunar/thunar-progress-dialog.c:295
+msgid "Question"
+msgstr "Kérdés"
+
+#: ../thunar/thunar-permissions-chooser.c:642
+msgid "Apply recursively?"
 msgstr ""
 
-#: ../thunar/thunar-permissions-view.c:222
-msgid "_Advanced..."
+#: ../thunar/thunar-permissions-chooser.c:648
+msgid ""
+"Do you want to apply your changes recursively to\n"
+"all files and subfolder below the selected folder?"
 msgstr ""
 
-#: ../thunar/thunar-permissions-view.c:223
-msgid "Click here for special permissions and for advanced settings."
+#: ../thunar/thunar-permissions-chooser.c:653
+msgid "Do _not ask me again"
 msgstr ""
 
-#: ../thunar/thunar-permissions-view.c:243
-msgid ""
-"You are not the owner of this file, so\n"
-"you cannot change these permissions."
+#: ../thunar/thunar-permissions-chooser.c:851
+msgid "Unknown file owner"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:184
+#: ../thunar/thunar-permissions-chooser.c:990
+#: ../thunar/thunar-progress-dialog.c:321
+msgid "_Yes"
+msgstr "_Igen"
+
+#: ../thunar/thunar-permissions-chooser.c:994
+#: ../thunar/thunar-progress-dialog.c:325
+msgid "Yes to _all"
+msgstr "_Mind"
+
+#: ../thunar/thunar-permissions-chooser.c:998
+#: ../thunar/thunar-progress-dialog.c:329
+msgid "_No"
+msgstr "_Nem"
+
+#: ../thunar/thunar-permissions-chooser.c:1002
+#: ../thunar/thunar-progress-dialog.c:333
+msgid "_Cancel"
+msgstr "_Csendet!"
+
+#: ../thunar/thunar-preferences-dialog.c:186
 #, fuzzy
 msgid "File Manager Preferences"
 msgstr "Fájlkezelő"
 
-#: ../thunar/thunar-preferences-dialog.c:200
-msgid "<b>Default View</b>"
-msgstr ""
+#.
+#. Views
+#.
+#: ../thunar/thunar-preferences-dialog.c:203
+#, fuzzy
+msgid "Views"
+msgstr "_Nézet"
+
+#: ../thunar/thunar-preferences-dialog.c:213
+#, fuzzy
+msgid "Default View"
+msgstr "Részletes nézet"
 
-#: ../thunar/thunar-preferences-dialog.c:211
+#: ../thunar/thunar-preferences-dialog.c:225
 msgid "View _new folders using:"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:216
+#: ../thunar/thunar-preferences-dialog.c:230
+#: ../thunar/thunar-preferences-dialog.c:267
 #, fuzzy
 msgid "Icon View"
 msgstr "Ikonnézet"
 
-#: ../thunar/thunar-preferences-dialog.c:217
+#: ../thunar/thunar-preferences-dialog.c:231
 #, fuzzy
 msgid "Detailed List View"
 msgstr "Részletes nézet"
 
-#: ../thunar/thunar-preferences-dialog.c:218
+#: ../thunar/thunar-preferences-dialog.c:232
 msgid "Last Active View"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:233
+#: ../thunar/thunar-preferences-dialog.c:249
 msgid "Sort _folders before files"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:235
+#: ../thunar/thunar-preferences-dialog.c:251
 msgid "Select this option to list folders before files when you sort a folder."
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:239
+#: ../thunar/thunar-preferences-dialog.c:255
 #, fuzzy
 msgid "Show hidden and _backup files"
 msgstr "Rejtett fájlok mutatása"
 
-#: ../thunar/thunar-preferences-dialog.c:241
+#: ../thunar/thunar-preferences-dialog.c:257
 msgid ""
 "Select this option to show hidden and backup files in new windows. The first "
 "character in a hidden filename is a period (.). The last character in a "
 "backup filename is a tilde (~)."
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:251
-#, fuzzy
-msgid "<b>Icon View</b>"
-msgstr "Ikonnézet"
-
-#: ../thunar/thunar-preferences-dialog.c:262
+#: ../thunar/thunar-preferences-dialog.c:279
 msgid "_Text beside icons"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:264
+#: ../thunar/thunar-preferences-dialog.c:281
 msgid ""
 "Select this option to place the icon captions for items beside the icon "
 "rather than below the icon."
 msgstr ""
 
-#: ../thunar/thunar-preferences.c:255
+#.
+#. Advanced
+#.
+#: ../thunar/thunar-preferences-dialog.c:290
+msgid "Advanced"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:300
+msgid "Miscellaneous"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:312
+msgid "Apply permissions _recursively:"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:317
+msgid "Ask everytime"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:318
+msgid "Always"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:319
+msgid "Never"
+msgstr ""
+
+#: ../thunar/thunar-preferences.c:272
 #, fuzzy, c-format
 msgid "Failed to create the Thunar configuration directory in %s"
 msgstr "Nem hozható létre ez a könyvtár: %s"
 
-#: ../thunar/thunar-preferences.c:263
+#: ../thunar/thunar-preferences.c:280
 #, fuzzy, c-format
 msgid "Failed to open preferences database in %s: %s"
 msgstr "Nem törölhető: %s"
 
-#: ../thunar/thunar-progress-dialog.c:150
+#: ../thunar/thunar-progress-dialog.c:151
 msgid "Job"
 msgstr ""
 
-#: ../thunar/thunar-progress-dialog.c:151
+#: ../thunar/thunar-progress-dialog.c:152
 msgid "The job whose progress to display"
 msgstr ""
 
-#: ../thunar/thunar-progress-dialog.c:303
-msgid "Question"
-msgstr "Kérdés"
-
-#: ../thunar/thunar-progress-dialog.c:329
-msgid "_Yes"
-msgstr "_Igen"
-
-#: ../thunar/thunar-progress-dialog.c:333
-msgid "Yes to _all"
-msgstr "_Mind"
-
-#: ../thunar/thunar-progress-dialog.c:337
-msgid "_No"
-msgstr "_Nem"
-
-#: ../thunar/thunar-progress-dialog.c:341
-msgid "_Cancel"
-msgstr "_Csendet!"
-
-#: ../thunar/thunar-progress-dialog.c:467
+#: ../thunar/thunar-progress-dialog.c:459
 #, c-format
 msgid "(%lu hour remaining)"
 msgid_plural "(%lu hours remaining)"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../thunar/thunar-progress-dialog.c:472
+#: ../thunar/thunar-progress-dialog.c:464
 #, c-format
 msgid "(%lu minute remaining)"
 msgid_plural "(%lu minutes remaining)"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../thunar/thunar-progress-dialog.c:477
+#: ../thunar/thunar-progress-dialog.c:469
 #, c-format
 msgid "(%lu second remaining)"
 msgid_plural "(%lu seconds remaining)"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../thunar/thunar-properties-dialog.c:173
+#: ../thunar/thunar-properties-dialog.c:174
 msgid "The file displayed by the dialog"
 msgstr ""
 
-#: ../thunar/thunar-properties-dialog.c:220
+#: ../thunar/thunar-properties-dialog.c:212
 msgid "General"
 msgstr "Általános"
 
-#: ../thunar/thunar-properties-dialog.c:237
+#: ../thunar/thunar-properties-dialog.c:229
 msgid "Name:"
 msgstr "Név"
 
 #.
 #. Second box (kind)
 #.
-#: ../thunar/thunar-properties-dialog.c:262
+#: ../thunar/thunar-properties-dialog.c:254
 msgid "Kind:"
 msgstr "Típus:"
 
 #.
 #. Third box (modified, accessed)
 #.
-#: ../thunar/thunar-properties-dialog.c:287
+#: ../thunar/thunar-properties-dialog.c:279
 msgid "Modified:"
 msgstr "Módosítva:"
 
-#: ../thunar/thunar-properties-dialog.c:300
+#: ../thunar/thunar-properties-dialog.c:292
 msgid "Accessed:"
 msgstr "Megnyitva:"
 
 #.
 #. Fourth box (volume, size)
 #.
-#: ../thunar/thunar-properties-dialog.c:324
+#: ../thunar/thunar-properties-dialog.c:316
 msgid "Volume:"
 msgstr "Kötet:"
 
-#: ../thunar/thunar-properties-dialog.c:347
+#: ../thunar/thunar-properties-dialog.c:339
 msgid "Size:"
 msgstr "Méret:"
 
 #.
 #. Emblem chooser
 #.
-#: ../thunar/thunar-properties-dialog.c:371
+#: ../thunar/thunar-properties-dialog.c:363
 msgid "Emblems"
 msgstr ""
 
-#: ../thunar/thunar-properties-dialog.c:618
+#: ../thunar/thunar-properties-dialog.c:606
 #, c-format
 msgid "%s Info"
 msgstr "%s Info"
 
-#: ../thunar/thunar-properties-dialog.c:699
+#: ../thunar/thunar-properties-dialog.c:687
 #, c-format
 msgid "%s (%u Bytes)"
 msgstr "%s (%u bájt)"
 
 #. display an error message
-#: ../thunar/thunar-properties-dialog.c:745
+#: ../thunar/thunar-properties-dialog.c:733
 #: ../thunar/thunar-standard-view.c:2170
 #, fuzzy, c-format
 msgid "Failed to rename `%s'"
@@ -1388,28 +1406,28 @@ msgstr "Állapotsor szöveg"
 msgid "The main text to be displayed in the statusbar"
 msgstr "Az állapotsor fő szövege"
 
-#: ../thunar/thunar-text-renderer.c:215
+#: ../thunar/thunar-text-renderer.c:216
 msgid "Text"
 msgstr "Szöveg"
 
-#: ../thunar/thunar-text-renderer.c:216
+#: ../thunar/thunar-text-renderer.c:217
 msgid "The text to render"
 msgstr "A kiírandó szöveg"
 
-#: ../thunar/thunar-text-renderer.c:230
+#: ../thunar/thunar-text-renderer.c:231
 msgid "Wrap mode"
 msgstr ""
 
-#: ../thunar/thunar-text-renderer.c:231
+#: ../thunar/thunar-text-renderer.c:232
 #, fuzzy
 msgid "The wrap mode"
 msgstr "A tároló mappák"
 
-#: ../thunar/thunar-text-renderer.c:246
+#: ../thunar/thunar-text-renderer.c:247
 msgid "Wrap width"
 msgstr ""
 
-#: ../thunar/thunar-text-renderer.c:247
+#: ../thunar/thunar-text-renderer.c:248
 msgid "The wrap width"
 msgstr ""
 
@@ -1907,3 +1925,35 @@ msgstr "Fájlkezelő"
 #, fuzzy
 msgid "Thunar File Manager"
 msgstr "Fájlkezelő"
+
+#, fuzzy
+#~ msgid "Advanced Permissions"
+#~ msgstr "Jogok"
+
+#, fuzzy
+#~ msgid "Failed to change the group to which `%s' belongs"
+#~ msgstr "Nem törölhető: %s"
+
+#, fuzzy
+#~ msgid "%s (%s)"
+#~ msgstr "\"%s\" (%s) %s"
+
+#, fuzzy
+#~ msgid "List folder contents"
+#~ msgstr "Mappa beolvasása..."
+
+#, fuzzy
+#~ msgid "Execute"
+#~ msgstr "Minden fájl kiválasztása"
+
+#, fuzzy
+#~ msgid "_Grant Permission"
+#~ msgstr "Jogok"
+
+#, fuzzy
+#~ msgid "_Deny Permission"
+#~ msgstr "Jogok"
+
+#, fuzzy
+#~ msgid "<b>Icon View</b>"
+#~ msgstr "Ikonnézet"
diff --git a/po/it.po b/po/it.po
index c30655538815672a5c854ed99b9973a587456efa..12ff0ca56b3187f504db08620e1910b2423d3ef6 100644
--- a/po/it.po
+++ b/po/it.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Thunar 0.1.4svn\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-01-04 18:34+0100\n"
+"POT-Creation-Date: 2006-01-08 22:45+0100\n"
 "PO-Revision-Date: 2005-12-22 05:26+0100\n"
 "Last-Translator: Roberto Pariset <r.pariset@gmail.com>\n"
 "Language-Team: GUFI <traduzioni@gufi.org>\n"
@@ -19,23 +19,67 @@ msgstr ""
 "X-Poedit-Country: ITALY\n"
 "X-Poedit-SourceCharset: utf-8\n"
 
-#: ../thunar-vfs/thunar-vfs-info.c:362
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:168
+#: ../thunar-vfs/thunar-vfs-chown-job.c:166
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:267
+msgid "Collecting files..."
+msgstr "Raccolta file in corso..."
+
+#. ask the user whether we should skip the file
+#. ask the user whether to skip this file (used for cancellation only)
+#. ask the user whether to skip
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:189
+#: ../thunar-vfs/thunar-vfs-chown-job.c:187
+#: ../thunar-vfs/thunar-vfs-link-job.c:212
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:747
+#, c-format
+msgid ""
+"%s.\n"
+"\n"
+"Do you want to skip it?"
+msgstr ""
+"%s. \n"
+"\n"
+"Si desidera saltarlo?"
+
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:246
+#: ../thunar-vfs/thunar-vfs-chown-job.c:244
+#, fuzzy, c-format
+msgid "Failed to determine file info of `%s': %s"
+msgstr "Impossibile reperire informazioni per il file `%s'"
+
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:272
+#, fuzzy, c-format
+msgid "Failed to change permissions of `%s': %s"
+msgstr "Impossibile cambiare modalità di `%s'"
+
+#: ../thunar-vfs/thunar-vfs-chown-job.c:260
+#, fuzzy, c-format
+msgid "Failed to change file owner of `%s': %s"
+msgstr "Impossibile cambiare modalità di `%s'"
+
+#: ../thunar-vfs/thunar-vfs-chown-job.c:262
+#, fuzzy, c-format
+msgid "Failed to change file group of `%s': %s"
+msgstr "Impossibile cambiare modalità di `%s'"
+
+#: ../thunar-vfs/thunar-vfs-info.c:261
 msgid "No Exec field specified"
 msgstr "Campo Exec non specificato"
 
-#: ../thunar-vfs/thunar-vfs-info.c:370
+#: ../thunar-vfs/thunar-vfs-info.c:269
 msgid "Unable to parse file"
 msgstr "Impossibile fare il parsing del file"
 
-#: ../thunar-vfs/thunar-vfs-info.c:460
+#: ../thunar-vfs/thunar-vfs-info.c:359
 msgid "Invalid file name"
 msgstr "Nome del file non valido"
 
-#: ../thunar-vfs/thunar-vfs-info.c:482
+#: ../thunar-vfs/thunar-vfs-info.c:381
 msgid "Invalid desktop file"
 msgstr "Desktop file non valido"
 
-#: ../thunar-vfs/thunar-vfs-info.c:716
+#: ../thunar-vfs/thunar-vfs-info.c:615
 #, c-format
 msgid "Failed to stat file `%s': %s"
 msgstr "Stat del file `%s' fallito: %s"
@@ -59,20 +103,6 @@ msgstr ""
 msgid "Failed to remove `%s': %s"
 msgstr "Impossibile rimuovere `%s': %s"
 
-#. ask the user whether to skip this file (used for cancellation only)
-#. ask the user whether to skip
-#: ../thunar-vfs/thunar-vfs-link-job.c:212
-#: ../thunar-vfs/thunar-vfs-transfer-job.c:747
-#, c-format
-msgid ""
-"%s.\n"
-"\n"
-"Do you want to skip it?"
-msgstr ""
-"%s. \n"
-"\n"
-"Si desidera saltarlo?"
-
 #: ../thunar-vfs/thunar-vfs-mime-database.c:1657
 #, c-format
 msgid "Failed to load application from file %s"
@@ -105,10 +135,6 @@ msgstr "Dimensione"
 msgid "The desired thumbnail size"
 msgstr "Dimensione desiderata della miniatura"
 
-#: ../thunar-vfs/thunar-vfs-transfer-job.c:267
-msgid "Collecting files..."
-msgstr "Raccolta file in corso..."
-
 #. display info message
 #: ../thunar-vfs/thunar-vfs-transfer-job.c:329
 msgid "Deleting directories..."
@@ -151,7 +177,7 @@ msgid "copy of %s"
 msgstr ""
 
 #: ../thunar-vfs/thunar-vfs-xfer.c:158 ../thunar/thunar-list-model.c:703
-#: ../thunar/thunar-properties-dialog.c:643
+#: ../thunar/thunar-properties-dialog.c:631
 #, c-format
 msgid "link to %s"
 msgstr ""
@@ -267,58 +293,6 @@ msgstr "Impossibile creare link simbolico `%s'"
 msgid "Thunar"
 msgstr "Thunar"
 
-#: ../thunar/thunar-advanced-permissions-dialog.c:159
-#, fuzzy
-msgid "Advanced Permissions"
-msgstr "Permessi"
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:167
-msgid "Special Bits"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:180
-msgid "Set _User ID (SUID)"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:190
-msgid ""
-"An executable file whose Set User ID (SUID) bit is\n"
-"set will always be executed with the privileges of\n"
-"the owner of the executable."
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:211
-msgid "Set _Group ID (SGID)"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:221
-msgid ""
-"An executable file whose Set Group ID (SGID) bit is\n"
-"set will always be executed with the privileges of the\n"
-"group of the executable."
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:242
-msgid "_Sticky"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:252
-msgid ""
-"A file in a sticky directory may only be removed or\n"
-"renamed by a user if the user has write permission\n"
-"for the directory and the user is the owner of the\n"
-"file, the owner of the directory or the superuser."
-msgstr ""
-
-#. display an error message to the user
-#. display an error to the user (when we get here, we definitely have a valid file!)
-#: ../thunar/thunar-advanced-permissions-dialog.c:356
-#: ../thunar/thunar-permissions-model.c:830
-#: ../thunar/thunar-permissions-view.c:494
-#, fuzzy, c-format
-msgid "Failed to change permissions of `%s'"
-msgstr "Impossibile cambiare modalità di `%s'"
-
 #. display an error message to the user
 #: ../thunar/thunar-application.c:222
 msgid "Failed to launch operation"
@@ -344,25 +318,11 @@ msgstr "Eliminazione dei file in corso..."
 msgid "Creating directories..."
 msgstr "Creazione directory in corso..."
 
-#: ../thunar/thunar-change-group-dialog.c:193
-msgid "Change Group"
-msgstr ""
-
-#: ../thunar/thunar-change-group-dialog.c:200
-msgid "_Group:"
-msgstr ""
-
-#. display an error message
-#: ../thunar/thunar-change-group-dialog.c:309
-#, fuzzy, c-format
-msgid "Failed to change the group to which `%s' belongs"
-msgstr "Impossibile cambiare modalità di `%s'"
-
 #: ../thunar/thunar-chooser-dialog.c:169 ../thunar/thunar-emblem-chooser.c:147
 #: ../thunar/thunar-emblem-chooser.c:148 ../thunar/thunar-icon-renderer.c:161
 #: ../thunar/thunar-open-with-action.c:146
 #: ../thunar/thunar-open-with-action.c:147
-#: ../thunar/thunar-properties-dialog.c:172 ../thunar/thunar-statusbar.c:190
+#: ../thunar/thunar-properties-dialog.c:173 ../thunar/thunar-statusbar.c:190
 msgid "File"
 msgstr "File"
 
@@ -414,37 +374,37 @@ msgid "Failed to execute `%s'"
 msgstr "Impossibile eseguire `%s'"
 
 #. update the header label
-#: ../thunar/thunar-chooser-dialog.c:612
+#: ../thunar/thunar-chooser-dialog.c:613
 #, c-format
 msgid "Open <i>%s</i> and other files of type \"%s\" with:"
 msgstr "Aprire <i>%s</i> e altri file di tipo \"%s\" con:"
 
-#: ../thunar/thunar-chooser-dialog.c:634 ../thunar-uca/thunar-uca-editor.c:491
+#: ../thunar/thunar-chooser-dialog.c:635 ../thunar-uca/thunar-uca-editor.c:491
 msgid "Select an Application"
 msgstr "Selezionare un'applicazione"
 
-#: ../thunar/thunar-chooser-dialog.c:644 ../thunar-uca/thunar-uca-editor.c:501
+#: ../thunar/thunar-chooser-dialog.c:645 ../thunar-uca/thunar-uca-editor.c:501
 #: ../thunar-uca/thunar-uca-editor.c:640
 msgid "All Files"
 msgstr "Tutti i file"
 
-#: ../thunar/thunar-chooser-dialog.c:649 ../thunar-uca/thunar-uca-editor.c:506
+#: ../thunar/thunar-chooser-dialog.c:650 ../thunar-uca/thunar-uca-editor.c:506
 msgid "Executable Files"
 msgstr "File eseguibili"
 
-#: ../thunar/thunar-chooser-dialog.c:664 ../thunar-uca/thunar-uca-editor.c:521
+#: ../thunar/thunar-chooser-dialog.c:665 ../thunar-uca/thunar-uca-editor.c:521
 msgid "Perl Scripts"
 msgstr "Script Perl"
 
-#: ../thunar/thunar-chooser-dialog.c:670 ../thunar-uca/thunar-uca-editor.c:527
+#: ../thunar/thunar-chooser-dialog.c:671 ../thunar-uca/thunar-uca-editor.c:527
 msgid "Python Scripts"
 msgstr "Script Python"
 
-#: ../thunar/thunar-chooser-dialog.c:676 ../thunar-uca/thunar-uca-editor.c:533
+#: ../thunar/thunar-chooser-dialog.c:677 ../thunar-uca/thunar-uca-editor.c:533
 msgid "Ruby Scripts"
 msgstr "Script Ruby"
 
-#: ../thunar/thunar-chooser-dialog.c:682 ../thunar-uca/thunar-uca-editor.c:539
+#: ../thunar/thunar-chooser-dialog.c:683 ../thunar-uca/thunar-uca-editor.c:539
 msgid "Shell Scripts"
 msgstr "Script Shell"
 
@@ -517,7 +477,7 @@ msgstr "Nome"
 #. Permissions chooser
 #.
 #: ../thunar/thunar-details-view.c:197
-#: ../thunar/thunar-properties-dialog.c:382
+#: ../thunar/thunar-properties-dialog.c:374
 msgid "Permissions"
 msgstr "Permessi"
 
@@ -568,11 +528,11 @@ msgstr "Impossibile eseguire il file `%s'"
 msgid "The root folder has no parent"
 msgstr ""
 
-#: ../thunar/thunar-file.c:1032
+#: ../thunar/thunar-file.c:967
 msgid "Filesystem"
 msgstr "Filesystem"
 
-#: ../thunar/thunar-file.c:1056
+#: ../thunar/thunar-file.c:991
 msgid "Home"
 msgstr "Home"
 
@@ -629,7 +589,7 @@ msgid "The file whose icon to render"
 msgstr ""
 
 #: ../thunar/thunar-icon-renderer.c:177 ../thunar/thunar-icon-renderer.c:178
-#: ../thunar/thunar-text-renderer.c:202 ../thunar/thunar-text-renderer.c:203
+#: ../thunar/thunar-text-renderer.c:203 ../thunar/thunar-text-renderer.c:204
 msgid "Follow state"
 msgstr ""
 
@@ -804,7 +764,7 @@ msgstr "Mostra file nascosti"
 msgid "Whether to display hidden files"
 msgstr "Se mostrare file nascosti"
 
-#: ../thunar/thunar-list-model.c:701 ../thunar/thunar-properties-dialog.c:641
+#: ../thunar/thunar-list-model.c:701 ../thunar/thunar-properties-dialog.c:629
 msgid "broken link"
 msgstr ""
 
@@ -844,11 +804,11 @@ msgid_plural "%d items selected (%s)"
 msgstr[0] "%d elemento selezionato"
 msgstr[1] "%d elementi selezionati (%s)"
 
-#: ../thunar/thunar-location-buttons.c:258
+#: ../thunar/thunar-location-buttons.c:257
 msgid "Spacing"
 msgstr ""
 
-#: ../thunar/thunar-location-buttons.c:259
+#: ../thunar/thunar-location-buttons.c:258
 msgid "The amount of space between the path buttons"
 msgstr "Quantità di spazio tra i bottoni della path"
 
@@ -892,255 +852,314 @@ msgstr "Il file visualizzato correntemente"
 msgid "The icon size for the path entry"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:440
-#, fuzzy, c-format
-msgid "%s (%s)"
-msgstr "\"%s\" (%s) %s"
+#. 0000
+#: ../thunar/thunar-permissions-chooser.c:234
+msgid "None"
+msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:447
-msgid "Unknown file owner"
+#. 0002
+#: ../thunar/thunar-permissions-chooser.c:236
+msgid "Write only"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:460
-msgid "Unknown file group"
+#. 0004
+#: ../thunar/thunar-permissions-chooser.c:238
+msgid "Read only"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:465
-msgid "All other users"
+#. 0006
+#: ../thunar/thunar-permissions-chooser.c:240
+msgid "Read & Write"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:474
-msgid "Read"
+#: ../thunar/thunar-permissions-chooser.c:252
+msgid "Owner:"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:478
-msgid "Write"
+#: ../thunar/thunar-permissions-chooser.c:266
+msgid "Unknown"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:482
+#: ../thunar/thunar-permissions-chooser.c:280
+#: ../thunar/thunar-permissions-chooser.c:335
 #, fuzzy
-msgid "List folder contents"
-msgstr "Caricamento dei contenuti della cartella in corso..."
+msgid "Access:"
+msgstr "Acceduto:"
+
+#: ../thunar/thunar-permissions-chooser.c:309
+msgid "Group:"
+msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:482
+#: ../thunar/thunar-permissions-chooser.c:364
 #, fuzzy
-msgid "Execute"
-msgstr "_Esegui"
+msgid "Others:"
+msgstr "Altri file"
+
+#: ../thunar/thunar-permissions-chooser.c:393
+msgid "Program:"
+msgstr ""
 
-#. actions for the group item
-#: ../thunar/thunar-permissions-model.c:884
-msgid "Change _Group..."
+#: ../thunar/thunar-permissions-chooser.c:399
+msgid "Allow this file to _run as a program"
 msgstr ""
 
-#. append the "Grant Permission" action
-#: ../thunar/thunar-permissions-model.c:897
+#: ../thunar/thunar-permissions-chooser.c:423
+msgid ""
+"Allowing untrusted programs to run \n"
+"presents a security risk to your system."
+msgstr ""
+
+#: ../thunar/thunar-permissions-chooser.c:434
+msgid "Please wait..."
+msgstr ""
+
+#. display an error to the user
+#: ../thunar/thunar-permissions-chooser.c:545
 #, fuzzy
-msgid "_Grant Permission"
-msgstr "Permessi"
+msgid "Failed to change group"
+msgstr "Impossibile cambiare modalità di `%s'"
 
-#. append the "Deny Permission" action
-#: ../thunar/thunar-permissions-model.c:906
+#. display an error to the user
+#: ../thunar/thunar-permissions-chooser.c:580
 #, fuzzy
-msgid "_Deny Permission"
-msgstr "Permessi"
+msgid "Failed to apply new permissions"
+msgstr "Impossibile cambiare modalità di `%s'"
 
-#: ../thunar/thunar-permissions-view.c:213
-msgid ""
-"For special permissions and for\n"
-"advanced settings, click Advanced."
+#. allocate the question dialog
+#: ../thunar/thunar-permissions-chooser.c:619
+#: ../thunar/thunar-permissions-chooser.c:961
+#: ../thunar/thunar-progress-dialog.c:295
+msgid "Question"
+msgstr "Domanda"
+
+#: ../thunar/thunar-permissions-chooser.c:642
+msgid "Apply recursively?"
 msgstr ""
 
-#: ../thunar/thunar-permissions-view.c:222
-msgid "_Advanced..."
+#: ../thunar/thunar-permissions-chooser.c:648
+msgid ""
+"Do you want to apply your changes recursively to\n"
+"all files and subfolder below the selected folder?"
 msgstr ""
 
-#: ../thunar/thunar-permissions-view.c:223
-msgid "Click here for special permissions and for advanced settings."
+#: ../thunar/thunar-permissions-chooser.c:653
+msgid "Do _not ask me again"
 msgstr ""
 
-#: ../thunar/thunar-permissions-view.c:243
-msgid ""
-"You are not the owner of this file, so\n"
-"you cannot change these permissions."
+#: ../thunar/thunar-permissions-chooser.c:851
+msgid "Unknown file owner"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:184
+#: ../thunar/thunar-permissions-chooser.c:990
+#: ../thunar/thunar-progress-dialog.c:321
+msgid "_Yes"
+msgstr "_Sì"
+
+#: ../thunar/thunar-permissions-chooser.c:994
+#: ../thunar/thunar-progress-dialog.c:325
+msgid "Yes to _all"
+msgstr "Sì a tutti"
+
+#: ../thunar/thunar-permissions-chooser.c:998
+#: ../thunar/thunar-progress-dialog.c:329
+msgid "_No"
+msgstr "_No"
+
+#: ../thunar/thunar-permissions-chooser.c:1002
+#: ../thunar/thunar-progress-dialog.c:333
+msgid "_Cancel"
+msgstr "_Cancella"
+
+#: ../thunar/thunar-preferences-dialog.c:186
 msgid "File Manager Preferences"
 msgstr "Preferenze del File Manager"
 
-#: ../thunar/thunar-preferences-dialog.c:200
-msgid "<b>Default View</b>"
-msgstr ""
+#.
+#. Views
+#.
+#: ../thunar/thunar-preferences-dialog.c:203
+#, fuzzy
+msgid "Views"
+msgstr "Vista"
+
+#: ../thunar/thunar-preferences-dialog.c:213
+#, fuzzy
+msgid "Default View"
+msgstr "Vista dettagliata"
 
-#: ../thunar/thunar-preferences-dialog.c:211
+#: ../thunar/thunar-preferences-dialog.c:225
 msgid "View _new folders using:"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:216
+#: ../thunar/thunar-preferences-dialog.c:230
+#: ../thunar/thunar-preferences-dialog.c:267
 msgid "Icon View"
 msgstr "Vista a icone"
 
-#: ../thunar/thunar-preferences-dialog.c:217
+#: ../thunar/thunar-preferences-dialog.c:231
 #, fuzzy
 msgid "Detailed List View"
 msgstr "Vista dettagliata"
 
-#: ../thunar/thunar-preferences-dialog.c:218
+#: ../thunar/thunar-preferences-dialog.c:232
 msgid "Last Active View"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:233
+#: ../thunar/thunar-preferences-dialog.c:249
 msgid "Sort _folders before files"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:235
+#: ../thunar/thunar-preferences-dialog.c:251
 msgid "Select this option to list folders before files when you sort a folder."
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:239
+#: ../thunar/thunar-preferences-dialog.c:255
 msgid "Show hidden and _backup files"
 msgstr "Mostra file nascosti e di _backup"
 
-#: ../thunar/thunar-preferences-dialog.c:241
+#: ../thunar/thunar-preferences-dialog.c:257
 msgid ""
 "Select this option to show hidden and backup files in new windows. The first "
 "character in a hidden filename is a period (.). The last character in a "
 "backup filename is a tilde (~)."
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:251
-msgid "<b>Icon View</b>"
-msgstr "<b>Vista a icone</b>"
-
-#: ../thunar/thunar-preferences-dialog.c:262
+#: ../thunar/thunar-preferences-dialog.c:279
 msgid "_Text beside icons"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:264
+#: ../thunar/thunar-preferences-dialog.c:281
 msgid ""
 "Select this option to place the icon captions for items beside the icon "
 "rather than below the icon."
 msgstr ""
 
-#: ../thunar/thunar-preferences.c:255
+#.
+#. Advanced
+#.
+#: ../thunar/thunar-preferences-dialog.c:290
+msgid "Advanced"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:300
+msgid "Miscellaneous"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:312
+msgid "Apply permissions _recursively:"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:317
+msgid "Ask everytime"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:318
+msgid "Always"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:319
+msgid "Never"
+msgstr ""
+
+#: ../thunar/thunar-preferences.c:272
 #, c-format
 msgid "Failed to create the Thunar configuration directory in %s"
 msgstr ""
 
-#: ../thunar/thunar-preferences.c:263
+#: ../thunar/thunar-preferences.c:280
 #, c-format
 msgid "Failed to open preferences database in %s: %s"
 msgstr ""
 
-#: ../thunar/thunar-progress-dialog.c:150
+#: ../thunar/thunar-progress-dialog.c:151
 msgid "Job"
 msgstr "Job"
 
-#: ../thunar/thunar-progress-dialog.c:151
+#: ../thunar/thunar-progress-dialog.c:152
 msgid "The job whose progress to display"
 msgstr ""
 
-#: ../thunar/thunar-progress-dialog.c:303
-msgid "Question"
-msgstr "Domanda"
-
-#: ../thunar/thunar-progress-dialog.c:329
-msgid "_Yes"
-msgstr "_Sì"
-
-#: ../thunar/thunar-progress-dialog.c:333
-msgid "Yes to _all"
-msgstr "Sì a tutti"
-
-#: ../thunar/thunar-progress-dialog.c:337
-msgid "_No"
-msgstr "_No"
-
-#: ../thunar/thunar-progress-dialog.c:341
-msgid "_Cancel"
-msgstr "_Cancella"
-
-#: ../thunar/thunar-progress-dialog.c:467
+#: ../thunar/thunar-progress-dialog.c:459
 #, c-format
 msgid "(%lu hour remaining)"
 msgid_plural "(%lu hours remaining)"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../thunar/thunar-progress-dialog.c:472
+#: ../thunar/thunar-progress-dialog.c:464
 #, c-format
 msgid "(%lu minute remaining)"
 msgid_plural "(%lu minutes remaining)"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../thunar/thunar-progress-dialog.c:477
+#: ../thunar/thunar-progress-dialog.c:469
 #, c-format
 msgid "(%lu second remaining)"
 msgid_plural "(%lu seconds remaining)"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../thunar/thunar-properties-dialog.c:173
+#: ../thunar/thunar-properties-dialog.c:174
 msgid "The file displayed by the dialog"
 msgstr ""
 
-#: ../thunar/thunar-properties-dialog.c:220
+#: ../thunar/thunar-properties-dialog.c:212
 msgid "General"
 msgstr "Generale"
 
-#: ../thunar/thunar-properties-dialog.c:237
+#: ../thunar/thunar-properties-dialog.c:229
 msgid "Name:"
 msgstr "Nome:"
 
 #.
 #. Second box (kind)
 #.
-#: ../thunar/thunar-properties-dialog.c:262
+#: ../thunar/thunar-properties-dialog.c:254
 msgid "Kind:"
 msgstr "Tipo:"
 
 #.
 #. Third box (modified, accessed)
 #.
-#: ../thunar/thunar-properties-dialog.c:287
+#: ../thunar/thunar-properties-dialog.c:279
 msgid "Modified:"
 msgstr "Modificato:"
 
-#: ../thunar/thunar-properties-dialog.c:300
+#: ../thunar/thunar-properties-dialog.c:292
 msgid "Accessed:"
 msgstr "Acceduto:"
 
 #.
 #. Fourth box (volume, size)
 #.
-#: ../thunar/thunar-properties-dialog.c:324
+#: ../thunar/thunar-properties-dialog.c:316
 msgid "Volume:"
 msgstr "Volume:"
 
-#: ../thunar/thunar-properties-dialog.c:347
+#: ../thunar/thunar-properties-dialog.c:339
 msgid "Size:"
 msgstr "Dimensione:"
 
 #.
 #. Emblem chooser
 #.
-#: ../thunar/thunar-properties-dialog.c:371
+#: ../thunar/thunar-properties-dialog.c:363
 msgid "Emblems"
 msgstr ""
 
-#: ../thunar/thunar-properties-dialog.c:618
+#: ../thunar/thunar-properties-dialog.c:606
 #, c-format
 msgid "%s Info"
 msgstr "Informazioni su %s"
 
-#: ../thunar/thunar-properties-dialog.c:699
+#: ../thunar/thunar-properties-dialog.c:687
 #, c-format
 msgid "%s (%u Bytes)"
 msgstr "%s (%u Byte)"
 
 #. display an error message
-#: ../thunar/thunar-properties-dialog.c:745
+#: ../thunar/thunar-properties-dialog.c:733
 #: ../thunar/thunar-standard-view.c:2170
 #, c-format
 msgid "Failed to rename `%s'"
@@ -1371,27 +1390,27 @@ msgstr "Testo della barra di stato"
 msgid "The main text to be displayed in the statusbar"
 msgstr "Il testo principale da mostrare nella barra di stato "
 
-#: ../thunar/thunar-text-renderer.c:215
+#: ../thunar/thunar-text-renderer.c:216
 msgid "Text"
 msgstr "Testo"
 
-#: ../thunar/thunar-text-renderer.c:216
+#: ../thunar/thunar-text-renderer.c:217
 msgid "The text to render"
 msgstr ""
 
-#: ../thunar/thunar-text-renderer.c:230
+#: ../thunar/thunar-text-renderer.c:231
 msgid "Wrap mode"
 msgstr ""
 
-#: ../thunar/thunar-text-renderer.c:231
+#: ../thunar/thunar-text-renderer.c:232
 msgid "The wrap mode"
 msgstr ""
 
-#: ../thunar/thunar-text-renderer.c:246
+#: ../thunar/thunar-text-renderer.c:247
 msgid "Wrap width"
 msgstr ""
 
-#: ../thunar/thunar-text-renderer.c:247
+#: ../thunar/thunar-text-renderer.c:248
 msgid "The wrap width"
 msgstr ""
 
@@ -1869,3 +1888,34 @@ msgstr "File Manager"
 #: ../Thunar.desktop.in.h:3
 msgid "Thunar File Manager"
 msgstr "Thunar File Manager"
+
+#, fuzzy
+#~ msgid "Advanced Permissions"
+#~ msgstr "Permessi"
+
+#, fuzzy
+#~ msgid "Failed to change the group to which `%s' belongs"
+#~ msgstr "Impossibile cambiare modalità di `%s'"
+
+#, fuzzy
+#~ msgid "%s (%s)"
+#~ msgstr "\"%s\" (%s) %s"
+
+#, fuzzy
+#~ msgid "List folder contents"
+#~ msgstr "Caricamento dei contenuti della cartella in corso..."
+
+#, fuzzy
+#~ msgid "Execute"
+#~ msgstr "_Esegui"
+
+#, fuzzy
+#~ msgid "_Grant Permission"
+#~ msgstr "Permessi"
+
+#, fuzzy
+#~ msgid "_Deny Permission"
+#~ msgstr "Permessi"
+
+#~ msgid "<b>Icon View</b>"
+#~ msgstr "<b>Vista a icone</b>"
diff --git a/po/ja.po b/po/ja.po
index 5125adfa3dd14c1939960b495572564e21e23b43..567921423d9eded72ee8ffaf0af9d51d823e768f 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -13,7 +13,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Thunar 0.1.4svn\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-01-04 18:34+0100\n"
+"POT-Creation-Date: 2006-01-08 22:45+0100\n"
 "PO-Revision-Date: 2005-12-31 01:22+0900\n"
 "Last-Translator: Daichi Kawahata <daichi@xfce.org>\n"
 "Language-Team: Japanese <xfce-users-jp@ml.fdiary.net>\n"
@@ -22,23 +22,67 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: ../thunar-vfs/thunar-vfs-info.c:362
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:168
+#: ../thunar-vfs/thunar-vfs-chown-job.c:166
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:267
+msgid "Collecting files..."
+msgstr "ファイルを集めています..."
+
+#. ask the user whether we should skip the file
+#. ask the user whether to skip this file (used for cancellation only)
+#. ask the user whether to skip
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:189
+#: ../thunar-vfs/thunar-vfs-chown-job.c:187
+#: ../thunar-vfs/thunar-vfs-link-job.c:212
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:747
+#, c-format
+msgid ""
+"%s.\n"
+"\n"
+"Do you want to skip it?"
+msgstr ""
+"%s。\n"
+"\n"
+"これを飛ばしますか?"
+
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:246
+#: ../thunar-vfs/thunar-vfs-chown-job.c:244
+#, fuzzy, c-format
+msgid "Failed to determine file info of `%s': %s"
+msgstr "「%s」のファイル情報を確定するのに失敗しました。"
+
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:272
+#, fuzzy, c-format
+msgid "Failed to change permissions of `%s': %s"
+msgstr "「%s」のモード変更に失敗しました。"
+
+#: ../thunar-vfs/thunar-vfs-chown-job.c:260
+#, fuzzy, c-format
+msgid "Failed to change file owner of `%s': %s"
+msgstr "「%s」のモード変更に失敗しました。"
+
+#: ../thunar-vfs/thunar-vfs-chown-job.c:262
+#, fuzzy, c-format
+msgid "Failed to change file group of `%s': %s"
+msgstr "「%s」のモード変更に失敗しました。"
+
+#: ../thunar-vfs/thunar-vfs-info.c:261
 msgid "No Exec field specified"
 msgstr "実行コマンドが指定されていません。"
 
-#: ../thunar-vfs/thunar-vfs-info.c:370
+#: ../thunar-vfs/thunar-vfs-info.c:269
 msgid "Unable to parse file"
 msgstr "ファイルを解析できません。"
 
-#: ../thunar-vfs/thunar-vfs-info.c:460
+#: ../thunar-vfs/thunar-vfs-info.c:359
 msgid "Invalid file name"
 msgstr "無効なファイル名です。"
 
-#: ../thunar-vfs/thunar-vfs-info.c:482
+#: ../thunar-vfs/thunar-vfs-info.c:381
 msgid "Invalid desktop file"
 msgstr "無効なデスクトップファイルです。"
 
-#: ../thunar-vfs/thunar-vfs-info.c:716
+#: ../thunar-vfs/thunar-vfs-info.c:615
 #, c-format
 msgid "Failed to stat file `%s': %s"
 msgstr "ファイル「%s」の状態を取得するのに失敗しました: %s"
@@ -62,20 +106,6 @@ msgstr ""
 msgid "Failed to remove `%s': %s"
 msgstr "「%s」の削除に失敗しました: %s"
 
-#. ask the user whether to skip this file (used for cancellation only)
-#. ask the user whether to skip
-#: ../thunar-vfs/thunar-vfs-link-job.c:212
-#: ../thunar-vfs/thunar-vfs-transfer-job.c:747
-#, c-format
-msgid ""
-"%s.\n"
-"\n"
-"Do you want to skip it?"
-msgstr ""
-"%s。\n"
-"\n"
-"これを飛ばしますか?"
-
 #: ../thunar-vfs/thunar-vfs-mime-database.c:1657
 #, c-format
 msgid "Failed to load application from file %s"
@@ -107,10 +137,6 @@ msgstr "サイズ"
 msgid "The desired thumbnail size"
 msgstr "お望みのサムネイルサイズです。"
 
-#: ../thunar-vfs/thunar-vfs-transfer-job.c:267
-msgid "Collecting files..."
-msgstr "ファイルを集めています..."
-
 #. display info message
 #: ../thunar-vfs/thunar-vfs-transfer-job.c:329
 msgid "Deleting directories..."
@@ -155,7 +181,7 @@ msgstr "%s のコピー"
 
 # FIXME:
 #: ../thunar-vfs/thunar-vfs-xfer.c:158 ../thunar/thunar-list-model.c:703
-#: ../thunar/thunar-properties-dialog.c:643
+#: ../thunar/thunar-properties-dialog.c:631
 #, c-format
 msgid "link to %s"
 msgstr "%s へのリンク"
@@ -276,58 +302,6 @@ msgstr "リンク「%s」の作成に失敗しました。"
 msgid "Thunar"
 msgstr "Thunar"
 
-#: ../thunar/thunar-advanced-permissions-dialog.c:159
-#, fuzzy
-msgid "Advanced Permissions"
-msgstr "アクセス権"
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:167
-msgid "Special Bits"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:180
-msgid "Set _User ID (SUID)"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:190
-msgid ""
-"An executable file whose Set User ID (SUID) bit is\n"
-"set will always be executed with the privileges of\n"
-"the owner of the executable."
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:211
-msgid "Set _Group ID (SGID)"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:221
-msgid ""
-"An executable file whose Set Group ID (SGID) bit is\n"
-"set will always be executed with the privileges of the\n"
-"group of the executable."
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:242
-msgid "_Sticky"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:252
-msgid ""
-"A file in a sticky directory may only be removed or\n"
-"renamed by a user if the user has write permission\n"
-"for the directory and the user is the owner of the\n"
-"file, the owner of the directory or the superuser."
-msgstr ""
-
-#. display an error message to the user
-#. display an error to the user (when we get here, we definitely have a valid file!)
-#: ../thunar/thunar-advanced-permissions-dialog.c:356
-#: ../thunar/thunar-permissions-model.c:830
-#: ../thunar/thunar-permissions-view.c:494
-#, fuzzy, c-format
-msgid "Failed to change permissions of `%s'"
-msgstr "「%s」のモード変更に失敗しました。"
-
 #. display an error message to the user
 #: ../thunar/thunar-application.c:222
 msgid "Failed to launch operation"
@@ -353,25 +327,11 @@ msgstr "ファイルを削除しています..."
 msgid "Creating directories..."
 msgstr "フォルダを作成しています..."
 
-#: ../thunar/thunar-change-group-dialog.c:193
-msgid "Change Group"
-msgstr ""
-
-#: ../thunar/thunar-change-group-dialog.c:200
-msgid "_Group:"
-msgstr ""
-
-#. display an error message
-#: ../thunar/thunar-change-group-dialog.c:309
-#, fuzzy, c-format
-msgid "Failed to change the group to which `%s' belongs"
-msgstr "「%s」のモード変更に失敗しました。"
-
 #: ../thunar/thunar-chooser-dialog.c:169 ../thunar/thunar-emblem-chooser.c:147
 #: ../thunar/thunar-emblem-chooser.c:148 ../thunar/thunar-icon-renderer.c:161
 #: ../thunar/thunar-open-with-action.c:146
 #: ../thunar/thunar-open-with-action.c:147
-#: ../thunar/thunar-properties-dialog.c:172 ../thunar/thunar-statusbar.c:190
+#: ../thunar/thunar-properties-dialog.c:173 ../thunar/thunar-statusbar.c:190
 msgid "File"
 msgstr "ファイル"
 
@@ -421,37 +381,37 @@ msgid "Failed to execute `%s'"
 msgstr "「%s」の実行に失敗しました。"
 
 #. update the header label
-#: ../thunar/thunar-chooser-dialog.c:612
+#: ../thunar/thunar-chooser-dialog.c:613
 #, c-format
 msgid "Open <i>%s</i> and other files of type \"%s\" with:"
 msgstr "<i>%s</i> とタイプが「%s」の他のファイルを以下のアプリで開きます:"
 
-#: ../thunar/thunar-chooser-dialog.c:634 ../thunar-uca/thunar-uca-editor.c:491
+#: ../thunar/thunar-chooser-dialog.c:635 ../thunar-uca/thunar-uca-editor.c:491
 msgid "Select an Application"
 msgstr "アプリケーションを選択して下さい"
 
-#: ../thunar/thunar-chooser-dialog.c:644 ../thunar-uca/thunar-uca-editor.c:501
+#: ../thunar/thunar-chooser-dialog.c:645 ../thunar-uca/thunar-uca-editor.c:501
 #: ../thunar-uca/thunar-uca-editor.c:640
 msgid "All Files"
 msgstr "全てのファイル"
 
-#: ../thunar/thunar-chooser-dialog.c:649 ../thunar-uca/thunar-uca-editor.c:506
+#: ../thunar/thunar-chooser-dialog.c:650 ../thunar-uca/thunar-uca-editor.c:506
 msgid "Executable Files"
 msgstr "実行可能ファイル"
 
-#: ../thunar/thunar-chooser-dialog.c:664 ../thunar-uca/thunar-uca-editor.c:521
+#: ../thunar/thunar-chooser-dialog.c:665 ../thunar-uca/thunar-uca-editor.c:521
 msgid "Perl Scripts"
 msgstr "Perl スクリプト"
 
-#: ../thunar/thunar-chooser-dialog.c:670 ../thunar-uca/thunar-uca-editor.c:527
+#: ../thunar/thunar-chooser-dialog.c:671 ../thunar-uca/thunar-uca-editor.c:527
 msgid "Python Scripts"
 msgstr "Python スクリプト"
 
-#: ../thunar/thunar-chooser-dialog.c:676 ../thunar-uca/thunar-uca-editor.c:533
+#: ../thunar/thunar-chooser-dialog.c:677 ../thunar-uca/thunar-uca-editor.c:533
 msgid "Ruby Scripts"
 msgstr "Ruby スクリプト"
 
-#: ../thunar/thunar-chooser-dialog.c:682 ../thunar-uca/thunar-uca-editor.c:539
+#: ../thunar/thunar-chooser-dialog.c:683 ../thunar-uca/thunar-uca-editor.c:539
 msgid "Shell Scripts"
 msgstr "シェルスクリプト"
 
@@ -520,7 +480,7 @@ msgstr "名前"
 #. Permissions chooser
 #.
 #: ../thunar/thunar-details-view.c:197
-#: ../thunar/thunar-properties-dialog.c:382
+#: ../thunar/thunar-properties-dialog.c:374
 msgid "Permissions"
 msgstr "アクセス権"
 
@@ -570,11 +530,11 @@ msgstr "ファイル「%s」を実行できません。"
 msgid "The root folder has no parent"
 msgstr "ルートフォルダに上位のフォルダがありません。"
 
-#: ../thunar/thunar-file.c:1032
+#: ../thunar/thunar-file.c:967
 msgid "Filesystem"
 msgstr "ファイルシステム"
 
-#: ../thunar/thunar-file.c:1056
+#: ../thunar/thunar-file.c:991
 msgid "Home"
 msgstr "ホーム"
 
@@ -635,7 +595,7 @@ msgstr "アイコンを表示するファイルです。"
 
 # FIXME: what's this?
 #: ../thunar/thunar-icon-renderer.c:177 ../thunar/thunar-icon-renderer.c:178
-#: ../thunar/thunar-text-renderer.c:202 ../thunar/thunar-text-renderer.c:203
+#: ../thunar/thunar-text-renderer.c:203 ../thunar/thunar-text-renderer.c:204
 msgid "Follow state"
 msgstr "状態に従う"
 
@@ -803,7 +763,7 @@ msgstr "隠しファイルを表示"
 msgid "Whether to display hidden files"
 msgstr "隠しファイルを表示するかを指定します。"
 
-#: ../thunar/thunar-list-model.c:701 ../thunar/thunar-properties-dialog.c:641
+#: ../thunar/thunar-list-model.c:701 ../thunar/thunar-properties-dialog.c:629
 msgid "broken link"
 msgstr "壊れたリンク"
 
@@ -840,11 +800,11 @@ msgid "%d item selected"
 msgid_plural "%d items selected (%s)"
 msgstr[0] "%d 個のアイテム (%s) が選択されています。"
 
-#: ../thunar/thunar-location-buttons.c:258
+#: ../thunar/thunar-location-buttons.c:257
 msgid "Spacing"
 msgstr "é–“éš”"
 
-#: ../thunar/thunar-location-buttons.c:259
+#: ../thunar/thunar-location-buttons.c:258
 msgid "The amount of space between the path buttons"
 msgstr "パスボタン同士の間のスペースです。"
 
@@ -886,117 +846,173 @@ msgstr "現在表示されているファイルです。"
 msgid "The icon size for the path entry"
 msgstr "パス・エントリーのアイコン・サイズです"
 
-#: ../thunar/thunar-permissions-model.c:440
-#, fuzzy, c-format
-msgid "%s (%s)"
-msgstr "「%s」(%s) %sです。"
+#. 0000
+#: ../thunar/thunar-permissions-chooser.c:234
+msgid "None"
+msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:447
-msgid "Unknown file owner"
+#. 0002
+#: ../thunar/thunar-permissions-chooser.c:236
+msgid "Write only"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:460
-msgid "Unknown file group"
+#. 0004
+#: ../thunar/thunar-permissions-chooser.c:238
+msgid "Read only"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:465
-msgid "All other users"
+#. 0006
+#: ../thunar/thunar-permissions-chooser.c:240
+msgid "Read & Write"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:474
-msgid "Read"
+#: ../thunar/thunar-permissions-chooser.c:252
+msgid "Owner:"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:478
-msgid "Write"
+#: ../thunar/thunar-permissions-chooser.c:266
+msgid "Unknown"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:482
+#: ../thunar/thunar-permissions-chooser.c:280
+#: ../thunar/thunar-permissions-chooser.c:335
 #, fuzzy
-msgid "List folder contents"
-msgstr "フォルダの内容を読み込んでいます..."
+msgid "Access:"
+msgstr "アクセス日時:"
+
+#: ../thunar/thunar-permissions-chooser.c:309
+msgid "Group:"
+msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:482
+#: ../thunar/thunar-permissions-chooser.c:364
 #, fuzzy
-msgid "Execute"
-msgstr "実行(_E)"
+msgid "Others:"
+msgstr "その他のファイル(_O)"
 
-#. actions for the group item
-#: ../thunar/thunar-permissions-model.c:884
-msgid "Change _Group..."
+#: ../thunar/thunar-permissions-chooser.c:393
+msgid "Program:"
 msgstr ""
 
-#. append the "Grant Permission" action
-#: ../thunar/thunar-permissions-model.c:897
+#: ../thunar/thunar-permissions-chooser.c:399
+msgid "Allow this file to _run as a program"
+msgstr ""
+
+#: ../thunar/thunar-permissions-chooser.c:423
+msgid ""
+"Allowing untrusted programs to run \n"
+"presents a security risk to your system."
+msgstr ""
+
+#: ../thunar/thunar-permissions-chooser.c:434
+msgid "Please wait..."
+msgstr ""
+
+#. display an error to the user
+#: ../thunar/thunar-permissions-chooser.c:545
 #, fuzzy
-msgid "_Grant Permission"
-msgstr "アクセス権"
+msgid "Failed to change group"
+msgstr "「%s」のモード変更に失敗しました。"
 
-#. append the "Deny Permission" action
-#: ../thunar/thunar-permissions-model.c:906
+#. display an error to the user
+#: ../thunar/thunar-permissions-chooser.c:580
 #, fuzzy
-msgid "_Deny Permission"
-msgstr "アクセス権"
+msgid "Failed to apply new permissions"
+msgstr "「%s」のモード変更に失敗しました。"
 
-#: ../thunar/thunar-permissions-view.c:213
-msgid ""
-"For special permissions and for\n"
-"advanced settings, click Advanced."
+#. allocate the question dialog
+#: ../thunar/thunar-permissions-chooser.c:619
+#: ../thunar/thunar-permissions-chooser.c:961
+#: ../thunar/thunar-progress-dialog.c:295
+msgid "Question"
+msgstr "質問"
+
+#: ../thunar/thunar-permissions-chooser.c:642
+msgid "Apply recursively?"
 msgstr ""
 
-#: ../thunar/thunar-permissions-view.c:222
-msgid "_Advanced..."
+#: ../thunar/thunar-permissions-chooser.c:648
+msgid ""
+"Do you want to apply your changes recursively to\n"
+"all files and subfolder below the selected folder?"
 msgstr ""
 
-#: ../thunar/thunar-permissions-view.c:223
-msgid "Click here for special permissions and for advanced settings."
+#: ../thunar/thunar-permissions-chooser.c:653
+msgid "Do _not ask me again"
 msgstr ""
 
-#: ../thunar/thunar-permissions-view.c:243
-msgid ""
-"You are not the owner of this file, so\n"
-"you cannot change these permissions."
+#: ../thunar/thunar-permissions-chooser.c:851
+msgid "Unknown file owner"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:184
+#: ../thunar/thunar-permissions-chooser.c:990
+#: ../thunar/thunar-progress-dialog.c:321
+msgid "_Yes"
+msgstr "はい(_Y)"
+
+#: ../thunar/thunar-permissions-chooser.c:994
+#: ../thunar/thunar-progress-dialog.c:325
+msgid "Yes to _all"
+msgstr "全てにはい(_A)"
+
+#: ../thunar/thunar-permissions-chooser.c:998
+#: ../thunar/thunar-progress-dialog.c:329
+msgid "_No"
+msgstr "いいえ(_N)"
+
+#: ../thunar/thunar-permissions-chooser.c:1002
+#: ../thunar/thunar-progress-dialog.c:333
+msgid "_Cancel"
+msgstr "キャンセル(_C)"
+
+#: ../thunar/thunar-preferences-dialog.c:186
 msgid "File Manager Preferences"
 msgstr "ファイルマネージャーの環境設定"
 
-#: ../thunar/thunar-preferences-dialog.c:200
-msgid "<b>Default View</b>"
+#.
+#. Views
+#.
+#: ../thunar/thunar-preferences-dialog.c:203
+#, fuzzy
+msgid "Views"
+msgstr "表示(_V)"
+
+#: ../thunar/thunar-preferences-dialog.c:213
+#, fuzzy
+msgid "Default View"
 msgstr "<b>標準の表示方法</b>"
 
-#: ../thunar/thunar-preferences-dialog.c:211
+#: ../thunar/thunar-preferences-dialog.c:225
 msgid "View _new folders using:"
 msgstr "新規フォルダの表示方法(_N):"
 
-#: ../thunar/thunar-preferences-dialog.c:216
+#: ../thunar/thunar-preferences-dialog.c:230
+#: ../thunar/thunar-preferences-dialog.c:267
 msgid "Icon View"
 msgstr "アイコン表示"
 
-#: ../thunar/thunar-preferences-dialog.c:217
+#: ../thunar/thunar-preferences-dialog.c:231
 msgid "Detailed List View"
 msgstr "詳細リスト表示"
 
-#: ../thunar/thunar-preferences-dialog.c:218
+#: ../thunar/thunar-preferences-dialog.c:232
 msgid "Last Active View"
 msgstr "最後に使用した表示方法"
 
-#: ../thunar/thunar-preferences-dialog.c:233
+#: ../thunar/thunar-preferences-dialog.c:249
 msgid "Sort _folders before files"
 msgstr "フォルダをファイルの前にする(_F)"
 
-#: ../thunar/thunar-preferences-dialog.c:235
+#: ../thunar/thunar-preferences-dialog.c:251
 msgid "Select this option to list folders before files when you sort a folder."
 msgstr ""
 "フォルダを並べ替える時にフォルダをファイルの前に並べるなら、このオプションを"
 "選択して下さい。"
 
-#: ../thunar/thunar-preferences-dialog.c:239
+#: ../thunar/thunar-preferences-dialog.c:255
 msgid "Show hidden and _backup files"
 msgstr "隠しファイルを表示する(_B)"
 
-#: ../thunar/thunar-preferences-dialog.c:241
+#: ../thunar/thunar-preferences-dialog.c:257
 msgid ""
 "Select this option to show hidden and backup files in new windows. The first "
 "character in a hidden filename is a period (.). The last character in a "
@@ -1006,15 +1022,11 @@ msgstr ""
 "選択して下さい。隠しファイル名の先頭にはピリオド「.」が、予備ファイルの末尾に"
 "はチルダ「~」がついています。"
 
-#: ../thunar/thunar-preferences-dialog.c:251
-msgid "<b>Icon View</b>"
-msgstr "<b>アイコン表示</b>"
-
-#: ../thunar/thunar-preferences-dialog.c:262
+#: ../thunar/thunar-preferences-dialog.c:279
 msgid "_Text beside icons"
 msgstr "文字をアイコンの隣に置く(_T)"
 
-#: ../thunar/thunar-preferences-dialog.c:264
+#: ../thunar/thunar-preferences-dialog.c:281
 msgid ""
 "Select this option to place the icon captions for items beside the icon "
 "rather than below the icon."
@@ -1022,100 +1034,107 @@ msgstr ""
 "アイテムのアイコン・キャプションをアイコンの下ではなく隣に置くなら、このオプ"
 "ションを選択して下さい。"
 
-#: ../thunar/thunar-preferences.c:255
+#.
+#. Advanced
+#.
+#: ../thunar/thunar-preferences-dialog.c:290
+msgid "Advanced"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:300
+msgid "Miscellaneous"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:312
+msgid "Apply permissions _recursively:"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:317
+msgid "Ask everytime"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:318
+msgid "Always"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:319
+msgid "Never"
+msgstr ""
+
+#: ../thunar/thunar-preferences.c:272
 #, c-format
 msgid "Failed to create the Thunar configuration directory in %s"
 msgstr "%s に Thunar の設定フォルダを作成するのに失敗しました。"
 
-#: ../thunar/thunar-preferences.c:263
+#: ../thunar/thunar-preferences.c:280
 #, c-format
 msgid "Failed to open preferences database in %s: %s"
 msgstr "%s にある環境設定データベースを開くのに失敗しました: %s"
 
-#: ../thunar/thunar-progress-dialog.c:150
+#: ../thunar/thunar-progress-dialog.c:151
 msgid "Job"
 msgstr "ジョブ"
 
-#: ../thunar/thunar-progress-dialog.c:151
+#: ../thunar/thunar-progress-dialog.c:152
 msgid "The job whose progress to display"
 msgstr "途中経過を表示するジョブです"
 
-#: ../thunar/thunar-progress-dialog.c:303
-msgid "Question"
-msgstr "質問"
-
-#: ../thunar/thunar-progress-dialog.c:329
-msgid "_Yes"
-msgstr "はい(_Y)"
-
-#: ../thunar/thunar-progress-dialog.c:333
-msgid "Yes to _all"
-msgstr "全てにはい(_A)"
-
-#: ../thunar/thunar-progress-dialog.c:337
-msgid "_No"
-msgstr "いいえ(_N)"
-
-#: ../thunar/thunar-progress-dialog.c:341
-msgid "_Cancel"
-msgstr "キャンセル(_C)"
-
-#: ../thunar/thunar-progress-dialog.c:467
+#: ../thunar/thunar-progress-dialog.c:459
 #, c-format
 msgid "(%lu hour remaining)"
 msgid_plural "(%lu hours remaining)"
 msgstr[0] "(残り %lu 時間)"
 
-#: ../thunar/thunar-progress-dialog.c:472
+#: ../thunar/thunar-progress-dialog.c:464
 #, c-format
 msgid "(%lu minute remaining)"
 msgid_plural "(%lu minutes remaining)"
 msgstr[0] "(残り %lu 分)"
 
-#: ../thunar/thunar-progress-dialog.c:477
+#: ../thunar/thunar-progress-dialog.c:469
 #, c-format
 msgid "(%lu second remaining)"
 msgid_plural "(%lu seconds remaining)"
 msgstr[0] "(残り %lu 秒)"
 
-#: ../thunar/thunar-properties-dialog.c:173
+#: ../thunar/thunar-properties-dialog.c:174
 msgid "The file displayed by the dialog"
 msgstr "ダイアログに表示されているファイルです"
 
-#: ../thunar/thunar-properties-dialog.c:220
+#: ../thunar/thunar-properties-dialog.c:212
 msgid "General"
 msgstr "一般"
 
-#: ../thunar/thunar-properties-dialog.c:237
+#: ../thunar/thunar-properties-dialog.c:229
 msgid "Name:"
 msgstr "名前:"
 
 #.
 #. Second box (kind)
 #.
-#: ../thunar/thunar-properties-dialog.c:262
+#: ../thunar/thunar-properties-dialog.c:254
 msgid "Kind:"
 msgstr "種類:"
 
 #.
 #. Third box (modified, accessed)
 #.
-#: ../thunar/thunar-properties-dialog.c:287
+#: ../thunar/thunar-properties-dialog.c:279
 msgid "Modified:"
 msgstr "変更日時:"
 
-#: ../thunar/thunar-properties-dialog.c:300
+#: ../thunar/thunar-properties-dialog.c:292
 msgid "Accessed:"
 msgstr "アクセス日時:"
 
 #.
 #. Fourth box (volume, size)
 #.
-#: ../thunar/thunar-properties-dialog.c:324
+#: ../thunar/thunar-properties-dialog.c:316
 msgid "Volume:"
 msgstr "容量:"
 
-#: ../thunar/thunar-properties-dialog.c:347
+#: ../thunar/thunar-properties-dialog.c:339
 msgid "Size:"
 msgstr "サイズ:"
 
@@ -1123,22 +1142,22 @@ msgstr "サイズ:"
 #.
 #. Emblem chooser
 #.
-#: ../thunar/thunar-properties-dialog.c:371
+#: ../thunar/thunar-properties-dialog.c:363
 msgid "Emblems"
 msgstr "エンブレム"
 
-#: ../thunar/thunar-properties-dialog.c:618
+#: ../thunar/thunar-properties-dialog.c:606
 #, c-format
 msgid "%s Info"
 msgstr "%s の情報"
 
-#: ../thunar/thunar-properties-dialog.c:699
+#: ../thunar/thunar-properties-dialog.c:687
 #, c-format
 msgid "%s (%u Bytes)"
 msgstr "%s (%u バイト)"
 
 #. display an error message
-#: ../thunar/thunar-properties-dialog.c:745
+#: ../thunar/thunar-properties-dialog.c:733
 #: ../thunar/thunar-standard-view.c:2170
 #, c-format
 msgid "Failed to rename `%s'"
@@ -1357,27 +1376,27 @@ msgstr "ステータスバーのテキスト"
 msgid "The main text to be displayed in the statusbar"
 msgstr "ステータスバーに表示されるメインテキストです。"
 
-#: ../thunar/thunar-text-renderer.c:215
+#: ../thunar/thunar-text-renderer.c:216
 msgid "Text"
 msgstr "テキスト"
 
-#: ../thunar/thunar-text-renderer.c:216
+#: ../thunar/thunar-text-renderer.c:217
 msgid "The text to render"
 msgstr "表示するテキストです。"
 
-#: ../thunar/thunar-text-renderer.c:230
+#: ../thunar/thunar-text-renderer.c:231
 msgid "Wrap mode"
 msgstr "折り返しモード"
 
-#: ../thunar/thunar-text-renderer.c:231
+#: ../thunar/thunar-text-renderer.c:232
 msgid "The wrap mode"
 msgstr "テキストを折り返します。"
 
-#: ../thunar/thunar-text-renderer.c:246
+#: ../thunar/thunar-text-renderer.c:247
 msgid "Wrap width"
 msgstr "折り返し幅"
 
-#: ../thunar/thunar-text-renderer.c:247
+#: ../thunar/thunar-text-renderer.c:248
 msgid "The wrap width"
 msgstr "テキストを折り返す幅です。"
 
@@ -1879,3 +1898,34 @@ msgstr "ファイルマネージャー"
 #: ../Thunar.desktop.in.h:3
 msgid "Thunar File Manager"
 msgstr "Thunar ファイルマネージャー"
+
+#, fuzzy
+#~ msgid "Advanced Permissions"
+#~ msgstr "アクセス権"
+
+#, fuzzy
+#~ msgid "Failed to change the group to which `%s' belongs"
+#~ msgstr "「%s」のモード変更に失敗しました。"
+
+#, fuzzy
+#~ msgid "%s (%s)"
+#~ msgstr "「%s」(%s) %sです。"
+
+#, fuzzy
+#~ msgid "List folder contents"
+#~ msgstr "フォルダの内容を読み込んでいます..."
+
+#, fuzzy
+#~ msgid "Execute"
+#~ msgstr "実行(_E)"
+
+#, fuzzy
+#~ msgid "_Grant Permission"
+#~ msgstr "アクセス権"
+
+#, fuzzy
+#~ msgid "_Deny Permission"
+#~ msgstr "アクセス権"
+
+#~ msgid "<b>Icon View</b>"
+#~ msgstr "<b>アイコン表示</b>"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index d0e7d516279f010a9abcb08df8fe04d9e8abdd8f..ffc83a858aa2aa677b8130bd769d7b191d680565 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Thunar 0.1.4svn\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-01-04 18:34+0100\n"
+"POT-Creation-Date: 2006-01-08 22:45+0100\n"
 "PO-Revision-Date: 2005-11-17 16:55+0900\n"
 "Last-Translator: Joao Pedrosa <joaopedrosa@gmail.com>\n"
 "Language-Team: os-cillation <info@os-cillation.com>\n"
@@ -16,23 +16,67 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms:  nplurals=2; plural=(n != 1);\n"
 
-#: ../thunar-vfs/thunar-vfs-info.c:362
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:168
+#: ../thunar-vfs/thunar-vfs-chown-job.c:166
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:267
+msgid "Collecting files..."
+msgstr "Coletando arquivos..."
+
+#. ask the user whether we should skip the file
+#. ask the user whether to skip this file (used for cancellation only)
+#. ask the user whether to skip
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:189
+#: ../thunar-vfs/thunar-vfs-chown-job.c:187
+#: ../thunar-vfs/thunar-vfs-link-job.c:212
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:747
+#, c-format
+msgid ""
+"%s.\n"
+"\n"
+"Do you want to skip it?"
+msgstr ""
+"%s.\n"
+"\n"
+"Você quer pulá-lo?"
+
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:246
+#: ../thunar-vfs/thunar-vfs-chown-job.c:244
+#, fuzzy, c-format
+msgid "Failed to determine file info of `%s': %s"
+msgstr "Falha em determinar informação de arquivo para `%s'"
+
+#: ../thunar-vfs/thunar-vfs-chmod-job.c:272
+#, fuzzy, c-format
+msgid "Failed to change permissions of `%s': %s"
+msgstr "Falha em trocar modo de `%s'"
+
+#: ../thunar-vfs/thunar-vfs-chown-job.c:260
+#, fuzzy, c-format
+msgid "Failed to change file owner of `%s': %s"
+msgstr "Falha em trocar modo de `%s'"
+
+#: ../thunar-vfs/thunar-vfs-chown-job.c:262
+#, fuzzy, c-format
+msgid "Failed to change file group of `%s': %s"
+msgstr "Falha em trocar modo de `%s'"
+
+#: ../thunar-vfs/thunar-vfs-info.c:261
 msgid "No Exec field specified"
 msgstr "Nenhum campo Exec especificado"
 
-#: ../thunar-vfs/thunar-vfs-info.c:370
+#: ../thunar-vfs/thunar-vfs-info.c:269
 msgid "Unable to parse file"
 msgstr "Incapaz de \"parse\" arquivo"
 
-#: ../thunar-vfs/thunar-vfs-info.c:460
+#: ../thunar-vfs/thunar-vfs-info.c:359
 msgid "Invalid file name"
 msgstr "Nome de arquivo inválido"
 
-#: ../thunar-vfs/thunar-vfs-info.c:482
+#: ../thunar-vfs/thunar-vfs-info.c:381
 msgid "Invalid desktop file"
 msgstr "Arquivo de área de trabalho inválido"
 
-#: ../thunar-vfs/thunar-vfs-info.c:716
+#: ../thunar-vfs/thunar-vfs-info.c:615
 #, c-format
 msgid "Failed to stat file `%s': %s"
 msgstr "Falha em \"stat\" arquivo `%s': %s"
@@ -56,20 +100,6 @@ msgstr ""
 msgid "Failed to remove `%s': %s"
 msgstr "Falha em remover `%s': %s"
 
-#. ask the user whether to skip this file (used for cancellation only)
-#. ask the user whether to skip
-#: ../thunar-vfs/thunar-vfs-link-job.c:212
-#: ../thunar-vfs/thunar-vfs-transfer-job.c:747
-#, c-format
-msgid ""
-"%s.\n"
-"\n"
-"Do you want to skip it?"
-msgstr ""
-"%s.\n"
-"\n"
-"Você quer pulá-lo?"
-
 #: ../thunar-vfs/thunar-vfs-mime-database.c:1657
 #, c-format
 msgid "Failed to load application from file %s"
@@ -101,10 +131,6 @@ msgstr "Tamanho"
 msgid "The desired thumbnail size"
 msgstr "O tamanho de miniatura desejado"
 
-#: ../thunar-vfs/thunar-vfs-transfer-job.c:267
-msgid "Collecting files..."
-msgstr "Coletando arquivos..."
-
 #. display info message
 #: ../thunar-vfs/thunar-vfs-transfer-job.c:329
 msgid "Deleting directories..."
@@ -147,7 +173,7 @@ msgid "copy of %s"
 msgstr "cópia de %s"
 
 #: ../thunar-vfs/thunar-vfs-xfer.c:158 ../thunar/thunar-list-model.c:703
-#: ../thunar/thunar-properties-dialog.c:643
+#: ../thunar/thunar-properties-dialog.c:631
 #, c-format
 msgid "link to %s"
 msgstr "link para %s"
@@ -263,58 +289,6 @@ msgstr "Falha em criar simbólico `%s'"
 msgid "Thunar"
 msgstr "Thunar"
 
-#: ../thunar/thunar-advanced-permissions-dialog.c:159
-#, fuzzy
-msgid "Advanced Permissions"
-msgstr "Permissões"
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:167
-msgid "Special Bits"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:180
-msgid "Set _User ID (SUID)"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:190
-msgid ""
-"An executable file whose Set User ID (SUID) bit is\n"
-"set will always be executed with the privileges of\n"
-"the owner of the executable."
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:211
-msgid "Set _Group ID (SGID)"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:221
-msgid ""
-"An executable file whose Set Group ID (SGID) bit is\n"
-"set will always be executed with the privileges of the\n"
-"group of the executable."
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:242
-msgid "_Sticky"
-msgstr ""
-
-#: ../thunar/thunar-advanced-permissions-dialog.c:252
-msgid ""
-"A file in a sticky directory may only be removed or\n"
-"renamed by a user if the user has write permission\n"
-"for the directory and the user is the owner of the\n"
-"file, the owner of the directory or the superuser."
-msgstr ""
-
-#. display an error message to the user
-#. display an error to the user (when we get here, we definitely have a valid file!)
-#: ../thunar/thunar-advanced-permissions-dialog.c:356
-#: ../thunar/thunar-permissions-model.c:830
-#: ../thunar/thunar-permissions-view.c:494
-#, fuzzy, c-format
-msgid "Failed to change permissions of `%s'"
-msgstr "Falha em trocar modo de `%s'"
-
 #. display an error message to the user
 #: ../thunar/thunar-application.c:222
 msgid "Failed to launch operation"
@@ -340,25 +314,11 @@ msgstr "Deletando arquivos..."
 msgid "Creating directories..."
 msgstr "Criando diretórios..."
 
-#: ../thunar/thunar-change-group-dialog.c:193
-msgid "Change Group"
-msgstr ""
-
-#: ../thunar/thunar-change-group-dialog.c:200
-msgid "_Group:"
-msgstr ""
-
-#. display an error message
-#: ../thunar/thunar-change-group-dialog.c:309
-#, fuzzy, c-format
-msgid "Failed to change the group to which `%s' belongs"
-msgstr "Falha em trocar modo de `%s'"
-
 #: ../thunar/thunar-chooser-dialog.c:169 ../thunar/thunar-emblem-chooser.c:147
 #: ../thunar/thunar-emblem-chooser.c:148 ../thunar/thunar-icon-renderer.c:161
 #: ../thunar/thunar-open-with-action.c:146
 #: ../thunar/thunar-open-with-action.c:147
-#: ../thunar/thunar-properties-dialog.c:172 ../thunar/thunar-statusbar.c:190
+#: ../thunar/thunar-properties-dialog.c:173 ../thunar/thunar-statusbar.c:190
 msgid "File"
 msgstr "Arquivo"
 
@@ -408,37 +368,37 @@ msgid "Failed to execute `%s'"
 msgstr "Falha em executar `%s'"
 
 #. update the header label
-#: ../thunar/thunar-chooser-dialog.c:612
+#: ../thunar/thunar-chooser-dialog.c:613
 #, c-format
 msgid "Open <i>%s</i> and other files of type \"%s\" with:"
 msgstr "Abrir <i>%s</i> e outros arquivos do tipo \"%s\" com:"
 
-#: ../thunar/thunar-chooser-dialog.c:634 ../thunar-uca/thunar-uca-editor.c:491
+#: ../thunar/thunar-chooser-dialog.c:635 ../thunar-uca/thunar-uca-editor.c:491
 msgid "Select an Application"
 msgstr "Selecione uma Aplicação"
 
-#: ../thunar/thunar-chooser-dialog.c:644 ../thunar-uca/thunar-uca-editor.c:501
+#: ../thunar/thunar-chooser-dialog.c:645 ../thunar-uca/thunar-uca-editor.c:501
 #: ../thunar-uca/thunar-uca-editor.c:640
 msgid "All Files"
 msgstr "Todos os Arquivos"
 
-#: ../thunar/thunar-chooser-dialog.c:649 ../thunar-uca/thunar-uca-editor.c:506
+#: ../thunar/thunar-chooser-dialog.c:650 ../thunar-uca/thunar-uca-editor.c:506
 msgid "Executable Files"
 msgstr "Arquivos Executáveis"
 
-#: ../thunar/thunar-chooser-dialog.c:664 ../thunar-uca/thunar-uca-editor.c:521
+#: ../thunar/thunar-chooser-dialog.c:665 ../thunar-uca/thunar-uca-editor.c:521
 msgid "Perl Scripts"
 msgstr "Scripts de Perl"
 
-#: ../thunar/thunar-chooser-dialog.c:670 ../thunar-uca/thunar-uca-editor.c:527
+#: ../thunar/thunar-chooser-dialog.c:671 ../thunar-uca/thunar-uca-editor.c:527
 msgid "Python Scripts"
 msgstr "Scripts de Python"
 
-#: ../thunar/thunar-chooser-dialog.c:676 ../thunar-uca/thunar-uca-editor.c:533
+#: ../thunar/thunar-chooser-dialog.c:677 ../thunar-uca/thunar-uca-editor.c:533
 msgid "Ruby Scripts"
 msgstr "Scripts de Ruby"
 
-#: ../thunar/thunar-chooser-dialog.c:682 ../thunar-uca/thunar-uca-editor.c:539
+#: ../thunar/thunar-chooser-dialog.c:683 ../thunar-uca/thunar-uca-editor.c:539
 msgid "Shell Scripts"
 msgstr "Scripts de Shell"
 
@@ -507,7 +467,7 @@ msgstr "Nome"
 #. Permissions chooser
 #.
 #: ../thunar/thunar-details-view.c:197
-#: ../thunar/thunar-properties-dialog.c:382
+#: ../thunar/thunar-properties-dialog.c:374
 msgid "Permissions"
 msgstr "Permissões"
 
@@ -557,11 +517,11 @@ msgstr "Incapaz de executar arquivo `%s'"
 msgid "The root folder has no parent"
 msgstr "A pasta raiz não tem parente"
 
-#: ../thunar/thunar-file.c:1032
+#: ../thunar/thunar-file.c:967
 msgid "Filesystem"
 msgstr "Sistema de Arquivos"
 
-#: ../thunar/thunar-file.c:1056
+#: ../thunar/thunar-file.c:991
 msgid "Home"
 msgstr "Pasta Inicial"
 
@@ -618,7 +578,7 @@ msgid "The file whose icon to render"
 msgstr "O arquivo cujo ícone é para renderizar"
 
 #: ../thunar/thunar-icon-renderer.c:177 ../thunar/thunar-icon-renderer.c:178
-#: ../thunar/thunar-text-renderer.c:202 ../thunar/thunar-text-renderer.c:203
+#: ../thunar/thunar-text-renderer.c:203 ../thunar/thunar-text-renderer.c:204
 msgid "Follow state"
 msgstr "Segue estado"
 
@@ -789,7 +749,7 @@ msgstr "Mostrar invisíveis"
 msgid "Whether to display hidden files"
 msgstr "Se deve-se mostrar arquivos invisíveis"
 
-#: ../thunar/thunar-list-model.c:701 ../thunar/thunar-properties-dialog.c:641
+#: ../thunar/thunar-list-model.c:701 ../thunar/thunar-properties-dialog.c:629
 msgid "broken link"
 msgstr "ligação quebrada"
 
@@ -829,11 +789,11 @@ msgid_plural "%d items selected (%s)"
 msgstr[0] "%d item selecionado"
 msgstr[1] "%d ítens selecionados"
 
-#: ../thunar/thunar-location-buttons.c:258
+#: ../thunar/thunar-location-buttons.c:257
 msgid "Spacing"
 msgstr "Espaçamento"
 
-#: ../thunar/thunar-location-buttons.c:259
+#: ../thunar/thunar-location-buttons.c:258
 msgid "The amount of space between the path buttons"
 msgstr "A quantidade de espaço entre os botões de caminho"
 
@@ -875,117 +835,173 @@ msgstr "O arquivo mostrado atualmente"
 msgid "The icon size for the path entry"
 msgstr "O tamanho de ícone para a entrada de caminho"
 
-#: ../thunar/thunar-permissions-model.c:440
-#, fuzzy, c-format
-msgid "%s (%s)"
-msgstr "\"%s\" (%s) %s"
+#. 0000
+#: ../thunar/thunar-permissions-chooser.c:234
+msgid "None"
+msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:447
-msgid "Unknown file owner"
+#. 0002
+#: ../thunar/thunar-permissions-chooser.c:236
+msgid "Write only"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:460
-msgid "Unknown file group"
+#. 0004
+#: ../thunar/thunar-permissions-chooser.c:238
+msgid "Read only"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:465
-msgid "All other users"
+#. 0006
+#: ../thunar/thunar-permissions-chooser.c:240
+msgid "Read & Write"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:474
-msgid "Read"
+#: ../thunar/thunar-permissions-chooser.c:252
+msgid "Owner:"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:478
-msgid "Write"
+#: ../thunar/thunar-permissions-chooser.c:266
+msgid "Unknown"
 msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:482
+#: ../thunar/thunar-permissions-chooser.c:280
+#: ../thunar/thunar-permissions-chooser.c:335
 #, fuzzy
-msgid "List folder contents"
-msgstr "Carregando conteúdos de pasta..."
+msgid "Access:"
+msgstr "Acessado:"
+
+#: ../thunar/thunar-permissions-chooser.c:309
+msgid "Group:"
+msgstr ""
 
-#: ../thunar/thunar-permissions-model.c:482
+#: ../thunar/thunar-permissions-chooser.c:364
 #, fuzzy
-msgid "Execute"
-msgstr "_Executar"
+msgid "Others:"
+msgstr "C_olar Arquivos"
 
-#. actions for the group item
-#: ../thunar/thunar-permissions-model.c:884
-msgid "Change _Group..."
+#: ../thunar/thunar-permissions-chooser.c:393
+msgid "Program:"
 msgstr ""
 
-#. append the "Grant Permission" action
-#: ../thunar/thunar-permissions-model.c:897
+#: ../thunar/thunar-permissions-chooser.c:399
+msgid "Allow this file to _run as a program"
+msgstr ""
+
+#: ../thunar/thunar-permissions-chooser.c:423
+msgid ""
+"Allowing untrusted programs to run \n"
+"presents a security risk to your system."
+msgstr ""
+
+#: ../thunar/thunar-permissions-chooser.c:434
+msgid "Please wait..."
+msgstr ""
+
+#. display an error to the user
+#: ../thunar/thunar-permissions-chooser.c:545
 #, fuzzy
-msgid "_Grant Permission"
-msgstr "Permissões"
+msgid "Failed to change group"
+msgstr "Falha em trocar modo de `%s'"
 
-#. append the "Deny Permission" action
-#: ../thunar/thunar-permissions-model.c:906
+#. display an error to the user
+#: ../thunar/thunar-permissions-chooser.c:580
 #, fuzzy
-msgid "_Deny Permission"
-msgstr "Permissões"
+msgid "Failed to apply new permissions"
+msgstr "Falha em trocar modo de `%s'"
 
-#: ../thunar/thunar-permissions-view.c:213
-msgid ""
-"For special permissions and for\n"
-"advanced settings, click Advanced."
+#. allocate the question dialog
+#: ../thunar/thunar-permissions-chooser.c:619
+#: ../thunar/thunar-permissions-chooser.c:961
+#: ../thunar/thunar-progress-dialog.c:295
+msgid "Question"
+msgstr "Questão"
+
+#: ../thunar/thunar-permissions-chooser.c:642
+msgid "Apply recursively?"
 msgstr ""
 
-#: ../thunar/thunar-permissions-view.c:222
-msgid "_Advanced..."
+#: ../thunar/thunar-permissions-chooser.c:648
+msgid ""
+"Do you want to apply your changes recursively to\n"
+"all files and subfolder below the selected folder?"
 msgstr ""
 
-#: ../thunar/thunar-permissions-view.c:223
-msgid "Click here for special permissions and for advanced settings."
+#: ../thunar/thunar-permissions-chooser.c:653
+msgid "Do _not ask me again"
 msgstr ""
 
-#: ../thunar/thunar-permissions-view.c:243
-msgid ""
-"You are not the owner of this file, so\n"
-"you cannot change these permissions."
+#: ../thunar/thunar-permissions-chooser.c:851
+msgid "Unknown file owner"
 msgstr ""
 
-#: ../thunar/thunar-preferences-dialog.c:184
+#: ../thunar/thunar-permissions-chooser.c:990
+#: ../thunar/thunar-progress-dialog.c:321
+msgid "_Yes"
+msgstr "_Sim"
+
+#: ../thunar/thunar-permissions-chooser.c:994
+#: ../thunar/thunar-progress-dialog.c:325
+msgid "Yes to _all"
+msgstr "Sim para _todos"
+
+#: ../thunar/thunar-permissions-chooser.c:998
+#: ../thunar/thunar-progress-dialog.c:329
+msgid "_No"
+msgstr "_Não"
+
+#: ../thunar/thunar-permissions-chooser.c:1002
+#: ../thunar/thunar-progress-dialog.c:333
+msgid "_Cancel"
+msgstr "_Cancelar"
+
+#: ../thunar/thunar-preferences-dialog.c:186
 msgid "File Manager Preferences"
 msgstr "Preferências de Gerenciador de Arquivo"
 
-#: ../thunar/thunar-preferences-dialog.c:200
-msgid "<b>Default View</b>"
+#.
+#. Views
+#.
+#: ../thunar/thunar-preferences-dialog.c:203
+#, fuzzy
+msgid "Views"
+msgstr "_Visualização"
+
+#: ../thunar/thunar-preferences-dialog.c:213
+#, fuzzy
+msgid "Default View"
 msgstr "<b>Visualização Padrão</b>"
 
-#: ../thunar/thunar-preferences-dialog.c:211
+#: ../thunar/thunar-preferences-dialog.c:225
 msgid "View _new folders using:"
 msgstr "Visualizar _novas pastas usando:"
 
-#: ../thunar/thunar-preferences-dialog.c:216
+#: ../thunar/thunar-preferences-dialog.c:230
+#: ../thunar/thunar-preferences-dialog.c:267
 msgid "Icon View"
 msgstr "Visualização de Ícone"
 
-#: ../thunar/thunar-preferences-dialog.c:217
+#: ../thunar/thunar-preferences-dialog.c:231
 msgid "Detailed List View"
 msgstr "Visualização de Lista Detalhada"
 
-#: ../thunar/thunar-preferences-dialog.c:218
+#: ../thunar/thunar-preferences-dialog.c:232
 msgid "Last Active View"
 msgstr "Última Visualização Ativa"
 
-#: ../thunar/thunar-preferences-dialog.c:233
+#: ../thunar/thunar-preferences-dialog.c:249
 msgid "Sort _folders before files"
 msgstr "Ordenar _pastas antes dos arquivos"
 
-#: ../thunar/thunar-preferences-dialog.c:235
+#: ../thunar/thunar-preferences-dialog.c:251
 msgid "Select this option to list folders before files when you sort a folder."
 msgstr ""
 "Selecione esta opção para listar pastas antes dos arquivos quando você "
 "ordenar uma pasta."
 
-#: ../thunar/thunar-preferences-dialog.c:239
+#: ../thunar/thunar-preferences-dialog.c:255
 msgid "Show hidden and _backup files"
 msgstr "Mostrar arquivos de _backup e invisíveis"
 
-#: ../thunar/thunar-preferences-dialog.c:241
+#: ../thunar/thunar-preferences-dialog.c:257
 msgid ""
 "Select this option to show hidden and backup files in new windows. The first "
 "character in a hidden filename is a period (.). The last character in a "
@@ -995,15 +1011,11 @@ msgstr ""
 "janelas. O primeiro caractere em um arquivo invisível é um ponto (.). O "
 "último caractere em um arquivo de backup é um tio (~)."
 
-#: ../thunar/thunar-preferences-dialog.c:251
-msgid "<b>Icon View</b>"
-msgstr "<b>Visualização de Ícone</b>"
-
-#: ../thunar/thunar-preferences-dialog.c:262
+#: ../thunar/thunar-preferences-dialog.c:279
 msgid "_Text beside icons"
 msgstr "_Texto ao lado dos ícones"
 
-#: ../thunar/thunar-preferences-dialog.c:264
+#: ../thunar/thunar-preferences-dialog.c:281
 msgid ""
 "Select this option to place the icon captions for items beside the icon "
 "rather than below the icon."
@@ -1011,125 +1023,132 @@ msgstr ""
 "Selecione esta opção para colocar os rótulos de ícones para ítens ao lado do "
 "ícone, em vez de abaixo do ícone."
 
-#: ../thunar/thunar-preferences.c:255
+#.
+#. Advanced
+#.
+#: ../thunar/thunar-preferences-dialog.c:290
+msgid "Advanced"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:300
+msgid "Miscellaneous"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:312
+msgid "Apply permissions _recursively:"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:317
+msgid "Ask everytime"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:318
+msgid "Always"
+msgstr ""
+
+#: ../thunar/thunar-preferences-dialog.c:319
+msgid "Never"
+msgstr ""
+
+#: ../thunar/thunar-preferences.c:272
 #, c-format
 msgid "Failed to create the Thunar configuration directory in %s"
 msgstr "Falha em criar o diretório de configuração do Thunar em %s"
 
-#: ../thunar/thunar-preferences.c:263
+#: ../thunar/thunar-preferences.c:280
 #, c-format
 msgid "Failed to open preferences database in %s: %s"
 msgstr "Falha em abrir banco de dados de preferência em %s: %s"
 
-#: ../thunar/thunar-progress-dialog.c:150
+#: ../thunar/thunar-progress-dialog.c:151
 msgid "Job"
 msgstr "Trabalho"
 
-#: ../thunar/thunar-progress-dialog.c:151
+#: ../thunar/thunar-progress-dialog.c:152
 msgid "The job whose progress to display"
 msgstr "O trabalho cujo progresso deve ser mostrado"
 
-#: ../thunar/thunar-progress-dialog.c:303
-msgid "Question"
-msgstr "Questão"
-
-#: ../thunar/thunar-progress-dialog.c:329
-msgid "_Yes"
-msgstr "_Sim"
-
-#: ../thunar/thunar-progress-dialog.c:333
-msgid "Yes to _all"
-msgstr "Sim para _todos"
-
-#: ../thunar/thunar-progress-dialog.c:337
-msgid "_No"
-msgstr "_Não"
-
-#: ../thunar/thunar-progress-dialog.c:341
-msgid "_Cancel"
-msgstr "_Cancelar"
-
-#: ../thunar/thunar-progress-dialog.c:467
+#: ../thunar/thunar-progress-dialog.c:459
 #, c-format
 msgid "(%lu hour remaining)"
 msgid_plural "(%lu hours remaining)"
 msgstr[0] "(Restando %lu hora)"
 msgstr[1] "(Restando %lu horas)"
 
-#: ../thunar/thunar-progress-dialog.c:472
+#: ../thunar/thunar-progress-dialog.c:464
 #, c-format
 msgid "(%lu minute remaining)"
 msgid_plural "(%lu minutes remaining)"
 msgstr[0] "(Restando %lu minuto)"
 msgstr[1] "(Restando %lu minutos)"
 
-#: ../thunar/thunar-progress-dialog.c:477
+#: ../thunar/thunar-progress-dialog.c:469
 #, c-format
 msgid "(%lu second remaining)"
 msgid_plural "(%lu seconds remaining)"
 msgstr[0] "(Restando %lu segundo)"
 msgstr[1] "(Restando %lu segundos)"
 
-#: ../thunar/thunar-properties-dialog.c:173
+#: ../thunar/thunar-properties-dialog.c:174
 msgid "The file displayed by the dialog"
 msgstr "O arquivo mostrado pelo diálogo"
 
-#: ../thunar/thunar-properties-dialog.c:220
+#: ../thunar/thunar-properties-dialog.c:212
 msgid "General"
 msgstr "Geral"
 
-#: ../thunar/thunar-properties-dialog.c:237
+#: ../thunar/thunar-properties-dialog.c:229
 msgid "Name:"
 msgstr "Nome:"
 
 #.
 #. Second box (kind)
 #.
-#: ../thunar/thunar-properties-dialog.c:262
+#: ../thunar/thunar-properties-dialog.c:254
 msgid "Kind:"
 msgstr "Tipo:"
 
 #.
 #. Third box (modified, accessed)
 #.
-#: ../thunar/thunar-properties-dialog.c:287
+#: ../thunar/thunar-properties-dialog.c:279
 msgid "Modified:"
 msgstr "Modificado:"
 
-#: ../thunar/thunar-properties-dialog.c:300
+#: ../thunar/thunar-properties-dialog.c:292
 msgid "Accessed:"
 msgstr "Acessado:"
 
 #.
 #. Fourth box (volume, size)
 #.
-#: ../thunar/thunar-properties-dialog.c:324
+#: ../thunar/thunar-properties-dialog.c:316
 msgid "Volume:"
 msgstr "Volume:"
 
-#: ../thunar/thunar-properties-dialog.c:347
+#: ../thunar/thunar-properties-dialog.c:339
 msgid "Size:"
 msgstr "Tamanho:"
 
 #.
 #. Emblem chooser
 #.
-#: ../thunar/thunar-properties-dialog.c:371
+#: ../thunar/thunar-properties-dialog.c:363
 msgid "Emblems"
 msgstr "Emblemas"
 
-#: ../thunar/thunar-properties-dialog.c:618
+#: ../thunar/thunar-properties-dialog.c:606
 #, c-format
 msgid "%s Info"
 msgstr "Informação %s"
 
-#: ../thunar/thunar-properties-dialog.c:699
+#: ../thunar/thunar-properties-dialog.c:687
 #, c-format
 msgid "%s (%u Bytes)"
 msgstr "%s (%u Bytes)"
 
 #. display an error message
-#: ../thunar/thunar-properties-dialog.c:745
+#: ../thunar/thunar-properties-dialog.c:733
 #: ../thunar/thunar-standard-view.c:2170
 #, c-format
 msgid "Failed to rename `%s'"
@@ -1360,27 +1379,27 @@ msgstr "Texto da barra de status"
 msgid "The main text to be displayed in the statusbar"
 msgstr "O texto principal a ser mostrado na barra de status"
 
-#: ../thunar/thunar-text-renderer.c:215
+#: ../thunar/thunar-text-renderer.c:216
 msgid "Text"
 msgstr "Texto"
 
-#: ../thunar/thunar-text-renderer.c:216
+#: ../thunar/thunar-text-renderer.c:217
 msgid "The text to render"
 msgstr "O texto para renderizar"
 
-#: ../thunar/thunar-text-renderer.c:230
+#: ../thunar/thunar-text-renderer.c:231
 msgid "Wrap mode"
 msgstr "Modo quebra de texto"
 
-#: ../thunar/thunar-text-renderer.c:231
+#: ../thunar/thunar-text-renderer.c:232
 msgid "The wrap mode"
 msgstr "O modo de quebra de texto"
 
-#: ../thunar/thunar-text-renderer.c:246
+#: ../thunar/thunar-text-renderer.c:247
 msgid "Wrap width"
 msgstr "Largura da quebra de texto"
 
-#: ../thunar/thunar-text-renderer.c:247
+#: ../thunar/thunar-text-renderer.c:248
 msgid "The wrap width"
 msgstr "A largura da quebra de texto"
 
@@ -1873,3 +1892,34 @@ msgstr "Gerenciador de Arquivos"
 #: ../Thunar.desktop.in.h:3
 msgid "Thunar File Manager"
 msgstr "Gerenciador de Arquivos Thunar"
+
+#, fuzzy
+#~ msgid "Advanced Permissions"
+#~ msgstr "Permissões"
+
+#, fuzzy
+#~ msgid "Failed to change the group to which `%s' belongs"
+#~ msgstr "Falha em trocar modo de `%s'"
+
+#, fuzzy
+#~ msgid "%s (%s)"
+#~ msgstr "\"%s\" (%s) %s"
+
+#, fuzzy
+#~ msgid "List folder contents"
+#~ msgstr "Carregando conteúdos de pasta..."
+
+#, fuzzy
+#~ msgid "Execute"
+#~ msgstr "_Executar"
+
+#, fuzzy
+#~ msgid "_Grant Permission"
+#~ msgstr "Permissões"
+
+#, fuzzy
+#~ msgid "_Deny Permission"
+#~ msgstr "Permissões"
+
+#~ msgid "<b>Icon View</b>"
+#~ msgstr "<b>Visualização de Ícone</b>"
diff --git a/thunar-vfs/Makefile.am b/thunar-vfs/Makefile.am
index 59e4c62027e4e15cf1b3950066793167c790bd89..f3a62a0f291f4bb3d13ee52df6cc26ee1a306b0d 100644
--- a/thunar-vfs/Makefile.am
+++ b/thunar-vfs/Makefile.am
@@ -49,6 +49,10 @@ libthunar_vfs_include_HEADERS =						\
 libthunar_vfs_1_la_SOURCES =						\
 	$(libthunar_vfs_built_sources)					\
 	$(libthunar_vfs_headers)					\
+	thunar-vfs-chmod-job.c						\
+	thunar-vfs-chmod-job.h						\
+	thunar-vfs-chown-job.c						\
+	thunar-vfs-chown-job.h						\
 	thunar-vfs-config.c						\
 	thunar-vfs-exec.c						\
 	thunar-vfs-exec.h						\
diff --git a/thunar-vfs/thunar-vfs-chmod-job.c b/thunar-vfs/thunar-vfs-chmod-job.c
new file mode 100644
index 0000000000000000000000000000000000000000..7c27f8d1a0fd4ce91083a4aa8ed239bfd8dd9440
--- /dev/null
+++ b/thunar-vfs/thunar-vfs-chmod-job.c
@@ -0,0 +1,336 @@
+/* $Id$ */
+/*-
+ * Copyright (c) 2005-2006 Benedikt Meurer <benny@xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <thunar-vfs/thunar-vfs-chmod-job.h>
+#include <thunar-vfs/thunar-vfs-monitor.h>
+#include <thunar-vfs/thunar-vfs-scandir.h>
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+
+
+static void     thunar_vfs_chmod_job_class_init (ThunarVfsChmodJobClass *klass);
+static void     thunar_vfs_chmod_job_init       (ThunarVfsChmodJob      *chmod_job);
+static void     thunar_vfs_chmod_job_finalize   (GObject                *object);
+static void     thunar_vfs_chmod_job_execute    (ThunarVfsJob           *job);
+static gboolean thunar_vfs_chmod_job_operate    (ThunarVfsChmodJob      *chmod_job,
+                                                 ThunarVfsPath          *path,
+                                                 GError                **error);
+
+
+
+struct _ThunarVfsChmodJobClass
+{
+  ThunarVfsInteractiveJobClass __parent__;
+};
+
+struct _ThunarVfsChmodJob
+{
+  ThunarVfsInteractiveJob __parent__;
+
+  ThunarVfsMonitor *monitor;
+
+  ThunarVfsPath    *path;
+  ThunarVfsFileMode dir_mask;
+  ThunarVfsFileMode dir_mode;
+  ThunarVfsFileMode file_mask;
+  ThunarVfsFileMode file_mode;
+  gboolean          recursive;
+
+  guint             total;
+  guint             completed;
+};
+
+
+
+static GObjectClass *thunar_vfs_chmod_job_parent_class;
+
+
+
+GType
+thunar_vfs_chmod_job_get_type (void)
+{
+  static GType type = G_TYPE_INVALID;
+
+  if (G_UNLIKELY (type == G_TYPE_INVALID))
+    {
+      static const GTypeInfo info =
+      {
+        sizeof (ThunarVfsChmodJobClass),
+        NULL,
+        NULL,
+        (GClassInitFunc) thunar_vfs_chmod_job_class_init,
+        NULL,
+        NULL,
+        sizeof (ThunarVfsChmodJob),
+        0,
+        (GInstanceInitFunc) thunar_vfs_chmod_job_init,
+        NULL,
+      };
+
+      type = g_type_register_static (THUNAR_VFS_TYPE_INTERACTIVE_JOB,
+                                     I_("ThunarVfsChmodJob"), &info, 0);
+    }
+
+  return type;
+}
+
+
+
+static void
+thunar_vfs_chmod_job_class_init (ThunarVfsChmodJobClass *klass)
+{
+  ThunarVfsJobClass *thunarvfs_job_class;
+  GObjectClass      *gobject_class;
+
+  /* determine the parent type class */
+  thunar_vfs_chmod_job_parent_class = g_type_class_peek_parent (klass);
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize = thunar_vfs_chmod_job_finalize;
+
+  thunarvfs_job_class = THUNAR_VFS_JOB_CLASS (klass);
+  thunarvfs_job_class->execute = thunar_vfs_chmod_job_execute;
+}
+
+
+
+static void
+thunar_vfs_chmod_job_init (ThunarVfsChmodJob *chmod_job)
+{
+  /* grab a reference on the VFS monitor */
+  chmod_job->monitor = thunar_vfs_monitor_get_default ();
+}
+
+
+
+static void
+thunar_vfs_chmod_job_finalize (GObject *object)
+{
+  ThunarVfsChmodJob *chmod_job = THUNAR_VFS_CHMOD_JOB (object);
+
+  /* release the reference on the VFS monitor */
+  g_object_unref (G_OBJECT (chmod_job->monitor));
+
+  /* release the base path */
+  thunar_vfs_path_unref (chmod_job->path);
+
+  (*G_OBJECT_CLASS (thunar_vfs_chmod_job_parent_class)->finalize) (object);
+}
+
+
+
+static void
+thunar_vfs_chmod_job_execute (ThunarVfsJob *job)
+{
+  ThunarVfsChmodJob *chmod_job = THUNAR_VFS_CHMOD_JOB (job);
+  gboolean           skip;
+  gdouble            percentage;
+  GError            *error = NULL;
+  gchar             *message;
+  GList             *path_list = NULL;
+  GList             *lp;
+
+  thunar_vfs_interactive_job_info_message (THUNAR_VFS_INTERACTIVE_JOB (job), _("Collecting files..."));
+
+  /* check if we should operate recursively and collect the paths */
+  if (G_UNLIKELY (chmod_job->recursive))
+    path_list = thunar_vfs_scandir (chmod_job->path, THUNAR_VFS_SCANDIR_RECURSIVE, NULL, NULL);
+  path_list = thunar_vfs_path_list_prepend (path_list, chmod_job->path);
+
+  /* determine the total number of paths (atleast one!) */
+  chmod_job->total = g_list_length (path_list);
+
+  /* process all paths */
+  for (lp = path_list; !thunar_vfs_job_cancelled (job) && lp != NULL; lp = lp->next)
+    {
+      /* try to perform the operation */
+      if (!thunar_vfs_chmod_job_operate (chmod_job, lp->data, &error))
+        {
+          /* no need to ask if this is the last file */
+          if (G_UNLIKELY (lp->next == NULL))
+            break;
+
+          /* ask the user whether we should skip the file */
+          message = g_strdup_printf (_("%s.\n\nDo you want to skip it?"), error->message);
+          skip = thunar_vfs_interactive_job_skip (THUNAR_VFS_INTERACTIVE_JOB (job), message);
+          g_clear_error (&error);
+          g_free (message);
+
+          /* check if we should skip */
+          if (G_UNLIKELY (!skip))
+            break;
+        }
+
+      /* we've just completed another item */
+      chmod_job->completed += 1;
+
+      /* update the percentage */
+      percentage = (chmod_job->completed * 100.0) / chmod_job->total;
+      thunar_vfs_interactive_job_percent (THUNAR_VFS_INTERACTIVE_JOB (job), CLAMP (percentage, 0.0, 100.0));
+
+      /* release the path */
+      thunar_vfs_path_unref (lp->data);
+    }
+
+  /* release the (remaining) path list */
+  for (; lp != NULL; lp = lp->next)
+    thunar_vfs_path_unref (lp->data);
+  g_list_free (path_list);
+}
+
+
+
+static gboolean
+thunar_vfs_chmod_job_operate (ThunarVfsChmodJob *chmod_job,
+                              ThunarVfsPath     *path,
+                              GError           **error)
+{
+  const gchar *message;
+  struct stat  statb;
+  mode_t       mask;
+  mode_t       mode;
+  gchar        absolute_path[THUNAR_VFS_PATH_MAXSTRLEN];
+  gchar       *display_name;
+
+  /* update the progress message */
+  display_name = g_filename_display_name (thunar_vfs_path_get_name (path));
+  thunar_vfs_interactive_job_info_message (THUNAR_VFS_INTERACTIVE_JOB (chmod_job), display_name);
+  g_free (display_name);
+
+  /* determine the absolute path */
+  if (thunar_vfs_path_to_string (path, absolute_path, sizeof (absolute_path), error) < 0)
+    return FALSE;
+
+  /* try to stat the file */
+  if (stat (absolute_path, &statb) < 0)
+    {
+      /* we just ignore ENOENT here */
+      if (G_UNLIKELY (errno == ENOENT))
+        return TRUE;
+
+      message = _("Failed to determine file info of `%s': %s");
+      goto error;
+    }
+
+  /* different actions depending on the type of the file */
+  if (S_ISDIR (statb.st_mode))
+    {
+      mask = chmod_job->dir_mask;
+      mode = chmod_job->dir_mode;
+    }
+  else
+    {
+      mask = chmod_job->file_mask;
+      mode = chmod_job->file_mode;
+    }
+
+  /* determine the new mode */
+  mode = ((statb.st_mode & ~mask) | mode) & 07777;
+
+  /* try to apply the new mode */
+  if (chmod (absolute_path, mode) < 0)
+    {
+      /* again, ignore ENOENT */
+      if (G_UNLIKELY (errno == ENOENT))
+        return TRUE;
+
+      message = _("Failed to change permissions of `%s': %s");
+      goto error;
+    }
+
+  /* feed a change notification event */
+  thunar_vfs_monitor_feed (chmod_job->monitor, THUNAR_VFS_MONITOR_EVENT_CHANGED, path);
+
+  /* we did it */
+  return TRUE;
+
+error:
+  display_name = g_filename_display_name (absolute_path);
+  g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno), message, display_name, g_strerror (errno));
+  g_free (display_name);
+  return FALSE;
+}
+
+
+
+/**
+ * thunar_vfs_chmod_job_new:
+ * @path      : the base path.
+ * @dir_mask  : the mode mask for directories.
+ * @dir_mode  : the new mode for directories.
+ * @file_mask : the mode mask for files.
+ * @file_mode : the new mode for files.
+ * @recursive : whether to operate recursively.
+ * @error     : return location for errors or %NULL.
+ *
+ * Allocates a new #ThunarVfsChmodJob instance, which is
+ * used to change the mode of @path (and maybe subfiles
+ * and subfolders, depending on @recursive).
+ *
+ * Return value: the newly allocated #ThunarVfsChmodJob.
+ **/
+ThunarVfsJob*
+thunar_vfs_chmod_job_new (ThunarVfsPath     *path,
+                          ThunarVfsFileMode  dir_mask,
+                          ThunarVfsFileMode  dir_mode,
+                          ThunarVfsFileMode  file_mask,
+                          ThunarVfsFileMode  file_mode,
+                          gboolean           recursive,
+                          GError           **error)
+{
+  ThunarVfsChmodJob *chmod_job;
+  
+  g_return_val_if_fail (path != NULL, NULL);
+  g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+  /* allocate and initialize the new job */
+  chmod_job = g_object_new (THUNAR_VFS_TYPE_CHMOD_JOB, NULL);
+  chmod_job->path = thunar_vfs_path_ref (path);
+  chmod_job->dir_mask = dir_mask;
+  chmod_job->dir_mode = dir_mode;
+  chmod_job->file_mask = file_mask;
+  chmod_job->file_mode = file_mode;
+  chmod_job->recursive = recursive;
+
+  return THUNAR_VFS_JOB (chmod_job);
+}
+
+
+
+#define __THUNAR_VFS_TRANSFER_JOB_C__
+#include <thunar-vfs/thunar-vfs-aliasdef.c>
diff --git a/thunar-vfs/thunar-vfs-chmod-job.h b/thunar-vfs/thunar-vfs-chmod-job.h
new file mode 100644
index 0000000000000000000000000000000000000000..e0e23fc990fe9512786835e705db353a386f3f07
--- /dev/null
+++ b/thunar-vfs/thunar-vfs-chmod-job.h
@@ -0,0 +1,56 @@
+/* $Id$ */
+/*-
+ * Copyright (c) 2005-2006 Benedikt Meurer <benny@xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#if !defined (THUNAR_VFS_INSIDE_THUNAR_VFS_H) && !defined (THUNAR_VFS_COMPILATION)
+#error "Only <thunar-vfs/thunar-vfs.h> can be included directly, this file may disappear or change contents."
+#endif
+
+#ifndef __THUNAR_VFS_CHMOD_JOB_H__
+#define __THUNAR_VFS_CHMOD_JOB_H__
+
+#include <thunar-vfs/thunar-vfs-interactive-job.h>
+#include <thunar-vfs/thunar-vfs-path.h>
+#include <thunar-vfs/thunar-vfs-types.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarVfsChmodJobClass ThunarVfsChmodJobClass;
+typedef struct _ThunarVfsChmodJob      ThunarVfsChmodJob;
+
+#define THUNAR_VFS_TYPE_CHMOD_JOB             (thunar_vfs_chmod_job_get_type ())
+#define THUNAR_VFS_CHMOD_JOB(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_VFS_TYPE_CHMOD_JOB, ThunarVfsChmodJob))
+#define THUNAR_VFS_CHMOD_JOB_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_VFS_TYPE_CHMOD_JOB, ThunarVfsChmodJobClass))
+#define THUNAR_VFS_IS_CHMOD_JOB(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_VFS_TYPE_CHMOD_JOB))
+#define THUNAR_VFS_IS_CHMOD_JOB_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_VFS_TYPE_CHMOD_JOB))
+#define THUNAR_VFS_CHMOD_JOB_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_VFS_TYPE_CHMOD_JOB, ThunarVfsChmodJobClass))
+
+GType         thunar_vfs_chmod_job_get_type (void) G_GNUC_CONST G_GNUC_INTERNAL;
+
+ThunarVfsJob *thunar_vfs_chmod_job_new      (ThunarVfsPath     *path,
+                                             ThunarVfsFileMode  dir_mask,
+                                             ThunarVfsFileMode  dir_mode,
+                                             ThunarVfsFileMode  file_mask,
+                                             ThunarVfsFileMode  file_mode,
+                                             gboolean           recursive,
+                                             GError           **error) G_GNUC_INTERNAL G_GNUC_MALLOC;
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_CHMOD_JOB_H__ */
diff --git a/thunar-vfs/thunar-vfs-chown-job.c b/thunar-vfs/thunar-vfs-chown-job.c
new file mode 100644
index 0000000000000000000000000000000000000000..410f6e811ea2e16c265c1a6c47bd46597a50adc3
--- /dev/null
+++ b/thunar-vfs/thunar-vfs-chown-job.c
@@ -0,0 +1,321 @@
+/* $Id$ */
+/*-
+ * Copyright (c) 2005-2006 Benedikt Meurer <benny@xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * ownify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <thunar-vfs/thunar-vfs-chown-job.h>
+#include <thunar-vfs/thunar-vfs-monitor.h>
+#include <thunar-vfs/thunar-vfs-scandir.h>
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+
+
+static void     thunar_vfs_chown_job_class_init (ThunarVfsChownJobClass *klass);
+static void     thunar_vfs_chown_job_init       (ThunarVfsChownJob      *chown_job);
+static void     thunar_vfs_chown_job_finalize   (GObject                *object);
+static void     thunar_vfs_chown_job_execute    (ThunarVfsJob           *job);
+static gboolean thunar_vfs_chown_job_operate    (ThunarVfsChownJob      *chown_job,
+                                                 ThunarVfsPath          *path,
+                                                 GError                **error);
+
+
+
+struct _ThunarVfsChownJobClass
+{
+  ThunarVfsInteractiveJobClass __parent__;
+};
+
+struct _ThunarVfsChownJob
+{
+  ThunarVfsInteractiveJob __parent__;
+
+  ThunarVfsMonitor *monitor;
+
+  ThunarVfsPath    *path;
+  gint              uid;
+  gint              gid;
+  gboolean          recursive;
+
+  guint             total;
+  guint             completed;
+};
+
+
+
+static GObjectClass *thunar_vfs_chown_job_parent_class;
+
+
+
+GType
+thunar_vfs_chown_job_get_type (void)
+{
+  static GType type = G_TYPE_INVALID;
+
+  if (G_UNLIKELY (type == G_TYPE_INVALID))
+    {
+      static const GTypeInfo info =
+      {
+        sizeof (ThunarVfsChownJobClass),
+        NULL,
+        NULL,
+        (GClassInitFunc) thunar_vfs_chown_job_class_init,
+        NULL,
+        NULL,
+        sizeof (ThunarVfsChownJob),
+        0,
+        (GInstanceInitFunc) thunar_vfs_chown_job_init,
+        NULL,
+      };
+
+      type = g_type_register_static (THUNAR_VFS_TYPE_INTERACTIVE_JOB,
+                                     I_("ThunarVfsChownJob"), &info, 0);
+    }
+
+  return type;
+}
+
+
+
+static void
+thunar_vfs_chown_job_class_init (ThunarVfsChownJobClass *klass)
+{
+  ThunarVfsJobClass *thunarvfs_job_class;
+  GObjectClass      *gobject_class;
+
+  /* determine the parent type class */
+  thunar_vfs_chown_job_parent_class = g_type_class_peek_parent (klass);
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize = thunar_vfs_chown_job_finalize;
+
+  thunarvfs_job_class = THUNAR_VFS_JOB_CLASS (klass);
+  thunarvfs_job_class->execute = thunar_vfs_chown_job_execute;
+}
+
+
+
+static void
+thunar_vfs_chown_job_init (ThunarVfsChownJob *chown_job)
+{
+  /* grab a reference on the VFS monitor */
+  chown_job->monitor = thunar_vfs_monitor_get_default ();
+}
+
+
+
+static void
+thunar_vfs_chown_job_finalize (GObject *object)
+{
+  ThunarVfsChownJob *chown_job = THUNAR_VFS_CHOWN_JOB (object);
+
+  /* release the reference on the VFS monitor */
+  g_object_unref (G_OBJECT (chown_job->monitor));
+
+  /* release the base path */
+  thunar_vfs_path_unref (chown_job->path);
+
+  (*G_OBJECT_CLASS (thunar_vfs_chown_job_parent_class)->finalize) (object);
+}
+
+
+
+static void
+thunar_vfs_chown_job_execute (ThunarVfsJob *job)
+{
+  ThunarVfsChownJob *chown_job = THUNAR_VFS_CHOWN_JOB (job);
+  gboolean           skip;
+  gdouble            percentage;
+  GError            *error = NULL;
+  gchar             *message;
+  GList             *path_list = NULL;
+  GList             *lp;
+
+  thunar_vfs_interactive_job_info_message (THUNAR_VFS_INTERACTIVE_JOB (job), _("Collecting files..."));
+
+  /* check if we should operate recursively and collect the paths */
+  if (G_UNLIKELY (chown_job->recursive))
+    path_list = thunar_vfs_scandir (chown_job->path, THUNAR_VFS_SCANDIR_RECURSIVE, NULL, NULL);
+  path_list = thunar_vfs_path_list_prepend (path_list, chown_job->path);
+
+  /* determine the total number of paths (atleast one!) */
+  chown_job->total = g_list_length (path_list);
+
+  /* process all paths */
+  for (lp = path_list; !thunar_vfs_job_cancelled (job) && lp != NULL; lp = lp->next)
+    {
+      /* try to perform the operation */
+      if (!thunar_vfs_chown_job_operate (chown_job, lp->data, &error))
+        {
+          /* no need to ask if this is the last file */
+          if (G_UNLIKELY (lp->next == NULL))
+            break;
+
+          /* ask the user whether we should skip the file */
+          message = g_strdup_printf (_("%s.\n\nDo you want to skip it?"), error->message);
+          skip = thunar_vfs_interactive_job_skip (THUNAR_VFS_INTERACTIVE_JOB (job), message);
+          g_clear_error (&error);
+          g_free (message);
+
+          /* check if we should skip */
+          if (G_UNLIKELY (!skip))
+            break;
+        }
+
+      /* we've just completed another item */
+      chown_job->completed += 1;
+
+      /* update the percentage */
+      percentage = (chown_job->completed * 100.0) / chown_job->total;
+      thunar_vfs_interactive_job_percent (THUNAR_VFS_INTERACTIVE_JOB (job), CLAMP (percentage, 0.0, 100.0));
+
+      /* release the path */
+      thunar_vfs_path_unref (lp->data);
+    }
+
+  /* release the (remaining) path list */
+  for (; lp != NULL; lp = lp->next)
+    thunar_vfs_path_unref (lp->data);
+  g_list_free (path_list);
+}
+
+
+
+static gboolean
+thunar_vfs_chown_job_operate (ThunarVfsChownJob *chown_job,
+                              ThunarVfsPath     *path,
+                              GError           **error)
+{
+  const gchar *message;
+  struct stat  statb;
+  gchar        absolute_path[THUNAR_VFS_PATH_MAXSTRLEN];
+  gchar       *display_name;
+  gid_t        gid;
+  uid_t        uid;
+
+  /* update the progress message */
+  display_name = g_filename_display_name (thunar_vfs_path_get_name (path));
+  thunar_vfs_interactive_job_info_message (THUNAR_VFS_INTERACTIVE_JOB (chown_job), display_name);
+  g_free (display_name);
+
+  /* determine the absolute path */
+  if (thunar_vfs_path_to_string (path, absolute_path, sizeof (absolute_path), error) < 0)
+    return FALSE;
+
+  /* try to stat the file */
+  if (stat (absolute_path, &statb) < 0)
+    {
+      /* we just ignore ENOENT here */
+      if (G_UNLIKELY (errno == ENOENT))
+        return TRUE;
+
+      message = _("Failed to determine file info of `%s': %s");
+      goto error;
+    }
+
+  /* determine new gid/uid */
+  gid = (chown_job->gid < 0) ? statb.st_gid : chown_job->gid;
+  uid = (chown_job->uid < 0) ? statb.st_uid : chown_job->uid;
+
+  /* try to apply the new gid/uid */
+  if (chown (absolute_path, uid, gid) < 0)
+    {
+      /* again, ignore ENOENT */
+      if (G_UNLIKELY (errno == ENOENT))
+        return TRUE;
+
+      if (chown_job->uid < 0)
+        message = _("Failed to change file owner of `%s': %s");
+      else
+        message = _("Failed to change file group of `%s': %s");
+      goto error;
+    }
+
+  /* feed a change notification event */
+  thunar_vfs_monitor_feed (chown_job->monitor, THUNAR_VFS_MONITOR_EVENT_CHANGED, path);
+
+  /* we did it */
+  return TRUE;
+
+error:
+  display_name = g_filename_display_name (absolute_path);
+  g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno), message, display_name, g_strerror (errno));
+  g_free (display_name);
+  return FALSE;
+}
+
+
+
+/**
+ * thunar_vfs_chown_job_new:
+ * @path      : the base path.
+ * @uid       : the new user id or %-1 to keep the old uid.
+ * @gid       : the new group id or %-1 to keep the old gid.
+ * @recursive : whether to operate recursively.
+ * @error     : return location for errors or %NULL.
+ *
+ * Allocates a new #ThunarVfsChownJob instance, which is
+ * used to change the owne of @path (and maybe subfiles
+ * and subfolders, depending on @recursive).
+ *
+ * Return value: the newly allocated #ThunarVfsChownJob.
+ **/
+ThunarVfsJob*
+thunar_vfs_chown_job_new (ThunarVfsPath *path,
+                          gint           uid,
+                          gint           gid,
+                          gboolean       recursive,
+                          GError       **error)
+{
+  ThunarVfsChownJob *chown_job;
+  
+  g_return_val_if_fail (path != NULL, NULL);
+  g_return_val_if_fail (uid >= 0 || gid >= 0, NULL);
+  g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+  /* allocate and initialize the new job */
+  chown_job = g_object_new (THUNAR_VFS_TYPE_CHOWN_JOB, NULL);
+  chown_job->path = thunar_vfs_path_ref (path);
+  chown_job->uid = uid;
+  chown_job->gid = gid;
+  chown_job->recursive = recursive;
+
+  return THUNAR_VFS_JOB (chown_job);
+}
+
+
+
+#define __THUNAR_VFS_TRANSFER_JOB_C__
+#include <thunar-vfs/thunar-vfs-aliasdef.c>
diff --git a/thunar-vfs/thunar-vfs-chown-job.h b/thunar-vfs/thunar-vfs-chown-job.h
new file mode 100644
index 0000000000000000000000000000000000000000..6c17cb0211cc65dd66b482a9368760adfb0897cc
--- /dev/null
+++ b/thunar-vfs/thunar-vfs-chown-job.h
@@ -0,0 +1,54 @@
+/* $Id$ */
+/*-
+ * Copyright (c) 2005-2006 Benedikt Meurer <benny@xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * ownify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#if !defined (THUNAR_VFS_INSIDE_THUNAR_VFS_H) && !defined (THUNAR_VFS_COMPILATION)
+#error "Only <thunar-vfs/thunar-vfs.h> can be included directly, this file may disappear or change contents."
+#endif
+
+#ifndef __THUNAR_VFS_CHOWN_JOB_H__
+#define __THUNAR_VFS_CHOWN_JOB_H__
+
+#include <thunar-vfs/thunar-vfs-interactive-job.h>
+#include <thunar-vfs/thunar-vfs-path.h>
+#include <thunar-vfs/thunar-vfs-types.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarVfsChownJobClass ThunarVfsChownJobClass;
+typedef struct _ThunarVfsChownJob      ThunarVfsChownJob;
+
+#define THUNAR_VFS_TYPE_CHOWN_JOB             (thunar_vfs_chown_job_get_type ())
+#define THUNAR_VFS_CHOWN_JOB(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_VFS_TYPE_CHOWN_JOB, ThunarVfsChownJob))
+#define THUNAR_VFS_CHOWN_JOB_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_VFS_TYPE_CHOWN_JOB, ThunarVfsChownJobClass))
+#define THUNAR_VFS_IS_CHOWN_JOB(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_VFS_TYPE_CHOWN_JOB))
+#define THUNAR_VFS_IS_CHOWN_JOB_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_VFS_TYPE_CHOWN_JOB))
+#define THUNAR_VFS_CHOWN_JOB_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_VFS_TYPE_CHOWN_JOB, ThunarVfsChownJobClass))
+
+GType         thunar_vfs_chown_job_get_type (void) G_GNUC_CONST G_GNUC_INTERNAL;
+
+ThunarVfsJob *thunar_vfs_chown_job_new      (ThunarVfsPath *path,
+                                             gint           uid,
+                                             gint           gid,
+                                             gboolean       recursive,
+                                             GError       **error) G_GNUC_INTERNAL G_GNUC_MALLOC;
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_CHOWN_JOB_H__ */
diff --git a/thunar-vfs/thunar-vfs-info.c b/thunar-vfs/thunar-vfs-info.c
index 5445a802893f61a1c3a953d008934c3f5eb97deb..819614028ece9607f6057028538cabcf67de14dc 100644
--- a/thunar-vfs/thunar-vfs-info.c
+++ b/thunar-vfs/thunar-vfs-info.c
@@ -192,107 +192,6 @@ thunar_vfs_info_copy (const ThunarVfsInfo *info)
 
 
 
-/**
- * thunar_vfs_info_chgrp:
- * @info  : a #ThunarVfsInfo.
- * @gid   : the new group id.
- * @error : return location for errors or %NULL.
- *
- * Changes the group of the file identified by @info to @gid. Returns
- * %TRUE if the operation was successfull, else %FALSE is returned and
- * @error is set to describe the cause of the problem.
- *
- * Return value: %TRUE if the group of the file referred to by @info
- *               was successfully changed to @gid.
- **/
-gboolean
-thunar_vfs_info_chgrp (ThunarVfsInfo   *info,
-                       ThunarVfsGroupId gid,
-                       GError         **error)
-{
-  gboolean succeed = TRUE;
-  gchar   *absolute_path;
-
-  g_return_val_if_fail (info != NULL, FALSE);
-  g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
-
-  /* determine the absolute path to the file */
-  absolute_path = thunar_vfs_path_dup_string (info->path);
-
-  /* try to change the group */
-  if (chown (absolute_path, info->uid, gid) < 0)
-    {
-      /* forward the error */
-      g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno), g_strerror (errno));
-      succeed = FALSE;
-    }
-  else
-    {
-      /* update the group id */
-      info->gid = gid;
-    }
-
-  /* cleanup */
-  g_free (absolute_path);
-
-  return succeed;
-}
-
-
-
-/**
- * thunar_vfs_info_chmod:
- * @info  : a #ThunarVfsInfo.
- * @mode  : the new file mode.
- * @error : return location for errors or %NULL.
- *
- * Changes the mode of the file identified by @info to @mode. Returns
- * %TRUE if the operation was successfull, else %FALSE is returned and
- * @error is set to describe the cause of the problem.
- *
- * Return value: %TRUE if the mode of the file identified by @info
- *               was successfully changed to @mode.
- **/
-gboolean
-thunar_vfs_info_chmod (ThunarVfsInfo    *info,
-                       ThunarVfsFileMode mode,
-                       GError          **error)
-{
-  gboolean succeed = TRUE;
-  gchar   *absolute_path;
-
-  g_return_val_if_fail (info != NULL, FALSE);
-  g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
-
-  /* make sure, we don't try to set the file type
-   * (some systems will complain otherwise).
-   */
-  mode &= 07777;
-
-  /* determine the absolute path to the file */
-  absolute_path = thunar_vfs_path_dup_string (info->path);
-
-  /* try to change the file mode */
-  if (chmod (absolute_path, mode) < 0)
-    {
-      /* forward the error */
-      g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno), g_strerror (errno));
-      succeed = FALSE;
-    }
-  else
-    {
-      /* update the mode for info */
-      info->mode = mode;
-    }
-
-  /* cleanup */
-  g_free (absolute_path);
-
-  return succeed;
-}
-
-
-
 /**
  * thunar_vfs_info_execute:
  * @info      : a #ThunarVfsInfo.
diff --git a/thunar-vfs/thunar-vfs-info.h b/thunar-vfs/thunar-vfs-info.h
index 6e9519c620fc7e66a433c8bf06cdad0b0f8518a2..1fc335cfce73697e4ed45bb0fe416a5d7a29f570 100644
--- a/thunar-vfs/thunar-vfs-info.h
+++ b/thunar-vfs/thunar-vfs-info.h
@@ -102,14 +102,6 @@ ThunarVfsInfo               *thunar_vfs_info_copy             (const ThunarVfsIn
 
 G_INLINE_FUNC const gchar   *thunar_vfs_info_get_custom_icon  (const ThunarVfsInfo *info);
 
-gboolean                     thunar_vfs_info_chgrp            (ThunarVfsInfo       *info,
-                                                               ThunarVfsGroupId     gid,
-                                                               GError             **error);
-
-gboolean                     thunar_vfs_info_chmod            (ThunarVfsInfo       *info,
-                                                               ThunarVfsFileMode    mode,
-                                                               GError             **error);
-
 gboolean                     thunar_vfs_info_execute          (const ThunarVfsInfo *info,
                                                                GdkScreen           *screen,
                                                                GList               *path_list,
diff --git a/thunar-vfs/thunar-vfs-monitor.c b/thunar-vfs/thunar-vfs-monitor.c
index ab106b4584fff6819ebb86d1200b39b0b2687323..5ad85ce05dfe24c47469b66a42c204f2f240507e 100644
--- a/thunar-vfs/thunar-vfs-monitor.c
+++ b/thunar-vfs/thunar-vfs-monitor.c
@@ -1,6 +1,6 @@
 /* $Id$ */
 /*-
- * Copyright (c) 2005 Benedikt Meurer <benny@xfce.org>
+ * Copyright (c) 2005-2006 Benedikt Meurer <benny@xfce.org>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -266,7 +266,7 @@ thunar_vfs_monitor_queue_notification (ThunarVfsMonitor     *monitor,
 
   /* check if we already have a matching notification */
   for (notification = monitor->notifications; notification != NULL; notification = notification->next)
-    if (notification->id == id && strcmp (filename, notification->filename) == 0)
+    if (notification->id == id && exo_str_is_equal (filename, notification->filename))
       {
         if (tag >= notification->tag)
           {
diff --git a/thunar-vfs/thunar-vfs.c b/thunar-vfs/thunar-vfs.c
index 7c23252326c654f82049e0b35d5313e8b3ac1fb1..07e9bb782f2fa3eb382a1cfe0b43cfb0344007db 100644
--- a/thunar-vfs/thunar-vfs.c
+++ b/thunar-vfs/thunar-vfs.c
@@ -23,6 +23,8 @@
 #endif
 
 #include <thunar-vfs/thunar-vfs.h>
+#include <thunar-vfs/thunar-vfs-chmod-job.h>
+#include <thunar-vfs/thunar-vfs-chown-job.h>
 #include <thunar-vfs/thunar-vfs-link-job.h>
 #include <thunar-vfs/thunar-vfs-listdir-job.h>
 #include <thunar-vfs/thunar-vfs-mkdir-job.h>
@@ -519,5 +521,124 @@ thunar_vfs_make_directories (GList   *path_list,
 
 
 
+/**
+ * thunar_vfs_change_mode:
+ * @path      : the base #ThunarVfsPath.
+ * @dir_mask  : the mask for the @dir_mode.
+ * @dir_mode  : the new mode for directories.
+ * @file_mask : the mask for the @file_mode.
+ * @file_mode : the new mode for files.
+ * @recursive : whether to change permissions recursively.
+ * @error     : return location for errors or %NULL.
+ *
+ * The caller is responsible to free the returned job using
+ * g_object_unref() when no longer needed.
+ *
+ * Note, that the returned job is launched right away, so you don't
+ * need to call thunar_vfs_job_launch() on it.
+ *
+ * Return value: the newly allocated #ThunarVfsChmodJob or %NULL
+ *               if an error occurs while creating the job.
+ **/
+ThunarVfsJob*
+thunar_vfs_change_mode (ThunarVfsPath    *path,
+                        ThunarVfsFileMode dir_mask,
+                        ThunarVfsFileMode dir_mode,
+                        ThunarVfsFileMode file_mask,
+                        ThunarVfsFileMode file_mode,
+                        gboolean          recursive,
+                        GError          **error)
+{
+  ThunarVfsJob *job;
+
+  g_return_val_if_fail (path != NULL, NULL);
+  g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+  /* allocate and launch the new job */
+  job = thunar_vfs_chmod_job_new (path, dir_mask, dir_mode, file_mask, file_mode, recursive, error);
+  if (G_LIKELY (job != NULL))
+    thunar_vfs_job_launch (job);
+
+  return job;
+}
+
+
+
+/**
+ * thunar_vfs_change_group:
+ * @path      : the base #ThunarVfsPath.
+ * @gid       : the new group id.
+ * @recursive : whether to change groups recursively.
+ * @error     : return location for errors or %NULL.
+ *
+ * The caller is responsible to free the returned job using
+ * g_object_unref() when no longer needed.
+ *
+ * Note, that the returned job is launched right away, so you don't
+ * need to call thunar_vfs_job_launch() on it.
+ *
+ * Return value: the newly allocated #ThunarVfsChownJob or %NULL
+ *               if an error occurs while creating the job.
+ **/
+ThunarVfsJob*
+thunar_vfs_change_group (ThunarVfsPath   *path,
+                         ThunarVfsGroupId gid,
+                         gboolean         recursive,
+                         GError         **error)
+{
+  ThunarVfsJob *job;
+
+  g_return_val_if_fail (path != NULL, NULL);
+  g_return_val_if_fail ((gint) gid >= 0, NULL);
+  g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+  /* allocate and launch the new job */
+  job = thunar_vfs_chown_job_new (path, -1, gid, recursive, error);
+  if (G_LIKELY (job != NULL))
+    thunar_vfs_job_launch (job);
+
+  return job;
+}
+
+
+
+/**
+ * thunar_vfs_change_owner:
+ * @path      : the base #ThunarVfsPath.
+ * @uid       : the new user id.
+ * @recursive : whether to change groups recursively.
+ * @error     : return location for errors or %NULL.
+ *
+ * The caller is responsible to free the returned job using
+ * g_object_unref() when no longer needed.
+ *
+ * Note, that the returned job is launched right away, so you don't
+ * need to call thunar_vfs_job_launch() on it.
+ *
+ * Return value: the newly allocated #ThunarVfsChownJob or %NULL
+ *               if an error occurs while creating the job.
+ **/
+ThunarVfsJob*
+thunar_vfs_change_owner (ThunarVfsPath  *path,
+                         ThunarVfsUserId uid,
+                         gboolean        recursive,
+                         GError        **error)
+{
+  ThunarVfsJob *job;
+
+  g_return_val_if_fail (path != NULL, NULL);
+  g_return_val_if_fail ((gint) uid >= 0, NULL);
+  g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+  /* allocate and launch the new job */
+  job = thunar_vfs_chown_job_new (path, uid, -1, recursive, error);
+  if (G_LIKELY (job != NULL))
+    thunar_vfs_job_launch (job);
+
+  return job;
+}
+
+
+
 #define __THUNAR_VFS_C__
 #include <thunar-vfs/thunar-vfs-aliasdef.c>
diff --git a/thunar-vfs/thunar-vfs.h b/thunar-vfs/thunar-vfs.h
index 6f863373f309be8c1e6790ee7e14f5ae4fcc1b6a..919b7d7bdc46b4c3892738d0882233149ef8d508 100644
--- a/thunar-vfs/thunar-vfs.h
+++ b/thunar-vfs/thunar-vfs.h
@@ -44,39 +44,57 @@ G_BEGIN_DECLS;
 void          thunar_vfs_init             (void);
 void          thunar_vfs_shutdown         (void);
 
-ThunarVfsJob *thunar_vfs_listdir          (ThunarVfsPath *path,
-                                           GError       **error) G_GNUC_MALLOC;
-
-ThunarVfsJob *thunar_vfs_copy_file        (ThunarVfsPath *source_path,
-                                           ThunarVfsPath *target_path,
-                                           GError       **error) G_GNUC_MALLOC;
-ThunarVfsJob *thunar_vfs_copy_files       (GList         *source_path_list,
-                                           GList         *target_path_list,
-                                           GError       **error) G_GNUC_MALLOC;
-
-ThunarVfsJob *thunar_vfs_link_file        (ThunarVfsPath *source_path,
-                                           ThunarVfsPath *target_path,
-                                           GError       **error) G_GNUC_MALLOC;
-ThunarVfsJob *thunar_vfs_link_files       (GList         *source_path_list,
-                                           GList         *target_path_list,
-                                           GError       **error) G_GNUC_MALLOC;
-
-ThunarVfsJob *thunar_vfs_move_file        (ThunarVfsPath *source_path,
-                                           ThunarVfsPath *target_path,
-                                           GError       **error) G_GNUC_MALLOC;
-ThunarVfsJob *thunar_vfs_move_files       (GList         *source_path_list,
-                                           GList         *target_path_list,
-                                           GError       **error) G_GNUC_MALLOC;
-
-ThunarVfsJob *thunar_vfs_unlink_file      (ThunarVfsPath *path,
-                                           GError       **error) G_GNUC_MALLOC;
-ThunarVfsJob *thunar_vfs_unlink_files     (GList         *path_list,
-                                           GError       **error) G_GNUC_MALLOC;
-
-ThunarVfsJob *thunar_vfs_make_directory   (ThunarVfsPath *path,
-                                           GError       **error) G_GNUC_MALLOC;
-ThunarVfsJob *thunar_vfs_make_directories (GList         *path_list,
-                                           GError       **error) G_GNUC_MALLOC;
+ThunarVfsJob *thunar_vfs_listdir          (ThunarVfsPath    *path,
+                                           GError          **error) G_GNUC_MALLOC;
+
+ThunarVfsJob *thunar_vfs_copy_file        (ThunarVfsPath    *source_path,
+                                           ThunarVfsPath    *target_path,
+                                           GError          **error) G_GNUC_MALLOC;
+ThunarVfsJob *thunar_vfs_copy_files       (GList            *source_path_list,
+                                           GList            *target_path_list,
+                                           GError          **error) G_GNUC_MALLOC;
+
+ThunarVfsJob *thunar_vfs_link_file        (ThunarVfsPath    *source_path,
+                                           ThunarVfsPath    *target_path,
+                                           GError          **error) G_GNUC_MALLOC;
+ThunarVfsJob *thunar_vfs_link_files       (GList            *source_path_list,
+                                           GList            *target_path_list,
+                                           GError          **error) G_GNUC_MALLOC;
+
+ThunarVfsJob *thunar_vfs_move_file        (ThunarVfsPath    *source_path,
+                                           ThunarVfsPath    *target_path,
+                                           GError          **error) G_GNUC_MALLOC;
+ThunarVfsJob *thunar_vfs_move_files       (GList            *source_path_list,
+                                           GList            *target_path_list,
+                                           GError          **error) G_GNUC_MALLOC;
+
+ThunarVfsJob *thunar_vfs_unlink_file      (ThunarVfsPath    *path,
+                                           GError          **error) G_GNUC_MALLOC;
+ThunarVfsJob *thunar_vfs_unlink_files     (GList            *path_list,
+                                           GError          **error) G_GNUC_MALLOC;
+
+ThunarVfsJob *thunar_vfs_make_directory   (ThunarVfsPath    *path,
+                                           GError          **error) G_GNUC_MALLOC;
+ThunarVfsJob *thunar_vfs_make_directories (GList            *path_list,
+                                           GError          **error) G_GNUC_MALLOC;
+
+ThunarVfsJob *thunar_vfs_change_mode      (ThunarVfsPath    *path,
+                                           ThunarVfsFileMode dir_mask,
+                                           ThunarVfsFileMode dir_mode,
+                                           ThunarVfsFileMode file_mask,
+                                           ThunarVfsFileMode file_mode,
+                                           gboolean          recursive,
+                                           GError          **error) G_GNUC_MALLOC;
+
+ThunarVfsJob *thunar_vfs_change_group     (ThunarVfsPath    *path,
+                                           ThunarVfsGroupId  gid,
+                                           gboolean          recursive,
+                                           GError          **error) G_GNUC_MALLOC;
+
+ThunarVfsJob *thunar_vfs_change_owner     (ThunarVfsPath    *path,
+                                           ThunarVfsUserId   uid,
+                                           gboolean          recursive,
+                                           GError          **error) G_GNUC_MALLOC;
 
 G_END_DECLS;
 
diff --git a/thunar-vfs/thunar-vfs.symbols b/thunar-vfs/thunar-vfs.symbols
index 9feea558e352d75b1cd39238dc3dc84567466ead..c59ed495f78dce5c7a23672fa125981a8bbb4b1d 100644
--- a/thunar-vfs/thunar-vfs.symbols
+++ b/thunar-vfs/thunar-vfs.symbols
@@ -50,6 +50,9 @@ thunar_vfs_unlink_file G_GNUC_MALLOC
 thunar_vfs_unlink_files G_GNUC_MALLOC
 thunar_vfs_make_directory G_GNUC_MALLOC
 thunar_vfs_make_directories G_GNUC_MALLOC
+thunar_vfs_change_mode G_GNUC_MALLOC
+thunar_vfs_change_group G_GNUC_MALLOC
+thunar_vfs_change_owner G_GNUC_MALLOC
 #endif
 #endif
 
@@ -76,8 +79,6 @@ thunar_vfs_info_copy
 #ifdef INCLUDE_INTERNAL_SYMBOLS
 thunar_vfs_info_get_custom_icon
 #endif
-thunar_vfs_info_chgrp
-thunar_vfs_info_chmod
 thunar_vfs_info_execute
 thunar_vfs_info_rename
 thunar_vfs_info_matches
diff --git a/thunar/Makefile.am b/thunar/Makefile.am
index 27d557a46a03a2dd812f99cc9b26e262653bad82..3824a74410ecab6b1a03f33170d708df021c7f3a 100644
--- a/thunar/Makefile.am
+++ b/thunar/Makefile.am
@@ -24,12 +24,8 @@ Thunar_SOURCES =							\
 	$(thunar_include_HEADERS)					\
 	$(thunar_built_sources)						\
 	main.c								\
-	thunar-advanced-permissions-dialog.c				\
-	thunar-advanced-permissions-dialog.h				\
 	thunar-application.c						\
 	thunar-application.h						\
-	thunar-change-group-dialog.c					\
-	thunar-change-group-dialog.h					\
 	thunar-chooser-dialog.c						\
 	thunar-chooser-dialog.h						\
 	thunar-chooser-model.c						\
@@ -46,6 +42,8 @@ Thunar_SOURCES =							\
 	thunar-dnd.h							\
 	thunar-emblem-chooser.c						\
 	thunar-emblem-chooser.h						\
+	thunar-enum-types.c						\
+	thunar-enum-types.h						\
 	thunar-shortcuts-model.c					\
 	thunar-shortcuts-model.h					\
 	thunar-shortcuts-pane.c						\
@@ -93,10 +91,8 @@ Thunar_SOURCES =							\
 	thunar-pango-extensions.h					\
 	thunar-path-entry.c						\
 	thunar-path-entry.h						\
-	thunar-permissions-model.c					\
-	thunar-permissions-model.h					\
-	thunar-permissions-view.c					\
-	thunar-permissions-view.h					\
+	thunar-permissions-chooser.c					\
+	thunar-permissions-chooser.h					\
 	thunar-preferences-dialog.c					\
 	thunar-preferences-dialog.h					\
 	thunar-preferences.c						\
diff --git a/thunar/thunar-advanced-permissions-dialog.c b/thunar/thunar-advanced-permissions-dialog.c
deleted file mode 100644
index 8be9c7e95e538f3365925a8578617aa30876e4c8..0000000000000000000000000000000000000000
--- a/thunar/thunar-advanced-permissions-dialog.c
+++ /dev/null
@@ -1,478 +0,0 @@
-/* $Id$ */
-/*-
- * Copyright (c) 2005-2006 Benedikt Meurer <benny@xfce.org>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <thunar/thunar-advanced-permissions-dialog.h>
-#include <thunar/thunar-dialogs.h>
-
-
-
-/* Property identifiers */
-enum
-{
-  PROP_0,
-  PROP_FILE,
-};
-
-
-
-static void thunar_advanced_permissions_dialog_class_init   (ThunarAdvancedPermissionsDialogClass *klass);
-static void thunar_advanced_permissions_dialog_init         (ThunarAdvancedPermissionsDialog      *advanced_permissions_dialog);
-static void thunar_advanced_permissions_dialog_finalize     (GObject                              *object);
-static void thunar_advanced_permissions_dialog_get_property (GObject                              *object,
-                                                             guint                                 prop_id,
-                                                             GValue                               *value,
-                                                             GParamSpec                           *pspec);
-static void thunar_advanced_permissions_dialog_set_property (GObject                              *object,
-                                                             guint                                 prop_id,
-                                                             const GValue                         *value,
-                                                             GParamSpec                           *pspec);
-static void thunar_advanced_permissions_dialog_response     (GtkDialog                            *dialog,
-                                                             gint                                  response);
-static void thunar_advanced_permissions_dialog_file_changed (ThunarAdvancedPermissionsDialog      *advanced_permissions_dialog,
-                                                             ThunarFile                           *file);
-
-
-
-struct _ThunarAdvancedPermissionsDialogClass
-{
-  GtkDialogClass __parent__;
-};
-
-struct _ThunarAdvancedPermissionsDialog
-{
-  GtkDialog __parent__;
-
-  ThunarFile *file;
-
-  GtkWidget  *suid_button;
-  GtkWidget  *sgid_button;
-  GtkWidget  *sticky_button;
-};
-
-
-
-static GObjectClass *thunar_advanced_permissions_dialog_parent_class;
-
-
-
-GType
-thunar_advanced_permissions_dialog_get_type (void)
-{
-  static GType type = G_TYPE_INVALID;
-
-  if (G_UNLIKELY (type == G_TYPE_INVALID))
-    {
-      static const GTypeInfo info =
-      {
-        sizeof (ThunarAdvancedPermissionsDialogClass),
-        NULL,
-        NULL,
-        (GClassInitFunc) thunar_advanced_permissions_dialog_class_init,
-        NULL,
-        NULL,
-        sizeof (ThunarAdvancedPermissionsDialog),
-        0,
-        (GInstanceInitFunc) thunar_advanced_permissions_dialog_init,
-        NULL,
-      };
-
-      type = g_type_register_static (GTK_TYPE_DIALOG, I_("ThunarAdvancedPermissionsDialog"), &info, 0);
-    }
-
-  return type;
-}
-
-
-
-static void
-thunar_advanced_permissions_dialog_class_init (ThunarAdvancedPermissionsDialogClass *klass)
-{
-  GtkDialogClass *gtkdialog_class;
-  GObjectClass   *gobject_class;
-
-  /* determine the parent type class */
-  thunar_advanced_permissions_dialog_parent_class = g_type_class_peek_parent (klass);
-
-  gobject_class = G_OBJECT_CLASS (klass);
-  gobject_class->finalize = thunar_advanced_permissions_dialog_finalize;
-  gobject_class->get_property = thunar_advanced_permissions_dialog_get_property;
-  gobject_class->set_property = thunar_advanced_permissions_dialog_set_property;
-
-  gtkdialog_class = GTK_DIALOG_CLASS (klass);
-  gtkdialog_class->response = thunar_advanced_permissions_dialog_response;
-
-  /**
-   * ThunarAdvancedPermissionsDialog:file:
-   *
-   * The #ThunarFile whose advanced permissions should be edited
-   * by this dialog.
-   **/
-  g_object_class_install_property (gobject_class,
-                                   PROP_FILE,
-                                   g_param_spec_object ("file", "file", "file",
-                                                        THUNAR_TYPE_FILE,
-                                                        EXO_PARAM_READWRITE));
-}
-
-
-
-static void
-thunar_advanced_permissions_dialog_init (ThunarAdvancedPermissionsDialog *advanced_permissions_dialog)
-{
-  AtkRelationSet *relations;
-  AtkRelation    *relation;
-  AtkObject      *object;
-  GtkWidget      *notebook;
-  GtkWidget      *image;
-  GtkWidget      *label;
-  GtkWidget      *table;
-  GtkWidget      *vbox;
-
-  gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (advanced_permissions_dialog)->vbox), 2);
-  gtk_dialog_add_button (GTK_DIALOG (advanced_permissions_dialog), GTK_STOCK_HELP, GTK_RESPONSE_HELP);
-  gtk_dialog_add_button (GTK_DIALOG (advanced_permissions_dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
-  gtk_dialog_add_button (GTK_DIALOG (advanced_permissions_dialog), GTK_STOCK_OK, GTK_RESPONSE_ACCEPT);
-  gtk_dialog_set_default_response (GTK_DIALOG (advanced_permissions_dialog), GTK_RESPONSE_ACCEPT);
-  gtk_dialog_set_has_separator (GTK_DIALOG (advanced_permissions_dialog), FALSE);
-  gtk_window_set_destroy_with_parent (GTK_WINDOW (advanced_permissions_dialog), TRUE);
-  gtk_window_set_modal (GTK_WINDOW (advanced_permissions_dialog), TRUE);
-  gtk_window_set_title (GTK_WINDOW (advanced_permissions_dialog), _("Advanced Permissions"));
-
-  notebook = gtk_notebook_new ();
-  gtk_container_set_border_width (GTK_CONTAINER (notebook), 5);
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (advanced_permissions_dialog)->vbox), notebook, TRUE, TRUE, 0);
-  gtk_widget_show (notebook);
-
-  vbox = gtk_vbox_new (FALSE, 32);
-  label = gtk_label_new (_("Special Bits"));
-  gtk_container_set_border_width (GTK_CONTAINER (vbox), 12);
-  gtk_notebook_append_page (GTK_NOTEBOOK (notebook), vbox, label);
-  gtk_widget_show (label);
-  gtk_widget_show (vbox);
-
-  table = gtk_table_new (2, 2, FALSE);
-  gtk_table_set_col_spacings (GTK_TABLE (table), 3);
-  gtk_table_set_row_spacings (GTK_TABLE (table), 6);
-  gtk_container_set_border_width (GTK_CONTAINER (table), 0);
-  gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0);
-  gtk_widget_show (table);
-
-  advanced_permissions_dialog->suid_button = gtk_check_button_new_with_mnemonic (_("Set _User ID (SUID)"));
-  gtk_table_attach (GTK_TABLE (table), advanced_permissions_dialog->suid_button, 0, 2, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
-  gtk_widget_show (advanced_permissions_dialog->suid_button);
-
-  image = gtk_image_new_from_stock (GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG);
-  gtk_misc_set_alignment (GTK_MISC (image), 0.5f, 0.0f);
-  gtk_misc_set_padding (GTK_MISC (image), 3, 3);
-  gtk_table_attach (GTK_TABLE (table), image, 0, 1, 1, 2, GTK_FILL, GTK_FILL, 0, 0);
-  gtk_widget_show (image);
-
-  label = gtk_label_new (_("An executable file whose Set User ID (SUID) bit is\n"
-                           "set will always be executed with the privileges of\n"
-                           "the owner of the executable."));
-  gtk_misc_set_alignment (GTK_MISC (label), 0.0f, 0.5f);
-  gtk_table_attach (GTK_TABLE (table), label, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
-  gtk_widget_show (label);
-
-  /* set Atk label relation */
-  object = gtk_widget_get_accessible (advanced_permissions_dialog->suid_button);
-  relations = atk_object_ref_relation_set (gtk_widget_get_accessible (label));
-  relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
-  atk_relation_set_add (relations, relation);
-  g_object_unref (G_OBJECT (relation));
-
-  table = gtk_table_new (2, 2, FALSE);
-  gtk_table_set_col_spacings (GTK_TABLE (table), 3);
-  gtk_table_set_row_spacings (GTK_TABLE (table), 6);
-  gtk_container_set_border_width (GTK_CONTAINER (table), 0);
-  gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0);
-  gtk_widget_show (table);
-
-  advanced_permissions_dialog->sgid_button = gtk_check_button_new_with_mnemonic (_("Set _Group ID (SGID)"));
-  gtk_table_attach (GTK_TABLE (table), advanced_permissions_dialog->sgid_button, 0, 2, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
-  gtk_widget_show (advanced_permissions_dialog->sgid_button);
-
-  image = gtk_image_new_from_stock (GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG);
-  gtk_misc_set_alignment (GTK_MISC (image), 0.5f, 0.0f);
-  gtk_misc_set_padding (GTK_MISC (image), 3, 3);
-  gtk_table_attach (GTK_TABLE (table), image, 0, 1, 1, 2, GTK_FILL, GTK_FILL, 0, 0);
-  gtk_widget_show (image);
-
-  label = gtk_label_new (_("An executable file whose Set Group ID (SGID) bit is\n"
-                           "set will always be executed with the privileges of the\n"
-                           "group of the executable."));
-  gtk_misc_set_alignment (GTK_MISC (label), 0.0f, 0.5f);
-  gtk_table_attach (GTK_TABLE (table), label, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
-  gtk_widget_show (label);
-
-  /* set Atk label relation */
-  object = gtk_widget_get_accessible (advanced_permissions_dialog->suid_button);
-  relations = atk_object_ref_relation_set (gtk_widget_get_accessible (label));
-  relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
-  atk_relation_set_add (relations, relation);
-  g_object_unref (G_OBJECT (relation));
-
-  table = gtk_table_new (2, 2, FALSE);
-  gtk_table_set_col_spacings (GTK_TABLE (table), 3);
-  gtk_table_set_row_spacings (GTK_TABLE (table), 6);
-  gtk_container_set_border_width (GTK_CONTAINER (table), 0);
-  gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0);
-  gtk_widget_show (table);
-
-  advanced_permissions_dialog->sticky_button = gtk_check_button_new_with_mnemonic (_("_Sticky"));
-  gtk_table_attach (GTK_TABLE (table), advanced_permissions_dialog->sticky_button, 0, 2, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
-  gtk_widget_show (advanced_permissions_dialog->sticky_button);
-
-  image = gtk_image_new_from_stock (GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG);
-  gtk_misc_set_alignment (GTK_MISC (image), 0.5f, 0.0f);
-  gtk_misc_set_padding (GTK_MISC (image), 3, 3);
-  gtk_table_attach (GTK_TABLE (table), image, 0, 1, 1, 2, GTK_FILL, GTK_FILL, 0, 0);
-  gtk_widget_show (image);
-
-  label = gtk_label_new (_("A file in a sticky directory may only be removed or\n"
-                           "renamed by a user if the user has write permission\n"
-                           "for the directory and the user is the owner of the\n"
-                           "file, the owner of the directory or the superuser."));
-  gtk_misc_set_alignment (GTK_MISC (label), 0.0f, 0.5f);
-  gtk_table_attach (GTK_TABLE (table), label, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
-  gtk_widget_show (label);
-
-  /* set Atk label relation */
-  object = gtk_widget_get_accessible (advanced_permissions_dialog->suid_button);
-  relations = atk_object_ref_relation_set (gtk_widget_get_accessible (label));
-  relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
-  atk_relation_set_add (relations, relation);
-  g_object_unref (G_OBJECT (relation));
-}
-
-
-
-static void
-thunar_advanced_permissions_dialog_finalize (GObject *object)
-{
-  ThunarAdvancedPermissionsDialog *advanced_permissions_dialog = THUNAR_ADVANCED_PERMISSIONS_DIALOG (object);
-
-  /* reset the file property */
-  thunar_advanced_permissions_dialog_set_file (advanced_permissions_dialog, NULL);
-
-  (*G_OBJECT_CLASS (thunar_advanced_permissions_dialog_parent_class)->finalize) (object);
-}
-
-
-
-static void
-thunar_advanced_permissions_dialog_get_property (GObject    *object,
-                                                 guint       prop_id,
-                                                 GValue     *value,
-                                                 GParamSpec *pspec)
-{
-  ThunarAdvancedPermissionsDialog *advanced_permissions_dialog = THUNAR_ADVANCED_PERMISSIONS_DIALOG (object);
-
-  switch (prop_id)
-    {
-    case PROP_FILE:
-      g_value_set_object (value, thunar_advanced_permissions_dialog_get_file (advanced_permissions_dialog));
-      break;
-
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
-}
-
-
-
-static void
-thunar_advanced_permissions_dialog_set_property (GObject      *object,
-                                                 guint         prop_id,
-                                                 const GValue *value,
-                                                 GParamSpec   *pspec)
-{
-  ThunarAdvancedPermissionsDialog *advanced_permissions_dialog = THUNAR_ADVANCED_PERMISSIONS_DIALOG (object);
-
-  switch (prop_id)
-    {
-    case PROP_FILE:
-      thunar_advanced_permissions_dialog_set_file (advanced_permissions_dialog, g_value_get_object (value));
-      break;
-
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
-}
-
-
-
-static void
-thunar_advanced_permissions_dialog_response (GtkDialog *dialog,
-                                             gint       response)
-{
-  ThunarAdvancedPermissionsDialog *advanced_permissions_dialog = THUNAR_ADVANCED_PERMISSIONS_DIALOG (dialog);
-  ThunarVfsFileMode                mode;
-  GError                          *error = NULL;
-
-  /* check if the user pressed "Ok" */
-  if (response == GTK_RESPONSE_ACCEPT)
-    {
-      /* determine the previous file mode */
-      mode = thunar_file_get_mode (advanced_permissions_dialog->file);
-
-      /* drop the previous suid/sgid/sticky bits */
-      mode &= ~(THUNAR_VFS_FILE_MODE_SUID | THUNAR_VFS_FILE_MODE_SGID | THUNAR_VFS_FILE_MODE_STICKY);
-
-      /* apply the new bits */
-      if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (advanced_permissions_dialog->suid_button)))
-        mode |= THUNAR_VFS_FILE_MODE_SUID;
-      if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (advanced_permissions_dialog->sgid_button)))
-        mode |= THUNAR_VFS_FILE_MODE_SGID;
-      if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (advanced_permissions_dialog->sticky_button)))
-        mode |= THUNAR_VFS_FILE_MODE_STICKY;
-
-      /* try to apply the new mode to the file */
-      if (!thunar_file_chmod (advanced_permissions_dialog->file, mode, &error))
-        {
-          /* display an error message to the user */
-          thunar_dialogs_show_error (GTK_WIDGET (dialog), error, _("Failed to change permissions of `%s'"),
-                                     thunar_file_get_display_name (advanced_permissions_dialog->file));
-          g_error_free (error);
-        }
-    }
-
-  /* close the dialog window */
-  gtk_widget_destroy (GTK_WIDGET (dialog));
-}
-
-
-
-static void
-thunar_advanced_permissions_dialog_file_changed (ThunarAdvancedPermissionsDialog *advanced_permissions_dialog,
-                                                 ThunarFile                      *file)
-{
-  ThunarVfsFileMode mode;
-
-  g_return_if_fail (THUNAR_IS_ADVANCED_PERMISSIONS_DIALOG (advanced_permissions_dialog));
-  g_return_if_fail (advanced_permissions_dialog->file == file);
-  g_return_if_fail (THUNAR_IS_FILE (file));
-
-  /* determine the file's mode */
-  mode = thunar_file_get_mode (file);
-
-  /* update the "SUID" check button */
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (advanced_permissions_dialog->suid_button), (mode & THUNAR_VFS_FILE_MODE_SUID));
-  gtk_widget_set_sensitive (advanced_permissions_dialog->suid_button, thunar_file_is_chmodable (file));
-
-  /* update the "SGID" check button */
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (advanced_permissions_dialog->sgid_button), (mode & THUNAR_VFS_FILE_MODE_SGID));
-  gtk_widget_set_sensitive (advanced_permissions_dialog->sgid_button, thunar_file_is_chmodable (file));
-
-  /* update the "Sticky" check button */
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (advanced_permissions_dialog->sticky_button), (mode & THUNAR_VFS_FILE_MODE_STICKY));
-  gtk_widget_set_sensitive (advanced_permissions_dialog->sticky_button, thunar_file_is_chmodable (file));
-
-  /* update the sensitivity of the "Ok" button */
-  gtk_dialog_set_response_sensitive (GTK_DIALOG (advanced_permissions_dialog), GTK_RESPONSE_ACCEPT, thunar_file_is_chmodable (file));
-}
-
-
-
-/**
- * thunar_advanced_permissions_dialog_new:
- *
- * Allocates a new #ThunarAdvancedPermissionsDialog instance.
- *
- * Return value: the newly allocated #ThunarAdvancedPermissionsDialog.
- **/
-GtkWidget*
-thunar_advanced_permissions_dialog_new (void)
-{
-  return g_object_new (THUNAR_TYPE_ADVANCED_PERMISSIONS_DIALOG, NULL);
-}
-
-
-
-/**
- * thunar_advanced_permissions_dialog_get_file:
- * @advanced_permissions_dialog : a #ThunarAdvancedPermissionsDialog instance.
- *
- * Returns the #ThunarFile currently associated with the @advanced_permissions_dialog.
- *
- * Return value: the file associated with @advanced_permissions_dialog.
- **/
-ThunarFile*
-thunar_advanced_permissions_dialog_get_file (ThunarAdvancedPermissionsDialog *advanced_permissions_dialog)
-{
-  g_return_val_if_fail (THUNAR_IS_ADVANCED_PERMISSIONS_DIALOG (advanced_permissions_dialog), NULL);
-  return advanced_permissions_dialog->file;
-}
-
-
-
-/**
- * thunar_advanced_permissions_dialog_set_file:
- * @advanced_permissions_dialog : a #ThunarAdvancedPermissionsDialog instance.
- * @file                        : a #ThunarFile or %NULL.
- *
- * Associates the @advanced_permissions_dialog with the specified @file.
- **/
-void
-thunar_advanced_permissions_dialog_set_file (ThunarAdvancedPermissionsDialog *advanced_permissions_dialog,
-                                             ThunarFile                      *file)
-{
-  g_return_if_fail (THUNAR_IS_ADVANCED_PERMISSIONS_DIALOG (advanced_permissions_dialog));
-  g_return_if_fail (file == NULL || THUNAR_IS_FILE (file));
-
-  /* check if we already use that file */
-  if (G_UNLIKELY (advanced_permissions_dialog->file == file))
-    return;
-
-  /* disconnect from the previous file */
-  if (G_LIKELY (advanced_permissions_dialog->file != NULL))
-    {
-      /* disconnect the changed signal handler */
-      g_signal_handlers_disconnect_by_func (G_OBJECT (advanced_permissions_dialog->file), thunar_advanced_permissions_dialog_file_changed, advanced_permissions_dialog);
-
-      /* release our reference */
-      g_object_unref (G_OBJECT (advanced_permissions_dialog->file));
-    }
-
-  /* activate the new file */
-  advanced_permissions_dialog->file = file;
-
-  /* connect to the new file */
-  if (G_LIKELY (file != NULL))
-    {
-      /* take a reference on the file */
-      g_object_ref (G_OBJECT (file));
-
-      /* stay informed about changes */
-      g_signal_connect_swapped (G_OBJECT (file), "changed", G_CALLBACK (thunar_advanced_permissions_dialog_file_changed), advanced_permissions_dialog);
-
-      /* update the GUI */
-      thunar_advanced_permissions_dialog_file_changed (advanced_permissions_dialog, file);
-    }
-
-  /* notify listeners */
-  g_object_notify (G_OBJECT (advanced_permissions_dialog), "file");
-}
- 
diff --git a/thunar/thunar-advanced-permissions-dialog.h b/thunar/thunar-advanced-permissions-dialog.h
deleted file mode 100644
index 8372e103057fbdafe39259ea3295cd4e7f133e29..0000000000000000000000000000000000000000
--- a/thunar/thunar-advanced-permissions-dialog.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* $Id$ */
-/*-
- * Copyright (c) 2005-2006 Benedikt Meurer <benny@xfce.org>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef __THUNAR_ADVANCED_PERMISSIONS_DIALOG_H__
-#define __THUNAR_ADVANCED_PERMISSIONS_DIALOG_H__
-
-#include <thunar/thunar-file.h>
-
-G_BEGIN_DECLS;
-
-typedef struct _ThunarAdvancedPermissionsDialogClass ThunarAdvancedPermissionsDialogClass;
-typedef struct _ThunarAdvancedPermissionsDialog      ThunarAdvancedPermissionsDialog;
-
-#define THUNAR_TYPE_ADVANCED_PERMISSIONS_DIALOG             (thunar_advanced_permissions_dialog_get_type ())
-#define THUNAR_ADVANCED_PERMISSIONS_DIALOG(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_ADVANCED_PERMISSIONS_DIALOG, ThunarAdvancedPermissionsDialog))
-#define THUNAR_ADVANCED_PERMISSIONS_DIALOG_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_ADVANCED_PERMISSIONS_DIALOG, ThunarAdvancedPermissionsDialogClass))
-#define THUNAR_IS_ADVANCED_PERMISSIONS_DIALOG(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_ADVANCED_PERMISSIONS_DIALOG))
-#define THUNAR_IS_ADVANCED_PERMISSIONS_DIALOG_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_ADVANCED_PERMISSIONS_DIALOG))
-#define THUNAR_ADVANCED_PERMISSIONS_DIALOG_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_ADVANCED_PERMISSIONS_DIALOG, ThunarAdvancedPermissionsDialogClass))
-
-GType       thunar_advanced_permissions_dialog_get_type (void) G_GNUC_CONST;
-
-GtkWidget  *thunar_advanced_permissions_dialog_new      (void) G_GNUC_MALLOC;
-
-ThunarFile *thunar_advanced_permissions_dialog_get_file (ThunarAdvancedPermissionsDialog *advanced_permissions_dialog);
-void        thunar_advanced_permissions_dialog_set_file (ThunarAdvancedPermissionsDialog *advanced_permissions_dialog,
-                                                         ThunarFile                      *file);
-
-G_END_DECLS;
-
-#endif /* !__THUNAR_ADVANCED_PERMISSIONS_DIALOG_H__ */
diff --git a/thunar/thunar-change-group-dialog.c b/thunar/thunar-change-group-dialog.c
deleted file mode 100644
index a0c52c8efcced21e6c9574b718ac73baeb2ba07a..0000000000000000000000000000000000000000
--- a/thunar/thunar-change-group-dialog.c
+++ /dev/null
@@ -1,531 +0,0 @@
-/* $Id$ */
-/*-
- * Copyright (c) 2005-2006 Benedikt Meurer <benny@xfce.org>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#include <thunar/thunar-change-group-dialog.h>
-#include <thunar/thunar-dialogs.h>
-#include <thunar/thunar-stock.h>
-
-
-
-/* Property identifiers */
-enum
-{
-  PROP_0,
-  PROP_FILE,
-};
-
-/* Column identifiers for the combo box */
-typedef enum
-{
-  THUNAR_CHANGE_GROUP_STORE_COLUMN_STOCK_ID,
-  THUNAR_CHANGE_GROUP_STORE_COLUMN_NAME,
-  THUNAR_CHANGE_GROUP_STORE_COLUMN_GROUP,
-  THUNAR_CHANGE_GROUP_STORE_N_COLUMNS,
-} ThunarChangeGroupStoreColumn;
-
-
-
-static void thunar_change_group_dialog_class_init   (ThunarChangeGroupDialogClass *klass);
-static void thunar_change_group_dialog_init         (ThunarChangeGroupDialog      *change_group_dialog);
-static void thunar_change_group_dialog_finalize     (GObject                      *object);
-static void thunar_change_group_dialog_get_property (GObject                      *object,
-                                                     guint                         prop_id,
-                                                     GValue                       *value,
-                                                     GParamSpec                   *pspec);
-static void thunar_change_group_dialog_set_property (GObject                      *object,
-                                                     guint                         prop_id,
-                                                     const GValue                 *value,
-                                                     GParamSpec                   *pspec);
-static void thunar_change_group_dialog_response     (GtkDialog                    *dialog,
-                                                     gint                          response);
-static void thunar_change_group_dialog_file_changed (ThunarChangeGroupDialog      *change_group_dialog,
-                                                     ThunarFile                   *file);
-
-
-
-struct _ThunarChangeGroupDialogClass
-{
-  GtkDialogClass __parent__;
-};
-
-struct _ThunarChangeGroupDialog
-{
-  GtkDialog __parent__;
-
-  ThunarFile *file;
-
-  GtkWidget  *combo;
-};
-
-
-
-static GObjectClass *thunar_change_group_dialog_parent_class;
-
-
-
-GType
-thunar_change_group_dialog_get_type (void)
-{
-  static GType type = G_TYPE_INVALID;
-
-  if (G_UNLIKELY (type == G_TYPE_INVALID))
-    {
-      static const GTypeInfo info =
-      {
-        sizeof (ThunarChangeGroupDialogClass),
-        NULL,
-        NULL,
-        (GClassInitFunc) thunar_change_group_dialog_class_init,
-        NULL,
-        NULL,
-        sizeof (ThunarChangeGroupDialog),
-        0,
-        (GInstanceInitFunc) thunar_change_group_dialog_init,
-        NULL,
-      };
-
-      type = g_type_register_static (GTK_TYPE_DIALOG, I_("ThunarChangeGroupDialogClass"), &info, 0);
-    }
-
-  return type;
-}
-
-
-
-static void
-thunar_change_group_dialog_class_init (ThunarChangeGroupDialogClass *klass)
-{
-  GtkDialogClass *gtkdialog_class;
-  GObjectClass   *gobject_class;
-
-  /* determine the parent type class */
-  thunar_change_group_dialog_parent_class = g_type_class_peek_parent (klass);
-
-  gobject_class = G_OBJECT_CLASS (klass);
-  gobject_class->finalize = thunar_change_group_dialog_finalize;
-  gobject_class->get_property = thunar_change_group_dialog_get_property;
-  gobject_class->set_property = thunar_change_group_dialog_set_property;
-
-  gtkdialog_class = GTK_DIALOG_CLASS (klass);
-  gtkdialog_class->response = thunar_change_group_dialog_response;
-
-  /**
-   * ThunarChangeGroupDialog:file:
-   *
-   * The #ThunarFile whose group should be edited.
-   **/
-  g_object_class_install_property (gobject_class,
-                                   PROP_FILE,
-                                   g_param_spec_object ("file", "file", "file",
-                                                        THUNAR_TYPE_FILE,
-                                                        EXO_PARAM_READWRITE));
-}
-
-
-
-static gboolean
-row_separator_func (GtkTreeModel *model,
-                    GtkTreeIter  *iter,
-                    gpointer      data)
-{
-  GObject *object;
-
-  /* determine the value of the "group" column */
-  gtk_tree_model_get (model, iter, THUNAR_CHANGE_GROUP_STORE_COLUMN_GROUP, &object, -1);
-  if (G_LIKELY (object != NULL))
-    {
-      g_object_unref (object);
-      return FALSE;
-    }
-
-  return TRUE;
-}
-
-
-
-static void
-thunar_change_group_dialog_init (ThunarChangeGroupDialog *change_group_dialog)
-{
-  GtkCellRenderer *renderer;
-  AtkRelationSet  *relations;
-  AtkRelation     *relation;
-  AtkObject       *object;
-  GtkWidget       *label;
-  GtkWidget       *hbox;
-
-  gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (change_group_dialog)->vbox), 2);
-  gtk_container_set_border_width (GTK_CONTAINER (change_group_dialog), 5);
-  gtk_dialog_add_button (GTK_DIALOG (change_group_dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
-  gtk_dialog_add_button (GTK_DIALOG (change_group_dialog), GTK_STOCK_OK, GTK_RESPONSE_ACCEPT);
-  gtk_dialog_set_default_response (GTK_DIALOG (change_group_dialog), GTK_RESPONSE_ACCEPT);
-  gtk_dialog_set_has_separator (GTK_DIALOG (change_group_dialog), FALSE);
-  gtk_window_set_default_size (GTK_WINDOW (change_group_dialog), 300, -1);
-  gtk_window_set_destroy_with_parent (GTK_WINDOW (change_group_dialog), TRUE);
-  gtk_window_set_modal (GTK_WINDOW (change_group_dialog), TRUE);
-  gtk_window_set_title (GTK_WINDOW (change_group_dialog), _("Change Group"));
-
-  hbox = gtk_hbox_new (FALSE, 12);
-  gtk_container_set_border_width (GTK_CONTAINER (hbox), 5);
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (change_group_dialog)->vbox), hbox, FALSE, FALSE, 0);
-  gtk_widget_show (hbox);
-
-  label = gtk_label_new_with_mnemonic (_("_Group:"));
-  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
-  gtk_widget_show (label);
-
-  change_group_dialog->combo = gtk_combo_box_new ();
-  gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (change_group_dialog->combo), row_separator_func, NULL, NULL);
-  gtk_label_set_mnemonic_widget (GTK_LABEL (label), change_group_dialog->combo);
-  gtk_box_pack_start (GTK_BOX (hbox), change_group_dialog->combo, TRUE, TRUE, 0);
-  gtk_widget_show (change_group_dialog->combo);
-
-  /* set Atk label relation for the entry */
-  object = gtk_widget_get_accessible (change_group_dialog->combo);
-  relations = atk_object_ref_relation_set (gtk_widget_get_accessible (label));
-  relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
-  atk_relation_set_add (relations, relation);
-  g_object_unref (G_OBJECT (relation));
-
-  /* append the icon renderer */
-  renderer = gtk_cell_renderer_pixbuf_new ();
-  gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (change_group_dialog->combo), renderer, FALSE);
-  gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (change_group_dialog->combo), renderer, "stock-id", THUNAR_CHANGE_GROUP_STORE_COLUMN_STOCK_ID);
-
-  /* append the text renderer */
-  renderer = gtk_cell_renderer_text_new ();
-  gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (change_group_dialog->combo), renderer, TRUE);
-  gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (change_group_dialog->combo), renderer, "text", THUNAR_CHANGE_GROUP_STORE_COLUMN_NAME);
-}
-
-
-
-static void
-thunar_change_group_dialog_finalize (GObject *object)
-{
-  ThunarChangeGroupDialog *change_group_dialog = THUNAR_CHANGE_GROUP_DIALOG (object);
-
-  /* reset the file */
-  thunar_change_group_dialog_set_file (change_group_dialog, NULL);
-
-  (*G_OBJECT_CLASS (thunar_change_group_dialog_parent_class)->finalize) (object);
-}
-
-
-
-static void
-thunar_change_group_dialog_get_property (GObject    *object,
-                                         guint       prop_id,
-                                         GValue     *value,
-                                         GParamSpec *pspec)
-{
-  ThunarChangeGroupDialog *change_group_dialog = THUNAR_CHANGE_GROUP_DIALOG (object);
-
-  switch (prop_id)
-    {
-    case PROP_FILE:
-      g_value_set_object (value, thunar_change_group_dialog_get_file (change_group_dialog));
-      break;
-
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
-}
-
-
-
-static void
-thunar_change_group_dialog_set_property (GObject      *object,
-                                         guint         prop_id,
-                                         const GValue *value,
-                                         GParamSpec   *pspec)
-{
-  ThunarChangeGroupDialog *change_group_dialog = THUNAR_CHANGE_GROUP_DIALOG (object);
-
-  switch (prop_id)
-    {
-    case PROP_FILE:
-      thunar_change_group_dialog_set_file (change_group_dialog, g_value_get_object (value));
-      break;
-
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
-}
-
-
-
-static void
-thunar_change_group_dialog_response (GtkDialog *dialog,
-                                     gint       response)
-{
-  ThunarChangeGroupDialog *change_group_dialog = THUNAR_CHANGE_GROUP_DIALOG (dialog);
-  ThunarVfsGroup          *group;
-  GtkTreeModel            *model;
-  GtkTreeIter              iter;
-  GError                  *error = NULL;
-
-  /* check if the user pressed "Ok" and determine the selected iterator */
-  if (response == GTK_RESPONSE_ACCEPT && gtk_combo_box_get_active_iter (GTK_COMBO_BOX (change_group_dialog->combo), &iter))
-    {
-      /* determine the selected group */
-      model = gtk_combo_box_get_model (GTK_COMBO_BOX (change_group_dialog->combo));
-      gtk_tree_model_get (model, &iter, THUNAR_CHANGE_GROUP_STORE_COLUMN_GROUP, &group, -1);
-      if (G_LIKELY (group != NULL))
-        {
-          /* try to change the group of the file */
-          if (!thunar_file_chgrp (change_group_dialog->file, group, &error))
-            {
-              /* display an error message */
-              thunar_dialogs_show_error (GTK_WIDGET (change_group_dialog), error, _("Failed to change the group to which `%s' belongs"),
-                                         thunar_file_get_display_name (change_group_dialog->file));
-              g_error_free (error);
-            }
-
-          /* cleanup */
-          g_object_unref (G_OBJECT (group));
-        }
-    }
-
-  /* close the dialog */
-  gtk_widget_destroy (GTK_WIDGET (dialog));
-}
-
-
-
-static gint
-group_compare (gconstpointer group_a,
-               gconstpointer group_b,
-               gpointer      group_primary)
-{
-  ThunarVfsGroupId group_primary_id = thunar_vfs_group_get_id (THUNAR_VFS_GROUP (group_primary));
-  ThunarVfsGroupId group_a_id = thunar_vfs_group_get_id (THUNAR_VFS_GROUP (group_a));
-  ThunarVfsGroupId group_b_id = thunar_vfs_group_get_id (THUNAR_VFS_GROUP (group_b));
-
-  /* check if the groups are equal */
-  if (group_a_id == group_b_id)
-    return 0;
-
-  /* the primary group is always sorted first */
-  if (group_a_id == group_primary_id)
-    return -1;
-  else if (group_b_id == group_primary_id)
-    return 1;
-
-  /* system groups (< 100) are always sorted last */
-  if (group_a_id < 100 && group_b_id >= 100)
-    return 1;
-  else if (group_b_id < 100 && group_a_id >= 100)
-    return -1;
-
-  /* otherwise just sort by name */
-  return g_ascii_strcasecmp (thunar_vfs_group_get_name (THUNAR_VFS_GROUP (group_a)), thunar_vfs_group_get_name (THUNAR_VFS_GROUP (group_b)));
-}
-
-
-
-static void
-thunar_change_group_dialog_file_changed (ThunarChangeGroupDialog *change_group_dialog,
-                                         ThunarFile              *file)
-{
-  ThunarVfsUserManager *user_manager;
-  ThunarVfsGroup       *group;
-  ThunarVfsUser        *user;
-  GtkListStore         *store;
-  GtkTreeIter           iter;
-  GList                *groups;
-  GList                *lp;
-  gint                  state = 0;
-
-  g_return_if_fail (THUNAR_IS_CHANGE_GROUP_DIALOG (change_group_dialog));
-  g_return_if_fail (change_group_dialog->file == file);
-  g_return_if_fail (THUNAR_IS_FILE (file));
-
-  /* check if we are allowed to change the group */
-  gtk_dialog_set_response_sensitive (GTK_DIALOG (change_group_dialog), GTK_RESPONSE_ACCEPT, thunar_file_is_chgrpable (file));
-  gtk_widget_set_sensitive (change_group_dialog->combo, thunar_file_is_chgrpable (file));
-
-  /* allocate a new store for the combo box */
-  store = gtk_list_store_new (THUNAR_CHANGE_GROUP_STORE_N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_OBJECT);
-
-  /* setup the new store for the combo box */
-  gtk_combo_box_set_model (GTK_COMBO_BOX (change_group_dialog->combo), GTK_TREE_MODEL (store));
-
-  /* determine the user for the the new file */
-  user = thunar_file_get_user (file);
-  if (G_LIKELY (user != NULL))
-    {
-      /* determine the group of the new file */
-      group = thunar_file_get_group (file);
-      if (G_LIKELY (group != NULL))
-        {
-          /* check if we have superuser privilieges */
-          if (G_UNLIKELY (geteuid () == 0))
-            {
-              /* determine all groups in the system */
-              user_manager = thunar_vfs_user_manager_get_default ();
-              groups = thunar_vfs_user_manager_get_all_groups (user_manager);
-              g_object_unref (G_OBJECT (user_manager));
-            }
-          else
-            {
-              /* determine the groups for the user and take a copy */
-              groups = g_list_copy (thunar_vfs_user_get_groups (user));
-              g_list_foreach (groups, (GFunc) g_object_ref, NULL);
-            }
-
-          /* sort the groups according to group_compare() */
-          groups = g_list_sort_with_data (groups, group_compare, group);
-
-          /* add the groups to the store */
-          for (lp = groups; lp != NULL; lp = lp->next)
-            {
-              /* append a separator after the primary group and after the user-groups (not system groups) */
-              if (thunar_vfs_group_get_id (groups->data) == thunar_vfs_group_get_id (group) && lp != groups && state == 0)
-                {
-                  gtk_list_store_append (store, &iter);
-                  ++state;
-                }
-              else if (lp != groups && thunar_vfs_group_get_id (lp->data) < 100 && state == 1)
-                {
-                  gtk_list_store_append (store, &iter);
-                  ++state;
-                }
-
-              /* append a new item for the group */
-              gtk_list_store_append (store, &iter);
-              gtk_list_store_set (store, &iter,
-                                  THUNAR_CHANGE_GROUP_STORE_COLUMN_STOCK_ID, THUNAR_STOCK_PERMISSIONS_GROUP,
-                                  THUNAR_CHANGE_GROUP_STORE_COLUMN_NAME, thunar_vfs_group_get_name (lp->data),
-                                  THUNAR_CHANGE_GROUP_STORE_COLUMN_GROUP, lp->data,
-                                  -1);
-
-              /* set the active iter for the combo box if this group is the primary group */
-              if (G_UNLIKELY (lp->data == group))
-                gtk_combo_box_set_active_iter (GTK_COMBO_BOX (change_group_dialog->combo), &iter);
-            }
-
-          /* cleanup */
-          g_list_foreach (groups, (GFunc) g_object_unref, NULL);
-          g_object_unref (G_OBJECT (group));
-          g_list_free (groups);
-        }
-
-      /* cleanup */
-      g_object_unref (G_OBJECT (user));
-    }
-
-  /* cleanup */
-  g_object_unref (G_OBJECT (store));
-}
-
-
-
-/**
- * thunar_change_group_dialog_new:
- *
- * Allocates a new #ThunarChangeGroupDialog instance.
- *
- * Return value: the newly allocated #ThunarChangeGroupDialog.
- **/
-GtkWidget*
-thunar_change_group_dialog_new (void)
-{
-  return g_object_new (THUNAR_TYPE_CHANGE_GROUP_DIALOG, NULL);
-}
-
-
-
-/**
- * thunar_change_group_dialog_get_file:
- * @change_group_dialog : a #ThunarChangeGroupDialog instance.
- *
- * Returns the #ThunarFile associated with the specified @change_group_dialog.
- *
- * Return value: the #ThunarFile associated with @change_group_dialog.
- **/
-ThunarFile*
-thunar_change_group_dialog_get_file (ThunarChangeGroupDialog *change_group_dialog)
-{
-  g_return_val_if_fail (THUNAR_IS_CHANGE_GROUP_DIALOG (change_group_dialog), NULL);
-  return change_group_dialog->file;
-}
-
-
-
-/**
- * thunar_change_group_dialog_set_file:
- * @change_group_dialog : a #ThunarChangeGroupDialog instance.
- * @file                : a #ThunarFile instance or %NULL.
- *
- * Associates @change_group_dialog with the specified @file, and thereby
- * lets @change_group_dialog edit the group of the new @file.
- **/
-void
-thunar_change_group_dialog_set_file (ThunarChangeGroupDialog *change_group_dialog,
-                                     ThunarFile              *file)
-{
-  g_return_if_fail (THUNAR_IS_CHANGE_GROUP_DIALOG (change_group_dialog));
-  g_return_if_fail (file == NULL || THUNAR_IS_FILE (file));
-
-  /* check if we already use that file */
-  if (G_UNLIKELY (change_group_dialog->file == file))
-    return;
-
-  /* disconnect from the previously set file */
-  if (G_LIKELY (change_group_dialog->file != NULL))
-    {
-      g_signal_handlers_disconnect_by_func (G_OBJECT (change_group_dialog->file), thunar_change_group_dialog_file_changed, change_group_dialog);
-      g_object_unref (G_OBJECT (change_group_dialog->file));
-    }
-
-  /* activate the new file */
-  change_group_dialog->file = file;
-
-  /* connect to the new file */
-  if (G_LIKELY (file != NULL))
-    {
-      /* take a reference on the file */
-      g_object_ref (G_OBJECT (file));
-
-      /* stay informed of changes to the file */
-      g_signal_connect_swapped (G_OBJECT (file), "changed", G_CALLBACK (thunar_change_group_dialog_file_changed), change_group_dialog);
-
-      /* setup the GUI for the new file */
-      thunar_change_group_dialog_file_changed (change_group_dialog, file);
-    }
-
-  /* notify listeners */
-  g_object_notify (G_OBJECT (change_group_dialog), "file");
-}
-
-
diff --git a/thunar/thunar-change-group-dialog.h b/thunar/thunar-change-group-dialog.h
deleted file mode 100644
index ec6fb8091c7c489612d45af89defd800c443b626..0000000000000000000000000000000000000000
--- a/thunar/thunar-change-group-dialog.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* $Id$ */
-/*-
- * Copyright (c) 2005-2006 Benedikt Meurer <benny@xfce.org>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef __THUNAR_CHANGE_GROUP_DIALOG_H__
-#define __THUNAR_CHANGE_GROUP_DIALOG_H__
-
-#include <thunar/thunar-file.h>
-
-G_BEGIN_DECLS;
-
-typedef struct _ThunarChangeGroupDialogClass ThunarChangeGroupDialogClass;
-typedef struct _ThunarChangeGroupDialog      ThunarChangeGroupDialog;
-
-#define THUNAR_TYPE_CHANGE_GROUP_DIALOG             (thunar_change_group_dialog_get_type ())
-#define THUNAR_CHANGE_GROUP_DIALOG(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_CHANGE_GROUP_DIALOG, ThunarChangeGroupDialog))
-#define THUNAR_CHANGE_GROUP_DIALOG_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_CHANGE_GROUP_DIALOG, ThunarChangeGroupDialogClass))
-#define THUNAR_IS_CHANGE_GROUP_DIALOG(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_CHANGE_GROUP_DIALOG))
-#define THUNAR_IS_CHANGE_GROUP_DIALOG_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_CHANGE_GROUP_DIALOG))
-#define THUNAR_CHANGE_GROUP_DIALOG_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_CHANGE_GROUP_DIALOG, ThunarChangeGroupdDialogClass))
-
-GType       thunar_change_group_dialog_get_type (void) G_GNUC_CONST;
-
-GtkWidget  *thunar_change_group_dialog_new      (void) G_GNUC_MALLOC;
-
-ThunarFile *thunar_change_group_dialog_get_file (ThunarChangeGroupDialog *change_group_dialog);
-void        thunar_change_group_dialog_set_file (ThunarChangeGroupDialog *change_group_dialog,
-                                                 ThunarFile              *file);
-
-G_END_DECLS;
-
-#endif /* !__THUNAR_CHANGE_GROUP_DIALOG_H__ */
diff --git a/thunar/thunar-enum-types.c b/thunar/thunar-enum-types.c
new file mode 100644
index 0000000000000000000000000000000000000000..0ab419e0f2abe708fb1b3c0389496dcb77cb04aa
--- /dev/null
+++ b/thunar/thunar-enum-types.c
@@ -0,0 +1,84 @@
+/* $Id$ */
+/*-
+ * Copyright (c) 2006 Benedikt Meurer <benny@xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <exo/exo.h>
+
+#include <thunar/thunar-enum-types.h>
+
+
+
+static void thunar_enum_from_string (const GValue *src_value,
+                                     GValue       *dst_value);
+
+
+
+GType
+thunar_recursive_permissions_get_type (void)
+{
+  static GType type = G_TYPE_INVALID;
+
+  if (G_UNLIKELY (type == G_TYPE_INVALID))
+    {
+      static const GEnumValue values[] =
+      {
+        { THUNAR_RECURSIVE_PERMISSIONS_ASK,    "THUNAR_RECURSIVE_PERMISSIONS_ASK",    "ask",    },
+        { THUNAR_RECURSIVE_PERMISSIONS_ALWAYS, "THUNAR_RECURSIVE_PERMISSIONS_ALWAYS", "always", },
+        { THUNAR_RECURSIVE_PERMISSIONS_NEVER,  "THUNAR_RECURSIVE_PERMISSIONS_NEVER",  "never",  },
+        { 0,                                   NULL,                                  NULL,     },
+      };
+
+      type = g_enum_register_static (I_("ThunarRecursivePermissions"), values);
+
+      /* register transformation function for string->ThunarRecursivePermissions */
+      g_value_register_transform_func (G_TYPE_STRING, type, thunar_enum_from_string);
+    }
+
+  return type;
+}
+
+
+
+static void
+thunar_enum_from_string (const GValue *src_value,
+                         GValue       *dst_value)
+{
+  GEnumClass *klass;
+  gint        value = 0;
+  gint        n;
+
+  /* determine the enum value matching the src_value... */
+  klass = g_type_class_ref (G_VALUE_TYPE (dst_value));
+  for (n = 0; n < klass->n_values; ++n)
+    {
+      value = klass->values[n].value;
+      if (exo_str_is_equal (klass->values[n].value_name, g_value_get_string (src_value)))
+        break;
+    }
+  g_type_class_unref (klass);
+
+  /* ...and return that value */
+  g_value_set_enum (dst_value, value);
+}
+
+
+
diff --git a/thunar/thunar-enum-types.h b/thunar/thunar-enum-types.h
new file mode 100644
index 0000000000000000000000000000000000000000..2e94991f8a6be97c18a0557335535eb81321cb09
--- /dev/null
+++ b/thunar/thunar-enum-types.h
@@ -0,0 +1,48 @@
+/* $Id$ */
+/*-
+ * Copyright (c) 2006 Benedikt Meurer <benny@xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef __THUNAR_ENUM_TYPES_H__
+#define __THUNAR_ENUM_TYPES_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS;
+
+#define THUNAR_TYPE_RECURSIVE_PERMISSIONS (thunar_recursive_permissions_get_type ())
+
+/**
+ * ThunarRecursivePermissionsMode:
+ * @THUNAR_RECURSIVE_PERMISSIONS_ASK    : ask the user everytime permissions are changed.
+ * @THUNAR_RECURSIVE_PERMISSIONS_ALWAYS : always apply the change recursively.
+ * @THUNAR_RECURSIVE_PERMISSIONS_NEVER  : never apply the change recursively.
+ *
+ * Modus operandi when changing permissions.
+ **/
+typedef enum
+{
+  THUNAR_RECURSIVE_PERMISSIONS_ASK,
+  THUNAR_RECURSIVE_PERMISSIONS_ALWAYS,
+  THUNAR_RECURSIVE_PERMISSIONS_NEVER,
+} ThunarRecursivePermissionsMode;
+
+GType thunar_recursive_permissions_get_type (void) G_GNUC_CONST G_GNUC_INTERNAL;
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_ENUM_TYPES_H__ */
diff --git a/thunar/thunar-file.c b/thunar/thunar-file.c
index 106a3ece5359daff329638f2e61c6e1e33b3adfd..7b5e5091b717068a10fb69bb5a550859bb240795 100644
--- a/thunar/thunar-file.c
+++ b/thunar/thunar-file.c
@@ -781,71 +781,6 @@ thunar_file_get_parent (const ThunarFile *file,
 
 
 
-/**
- * thunar_file_chgrp:
- * @file  : a #ThunarFile instance.
- * @group : a #ThunarVfsGroup.
- * @error : return location for errors or %NULL.
- *
- * Tries to change the #ThunarVfsGroup for @file to @group.
- * Returns %TRUE if the operation was successfull, else %FALSE
- * and @error is set to describe the cause.
- *
- * Return value: %TRUE if the group of @file was successfully
- *               changed to @group, else %FALSE.
- **/
-gboolean
-thunar_file_chgrp (ThunarFile     *file,
-                   ThunarVfsGroup *group,
-                   GError        **error)
-{
-  g_return_val_if_fail (THUNAR_IS_FILE (file), FALSE);
-  g_return_val_if_fail (THUNAR_VFS_IS_GROUP (group), FALSE);
-  g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
-
-  if (thunar_vfs_info_chgrp (file->info, thunar_vfs_group_get_id (group), error))
-    {
-      thunar_file_changed (file);
-      return TRUE;
-    }
-
-  return FALSE;
-}
-
-
-
-/**
- * thunar_file_chmod:
- * @file  : a #ThunarFile instance.
- * @mode  : the new #ThunarVfsFileMode for @file.
- * @error : return location for errors or %NULL.
- *
- * Tries to change the #ThunarVfsFileMode for @file to @mode.
- * Returns %TRUE if the operation was successfull, else %FALSE
- * and @error is set to describe the cause.
- *
- * Return value: %TRUE if the mode of @file was successfully
- *               changed to @mode, else %FALSE.
- **/
-gboolean
-thunar_file_chmod (ThunarFile       *file,
-                   ThunarVfsFileMode mode,
-                   GError          **error)
-{
-  g_return_val_if_fail (THUNAR_IS_FILE (file), FALSE);
-  g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
-
-  if (thunar_vfs_info_chmod (file->info, mode, error))
-    {
-      thunar_file_changed (file);
-      return TRUE;
-    }
-
-  return FALSE;
-}
-
-
-
 /**
  * thunar_file_execute:
  * @file      : a #ThunarFile instance.
@@ -1287,24 +1222,6 @@ thunar_file_get_user (const ThunarFile *file)
 
 
 
-/**
- * thunar_file_is_chgrpable:
- * @file : a #ThunarFile instance.
- *
- * Determines whether the owner of the current process is allowed
- * to change the file group of @file.
- *
- * Return value: %TRUE if the group of @file can be changed.
- **/
-gboolean
-thunar_file_is_chgrpable (const ThunarFile *file)
-{
-  /* we can change the group if we can change the mode */
-  return thunar_file_is_chmodable (file);
-}
-
-
-
 /**
  * thunar_file_is_chmodable:
  * @file : a #ThunarFile instance.
diff --git a/thunar/thunar-file.h b/thunar/thunar-file.h
index e2e218dcb7c84773f791b7f4668bd1ae14380d14..42cf6cbb06cd0b9300bba88a692d25c99332342c 100644
--- a/thunar/thunar-file.h
+++ b/thunar/thunar-file.h
@@ -119,14 +119,6 @@ static inline gboolean           thunar_file_has_parent           (const ThunarF
 ThunarFile                      *thunar_file_get_parent           (const ThunarFile       *file,
                                                                    GError                **error);
 
-gboolean                         thunar_file_chgrp                (ThunarFile             *file,
-                                                                   ThunarVfsGroup         *group,
-                                                                   GError                **error);
-
-gboolean                         thunar_file_chmod                (ThunarFile             *file,
-                                                                   ThunarVfsFileMode       mode,
-                                                                   GError                **error);
-
 gboolean                         thunar_file_execute              (ThunarFile             *file,
                                                                    GdkScreen              *screen,
                                                                    GList                  *path_list,
@@ -163,7 +155,6 @@ ThunarVfsVolume                 *thunar_file_get_volume           (const ThunarF
 ThunarVfsGroup                  *thunar_file_get_group            (const ThunarFile       *file);
 ThunarVfsUser                   *thunar_file_get_user             (const ThunarFile       *file);
 
-gboolean                         thunar_file_is_chgrpable         (const ThunarFile       *file);
 gboolean                         thunar_file_is_chmodable         (const ThunarFile       *file);
 gboolean                         thunar_file_is_executable        (const ThunarFile       *file);
 gboolean                         thunar_file_is_readable          (const ThunarFile       *file);
diff --git a/thunar/thunar-pango-extensions.c b/thunar/thunar-pango-extensions.c
index 4e1090fc84447df5d5e7ff9edbdf6343a4a3881d..947498e97be0b19fc2fa2684517d27cf91a63d33 100644
--- a/thunar/thunar-pango-extensions.c
+++ b/thunar/thunar-pango-extensions.c
@@ -21,23 +21,37 @@
 #include <config.h>
 #endif
 
+#ifdef HAVE_STDARG_H
+#include <stdarg.h>
+#endif
+
 #include <thunar/thunar-pango-extensions.h>
 
 
 
-static PangoAttrList *thunar_pango_attr_list_wrap (PangoAttribute *attribute) G_GNUC_MALLOC;
+static PangoAttrList *thunar_pango_attr_list_wrap (PangoAttribute *attribute, ...) G_GNUC_MALLOC;
 
 
 
 static PangoAttrList*
-thunar_pango_attr_list_wrap (PangoAttribute *attribute)
+thunar_pango_attr_list_wrap (PangoAttribute *attribute, ...)
 {
   PangoAttrList *attr_list;
-  
+  va_list        args;
+
+  /* allocate a new attribute list */
   attr_list = pango_attr_list_new ();
-  attribute->start_index = 0;
-  attribute->end_index = -1;
-  pango_attr_list_insert (attr_list, attribute);
+
+  /* add all specified attributes */
+  va_start (args, attribute);
+  while (attribute != NULL)
+    {
+      attribute->start_index = 0;
+      attribute->end_index = -1;
+      pango_attr_list_insert (attr_list, attribute);
+      attribute = va_arg (args, PangoAttribute *);
+    }
+  va_end (args);
 
   return attr_list;
 }
@@ -58,7 +72,7 @@ thunar_pango_attr_list_big (void)
 {
   static PangoAttrList *attr_list = NULL;
   if (G_UNLIKELY (attr_list == NULL))
-    attr_list = thunar_pango_attr_list_wrap (pango_attr_scale_new (PANGO_SCALE_LARGE));
+    attr_list = thunar_pango_attr_list_wrap (pango_attr_scale_new (PANGO_SCALE_LARGE), NULL);
   return attr_list;
 }
 
@@ -78,7 +92,7 @@ thunar_pango_attr_list_bold (void)
 {
   static PangoAttrList *attr_list = NULL;
   if (G_UNLIKELY (attr_list == NULL))
-    attr_list = thunar_pango_attr_list_wrap (pango_attr_weight_new (PANGO_WEIGHT_BOLD));
+    attr_list = thunar_pango_attr_list_wrap (pango_attr_weight_new (PANGO_WEIGHT_BOLD), NULL);
   return attr_list;
 }
 
@@ -98,7 +112,27 @@ thunar_pango_attr_list_italic (void)
 {
   static PangoAttrList *attr_list = NULL;
   if (G_UNLIKELY (attr_list == NULL))
-    attr_list = thunar_pango_attr_list_wrap (pango_attr_style_new (PANGO_STYLE_ITALIC));
+    attr_list = thunar_pango_attr_list_wrap (pango_attr_style_new (PANGO_STYLE_ITALIC), NULL);
+  return attr_list;
+}
+
+
+
+/**
+ * thunar_pango_attr_list_small_italic:
+ *
+ * Returns a #PangoAttrList for rendering small italic text.
+ * The returned list is owned by the callee and must
+ * not be freed or modified by the caller.
+ *
+ * Return value: a #PangoAttrList for rendering small italic text.
+ **/
+PangoAttrList*
+thunar_pango_attr_list_small_italic (void)
+{
+  static PangoAttrList *attr_list = NULL;
+  if (G_UNLIKELY (attr_list == NULL))
+    attr_list = thunar_pango_attr_list_wrap (pango_attr_scale_new (PANGO_SCALE_SMALL), pango_attr_style_new (PANGO_STYLE_ITALIC), NULL);
   return attr_list;
 }
 
diff --git a/thunar/thunar-pango-extensions.h b/thunar/thunar-pango-extensions.h
index 8b95f42d0d84dd5e2b074cca74bca04719643270..b1b38adae4908abef28dea8522ef881d047f06d4 100644
--- a/thunar/thunar-pango-extensions.h
+++ b/thunar/thunar-pango-extensions.h
@@ -24,9 +24,10 @@
 
 G_BEGIN_DECLS;
 
-PangoAttrList *thunar_pango_attr_list_big     (void) G_GNUC_CONST G_GNUC_INTERNAL;
-PangoAttrList *thunar_pango_attr_list_bold    (void) G_GNUC_CONST G_GNUC_INTERNAL;
-PangoAttrList *thunar_pango_attr_list_italic  (void) G_GNUC_CONST G_GNUC_INTERNAL;
+PangoAttrList *thunar_pango_attr_list_big           (void) G_GNUC_CONST G_GNUC_INTERNAL;
+PangoAttrList *thunar_pango_attr_list_bold          (void) G_GNUC_CONST G_GNUC_INTERNAL;
+PangoAttrList *thunar_pango_attr_list_italic        (void) G_GNUC_CONST G_GNUC_INTERNAL;
+PangoAttrList *thunar_pango_attr_list_small_italic  (void) G_GNUC_CONST G_GNUC_INTERNAL;
 
 G_END_DECLS;
 
diff --git a/thunar/thunar-permissions-chooser.c b/thunar/thunar-permissions-chooser.c
new file mode 100644
index 0000000000000000000000000000000000000000..a19d3ae0b2fc2f4f4a2149878d14625e46903c98
--- /dev/null
+++ b/thunar/thunar-permissions-chooser.c
@@ -0,0 +1,1247 @@
+/* $Id$ */
+/*-
+ * Copyright (c) 2005-2006 Benedikt Meurer <benny@xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <thunar/thunar-dialogs.h>
+#include <thunar/thunar-enum-types.h>
+#include <thunar/thunar-pango-extensions.h>
+#include <thunar/thunar-permissions-chooser.h>
+#include <thunar/thunar-preferences.h>
+#include <thunar/thunar-stock.h>
+
+
+
+/* Property identifiers */
+enum
+{
+  PROP_0,
+  PROP_FILE,
+  PROP_MUTABLE,
+};
+
+/* Column identifiers for the group combo box */
+enum
+{
+  THUNAR_PERMISSIONS_STORE_COLUMN_STOCK_ID,
+  THUNAR_PERMISSIONS_STORE_COLUMN_NAME,
+  THUNAR_PERMISSIONS_STORE_COLUMN_GID,
+  THUNAR_PERMISSIONS_STORE_N_COLUMNS,
+};
+
+
+
+static void                             thunar_permissions_chooser_class_init       (ThunarPermissionsChooserClass  *klass);
+static void                             thunar_permissions_chooser_init             (ThunarPermissionsChooser       *chooser);
+static void                             thunar_permissions_chooser_finalize         (GObject                        *object);
+static void                             thunar_permissions_chooser_get_property     (GObject                        *object,
+                                                                                     guint                           prop_id,
+                                                                                     GValue                         *value,
+                                                                                     GParamSpec                     *pspec);
+static void                             thunar_permissions_chooser_set_property     (GObject                        *object,
+                                                                                     guint                           prop_id,
+                                                                                     const GValue                   *value,
+                                                                                     GParamSpec                     *pspec);
+static void                             thunar_permissions_chooser_change_group     (ThunarPermissionsChooser       *chooser,
+                                                                                     ThunarVfsGroupId                gid);
+static void                             thunar_permissions_chooser_change_mode      (ThunarPermissionsChooser       *chooser,
+                                                                                     ThunarVfsFileMode               dir_mask,
+                                                                                     ThunarVfsFileMode               dir_mode,
+                                                                                     ThunarVfsFileMode               file_mask,
+                                                                                     ThunarVfsFileMode               file_mode);
+static gboolean                         thunar_permissions_chooser_recursive        (ThunarPermissionsChooser       *chooser);
+static void                             thunar_permissions_chooser_access_changed   (ThunarPermissionsChooser       *chooser,
+                                                                                     GtkWidget                      *combo);
+static void                             thunar_permissions_chooser_file_changed     (ThunarPermissionsChooser       *chooser,
+                                                                                     ThunarFile                     *file);
+static void                             thunar_permissions_chooser_group_changed    (ThunarPermissionsChooser       *chooser,
+                                                                                     GtkWidget                      *combo);
+static void                             thunar_permissions_chooser_program_toggled  (ThunarPermissionsChooser       *chooser,
+                                                                                     GtkWidget                      *button);
+static ThunarVfsInteractiveJobResponse  thunar_permissions_chooser_job_ask          (ThunarPermissionsChooser       *chooser,
+                                                                                     const gchar                    *message,
+                                                                                     ThunarVfsInteractiveJobResponse choices,
+                                                                                     ThunarVfsJob                   *job);
+static void                             thunar_permissions_chooser_job_cancel       (ThunarPermissionsChooser       *chooser);
+static void                             thunar_permissions_chooser_job_error        (ThunarPermissionsChooser       *chooser,
+                                                                                     GError                         *error,
+                                                                                     ThunarVfsJob                   *job);
+static void                             thunar_permissions_chooser_job_finished     (ThunarPermissionsChooser       *chooser,
+                                                                                     ThunarVfsJob                   *job);
+static void                             thunar_permissions_chooser_job_percent      (ThunarPermissionsChooser       *chooser,  
+                                                                                     gdouble                         percent,
+                                                                                     ThunarVfsJob                   *job);
+static void                             thunar_permissions_chooser_job_start        (ThunarPermissionsChooser       *chooser,
+                                                                                     ThunarVfsJob                   *job,
+                                                                                     gboolean                        recursive);
+static gboolean                         thunar_permissions_chooser_row_separator    (GtkTreeModel                   *model,
+                                                                                     GtkTreeIter                    *iter,
+                                                                                     gpointer                        data);
+
+
+
+struct _ThunarPermissionsChooserClass
+{
+  GtkVBoxClass __parent__;
+};
+
+struct _ThunarPermissionsChooser
+{
+  GtkVBox __parent__;
+
+  ThunarFile   *file;
+
+  /* the main table widget, which contains everything but the job control stuff */
+  GtkWidget    *table;
+
+  GtkWidget    *user_label;
+  GtkWidget    *group_combo;
+  GtkWidget    *access_combos[3];
+  GtkWidget    *program_button;
+
+  /* job control stuff */
+  ThunarVfsJob *job;
+  GtkWidget    *job_progress;
+};
+
+
+
+static GObjectClass *thunar_permissions_chooser_parent_class;
+
+
+
+GType
+thunar_permissions_chooser_get_type (void)
+{
+  static GType type = G_TYPE_INVALID;
+
+  if (G_UNLIKELY (type == G_TYPE_INVALID))
+    {
+      static const GTypeInfo info =
+      {
+        sizeof (ThunarPermissionsChooserClass),
+        NULL,
+        NULL,
+        (GClassInitFunc) thunar_permissions_chooser_class_init,
+        NULL,
+        NULL,
+        sizeof (ThunarPermissionsChooser),
+        0,
+        (GInstanceInitFunc) thunar_permissions_chooser_init,
+        NULL,
+      };
+
+      type = g_type_register_static (GTK_TYPE_VBOX, I_("ThunarPermissionsChooser"), &info, 0);
+    }
+
+  return type;
+}
+
+
+
+static void
+thunar_permissions_chooser_class_init (ThunarPermissionsChooserClass *klass)
+{
+  GObjectClass *gobject_class;
+
+  /* determine the parent type class */
+  thunar_permissions_chooser_parent_class = g_type_class_peek_parent (klass);
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize = thunar_permissions_chooser_finalize;
+  gobject_class->get_property = thunar_permissions_chooser_get_property;
+  gobject_class->set_property = thunar_permissions_chooser_set_property;
+
+  /**
+   * ThunarPermissionsChooser:file:
+   *
+   * The #ThunarFile whose permissions will be edited/viewed.
+   **/
+  g_object_class_install_property (gobject_class,
+                                   PROP_FILE,
+                                   g_param_spec_object ("file", "file", "file",
+                                                        THUNAR_TYPE_FILE,
+                                                        EXO_PARAM_READWRITE));
+
+  /**
+   * ThunarPermissionsChooser:mutable:
+   *
+   * Whether the current #ThunarFile<!---->s permissions are
+   * mutable.
+   **/
+  g_object_class_install_property (gobject_class,
+                                   PROP_MUTABLE,
+                                   g_param_spec_boolean ("mutable",
+                                                         "mutable",
+                                                         "mutable",
+                                                         FALSE,
+                                                         EXO_PARAM_READABLE));
+}
+
+
+
+static void
+thunar_permissions_chooser_init (ThunarPermissionsChooser *chooser)
+{
+  GtkCellRenderer *renderer_pixbuf;
+  GtkCellRenderer *renderer_text;
+  AtkRelationSet  *relations;
+  GtkListStore    *store;
+  AtkRelation     *relation;
+  GtkTreeIter      iter;
+  AtkObject       *object;
+  GtkWidget       *separator;
+  GtkWidget       *button;
+  GtkWidget       *label;
+  GtkWidget       *image;
+  GtkWidget       *hbox;
+  gint             row = 0;
+
+  /* setup the chooser */
+  gtk_container_set_border_width (GTK_CONTAINER (chooser), 12);
+
+  /* allocate the store for the permission combos */
+  store = gtk_list_store_new (1, G_TYPE_STRING);
+  gtk_list_store_append (store, &iter); /* 0000 */
+  gtk_list_store_set (store, &iter, 0, _("None"), -1);
+  gtk_list_store_append (store, &iter); /* 0002 */
+  gtk_list_store_set (store, &iter, 0, _("Write only"), -1);
+  gtk_list_store_append (store, &iter); /* 0004 */
+  gtk_list_store_set (store, &iter, 0, _("Read only"), -1);
+  gtk_list_store_append (store, &iter); /* 0006 */
+  gtk_list_store_set (store, &iter, 0, _("Read & Write"), -1);
+
+  /* allocate the shared renderers for the various combo boxes */
+  renderer_pixbuf = gtk_cell_renderer_pixbuf_new ();
+  renderer_text = gtk_cell_renderer_text_new ();
+
+  chooser->table = gtk_table_new (2, 2, FALSE);
+  gtk_table_set_col_spacings (GTK_TABLE (chooser->table), 12);
+  gtk_table_set_row_spacings (GTK_TABLE (chooser->table), 6);
+  gtk_box_pack_start (GTK_BOX (chooser), chooser->table, TRUE, TRUE, 0);
+  gtk_widget_show (chooser->table);
+
+  label = gtk_label_new (_("Owner:"));
+  gtk_misc_set_alignment (GTK_MISC (label), 1.0f, 0.5f);
+  gtk_label_set_attributes (GTK_LABEL (label), thunar_pango_attr_list_bold ());
+  gtk_table_attach (GTK_TABLE (chooser->table), label, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, 0, 0);
+  gtk_widget_show (label);
+
+  hbox = gtk_hbox_new (FALSE, 6);
+  gtk_table_attach (GTK_TABLE (chooser->table), hbox, 1, 2, row, row + 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 6);
+  gtk_widget_show (hbox);
+
+  image = gtk_image_new_from_stock (THUNAR_STOCK_USER, GTK_ICON_SIZE_MENU);
+  gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
+  gtk_widget_show (image);
+
+  chooser->user_label = gtk_label_new (_("Unknown"));
+  gtk_misc_set_alignment (GTK_MISC (chooser->user_label), 0.0f, 0.5f);
+  gtk_box_pack_start (GTK_BOX (hbox), chooser->user_label, TRUE, TRUE, 0);
+  gtk_widget_show (chooser->user_label);
+
+  /* set Atk label relation for the user_label */
+  object = gtk_widget_get_accessible (chooser->user_label);
+  relations = atk_object_ref_relation_set (gtk_widget_get_accessible (label));
+  relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
+  atk_relation_set_add (relations, relation);
+  g_object_unref (G_OBJECT (relation));
+
+  row += 1;
+
+  label = gtk_label_new (_("Access:"));
+  gtk_misc_set_alignment (GTK_MISC (label), 1.0f, 0.5f);
+  gtk_label_set_attributes (GTK_LABEL (label), thunar_pango_attr_list_bold ());
+  gtk_table_attach (GTK_TABLE (chooser->table), label, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, 0, 0);
+  gtk_widget_show (label);
+
+  chooser->access_combos[2] = gtk_combo_box_new_with_model (GTK_TREE_MODEL (store));
+  gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (chooser->access_combos[2]), renderer_text, TRUE);
+  gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (chooser->access_combos[2]), renderer_text, "text", 0);
+  exo_binding_new (G_OBJECT (chooser), "mutable", G_OBJECT (chooser->access_combos[2]), "sensitive");
+  g_signal_connect_swapped (G_OBJECT (chooser->access_combos[2]), "changed", G_CALLBACK (thunar_permissions_chooser_access_changed), chooser);
+  gtk_table_attach (GTK_TABLE (chooser->table), chooser->access_combos[2], 1, 2, row, row + 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
+  gtk_widget_show (chooser->access_combos[2]);
+
+  /* set Atk label relation for the combo */
+  object = gtk_widget_get_accessible (chooser->access_combos[2]);
+  relations = atk_object_ref_relation_set (gtk_widget_get_accessible (label));
+  relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
+  atk_relation_set_add (relations, relation);
+  g_object_unref (G_OBJECT (relation));
+
+  row += 1;
+
+  separator = gtk_alignment_new (0.0f, 0.0f, 0.0f, 0.0f);
+  gtk_table_attach (GTK_TABLE (chooser->table), separator, 0, 2, row, row + 1, GTK_FILL, GTK_FILL, 0, 6);
+  gtk_widget_show (separator);
+
+  row += 1;
+
+  label = gtk_label_new (_("Group:"));
+  gtk_misc_set_alignment (GTK_MISC (label), 1.0f, 0.5f);
+  gtk_label_set_attributes (GTK_LABEL (label), thunar_pango_attr_list_bold ());
+  gtk_table_attach (GTK_TABLE (chooser->table), label, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, 0, 0);
+  gtk_widget_show (label);
+
+  chooser->group_combo = gtk_combo_box_new ();
+  gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (chooser->group_combo), renderer_pixbuf, FALSE);
+  gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (chooser->group_combo), renderer_pixbuf, "stock-id", THUNAR_PERMISSIONS_STORE_COLUMN_STOCK_ID);
+  gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (chooser->group_combo), renderer_text, TRUE);
+  gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (chooser->group_combo), renderer_text, "text", THUNAR_PERMISSIONS_STORE_COLUMN_NAME);
+  gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (chooser->group_combo), thunar_permissions_chooser_row_separator, NULL, NULL);
+  exo_binding_new (G_OBJECT (chooser), "mutable", G_OBJECT (chooser->group_combo), "sensitive");
+  g_signal_connect_swapped (G_OBJECT (chooser->group_combo), "changed", G_CALLBACK (thunar_permissions_chooser_group_changed), chooser);
+  gtk_table_attach (GTK_TABLE (chooser->table), chooser->group_combo, 1, 2, row, row + 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
+  gtk_widget_show (chooser->group_combo);
+
+  /* set Atk label relation for the combo */
+  object = gtk_widget_get_accessible (chooser->group_combo);
+  relations = atk_object_ref_relation_set (gtk_widget_get_accessible (label));
+  relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
+  atk_relation_set_add (relations, relation);
+  g_object_unref (G_OBJECT (relation));
+
+  row += 1;
+
+  label = gtk_label_new (_("Access:"));
+  gtk_misc_set_alignment (GTK_MISC (label), 1.0f, 0.5f);
+  gtk_label_set_attributes (GTK_LABEL (label), thunar_pango_attr_list_bold ());
+  gtk_table_attach (GTK_TABLE (chooser->table), label, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, 0, 0);
+  gtk_widget_show (label);
+
+  chooser->access_combos[1] = gtk_combo_box_new_with_model (GTK_TREE_MODEL (store));
+  gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (chooser->access_combos[1]), renderer_text, TRUE);
+  gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (chooser->access_combos[1]), renderer_text, "text", 0);
+  exo_binding_new (G_OBJECT (chooser), "mutable", G_OBJECT (chooser->access_combos[1]), "sensitive");
+  g_signal_connect_swapped (G_OBJECT (chooser->access_combos[1]), "changed", G_CALLBACK (thunar_permissions_chooser_access_changed), chooser);
+  gtk_table_attach (GTK_TABLE (chooser->table), chooser->access_combos[1], 1, 2, row, row + 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
+  gtk_widget_show (chooser->access_combos[1]);
+
+  /* set Atk label relation for the combo */
+  object = gtk_widget_get_accessible (chooser->access_combos[1]);
+  relations = atk_object_ref_relation_set (gtk_widget_get_accessible (label));
+  relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
+  atk_relation_set_add (relations, relation);
+  g_object_unref (G_OBJECT (relation));
+
+  row += 1;
+
+  separator = gtk_alignment_new (0.0f, 0.0f, 0.0f, 0.0f);
+  gtk_table_attach (GTK_TABLE (chooser->table), separator, 0, 2, row, row + 1, GTK_FILL, GTK_FILL, 0, 6);
+  gtk_widget_show (separator);
+
+  row += 1;
+
+  label = gtk_label_new (_("Others:"));
+  gtk_misc_set_alignment (GTK_MISC (label), 1.0f, 0.5f);
+  gtk_label_set_attributes (GTK_LABEL (label), thunar_pango_attr_list_bold ());
+  gtk_table_attach (GTK_TABLE (chooser->table), label, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, 0, 0);
+  gtk_widget_show (label);
+
+  chooser->access_combos[0] = gtk_combo_box_new_with_model (GTK_TREE_MODEL (store));
+  gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (chooser->access_combos[0]), renderer_text, TRUE);
+  gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (chooser->access_combos[0]), renderer_text, "text", 0);
+  exo_binding_new (G_OBJECT (chooser), "mutable", G_OBJECT (chooser->access_combos[0]), "sensitive");
+  g_signal_connect_swapped (G_OBJECT (chooser->access_combos[0]), "changed", G_CALLBACK (thunar_permissions_chooser_access_changed), chooser);
+  gtk_table_attach (GTK_TABLE (chooser->table), chooser->access_combos[0], 1, 2, row, row + 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
+  gtk_widget_show (chooser->access_combos[0]);
+
+  /* set Atk label relation for the combo */
+  object = gtk_widget_get_accessible (chooser->access_combos[0]);
+  relations = atk_object_ref_relation_set (gtk_widget_get_accessible (label));
+  relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
+  atk_relation_set_add (relations, relation);
+  g_object_unref (G_OBJECT (relation));
+
+  row += 1;
+
+  separator = gtk_alignment_new (0.0f, 0.0f, 0.0f, 0.0f);
+  gtk_table_attach (GTK_TABLE (chooser->table), separator, 0, 2, row, row + 1, GTK_FILL, GTK_FILL, 0, 6);
+  gtk_widget_show (separator);
+
+  row += 1;
+
+  label = gtk_label_new (_("Program:"));
+  gtk_misc_set_alignment (GTK_MISC (label), 1.0f, 0.5f);
+  gtk_label_set_attributes (GTK_LABEL (label), thunar_pango_attr_list_bold ());
+  gtk_table_attach (GTK_TABLE (chooser->table), label, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, 0, 0);
+  gtk_widget_show (label);
+
+  chooser->program_button = gtk_check_button_new_with_mnemonic (_("Allow this file to _run as a program"));
+  exo_binding_new (G_OBJECT (chooser->program_button), "visible", G_OBJECT (label), "visible");
+  exo_binding_new (G_OBJECT (chooser), "mutable", G_OBJECT (chooser->program_button), "sensitive");
+  g_signal_connect_swapped (G_OBJECT (chooser->program_button), "toggled", G_CALLBACK (thunar_permissions_chooser_program_toggled), chooser);
+  gtk_table_attach (GTK_TABLE (chooser->table), chooser->program_button, 1, 2, row, row + 1, GTK_FILL, GTK_FILL, 0, 0);
+  gtk_widget_show (chooser->program_button);
+
+  /* set Atk label relation for the button */
+  object = gtk_widget_get_accessible (chooser->program_button);
+  relations = atk_object_ref_relation_set (gtk_widget_get_accessible (label));
+  relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
+  atk_relation_set_add (relations, relation);
+  g_object_unref (G_OBJECT (relation));
+
+  row += 1;
+
+  hbox = gtk_hbox_new (FALSE, 6);
+  exo_binding_new (G_OBJECT (chooser), "mutable", G_OBJECT (hbox), "sensitive");
+  exo_binding_new (G_OBJECT (chooser->program_button), "visible", G_OBJECT (hbox), "visible");
+  gtk_table_attach (GTK_TABLE (chooser->table), hbox, 1, 2, row, row + 1, GTK_FILL, GTK_FILL, 0, 0);
+  gtk_widget_show (hbox);
+
+  image = gtk_image_new_from_stock (GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_LARGE_TOOLBAR);
+  gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
+  gtk_widget_show (image);
+
+  label = gtk_label_new (_("Allowing untrusted programs to run \npresents a security risk to your system."));
+  gtk_misc_set_alignment (GTK_MISC (label), 0.0f, 0.5f);
+  gtk_label_set_attributes (GTK_LABEL (label), thunar_pango_attr_list_small_italic ());
+  gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
+  gtk_widget_show (label);
+
+  /* the job control stuff */
+  hbox = gtk_hbox_new (FALSE, 6);
+  gtk_box_pack_start (GTK_BOX (chooser), hbox, FALSE, FALSE, 0);
+
+  chooser->job_progress = gtk_progress_bar_new ();
+  gtk_progress_bar_set_text (GTK_PROGRESS_BAR (chooser->job_progress), _("Please wait..."));
+  exo_binding_new (G_OBJECT (chooser->job_progress), "visible", G_OBJECT (hbox), "visible");
+  gtk_box_pack_start (GTK_BOX (hbox), chooser->job_progress, TRUE, TRUE, 0);
+
+  button = gtk_button_new ();
+  g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (thunar_permissions_chooser_job_cancel), chooser);
+  gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
+  gtk_widget_show (button);
+
+  image = gtk_image_new_from_stock (GTK_STOCK_CANCEL, GTK_ICON_SIZE_MENU);
+  gtk_container_add (GTK_CONTAINER (button), image);
+  gtk_widget_show (image);
+
+  /* release the shared combo store */
+  g_object_unref (G_OBJECT (store));
+}
+
+
+
+static void
+thunar_permissions_chooser_finalize (GObject *object)
+{
+  ThunarPermissionsChooser *chooser = THUNAR_PERMISSIONS_CHOOSER (object);
+
+  /* cancel any pending job */
+  if (G_UNLIKELY (chooser->job != NULL))
+    {
+      /* cancel the job (if not already done) */
+      thunar_vfs_job_cancel (chooser->job);
+
+      /* disconnect from the job */
+      g_signal_handlers_disconnect_matched (chooser->job, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, chooser);
+      g_object_unref (G_OBJECT (chooser->job));
+      chooser->job = NULL;
+    }
+
+  /* drop the reference on the file (if any) */
+  thunar_permissions_chooser_set_file (chooser, NULL);
+
+  (*G_OBJECT_CLASS (thunar_permissions_chooser_parent_class)->finalize) (object);
+}
+
+
+
+static void
+thunar_permissions_chooser_get_property (GObject    *object,
+                                         guint       prop_id,
+                                         GValue     *value,
+                                         GParamSpec *pspec)
+{
+  ThunarPermissionsChooser *chooser = THUNAR_PERMISSIONS_CHOOSER (object);
+
+  switch (prop_id)
+    {
+    case PROP_FILE:
+      g_value_set_object (value, thunar_permissions_chooser_get_file (chooser));
+      break;
+
+    case PROP_MUTABLE:
+      g_value_set_boolean (value, (chooser->file != NULL) && thunar_file_is_chmodable (chooser->file));
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+    }
+}
+
+
+
+static void
+thunar_permissions_chooser_set_property (GObject      *object,
+                                         guint         prop_id,
+                                         const GValue *value,
+                                         GParamSpec   *pspec)
+{
+  ThunarPermissionsChooser *chooser = THUNAR_PERMISSIONS_CHOOSER (object);
+
+  switch (prop_id)
+    {
+    case PROP_FILE:
+      thunar_permissions_chooser_set_file (chooser, g_value_get_object (value));
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+    }
+}
+
+
+
+static void
+thunar_permissions_chooser_change_group (ThunarPermissionsChooser *chooser,
+                                         ThunarVfsGroupId          gid)
+{
+  ThunarVfsJob *job;
+  gboolean      recursive;
+  GError       *error = NULL;
+
+  g_return_if_fail (THUNAR_IS_PERMISSIONS_CHOOSER (chooser));
+  g_return_if_fail (THUNAR_IS_FILE (chooser->file));
+
+  /* check if we should operate recursively */
+  recursive = (thunar_file_is_directory (chooser->file) && thunar_permissions_chooser_recursive (chooser));
+
+  /* try to allocate the new job */
+  job = thunar_vfs_change_group (thunar_file_get_path (chooser->file), gid, recursive, &error);
+  if (G_UNLIKELY (job == NULL))
+    {
+      /* display an error to the user */
+      thunar_dialogs_show_error (GTK_WIDGET (chooser), error, _("Failed to change group"));
+      g_error_free (error);
+    }
+  else
+    {
+      /* handle the job */
+      thunar_permissions_chooser_job_start (chooser, job, recursive);
+      g_object_unref (G_OBJECT (job));
+    }
+}
+
+
+
+static void
+thunar_permissions_chooser_change_mode (ThunarPermissionsChooser *chooser,
+                                        ThunarVfsFileMode         dir_mask,
+                                        ThunarVfsFileMode         dir_mode,
+                                        ThunarVfsFileMode         file_mask,
+                                        ThunarVfsFileMode         file_mode)
+{
+  ThunarVfsJob *job;
+  gboolean      recursive;
+  GError       *error = NULL;
+
+  g_return_if_fail (THUNAR_IS_PERMISSIONS_CHOOSER (chooser));
+  g_return_if_fail (THUNAR_IS_FILE (chooser->file));
+
+  /* check if we should operate recursively */
+  recursive = (thunar_file_is_directory (chooser->file) && thunar_permissions_chooser_recursive (chooser));
+
+  /* try to allocate the new job */
+  job = thunar_vfs_change_mode (thunar_file_get_path (chooser->file), dir_mask, dir_mode, file_mask, file_mode, recursive, &error);
+  if (G_UNLIKELY (job == NULL))
+    {
+      /* display an error to the user */
+      thunar_dialogs_show_error (GTK_WIDGET (chooser), error, _("Failed to apply new permissions"));
+      g_error_free (error);
+    }
+  else
+    {
+      /* handle the job */
+      thunar_permissions_chooser_job_start (chooser, job, recursive);
+      g_object_unref (G_OBJECT (job));
+    }
+}
+
+
+
+static gboolean
+thunar_permissions_chooser_recursive (ThunarPermissionsChooser *chooser)
+{
+  ThunarRecursivePermissionsMode mode;
+  ThunarPreferences             *preferences;
+  GtkWidget                     *toplevel;
+  GtkWidget                     *dialog;
+  GtkWidget                     *button;
+  GtkWidget                     *label;
+  GtkWidget                     *image;
+  GtkWidget                     *hbox;
+  GtkWidget                     *vbox;
+
+  /* grab a reference on the preferences */
+  preferences = thunar_preferences_get ();
+
+  /* determine the current recursive permissions mode */
+  g_object_get (G_OBJECT (preferences), "misc-recursive-permissions", &mode, NULL);
+
+  /* check if we should ask the user first */
+  if (G_UNLIKELY (mode == THUNAR_RECURSIVE_PERMISSIONS_ASK))
+    {
+      /* determine the toplevel widget for the chooser */
+      toplevel = gtk_widget_get_toplevel (GTK_WIDGET (chooser));
+
+      /* allocate the question dialog */
+      dialog = gtk_dialog_new_with_buttons (_("Question"), GTK_WINDOW (toplevel),
+                                            GTK_DIALOG_DESTROY_WITH_PARENT
+                                            | GTK_DIALOG_NO_SEPARATOR
+                                            | GTK_DIALOG_MODAL,
+                                            GTK_STOCK_NO, GTK_RESPONSE_CANCEL,
+                                            GTK_STOCK_YES, GTK_RESPONSE_ACCEPT,
+                                            NULL);
+      gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);
+
+      hbox = gtk_hbox_new (FALSE, 6);
+      gtk_container_set_border_width (GTK_CONTAINER (hbox), 8);
+      gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox, TRUE, TRUE, 0);
+      gtk_widget_show (hbox);
+
+      image = gtk_image_new_from_stock (GTK_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG);
+      gtk_misc_set_alignment (GTK_MISC (image), 0.5f, 0.0f);
+      gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
+      gtk_widget_show (image);
+
+      vbox = gtk_vbox_new (FALSE, 6);
+      gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0);
+      gtk_widget_show (vbox);
+
+      label = gtk_label_new (_("Apply recursively?"));
+      gtk_misc_set_alignment (GTK_MISC (label), 0.0f, 0.5f);
+      gtk_label_set_attributes (GTK_LABEL (label), thunar_pango_attr_list_big ());
+      gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+      gtk_widget_show (label);
+
+      label = gtk_label_new (_("Do you want to apply your changes recursively to\nall files and subfolder below the selected folder?"));
+      gtk_misc_set_alignment (GTK_MISC (label), 0.0f, 0.5f);
+      gtk_box_pack_start (GTK_BOX (vbox), label, TRUE, TRUE, 0);
+      gtk_widget_show (label);
+
+      button = gtk_check_button_new_with_mnemonic (_("Do _not ask me again"));
+      gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
+      gtk_widget_show (button);
+
+      /* run the dialog */
+      switch (gtk_dialog_run (GTK_DIALOG (dialog)))
+        {
+        case GTK_RESPONSE_ACCEPT:
+          mode = THUNAR_RECURSIVE_PERMISSIONS_ALWAYS;
+          break;
+
+        default:
+          mode = THUNAR_RECURSIVE_PERMISSIONS_NEVER;
+          break;
+        }
+
+      /* save the selected option (if requested) */
+      if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button)))
+        g_object_set (G_OBJECT (preferences), "misc-recursive-permissions", mode, NULL);
+
+      /* destroy the dialog resources */
+      gtk_widget_destroy (dialog);
+    }
+
+  /* release the reference on the preferences */
+  g_object_unref (G_OBJECT (preferences));
+
+  return (mode == THUNAR_RECURSIVE_PERMISSIONS_ALWAYS);
+}
+
+
+
+static void
+thunar_permissions_chooser_access_changed (ThunarPermissionsChooser *chooser,
+                                           GtkWidget                *combo)
+{
+  ThunarVfsFileMode file_mask;
+  ThunarVfsFileMode file_mode;
+  ThunarVfsFileMode dir_mask;
+  ThunarVfsFileMode dir_mode;
+  guint             n;
+
+  g_return_if_fail (THUNAR_IS_PERMISSIONS_CHOOSER (chooser));
+  g_return_if_fail (GTK_IS_COMBO_BOX (combo));
+
+  /* verify that we have a valid file */
+  if (G_UNLIKELY (chooser->file == NULL))
+    return;
+
+  /* determine the new mode from the combo box */
+  for (n = 0; chooser->access_combos[n] != combo && n < G_N_ELEMENTS (chooser->access_combos); ++n);
+  dir_mode = file_mode = (gtk_combo_box_get_active (GTK_COMBO_BOX (combo)) << 1) << (n * 3);
+  dir_mask = file_mask = 0006 << (n * 3);
+
+  /* keep exec bit in sync for folders */
+  if (thunar_file_is_directory (chooser->file))
+    {
+      /* if either read or write is, set exec as well, else unset exec as well */
+      if ((dir_mode & (0004 << (n * 3))) != 0)
+        dir_mode |= (0001 << (n * 3));
+      dir_mask = 0007 << (n * 3);
+    }
+
+  /* change the permissions */
+  thunar_permissions_chooser_change_mode (chooser, dir_mask, dir_mode, file_mask, file_mode);
+}
+
+
+
+static gint
+group_compare (gconstpointer group_a,
+               gconstpointer group_b,
+               gpointer      group_primary)
+{
+  ThunarVfsGroupId group_primary_id = thunar_vfs_group_get_id (THUNAR_VFS_GROUP (group_primary));
+  ThunarVfsGroupId group_a_id = thunar_vfs_group_get_id (THUNAR_VFS_GROUP (group_a));
+  ThunarVfsGroupId group_b_id = thunar_vfs_group_get_id (THUNAR_VFS_GROUP (group_b));
+
+  /* check if the groups are equal */
+  if (group_a_id == group_b_id)
+    return 0;
+
+  /* the primary group is always sorted first */
+  if (group_a_id == group_primary_id)
+    return -1;
+  else if (group_b_id == group_primary_id)
+    return 1;
+
+  /* system groups (< 100) are always sorted last */
+  if (group_a_id < 100 && group_b_id >= 100)
+    return 1;
+  else if (group_b_id < 100 && group_a_id >= 100)
+    return -1;
+
+  /* otherwise just sort by name */
+  return g_ascii_strcasecmp (thunar_vfs_group_get_name (THUNAR_VFS_GROUP (group_a)), thunar_vfs_group_get_name (THUNAR_VFS_GROUP (group_b)));
+}
+
+
+
+static void
+thunar_permissions_chooser_file_changed (ThunarPermissionsChooser *chooser,
+                                         ThunarFile               *file)
+{
+  ThunarVfsUserManager *user_manager;
+  ThunarVfsFileMode     mode;
+  ThunarVfsGroup       *group;
+  ThunarVfsUser        *user;
+  GtkListStore         *store;
+  GtkTreeIter           iter;
+  const gchar          *user_name;
+  const gchar          *real_name;
+  GList                *groups;
+  GList                *lp;
+  gchar                 buffer[1024];
+  guint                 n;
+
+  g_return_if_fail (THUNAR_IS_PERMISSIONS_CHOOSER (chooser));
+  g_return_if_fail (THUNAR_IS_FILE (file));
+  g_return_if_fail (chooser->file == file);
+
+  /* allocate a new store for the group combo box */
+  g_signal_handlers_block_by_func (G_OBJECT (chooser->group_combo), thunar_permissions_chooser_group_changed, chooser);
+  store = gtk_list_store_new (THUNAR_PERMISSIONS_STORE_N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT);
+  gtk_combo_box_set_model (GTK_COMBO_BOX (chooser->group_combo), GTK_TREE_MODEL (store));
+
+  /* determine the owner of the new file */
+  user = thunar_file_get_user (file);
+  if (G_LIKELY (user != NULL))
+    {
+      /* determine the group of the new file */
+      group = thunar_file_get_group (file);
+      if (G_LIKELY (group != NULL))
+        {
+          /* check if we have superuser privileges */
+          if (G_UNLIKELY (geteuid () == 0))
+            {
+              /* determine all groups in the system */
+              user_manager = thunar_vfs_user_manager_get_default ();
+              groups = thunar_vfs_user_manager_get_all_groups (user_manager);
+              g_object_unref (G_OBJECT (user_manager));
+            }
+          else
+            {
+              /* determine the groups for the user and take a copy */
+              groups = g_list_copy (thunar_vfs_user_get_groups (user));
+              g_list_foreach (groups, (GFunc) g_object_ref, NULL);
+            }
+
+          /* sort the groups according to group_compare() */
+          groups = g_list_sort_with_data (groups, group_compare, group);
+
+          /* add the groups to the store */
+          for (lp = groups, n = 0; lp != NULL; lp = lp->next)
+            {
+              /* append a separator after the primary group and after the user-groups (not system groups) */
+              if (thunar_vfs_group_get_id (groups->data) == thunar_vfs_group_get_id (group) && lp != groups && n == 0)
+                {
+                  gtk_list_store_append (store, &iter);
+                  n += 1;
+                }
+              else if (lp != groups && thunar_vfs_group_get_id (lp->data) < 100 && n == 1)
+                {
+                  gtk_list_store_append (store, &iter);
+                  n += 1;
+                }
+
+              /* append a new item for the group */
+              gtk_list_store_append (store, &iter);
+              gtk_list_store_set (store, &iter,
+                                  THUNAR_PERMISSIONS_STORE_COLUMN_STOCK_ID, THUNAR_STOCK_GROUP,
+                                  THUNAR_PERMISSIONS_STORE_COLUMN_NAME, thunar_vfs_group_get_name (lp->data),
+                                  THUNAR_PERMISSIONS_STORE_COLUMN_GID, thunar_vfs_group_get_id (lp->data),
+                                  -1);
+
+              /* set the active iter for the combo box if this group is the primary group */
+              if (G_UNLIKELY (lp->data == group))
+                gtk_combo_box_set_active_iter (GTK_COMBO_BOX (chooser->group_combo), &iter);
+            }
+
+          /* cleanup */
+          g_list_foreach (groups, (GFunc) g_object_unref, NULL);
+          g_object_unref (G_OBJECT (group));
+          g_list_free (groups);
+        }
+
+      /* determine sane display name for the owner */
+      user_name = thunar_vfs_user_get_name (user);
+      real_name = thunar_vfs_user_get_real_name (user);
+      if (G_LIKELY (real_name != NULL))
+        g_snprintf (buffer, sizeof (buffer), "%s (%s)", real_name, user_name);
+      else
+        g_strlcpy (buffer, user_name, sizeof (buffer));
+      gtk_label_set_text (GTK_LABEL (chooser->user_label), buffer);
+      g_object_unref (G_OBJECT (user));
+    }
+  else
+    {
+      gtk_label_set_text (GTK_LABEL (chooser->user_label), _("Unknown file owner"));
+    }
+
+  /* determine the file mode and update the combo boxes */
+  mode = thunar_file_get_mode (file);
+  for (n = 0; n < G_N_ELEMENTS (chooser->access_combos); ++n)
+    {
+      g_signal_handlers_block_by_func (G_OBJECT (chooser->access_combos[n]), thunar_permissions_chooser_access_changed, chooser);
+      gtk_combo_box_set_active (GTK_COMBO_BOX (chooser->access_combos[n]), ((mode >> (n * 3)) & 0007) >> 1);
+      g_signal_handlers_unblock_by_func (G_OBJECT (chooser->access_combos[n]), thunar_permissions_chooser_access_changed, chooser);
+    }
+
+  /* update the program setting based on the mode (only visible for regular files) */
+  g_signal_handlers_block_by_func (G_OBJECT (chooser->program_button), thunar_permissions_chooser_program_toggled, chooser);
+  g_object_set (G_OBJECT (chooser->program_button), "visible", thunar_file_is_regular (file), NULL);
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (chooser->program_button), (mode & 0111) != 0);
+  g_signal_handlers_unblock_by_func (G_OBJECT (chooser->program_button), thunar_permissions_chooser_program_toggled, chooser);
+
+  /* release our reference on the new combo store and unblock the combo */
+  g_signal_handlers_unblock_by_func (G_OBJECT (chooser->group_combo), thunar_permissions_chooser_group_changed, chooser);
+  g_object_unref (G_OBJECT (store));
+
+  /* emit notification on "mutable", so all widgets update their sensitivity */
+  g_object_notify (G_OBJECT (chooser), "mutable");
+}
+
+
+
+static void
+thunar_permissions_chooser_group_changed (ThunarPermissionsChooser *chooser,
+                                          GtkWidget                *combo)
+{
+  ThunarVfsGroupId gid;
+  GtkTreeModel    *model;
+  GtkTreeIter      iter;
+
+  g_return_if_fail (THUNAR_IS_PERMISSIONS_CHOOSER (chooser));
+  g_return_if_fail (chooser->group_combo == combo);
+  g_return_if_fail (GTK_IS_COMBO_BOX (combo));
+
+  /* verify that we have a valid file */
+  if (G_UNLIKELY (chooser->file == NULL))
+    return;
+
+  /* determine the tree model from the combo box */
+  model = gtk_combo_box_get_model (GTK_COMBO_BOX (combo));
+
+  /* determine the iterator for the selected item */
+  if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (combo), &iter))
+    {
+      /* determine the group id for the selected item... */
+      gtk_tree_model_get (model, &iter, THUNAR_PERMISSIONS_STORE_COLUMN_GID, &gid, -1);
+
+      /* ...and try to change the group to the new gid */
+      thunar_permissions_chooser_change_group (chooser, gid);
+    }
+}
+
+
+
+static void
+thunar_permissions_chooser_program_toggled (ThunarPermissionsChooser *chooser,
+                                            GtkWidget                *button)
+{
+  ThunarVfsFileMode mode;
+
+  g_return_if_fail (THUNAR_IS_PERMISSIONS_CHOOSER (chooser));
+  g_return_if_fail (chooser->program_button == button);
+  g_return_if_fail (GTK_IS_TOGGLE_BUTTON (button));
+
+  /* verify that we have a valid file */
+  if (G_UNLIKELY (chooser->file == NULL))
+    return;
+
+  /* determine the new mode based on the toggle state */
+  mode = (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button))) ? 0111 : 0000;
+
+  /* apply the new mode (only the executable bits for files) */
+  thunar_permissions_chooser_change_mode (chooser, 0000, 0000, 0111, mode);
+}
+
+
+
+static ThunarVfsInteractiveJobResponse
+thunar_permissions_chooser_job_ask (ThunarPermissionsChooser       *chooser,
+                                    const gchar                    *message,
+                                    ThunarVfsInteractiveJobResponse choices,
+                                    ThunarVfsJob                   *job)
+{
+  const gchar *mnemonic;
+  GtkWidget   *toplevel;
+  GtkWidget   *question;
+  GtkWidget   *hbox;
+  GtkWidget   *image;
+  GtkWidget   *label;
+  GtkWidget   *button;
+  gint         response;
+  gint         n;
+
+  g_return_val_if_fail (THUNAR_IS_PERMISSIONS_CHOOSER (chooser), THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_CANCEL);
+  g_return_val_if_fail (g_utf8_validate (message, -1, NULL), THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_CANCEL);
+  g_return_val_if_fail (THUNAR_VFS_IS_INTERACTIVE_JOB (job), THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_CANCEL);
+  g_return_val_if_fail (chooser->job == job, THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_CANCEL);
+
+  /* be sure to display the progress bar prior to opening the question dialog */
+  gtk_widget_show_now (chooser->job_progress);
+
+  question = g_object_new (GTK_TYPE_DIALOG,
+                           "has-separator", FALSE,
+                           "resizable", FALSE,
+                           "title", _("Question"),
+                           NULL);
+
+  toplevel = gtk_widget_get_toplevel (GTK_WIDGET (chooser));
+  if (G_LIKELY (toplevel != NULL))
+    gtk_window_set_transient_for (GTK_WINDOW (question), GTK_WINDOW (toplevel));
+
+  hbox = g_object_new (GTK_TYPE_HBOX, "border-width", 12, "spacing", 12, NULL);
+  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (question)->vbox), hbox, FALSE, FALSE, 0);
+  gtk_widget_show (hbox);
+
+  image = gtk_image_new_from_stock (GTK_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG);
+  gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
+  gtk_widget_show (image);
+
+  label = g_object_new (GTK_TYPE_LABEL, "label", message, "xalign", 0, "yalign", 0, NULL);
+  gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
+  gtk_widget_show (label);
+
+  /* add the buttons based on the possible choices */
+  for (n = 3; n >= 0; --n)
+    {
+      response = choices & (1 << n);
+      if (response == 0)
+        continue;
+
+      switch (response)
+        {
+        case THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_YES:
+          mnemonic = _("_Yes");
+          break;
+
+        case THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_YES_ALL:
+          mnemonic = _("Yes to _all");
+          break;
+
+        case THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_NO:
+          mnemonic = _("_No");
+          break;
+
+        case THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_CANCEL:
+          mnemonic = _("_Cancel");
+          break;
+
+        default:
+          g_assert_not_reached ();
+          break;
+        }
+
+      button = gtk_button_new_with_mnemonic (mnemonic);
+      GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
+      gtk_dialog_add_action_widget (GTK_DIALOG (question), button, response);
+      gtk_widget_show (button);
+
+      gtk_dialog_set_default_response (GTK_DIALOG (question), response);
+    }
+
+  /* run the question */
+  response = gtk_dialog_run (GTK_DIALOG (question));
+  gtk_widget_destroy (question);
+
+  /* transform the result as required */
+  if (G_UNLIKELY (response <= 0))
+    response = THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_CANCEL;
+
+  return response;
+}
+
+
+
+static void
+thunar_permissions_chooser_job_cancel (ThunarPermissionsChooser *chooser)
+{
+  g_return_if_fail (THUNAR_IS_PERMISSIONS_CHOOSER (chooser));
+
+  /* verify that we have a job to cancel */
+  if (G_UNLIKELY (chooser->job == NULL))
+    return;
+
+  /* cancel the job (if not already done) */
+  thunar_vfs_job_cancel (chooser->job);
+
+  /* disconnect from the job */
+  g_signal_handlers_disconnect_matched (chooser->job, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, chooser);
+  g_object_unref (G_OBJECT (chooser->job));
+  chooser->job = NULL;
+
+  /* hide the progress bar */
+  gtk_widget_hide (chooser->job_progress);
+
+  /* make the remaining widgets sensitive again */
+  gtk_widget_set_sensitive (chooser->table, TRUE);
+}
+
+
+
+static void
+thunar_permissions_chooser_job_error (ThunarPermissionsChooser *chooser,
+                                      GError                   *error,
+                                      ThunarVfsJob             *job)
+{
+  GtkWidget *toplevel;
+  GtkWidget *message;
+  
+  g_return_if_fail (THUNAR_IS_PERMISSIONS_CHOOSER (chooser));
+  g_return_if_fail (error != NULL && error->message != NULL);
+  g_return_if_fail (THUNAR_VFS_IS_INTERACTIVE_JOB (job));
+  g_return_if_fail (chooser->job == job);
+
+  /* be sure to display the progress bar prior to opening the error dialog */
+  gtk_widget_show_now (chooser->job_progress);
+
+  /* determine the toplevel widget for the chooser */
+  toplevel = gtk_widget_get_toplevel (GTK_WIDGET (chooser));
+  if (G_UNLIKELY (toplevel == NULL))
+    return;
+
+  /* popup the error message dialog */
+  message = gtk_message_dialog_new (GTK_WINDOW (toplevel),
+                                    GTK_DIALOG_MODAL
+                                    | GTK_DIALOG_DESTROY_WITH_PARENT,
+                                    GTK_MESSAGE_ERROR,
+                                    GTK_BUTTONS_OK,
+                                    "%s", error->message);
+  gtk_dialog_run (GTK_DIALOG (message));
+  gtk_widget_destroy (message);
+}
+
+
+
+static void
+thunar_permissions_chooser_job_finished (ThunarPermissionsChooser *chooser,
+                                         ThunarVfsJob             *job)
+{
+  g_return_if_fail (THUNAR_IS_PERMISSIONS_CHOOSER (chooser));
+  g_return_if_fail (THUNAR_VFS_IS_INTERACTIVE_JOB (job));
+  g_return_if_fail (chooser->job == job);
+
+  /* we can just use job_cancel(), since the job is already done */
+  thunar_permissions_chooser_job_cancel (chooser);
+}
+
+
+
+static void
+thunar_permissions_chooser_job_percent (ThunarPermissionsChooser *chooser,  
+                                        gdouble                   percent,
+                                        ThunarVfsJob             *job)
+{
+  g_return_if_fail (THUNAR_IS_PERMISSIONS_CHOOSER (chooser));
+  g_return_if_fail (THUNAR_VFS_IS_INTERACTIVE_JOB (job));
+  g_return_if_fail (chooser->job == job);
+
+  gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (chooser->job_progress), percent / 100.0);
+  gtk_widget_show (chooser->job_progress);
+}
+
+
+
+static void
+thunar_permissions_chooser_job_start (ThunarPermissionsChooser *chooser,
+                                      ThunarVfsJob             *job,
+                                      gboolean                  recursive)
+{
+  g_return_if_fail (THUNAR_IS_PERMISSIONS_CHOOSER (chooser));
+  g_return_if_fail (THUNAR_VFS_IS_INTERACTIVE_JOB (job));
+  g_return_if_fail (chooser->job == NULL);
+
+  /* take a reference to the job and connect signals */
+  chooser->job = g_object_ref (G_OBJECT (job));
+  g_signal_connect_swapped (G_OBJECT (job), "ask", G_CALLBACK (thunar_permissions_chooser_job_ask), chooser);
+  g_signal_connect_swapped (G_OBJECT (job), "error", G_CALLBACK (thunar_permissions_chooser_job_error), chooser);
+  g_signal_connect_swapped (G_OBJECT (job), "finished", G_CALLBACK (thunar_permissions_chooser_job_finished), chooser);
+
+  /* don't connect percent for single file operations */
+  if (G_UNLIKELY (recursive))
+    g_signal_connect_swapped (G_OBJECT (job), "percent", G_CALLBACK (thunar_permissions_chooser_job_percent), chooser);
+  
+  /* setup the progress bar */
+  gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (chooser->job_progress), 0.0);
+
+  /* make the majority of widgets insensitive if doing recursively */
+  gtk_widget_set_sensitive (chooser->table, !recursive);
+}
+
+
+
+static gboolean
+thunar_permissions_chooser_row_separator (GtkTreeModel *model,
+                                          GtkTreeIter  *iter,
+                                          gpointer      data)
+{
+  gchar *name;
+
+  /* determine the value of the "name" column */
+  gtk_tree_model_get (model, iter, THUNAR_PERMISSIONS_STORE_COLUMN_NAME, &name, -1);
+  if (G_LIKELY (name != NULL))
+    {
+      g_free (name);
+      return FALSE;
+    }
+
+  return TRUE;
+}
+
+
+
+/**
+ * thunar_permissions_chooser_new:
+ *
+ * Allocates a new #ThunarPermissionsChooser instance.
+ *
+ * Return value: the newly allocated #ThunarPermissionsChooser.
+ **/
+GtkWidget*
+thunar_permissions_chooser_new (void)
+{
+  return g_object_new (THUNAR_TYPE_PERMISSIONS_CHOOSER, NULL);
+}
+
+
+
+/**
+ * thunar_permissions_chooser_get_file:
+ * @chooser : a #ThunarPermissionsChooser.
+ *
+ * Returns the #ThunarFile associated with the specified @chooser.
+ *
+ * Return value: the file associated with @chooser.
+ **/
+ThunarFile*
+thunar_permissions_chooser_get_file (ThunarPermissionsChooser *chooser)
+{
+  g_return_val_if_fail (THUNAR_IS_PERMISSIONS_CHOOSER (chooser), NULL);
+  return chooser->file;
+}
+
+
+
+/**
+ * thunar_permissions_chooser_set_file:
+ * @chooser : a #ThunarPermissionsChooser.
+ * @file    : a #ThunarFile or %NULL.
+ *
+ * Associates @chooser with the specified @file.
+ **/
+void
+thunar_permissions_chooser_set_file (ThunarPermissionsChooser *chooser,
+                                     ThunarFile               *file)
+{
+  g_return_if_fail (THUNAR_IS_PERMISSIONS_CHOOSER (chooser));
+  g_return_if_fail (file == NULL || THUNAR_IS_FILE (file));
+
+  /* check if we already use that file */
+  if (G_UNLIKELY (chooser->file == file))
+    return;
+
+  /* disconnect from the previous file */
+  if (G_LIKELY (chooser->file != NULL))
+    {
+      g_signal_handlers_disconnect_by_func (G_OBJECT (chooser->file), thunar_permissions_chooser_file_changed, chooser);
+      g_object_unref (G_OBJECT (chooser->file));
+    }
+
+  /* activate the new file */
+  chooser->file = file;
+
+  /* connect to the new file */
+  if (G_LIKELY (file != NULL))
+    {
+      /* take a reference on the file */
+      g_object_ref (G_OBJECT (file));
+
+      /* stay informed about changes */
+      g_signal_connect_swapped (G_OBJECT (file), "changed", G_CALLBACK (thunar_permissions_chooser_file_changed), chooser);
+
+      /* update our state */
+      thunar_permissions_chooser_file_changed (chooser, file);
+    }
+
+  /* notify listeners */
+  g_object_notify (G_OBJECT (chooser), "file");
+}
+
+
diff --git a/thunar/thunar-permissions-chooser.h b/thunar/thunar-permissions-chooser.h
new file mode 100644
index 0000000000000000000000000000000000000000..d85a5cf6e3ed6eacc01ccc3ea357211d842d0975
--- /dev/null
+++ b/thunar/thunar-permissions-chooser.h
@@ -0,0 +1,47 @@
+/* $Id$ */
+/*-
+ * Copyright (c) 2005-2006 Benedikt Meurer <benny@xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef __THUNAR_PERMISSIONS_CHOOSER_H__
+#define __THUNAR_PERMISSIONS_CHOOSER_H__
+
+#include <thunar/thunar-file.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarPermissionsChooserClass ThunarPermissionsChooserClass;
+typedef struct _ThunarPermissionsChooser      ThunarPermissionsChooser;
+
+#define THUNAR_TYPE_PERMISSIONS_CHOOSER             (thunar_permissions_chooser_get_type ())
+#define THUNAR_PERMISSIONS_CHOOSER(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_PERMISSIONS_CHOOSER, ThunarPermissionsChooser))
+#define THUNAR_PERMISSIONS_CHOOSER_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_PERMISSIONS_CHOOSER, ThunarPermissionsChooserClass))
+#define THUNAR_IS_PERMISSIONS_CHOOSER(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_PERMISSIONS_CHOOSER))
+#define THUNAR_IS_PERMISSIONS_CHOOSER_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_PERMISSIONS_CHOOSER))
+#define THUNAR_PERMISSIONS_CHOOSER_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_PERMISSIONS_CHOOSER, ThunarPermissionsChooserClass))
+
+GType       thunar_permissions_chooser_get_type (void) G_GNUC_CONST;
+
+GtkWidget  *thunar_permissions_chooser_new      (void) G_GNUC_MALLOC;
+
+ThunarFile *thunar_permissions_chooser_get_file (ThunarPermissionsChooser *chooser);
+void        thunar_permissions_chooser_set_file (ThunarPermissionsChooser *chooser,
+                                                 ThunarFile               *file);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_PERMISSIONS_CHOOSER_H__ */
diff --git a/thunar/thunar-permissions-model.c b/thunar/thunar-permissions-model.c
deleted file mode 100644
index a5f9c91227b0d850eb805928b9c70ba50b23c986..0000000000000000000000000000000000000000
--- a/thunar/thunar-permissions-model.c
+++ /dev/null
@@ -1,968 +0,0 @@
-/* $Id$ */
-/*-
- * Copyright (c) 2005-2006 Benedikt Meurer <benny@xfce.org>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifdef HAVE_MEMORY_H
-#include <memory.h>
-#endif
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-
-#include <thunar/thunar-change-group-dialog.h>
-#include <thunar/thunar-dialogs.h>
-#include <thunar/thunar-permissions-model.h>
-#include <thunar/thunar-stock.h>
-
-
-
-#define INDEX_TO_MODE_MASK(index) ((1 << (3 - ((index) % 4))) << ((2 - (index / 4)) * 3))
-
-
-
-/* Property identifiers */
-enum
-{
-  PROP_0,
-  PROP_FILE,
-  PROP_MUTABLE,
-};
-
-
-
-static void               thunar_permissions_model_class_init       (ThunarPermissionsModelClass  *klass);
-static void               thunar_permissions_model_tree_model_init  (GtkTreeModelIface            *iface);
-static void               thunar_permissions_model_init             (ThunarPermissionsModel       *model);
-static void               thunar_permissions_model_finalize         (GObject                      *object);
-static void               thunar_permissions_model_get_property     (GObject                      *object,
-                                                                     guint                         prop_id,
-                                                                     GValue                       *value,
-                                                                     GParamSpec                   *pspec);
-static void               thunar_permissions_model_set_property     (GObject                      *object,
-                                                                     guint                         prop_id,
-                                                                     const GValue                 *value,
-                                                                     GParamSpec                   *pspec);
-static GtkTreeModelFlags  thunar_permissions_model_get_flags        (GtkTreeModel                 *tree_model);
-static gint               thunar_permissions_model_get_n_columns    (GtkTreeModel                 *tree_model);
-static GType              thunar_permissions_model_get_column_type  (GtkTreeModel                 *tree_model,
-                                                                     gint                          column);
-static gboolean           thunar_permissions_model_get_iter         (GtkTreeModel                 *tree_model,
-                                                                     GtkTreeIter                  *iter,
-                                                                     GtkTreePath                  *path);
-static GtkTreePath       *thunar_permissions_model_get_path         (GtkTreeModel                 *tree_model,
-                                                                     GtkTreeIter                  *iter);
-static void               thunar_permissions_model_get_value        (GtkTreeModel                 *tree_model,
-                                                                     GtkTreeIter                  *iter,
-                                                                     gint                          column,
-                                                                     GValue                       *value);
-static gboolean           thunar_permissions_model_iter_next        (GtkTreeModel                 *tree_model,
-                                                                     GtkTreeIter                  *iter);
-static gboolean           thunar_permissions_model_iter_children    (GtkTreeModel                 *tree_model,
-                                                                     GtkTreeIter                  *iter,
-                                                                     GtkTreeIter                  *parent);
-static gboolean           thunar_permissions_model_iter_has_child   (GtkTreeModel                 *tree_model,
-                                                                     GtkTreeIter                  *iter);
-static gint               thunar_permissions_model_iter_n_children  (GtkTreeModel                 *tree_model,
-                                                                     GtkTreeIter                  *iter);
-static gboolean           thunar_permissions_model_iter_nth_child   (GtkTreeModel                 *tree_model,
-                                                                     GtkTreeIter                  *iter,
-                                                                     GtkTreeIter                  *parent,
-                                                                     gint                          n);
-static gboolean           thunar_permissions_model_iter_parent      (GtkTreeModel                 *tree_model,
-                                                                     GtkTreeIter                  *iter,
-                                                                     GtkTreeIter                  *child);
-static void               thunar_permissions_model_file_changed     (ThunarFile                   *file,
-                                                                     ThunarPermissionsModel       *model);
-
-
-
-struct _ThunarPermissionsModelClass
-{
-  GObjectClass __parent__;
-};
-
-struct _ThunarPermissionsModel
-{
-  GObject __parent__;
-
-  gint        stamp;
-  ThunarFile *file;
-};
-
-
-
-static const gchar *THUNAR_PERMISSIONS_STOCK_IDS[] =
-{
-  THUNAR_STOCK_PERMISSIONS_USER,
-  THUNAR_STOCK_PERMISSIONS_GROUP,
-  THUNAR_STOCK_PERMISSIONS_OTHER,
-};
-
-
-
-static GObjectClass *thunar_permissions_model_parent_class;
-
-
-
-GType
-thunar_permissions_model_get_type (void)
-{
-  static GType type = G_TYPE_INVALID;
-
-  if (G_UNLIKELY (type == G_TYPE_INVALID))
-    {
-      static const GTypeInfo info =
-      {
-        sizeof (ThunarPermissionsModelClass),
-        NULL,
-        NULL,
-        (GClassInitFunc) thunar_permissions_model_class_init,
-        NULL,
-        NULL,
-        sizeof (ThunarPermissionsModel),
-        0,
-        (GInstanceInitFunc) thunar_permissions_model_init,
-        NULL,
-      };
-
-      static const GInterfaceInfo tree_model_info =
-      {
-        (GInterfaceInitFunc) thunar_permissions_model_tree_model_init,
-        NULL,
-        NULL,
-      };
-
-      type = g_type_register_static (G_TYPE_OBJECT, I_("ThunarPermissionsModel"), &info, 0);
-      g_type_add_interface_static (type, GTK_TYPE_TREE_MODEL, &tree_model_info);
-    }
-
-  return type;
-}
-
-
-
-static void
-thunar_permissions_model_class_init (ThunarPermissionsModelClass *klass)
-{
-  GObjectClass *gobject_class;
-
-  /* determine the parent type class */
-  thunar_permissions_model_parent_class = g_type_class_peek_parent (klass);
-
-  gobject_class = G_OBJECT_CLASS (klass);
-  gobject_class->finalize = thunar_permissions_model_finalize;
-  gobject_class->get_property = thunar_permissions_model_get_property;
-  gobject_class->set_property = thunar_permissions_model_set_property;
-
-  /**
-   * ThunarPermissionsModel:file:
-   *
-   * The #ThunarFile whose permissions are managed by this model.
-   **/
-  g_object_class_install_property (gobject_class,
-                                   PROP_FILE,
-                                   g_param_spec_object ("file", "file", "file",
-                                                        THUNAR_TYPE_FILE,
-                                                        EXO_PARAM_READWRITE));
-
-  /**
-   * ThunarPermissionsModel:mutable.
-   *
-   * Whether the mode of the #ThunarFile whose permissions are managed
-   * by this model can be changed.
-   **/
-  g_object_class_install_property (gobject_class,
-                                   PROP_MUTABLE,
-                                   g_param_spec_boolean ("mutable",
-                                                         "mutable",
-                                                         "mutable",
-                                                         FALSE,
-                                                         EXO_PARAM_READABLE));
-}
-
-
-
-static void
-thunar_permissions_model_tree_model_init (GtkTreeModelIface *iface)
-{
-  iface->get_flags        = thunar_permissions_model_get_flags;
-  iface->get_n_columns    = thunar_permissions_model_get_n_columns;
-  iface->get_column_type  = thunar_permissions_model_get_column_type;
-  iface->get_iter         = thunar_permissions_model_get_iter;
-  iface->get_path         = thunar_permissions_model_get_path;
-  iface->get_value        = thunar_permissions_model_get_value;
-  iface->iter_next        = thunar_permissions_model_iter_next;
-  iface->iter_children    = thunar_permissions_model_iter_children;
-  iface->iter_has_child   = thunar_permissions_model_iter_has_child;
-  iface->iter_n_children  = thunar_permissions_model_iter_n_children;
-  iface->iter_nth_child   = thunar_permissions_model_iter_nth_child;
-  iface->iter_parent      = thunar_permissions_model_iter_parent;
-}
-
-
-
-static void
-thunar_permissions_model_init (ThunarPermissionsModel *model)
-{
-  model->stamp = g_random_int ();
-}
-
-
-
-static void
-thunar_permissions_model_finalize (GObject *object)
-{
-  ThunarPermissionsModel *model = THUNAR_PERMISSIONS_MODEL (object);
-  thunar_permissions_model_set_file (model, NULL);
-  (*G_OBJECT_CLASS (thunar_permissions_model_parent_class)->finalize) (object);
-}
-
-
-
-static void
-thunar_permissions_model_get_property (GObject    *object,
-                                       guint       prop_id,
-                                       GValue     *value,
-                                       GParamSpec *pspec)
-{
-  ThunarPermissionsModel *model = THUNAR_PERMISSIONS_MODEL (object);
-
-  switch (prop_id)
-    {
-    case PROP_FILE:
-      g_value_set_object (value, thunar_permissions_model_get_file (model));
-      break;
-
-    case PROP_MUTABLE:
-      g_value_set_boolean (value, thunar_permissions_model_is_mutable (model));
-      break;
-
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
-}
-
-
-
-static void
-thunar_permissions_model_set_property (GObject      *object,
-                                       guint         prop_id,
-                                       const GValue *value,
-                                       GParamSpec   *pspec)
-{
-  ThunarPermissionsModel *model = THUNAR_PERMISSIONS_MODEL (object);
-
-  switch (prop_id)
-    {
-    case PROP_FILE:
-      thunar_permissions_model_set_file (model, g_value_get_object (value));
-      break;
-
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
-}
-
-
-
-static GtkTreeModelFlags
-thunar_permissions_model_get_flags (GtkTreeModel *tree_model)
-{
-  return GTK_TREE_MODEL_ITERS_PERSIST;
-}
-
-
-
-static gint
-thunar_permissions_model_get_n_columns (GtkTreeModel *tree_model)
-{
-  return THUNAR_PERMISSIONS_MODEL_N_COLUMNS;
-}
-
-
-
-static GType
-thunar_permissions_model_get_column_type (GtkTreeModel *tree_model,
-                                          gint          column)
-{
-  switch (column)
-    {
-    case THUNAR_PERMISSIONS_MODEL_COLUMN_TITLE:
-      return G_TYPE_STRING;
-
-    case THUNAR_PERMISSIONS_MODEL_COLUMN_ICON:
-      return G_TYPE_STRING;
-
-    case THUNAR_PERMISSIONS_MODEL_COLUMN_ICON_VISIBLE:
-      return G_TYPE_BOOLEAN;
-
-    case THUNAR_PERMISSIONS_MODEL_COLUMN_STATE:
-      return G_TYPE_BOOLEAN;
-
-    case THUNAR_PERMISSIONS_MODEL_COLUMN_STATE_VISIBLE:
-      return G_TYPE_BOOLEAN;
-
-    case THUNAR_PERMISSIONS_MODEL_COLUMN_MUTABLE:
-      return G_TYPE_BOOLEAN;
-
-    default:
-      g_assert_not_reached ();
-      return G_TYPE_INVALID;
-    }
-}
-
-
-
-static gboolean
-thunar_permissions_model_get_iter (GtkTreeModel *tree_model,
-                                   GtkTreeIter  *iter,
-                                   GtkTreePath  *path)
-{
-  ThunarPermissionsModel *model = THUNAR_PERMISSIONS_MODEL (tree_model);
-  guint                   index;
-  gint                   *indices;
-
-  g_return_val_if_fail (THUNAR_IS_PERMISSIONS_MODEL (model), FALSE);
-  g_return_val_if_fail (gtk_tree_path_get_depth (path) > 0, FALSE);
-
-  /* determine the tree path indices */
-  indices = gtk_tree_path_get_indices (path);
-
-  /* determine the base index */
-  if (indices[0] < 0 || indices[0] > 2)
-    return FALSE;
-  index = indices[0] * 4;
-
-  /* determine the sub index */
-  if (gtk_tree_path_get_depth (path) > 1)
-    {
-      if (indices[1] < 0 || indices[1] > 2)
-        return FALSE;
-      index += (indices[1] + 1);
-    }
-
-  /* setup the tree iter */
-  iter->stamp = model->stamp;
-  iter->user_data = GUINT_TO_POINTER (index);
-
-  return TRUE;
-}
-
-
-
-static GtkTreePath*
-thunar_permissions_model_get_path (GtkTreeModel *tree_model,
-                                   GtkTreeIter  *iter)
-{
-  ThunarPermissionsModel *model = THUNAR_PERMISSIONS_MODEL (tree_model);
-  GtkTreePath            *path;
-  guint                   index;
-
-  g_return_val_if_fail (THUNAR_IS_PERMISSIONS_MODEL (model), NULL);
-  g_return_val_if_fail (iter->stamp == model->stamp, NULL);
-
-  index = GPOINTER_TO_UINT (iter->user_data);
-  if (G_UNLIKELY (index >= 3 * 4))
-    return NULL;
-
-  path = gtk_tree_path_new ();
-  gtk_tree_path_append_index (path, index / 4);
-  if ((index % 4) != 0)
-    gtk_tree_path_append_index (path, (index % 4) - 1);
-
-  return path;
-}
-
-
-
-static void
-thunar_permissions_model_get_value (GtkTreeModel *tree_model,
-                                    GtkTreeIter  *iter,
-                                    gint          column,
-                                    GValue       *value)
-{
-  ThunarPermissionsModel *model = THUNAR_PERMISSIONS_MODEL (tree_model);
-  ThunarVfsGroup         *group;
-  ThunarVfsUser          *user;
-  const gchar            *real_name;
-  const gchar            *user_name;
-  guint                   index;
-
-  g_return_if_fail (THUNAR_IS_PERMISSIONS_MODEL (model));
-
-  /* initialize the value with the proper type */
-  g_value_init (value, gtk_tree_model_get_column_type (tree_model, column));
-
-  /* verify that we have a valid file */
-  if (G_UNLIKELY (model->file == NULL))
-    return;
-
-  /* verify that the index is valid */
-  index = GPOINTER_TO_UINT (iter->user_data);
-  if (index >= 3 * 4)
-    return;
-
-  switch (column)
-    {
-    case THUNAR_PERMISSIONS_MODEL_COLUMN_TITLE:
-      if ((index % 4) == 0)
-        {
-          switch (index / 4)
-            {
-            case 0:
-              user = thunar_file_get_user (model->file);
-              if (G_LIKELY (user != NULL))
-                {
-                  user_name = thunar_vfs_user_get_name (user);
-                  real_name = thunar_vfs_user_get_real_name (user);
-                  if (G_LIKELY (strcmp (user_name, real_name) != 0))
-                    g_value_take_string (value, g_strdup_printf (_("%s (%s)"), real_name, user_name));
-                  else
-                    g_value_set_string (value, user_name);
-                  g_object_unref (G_OBJECT (user));
-                }
-              else
-                {
-                  g_value_set_static_string (value, _("Unknown file owner"));
-                }
-              break;
-
-            case 1:
-              group = thunar_file_get_group (model->file);
-              if (G_LIKELY (group != NULL))
-                {
-                  g_value_set_string (value, thunar_vfs_group_get_name (group));
-                  g_object_unref (G_OBJECT (group));
-                }
-              else
-                {
-                  g_value_set_static_string (value, _("Unknown file group"));
-                }
-              break;
-
-            case 2:
-              g_value_set_static_string (value, _("All other users"));
-              break;
-            }
-        }
-      else
-        {
-          switch ((index % 4) - 1)
-            {
-            case 0:
-              g_value_set_static_string (value, _("Read"));
-              break;
-
-            case 1:
-              g_value_set_static_string (value, _("Write"));
-              break;
-
-            case 2:
-              g_value_set_static_string (value, thunar_file_is_directory (model->file) ? _("List folder contents") : _("Execute"));
-              break;
-            }
-        }
-      break;
-
-    case THUNAR_PERMISSIONS_MODEL_COLUMN_ICON:
-      g_value_set_static_string (value, THUNAR_PERMISSIONS_STOCK_IDS[index / 4]);
-      break;
-
-    case THUNAR_PERMISSIONS_MODEL_COLUMN_ICON_VISIBLE:
-      g_value_set_boolean (value, (index % 4) == 0);
-      break;
-
-    case THUNAR_PERMISSIONS_MODEL_COLUMN_STATE:
-      g_value_set_boolean (value, thunar_file_get_mode (model->file) & INDEX_TO_MODE_MASK (index));
-      break;
-
-    case THUNAR_PERMISSIONS_MODEL_COLUMN_STATE_VISIBLE:
-      g_value_set_boolean (value, (index % 4) != 0);
-      break;
-
-    case THUNAR_PERMISSIONS_MODEL_COLUMN_MUTABLE:
-      g_value_set_boolean (value, thunar_file_is_chmodable (model->file));
-      break;
-
-    default:
-      g_assert_not_reached ();
-      break;
-    }
-}
-
-
-
-static gboolean
-thunar_permissions_model_iter_next (GtkTreeModel *tree_model,
-                                    GtkTreeIter  *iter)
-{
-  ThunarPermissionsModel *model = THUNAR_PERMISSIONS_MODEL (tree_model);
-  guint                   index = GPOINTER_TO_UINT (iter->user_data);
-
-  g_return_val_if_fail (THUNAR_IS_PERMISSIONS_MODEL (model), FALSE);
-  g_return_val_if_fail (iter->stamp == model->stamp, FALSE);
-
-  if (index == 0 || index == 4)
-    index += 4;
-  else if (((index % 4) == 1 || (index % 4) == 2) && index < 3 * 4)
-    index += 1;
-  else
-    return FALSE;
-
-  iter->user_data = GUINT_TO_POINTER (index);
-
-  return TRUE;
-}
-
-
-
-static gboolean
-thunar_permissions_model_iter_children (GtkTreeModel *tree_model,
-                                        GtkTreeIter  *iter,
-                                        GtkTreeIter  *parent)
-{
-  ThunarPermissionsModel *model = THUNAR_PERMISSIONS_MODEL (tree_model);
-  guint                   index = GPOINTER_TO_UINT (parent->user_data);
-
-  g_return_val_if_fail (THUNAR_IS_PERMISSIONS_MODEL (model), FALSE);
-  g_return_val_if_fail (parent->stamp == model->stamp, FALSE);
-
-  if ((index % 4) == 0 && index < 3 * 4)
-    {
-      iter->stamp = model->stamp;
-      iter->user_data = GUINT_TO_POINTER (index + 1);
-      return TRUE;
-    }
-
-  return FALSE;
-}
-
-
-
-static gboolean
-thunar_permissions_model_iter_has_child (GtkTreeModel *tree_model,
-                                         GtkTreeIter  *iter)
-{
-  return (gtk_tree_model_iter_n_children (tree_model, iter) > 0);
-}
-
-
-
-static gint
-thunar_permissions_model_iter_n_children (GtkTreeModel *tree_model,
-                                          GtkTreeIter  *iter)
-{
-  ThunarPermissionsModel *model = THUNAR_PERMISSIONS_MODEL (tree_model);
-
-  g_return_val_if_fail (THUNAR_IS_PERMISSIONS_MODEL (model), 0);
-  g_return_val_if_fail (iter == NULL || iter->stamp == model->stamp, 0);
-
-  if (iter == NULL || (GPOINTER_TO_UINT (iter->user_data) % 4) == 0)
-    return 3;
-
-  return 0;
-}
-
-
-
-static gboolean
-thunar_permissions_model_iter_nth_child (GtkTreeModel *tree_model,
-                                         GtkTreeIter  *iter,
-                                         GtkTreeIter  *parent,
-                                         gint          n)
-{
-  ThunarPermissionsModel *model = THUNAR_PERMISSIONS_MODEL (tree_model);
-  guint                   index;
-
-  g_return_val_if_fail (THUNAR_IS_PERMISSIONS_MODEL (model), FALSE);
-  g_return_val_if_fail (parent == NULL || parent->stamp == model->stamp, FALSE);
-
-  if (G_LIKELY (n >= 0 && n < 3))
-    {
-      if (parent == NULL)
-        {
-          iter->stamp = model->stamp;
-          iter->user_data = GUINT_TO_POINTER (n * 4);
-          return TRUE;
-        }
-      else
-        {
-          index = GPOINTER_TO_UINT (parent->user_data);
-          if (index == 0 || index == 4 || index == 8)
-            {
-              iter->stamp = model->stamp;
-              iter->user_data = GUINT_TO_POINTER (index + n + 1);
-              return TRUE;
-            }
-        }
-    }
-
-  return FALSE;
-}
-
-
-
-static gboolean
-thunar_permissions_model_iter_parent (GtkTreeModel *tree_model,
-                                      GtkTreeIter  *iter,
-                                      GtkTreeIter  *child)
-{
-  ThunarPermissionsModel *model = THUNAR_PERMISSIONS_MODEL (tree_model);
-  guint                   index = GPOINTER_TO_UINT (child->user_data);
-
-  g_return_val_if_fail (THUNAR_IS_PERMISSIONS_MODEL (model), FALSE);
-  g_return_val_if_fail (child->stamp == model->stamp, FALSE);
-
-  if (index < 3 * 4 && (index % 4) != 0)
-    {
-      iter->stamp = model->stamp;
-      iter->user_data = GUINT_TO_POINTER ((index / 4) * 4);
-      return TRUE;
-    }
-
-  return FALSE;
-}
-
-
-
-static void
-thunar_permissions_model_file_changed (ThunarFile             *file,
-                                       ThunarPermissionsModel *model)
-{
-  GtkTreePath *path;
-  GtkTreeIter  iter;
-  gint         index;
-
-  g_return_if_fail (THUNAR_IS_PERMISSIONS_MODEL (model));
-  g_return_if_fail (THUNAR_IS_FILE (file));
-  g_return_if_fail (file == model->file);
-
-  /* emit "row-changed" for all (virtual) tree items */
-  for (index = 0; index < 3 * 4; ++index)
-    {
-      /* setup the tree iter */
-      iter.stamp = model->stamp;
-      iter.user_data = GINT_TO_POINTER (index);
-
-      /* notify the view */
-      path = gtk_tree_model_get_path (GTK_TREE_MODEL (model), &iter);
-      gtk_tree_model_row_changed (GTK_TREE_MODEL (model), path, &iter);
-      gtk_tree_path_free (path);
-    }
-
-  /* notify listeners of "mutable" */
-  g_object_notify (G_OBJECT (model), "mutable");
-}
-
-
-
-/**
- * thunar_permissions_model_new:
- *
- * Allocates a new #ThunarPermissionsModel.
- *
- * Return value: the newly allocated #ThunarPermissionsModel.
- **/
-GtkTreeModel*
-thunar_permissions_model_new (void)
-{
-  return g_object_new (THUNAR_TYPE_PERMISSIONS_MODEL, NULL);
-}
-
-
-
-/**
- * thunar_permissions_model_get_file:
- * @model : a #ThunarPermissionsModel instance.
- *
- * Returns the #ThunarFile associated with the @model.
- *
- * Return value: the #ThunarFile associated with @model.
- **/
-ThunarFile*
-thunar_permissions_model_get_file (ThunarPermissionsModel *model)
-{
-  g_return_val_if_fail (THUNAR_IS_PERMISSIONS_MODEL (model), NULL);
-  return model->file;
-}
-
-
-
-/**
- * thunar_permissions_model_set_file:
- * @model : a #ThunarPermissionsModel instance.
- * @file  : a #ThunarFile instance or %NULL.
- *
- * Associates the @model with the specified @file.
- **/
-void
-thunar_permissions_model_set_file (ThunarPermissionsModel *model,
-                                   ThunarFile             *file)
-{
-  g_return_if_fail (THUNAR_IS_PERMISSIONS_MODEL (model));
-  g_return_if_fail (file == NULL || THUNAR_IS_FILE (file));
-
-  /* check if we have a new file here */
-  if (G_UNLIKELY (model->file == file))
-    return;
-
-  /* disconnect from the previous file */
-  if (G_LIKELY (model->file != NULL))
-    {
-      g_signal_handlers_disconnect_by_func (G_OBJECT (model->file), thunar_permissions_model_file_changed, model);
-      g_object_unref (G_OBJECT (model->file));
-    }
-
-  /* activate the new file */
-  model->file = file;
-
-  /* connect to the new file */
-  if (G_LIKELY (file != NULL))
-    {
-      g_object_ref (G_OBJECT (file));
-      g_signal_connect (G_OBJECT (file), "changed", G_CALLBACK (thunar_permissions_model_file_changed), model);
-      thunar_permissions_model_file_changed (file, model);
-    }
-
-  /* notify listeners */
-  g_object_freeze_notify (G_OBJECT (model));
-  g_object_notify (G_OBJECT (model), "file");
-  g_object_notify (G_OBJECT (model), "mutable");
-  g_object_thaw_notify (G_OBJECT (model));
-}
-
-
-
-/**
- * thunar_permissions_model_is_mutable:
- * @model : a #ThunarPermissionsModel instance.
- *
- * Returns %TRUE if the @model is mutable, that is, if the mode of the
- * #ThunarFile associated with the @model can be changed.
- *
- * Return value: %TRUE if @model is mutable.
- **/
-gboolean
-thunar_permissions_model_is_mutable (ThunarPermissionsModel *model)
-{
-  g_return_val_if_fail (THUNAR_IS_PERMISSIONS_MODEL (model), FALSE);
-  return (model->file != NULL && thunar_file_is_chmodable (model->file));
-}
-
-
-
-static void
-change_group_activated (GtkAction  *action,
-                        ThunarFile *file)
-{
-  GtkWidget *toplevel;
-  GtkWidget *widget;
-  GtkWidget *dialog;
-
-  g_return_if_fail (GTK_IS_ACTION (action));
-  g_return_if_fail (THUNAR_IS_FILE (file));
-
-  /* determine the widget associated with the action */
-  widget = g_object_get_data (G_OBJECT (action), "gtk-widget");
-  if (G_UNLIKELY (widget == NULL))
-    return;
-
-  /* determine the toplevel item for the given widget */
-  toplevel = gtk_widget_get_toplevel (widget);
-  if (G_UNLIKELY (toplevel == NULL))
-    return;
-
-  /* popup the "Change Group" dialog */
-  dialog = thunar_change_group_dialog_new ();
-  gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (toplevel));
-  thunar_change_group_dialog_set_file (THUNAR_CHANGE_GROUP_DIALOG (dialog), file);
-  gtk_widget_show (dialog);
-}
-
-
-
-static void
-grant_or_deny_activated (GtkAction              *action,
-                         ThunarPermissionsModel *model)
-{
-  GtkTreeIter *iter;
-  GtkWidget   *widget;
-  GError      *error = NULL;
-
-  g_return_if_fail (GTK_IS_ACTION (action));
-  g_return_if_fail (THUNAR_IS_PERMISSIONS_MODEL (model));
-
-  /* determine the tree iterator associated with the action */
-  iter = g_object_get_data (G_OBJECT (action), "gtk-tree-iter");
-  if (G_UNLIKELY (iter == NULL))
-    return;
-
-  /* determine the widget associated with the action */
-  widget = g_object_get_data (G_OBJECT (action), "gtk-widget");
-  if (G_UNLIKELY (widget == NULL))
-    return;
-
-  /* try to toggle the item */
-  if (!thunar_permissions_model_toggle (model, iter, &error))
-    {
-      /* display an error to the user (when we get here, we definitely have a valid file!) */
-      thunar_dialogs_show_error (widget, error, _("Failed to change permissions of `%s'"), thunar_file_get_display_name (model->file));
-
-      /* release the error */
-      g_error_free (error);
-    }
-}
-
-
-
-/**
- * thunar_permissions_model_get_actions:
- * @model  : a #ThunarPermissionsModel instance.
- * @widget : the #GtkWidget on which the actions will be invoked.
- * @iter   : a valid #GtkTreeIter within @model.
- *
- * Returns the list of #GtkAction<!---->s that can be performed on the
- * item referred to by @iter in @model.
- *
- * The caller is responsible to free the returned list using:
- * <informalexample><programlisting>
- * g_list_foreach (list, (GFunc) g_object_unref, NULL);
- * g_list_free (list);
- * </programlisting></informalexample>
- *
- * Return value: the list of #GtkAction<!---->s that can be performed on
- *               @iter in @model.
- **/
-GList*
-thunar_permissions_model_get_actions (ThunarPermissionsModel *model,
-                                      GtkWidget              *widget,
-                                      GtkTreeIter            *iter)
-{
-  ThunarVfsFileMode mode;
-  GtkAction        *action;
-  GList            *actions = NULL;
-  gint              index;
-
-  g_return_val_if_fail (THUNAR_IS_PERMISSIONS_MODEL (model), NULL);
-  g_return_val_if_fail (iter->stamp == model->stamp, NULL);
-  g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
-
-  /* verify that we have a valid file */
-  if (G_UNLIKELY (model->file == NULL))
-    return NULL;
-
-  /* determine the index for the iterator */
-  index = GPOINTER_TO_UINT (iter->user_data);
-  if (G_UNLIKELY (index >= 3 * 4))
-    return NULL;
-
-  /* add appropriate actions depending on the index */
-  if (G_UNLIKELY (index == 4))
-    {
-      /* actions for the group item */
-      action = gtk_action_new ("thunar-permissions-model-change-group", _("Change _Group..."), NULL, THUNAR_STOCK_PERMISSIONS_GROUP);
-      g_object_set_data_full (G_OBJECT (action), I_("gtk-widget"), g_object_ref (G_OBJECT (widget)), g_object_unref);
-      gtk_action_set_sensitive (action, thunar_file_is_chgrpable (model->file));
-      g_signal_connect_data (G_OBJECT (action), "activate", G_CALLBACK (change_group_activated),
-                             g_object_ref (G_OBJECT (model->file)), (GClosureNotify) g_object_unref, 0);
-      actions = g_list_append (actions, action);
-    }
-  else if ((index % 4) != 0)
-    {
-      /* determine the file's mode */
-      mode = thunar_file_get_mode (model->file);
-
-      /* append the "Grant Permission" action */
-      action = gtk_action_new ("thunar-permissions-model-grant-permission", _("_Grant Permission"), NULL, GTK_STOCK_YES);
-      g_object_set_data_full (G_OBJECT (action), I_("gtk-tree-iter"), gtk_tree_iter_copy (iter), (GDestroyNotify) gtk_tree_iter_free);
-      g_object_set_data_full (G_OBJECT (action), I_("gtk-widget"), g_object_ref (G_OBJECT (widget)), g_object_unref);
-      gtk_action_set_sensitive (action, thunar_permissions_model_is_mutable (model) && (mode & INDEX_TO_MODE_MASK (index)) == 0);
-      g_signal_connect_data (G_OBJECT (action), "activate", G_CALLBACK (grant_or_deny_activated),
-                             g_object_ref (G_OBJECT (model)), (GClosureNotify) g_object_unref, 0);
-      actions = g_list_append (actions, action);
-
-      /* append the "Deny Permission" action */
-      action = gtk_action_new ("thunar-permissions-model-deny-permission", _("_Deny Permission"), NULL, GTK_STOCK_NO);
-      g_object_set_data_full (G_OBJECT (action), I_("gtk-tree-iter"), gtk_tree_iter_copy (iter), (GDestroyNotify) gtk_tree_iter_free);
-      g_object_set_data_full (G_OBJECT (action), I_("gtk-widget"), g_object_ref (G_OBJECT (widget)), g_object_unref);
-      gtk_action_set_sensitive (action, thunar_permissions_model_is_mutable (model) && (mode & INDEX_TO_MODE_MASK (index)) != 0);
-      g_signal_connect_data (G_OBJECT (action), "activate", G_CALLBACK (grant_or_deny_activated),
-                             g_object_ref (G_OBJECT (model)), (GClosureNotify) g_object_unref, 0);
-      actions = g_list_append (actions, action);
-    }
-
-  return actions;
-}
-
-
-
-/**
- * thunar_permissions_model_toggle:
- * @model : a #ThunarPermissionsModel instance.
- * @iter  : a valid #GtkTreeIter for @model.
- * @error : return location for errors or %NULL.
- *
- * Toggles the permission flag identified by @iter for the
- * #ThunarFile associated with @model.
- *
- * Return value: %TRUE if the permission flag identified by
- *               @iter was successfully toggled.
- **/
-gboolean
-thunar_permissions_model_toggle (ThunarPermissionsModel *model,
-                                 GtkTreeIter            *iter,
-                                 GError                **error)
-{
-  guint index;
-  guint mask;
-  guint mode;
-
-  g_return_val_if_fail (THUNAR_IS_PERMISSIONS_MODEL (model), FALSE);
-  g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
-  g_return_val_if_fail (iter->stamp == model->stamp, FALSE);
-
-  /* determine the index for the iter */
-  index = GPOINTER_TO_UINT (iter->user_data);
-
-  /* check if we're associated with a file and have a valid index */
-  if (G_LIKELY (model->file != NULL && (index % 4) != 0))
-    {
-      /* determine the mode and the mode mask */
-      mask = INDEX_TO_MODE_MASK (index);
-      mode = thunar_file_get_mode (model->file);
-
-      /* toggle the bit set in the mode mask */
-      if ((mode & mask) != 0)
-        mode &= ~mask;
-      else
-        mode |= mask;
-
-      /* perform the change mode operation */
-      return thunar_file_chmod (model->file, mode, error);
-    }
-
-  return TRUE;
-}
-
-
diff --git a/thunar/thunar-permissions-model.h b/thunar/thunar-permissions-model.h
deleted file mode 100644
index 1d1628baeb78335e13c8d1cd44fc6cb50a55616c..0000000000000000000000000000000000000000
--- a/thunar/thunar-permissions-model.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* $Id$ */
-/*-
- * Copyright (c) 2005-2006 Benedikt Meurer <benny@xfce.org>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef __THUNAR_PERMISSIONS_MODEL_H__
-#define __THUNAR_PERMISSIONS_MODEL_H__
-
-#include <thunar/thunar-file.h>
-
-G_BEGIN_DECLS;
-
-typedef struct _ThunarPermissionsModelClass ThunarPermissionsModelClass;
-typedef struct _ThunarPermissionsModel      ThunarPermissionsModel;
-
-#define THUNAR_TYPE_PERMISSIONS_MODEL             (thunar_permissions_model_get_type ())
-#define THUNAR_PERMISSIONS_MODEL(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_PERMISSIONS_MODEL, ThunarPermissionsModel))
-#define THUNAR_PERMISSIONS_MODEL_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_PERMISSIONS_MODEL, ThunarPermissionsModelClass))
-#define THUNAR_IS_PERMISSIONS_MODEL(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_PERMISSIONS_MODEL))
-#define THUNAR_IS_PERMISSIONS_MODEL_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_PERMISSIONS_MODEL))
-#define THUNAR_PERMISSIONS_MODEL_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_PERMISSIONS_MODEL, ThunarPermissionsModelClass))
-
-/**
- * ThunarPermissionsModelColumn:
- *
- * Columns provided by the #ThunarPermissionsModel class.
- **/
-typedef enum
-{
-  THUNAR_PERMISSIONS_MODEL_COLUMN_TITLE,
-  THUNAR_PERMISSIONS_MODEL_COLUMN_ICON,
-  THUNAR_PERMISSIONS_MODEL_COLUMN_ICON_VISIBLE,
-  THUNAR_PERMISSIONS_MODEL_COLUMN_STATE,
-  THUNAR_PERMISSIONS_MODEL_COLUMN_STATE_VISIBLE,
-  THUNAR_PERMISSIONS_MODEL_COLUMN_MUTABLE,
-  THUNAR_PERMISSIONS_MODEL_N_COLUMNS,
-} ThunarPermissionsModelColumn;
-
-GType         thunar_permissions_model_get_type     (void) G_GNUC_CONST;
-
-GtkTreeModel *thunar_permissions_model_new          (void) G_GNUC_MALLOC;
-
-ThunarFile   *thunar_permissions_model_get_file     (ThunarPermissionsModel *model);
-void          thunar_permissions_model_set_file     (ThunarPermissionsModel *model,
-                                                     ThunarFile             *file);
-
-gboolean      thunar_permissions_model_is_mutable   (ThunarPermissionsModel *model);
-
-GList        *thunar_permissions_model_get_actions  (ThunarPermissionsModel *model,
-                                                     GtkWidget              *widget,
-                                                     GtkTreeIter            *iter) G_GNUC_MALLOC;
-
-gboolean      thunar_permissions_model_toggle       (ThunarPermissionsModel *model,
-                                                     GtkTreeIter            *iter,
-                                                     GError                **error);
-
-G_END_DECLS;
-
-#endif /* !__THUNAR_PERMISSIONS_MODEL_H__ */
diff --git a/thunar/thunar-permissions-view.c b/thunar/thunar-permissions-view.c
deleted file mode 100644
index dcb2e0ddfd682a763df33d2b6fa6148a76f17056..0000000000000000000000000000000000000000
--- a/thunar/thunar-permissions-view.c
+++ /dev/null
@@ -1,572 +0,0 @@
-/* $Id$ */
-/*-
- * Copyright (c) 2005-2006 Benedikt Meurer <benny@xfce.org>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <thunar/thunar-advanced-permissions-dialog.h>
-#include <thunar/thunar-dialogs.h>
-#include <thunar/thunar-pango-extensions.h>
-#include <thunar/thunar-permissions-model.h>
-#include <thunar/thunar-permissions-view.h>
-
-
-
-/* Property identifiers */
-enum
-{
-  PROP_0,
-  PROP_FILE,
-};
-
-
-
-static void     thunar_permissions_view_class_init          (ThunarPermissionsViewClass *klass);
-static void     thunar_permissions_view_init                (ThunarPermissionsView      *view);
-static void     thunar_permissions_view_finalize            (GObject                    *object);
-static void     thunar_permissions_view_get_property        (GObject                    *object,
-                                                             guint                       prop_id,
-                                                             GValue                     *value,
-                                                             GParamSpec                 *pspec);
-static void     thunar_permissions_view_set_property        (GObject                    *object,
-                                                             guint                       prop_id,
-                                                             const GValue               *value,
-                                                             GParamSpec                 *pspec);
-static gboolean thunar_permissions_view_context_menu        (ThunarPermissionsView      *view,
-                                                             GtkTreeIter                *iter,
-                                                             guint                       button,
-                                                             guint32                     time);
-static void     thunar_permissions_view_advanced_clicked    (GtkWidget                  *button,
-                                                             ThunarPermissionsView      *view);
-static gboolean thunar_permissions_view_button_press_event  (GtkWidget                  *tree_view,
-                                                             GdkEventButton             *event,
-                                                             ThunarPermissionsView      *view);
-static gboolean thunar_permissions_view_popup_menu          (GtkWidget                  *tree_view,
-                                                             ThunarPermissionsView      *view);
-static void     thunar_permissions_view_row_activated       (GtkWidget                  *tree_view,
-                                                             GtkTreePath                *path,
-                                                             GtkTreeViewColumn          *column,
-                                                             ThunarPermissionsView      *view);
-static void     thunar_permissions_view_toggled             (GtkCellRendererToggle      *renderer,
-                                                             const gchar                *path_string,
-                                                             ThunarPermissionsView      *view);
-
-
-
-struct _ThunarPermissionsViewClass
-{
-  GtkVBoxClass __parent__;
-};
-
-struct _ThunarPermissionsView
-{
-  GtkVBox __parent__;
-
-  ThunarFile  *file;
-
-  GtkTooltips *tooltips;
-  GtkWidget   *tree_view;
-};
-
-
-
-static GObjectClass *thunar_permissions_view_parent_class;
-
-
-
-GType
-thunar_permissions_view_get_type (void)
-{
-  static GType type = G_TYPE_INVALID;
-
-  if (G_UNLIKELY (type == G_TYPE_INVALID))
-    {
-      static const GTypeInfo info =
-      {
-        sizeof (ThunarPermissionsViewClass),
-        NULL,
-        NULL,
-        (GClassInitFunc) thunar_permissions_view_class_init,
-        NULL,
-        NULL,
-        sizeof (ThunarPermissionsView),
-        0,
-        (GInstanceInitFunc) thunar_permissions_view_init,
-        NULL,
-      };
-
-      type = g_type_register_static (GTK_TYPE_VBOX, I_("ThunarPermissionsView"), &info, 0);
-    }
-
-  return type;
-}
-
-
-
-static void
-thunar_permissions_view_class_init (ThunarPermissionsViewClass *klass)
-{
-  GObjectClass *gobject_class;
-
-  thunar_permissions_view_parent_class = g_type_class_peek_parent (klass);
-
-  gobject_class = G_OBJECT_CLASS (klass);
-  gobject_class->finalize = thunar_permissions_view_finalize;
-  gobject_class->get_property = thunar_permissions_view_get_property;
-  gobject_class->set_property = thunar_permissions_view_set_property;
-
-  /**
-   * ThunarPermissionsView:file:
-   *
-   * The #ThunarFile whose permissions is displayed by this view.
-   **/
-  g_object_class_install_property (gobject_class,
-                                   PROP_FILE,
-                                   g_param_spec_object ("file", "file", "file",
-                                                        THUNAR_TYPE_FILE,
-                                                        EXO_PARAM_READWRITE));
-}
-
-
-
-static void
-thunar_permissions_view_init (ThunarPermissionsView *view)
-{
-  GtkTreeViewColumn *column;
-  GtkCellRenderer   *renderer;
-  GtkTreeModel      *model;
-  GtkWidget         *align;
-  GtkWidget         *button;
-  GtkWidget         *hbox;
-  GtkWidget         *image;
-  GtkWidget         *label;
-  GtkWidget         *scrolled_window;
-  GtkWidget         *separator;
-
-  /* allocate tooltips for the permissions view */
-  view->tooltips = gtk_tooltips_new ();
-  exo_gtk_object_ref_sink (GTK_OBJECT (view->tooltips));
-
-  gtk_box_set_spacing (GTK_BOX (view), 6);
-  gtk_container_set_border_width (GTK_CONTAINER (view), 12);
-
-  scrolled_window = gtk_scrolled_window_new (NULL, NULL);
-  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
-  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), GTK_SHADOW_IN);
-  gtk_box_pack_start (GTK_BOX (view), scrolled_window, TRUE, TRUE, 0);
-  gtk_widget_show (scrolled_window);
-
-  view->tree_view = gtk_tree_view_new ();
-  gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (view->tree_view), FALSE);
-  g_signal_connect (G_OBJECT (view->tree_view), "button-press-event", G_CALLBACK (thunar_permissions_view_button_press_event), view);
-  g_signal_connect (G_OBJECT (view->tree_view), "popup-menu", G_CALLBACK (thunar_permissions_view_popup_menu), view);
-  g_signal_connect (G_OBJECT (view->tree_view), "row-activated", G_CALLBACK (thunar_permissions_view_row_activated), view);
-  gtk_container_add (GTK_CONTAINER (scrolled_window), view->tree_view);
-  gtk_widget_show (view->tree_view);
-
-  column = gtk_tree_view_column_new ();
-  gtk_tree_view_column_set_expand (column, TRUE);
-  gtk_tree_view_append_column (GTK_TREE_VIEW (view->tree_view), column);
-
-  renderer = gtk_cell_renderer_pixbuf_new ();
-  gtk_tree_view_column_pack_start (column, renderer, FALSE);
-  gtk_tree_view_column_add_attribute (column, renderer, "stock-id", THUNAR_PERMISSIONS_MODEL_COLUMN_ICON);
-  gtk_tree_view_column_add_attribute (column, renderer, "visible", THUNAR_PERMISSIONS_MODEL_COLUMN_ICON_VISIBLE);
-
-  renderer = gtk_cell_renderer_toggle_new ();
-  g_signal_connect (G_OBJECT (renderer), "toggled", G_CALLBACK (thunar_permissions_view_toggled), view);
-  gtk_tree_view_column_pack_start (column, renderer, FALSE);
-  gtk_tree_view_column_add_attribute (column, renderer, "active", THUNAR_PERMISSIONS_MODEL_COLUMN_STATE);
-  gtk_tree_view_column_add_attribute (column, renderer, "activatable", THUNAR_PERMISSIONS_MODEL_COLUMN_MUTABLE);
-  gtk_tree_view_column_add_attribute (column, renderer, "visible", THUNAR_PERMISSIONS_MODEL_COLUMN_STATE_VISIBLE);
-
-  renderer = gtk_cell_renderer_text_new ();
-  gtk_tree_view_column_pack_start (column, renderer, TRUE);
-  gtk_tree_view_column_add_attribute (column, renderer, "text", THUNAR_PERMISSIONS_MODEL_COLUMN_TITLE);
-
-  /* setup the permissions model */
-  model = thunar_permissions_model_new ();
-  exo_binding_new (G_OBJECT (view), "file", G_OBJECT (model), "file");
-  gtk_tree_view_set_model (GTK_TREE_VIEW (view->tree_view), model);
-  g_object_unref (G_OBJECT (model));
-
-  hbox = gtk_hbox_new (FALSE, 6);
-  gtk_box_pack_start (GTK_BOX (view), hbox, FALSE, FALSE, 0);
-  gtk_widget_show (hbox);
-
-  label = gtk_label_new (_("For special permissions and for\nadvanced settings, click Advanced."));
-  gtk_misc_set_alignment (GTK_MISC (label), 0.0f, 0.5f);
-  gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
-  gtk_widget_show (label);
-
-  align = gtk_alignment_new (0.5f, 0.5f, 0.0f, 0.0f);
-  gtk_box_pack_start (GTK_BOX (hbox), align, FALSE, FALSE, 0);
-  gtk_widget_show (align);
-
-  button = gtk_button_new_with_mnemonic (_("_Advanced..."));
-  gtk_tooltips_set_tip (view->tooltips, button, _("Click here for special permissions and for advanced settings."), NULL);
-  g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (thunar_permissions_view_advanced_clicked), view);
-  gtk_container_add (GTK_CONTAINER (align), button);
-  gtk_widget_show (button);
-
-  separator = gtk_hseparator_new ();
-  exo_binding_new_with_negation (G_OBJECT (model), "mutable", G_OBJECT (separator), "visible");
-  gtk_box_pack_start (GTK_BOX (view), separator, FALSE, FALSE, 0);
-  gtk_widget_show (separator);
-
-  hbox = gtk_hbox_new (FALSE, 6);
-  exo_binding_new_with_negation (G_OBJECT (model), "mutable", G_OBJECT (hbox), "visible");
-  gtk_box_pack_start (GTK_BOX (view), hbox, FALSE, FALSE, 0);
-  gtk_widget_show (hbox);
-
-  image = gtk_image_new_from_stock (GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_DND);
-  gtk_misc_set_alignment (GTK_MISC (image), 0.5f, 0.0f);
-  gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
-  gtk_widget_show (image);
-
-  label = gtk_label_new (_("You are not the owner of this file, so\nyou cannot change these permissions."));
-  gtk_label_set_attributes (GTK_LABEL (label), thunar_pango_attr_list_italic ());
-  gtk_misc_set_alignment (GTK_MISC (label), 0.0f, 0.5f);
-  gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
-  gtk_widget_show (label);
-}
-
-
-
-static void
-thunar_permissions_view_finalize (GObject *object)
-{
-  ThunarPermissionsView *view = THUNAR_PERMISSIONS_VIEW (object);
-
-  /* release the file */
-  thunar_permissions_view_set_file (view, NULL);
-
-  /* release the tooltips */
-  g_object_unref (G_OBJECT (view->tooltips));
-
-  (*G_OBJECT_CLASS (thunar_permissions_view_parent_class)->finalize) (object);
-}
-
-
-
-static void
-thunar_permissions_view_get_property (GObject    *object,
-                                      guint       prop_id,
-                                      GValue     *value,
-                                      GParamSpec *pspec)
-{
-  ThunarPermissionsView *view = THUNAR_PERMISSIONS_VIEW (object);
-
-  switch (prop_id)
-    {
-    case PROP_FILE:
-      g_value_set_object (value, thunar_permissions_view_get_file (view));
-      break;
-
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
-}
-
-
-
-static void
-thunar_permissions_view_set_property (GObject      *object,
-                                      guint         prop_id,
-                                      const GValue *value,
-                                      GParamSpec   *pspec)
-{
-  ThunarPermissionsView *view = THUNAR_PERMISSIONS_VIEW (object);
-
-  switch (prop_id)
-    {
-    case PROP_FILE:
-      thunar_permissions_view_set_file (view, g_value_get_object (value));
-      break;
-
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
-}
-
-
-
-static gboolean
-thunar_permissions_view_context_menu (ThunarPermissionsView *view,
-                                      GtkTreeIter           *iter,
-                                      guint                  button,
-                                      guint32                time)
-{
-  GtkTreeModel *model;
-  GMainLoop    *loop;
-  GtkWidget    *item;
-  GtkWidget    *menu;
-  GList        *actions;
-  GList        *lp;
-
-  g_return_val_if_fail (THUNAR_IS_PERMISSIONS_VIEW (view), FALSE);
-
-  /* determine the model for the tree view */
-  model = gtk_tree_view_get_model (GTK_TREE_VIEW (view->tree_view));
-  if (G_UNLIKELY (model == NULL))
-    return FALSE;
-
-  /* determine the menu actions for the specified iterator */
-  actions = thunar_permissions_model_get_actions (THUNAR_PERMISSIONS_MODEL (model), GTK_WIDGET (view), iter);
-  if (G_UNLIKELY (actions == NULL))
-    return FALSE;
-
-  /* prepare the internal loop */
-  loop = g_main_loop_new (NULL, FALSE);
-
-  /* prepare the popup menu */
-  menu = gtk_menu_new ();
-  exo_gtk_object_ref_sink (GTK_OBJECT (menu));
-  gtk_menu_set_screen (GTK_MENU (menu), gtk_widget_get_screen (GTK_WIDGET (view)));
-  g_signal_connect_swapped (G_OBJECT (menu), "deactivate", G_CALLBACK (g_main_loop_quit), loop);
-
-  /* append menu items for all actions */
-  for (lp = actions; lp != NULL; lp = lp->next)
-    {
-      /* create the menu item */
-      item = gtk_action_create_menu_item (GTK_ACTION (lp->data));
-      gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
-      gtk_widget_show (item);
-
-      /* release the action reference */
-      g_object_unref (G_OBJECT (lp->data));
-    }
-
-  /* release the action list */
-  g_list_free (actions);
-
-  /* run the internal loop */
-  gtk_grab_add (menu);
-  gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, button, time);
-  g_main_loop_run (loop);
-  gtk_grab_remove (menu);
-
-  /* clean up */
-  g_object_unref (G_OBJECT (menu));
-  g_main_loop_unref (loop);
-
-  return TRUE;
-}
-
-
-
-static void
-thunar_permissions_view_advanced_clicked (GtkWidget             *button,
-                                          ThunarPermissionsView *view)
-{
-  GtkWidget *toplevel;
-  GtkWidget *dialog;
-
-  /* determine the toplevel widget for the view */
-  toplevel = gtk_widget_get_toplevel (GTK_WIDGET (view));
-  if (G_UNLIKELY (toplevel == NULL))
-    return;
-
-  /* display the advanced permissions dialog */
-  dialog = thunar_advanced_permissions_dialog_new ();
-  exo_binding_new (G_OBJECT (view), "file", G_OBJECT (dialog), "file");
-  gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (toplevel));
-  gtk_widget_show (dialog);
-}
-
-
-
-static gboolean
-thunar_permissions_view_button_press_event (GtkWidget             *tree_view,
-                                            GdkEventButton        *event,
-                                            ThunarPermissionsView *view)
-{
-  GtkTreeModel *model;
-  GtkTreePath  *path;
-  GtkTreeIter   iter;
-
-  g_return_val_if_fail (THUNAR_IS_PERMISSIONS_VIEW (view), FALSE);
-  g_return_val_if_fail (GTK_IS_TREE_VIEW (tree_view), FALSE);
-  g_return_val_if_fail (view->tree_view == tree_view, FALSE);
-
-  /* determine the path for the click */
-  if (event->button == 3 && gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (tree_view), event->x, event->y, &path, NULL, NULL, NULL))
-    {
-      /* select the specified row */
-      gtk_tree_view_set_cursor (GTK_TREE_VIEW (tree_view), path, NULL, FALSE);
-
-      /* determine the iterator for the tree path */
-      model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree_view));
-      gtk_tree_model_get_iter (model, &iter, path);
-      gtk_tree_path_free (path);
-
-      /* popup the context menu */
-      return thunar_permissions_view_context_menu (view, &iter, event->button, event->time);
-    }
-
-  return FALSE;
-}
-
-
-
-static gboolean
-thunar_permissions_view_popup_menu (GtkWidget             *tree_view,
-                                    ThunarPermissionsView *view)
-{
-  GtkTreeSelection *selection;
-  GtkTreeIter       iter;
-
-  g_return_val_if_fail (THUNAR_IS_PERMISSIONS_VIEW (view), FALSE);
-  g_return_val_if_fail (GTK_IS_TREE_VIEW (tree_view), FALSE);
-  g_return_val_if_fail (view->tree_view == tree_view, FALSE);
-
-  /* determine the selected item */
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view));
-  if (gtk_tree_selection_get_selected (selection, NULL, &iter))
-    return thunar_permissions_view_context_menu (view, &iter, 0, gtk_get_current_event_time ());
-
-  return FALSE;
-}
-
-
-
-static void
-thunar_permissions_view_row_activated (GtkWidget             *tree_view,
-                                       GtkTreePath           *path,
-                                       GtkTreeViewColumn     *column,
-                                       ThunarPermissionsView *view)
-{
-  g_return_if_fail (THUNAR_IS_PERMISSIONS_VIEW (view));
-  g_return_if_fail (GTK_IS_TREE_VIEW (tree_view));
-  g_return_if_fail (view->tree_view == tree_view);
-
-  if (gtk_tree_view_row_expanded (GTK_TREE_VIEW (tree_view), path))
-    gtk_tree_view_collapse_row (GTK_TREE_VIEW (tree_view), path);
-  else
-    gtk_tree_view_expand_row (GTK_TREE_VIEW (tree_view), path, FALSE);
-}
-
-
-
-static void
-thunar_permissions_view_toggled (GtkCellRendererToggle *renderer,
-                                 const gchar           *path_string,
-                                 ThunarPermissionsView *view)
-{
-  GtkTreeModel *model;
-  GtkTreePath  *path;
-  GtkTreeIter   iter;
-  GError       *error = NULL;
-
-  g_return_if_fail (GTK_IS_CELL_RENDERER_TOGGLE (renderer));
-  g_return_if_fail (THUNAR_IS_PERMISSIONS_VIEW (view));
-  g_return_if_fail (path_string != NULL);
-
-  /* determine the path from the string */
-  path = gtk_tree_path_new_from_string (path_string);
-  if (G_UNLIKELY (path == NULL))
-    return;
-
-  /* determine the model and the iter */
-  model = gtk_tree_view_get_model (GTK_TREE_VIEW (view->tree_view));
-  if (gtk_tree_model_get_iter (model, &iter, path))
-    {
-      /* try to toggle the flag identified by the path */
-      if (!thunar_permissions_model_toggle (THUNAR_PERMISSIONS_MODEL (model), &iter, &error))
-        {
-          thunar_dialogs_show_error (GTK_WIDGET (view), error, _("Failed to change permissions of `%s'"), thunar_file_get_display_name (view->file));
-          g_error_free (error);
-        }
-    }
-
-  /* cleanup */
-  gtk_tree_path_free (path);
-}
-
-
-
-/**
- * thunar_permissions_view_new:
- *
- * Allocates a new #ThunarPermissionsView instance.
- *
- * Return value: the newly allocated #ThunarPermissionsView instance.
- **/
-GtkWidget*
-thunar_permissions_view_new (void)
-{
-  return g_object_new (THUNAR_TYPE_PERMISSIONS_VIEW, NULL);
-}
-
-
-
-/**
- * thunar_permissions_view_get_file:
- * @view : a #ThunarPermissionsView instance.
- *
- * Returns the #ThunarFile associated with the specified @view.
- *
- * Return value: the #ThunarFile associated with @view.
- **/
-ThunarFile*
-thunar_permissions_view_get_file (ThunarPermissionsView *view)
-{
-  g_return_val_if_fail (THUNAR_IS_PERMISSIONS_VIEW (view), NULL);
-  return view->file;
-}
-
-
-
-/**
- * thunar_permissions_view_set_file:
- * @view : a #ThunarPermissionsView instance.
- * @file : a #ThunarFile instance or %NULL.
- *
- * Associates the given @view with the specified @file.
- **/
-void
-thunar_permissions_view_set_file (ThunarPermissionsView *view,
-                                  ThunarFile            *file)
-{
-  g_return_if_fail (THUNAR_IS_PERMISSIONS_VIEW (view));
-  g_return_if_fail (file == NULL || THUNAR_IS_FILE (file));
-
-  /* check if we already use that file */
-  if (G_UNLIKELY (view->file == file))
-    return;
-
-  /* disconnect from the previous file */
-  if (G_LIKELY (view->file != NULL))
-    g_object_unref (G_OBJECT (view->file));
-
-  /* activate the new file */
-  view->file = file;
-
-  /* connect to the new file */
-  if (G_LIKELY (file != NULL))
-    g_object_ref (G_OBJECT (file));
-
-  /* notify listeners */
-  g_object_notify (G_OBJECT (view), "file");
-}
-
-
diff --git a/thunar/thunar-permissions-view.h b/thunar/thunar-permissions-view.h
deleted file mode 100644
index 170329940b15ef01aedd0a7cd67dfade93a05501..0000000000000000000000000000000000000000
--- a/thunar/thunar-permissions-view.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* $Id$ */
-/*-
- * Copyright (c) 2005-2006 Benedikt Meurer <benny@xfce.org>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef __THUNAR_PERMISSIONS_VIEW_H__
-#define __THUNAR_PERMISSIONS_VIEW_H__
-
-#include <thunar/thunar-file.h>
-
-G_BEGIN_DECLS;
-
-typedef struct _ThunarPermissionsViewClass ThunarPermissionsViewClass;
-typedef struct _ThunarPermissionsView      ThunarPermissionsView;
-
-#define THUNAR_TYPE_PERMISSIONS_VIEW            (thunar_permissions_view_get_type ())
-#define THUNAR_PERMISSIONS_VIEW(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_PERMISSIONS_VIEW, ThunarPermissionsView))
-#define THUNAR_PERMISSIONS_VIEW_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_PERMISSIONS_VIEW, ThunarPermissionsViewClass))
-#define THUNAR_IS_PERMISSIONS_VIEW(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_PERMISSIONS_VIEW))
-#define THUNAR_IS_PERMISSIONS_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_PERMISSIONS_VIEW))
-#define THUNAR_PERMISSIONS_VIEW_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_PERMISSIONS_VIEW, ThunarPermissionsViewClass))
-
-GType       thunar_permissions_view_get_type (void) G_GNUC_CONST;
-
-GtkWidget  *thunar_permissions_view_new      (void) G_GNUC_MALLOC;
-
-ThunarFile *thunar_permissions_view_get_file (ThunarPermissionsView *view);
-void        thunar_permissions_view_set_file (ThunarPermissionsView *view,
-                                              ThunarFile            *file);
-
-G_END_DECLS;
-
-#endif /* !__THUNAR_PERMISSIONS_VIEW_H__ */
diff --git a/thunar/thunar-preferences-dialog.c b/thunar/thunar-preferences-dialog.c
index 9b9a88c543ae52519d8dca449886984ed9e1daad..7ca397f26acb33ba50fb752f06467ebfc66e4000 100644
--- a/thunar/thunar-preferences-dialog.c
+++ b/thunar/thunar-preferences-dialog.c
@@ -1,6 +1,6 @@
 /* $Id$ */
 /*-
- * Copyright (c) 2005 Benedikt Meurer <benny@xfce.org>
+ * Copyright (c) 2005-2006 Benedikt Meurer <benny@xfce.org>
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License as published by the Free
@@ -164,6 +164,7 @@ thunar_preferences_dialog_init (ThunarPreferencesDialog *dialog)
   AtkRelationSet *relations;
   AtkRelation    *relation;
   AtkObject      *object;
+  GtkWidget      *notebook;
   GtkWidget      *button;
   GtkWidget      *combo;
   GtkWidget      *frame;
@@ -190,8 +191,19 @@ thunar_preferences_dialog_init (ThunarPreferencesDialog *dialog)
                           GTK_STOCK_HELP, GTK_RESPONSE_HELP,
                           NULL);
 
+  notebook = gtk_notebook_new ();
+  gtk_container_set_border_width (GTK_CONTAINER (notebook), 6);
+  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), notebook, TRUE, TRUE, 0);
+  gtk_widget_show (notebook);
+
+
+  /*
+     Views
+   */
+  label = gtk_label_new (_("Views"));
   vbox = g_object_new (GTK_TYPE_VBOX, "border-width", 12, "spacing", 12, NULL);
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), vbox, TRUE, TRUE, 0);
+  gtk_notebook_append_page (GTK_NOTEBOOK (notebook), vbox, label);
+  gtk_widget_show (label);
   gtk_widget_show (vbox);
 
   frame = g_object_new (GTK_TYPE_FRAME, "border-width", 0, "shadow-type", GTK_SHADOW_NONE, NULL);
@@ -218,7 +230,9 @@ thunar_preferences_dialog_init (ThunarPreferencesDialog *dialog)
   gtk_combo_box_append_text (GTK_COMBO_BOX (combo), _("Icon View"));
   gtk_combo_box_append_text (GTK_COMBO_BOX (combo), _("Detailed List View"));
   gtk_combo_box_append_text (GTK_COMBO_BOX (combo), _("Last Active View"));
+#if !GTK_CHECK_VERSION(2,9,0)
   g_signal_connect (G_OBJECT (combo), "changed", G_CALLBACK (g_object_notify), "active");
+#endif
   exo_mutual_binding_new_full (G_OBJECT (dialog->preferences), "default-view", G_OBJECT (combo), "active",
                                transform_view_string_to_index, transform_view_index_to_string, NULL, NULL);
   gtk_table_attach (GTK_TABLE (table), combo, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
@@ -268,6 +282,55 @@ thunar_preferences_dialog_init (ThunarPreferencesDialog *dialog)
                                                     "beside the icon rather than below the icon."), NULL);
   gtk_table_attach (GTK_TABLE (table), button, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
   gtk_widget_show (button);
+
+
+  /*
+     Advanced
+   */
+  label = gtk_label_new (_("Advanced"));
+  vbox = g_object_new (GTK_TYPE_VBOX, "border-width", 12, "spacing", 12, NULL);
+  gtk_notebook_append_page (GTK_NOTEBOOK (notebook), vbox, label);
+  gtk_widget_show (label);
+  gtk_widget_show (vbox);
+
+  frame = g_object_new (GTK_TYPE_FRAME, "border-width", 0, "shadow-type", GTK_SHADOW_NONE, NULL);
+  gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
+  gtk_widget_show (frame);
+
+  label = gtk_label_new (_("Miscellaneous"));
+  gtk_label_set_attributes (GTK_LABEL (label), thunar_pango_attr_list_bold ());
+  gtk_frame_set_label_widget (GTK_FRAME (frame), label);
+  gtk_widget_show (label);
+
+  table = gtk_table_new (1, 2, FALSE);
+  gtk_table_set_row_spacings (GTK_TABLE (table), 6);
+  gtk_table_set_col_spacings (GTK_TABLE (table), 12);
+  gtk_container_set_border_width (GTK_CONTAINER (table), 12);
+  gtk_container_add (GTK_CONTAINER (frame), table);
+  gtk_widget_show (table);
+
+  label = gtk_label_new_with_mnemonic (_("Apply permissions _recursively:"));
+  gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
+  gtk_widget_show (label);
+
+  combo = gtk_combo_box_new_text ();
+  gtk_combo_box_append_text (GTK_COMBO_BOX (combo), _("Ask everytime"));
+  gtk_combo_box_append_text (GTK_COMBO_BOX (combo), _("Always"));
+  gtk_combo_box_append_text (GTK_COMBO_BOX (combo), _("Never"));
+#if !GTK_CHECK_VERSION(2,9,0)
+  g_signal_connect (G_OBJECT (combo), "changed", G_CALLBACK (g_object_notify), "active");
+#endif
+  exo_mutual_binding_new (G_OBJECT (dialog->preferences), "misc-recursive-permissions", G_OBJECT (combo), "active");
+  gtk_table_attach (GTK_TABLE (table), combo, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
+  gtk_label_set_mnemonic_widget (GTK_LABEL (label), combo);
+  gtk_widget_show (combo);
+
+  /* set Atk label relation for the combo */
+  object = gtk_widget_get_accessible (combo);
+  relations = atk_object_ref_relation_set (gtk_widget_get_accessible (label));
+  relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
+  atk_relation_set_add (relations, relation);
+  g_object_unref (G_OBJECT (relation));
 }
 
 
diff --git a/thunar/thunar-preferences.c b/thunar/thunar-preferences.c
index aa85ee3aeada55396e79e0ffe90f89d9796d9d88..9ff40599eca09fb408d50901952c800989bd8c1f 100644
--- a/thunar/thunar-preferences.c
+++ b/thunar/thunar-preferences.c
@@ -1,6 +1,6 @@
 /* $Id$ */
 /*-
- * Copyright (c) 2005 Benedikt Meurer <benny@xfce.org>
+ * Copyright (c) 2005-2006 Benedikt Meurer <benny@xfce.org>
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License as published by the Free
@@ -41,6 +41,7 @@
 
 #include <tdb/tdb.h>
 
+#include <thunar/thunar-enum-types.h>
 #include <thunar/thunar-gobject-extensions.h>
 #include <thunar/thunar-preferences.h>
 
@@ -57,6 +58,7 @@ enum
   PROP_LAST_LOCATION_BAR,
   PROP_LAST_SIDE_PANE,
   PROP_LAST_VIEW,
+  PROP_MISC_RECURSIVE_PERMISSIONS,
   N_PROPERTIES,
 };
 
@@ -238,6 +240,21 @@ thunar_preferences_class_init (ThunarPreferencesClass *klass)
                                                         "last-view",
                                                         "ThunarIconView",
                                                         EXO_PARAM_READWRITE));
+
+  /**
+   * ThunarPreferences:misc-recursive-permissions:
+   *
+   * Whether to apply permissions recursively everytime the
+   * permissions are altered by the user.
+   **/
+  g_object_class_install_property (gobject_class,
+                                   PROP_MISC_RECURSIVE_PERMISSIONS,
+                                   g_param_spec_enum ("misc-recursive-permissions",
+                                                      "misc-recursive-permissions",
+                                                      "misc-recursive-permissions",
+                                                      THUNAR_TYPE_RECURSIVE_PERMISSIONS,
+                                                      THUNAR_RECURSIVE_PERMISSIONS_ASK,
+                                                      EXO_PARAM_READWRITE));
 }
 
 
diff --git a/thunar/thunar-properties-dialog.c b/thunar/thunar-properties-dialog.c
index 5adff7e9816e05afe4c467518a9a55c8cdc9b564..af9414e170269eb41dcbae63c8856a3198c44aae 100644
--- a/thunar/thunar-properties-dialog.c
+++ b/thunar/thunar-properties-dialog.c
@@ -34,7 +34,7 @@
 #include <thunar/thunar-emblem-chooser.h>
 #include <thunar/thunar-icon-factory.h>
 #include <thunar/thunar-pango-extensions.h>
-#include <thunar/thunar-permissions-view.h>
+#include <thunar/thunar-permissions-chooser.h>
 #include <thunar/thunar-properties-dialog.h>
 
 
@@ -197,7 +197,7 @@ thunar_properties_dialog_init (ThunarPropertiesDialog *dialog)
                           GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
                           NULL);
   gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
-  gtk_window_set_default_size (GTK_WINDOW (dialog), 350, 430);
+  gtk_window_set_default_size (GTK_WINDOW (dialog), 400, 430);
 
   dialog->notebook = gtk_notebook_new ();
   gtk_container_set_border_width (GTK_CONTAINER (dialog->notebook), 6);
@@ -372,7 +372,7 @@ thunar_properties_dialog_init (ThunarPropertiesDialog *dialog)
      Permissions chooser
    */
   label = gtk_label_new (_("Permissions"));
-  chooser = thunar_permissions_view_new ();
+  chooser = thunar_permissions_chooser_new ();
   exo_binding_new (G_OBJECT (dialog), "file", G_OBJECT (chooser), "file");
   gtk_notebook_append_page (GTK_NOTEBOOK (dialog->notebook), chooser, label);
   gtk_widget_show (chooser);
diff --git a/thunar/thunar-stock.c b/thunar/thunar-stock.c
index 9a52a6bce48c2ed70950b5da79bb8dcdf3318b35..621b8955a713215c7b6f7bdb7649d87a23d55971 100644
--- a/thunar/thunar-stock.c
+++ b/thunar/thunar-stock.c
@@ -36,9 +36,8 @@
 
 static const gchar *thunar_stock_icons[] =
 {
-  THUNAR_STOCK_PERMISSIONS_GROUP,
-  THUNAR_STOCK_PERMISSIONS_OTHER,
-  THUNAR_STOCK_PERMISSIONS_USER,
+  THUNAR_STOCK_GROUP,
+  THUNAR_STOCK_USER,
 };
 
 
diff --git a/thunar/thunar-stock.h b/thunar/thunar-stock.h
index 6387bd928732d115fa9c049150c33ad63df6078e..ee3975d449cac7f102245abeddc55d0b92bfae4a 100644
--- a/thunar/thunar-stock.h
+++ b/thunar/thunar-stock.h
@@ -22,10 +22,9 @@
 
 G_BEGIN_DECLS;
 
-/* stock icons for the ThunarPermissionsView */
-#define THUNAR_STOCK_PERMISSIONS_GROUP  "thunar-permissions-group"
-#define THUNAR_STOCK_PERMISSIONS_OTHER  "thunar-permissions-other"
-#define THUNAR_STOCK_PERMISSIONS_USER   "thunar-permissions-user"
+/* stock icons for the ThunarPermissionsChooser */
+#define THUNAR_STOCK_GROUP  "thunar-group"
+#define THUNAR_STOCK_USER   "thunar-user"
 
 void thunar_stock_init (void) G_GNUC_INTERNAL;