[Xfce4-commits] r22675 - in libexo/trunk: . exo-desktop-item-edit po

Benedikt Meurer benny at xfce.org
Sun Aug 6 18:57:46 UTC 2006


Author: benny
Date: 2006-08-06 18:57:32 +0000 (Sun, 06 Aug 2006)
New Revision: 22675

Added:
   libexo/trunk/exo-desktop-item-edit/exo-die-desktop-model.c
   libexo/trunk/exo-desktop-item-edit/exo-die-desktop-model.h
Modified:
   libexo/trunk/ChangeLog
   libexo/trunk/exo-desktop-item-edit/Makefile.am
   libexo/trunk/exo-desktop-item-edit/exo-die-command-entry.c
   libexo/trunk/exo-desktop-item-edit/exo-die-command-model.c
   libexo/trunk/exo-desktop-item-edit/exo-die-editor.c
   libexo/trunk/exo-desktop-item-edit/main.c
   libexo/trunk/po/ChangeLog
   libexo/trunk/po/POTFILES.in
   libexo/trunk/po/ca.po
   libexo/trunk/po/cs.po
   libexo/trunk/po/de.po
   libexo/trunk/po/el.po
   libexo/trunk/po/en_GB.po
   libexo/trunk/po/es.po
   libexo/trunk/po/et.po
   libexo/trunk/po/eu.po
   libexo/trunk/po/fi.po
   libexo/trunk/po/fr.po
   libexo/trunk/po/he.po
   libexo/trunk/po/hu.po
   libexo/trunk/po/ja.po
   libexo/trunk/po/libexo-0.3.pot
   libexo/trunk/po/lt.po
   libexo/trunk/po/pl.po
   libexo/trunk/po/pt_BR.po
   libexo/trunk/po/ro.po
   libexo/trunk/po/ru.po
   libexo/trunk/po/sv.po
Log:
2006-08-06	Benedikt Meurer <benny at xfce.org>

	* exo-desktop-item-edit/exo-die-command-entry.c,
	  exo-desktop-item-edit/exo-die-command-model.c: Set the completion
	  model only after the command model is loaded, as GtkEntryCompletion
	  in GTK+ 2.10 is way to slow when adding rows to a model, which makes
	  the dialog hang for several seconds on startup.
	* exo-desktop-item-edit/exo-die-desktop-model.{c,h},
	  exo-desktop-item-edit/Makefile.am, exo-desktop-item-edit/main.c,
	  exo-desktop-item-edit/exo-die-editor.c: Add a convenient way to
	  create launchers for applications installed on the system and
	  available via the desktop database, by typing the name of the
	  application in the "Name" field and using the available completion.
	* po/POTFILES.in: Add new files here.
	* po/libexo-0.3.pot, po/*.po: Updated.
	* po/de.po: Update german translations.




Modified: libexo/trunk/ChangeLog
===================================================================
--- libexo/trunk/ChangeLog	2006-08-06 13:55:00 UTC (rev 22674)
+++ libexo/trunk/ChangeLog	2006-08-06 18:57:32 UTC (rev 22675)
@@ -1,3 +1,20 @@
+2006-08-06	Benedikt Meurer <benny at xfce.org>
+
+	* exo-desktop-item-edit/exo-die-command-entry.c,
+	  exo-desktop-item-edit/exo-die-command-model.c: Set the completion
+	  model only after the command model is loaded, as GtkEntryCompletion
+	  in GTK+ 2.10 is way to slow when adding rows to a model, which makes
+	  the dialog hang for several seconds on startup.
+	* exo-desktop-item-edit/exo-die-desktop-model.{c,h},
+	  exo-desktop-item-edit/Makefile.am, exo-desktop-item-edit/main.c,
+	  exo-desktop-item-edit/exo-die-editor.c: Add a convenient way to
+	  create launchers for applications installed on the system and
+	  available via the desktop database, by typing the name of the
+	  application in the "Name" field and using the available completion.
+	* po/POTFILES.in: Add new files here.
+	* po/libexo-0.3.pot, po/*.po: Updated.
+	* po/de.po: Update german translations.
+
 2006-07-28	Benedikt Meurer <benny at xfce.org>
 
 	* exo/exo-icon-view.c(ExoIconViewItem): Apply patch from Matt McClinch 

Modified: libexo/trunk/exo-desktop-item-edit/Makefile.am
===================================================================
--- libexo/trunk/exo-desktop-item-edit/Makefile.am	2006-08-06 13:55:00 UTC (rev 22674)
+++ libexo/trunk/exo-desktop-item-edit/Makefile.am	2006-08-06 18:57:32 UTC (rev 22675)
@@ -17,6 +17,8 @@
 	exo-die-command-entry.h						\
 	exo-die-command-model.c						\
 	exo-die-command-model.h						\
+	exo-die-desktop-model.c						\
+	exo-die-desktop-model.h						\
 	exo-die-editor.c						\
 	exo-die-editor.h						\
 	exo-die-enum-types.c						\

Modified: libexo/trunk/exo-desktop-item-edit/exo-die-command-entry.c
===================================================================
--- libexo/trunk/exo-desktop-item-edit/exo-die-command-entry.c	2006-08-06 13:55:00 UTC (rev 22674)
+++ libexo/trunk/exo-desktop-item-edit/exo-die-command-entry.c	2006-08-06 18:57:32 UTC (rev 22675)
@@ -57,6 +57,8 @@
 static void exo_die_command_entry_activate        (ExoDieCommandEntry       *command_entry);
 static void exo_die_command_entry_button_clicked  (GtkWidget                *button,
                                                    ExoDieCommandEntry       *command_entry);
+static void exo_die_command_entry_model_loaded    (ExoDieCommandModel       *command_model,
+                                                   ExoDieCommandEntry       *command_entry);
 
 
 
@@ -70,9 +72,10 @@
 
 struct _ExoDieCommandEntry
 {
-  GtkHBox    __parent__;
-  GtkWidget *entry;
-  gchar     *text;
+  GtkHBox             __parent__;
+  ExoDieCommandModel *model;
+  GtkWidget          *entry;
+  gchar              *text;
 };
 
 
@@ -163,14 +166,16 @@
 static void
 exo_die_command_entry_init (ExoDieCommandEntry *command_entry)
 {
-  ExoDieCommandModel *command_model;
-  GtkEntryCompletion *completion;
-  GtkWidget          *button;
-  GtkWidget          *image;
+  GtkWidget *button;
+  GtkWidget *image;
 
   /* setup the box */
   gtk_box_set_spacing (GTK_BOX (command_entry), 3);
 
+  /* allocate the command model */
+  command_entry->model = exo_die_command_model_new ();
+  g_signal_connect (G_OBJECT (command_entry->model), "loaded", G_CALLBACK (exo_die_command_entry_model_loaded), command_entry);
+
   gtk_widget_push_composite_child ();
 
   command_entry->entry = gtk_entry_new ();
@@ -179,20 +184,6 @@
   gtk_box_pack_start (GTK_BOX (command_entry), command_entry->entry, TRUE, TRUE, 0);
   gtk_widget_show (command_entry->entry);
 
-  /* allocate a new completion for the entry */
-  completion = gtk_entry_completion_new ();
-  gtk_entry_completion_set_minimum_key_length (completion, 1);
-  gtk_entry_completion_set_inline_completion (completion, TRUE);
-  gtk_entry_completion_set_popup_completion (completion, TRUE);
-  gtk_entry_set_completion (GTK_ENTRY (command_entry->entry), completion);
-  g_object_unref (G_OBJECT (completion));
-
-  /* setup a command model for the completion */
-  command_model = exo_die_command_model_new ();
-  gtk_entry_completion_set_model (completion, GTK_TREE_MODEL (command_model));
-  gtk_entry_completion_set_text_column (completion, EXO_DIE_COMMAND_MODEL_COLUMN_NAME);
-  g_object_unref (G_OBJECT (command_model));
-
   button = gtk_button_new ();
   g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (exo_die_command_entry_button_clicked), command_entry);
   gtk_box_pack_start (GTK_BOX (command_entry), button, FALSE, FALSE, 0);
@@ -212,6 +203,10 @@
 {
   ExoDieCommandEntry *command_entry = EXO_DIE_COMMAND_ENTRY (object);
 
+  /* release the model */
+  g_signal_handlers_disconnect_by_func (G_OBJECT (command_entry->model), exo_die_command_entry_model_loaded, command_entry);
+  g_object_unref (G_OBJECT (command_entry->model));
+
   /* release the text */
   g_free (command_entry->text);
 
@@ -408,6 +403,25 @@
 
 
 
+static void
+exo_die_command_entry_model_loaded (ExoDieCommandModel *command_model,
+                                    ExoDieCommandEntry *command_entry)
+{
+  GtkEntryCompletion *completion;
+
+  /* allocate a new completion for the entry */
+  completion = gtk_entry_completion_new ();
+  gtk_entry_completion_set_minimum_key_length (completion, 1);
+  gtk_entry_completion_set_inline_completion (completion, TRUE);
+  gtk_entry_completion_set_popup_completion (completion, TRUE);
+  gtk_entry_completion_set_model (completion, GTK_TREE_MODEL (command_model));
+  gtk_entry_completion_set_text_column (completion, EXO_DIE_COMMAND_MODEL_COLUMN_NAME);
+  gtk_entry_set_completion (GTK_ENTRY (command_entry->entry), completion);
+  g_object_unref (G_OBJECT (completion));
+}
+
+
+
 /**
  * exo_die_command_entry_new:
  *

Modified: libexo/trunk/exo-desktop-item-edit/exo-die-command-model.c
===================================================================
--- libexo/trunk/exo-desktop-item-edit/exo-die-command-model.c	2006-08-06 13:55:00 UTC (rev 22674)
+++ libexo/trunk/exo-desktop-item-edit/exo-die-command-model.c	2006-08-06 18:57:32 UTC (rev 22675)
@@ -26,6 +26,15 @@
 
 
 
+/* Signal identifiers */
+enum
+{
+  LOADED,
+  LAST_SIGNAL,
+};
+
+
+
 static void               exo_die_command_model_class_init            (ExoDieCommandModelClass  *klass);
 static void               exo_die_command_model_tree_model_init       (GtkTreeModelIface        *iface);
 static void               exo_die_command_model_init                  (ExoDieCommandModel       *command_model);
@@ -85,6 +94,7 @@
 
 
 static GObjectClass *exo_die_command_model_parent_class;
+static guint         command_model_signals[LAST_SIGNAL];
 
 
 
@@ -135,6 +145,21 @@
 
   gobject_class = G_OBJECT_CLASS (klass);
   gobject_class->finalize = exo_die_command_model_finalize;
+
+  /**
+   * ExoDieCommandModel::loaded:
+   * @command_model : an #ExoDieCommandModel.
+   *
+   * Emitted by the @command_model once the completion
+   * data is loaded from the disk.
+   **/
+  command_model_signals[LOADED] =
+    g_signal_new (I_("loaded"),
+                  G_TYPE_FROM_CLASS (klass),
+                  G_SIGNAL_RUN_LAST,
+                  0, NULL, NULL,
+                  g_cclosure_marshal_VOID__VOID,
+                  G_TYPE_NONE, 0);
 }
 
 
@@ -423,6 +448,9 @@
     }
   gtk_tree_path_free (path);
 
+  /* tell the consumer that we are loaded */
+  g_signal_emit (G_OBJECT (command_model), command_model_signals[LOADED], 0);
+
   GDK_THREADS_LEAVE ();
 
   return FALSE;

Added: libexo/trunk/exo-desktop-item-edit/exo-die-desktop-model.c
===================================================================
--- libexo/trunk/exo-desktop-item-edit/exo-die-desktop-model.c	                        (rev 0)
+++ libexo/trunk/exo-desktop-item-edit/exo-die-desktop-model.c	2006-08-06 18:57:32 UTC (rev 22675)
@@ -0,0 +1,763 @@
+/* $Id$ */
+/*-
+ * Copyright (c) 2006 Benedikt Meurer <benny at 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_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include <exo-desktop-item-edit/exo-die-desktop-model.h>
+
+
+
+typedef struct _ExoDieDesktopItem ExoDieDesktopItem;
+
+
+
+static void               exo_die_desktop_model_class_init            (ExoDieDesktopModelClass  *klass);
+static void               exo_die_desktop_model_tree_model_init       (GtkTreeModelIface        *iface);
+static void               exo_die_desktop_model_init                  (ExoDieDesktopModel       *desktop_model);
+static void               exo_die_desktop_model_finalize              (GObject                  *object);
+static GtkTreeModelFlags  exo_die_desktop_model_get_flags             (GtkTreeModel             *tree_model);
+static gint               exo_die_desktop_model_get_n_columns         (GtkTreeModel             *tree_model);
+static GType              exo_die_desktop_model_get_column_type       (GtkTreeModel             *tree_model,
+                                                                       gint                      column);
+static gboolean           exo_die_desktop_model_get_iter              (GtkTreeModel             *tree_model,
+                                                                       GtkTreeIter              *iter,
+                                                                       GtkTreePath              *path);
+static GtkTreePath       *exo_die_desktop_model_get_path              (GtkTreeModel             *tree_model,
+                                                                       GtkTreeIter              *iter);
+static void               exo_die_desktop_model_get_value             (GtkTreeModel             *tree_model,
+                                                                       GtkTreeIter              *iter,
+                                                                       gint                      column,
+                                                                       GValue                   *value);
+static gboolean           exo_die_desktop_model_iter_next             (GtkTreeModel             *tree_model,
+                                                                       GtkTreeIter              *iter);
+static gboolean           exo_die_desktop_model_iter_children         (GtkTreeModel             *tree_model,
+                                                                       GtkTreeIter              *iter,
+                                                                       GtkTreeIter              *parent);
+static gboolean           exo_die_desktop_model_iter_has_child        (GtkTreeModel             *tree_model,
+                                                                       GtkTreeIter              *iter);
+static gint               exo_die_desktop_model_iter_n_children       (GtkTreeModel             *tree_model,
+                                                                       GtkTreeIter              *iter);
+static gboolean           exo_die_desktop_model_iter_nth_child        (GtkTreeModel             *tree_model,
+                                                                       GtkTreeIter              *iter,
+                                                                       GtkTreeIter              *parent,
+                                                                       gint                      n);
+static gboolean           exo_die_desktop_model_iter_parent           (GtkTreeModel             *tree_model,
+                                                                       GtkTreeIter              *iter,
+                                                                       GtkTreeIter              *child);
+static gboolean           exo_die_desktop_model_collect_idle          (gpointer                  user_data);
+static void               exo_die_desktop_model_collect_idle_destroy  (gpointer                  user_data);
+static GSList            *exo_die_desktop_model_collect_readdir       (ExoDieDesktopModel       *desktop_model,
+                                                                       const gchar              *dir_path);
+static gpointer           exo_die_desktop_model_collect_thread        (gpointer                  user_data);
+static ExoDieDesktopItem *exo_die_desktop_item_new_from_file          (const gchar              *file);
+static gint               exo_die_desktop_item_compare                (gconstpointer             desktop_item_a,
+                                                                       gconstpointer             desktop_item_b);
+static void               exo_die_desktop_item_free                   (ExoDieDesktopItem        *desktop_item);
+
+
+
+struct _ExoDieDesktopModelClass
+{
+  GObjectClass __parent__;
+};
+
+struct _ExoDieDesktopModel
+{
+  GObject           __parent__;
+  gint              stamp;
+  GSList           *items;
+
+  gint              collect_idle_id;
+  GSList           *collect_items;
+  GThread          *collect_thread;
+  volatile gboolean collect_cancelled;
+};
+
+struct _ExoDieDesktopItem
+{
+  gchar *command;
+  gchar *comment;
+  gchar *icon;
+  gchar *name;
+  guint  snotify : 1;
+  guint  terminal : 1;
+};
+
+
+
+static GObjectClass *exo_die_desktop_model_parent_class;
+
+
+
+GType
+exo_die_desktop_model_get_type (void)
+{
+  static GType type = G_TYPE_INVALID;
+
+  if (G_UNLIKELY (type == G_TYPE_INVALID))
+    {
+      static const GTypeInfo info =
+      {
+        sizeof (ExoDieDesktopModelClass),
+        NULL,
+        NULL,
+        (GClassInitFunc) exo_die_desktop_model_class_init,
+        NULL,
+        NULL,
+        sizeof (ExoDieDesktopModel),
+        0,
+        (GInstanceInitFunc) exo_die_desktop_model_init,
+        NULL,
+      };
+
+      static const GInterfaceInfo tree_model_info =
+      {
+        (GInterfaceInitFunc) exo_die_desktop_model_tree_model_init,
+        NULL,
+        NULL,
+      };
+
+      type = g_type_register_static (G_TYPE_OBJECT, I_("ExoDieDesktopModel"), &info, 0);
+      g_type_add_interface_static (type, GTK_TYPE_TREE_MODEL, &tree_model_info);
+    }
+
+  return type;
+}
+
+
+
+static void
+exo_die_desktop_model_class_init (ExoDieDesktopModelClass *klass)
+{
+  GObjectClass *gobject_class;
+
+  /* determine the parent type class */
+  exo_die_desktop_model_parent_class = g_type_class_peek_parent (klass);
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize = exo_die_desktop_model_finalize;
+}
+
+
+
+static void
+exo_die_desktop_model_tree_model_init (GtkTreeModelIface *iface)
+{
+  iface->get_flags = exo_die_desktop_model_get_flags;
+  iface->get_n_columns = exo_die_desktop_model_get_n_columns;
+  iface->get_column_type = exo_die_desktop_model_get_column_type;
+  iface->get_iter = exo_die_desktop_model_get_iter;
+  iface->get_path = exo_die_desktop_model_get_path;
+  iface->get_value = exo_die_desktop_model_get_value;
+  iface->iter_next = exo_die_desktop_model_iter_next;
+  iface->iter_children = exo_die_desktop_model_iter_children;
+  iface->iter_has_child = exo_die_desktop_model_iter_has_child;
+  iface->iter_n_children = exo_die_desktop_model_iter_n_children;
+  iface->iter_nth_child = exo_die_desktop_model_iter_nth_child;
+  iface->iter_parent = exo_die_desktop_model_iter_parent;
+}
+
+
+
+static void
+exo_die_desktop_model_init (ExoDieDesktopModel *desktop_model)
+{
+  /* generate a unique stamp */
+  desktop_model->stamp = g_random_int ();
+
+  /* spawn the collector thread */
+  desktop_model->collect_thread = g_thread_create_full (exo_die_desktop_model_collect_thread, desktop_model,
+                                                        0, TRUE, FALSE, G_THREAD_PRIORITY_LOW, NULL);
+}
+
+
+
+static void
+exo_die_desktop_model_finalize (GObject *object)
+{
+  ExoDieDesktopModel *desktop_model = EXO_DIE_DESKTOP_MODEL (object);
+
+  /* join the collector thread */
+  desktop_model->collect_cancelled = TRUE;
+  g_thread_join (desktop_model->collect_thread);
+
+  /* cancel any pending collect idle source */
+  if (G_UNLIKELY (desktop_model->collect_idle_id > 0))
+    g_source_remove (desktop_model->collect_idle_id);
+
+  /* release collected items (if any) */
+  g_slist_foreach (desktop_model->collect_items, (GFunc) exo_die_desktop_item_free, NULL);
+  g_slist_free (desktop_model->collect_items);
+
+  /* release all items */
+  g_slist_foreach (desktop_model->items, (GFunc) exo_die_desktop_item_free, NULL);
+  g_slist_free (desktop_model->items);
+
+  (*G_OBJECT_CLASS (exo_die_desktop_model_parent_class)->finalize) (object);
+}
+
+
+
+static GtkTreeModelFlags
+exo_die_desktop_model_get_flags (GtkTreeModel *tree_model)
+{
+  return GTK_TREE_MODEL_ITERS_PERSIST | GTK_TREE_MODEL_LIST_ONLY;
+}
+
+
+
+static gint
+exo_die_desktop_model_get_n_columns (GtkTreeModel *tree_model)
+{
+  return EXO_DIE_DESKTOP_MODEL_N_COLUMNS;
+}
+
+
+
+static GType
+exo_die_desktop_model_get_column_type (GtkTreeModel *tree_model,
+                                       gint          column)
+{
+  switch (column)
+    {
+    case EXO_DIE_DESKTOP_MODEL_COLUMN_ABSTRACT:
+    case EXO_DIE_DESKTOP_MODEL_COLUMN_COMMAND:
+    case EXO_DIE_DESKTOP_MODEL_COLUMN_COMMENT:
+    case EXO_DIE_DESKTOP_MODEL_COLUMN_ICON:
+    case EXO_DIE_DESKTOP_MODEL_COLUMN_NAME:
+      return G_TYPE_STRING;
+
+    case EXO_DIE_DESKTOP_MODEL_COLUMN_SNOTIFY:
+    case EXO_DIE_DESKTOP_MODEL_COLUMN_TERMINAL:
+      return G_TYPE_BOOLEAN;
+
+    default:
+      g_assert_not_reached ();
+      return G_TYPE_INVALID;
+    }
+}
+
+
+
+static gboolean
+exo_die_desktop_model_get_iter (GtkTreeModel *tree_model,
+                                GtkTreeIter  *iter,
+                                GtkTreePath  *path)
+{
+  ExoDieDesktopModel *desktop_model = EXO_DIE_DESKTOP_MODEL (tree_model);
+
+  g_return_val_if_fail (EXO_DIE_IS_DESKTOP_MODEL (desktop_model), FALSE);
+  g_return_val_if_fail (gtk_tree_path_get_depth (path) > 0, FALSE);
+
+  iter->stamp = desktop_model->stamp;
+  iter->user_data = g_slist_nth (desktop_model->items, gtk_tree_path_get_indices (path)[0]);
+
+  return (iter->user_data != NULL);
+}
+
+
+
+static GtkTreePath*
+exo_die_desktop_model_get_path (GtkTreeModel *tree_model,
+                                GtkTreeIter  *iter)
+{
+  ExoDieDesktopModel *desktop_model = EXO_DIE_DESKTOP_MODEL (tree_model);
+  gint                index;
+
+  g_return_val_if_fail (EXO_DIE_IS_DESKTOP_MODEL (desktop_model), NULL);
+  g_return_val_if_fail (iter->stamp == desktop_model->stamp, NULL);
+
+  /* determine the index of the iter */
+  index = g_slist_position (desktop_model->items, iter->user_data);
+  if (G_UNLIKELY (index < 0))
+    return NULL;
+
+  return gtk_tree_path_new_from_indices (index, -1);
+}
+
+
+
+static void
+exo_die_desktop_model_get_value (GtkTreeModel *tree_model,
+                                 GtkTreeIter  *iter,
+                                 gint          column,
+                                 GValue       *value)
+{
+  ExoDieDesktopModel *desktop_model = EXO_DIE_DESKTOP_MODEL (tree_model);
+  ExoDieDesktopItem  *desktop_item;
+  gchar              *escaped;
+
+  g_return_if_fail (EXO_DIE_IS_DESKTOP_MODEL (desktop_model));
+  g_return_if_fail (iter->stamp == desktop_model->stamp);
+
+  desktop_item = g_slist_nth_data (iter->user_data, 0);
+
+  switch (column)
+    {
+    case EXO_DIE_DESKTOP_MODEL_COLUMN_ABSTRACT:
+      g_value_init (value, G_TYPE_STRING);
+      escaped = g_markup_escape_text (desktop_item->name, -1);
+      g_value_take_string (value, g_strdup_printf (_("Create Launcher <b>%s</b>"), escaped));
+      g_free (escaped);
+      break;
+
+    case EXO_DIE_DESKTOP_MODEL_COLUMN_COMMAND:
+      g_value_init (value, G_TYPE_STRING);
+      g_value_set_static_string (value, desktop_item->command);
+      break;
+
+    case EXO_DIE_DESKTOP_MODEL_COLUMN_COMMENT:
+      g_value_init (value, G_TYPE_STRING);
+      g_value_set_static_string (value, desktop_item->comment);
+      break;
+
+    case EXO_DIE_DESKTOP_MODEL_COLUMN_ICON:
+      g_value_init (value, G_TYPE_STRING);
+      g_value_set_static_string (value, desktop_item->icon);
+      break;
+
+    case EXO_DIE_DESKTOP_MODEL_COLUMN_NAME:
+      g_value_init (value, G_TYPE_STRING);
+      g_value_set_static_string (value, desktop_item->name);
+      break;
+
+    case EXO_DIE_DESKTOP_MODEL_COLUMN_SNOTIFY:
+      g_value_init (value, G_TYPE_BOOLEAN);
+      g_value_set_boolean (value, desktop_item->snotify);
+      break;
+
+    case EXO_DIE_DESKTOP_MODEL_COLUMN_TERMINAL:
+      g_value_init (value, G_TYPE_BOOLEAN);
+      g_value_set_boolean (value, desktop_item->terminal);
+      break;
+
+    default:
+      g_assert_not_reached ();
+      break;
+    }
+}
+
+
+
+static gboolean
+exo_die_desktop_model_iter_next (GtkTreeModel *tree_model,
+                                 GtkTreeIter  *iter)
+{
+  g_return_val_if_fail (EXO_DIE_IS_DESKTOP_MODEL (tree_model), FALSE);
+  g_return_val_if_fail (iter->stamp == EXO_DIE_DESKTOP_MODEL (tree_model)->stamp, FALSE);
+
+  iter->user_data = g_slist_next (iter->user_data);
+  return (iter->user_data != NULL);
+}
+
+
+
+static gboolean
+exo_die_desktop_model_iter_children (GtkTreeModel *tree_model,
+                                     GtkTreeIter  *iter,
+                                     GtkTreeIter  *parent)
+{
+  ExoDieDesktopModel *desktop_model = EXO_DIE_DESKTOP_MODEL (tree_model);
+
+  g_return_val_if_fail (EXO_DIE_IS_DESKTOP_MODEL (desktop_model), FALSE);
+
+  if (G_LIKELY (parent == NULL && desktop_model->items != NULL))
+    {
+      iter->stamp = desktop_model->stamp;
+      iter->user_data = desktop_model->items;
+      return TRUE;
+    }
+
+  return FALSE;
+}
+
+
+
+static gboolean
+exo_die_desktop_model_iter_has_child (GtkTreeModel *tree_model,
+                                      GtkTreeIter  *iter)
+{
+  return FALSE;
+}
+
+
+
+static gint
+exo_die_desktop_model_iter_n_children (GtkTreeModel *tree_model,
+                                       GtkTreeIter  *iter)
+{
+  ExoDieDesktopModel *desktop_model = EXO_DIE_DESKTOP_MODEL (tree_model);
+
+  g_return_val_if_fail (EXO_DIE_IS_DESKTOP_MODEL (desktop_model), 0);
+
+  return (iter == NULL) ? g_slist_length (desktop_model->items) : 0;
+}
+
+
+
+static gboolean
+exo_die_desktop_model_iter_nth_child (GtkTreeModel *tree_model,
+                                      GtkTreeIter  *iter,
+                                      GtkTreeIter  *parent,
+                                      gint          n)
+{
+  ExoDieDesktopModel *desktop_model = EXO_DIE_DESKTOP_MODEL (tree_model);
+
+  g_return_val_if_fail (EXO_DIE_IS_DESKTOP_MODEL (desktop_model), FALSE);
+
+  if (G_LIKELY (parent != NULL))
+    {
+      iter->stamp = desktop_model->stamp;
+      iter->user_data = g_slist_nth (desktop_model->items, n);
+      return (iter->user_data != NULL);
+    }
+
+  return FALSE;
+}
+
+
+
+static gboolean
+exo_die_desktop_model_iter_parent (GtkTreeModel *tree_model,
+                                   GtkTreeIter  *iter,
+                                   GtkTreeIter  *child)
+{
+  return FALSE;
+}
+
+
+
+static gboolean
+exo_die_desktop_model_collect_idle (gpointer user_data)
+{
+  ExoDieDesktopModel *desktop_model = EXO_DIE_DESKTOP_MODEL (user_data);
+  GtkTreePath        *path;
+  GtkTreeIter         iter;
+  GSList             *lp;
+  GSList             *np;
+
+  g_return_val_if_fail (EXO_DIE_IS_DESKTOP_MODEL (desktop_model), FALSE);
+  g_return_val_if_fail (desktop_model->items == NULL, FALSE);
+
+  GDK_THREADS_ENTER ();
+
+  /* move the collected items "online" */
+  desktop_model->items = desktop_model->collect_items;
+  desktop_model->collect_items = NULL;
+
+  /* emit notifications for all new items */
+  path = gtk_tree_path_new_first ();
+  for (lp = desktop_model->items; lp != NULL; lp = lp->next)
+    {
+      /* remember the next item */
+      np = lp->next;
+      lp->next = NULL;
+
+      /* generate the iterator */
+      iter.stamp = desktop_model->stamp;
+      iter.user_data = lp;
+
+      /* emit the "row-inserted" signal */
+      gtk_tree_model_row_inserted (GTK_TREE_MODEL (desktop_model), path, &iter);
+
+      /* advance the path */
+      gtk_tree_path_next (path);
+
+      /* reset the next item */
+      lp->next = np;
+    }
+  gtk_tree_path_free (path);
+
+  GDK_THREADS_LEAVE ();
+
+  return FALSE;
+}
+
+
+
+static void
+exo_die_desktop_model_collect_idle_destroy (gpointer user_data)
+{
+  EXO_DIE_DESKTOP_MODEL (user_data)->collect_idle_id = 0;
+}
+
+
+
+static GSList*
+exo_die_desktop_model_collect_readdir (ExoDieDesktopModel *desktop_model,
+                                       const gchar        *dir_path)
+{
+  ExoDieDesktopItem *desktop_item;
+  const gchar       *name;
+  GSList            *items = NULL;
+  gchar             *path;
+  GDir              *dp;
+
+  /* try to open the directory */
+  dp = g_dir_open (dir_path, 0, NULL);
+  if (G_LIKELY (dp != NULL))
+    {
+      /* process the files within this directory */
+      while (!desktop_model->collect_cancelled)
+        {
+          /* read the next file entry */
+          name = g_dir_read_name (dp);
+          if (G_UNLIKELY (name == NULL))
+            break;
+
+          /* generate the absolute path to the file entry */
+          path = g_build_filename (dir_path, name, NULL);
+
+          /* check if we have a directory or a regular file here */
+          if (g_file_test (path, G_FILE_TEST_IS_DIR))
+            {
+              /* recurse for directories */
+              items = g_slist_concat (items, exo_die_desktop_model_collect_readdir (desktop_model, path));
+            }
+          else if (g_file_test (path, G_FILE_TEST_IS_REGULAR) && g_str_has_suffix (name, ".desktop"))
+            {
+              /* try to parse the .desktop file */
+              desktop_item = exo_die_desktop_item_new_from_file (path);
+              if (G_LIKELY (desktop_item != NULL))
+                items = g_slist_prepend (items, desktop_item);
+            }
+
+          /* cleanup */
+          g_free (path);
+        }
+
+      /* close the directory handle */
+      g_dir_close (dp);
+    }
+
+  return items;
+}
+
+
+
+static gpointer
+exo_die_desktop_model_collect_thread (gpointer user_data)
+{
+  ExoDieDesktopModel *desktop_model = EXO_DIE_DESKTOP_MODEL (user_data);
+  GSList             *items = NULL;
+  gchar             **paths;
+  guint               n;
+
+  /* determine the available applications/ directories */
+  paths = xfce_resource_lookup_all (XFCE_RESOURCE_DATA, "applications/");
+  for (n = 0; !desktop_model->collect_cancelled && paths[n] != NULL; ++n)
+    {
+      /* collect this directory */
+      items = g_slist_concat (items, exo_die_desktop_model_collect_readdir (desktop_model, paths[n]));
+    }
+
+  /* check if we're still active */
+  if (G_LIKELY (!desktop_model->collect_cancelled && items != NULL))
+    {
+      /* tell the model about the items (sorting the items by their names) */
+      desktop_model->collect_items = g_slist_sort (items, exo_die_desktop_item_compare);
+
+      /* and schedule an idle source */
+      desktop_model->collect_idle_id = g_idle_add_full (G_PRIORITY_LOW, exo_die_desktop_model_collect_idle,
+                                                        desktop_model, exo_die_desktop_model_collect_idle_destroy);
+    }
+  else
+    {
+      /* release the collected items */
+      g_slist_foreach (items, (GFunc) exo_die_desktop_item_free, NULL);
+      g_slist_free (items);
+    }
+
+  /* cleanup */
+  g_strfreev (paths);
+
+  return NULL;
+}
+
+
+
+static ExoDieDesktopItem*
+exo_die_desktop_item_new_from_file (const gchar *file)
+{
+  ExoDieDesktopItem *desktop_item = NULL;
+  const gchar       *comment;
+  const gchar       *command;
+  const gchar       *icon;
+  const gchar       *name;
+  XfceRc            *rc;
+  gint               icon_len;
+
+  /* try to open the file */
+  rc = xfce_rc_simple_open (file, TRUE);
+  if (G_LIKELY (rc != NULL))
+    {
+      /* skip hidden items to avoid confusion */
+      xfce_rc_set_group (rc, "Desktop Entry");
+      if (!xfce_rc_read_bool_entry (rc, "Hidden", FALSE) && !xfce_rc_read_bool_entry (rc, "NoDisplay", FALSE))
+        {
+          /* determine the attributes from the file */
+          command = xfce_rc_read_entry_untranslated (rc, "Exec", NULL);
+          comment = xfce_rc_read_entry (rc, "Comment", NULL);
+          icon = xfce_rc_read_entry (rc, "Icon", NULL);
+          name = xfce_rc_read_entry (rc, "Name", NULL);
+
+          /* check if the required attributes were found */
+          if (G_LIKELY (command != NULL && name != NULL))
+            {
+              /* allocate the desktop item */
+              desktop_item = g_new (ExoDieDesktopItem, 1);
+              desktop_item->command = g_strdup (command);
+              desktop_item->comment = g_strdup (comment);
+              desktop_item->icon = g_strdup (icon);
+              desktop_item->name = g_strdup (name);
+
+              /* strip off known extensions from the icon */
+              if (G_LIKELY (desktop_item->icon != NULL))
+                {
+                  /* check if ends with ".png" */
+                  icon_len = strlen (desktop_item->icon);
+                  if (icon_len > 4 && strcmp (desktop_item->icon + (icon_len - 4), ".png") == 0)
+                    desktop_item->icon[icon_len - 4] = '\0';
+                }
+
+              /* strip the "Xfce 4 " prefix from the names */
+              if (strncmp (desktop_item->name, "Xfce 4 ", 7) == 0)
+                {
+                  /* release the full name */
+                  g_free (desktop_item->name);
+
+                  /* use the short name */
+                  desktop_item->name = g_strdup (name + 7);
+                }
+
+              /* check if startup notification is supported */
+              desktop_item->snotify = (xfce_rc_read_bool_entry (rc, "StartupNotify", FALSE) || xfce_rc_read_bool_entry (rc, "X-KDE-StartupNotify", FALSE));
+
+              /* check if should be run in terminal */
+              desktop_item->terminal = xfce_rc_read_bool_entry (rc, "Terminal", FALSE) ? TRUE : FALSE;
+            }
+        }
+
+      /* close the file */
+      xfce_rc_close (rc);
+    }
+
+  return desktop_item;
+}
+
+
+
+static gint
+exo_die_desktop_item_compare (gconstpointer desktop_item_a,
+                              gconstpointer desktop_item_b)
+{
+  return g_utf8_collate (((ExoDieDesktopItem *) desktop_item_a)->name, ((ExoDieDesktopItem *) desktop_item_b)->name);
+}
+
+
+
+static void
+exo_die_desktop_item_free (ExoDieDesktopItem *desktop_item)
+{
+  g_free (desktop_item->command);
+  g_free (desktop_item->comment);
+  g_free (desktop_item->icon);
+  g_free (desktop_item->name);
+  g_free (desktop_item);
+}
+
+
+
+/**
+ * exo_die_desktop_model_new:
+ *
+ * Allocates a new #ExoDieDesktopModel instance.
+ *
+ * Return value: the newly allocated #ExoDieDesktopModel.
+ **/
+ExoDieDesktopModel*
+exo_die_desktop_model_new (void)
+{
+  return g_object_new (EXO_DIE_TYPE_DESKTOP_MODEL, NULL);
+}
+
+
+
+/**
+ * exo_die_desktop_model_match_func:
+ * @completion : a #GtkEntryCompletion.
+ * @key        : the text to match.
+ * @iter       : a valid #GtkTreeIter for the row to match.
+ * @user_data  : a #ExoDieDesktopModel.
+ *
+ * Convenience function to match the @iter with the specified @key.
+ *
+ * Return value: %TRUE if @iter is a possible match, %FALSE otherwise.
+ **/
+gboolean
+exo_die_desktop_model_match_func (GtkEntryCompletion *completion,
+                                  const gchar        *key,
+                                  GtkTreeIter        *iter,
+                                  gpointer            user_data)
+{
+  ExoDieDesktopModel *desktop_model = EXO_DIE_DESKTOP_MODEL (user_data);
+  ExoDieDesktopItem  *desktop_item;
+  gboolean            matches = FALSE;
+  gchar              *casefolded;
+  gchar              *normalized;
+
+  g_return_val_if_fail (EXO_DIE_IS_DESKTOP_MODEL (desktop_model), FALSE);
+  g_return_val_if_fail (GTK_IS_ENTRY_COMPLETION (completion), FALSE);
+  g_return_val_if_fail (iter->stamp == desktop_model->stamp, FALSE);
+  g_return_val_if_fail (g_utf8_validate (key, -1, NULL), FALSE);
+
+  /* determine the item for the iter */
+  desktop_item = g_slist_nth_data (iter->user_data, 0);
+
+  /* check if the name matches */
+  normalized = g_utf8_normalize (desktop_item->name, -1, G_NORMALIZE_ALL);
+  casefolded = g_utf8_casefold (normalized, -1);
+  matches = (strstr (casefolded, key) != NULL);
+  g_free (casefolded);
+  g_free (normalized);
+
+  /* check if no hit yet */
+  if (G_LIKELY (!matches && desktop_item->comment != NULL))
+    {
+      /* also check the comment then */
+      normalized = g_utf8_normalize (desktop_item->comment, -1, G_NORMALIZE_ALL);
+      casefolded = g_utf8_casefold (normalized, -1);
+      matches = (strstr (casefolded, key) != NULL);
+      g_free (casefolded);
+      g_free (normalized);
+    }
+
+  return matches;
+}
+


Property changes on: libexo/trunk/exo-desktop-item-edit/exo-die-desktop-model.c
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Rev

Added: libexo/trunk/exo-desktop-item-edit/exo-die-desktop-model.h
===================================================================
--- libexo/trunk/exo-desktop-item-edit/exo-die-desktop-model.h	                        (rev 0)
+++ libexo/trunk/exo-desktop-item-edit/exo-die-desktop-model.h	2006-08-06 18:57:32 UTC (rev 22675)
@@ -0,0 +1,73 @@
+/* $Id$ */
+/*-
+ * Copyright (c) 2006 Benedikt Meurer <benny at 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.
+ */
+
+#ifndef __EXO_DIE_DESKTOP_MODEL_H__
+#define __EXO_DIE_DESKTOP_MODEL_H__
+
+#include <exo/exo.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ExoDieDesktopModelClass ExoDieDesktopModelClass;
+typedef struct _ExoDieDesktopModel      ExoDieDesktopModel;
+
+#define EXO_DIE_TYPE_DESKTOP_MODEL            (exo_die_desktop_model_get_type ())
+#define EXO_DIE_DESKTOP_MODEL(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), EXO_DIE_TYPE_DESKTOP_MODEL, ExoDieDesktopModel))
+#define EXO_DIE_DESKTOP_MODEL_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), EXO_DIE_TYPE_DESKTOP_MODEL, ExoDieDesktopModelClass))
+#define EXO_DIE_IS_DESKTOP_MODEL(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EXO_DIE_TYPE_DESKTOP_MODEL))
+#define EXO_DIE_IS_DESKTOP_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EXO_DIE_TYPE_DESKTOP_MODEL))
+#define EXO_DIE_DESKTOP_MODEL_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), EXO_DIE_TYPE_DESKTOP_MODEL, ExoDieDesktopModelClass))
+
+/**
+ * ExoDieDesktopModelColumn:
+ * @EXO_DIE_DESKTOP_MODEL_COLUMN_ABSTRACT : the column with the markup text for the renderer.
+ * @EXO_DIE_DESKTOP_MODEL_COLUMN_COMMAND  : the column with the application command.
+ * @EXO_DIE_DESKTOP_MODEL_COLUMN_COMMENT  : the column with the application comment.
+ * @EXO_DIE_DESKTOP_MODEL_COLUMN_ICON     : the column with the application icon.
+ * @EXO_DIE_DESKTOP_MODEL_COLUMN_NAME     : the column with the application name.
+ * @EXO_DIE_DESKTOP_MODEL_COLUMN_SNOTIFY  : the column with the applications StartupNotify setting.
+ * @EXO_DIE_DESKTOP_MODEL_COLUMN_TERMINAL : the column with the applications Terminal setting.
+ *
+ * The columns provided by the #ExoDieDesktopModel.
+ **/
+typedef enum /*< enum >*/
+{
+  EXO_DIE_DESKTOP_MODEL_COLUMN_ABSTRACT,
+  EXO_DIE_DESKTOP_MODEL_COLUMN_COMMAND,
+  EXO_DIE_DESKTOP_MODEL_COLUMN_COMMENT,
+  EXO_DIE_DESKTOP_MODEL_COLUMN_ICON,
+  EXO_DIE_DESKTOP_MODEL_COLUMN_NAME,
+  EXO_DIE_DESKTOP_MODEL_COLUMN_SNOTIFY,
+  EXO_DIE_DESKTOP_MODEL_COLUMN_TERMINAL,
+  EXO_DIE_DESKTOP_MODEL_N_COLUMNS,
+} ExoDieDesktopModelColumn;
+
+GType               exo_die_desktop_model_get_type    (void) G_GNUC_CONST;
+
+ExoDieDesktopModel *exo_die_desktop_model_new         (void) G_GNUC_MALLOC;
+
+gboolean            exo_die_desktop_model_match_func  (GtkEntryCompletion *completion,
+                                                       const gchar        *key,
+                                                       GtkTreeIter        *iter,
+                                                       gpointer            user_data);
+
+G_END_DECLS;
+
+#endif /* !__EXO_DIE_DESKTOP_MODEL_H__ */


Property changes on: libexo/trunk/exo-desktop-item-edit/exo-die-desktop-model.h
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Rev

Modified: libexo/trunk/exo-desktop-item-edit/exo-die-editor.c
===================================================================
--- libexo/trunk/exo-desktop-item-edit/exo-die-editor.c	2006-08-06 13:55:00 UTC (rev 22674)
+++ libexo/trunk/exo-desktop-item-edit/exo-die-editor.c	2006-08-06 18:57:32 UTC (rev 22675)
@@ -23,6 +23,7 @@
 #endif
 
 #include <exo-desktop-item-edit/exo-die-command-entry.h>
+#include <exo-desktop-item-edit/exo-die-desktop-model.h>
 #include <exo-desktop-item-edit/exo-die-editor.h>
 
 
@@ -44,19 +45,28 @@
 
 
 
-static void exo_die_editor_class_init   (ExoDieEditorClass  *klass);
-static void exo_die_editor_init         (ExoDieEditor       *editor);
-static void exo_die_editor_finalize     (GObject            *object);
-static void exo_die_editor_get_property (GObject            *object,
-                                         guint               prop_id,
-                                         GValue             *value,
-                                         GParamSpec         *pspec);
-static void exo_die_editor_set_property (GObject            *object,
-                                         guint               prop_id,
-                                         const GValue       *value,
-                                         GParamSpec         *pspec);
-static void exo_die_editor_icon_clicked (GtkWidget          *button,
-                                         ExoDieEditor       *editor);
+static void     exo_die_editor_class_init     (ExoDieEditorClass  *klass);
+static void     exo_die_editor_init           (ExoDieEditor       *editor);
+static void     exo_die_editor_finalize       (GObject            *object);
+static void     exo_die_editor_get_property   (GObject            *object,
+                                               guint               prop_id,
+                                               GValue             *value,
+                                               GParamSpec         *pspec);
+static void     exo_die_editor_set_property   (GObject            *object,
+                                               guint               prop_id,
+                                               const GValue       *value,
+                                               GParamSpec         *pspec);
+static void     exo_die_editor_icon_clicked   (GtkWidget          *button,
+                                               ExoDieEditor       *editor);
+static gboolean exo_die_editor_match_selected (GtkEntryCompletion *completion,
+                                               GtkTreeModel       *model,
+                                               GtkTreeIter        *iter,
+                                               gpointer            user_data);
+static void     exo_die_editor_cell_data_func (GtkCellLayout      *cell_layout,
+                                               GtkCellRenderer    *renderer,
+                                               GtkTreeModel       *model,
+                                               GtkTreeIter        *iter,
+                                               gpointer            user_data);
 
 
 
@@ -68,6 +78,7 @@
 struct _ExoDieEditor
 {
   GtkTable         __parent__;
+  GtkWidget       *name_entry;
   GtkWidget       *icon_button;
   GtkTooltips     *tooltips;
   ExoDieEditorMode mode;
@@ -152,7 +163,7 @@
                                    g_param_spec_enum ("mode", "mode", "mode",
                                                       EXO_DIE_TYPE_EDITOR_MODE,
                                                       EXO_DIE_EDITOR_MODE_APPLICATION,
-                                                      EXO_PARAM_READWRITE));
+                                                      EXO_PARAM_READWRITE | G_PARAM_CONSTRUCT));
 
   /**
    * ExoDieEditor:name:
@@ -285,6 +296,7 @@
   gint       row;
 
   /* start with sane defaults */
+  editor->mode = EXO_DIE_EDITOR_MODE_LINK;
   editor->command = g_strdup ("");
   editor->comment = g_strdup ("");
   editor->icon = g_strdup ("");
@@ -311,12 +323,12 @@
   gtk_widget_show (label);
   g_free (text);
 
-  entry = gtk_entry_new ();
-  gtk_entry_set_activates_default (GTK_ENTRY (entry), TRUE);
-  exo_mutual_binding_new (G_OBJECT (editor), "name", G_OBJECT (entry), "text");
-  gtk_table_attach (GTK_TABLE (editor), entry, 1, 2, row, row + 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 3);
-  gtk_label_set_mnemonic_widget (GTK_LABEL (label), entry);
-  gtk_widget_show (entry);
+  editor->name_entry = gtk_entry_new ();
+  gtk_entry_set_activates_default (GTK_ENTRY (editor->name_entry), TRUE);
+  exo_mutual_binding_new (G_OBJECT (editor), "name", G_OBJECT (editor->name_entry), "text");
+  gtk_table_attach (GTK_TABLE (editor), editor->name_entry, 1, 2, row, row + 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 3);
+  gtk_label_set_mnemonic_widget (GTK_LABEL (label), editor->name_entry);
+  gtk_widget_show (editor->name_entry);
 
   row += 1;
 
@@ -695,6 +707,111 @@
 
 
 
+static gboolean
+exo_die_editor_match_selected (GtkEntryCompletion *completion,
+                               GtkTreeModel       *model,
+                               GtkTreeIter        *iter,
+                               gpointer            user_data)
+{
+  ExoDieEditor *editor = EXO_DIE_EDITOR (user_data);
+  gboolean      terminal;
+  gboolean      snotify;
+  gchar        *comment;
+  gchar        *command;
+  gchar        *icon;
+  gchar        *name;
+
+  g_return_val_if_fail (GTK_IS_ENTRY_COMPLETION (completion), FALSE);
+  g_return_val_if_fail (EXO_DIE_IS_EDITOR (editor), FALSE);
+  g_return_val_if_fail (GTK_IS_TREE_MODEL (model), FALSE);
+
+  /* determine the attributes for the selected row */
+  gtk_tree_model_get (model, iter,
+                      EXO_DIE_DESKTOP_MODEL_COLUMN_COMMENT, &comment,
+                      EXO_DIE_DESKTOP_MODEL_COLUMN_COMMAND, &command,
+                      EXO_DIE_DESKTOP_MODEL_COLUMN_ICON, &icon,
+                      EXO_DIE_DESKTOP_MODEL_COLUMN_NAME, &name,
+                      EXO_DIE_DESKTOP_MODEL_COLUMN_SNOTIFY, &snotify,
+                      EXO_DIE_DESKTOP_MODEL_COLUMN_TERMINAL, &terminal,
+                      -1);
+
+  /* apply the settings to the editor */
+  exo_die_editor_set_name (editor, name);
+  exo_die_editor_set_comment (editor, (comment != NULL) ? comment : "");
+  exo_die_editor_set_command (editor, command);
+  exo_die_editor_set_icon (editor, (icon != NULL) ? icon : "");
+  exo_die_editor_set_snotify (editor, snotify);
+  exo_die_editor_set_terminal (editor, terminal);
+
+  /* cleanup */
+  g_free (comment);
+  g_free (command);
+  g_free (icon);
+  g_free (name);
+
+  return TRUE;
+}
+
+
+
+static void
+exo_die_editor_cell_data_func (GtkCellLayout   *cell_layout,
+                               GtkCellRenderer *renderer,
+                               GtkTreeModel    *model,
+                               GtkTreeIter     *iter,
+                               gpointer         user_data)
+{
+  ExoDieEditor *editor = EXO_DIE_EDITOR (user_data);
+  GtkIconTheme *icon_theme;
+  GdkPixbuf    *pixbuf_scaled;
+  GdkPixbuf    *pixbuf = NULL;
+  gchar        *icon;
+  gint          pixbuf_width;
+  gint          pixbuf_height;
+
+  /* determine the icon for the row */
+  gtk_tree_model_get (model, iter, EXO_DIE_DESKTOP_MODEL_COLUMN_ICON, &icon, -1);
+
+  /* check the icon depending on the type */
+  if (icon != NULL && g_path_is_absolute (icon))
+    {
+      /* try to load the icon from the file */
+      pixbuf = gdk_pixbuf_new_from_file (icon, NULL);
+    }
+  else if (icon != NULL && *icon != '\0')
+    {
+      /* determine the appropriate icon theme */
+      icon_theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (GTK_WIDGET (editor)));
+
+      /* try to load the named icon */
+      pixbuf = gtk_icon_theme_load_icon (icon_theme, icon, 16, 0, NULL);
+    }
+
+  /* setup the icon button */
+  if (G_LIKELY (pixbuf != NULL))
+    {
+      /* scale down the icon if required */
+      pixbuf_width = gdk_pixbuf_get_width (pixbuf);
+      pixbuf_height = gdk_pixbuf_get_height (pixbuf);
+      if (G_UNLIKELY (pixbuf_width > 16 || pixbuf_height > 16))
+        {
+          pixbuf_scaled = exo_gdk_pixbuf_scale_ratio (pixbuf, 16);
+          g_object_unref (G_OBJECT (pixbuf));
+          pixbuf = pixbuf_scaled;
+        }
+    }
+
+  /* setup the pixbuf for the renderer */
+  g_object_set (G_OBJECT (renderer), "pixbuf", pixbuf, NULL);
+
+  /* cleanup */
+  if (G_LIKELY (pixbuf != NULL))
+    g_object_unref (G_OBJECT (pixbuf));
+  g_free (icon);
+}
+
+
+
 /**
  * exo_die_editor_new:
  *
@@ -770,6 +887,10 @@
 exo_die_editor_set_mode (ExoDieEditor    *editor,
                          ExoDieEditorMode mode)
 {
+  ExoDieDesktopModel *desktop_model;
+  GtkEntryCompletion *completion;
+  GtkCellRenderer    *renderer;
+
   g_return_if_fail (EXO_DIE_IS_EDITOR (editor));
 
   /* check if we have a new mode here */
@@ -778,6 +899,42 @@
       /* apply the new mode */
       editor->mode = mode;
 
+      /* enable name completion based on the mode */
+      if (mode == EXO_DIE_EDITOR_MODE_APPLICATION)
+        {
+          /* allocate a new completion for the name entry */
+          completion = gtk_entry_completion_new ();
+          gtk_entry_completion_set_inline_completion (completion, TRUE);
+          gtk_entry_completion_set_minimum_key_length (completion, 3);
+          gtk_entry_completion_set_popup_completion (completion, TRUE);
+          g_signal_connect (G_OBJECT (completion), "match-selected", G_CALLBACK (exo_die_editor_match_selected), editor);
+          gtk_entry_set_completion (GTK_ENTRY (editor->name_entry), completion);
+          g_object_unref (G_OBJECT (completion));
+
+          /* allocate the desktop application model */
+          desktop_model = exo_die_desktop_model_new ();
+          gtk_entry_completion_set_match_func (completion, exo_die_desktop_model_match_func, desktop_model, NULL);
+          gtk_entry_completion_set_model (completion, GTK_TREE_MODEL (desktop_model));
+          g_object_unref (G_OBJECT (desktop_model));
+
+          /* add the icon renderer */
+          renderer = gtk_cell_renderer_pixbuf_new ();
+          gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (completion), renderer, FALSE);
+          gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (completion), renderer, exo_die_editor_cell_data_func, editor, NULL);
+
+          /* add the text renderer */
+          renderer = g_object_new (GTK_TYPE_CELL_RENDERER_TEXT, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
+          gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (completion), renderer, TRUE);
+          gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (completion), renderer,
+                                          "markup", EXO_DIE_DESKTOP_MODEL_COLUMN_ABSTRACT,
+                                          NULL);
+        }
+      else
+        {
+          /* completion is disabled for links */
+          gtk_entry_set_completion (GTK_ENTRY (editor->name_entry), NULL);
+        }
+
       /* notify listeners */
       g_object_notify (G_OBJECT (editor), "complete");
       g_object_notify (G_OBJECT (editor), "mode");

Modified: libexo/trunk/exo-desktop-item-edit/main.c
===================================================================
--- libexo/trunk/exo-desktop-item-edit/main.c	2006-08-06 13:55:00 UTC (rev 22674)
+++ libexo/trunk/exo-desktop-item-edit/main.c	2006-08-06 18:57:32 UTC (rev 22675)
@@ -222,7 +222,7 @@
   if (G_UNLIKELY (enum_value == NULL))
     {
       /* tell the user that we don't support the type */
-      s = g_strdup_printf (_("Unsupported desktop file type '%s'"), value);
+      s = g_strdup_printf (_("Unsupported desktop file type \"%s\""), value);
       g_fprintf (stderr, "%s: %s: %s\n", g_get_prgname (), argv[1], s);
       g_free (s);
 
@@ -238,7 +238,7 @@
                                                 NULL, GTK_DIALOG_NO_SEPARATOR,
                                                 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                                 NULL);
-  gtk_window_set_default_size (GTK_WINDOW (dialog), 430, 400);
+  gtk_window_set_default_size (GTK_WINDOW (dialog), 450, 400);
   gtk_window_set_icon_name (GTK_WINDOW (dialog), ICON_NAMES[mode]);
 
   /* add the "Create"/"Save" button (as default) */

Modified: libexo/trunk/po/ChangeLog
===================================================================
--- libexo/trunk/po/ChangeLog	2006-08-06 13:55:00 UTC (rev 22674)
+++ libexo/trunk/po/ChangeLog	2006-08-06 18:57:32 UTC (rev 22675)
@@ -1,3 +1,9 @@
+2006-08-06  Benedikt Meurer <benny at xfce.org>
+
+	* POTFILES.in: Add new files here.
+	* libexo-0.3.pot, *.po: Updated.
+	* de.po: Update german translations.
+
 2006-07-16  Adriano Winter Bess  <adriano at xfce.org>
 
 	* pt_BR.po: Updated brazilian portuguese translations

Modified: libexo/trunk/po/POTFILES.in
===================================================================
--- libexo/trunk/po/POTFILES.in	2006-08-06 13:55:00 UTC (rev 22674)
+++ libexo/trunk/po/POTFILES.in	2006-08-06 18:57:32 UTC (rev 22675)
@@ -26,6 +26,7 @@
 exo-csource/main.c
 
 exo-desktop-item-edit/exo-die-command-entry.c
+exo-desktop-item-edit/exo-die-desktop-model.c
 exo-desktop-item-edit/exo-die-editor.c
 exo-desktop-item-edit/exo-die-enum-types.c
 exo-desktop-item-edit/main.c

Modified: libexo/trunk/po/ca.po
===================================================================
--- libexo/trunk/po/ca.po	2006-08-06 13:55:00 UTC (rev 22674)
+++ libexo/trunk/po/ca.po	2006-08-06 18:57:32 UTC (rev 22675)
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: exo 0.3.1.8beta2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-06-16 21:58+0900\n"
+"POT-Creation-Date: 2006-08-06 20:55+0200\n"
 "PO-Revision-Date: 2006-05-15 00:52+0100\n"
 "Last-Translator: Carles Muñoz Gorriz <carlesmu at internautas.org>\n"
 "Language-Team: Catalan\n"
@@ -19,7 +19,7 @@
 "Plural-Forms: Plural-Forms: nplurals=2; plural=(n > 1);\n"
 "X-Generator: KBabel 1.11.2\n"
 
-#: ../exo/exo-icon-bar.c:249 ../exo/exo-icon-view.c:783
+#: ../exo/exo-icon-bar.c:249 ../exo/exo-icon-view.c:782
 msgid "Orientation"
 msgstr "Orientació"
 
@@ -27,19 +27,19 @@
 msgid "The orientation of the iconbar"
 msgstr "Orientació de la barra d'icones"
 
-#: ../exo/exo-icon-bar.c:266 ../exo/exo-icon-view.c:800
+#: ../exo/exo-icon-bar.c:266 ../exo/exo-icon-view.c:799
 msgid "Pixbuf column"
 msgstr "Columna de memòria de píxel"
 
-#: ../exo/exo-icon-bar.c:267 ../exo/exo-icon-view.c:801
+#: ../exo/exo-icon-bar.c:267 ../exo/exo-icon-view.c:800
 msgid "Model column used to retrieve the icon pixbuf from"
 msgstr "Columna del model d'on obtenir la icona de la memòria de píxel"
 
-#: ../exo/exo-icon-bar.c:282 ../exo/exo-icon-view.c:927
+#: ../exo/exo-icon-bar.c:282 ../exo/exo-icon-view.c:926
 msgid "Text column"
 msgstr "Columna de text"
 
-#: ../exo/exo-icon-bar.c:283 ../exo/exo-icon-view.c:928
+#: ../exo/exo-icon-bar.c:283 ../exo/exo-icon-view.c:927
 msgid "Model column used to retrieve the text from"
 msgstr "Columna del model d'on obtenir el text"
 
@@ -83,122 +83,122 @@
 msgid "Cursor item text color"
 msgstr "Cursor amb text de color"
 
-#: ../exo/exo-icon-view.c:651
+#: ../exo/exo-icon-view.c:650
 msgid "Column Spacing"
 msgstr "Espaiat entre columnes"
 
-#: ../exo/exo-icon-view.c:652
+#: ../exo/exo-icon-view.c:651
 msgid "Space which is inserted between grid column"
 msgstr "L'espai inserit entre les columnes d'una graella"
 
-#: ../exo/exo-icon-view.c:668
+#: ../exo/exo-icon-view.c:667
 msgid "Number of columns"
 msgstr "Número de columnes"
 
-#: ../exo/exo-icon-view.c:669
+#: ../exo/exo-icon-view.c:668
 msgid "Number of columns to display"
 msgstr "El nombre de columnes a mostrar"
 
-#: ../exo/exo-icon-view.c:683
+#: ../exo/exo-icon-view.c:682
 msgid "Enable Search"
 msgstr "Habilita la búsqueda"
 
-#: ../exo/exo-icon-view.c:684
+#: ../exo/exo-icon-view.c:683
 msgid "View allows user to search through columns interactively"
 msgstr ""
 "Vista que permet a l'usuari buscar de manera interactiva mitjançant columnes"
 
-#: ../exo/exo-icon-view.c:701
+#: ../exo/exo-icon-view.c:700
 msgid "Width for each item"
 msgstr "Amplada de cada element"
 
-#: ../exo/exo-icon-view.c:702
+#: ../exo/exo-icon-view.c:701
 msgid "The width used for each item"
 msgstr "L'amplada utilitzada per cada element"
 
-#: ../exo/exo-icon-view.c:720
+#: ../exo/exo-icon-view.c:719
 msgid "Layout mode"
 msgstr "Mode del format"
 
-#: ../exo/exo-icon-view.c:721
+#: ../exo/exo-icon-view.c:720
 msgid "The layout mode"
 msgstr "El mode del format"
 
-#: ../exo/exo-icon-view.c:737
+#: ../exo/exo-icon-view.c:736
 msgid "Margin"
 msgstr "Marge"
 
-#: ../exo/exo-icon-view.c:738
+#: ../exo/exo-icon-view.c:737
 msgid "Space which is inserted at the edges of the icon view"
 msgstr "Espai inserit a les vores de la vista d'icones"
 
-#: ../exo/exo-icon-view.c:754
+#: ../exo/exo-icon-view.c:753
 msgid "Markup column"
 msgstr "Columna d'etiquetatge"
 
-#: ../exo/exo-icon-view.c:755
+#: ../exo/exo-icon-view.c:754
 msgid "Model column used to retrieve the text if using Pango markup"
 msgstr ""
 "Columna del model d'on obtenir el text si es fa servir el marcatge Pango"
 
-#: ../exo/exo-icon-view.c:769
+#: ../exo/exo-icon-view.c:768
 msgid "Icon View Model"
 msgstr "Model de vista d'icones"
 
-#: ../exo/exo-icon-view.c:770
+#: ../exo/exo-icon-view.c:769
 msgid "The model for the icon view"
 msgstr "El model per la vista d'icones"
 
-#: ../exo/exo-icon-view.c:784
+#: ../exo/exo-icon-view.c:783
 msgid ""
 "How the text and icon of each item are positioned relative to each other"
 msgstr "Posicionament relatiu entre el text i la icona de cada element"
 
-#: ../exo/exo-icon-view.c:816
+#: ../exo/exo-icon-view.c:815
 msgid "Reorderable"
 msgstr "Reordenable"
 
-#: ../exo/exo-icon-view.c:817
+#: ../exo/exo-icon-view.c:816
 msgid "View is reorderable"
 msgstr "Vista és reordenable"
 
-#: ../exo/exo-icon-view.c:832
+#: ../exo/exo-icon-view.c:831
 msgid "Row Spacing"
 msgstr "Espaiat de files"
 
-#: ../exo/exo-icon-view.c:833
+#: ../exo/exo-icon-view.c:832
 msgid "Space which is inserted between grid rows"
 msgstr "L'espai inserit entre les files d'una graella"
 
-#: ../exo/exo-icon-view.c:847
+#: ../exo/exo-icon-view.c:846
 msgid "Search Column"
 msgstr "Cerca columna"
 
-#: ../exo/exo-icon-view.c:848
+#: ../exo/exo-icon-view.c:847
 msgid "Model column to search through when searching through item"
 msgstr "Model de columnes per buscar quan es busqui mitjançant elements"
 
-#: ../exo/exo-icon-view.c:862
+#: ../exo/exo-icon-view.c:861
 msgid "Selection mode"
 msgstr "Mode de selecció"
 
-#: ../exo/exo-icon-view.c:863
+#: ../exo/exo-icon-view.c:862
 msgid "The selection mode"
 msgstr "El mode de selecció"
 
-#: ../exo/exo-icon-view.c:878 ../exo/exo-tree-view.c:160
+#: ../exo/exo-icon-view.c:877 ../exo/exo-tree-view.c:160
 msgid "Single Click"
 msgstr "Clic senzill"
 
-#: ../exo/exo-icon-view.c:879 ../exo/exo-tree-view.c:161
+#: ../exo/exo-icon-view.c:878 ../exo/exo-tree-view.c:161
 msgid "Whether the items in the view can be activated with single clicks"
 msgstr "Si els elements de la vista poden ser activats amb un sol clic"
 
-#: ../exo/exo-icon-view.c:895 ../exo/exo-tree-view.c:177
+#: ../exo/exo-icon-view.c:894 ../exo/exo-tree-view.c:177
 msgid "Single Click Timeout"
 msgstr "Temps d'espera pel clic senzill"
 
-#: ../exo/exo-icon-view.c:896 ../exo/exo-tree-view.c:178
+#: ../exo/exo-icon-view.c:895 ../exo/exo-tree-view.c:178
 msgid ""
 "The amount of time after which the item under the mouse cursor will be "
 "selected automatically in single click mode"
@@ -206,27 +206,27 @@
 "El temps que transcorrerà quan el cursor estigui sobre un element que s'hagi "
 "seleccionat automàticament al mode de clic senzill."
 
-#: ../exo/exo-icon-view.c:911
+#: ../exo/exo-icon-view.c:910
 msgid "Spacing"
 msgstr "Espaiat"
 
-#: ../exo/exo-icon-view.c:912
+#: ../exo/exo-icon-view.c:911
 msgid "Space which is inserted between cells of an item"
 msgstr "Espai inserit entre les ceŀles de cada element"
 
-#: ../exo/exo-icon-view.c:935
+#: ../exo/exo-icon-view.c:934
 msgid "Selection Box Color"
 msgstr "Color de la caixa de selecció"
 
-#: ../exo/exo-icon-view.c:936
+#: ../exo/exo-icon-view.c:935
 msgid "Color of the selection box"
 msgstr "Color de la caixa de selecció"
 
-#: ../exo/exo-icon-view.c:942
+#: ../exo/exo-icon-view.c:941
 msgid "Selection Box Alpha"
 msgstr "Alfa de la caixa de selecció"
 
-#: ../exo/exo-icon-view.c:943
+#: ../exo/exo-icon-view.c:942
 msgid "Opacity of the selection box"
 msgstr "Opacitat de la caixa de selecció"
 
@@ -406,85 +406,90 @@
 msgstr "Per favor, informi dels errors a <%s>.\n"
 
 #. allocate the file chooser
-#: ../exo-desktop-item-edit/exo-die-command-entry.c:295
+#: ../exo-desktop-item-edit/exo-die-command-entry.c:290
 msgid "Select an Application"
 msgstr "Seleccioneu una aplicació"
 
-#: ../exo-desktop-item-edit/exo-die-command-entry.c:304
-#: ../exo-desktop-item-edit/exo-die-editor.c:629
+#: ../exo-desktop-item-edit/exo-die-command-entry.c:299
+#: ../exo-desktop-item-edit/exo-die-editor.c:641
 #: ../exo-helper/exo-helper-chooser.c:424
 msgid "All Files"
 msgstr "Tots els fitxers"
 
-#: ../exo-desktop-item-edit/exo-die-command-entry.c:309
+#: ../exo-desktop-item-edit/exo-die-command-entry.c:304
 #: ../exo-helper/exo-helper-chooser.c:429
 msgid "Executable Files"
 msgstr "Fitxer executables"
 
-#: ../exo-desktop-item-edit/exo-die-command-entry.c:324
+#: ../exo-desktop-item-edit/exo-die-command-entry.c:319
 #: ../exo-helper/exo-helper-chooser.c:444
 msgid "Perl Scripts"
 msgstr "Seqüències en Perl"
 
-#: ../exo-desktop-item-edit/exo-die-command-entry.c:330
+#: ../exo-desktop-item-edit/exo-die-command-entry.c:325
 #: ../exo-helper/exo-helper-chooser.c:450
 msgid "Python Scripts"
 msgstr "Seqüències en Python"
 
-#: ../exo-desktop-item-edit/exo-die-command-entry.c:336
+#: ../exo-desktop-item-edit/exo-die-command-entry.c:331
 #: ../exo-helper/exo-helper-chooser.c:456
 msgid "Ruby Scripts"
 msgstr "Seqüències en Ruby"
 
-#: ../exo-desktop-item-edit/exo-die-command-entry.c:342
+#: ../exo-desktop-item-edit/exo-die-command-entry.c:337
 #: ../exo-helper/exo-helper-chooser.c:462
 msgid "Shell Scripts"
 msgstr "Seqüències de shell"
 
+#: ../exo-desktop-item-edit/exo-die-desktop-model.c:326
+#, fuzzy, c-format
+msgid "Create Launcher <b>%s</b>"
+msgstr "Crea un llançador"
+
 #. TRANSLATORS: Label in "Create Launcher"/"Create Link" dialog, make sure to avoid mnemonic conflicts
-#: ../exo-desktop-item-edit/exo-die-editor.c:306
+#: ../exo-desktop-item-edit/exo-die-editor.c:318
 msgid "_Name:"
 msgstr "_Nom:"
 
 #. TRANSLATORS: Label in "Create Launcher"/"Create Link" dialog, make sure to avoid mnemonic conflicts
-#: ../exo-desktop-item-edit/exo-die-editor.c:324
+#: ../exo-desktop-item-edit/exo-die-editor.c:336
 msgid "C_omment:"
 msgstr "Co_mentari:"
 
 #. TRANSLATORS: Label in "Create Launcher" dialog, make sure to avoid mnemonic conflicts
-#: ../exo-desktop-item-edit/exo-die-editor.c:342
+#: ../exo-desktop-item-edit/exo-die-editor.c:354
 msgid "Comm_and:"
 msgstr "_Ordre:"
 
 #. TRANSLATORS: Label in "Create Link" dialog, make sure to avoid mnemonic conflicts
-#: ../exo-desktop-item-edit/exo-die-editor.c:359
+#: ../exo-desktop-item-edit/exo-die-editor.c:371
 msgid "_URL:"
 msgstr "_URL:"
 
 #. TRANSLATORS: Label in "Create Launcher"/"Create Link" dialog, make sure to avoid mnemonic conflicts
-#: ../exo-desktop-item-edit/exo-die-editor.c:377
+#: ../exo-desktop-item-edit/exo-die-editor.c:389
 msgid "_Icon:"
 msgstr "_Icona:"
 
 #. TRANSLATORS: Label for the icon button in "Create Launcher"/"Create Link" dialog if no icon selected
 #. setup a label to tell that no icon was selected
-#: ../exo-desktop-item-edit/exo-die-editor.c:396
-#: ../exo-desktop-item-edit/exo-die-editor.c:1066
+#: ../exo-desktop-item-edit/exo-die-editor.c:408
+#: ../exo-desktop-item-edit/exo-die-editor.c:1223
 msgid "No icon"
 msgstr "Sense icona"
 
-#: ../exo-desktop-item-edit/exo-die-editor.c:407
+#: ../exo-desktop-item-edit/exo-die-editor.c:419
 msgid "Options:"
 msgstr "Opcions:"
 
 #. TRANSLATORS: Check button label in "Create Launcher" dialog, make sure to avoid mnemonic conflicts
 #. *              and sync your translations with the translations in Thunar and xfce4-panel.
 #.
-#: ../exo-desktop-item-edit/exo-die-editor.c:418
+#: ../exo-desktop-item-edit/exo-die-editor.c:430
 msgid "Use _startup notification"
 msgstr "Empra noti_ficació d'inicialització"
 
-#: ../exo-desktop-item-edit/exo-die-editor.c:419
+#: ../exo-desktop-item-edit/exo-die-editor.c:431
 msgid ""
 "Select this option to enable startup notification when the command is run "
 "from the file manager or the menu. Not every application supports startup "
@@ -497,20 +502,20 @@
 #. TRANSLATORS: Check button label in "Create Launcher" dialog, make sure to avoid mnemonic conflicts
 #. *              and sync your translations with the translations in Thunar and xfce4-panel.
 #.
-#: ../exo-desktop-item-edit/exo-die-editor.c:431
+#: ../exo-desktop-item-edit/exo-die-editor.c:443
 msgid "Run in _terminal"
 msgstr "Executa en un _terminal"
 
-#: ../exo-desktop-item-edit/exo-die-editor.c:432
+#: ../exo-desktop-item-edit/exo-die-editor.c:444
 msgid "Select this option to run the command in a terminal window."
 msgstr ""
 "Seleccioneu aquesta opció per executar una ordre en una finestra de terminal."
 
-#: ../exo-desktop-item-edit/exo-die-editor.c:619
+#: ../exo-desktop-item-edit/exo-die-editor.c:631
 msgid "Select an Icon"
 msgstr "Seleccioneu una icona"
 
-#: ../exo-desktop-item-edit/exo-die-editor.c:634
+#: ../exo-desktop-item-edit/exo-die-editor.c:646
 msgid "Image Files"
 msgstr "Fitxers d'imatge"
 
@@ -579,8 +584,8 @@
 
 #. tell the user that we don't support the type
 #: ../exo-desktop-item-edit/main.c:225
-#, c-format
-msgid "Unsupported desktop file type '%s'"
+#, fuzzy, c-format
+msgid "Unsupported desktop file type \"%s\""
 msgstr "No es reconeix el tipus de fitxer d'escriptori «%s»"
 
 #. add the "Create"/"Save" button (as default)

Modified: libexo/trunk/po/cs.po
===================================================================
--- libexo/trunk/po/cs.po	2006-08-06 13:55:00 UTC (rev 22674)
+++ libexo/trunk/po/cs.po	2006-08-06 18:57:32 UTC (rev 22675)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: exo 0.3.1.8beta2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-06-16 21:58+0900\n"
+"POT-Creation-Date: 2006-08-06 20:55+0200\n"
 "PO-Revision-Date: 2006-07-12 21:28+0100\n"
 "Last-Translator: Michal Várady <miko.vaji at gmail.com>\n"
 "Language-Team: Czech <translation-team-cs at lists.sourceforge.net>\n"
@@ -19,8 +19,7 @@
 "X-Poedit-Country: CZECH REPUBLIC\n"
 "X-Poedit-SourceCharset: utf-8\n"
 
-#: ../exo/exo-icon-bar.c:249
-#: ../exo/exo-icon-view.c:783
+#: ../exo/exo-icon-bar.c:249 ../exo/exo-icon-view.c:782
 msgid "Orientation"
 msgstr "Orientace"
 
@@ -28,23 +27,19 @@
 msgid "The orientation of the iconbar"
 msgstr "Orientace panelu ikon"
 
-#: ../exo/exo-icon-bar.c:266
-#: ../exo/exo-icon-view.c:800
+#: ../exo/exo-icon-bar.c:266 ../exo/exo-icon-view.c:799
 msgid "Pixbuf column"
 msgstr "Sloupec pixbuf"
 
-#: ../exo/exo-icon-bar.c:267
-#: ../exo/exo-icon-view.c:801
+#: ../exo/exo-icon-bar.c:267 ../exo/exo-icon-view.c:800
 msgid "Model column used to retrieve the icon pixbuf from"
 msgstr "Sloupec modelu používaný pro získání pixbufu ikony z"
 
-#: ../exo/exo-icon-bar.c:282
-#: ../exo/exo-icon-view.c:927
+#: ../exo/exo-icon-bar.c:282 ../exo/exo-icon-view.c:926
 msgid "Text column"
 msgstr "Textový sloupec"
 
-#: ../exo/exo-icon-bar.c:283
-#: ../exo/exo-icon-view.c:928
+#: ../exo/exo-icon-bar.c:283 ../exo/exo-icon-view.c:927
 msgid "Model column used to retrieve the text from"
 msgstr "Sloupec modelu používaný pro získání textu z"
 
@@ -64,177 +59,173 @@
 msgid "Active item index"
 msgstr "Index aktivních položek"
 
-#: ../exo/exo-icon-bar.c:319
-#: ../exo/exo-icon-bar.c:320
+#: ../exo/exo-icon-bar.c:319 ../exo/exo-icon-bar.c:320
 msgid "Active item fill color"
 msgstr "Barva výplně aktivních položek"
 
-#: ../exo/exo-icon-bar.c:326
-#: ../exo/exo-icon-bar.c:327
+#: ../exo/exo-icon-bar.c:326 ../exo/exo-icon-bar.c:327
 msgid "Active item border color"
 msgstr "Barva okraje aktivních položek"
 
-#: ../exo/exo-icon-bar.c:333
-#: ../exo/exo-icon-bar.c:334
+#: ../exo/exo-icon-bar.c:333 ../exo/exo-icon-bar.c:334
 msgid "Active item text color"
 msgstr "Barva textu aktivních položek"
 
-#: ../exo/exo-icon-bar.c:340
-#: ../exo/exo-icon-bar.c:341
+#: ../exo/exo-icon-bar.c:340 ../exo/exo-icon-bar.c:341
 msgid "Cursor item fill color"
 msgstr "Barva výplně položek, nad kterými se nachází kurzor"
 
-#: ../exo/exo-icon-bar.c:347
-#: ../exo/exo-icon-bar.c:348
+#: ../exo/exo-icon-bar.c:347 ../exo/exo-icon-bar.c:348
 msgid "Cursor item border color"
 msgstr "Barva okrajů položek, nad kterými se nachází kurzor"
 
-#: ../exo/exo-icon-bar.c:354
-#: ../exo/exo-icon-bar.c:355
+#: ../exo/exo-icon-bar.c:354 ../exo/exo-icon-bar.c:355
 msgid "Cursor item text color"
 msgstr "Barva textu položek, nad kterými se nachází kurzor"
 
-#: ../exo/exo-icon-view.c:651
+#: ../exo/exo-icon-view.c:650
 msgid "Column Spacing"
 msgstr "Šířka sloupce"
 
-#: ../exo/exo-icon-view.c:652
+#: ../exo/exo-icon-view.c:651
 msgid "Space which is inserted between grid column"
 msgstr "Prostor, který je vložen mezi sloupce"
 
-#: ../exo/exo-icon-view.c:668
+#: ../exo/exo-icon-view.c:667
 msgid "Number of columns"
 msgstr "Počet sloupců"
 
-#: ../exo/exo-icon-view.c:669
+#: ../exo/exo-icon-view.c:668
 msgid "Number of columns to display"
 msgstr "Počet sloupců ke zobrazení"
 
-#: ../exo/exo-icon-view.c:683
+#: ../exo/exo-icon-view.c:682
 msgid "Enable Search"
 msgstr "Zapnout hledání"
 
-#: ../exo/exo-icon-view.c:684
+#: ../exo/exo-icon-view.c:683
 msgid "View allows user to search through columns interactively"
 msgstr "Pohled umožní uživateli interaktivně hledat ve sloupcích"
 
-#: ../exo/exo-icon-view.c:701
+#: ../exo/exo-icon-view.c:700
 msgid "Width for each item"
 msgstr "Šířka pro každou položku"
 
-#: ../exo/exo-icon-view.c:702
+#: ../exo/exo-icon-view.c:701
 msgid "The width used for each item"
 msgstr "Šířka použitá pro každou položku"
 
-#: ../exo/exo-icon-view.c:720
+#: ../exo/exo-icon-view.c:719
 msgid "Layout mode"
 msgstr "Mód rozložení"
 
-#: ../exo/exo-icon-view.c:721
+#: ../exo/exo-icon-view.c:720
 msgid "The layout mode"
 msgstr "Mód rozložení"
 
-#: ../exo/exo-icon-view.c:737
+#: ../exo/exo-icon-view.c:736
 msgid "Margin"
 msgstr "Okraj"
 
-#: ../exo/exo-icon-view.c:738
+#: ../exo/exo-icon-view.c:737
 msgid "Space which is inserted at the edges of the icon view"
 msgstr "Prostor vložený na kraje ikonového zobrazení"
 
-#: ../exo/exo-icon-view.c:754
+#: ../exo/exo-icon-view.c:753
 msgid "Markup column"
 msgstr "Označit sloupec"
 
-#: ../exo/exo-icon-view.c:755
+#: ../exo/exo-icon-view.c:754
 msgid "Model column used to retrieve the text if using Pango markup"
-msgstr "Sloupec modelu používaný pro získání textu, pokud se používají značky Pango"
+msgstr ""
+"Sloupec modelu používaný pro získání textu, pokud se používají značky Pango"
 
-#: ../exo/exo-icon-view.c:769
+#: ../exo/exo-icon-view.c:768
 msgid "Icon View Model"
 msgstr "Model ikonového pohledu"
 
-#: ../exo/exo-icon-view.c:770
+#: ../exo/exo-icon-view.c:769
 msgid "The model for the icon view"
 msgstr "Model pro ikonový pohled"
 
-#: ../exo/exo-icon-view.c:784
-msgid "How the text and icon of each item are positioned relative to each other"
+#: ../exo/exo-icon-view.c:783
+msgid ""
+"How the text and icon of each item are positioned relative to each other"
 msgstr "Jak jsou text a ikony každé položky navzájem relativně umístěny"
 
-#: ../exo/exo-icon-view.c:816
+#: ../exo/exo-icon-view.c:815
 msgid "Reorderable"
 msgstr "Přeuspořádatelný"
 
-#: ../exo/exo-icon-view.c:817
+#: ../exo/exo-icon-view.c:816
 msgid "View is reorderable"
 msgstr "Pohled je přeuspořádatelný"
 
-#: ../exo/exo-icon-view.c:832
+#: ../exo/exo-icon-view.c:831
 msgid "Row Spacing"
 msgstr "Výšky řádků"
 
-#: ../exo/exo-icon-view.c:833
+#: ../exo/exo-icon-view.c:832
 msgid "Space which is inserted between grid rows"
 msgstr "Prostor, který je vložen mezi mřížku řádků"
 
-#: ../exo/exo-icon-view.c:847
+#: ../exo/exo-icon-view.c:846
 msgid "Search Column"
 msgstr "Sloupec hledání"
 
-#: ../exo/exo-icon-view.c:848
+#: ../exo/exo-icon-view.c:847
 msgid "Model column to search through when searching through item"
 msgstr "Model sloupce pro vyhledávání při hledání v položce"
 
-#: ../exo/exo-icon-view.c:862
+#: ../exo/exo-icon-view.c:861
 msgid "Selection mode"
 msgstr "Režim výběru"
 
-#: ../exo/exo-icon-view.c:863
+#: ../exo/exo-icon-view.c:862
 msgid "The selection mode"
 msgstr "Režim výběru"
 
-#: ../exo/exo-icon-view.c:878
-#: ../exo/exo-tree-view.c:160
+#: ../exo/exo-icon-view.c:877 ../exo/exo-tree-view.c:160
 msgid "Single Click"
 msgstr "Jednoduché kliknutí"
 
-#: ../exo/exo-icon-view.c:879
-#: ../exo/exo-tree-view.c:161
+#: ../exo/exo-icon-view.c:878 ../exo/exo-tree-view.c:161
 msgid "Whether the items in the view can be activated with single clicks"
 msgstr "Zda mohou být zobrazené položky aktivovány jednoduchým kliknutím"
 
-#: ../exo/exo-icon-view.c:895
-#: ../exo/exo-tree-view.c:177
+#: ../exo/exo-icon-view.c:894 ../exo/exo-tree-view.c:177
 msgid "Single Click Timeout"
 msgstr "Vypršení limitu pro jednoduché kliknutí"
 
-#: ../exo/exo-icon-view.c:896
-#: ../exo/exo-tree-view.c:178
-msgid "The amount of time after which the item under the mouse cursor will be selected automatically in single click mode"
-msgstr "Množství času, po kterém se položka pod kurzorem myši v módu jedoduchého kliknutí sama označí"
+#: ../exo/exo-icon-view.c:895 ../exo/exo-tree-view.c:178
+msgid ""
+"The amount of time after which the item under the mouse cursor will be "
+"selected automatically in single click mode"
+msgstr ""
+"Množství času, po kterém se položka pod kurzorem myši v módu jedoduchého "
+"kliknutí sama označí"
 
-#: ../exo/exo-icon-view.c:911
+#: ../exo/exo-icon-view.c:910
 msgid "Spacing"
 msgstr "Odstupy"
 
-#: ../exo/exo-icon-view.c:912
+#: ../exo/exo-icon-view.c:911
 msgid "Space which is inserted between cells of an item"
 msgstr "Místo, které je vloženo mezi buňky položky"
 
-#: ../exo/exo-icon-view.c:935
+#: ../exo/exo-icon-view.c:934
 msgid "Selection Box Color"
 msgstr "Barva obdélníku výběru"
 
-#: ../exo/exo-icon-view.c:936
+#: ../exo/exo-icon-view.c:935
 msgid "Color of the selection box"
 msgstr "Barva obdélníku výběru"
 
-#: ../exo/exo-icon-view.c:942
+#: ../exo/exo-icon-view.c:941
 msgid "Selection Box Alpha"
 msgstr "Alfa obdélníku výběru"
 
-#: ../exo/exo-icon-view.c:943
+#: ../exo/exo-icon-view.c:942
 msgid "Opacity of the selection box"
 msgstr "Neprůhlednost obdélníku výběru"
 
@@ -243,8 +234,12 @@
 msgstr "Přid_at nový panel nástrojů"
 
 #: ../exo/exo-toolbars-editor.c:230
-msgid "Drag an item onto the toolbars above to add it, from the toolbars in the items table to remove it."
-msgstr "Položku přidáte na panel nástrojů tak, že ji přetáhnete z tabulky nástrojů. Opačným postupem ji odstraníte."
+msgid ""
+"Drag an item onto the toolbars above to add it, from the toolbars in the "
+"items table to remove it."
+msgstr ""
+"Položku přidáte na panel nástrojů tak, že ji přetáhnete z tabulky nástrojů. "
+"Opačným postupem ji odstraníte."
 
 #: ../exo/exo-toolbars-editor.c:543
 msgid "Separator"
@@ -371,8 +366,7 @@
 msgid "  --build-list      Parse (name, file) pairs\n"
 msgstr "  --build-list      Parsovací páry (název, soubor)\n"
 
-#: ../exo-csource/main.c:248
-#: ../exo-desktop-item-edit/main.c:153
+#: ../exo-csource/main.c:248 ../exo-desktop-item-edit/main.c:153
 #: ../exo-open/main.c:100
 msgid ""
 "Copyright (c) 2005-2006\n"
@@ -387,8 +381,7 @@
 "Napsal Benedikt Meurer <benny at xfce.org>.\n"
 "\n"
 
-#: ../exo-csource/main.c:251
-#: ../exo-desktop-item-edit/main.c:156
+#: ../exo-csource/main.c:251 ../exo-desktop-item-edit/main.c:156
 #: ../exo-open/main.c:103
 #, c-format
 msgid ""
@@ -404,112 +397,122 @@
 "přiložené u zdrojového balíčku aplikace %s.\n"
 "\n"
 
-#: ../exo-csource/main.c:255
-#: ../exo-desktop-item-edit/main.c:160
+#: ../exo-csource/main.c:255 ../exo-desktop-item-edit/main.c:160
 #: ../exo-open/main.c:107
 #, c-format
 msgid "Please report bugs to <%s>.\n"
 msgstr "Prosíme, hlaste chyby na <%s>.\n"
 
 #. allocate the file chooser
-#: ../exo-desktop-item-edit/exo-die-command-entry.c:295
+#: ../exo-desktop-item-edit/exo-die-command-entry.c:290
 msgid "Select an Application"
 msgstr "Vyberte si aplikaci"
 
-#: ../exo-desktop-item-edit/exo-die-command-entry.c:304
-#: ../exo-desktop-item-edit/exo-die-editor.c:629
+#: ../exo-desktop-item-edit/exo-die-command-entry.c:299
+#: ../exo-desktop-item-edit/exo-die-editor.c:641
 #: ../exo-helper/exo-helper-chooser.c:424
 msgid "All Files"
 msgstr "Všechny soubory"
 
-#: ../exo-desktop-item-edit/exo-die-command-entry.c:309
+#: ../exo-desktop-item-edit/exo-die-command-entry.c:304
 #: ../exo-helper/exo-helper-chooser.c:429
 msgid "Executable Files"
 msgstr "Spustitelné soubory"
 
-#: ../exo-desktop-item-edit/exo-die-command-entry.c:324
+#: ../exo-desktop-item-edit/exo-die-command-entry.c:319
 #: ../exo-helper/exo-helper-chooser.c:444
 msgid "Perl Scripts"
 msgstr "Skripty jazyka Perl"
 
-#: ../exo-desktop-item-edit/exo-die-command-entry.c:330
+#: ../exo-desktop-item-edit/exo-die-command-entry.c:325
 #: ../exo-helper/exo-helper-chooser.c:450
 msgid "Python Scripts"
 msgstr "Skripty jazyka Python"
 
-#: ../exo-desktop-item-edit/exo-die-command-entry.c:336
+#: ../exo-desktop-item-edit/exo-die-command-entry.c:331
 #: ../exo-helper/exo-helper-chooser.c:456
 msgid "Ruby Scripts"
 msgstr "Skripty jazyka Ruby"
 
-#: ../exo-desktop-item-edit/exo-die-command-entry.c:342
+#: ../exo-desktop-item-edit/exo-die-command-entry.c:337
 #: ../exo-helper/exo-helper-chooser.c:462
 msgid "Shell Scripts"
 msgstr "Shellové skripty"
 
+#: ../exo-desktop-item-edit/exo-die-desktop-model.c:326
+#, fuzzy, c-format
+msgid "Create Launcher <b>%s</b>"
+msgstr "Vytvořit spouštěč"
+
 #. TRANSLATORS: Label in "Create Launcher"/"Create Link" dialog, make sure to avoid mnemonic conflicts
-#: ../exo-desktop-item-edit/exo-die-editor.c:306
+#: ../exo-desktop-item-edit/exo-die-editor.c:318
 msgid "_Name:"
 msgstr "_Název:"
 
 #. TRANSLATORS: Label in "Create Launcher"/"Create Link" dialog, make sure to avoid mnemonic conflicts
-#: ../exo-desktop-item-edit/exo-die-editor.c:324
+#: ../exo-desktop-item-edit/exo-die-editor.c:336
 msgid "C_omment:"
 msgstr "_Komentář:"
 
 #. TRANSLATORS: Label in "Create Launcher" dialog, make sure to avoid mnemonic conflicts
-#: ../exo-desktop-item-edit/exo-die-editor.c:342
+#: ../exo-desktop-item-edit/exo-die-editor.c:354
 msgid "Comm_and:"
 msgstr "Přík_az:"
 
 #. TRANSLATORS: Label in "Create Link" dialog, make sure to avoid mnemonic conflicts
-#: ../exo-desktop-item-edit/exo-die-editor.c:359
+#: ../exo-desktop-item-edit/exo-die-editor.c:371
 msgid "_URL:"
 msgstr "Adresa _URL:"
 
 #. TRANSLATORS: Label in "Create Launcher"/"Create Link" dialog, make sure to avoid mnemonic conflicts
-#: ../exo-desktop-item-edit/exo-die-editor.c:377
+#: ../exo-desktop-item-edit/exo-die-editor.c:389
 msgid "_Icon:"
 msgstr "_Ikona:"
 
 #. TRANSLATORS: Label for the icon button in "Create Launcher"/"Create Link" dialog if no icon selected
 #. setup a label to tell that no icon was selected
-#: ../exo-desktop-item-edit/exo-die-editor.c:396
-#: ../exo-desktop-item-edit/exo-die-editor.c:1066
+#: ../exo-desktop-item-edit/exo-die-editor.c:408
+#: ../exo-desktop-item-edit/exo-die-editor.c:1223
 msgid "No icon"
 msgstr "Bez ikony"
 
-#: ../exo-desktop-item-edit/exo-die-editor.c:407
+#: ../exo-desktop-item-edit/exo-die-editor.c:419
 msgid "Options:"
 msgstr "Možnosti:"
 
 #. TRANSLATORS: Check button label in "Create Launcher" dialog, make sure to avoid mnemonic conflicts
 #. *              and sync your translations with the translations in Thunar and xfce4-panel.
 #.
-#: ../exo-desktop-item-edit/exo-die-editor.c:418
+#: ../exo-desktop-item-edit/exo-die-editor.c:430
 msgid "Use _startup notification"
 msgstr "Použít oznámení při _startu"
 
-#: ../exo-desktop-item-edit/exo-die-editor.c:419
-msgid "Select this option to enable startup notification when the command is run from the file manager or the menu. Not every application supports startup notification."
-msgstr "Zvolte tuto možnost pro povolení oznámení při startu, pokud je příkaz spouštěn ze správce souborů nebo z hlavní nabídky. Každá aplikace oznámení při startu nepodporuje."
+#: ../exo-desktop-item-edit/exo-die-editor.c:431
+msgid ""
+"Select this option to enable startup notification when the command is run "
+"from the file manager or the menu. Not every application supports startup "
+"notification."
+msgstr ""
+"Zvolte tuto možnost pro povolení oznámení při startu, pokud je příkaz "
+"spouštěn ze správce souborů nebo z hlavní nabídky. Každá aplikace oznámení "
+"při startu nepodporuje."
 
 #. TRANSLATORS: Check button label in "Create Launcher" dialog, make sure to avoid mnemonic conflicts
 #. *              and sync your translations with the translations in Thunar and xfce4-panel.
 #.
-#: ../exo-desktop-item-edit/exo-die-editor.c:431
+#: ../exo-desktop-item-edit/exo-die-editor.c:443
 msgid "Run in _terminal"
 msgstr "Spustit v terminálu"
 
-#: ../exo-desktop-item-edit/exo-die-editor.c:432
+#: ../exo-desktop-item-edit/exo-die-editor.c:444
 msgid "Select this option to run the command in a terminal window."
 msgstr "Zvolte tuto možnost pro spuštění příkazu v okně terminálu."
 
-#: ../exo-desktop-item-edit/exo-die-editor.c:619
+#: ../exo-desktop-item-edit/exo-die-editor.c:631
 msgid "Select an Icon"
 msgstr "Vyberte si ikonu"
 
-#: ../exo-desktop-item-edit/exo-die-editor.c:634
+#: ../exo-desktop-item-edit/exo-die-editor.c:646
 msgid "Image Files"
 msgstr "Obrázky"
 
@@ -578,8 +581,8 @@
 
 #. tell the user that we don't support the type
 #: ../exo-desktop-item-edit/main.c:225
-#, c-format
-msgid "Unsupported desktop file type '%s'"
+#, fuzzy, c-format
+msgid "Unsupported desktop file type \"%s\""
 msgstr "Nepodporovaný typ souboru plochu '%s'"
 
 #. add the "Create"/"Save" button (as default)
@@ -791,7 +794,9 @@
 
 #: ../exo-helper/exo-preferred-applications.desktop.in.h:2
 msgid "Preferred Applications (Web Browser, Mail Reader and Terminal Emulator)"
-msgstr "Upřednostňované aplikace (webový prohlížeč, e-mailový klient a emulátor terminálu)"
+msgstr ""
+"Upřednostňované aplikace (webový prohlížeč, e-mailový klient a emulátor "
+"terminálu)"
 
 #: ../exo-helper/exo-preferred-applications.desktop.in.h:3
 msgid "Xfce 4 Preferred Applications"
@@ -894,13 +899,15 @@
 msgstr "  -h, --help                          Zobrazí tuto nápovědu"
 
 #: ../exo-open/main.c:47
-msgid "  -v, --version                       Print version information and exit"
+msgid ""
+"  -v, --version                       Print version information and exit"
 msgstr "  -v, --version                       Zobrazí informace o verzi"
 
 #: ../exo-open/main.c:49
 msgid ""
 "  --launch TYPE [PARAMETERs...]       Launch the preferred application of\n"
-"                                      TYPE with the optional PARAMETERs, where\n"
+"                                      TYPE with the optional PARAMETERs, "
+"where\n"
 "                                      TYPE is one of the following values."
 msgstr ""
 "  --launch TYP [PARAMETRY...]         Spustí upřednostňovanou aplikaci typu\n"
@@ -932,10 +939,13 @@
 "pass additional parameters to the application (i.e. for TerminalEmulator\n"
 "you can pass the command line that should be run in the terminal)."
 msgstr ""
-"Nezadáte-li volbu --launch, exo-open otevře všechny specifikované URL adresy\n"
+"Nezadáte-li volbu --launch, exo-open otevře všechny specifikované URL "
+"adresy\n"
 "aplikací, odpovídající tvaru adresy URL. Pokud však zadáte volbu --launch,\n"
-"budete moci vybrat, kterou aplikaci chcete spustit a zadat dodatečné parametry\n"
-"pro aplikace (např. pro TerminalEmulator můžete zadat příkaz, který se v nově\n"
+"budete moci vybrat, kterou aplikaci chcete spustit a zadat dodatečné "
+"parametry\n"
+"pro aplikace (např. pro TerminalEmulator můžete zadat příkaz, který se v "
+"nově\n"
 "otevřeném terminálu provede."
 
 #: ../exo-open/main.c:121
@@ -947,4 +957,3 @@
 #, c-format
 msgid "Failed to open URL \"%s\"."
 msgstr "Nepodařilo se otevřít adresu URL \"%s\"."
-

Modified: libexo/trunk/po/de.po
===================================================================
--- libexo/trunk/po/de.po	2006-08-06 13:55:00 UTC (rev 22674)
+++ libexo/trunk/po/de.po	2006-08-06 18:57:32 UTC (rev 22675)
@@ -6,17 +6,17 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: exo 0.3.1.8beta2\n"
+"Project-Id-Version: exo 0.3.1.9svn\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-06-16 21:58+0900\n"
-"PO-Revision-Date:  2006-05-06 22:50+0100\n"
+"POT-Creation-Date: 2006-08-06 20:55+0200\n"
+"PO-Revision-Date:  2006-08-06 20:50+0100\n"
 "Last-Translator: Benedikt Meurer <benny at xfce.org>\n"
 "Language-Team: German <de at li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ../exo/exo-icon-bar.c:249 ../exo/exo-icon-view.c:783
+#: ../exo/exo-icon-bar.c:249 ../exo/exo-icon-view.c:782
 msgid "Orientation"
 msgstr "Orientierung"
 
@@ -24,19 +24,19 @@
 msgid "The orientation of the iconbar"
 msgstr "Die Orientierung der Symbolleiste"
 
-#: ../exo/exo-icon-bar.c:266 ../exo/exo-icon-view.c:800
+#: ../exo/exo-icon-bar.c:266 ../exo/exo-icon-view.c:799
 msgid "Pixbuf column"
 msgstr "Pixbuf-Spalte"
 
-#: ../exo/exo-icon-bar.c:267 ../exo/exo-icon-view.c:801
+#: ../exo/exo-icon-bar.c:267 ../exo/exo-icon-view.c:800
 msgid "Model column used to retrieve the icon pixbuf from"
 msgstr "Spalte für das Model, von der das Icon Pixbuf geholt werden soll"
 
-#: ../exo/exo-icon-bar.c:282 ../exo/exo-icon-view.c:927
+#: ../exo/exo-icon-bar.c:282 ../exo/exo-icon-view.c:926
 msgid "Text column"
 msgstr "Textspalte"
 
-#: ../exo/exo-icon-bar.c:283 ../exo/exo-icon-view.c:928
+#: ../exo/exo-icon-bar.c:283 ../exo/exo-icon-view.c:927
 msgid "Model column used to retrieve the text from"
 msgstr "Spalte für das Model, von der der Text geholt werden soll"
 
@@ -80,150 +80,150 @@
 msgid "Cursor item text color"
 msgstr "Textfarbe für das Cursorelement"
 
-#: ../exo/exo-icon-view.c:651
+#: ../exo/exo-icon-view.c:650
 msgid "Column Spacing"
 msgstr "Spaltenabstand"
 
-#: ../exo/exo-icon-view.c:652
+#: ../exo/exo-icon-view.c:651
 msgid "Space which is inserted between grid column"
 msgstr "Platz, der zwischen Gitterspalten eingefügt wird"
 
-#: ../exo/exo-icon-view.c:668
+#: ../exo/exo-icon-view.c:667
 msgid "Number of columns"
 msgstr "Anzahl Spalten"
 
-#: ../exo/exo-icon-view.c:669
+#: ../exo/exo-icon-view.c:668
 msgid "Number of columns to display"
 msgstr "Anzahl anzuzeigender Spalten"
 
-#: ../exo/exo-icon-view.c:683
+#: ../exo/exo-icon-view.c:682
 msgid "Enable Search"
 msgstr "Suche aktivieren"
 
-#: ../exo/exo-icon-view.c:684
+#: ../exo/exo-icon-view.c:683
 msgid "View allows user to search through columns interactively"
 msgstr "Symbolansicht erlaubt dem Benutzer interaktive Suche"
 
-#: ../exo/exo-icon-view.c:701
+#: ../exo/exo-icon-view.c:700
 msgid "Width for each item"
 msgstr "Breite für jedes Element"
 
-#: ../exo/exo-icon-view.c:702
+#: ../exo/exo-icon-view.c:701
 msgid "The width used for each item"
 msgstr "Die Breite, die für jedes Element verwendet wird"
 
-#: ../exo/exo-icon-view.c:720
+#: ../exo/exo-icon-view.c:719
 msgid "Layout mode"
 msgstr "Layout Modus"
 
-#: ../exo/exo-icon-view.c:721
+#: ../exo/exo-icon-view.c:720
 msgid "The layout mode"
 msgstr "Der Layout Modus"
 
-#: ../exo/exo-icon-view.c:737
+#: ../exo/exo-icon-view.c:736
 msgid "Margin"
 msgstr "Rand"
 
-#: ../exo/exo-icon-view.c:738
+#: ../exo/exo-icon-view.c:737
 msgid "Space which is inserted at the edges of the icon view"
 msgstr "Platz, der an den Rändern der Symbolansicht eingefügt wird"
 
-#: ../exo/exo-icon-view.c:754
+#: ../exo/exo-icon-view.c:753
 msgid "Markup column"
 msgstr "Auswahlspalte"
 
-#: ../exo/exo-icon-view.c:755
+#: ../exo/exo-icon-view.c:754
 msgid "Model column used to retrieve the text if using Pango markup"
 msgstr ""
 "Modellspalte, anhand derer Text geholt wird, falls die Auszeichungssprache "
 "von Pango verwendet wird"
 
-#: ../exo/exo-icon-view.c:769
+#: ../exo/exo-icon-view.c:768
 msgid "Icon View Model"
 msgstr "Modell zur Symbolansicht"
 
-#: ../exo/exo-icon-view.c:770
+#: ../exo/exo-icon-view.c:769
 msgid "The model for the icon view"
 msgstr "Das Modell für die Symbolansicht"
 
-#: ../exo/exo-icon-view.c:784
+#: ../exo/exo-icon-view.c:783
 msgid ""
 "How the text and icon of each item are positioned relative to each other"
 msgstr ""
 "Wie der Text und das Symbol jedes Elements relativ zueinandner angeordnet "
 "werden"
 
-#: ../exo/exo-icon-view.c:816
+#: ../exo/exo-icon-view.c:815
 msgid "Reorderable"
 msgstr "Umordbar"
 
-#: ../exo/exo-icon-view.c:817
+#: ../exo/exo-icon-view.c:816
 msgid "View is reorderable"
 msgstr "Die Ansicht ist umordbar"
 
-#: ../exo/exo-icon-view.c:832
+#: ../exo/exo-icon-view.c:831
 msgid "Row Spacing"
 msgstr "Zeilenabstand"
 
-#: ../exo/exo-icon-view.c:833
+#: ../exo/exo-icon-view.c:832
 msgid "Space which is inserted between grid rows"
 msgstr "Platz, der zwischen Gitterzeilen eingefügt wird"
 
-#: ../exo/exo-icon-view.c:847
+#: ../exo/exo-icon-view.c:846
 msgid "Search Column"
 msgstr "Suchspalte"
 
-#: ../exo/exo-icon-view.c:848
+#: ../exo/exo-icon-view.c:847
 msgid "Model column to search through when searching through item"
 msgstr "Die Spalte im Modell, die durchsucht werden soll"
 
-#: ../exo/exo-icon-view.c:862
+#: ../exo/exo-icon-view.c:861
 msgid "Selection mode"
 msgstr "Auswahlmodus"
 
-#: ../exo/exo-icon-view.c:863
+#: ../exo/exo-icon-view.c:862
 msgid "The selection mode"
 msgstr "Der Auswahlmodus"
 
-#: ../exo/exo-icon-view.c:878 ../exo/exo-tree-view.c:160
+#: ../exo/exo-icon-view.c:877 ../exo/exo-tree-view.c:160
 msgid "Single Click"
 msgstr "Einfacher Klick"
 
-#: ../exo/exo-icon-view.c:879 ../exo/exo-tree-view.c:161
+#: ../exo/exo-icon-view.c:878 ../exo/exo-tree-view.c:161
 msgid "Whether the items in the view can be activated with single clicks"
 msgstr "Ob die Objekte bei einem einfachen Klick aktiviert werden sollen"
 
-#: ../exo/exo-icon-view.c:895 ../exo/exo-tree-view.c:177
+#: ../exo/exo-icon-view.c:894 ../exo/exo-tree-view.c:177
 msgid "Single Click Timeout"
 msgstr "Einfachklick-Verzögerung"
 
-#: ../exo/exo-icon-view.c:896 ../exo/exo-tree-view.c:178
+#: ../exo/exo-icon-view.c:895 ../exo/exo-tree-view.c:178
 msgid ""
 "The amount of time after which the item under the mouse cursor will be "
 "selected automatically in single click mode"
 msgstr ""
 
-#: ../exo/exo-icon-view.c:911
+#: ../exo/exo-icon-view.c:910
 msgid "Spacing"
 msgstr "Abstand"
 
-#: ../exo/exo-icon-view.c:912
+#: ../exo/exo-icon-view.c:911
 msgid "Space which is inserted between cells of an item"
 msgstr "Platz, der zwischen Zellen eines Elements eingefügt wird"
 
-#: ../exo/exo-icon-view.c:935
+#: ../exo/exo-icon-view.c:934
 msgid "Selection Box Color"
 msgstr "Farbe der Auswahlbox"
 
-#: ../exo/exo-icon-view.c:936
+#: ../exo/exo-icon-view.c:935
 msgid "Color of the selection box"
 msgstr "Farbe für die Auswahlbox"
 
-#: ../exo/exo-icon-view.c:942
+#: ../exo/exo-icon-view.c:941
 msgid "Selection Box Alpha"
 msgstr "Alphawert für die Auswahlbox"
 
-#: ../exo/exo-icon-view.c:943
+#: ../exo/exo-icon-view.c:942
 msgid "Opacity of the selection box"
 msgstr "Deckkraft der Auswahlbox"
 
@@ -402,85 +402,90 @@
 msgstr "Bitte melden Sie Fehler an <%s>.\n"
 
 #. allocate the file chooser
-#: ../exo-desktop-item-edit/exo-die-command-entry.c:295
+#: ../exo-desktop-item-edit/exo-die-command-entry.c:290
 msgid "Select an Application"
 msgstr "Anwendung auswählen"
 
-#: ../exo-desktop-item-edit/exo-die-command-entry.c:304
-#: ../exo-desktop-item-edit/exo-die-editor.c:629
+#: ../exo-desktop-item-edit/exo-die-command-entry.c:299
+#: ../exo-desktop-item-edit/exo-die-editor.c:641
 #: ../exo-helper/exo-helper-chooser.c:424
 msgid "All Files"
 msgstr "Alle Dateien"
 
-#: ../exo-desktop-item-edit/exo-die-command-entry.c:309
+#: ../exo-desktop-item-edit/exo-die-command-entry.c:304
 #: ../exo-helper/exo-helper-chooser.c:429
 msgid "Executable Files"
 msgstr "Ausführbare Dateien"
 
-#: ../exo-desktop-item-edit/exo-die-command-entry.c:324
+#: ../exo-desktop-item-edit/exo-die-command-entry.c:319
 #: ../exo-helper/exo-helper-chooser.c:444
 msgid "Perl Scripts"
 msgstr "Perl Skripte"
 
-#: ../exo-desktop-item-edit/exo-die-command-entry.c:330
+#: ../exo-desktop-item-edit/exo-die-command-entry.c:325
 #: ../exo-helper/exo-helper-chooser.c:450
 msgid "Python Scripts"
 msgstr "Python Skripte"
 
-#: ../exo-desktop-item-edit/exo-die-command-entry.c:336
+#: ../exo-desktop-item-edit/exo-die-command-entry.c:331
 #: ../exo-helper/exo-helper-chooser.c:456
 msgid "Ruby Scripts"
 msgstr "Ruby Skripte"
 
-#: ../exo-desktop-item-edit/exo-die-command-entry.c:342
+#: ../exo-desktop-item-edit/exo-die-command-entry.c:337
 #: ../exo-helper/exo-helper-chooser.c:462
 msgid "Shell Scripts"
 msgstr "Shell Skripte"
 
+#: ../exo-desktop-item-edit/exo-die-desktop-model.c:326
+#, c-format
+msgid "Create Launcher <b>%s</b>"
+msgstr "Starter für <b>%s</b> erstellen"
+
 #. TRANSLATORS: Label in "Create Launcher"/"Create Link" dialog, make sure to avoid mnemonic conflicts
-#: ../exo-desktop-item-edit/exo-die-editor.c:306
+#: ../exo-desktop-item-edit/exo-die-editor.c:318
 msgid "_Name:"
 msgstr "_Name:"
 
 #. TRANSLATORS: Label in "Create Launcher"/"Create Link" dialog, make sure to avoid mnemonic conflicts
-#: ../exo-desktop-item-edit/exo-die-editor.c:324
+#: ../exo-desktop-item-edit/exo-die-editor.c:336
 msgid "C_omment:"
 msgstr "_Kommentar:"
 
 #. TRANSLATORS: Label in "Create Launcher" dialog, make sure to avoid mnemonic conflicts
-#: ../exo-desktop-item-edit/exo-die-editor.c:342
+#: ../exo-desktop-item-edit/exo-die-editor.c:354
 msgid "Comm_and:"
 msgstr "_Befehl:"
 
 #. TRANSLATORS: Label in "Create Link" dialog, make sure to avoid mnemonic conflicts
-#: ../exo-desktop-item-edit/exo-die-editor.c:359
+#: ../exo-desktop-item-edit/exo-die-editor.c:371
 msgid "_URL:"
 msgstr "A_dresse:"
 
 #. TRANSLATORS: Label in "Create Launcher"/"Create Link" dialog, make sure to avoid mnemonic conflicts
-#: ../exo-desktop-item-edit/exo-die-editor.c:377
+#: ../exo-desktop-item-edit/exo-die-editor.c:389
 msgid "_Icon:"
 msgstr "S_ymbol:"
 
 #. TRANSLATORS: Label for the icon button in "Create Launcher"/"Create Link" dialog if no icon selected
 #. setup a label to tell that no icon was selected
-#: ../exo-desktop-item-edit/exo-die-editor.c:396
-#: ../exo-desktop-item-edit/exo-die-editor.c:1066
+#: ../exo-desktop-item-edit/exo-die-editor.c:408
+#: ../exo-desktop-item-edit/exo-die-editor.c:1223
 msgid "No icon"
 msgstr "Kein Symbol"
 
-#: ../exo-desktop-item-edit/exo-die-editor.c:407
+#: ../exo-desktop-item-edit/exo-die-editor.c:419
 msgid "Options:"
 msgstr "Optionen:"
 
 #. TRANSLATORS: Check button label in "Create Launcher" dialog, make sure to avoid mnemonic conflicts
 #. *              and sync your translations with the translations in Thunar and xfce4-panel.
 #.
-#: ../exo-desktop-item-edit/exo-die-editor.c:418
+#: ../exo-desktop-item-edit/exo-die-editor.c:430
 msgid "Use _startup notification"
 msgstr "Benutze _Startup Notifikation"
 
-#: ../exo-desktop-item-edit/exo-die-editor.c:419
+#: ../exo-desktop-item-edit/exo-die-editor.c:431
 msgid ""
 "Select this option to enable startup notification when the command is run "
 "from the file manager or the menu. Not every application supports startup "
@@ -493,21 +498,21 @@
 #. TRANSLATORS: Check button label in "Create Launcher" dialog, make sure to avoid mnemonic conflicts
 #. *              and sync your translations with the translations in Thunar and xfce4-panel.
 #.
-#: ../exo-desktop-item-edit/exo-die-editor.c:431
+#: ../exo-desktop-item-edit/exo-die-editor.c:443
 msgid "Run in _terminal"
 msgstr "In _Terminal ausführen"
 
-#: ../exo-desktop-item-edit/exo-die-editor.c:432
+#: ../exo-desktop-item-edit/exo-die-editor.c:444
 msgid "Select this option to run the command in a terminal window."
 msgstr ""
 "Ist diese Option aktiv, wird der oben angegebene Befehl in einem Terminal-"
 "Fenster ausgeführt."
 
-#: ../exo-desktop-item-edit/exo-die-editor.c:619
+#: ../exo-desktop-item-edit/exo-die-editor.c:631
 msgid "Select an Icon"
 msgstr "Symbol auswählen"
 
-#: ../exo-desktop-item-edit/exo-die-editor.c:634
+#: ../exo-desktop-item-edit/exo-die-editor.c:646
 msgid "Image Files"
 msgstr "Bilddateien"
 
@@ -566,20 +571,19 @@
 msgstr "[DATEI|ORDNER]"
 
 #: ../exo-desktop-item-edit/main.c:138
-#, fuzzy, c-format
+#, c-format
 msgid "Failed to open display: %s"
-msgstr "Konnte »%s« nicht öffnen."
+msgstr "Konnte Display nicht öffnen: %s"
 
 #: ../exo-desktop-item-edit/main.c:167
-#, fuzzy
 msgid "No file/folder specified"
-msgstr "Kein Kommando angegeben"
+msgstr "Keine Datei und kein Ordner angegeben"
 
 #. tell the user that we don't support the type
 #: ../exo-desktop-item-edit/main.c:225
 #, c-format
-msgid "Unsupported desktop file type '%s'"
-msgstr ""
+msgid "Unsupported desktop file type \"%s\""
+msgstr "Nicht unterstützter Dateitype »%s«"
 
 #. add the "Create"/"Save" button (as default)
 #: ../exo-desktop-item-edit/main.c:245
@@ -857,7 +861,7 @@
 
 #: ../exo-helper/helpers/mutt.desktop.in.in.h:1
 msgid "Mutt"
-msgstr ""
+msgstr "Mutt"
 
 #: ../exo-helper/helpers/opera-browser.desktop.in.in.h:1
 msgid "Opera Browser"
@@ -869,11 +873,11 @@
 
 #: ../exo-helper/helpers/sylpheed.desktop.in.in.h:1
 msgid "Sylpheed"
-msgstr ""
+msgstr "Sylpheed"
 
 #: ../exo-helper/helpers/sylpheed-claws.desktop.in.in.h:1
 msgid "Sylpheed Claws"
-msgstr ""
+msgstr "Sylpheed Claws"
 
 #: ../exo-helper/helpers/thunderbird.desktop.in.in.h:1
 msgid "Mozilla Thunderbird"

Modified: libexo/trunk/po/el.po
===================================================================
--- libexo/trunk/po/el.po	2006-08-06 13:55:00 UTC (rev 22674)
+++ libexo/trunk/po/el.po	2006-08-06 18:57:32 UTC (rev 22675)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: exo 0.3.1.8beta2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-06-16 21:58+0900\n"
+"POT-Creation-Date: 2006-08-06 20:55+0200\n"
 "PO-Revision-Date: 2006-06-25 14:14+0200\n"
 "Last-Translator: Stavros Giannouris <stavrosg2002 at freemail.gr>\n"
 "Language-Team: Greek <nls at tux.hellug.gr>\n"
@@ -17,7 +17,7 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: ../exo/exo-icon-bar.c:249 ../exo/exo-icon-view.c:783
+#: ../exo/exo-icon-bar.c:249 ../exo/exo-icon-view.c:782
 msgid "Orientation"
 msgstr "Προσανατολισμός"
 
@@ -25,19 +25,19 @@
 msgid "The orientation of the iconbar"
 msgstr "Ο προσανατολισμός του Iconbar"
 
-#: ../exo/exo-icon-bar.c:266 ../exo/exo-icon-view.c:800
+#: ../exo/exo-icon-bar.c:266 ../exo/exo-icon-view.c:799
 msgid "Pixbuf column"
 msgstr "Στήλη Pixbuf"
 
-#: ../exo/exo-icon-bar.c:267 ../exo/exo-icon-view.c:801
+#: ../exo/exo-icon-bar.c:267 ../exo/exo-icon-view.c:800
 msgid "Model column used to retrieve the icon pixbuf from"
 msgstr "Το μοντέλο στήλης για τη λήψη του pixbuf εικονιδίου"
 
-#: ../exo/exo-icon-bar.c:282 ../exo/exo-icon-view.c:927
+#: ../exo/exo-icon-bar.c:282 ../exo/exo-icon-view.c:926
 msgid "Text column"
 msgstr "Στήλη κειμένου"
 
-#: ../exo/exo-icon-bar.c:283 ../exo/exo-icon-view.c:928
+#: ../exo/exo-icon-bar.c:283 ../exo/exo-icon-view.c:927
 msgid "Model column used to retrieve the text from"
 msgstr "Το μοντέλο στήλης για τη λήψη του κειμένου"
 
@@ -81,123 +81,123 @@
 msgid "Cursor item text color"
 msgstr "Χρώμα κειμένου κέρσορα"
 
-#: ../exo/exo-icon-view.c:651
+#: ../exo/exo-icon-view.c:650
 msgid "Column Spacing"
 msgstr "Διάστημα στηλών"
 
-#: ../exo/exo-icon-view.c:652
+#: ../exo/exo-icon-view.c:651
 msgid "Space which is inserted between grid column"
 msgstr "Το διάστημα που εισάγεται ανάμεσα στα κελιά στηλών πλέγματος"
 
-#: ../exo/exo-icon-view.c:668
+#: ../exo/exo-icon-view.c:667
 msgid "Number of columns"
 msgstr "Αριθμός στηλών"
 
-#: ../exo/exo-icon-view.c:669
+#: ../exo/exo-icon-view.c:668
 msgid "Number of columns to display"
 msgstr "Ο αριθμός των στηλών  που προβάλλεται"
 
-#: ../exo/exo-icon-view.c:683
+#: ../exo/exo-icon-view.c:682
 msgid "Enable Search"
 msgstr "Ενεργοποίηση αναζήτησης"
 
-#: ../exo/exo-icon-view.c:684
+#: ../exo/exo-icon-view.c:683
 msgid "View allows user to search through columns interactively"
 msgstr "Η Προβολή επιτρέπει το χρήστη να ερευνήσει στις στήλες διαδραστικά"
 
-#: ../exo/exo-icon-view.c:701
+#: ../exo/exo-icon-view.c:700
 msgid "Width for each item"
 msgstr "Πλάτος για κάθε αντικείμενο"
 
-#: ../exo/exo-icon-view.c:702
+#: ../exo/exo-icon-view.c:701
 msgid "The width used for each item"
 msgstr "Το πλάτος που χρησιμοποιείται για κάθε στοιχείο"
 
-#: ../exo/exo-icon-view.c:720
+#: ../exo/exo-icon-view.c:719
 msgid "Layout mode"
 msgstr "Διάταξη"
 
-#: ../exo/exo-icon-view.c:721
+#: ../exo/exo-icon-view.c:720
 msgid "The layout mode"
 msgstr "Η διάταξη της προβολής"
 
-#: ../exo/exo-icon-view.c:737
+#: ../exo/exo-icon-view.c:736
 msgid "Margin"
 msgstr "Περιθώριο"
 
-#: ../exo/exo-icon-view.c:738
+#: ../exo/exo-icon-view.c:737
 msgid "Space which is inserted at the edges of the icon view"
 msgstr "Το διάστημα που εισάγεται στα όρια της προβολής εικονιδίου"
 
-#: ../exo/exo-icon-view.c:754
+#: ../exo/exo-icon-view.c:753
 msgid "Markup column"
 msgstr "Στήλη επισήμανσης"
 
-#: ../exo/exo-icon-view.c:755
+#: ../exo/exo-icon-view.c:754
 msgid "Model column used to retrieve the text if using Pango markup"
 msgstr ""
 "Το μοντέλο στήλης για τη λήψη του κειμένου, στην περίπτωση χρήσης σήμανσης "
 "Pango"
 
-#: ../exo/exo-icon-view.c:769
+#: ../exo/exo-icon-view.c:768
 msgid "Icon View Model"
 msgstr "Μοντέλο προβολής εικονιδίου"
 
-#: ../exo/exo-icon-view.c:770
+#: ../exo/exo-icon-view.c:769
 msgid "The model for the icon view"
 msgstr "Το μοντέλο για την προβολή εικονιδίου"
 
-#: ../exo/exo-icon-view.c:784
+#: ../exo/exo-icon-view.c:783
 msgid ""
 "How the text and icon of each item are positioned relative to each other"
 msgstr ""
 "Πως το κείμενο και κάθε στοιχείο τοποθετούνται το ένα σε σχέση με το άλλο"
 
-#: ../exo/exo-icon-view.c:816
+#: ../exo/exo-icon-view.c:815
 msgid "Reorderable"
 msgstr "Δυνατότητα αναταξινόμησης"
 
-#: ../exo/exo-icon-view.c:817
+#: ../exo/exo-icon-view.c:816
 msgid "View is reorderable"
 msgstr "Η προβολή έχει δυνατότητα αναταξινόμησης"
 
-#: ../exo/exo-icon-view.c:832
+#: ../exo/exo-icon-view.c:831
 msgid "Row Spacing"
 msgstr "Διάστημα γραμμών"
 
-#: ../exo/exo-icon-view.c:833
+#: ../exo/exo-icon-view.c:832
 msgid "Space which is inserted between grid rows"
 msgstr "Το διάστημα που εισάγεται ανάμεσα στα κελιά γραμμών πλέγματος"
 
-#: ../exo/exo-icon-view.c:847
+#: ../exo/exo-icon-view.c:846
 msgid "Search Column"
 msgstr "Αναζήτηση στήλης"
 
-#: ../exo/exo-icon-view.c:848
+#: ../exo/exo-icon-view.c:847
 msgid "Model column to search through when searching through item"
 msgstr "Μοντέλο στήλης για αναζήτηση όταν γίνεται αναζήτηση μέσω αντικειμένου"
 
-#: ../exo/exo-icon-view.c:862
+#: ../exo/exo-icon-view.c:861
 msgid "Selection mode"
 msgstr "Λειτουργία επιλογής"
 
-#: ../exo/exo-icon-view.c:863
+#: ../exo/exo-icon-view.c:862
 msgid "The selection mode"
 msgstr "Η λειτουργία επιλογής"
 
-#: ../exo/exo-icon-view.c:878 ../exo/exo-tree-view.c:160
+#: ../exo/exo-icon-view.c:877 ../exo/exo-tree-view.c:160
 msgid "Single Click"
 msgstr "Μονό κλικ"
 
-#: ../exo/exo-icon-view.c:879 ../exo/exo-tree-view.c:161
+#: ../exo/exo-icon-view.c:878 ../exo/exo-tree-view.c:161
 msgid "Whether the items in the view can be activated with single clicks"
 msgstr "Εάν θα ενεργοποιούνται τα αντικείμενα στην προβολή με μονά κλικ"
 
-#: ../exo/exo-icon-view.c:895 ../exo/exo-tree-view.c:177
+#: ../exo/exo-icon-view.c:894 ../exo/exo-tree-view.c:177
 msgid "Single Click Timeout"
 msgstr "Λήξη χρονικού ορίου για μονό κλικ"
 
-#: ../exo/exo-icon-view.c:896 ../exo/exo-tree-view.c:178
+#: ../exo/exo-icon-view.c:895 ../exo/exo-tree-view.c:178
 msgid ""
 "The amount of time after which the item under the mouse cursor will be "
 "selected automatically in single click mode"
@@ -205,27 +205,27 @@
 "Ο χρόνος μετά τον οποίο το αντικείμενο κάτω από τον κέρσορα του ποντικιού θα "
 "επιλεγεί αυτόματα στη λειτουργία μονού κλικ"
 
-#: ../exo/exo-icon-view.c:911
+#: ../exo/exo-icon-view.c:910
 msgid "Spacing"
 msgstr "Διάστιχο"
 
-#: ../exo/exo-icon-view.c:912
+#: ../exo/exo-icon-view.c:911
 msgid "Space which is inserted between cells of an item"
 msgstr "Το διάστημα που εισάγεται ανάμεσα στα κελιά ενός στοιχείου"
 
-#: ../exo/exo-icon-view.c:935
+#: ../exo/exo-icon-view.c:934
 msgid "Selection Box Color"
 msgstr "Χρώμα κουτιού επιλογής"
 
-#: ../exo/exo-icon-view.c:936
+#: ../exo/exo-icon-view.c:935
 msgid "Color of the selection box"
 msgstr "Χρώμα του κουτιού επιλογής"
 
-#: ../exo/exo-icon-view.c:942
+#: ../exo/exo-icon-view.c:941
 msgid "Selection Box Alpha"
 msgstr "Τιμή διαφάνειας κουτιού επιλογής"
 
-#: ../exo/exo-icon-view.c:943
+#: ../exo/exo-icon-view.c:942
 msgid "Opacity of the selection box"
 msgstr "Αδιαφάνεια κουτιού επιλογής"
 
@@ -404,85 +404,90 @@
 msgstr "Παρακαλούμε αναφέρατε σφάλματα στον <%s>/\n"
 
 #. allocate the file chooser
-#: ../exo-desktop-item-edit/exo-die-command-entry.c:295
+#: ../exo-desktop-item-edit/exo-die-command-entry.c:290
 msgid "Select an Application"
 msgstr "Επιλογή μιας εφαρμογής"
 
-#: ../exo-desktop-item-edit/exo-die-command-entry.c:304
-#: ../exo-desktop-item-edit/exo-die-editor.c:629
+#: ../exo-desktop-item-edit/exo-die-command-entry.c:299
+#: ../exo-desktop-item-edit/exo-die-editor.c:641
 #: ../exo-helper/exo-helper-chooser.c:424
 msgid "All Files"
 msgstr "Όλα τα αρχεία"
 
-#: ../exo-desktop-item-edit/exo-die-command-entry.c:309
+#: ../exo-desktop-item-edit/exo-die-command-entry.c:304
 #: ../exo-helper/exo-helper-chooser.c:429
 msgid "Executable Files"
 msgstr "Εκτελέσιμα αρχεία"
 
-#: ../exo-desktop-item-edit/exo-die-command-entry.c:324
+#: ../exo-desktop-item-edit/exo-die-command-entry.c:319
 #: ../exo-helper/exo-helper-chooser.c:444
 msgid "Perl Scripts"
 msgstr "Δέσμες ενεργειών Perl"
 
-#: ../exo-desktop-item-edit/exo-die-command-entry.c:330
+#: ../exo-desktop-item-edit/exo-die-command-entry.c:325
 #: ../exo-helper/exo-helper-chooser.c:450
 msgid "Python Scripts"
 msgstr "Δέσμες ενεργειών Python"
 
-#: ../exo-desktop-item-edit/exo-die-command-entry.c:336
+#: ../exo-desktop-item-edit/exo-die-command-entry.c:331
 #: ../exo-helper/exo-helper-chooser.c:456
 msgid "Ruby Scripts"
 msgstr "Δέσμες ενεργειών Ruby"
 
-#: ../exo-desktop-item-edit/exo-die-command-entry.c:342
+#: ../exo-desktop-item-edit/exo-die-command-entry.c:337
 #: ../exo-helper/exo-helper-chooser.c:462
 msgid "Shell Scripts"
 msgstr "Δέσμες ενεργειών κέλυφους"
 
+#: ../exo-desktop-item-edit/exo-die-desktop-model.c:326
+#, fuzzy, c-format
+msgid "Create Launcher <b>%s</b>"
+msgstr "Δημιουργία εκκινητή"
+
 #. TRANSLATORS: Label in "Create Launcher"/"Create Link" dialog, make sure to avoid mnemonic conflicts
-#: ../exo-desktop-item-edit/exo-die-editor.c:306
+#: ../exo-desktop-item-edit/exo-die-editor.c:318
 msgid "_Name:"
 msgstr "_Όνομα:"
 
 #. TRANSLATORS: Label in "Create Launcher"/"Create Link" dialog, make sure to avoid mnemonic conflicts
-#: ../exo-desktop-item-edit/exo-die-editor.c:324
+#: ../exo-desktop-item-edit/exo-die-editor.c:336
 msgid "C_omment:"
 msgstr "Σχόλι_ο:"
 
 #. TRANSLATORS: Label in "Create Launcher" dialog, make sure to avoid mnemonic conflicts
-#: ../exo-desktop-item-edit/exo-die-editor.c:342
+#: ../exo-desktop-item-edit/exo-die-editor.c:354
 msgid "Comm_and:"
 msgstr "Εντο_λή:"
 
 #. TRANSLATORS: Label in "Create Link" dialog, make sure to avoid mnemonic conflicts
-#: ../exo-desktop-item-edit/exo-die-editor.c:359
+#: ../exo-desktop-item-edit/exo-die-editor.c:371
 msgid "_URL:"
 msgstr "_Διεύθυνση:"
 
 #. TRANSLATORS: Label in "Create Launcher"/"Create Link" dialog, make sure to avoid mnemonic conflicts
-#: ../exo-desktop-item-edit/exo-die-editor.c:377
+#: ../exo-desktop-item-edit/exo-die-editor.c:389
 msgid "_Icon:"
 msgstr "Ε_ικονίδιο:"
 
 #. TRANSLATORS: Label for the icon button in "Create Launcher"/"Create Link" dialog if no icon selected
 #. setup a label to tell that no icon was selected
-#: ../exo-desktop-item-edit/exo-die-editor.c:396
-#: ../exo-desktop-item-edit/exo-die-editor.c:1066
+#: ../exo-desktop-item-edit/exo-die-editor.c:408
+#: ../exo-desktop-item-edit/exo-die-editor.c:1223
 msgid "No icon"
 msgstr "Χωρίς εικονίδιο"
 
-#: ../exo-desktop-item-edit/exo-die-editor.c:407
+#: ../exo-desktop-item-edit/exo-die-editor.c:419
 msgid "Options:"
 msgstr "Επιλογές:"
 
 #. TRANSLATORS: Check button label in "Create Launcher" dialog, make sure to avoid mnemonic conflicts
 #. *              and sync your translations with the translations in Thunar and xfce4-panel.
 #.
-#: ../exo-desktop-item-edit/exo-die-editor.c:418
+#: ../exo-desktop-item-edit/exo-die-editor.c:430
 msgid "Use _startup notification"
 msgstr "Χρήση γνω_στοποίηση εκκίνησης"
 
-#: ../exo-desktop-item-edit/exo-die-editor.c:419
+#: ../exo-desktop-item-edit/exo-die-editor.c:431
 msgid ""
 "Select this option to enable startup notification when the command is run "
 "from the file manager or the menu. Not every application supports startup "
@@ -495,21 +500,21 @@
 #. TRANSLATORS: Check button label in "Create Launcher" dialog, make sure to avoid mnemonic conflicts
 #. *              and sync your translations with the translations in Thunar and xfce4-panel.
 #.
-#: ../exo-desktop-item-edit/exo-die-editor.c:431
+#: ../exo-des