]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkfilechooserutils.c
Updated
[~andy/gtk] / gtk / gtkfilechooserutils.c
index b6648f21c1e6373a47b3cf8d044756f9c93ad26b..6cce6fee2233829c4e35bad396024ef7c77f2d6a 100644 (file)
@@ -21,8 +21,8 @@
 
 #include "gtkfilechooserutils.h"
 #include "gtkfilechooser.h"
-#include "gtkfilechooserenums.h"
 #include "gtkfilesystem.h"
+#include "gtktypebuiltins.h"
 
 static void           delegate_set_current_folder     (GtkFileChooser    *chooser,
                                                       const GtkFilePath *path);
@@ -36,12 +36,20 @@ static void           delegate_unselect_path          (GtkFileChooser    *choose
 static void           delegate_select_all             (GtkFileChooser    *chooser);
 static void           delegate_unselect_all           (GtkFileChooser    *chooser);
 static GSList *       delegate_get_paths              (GtkFileChooser    *chooser);
+static GtkFilePath *  delegate_get_preview_path       (GtkFileChooser    *chooser);
 static GtkFileSystem *delegate_get_file_system        (GtkFileChooser    *chooser);
 static void           delegate_add_filter             (GtkFileChooser    *chooser,
                                                       GtkFileFilter     *filter);
 static void           delegate_remove_filter          (GtkFileChooser    *chooser,
                                                       GtkFileFilter     *filter);
 static GSList *       delegate_list_filters           (GtkFileChooser    *chooser);
+static gboolean       delegate_add_shortcut_folder    (GtkFileChooser    *chooser,
+                                                      const GtkFilePath *path,
+                                                      GError           **error);
+static gboolean       delegate_remove_shortcut_folder (GtkFileChooser    *chooser,
+                                                      const GtkFilePath *path,
+                                                      GError           **error);
+static GSList *       delegate_list_shortcut_folders  (GtkFileChooser    *chooser);
 static void           delegate_notify                 (GObject           *object,
                                                       GParamSpec        *pspec,
                                                       gpointer           data);
@@ -49,6 +57,10 @@ static void           delegate_current_folder_changed (GtkFileChooser    *choose
                                                       gpointer           data);
 static void           delegate_selection_changed      (GtkFileChooser    *chooser,
                                                       gpointer           data);
+static void           delegate_update_preview         (GtkFileChooser    *chooser,
+                                                      gpointer           data);
+static void           delegate_file_activated         (GtkFileChooser    *chooser,
+                                                      gpointer           data);
 
 /**
  * _gtk_file_chooser_install_properties:
@@ -64,51 +76,36 @@ static void           delegate_selection_changed      (GtkFileChooser    *choose
 void
 _gtk_file_chooser_install_properties (GObjectClass *klass)
 {
-  g_object_class_install_property (klass,
-                                  GTK_FILE_CHOOSER_PROP_ACTION,
-                                  g_param_spec_override ("action",
-                                                         GTK_TYPE_FILE_CHOOSER_ACTION,
-                                                         G_PARAM_READWRITE));
-  g_object_class_install_property (klass,
-                                  GTK_FILE_CHOOSER_PROP_FILE_SYSTEM,
-                                  g_param_spec_override ("file-system",
-                                                         GTK_TYPE_FILE_SYSTEM,
-                                                         G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
-  g_object_class_install_property (klass,
-                                  GTK_FILE_CHOOSER_PROP_FILTER,
-                                  g_param_spec_override ("filter",
-                                                         GTK_TYPE_FILE_FILTER,
-                                                         G_PARAM_READWRITE));
-  g_object_class_install_property (klass,
-                                  GTK_FILE_CHOOSER_PROP_FOLDER_MODE,
-                                  g_param_spec_override ("folder-mode",
-                                                         G_TYPE_BOOLEAN,
-                                                         G_PARAM_READWRITE));
-  g_object_class_install_property (klass,
-                                  GTK_FILE_CHOOSER_PROP_LOCAL_ONLY,
-                                  g_param_spec_override ("local-only",
-                                                         G_TYPE_BOOLEAN,
-                                                         G_PARAM_READWRITE));
-  g_object_class_install_property (klass,
-                                  GTK_FILE_CHOOSER_PROP_PREVIEW_WIDGET,
-                                  g_param_spec_override ("preview-widget",
-                                                         GTK_TYPE_WIDGET,
-                                                         G_PARAM_READWRITE));
-  g_object_class_install_property (klass,
-                                  GTK_FILE_CHOOSER_PROP_PREVIEW_WIDGET_ACTIVE,
-                                  g_param_spec_override ("preview-widget-active",
-                                                         G_TYPE_BOOLEAN,
-                                                         G_PARAM_READWRITE));
-  g_object_class_install_property (klass,
-                                  GTK_FILE_CHOOSER_PROP_SELECT_MULTIPLE,
-                                  g_param_spec_override ("select-multiple",
-                                                         G_TYPE_BOOLEAN,
-                                                         G_PARAM_READWRITE));
-  g_object_class_install_property (klass,
-                                  GTK_FILE_CHOOSER_PROP_SHOW_HIDDEN,
-                                  g_param_spec_override ("show-hidden",
-                                                         G_TYPE_BOOLEAN,
-                                                         G_PARAM_READWRITE));
+  g_object_class_override_property (klass,
+                                   GTK_FILE_CHOOSER_PROP_ACTION,
+                                   "action");
+  g_object_class_override_property (klass,
+                                   GTK_FILE_CHOOSER_PROP_EXTRA_WIDGET,
+                                   "extra-widget");
+  g_object_class_override_property (klass,
+                                   GTK_FILE_CHOOSER_PROP_FILE_SYSTEM,
+                                   "file-system");
+  g_object_class_override_property (klass,
+                                   GTK_FILE_CHOOSER_PROP_FILTER,
+                                   "filter");
+  g_object_class_override_property (klass,
+                                   GTK_FILE_CHOOSER_PROP_FOLDER_MODE,
+                                   "folder-mode");
+  g_object_class_override_property (klass,
+                                   GTK_FILE_CHOOSER_PROP_LOCAL_ONLY,
+                                   "local-only");
+  g_object_class_override_property (klass,
+                                   GTK_FILE_CHOOSER_PROP_PREVIEW_WIDGET,
+                                   "preview-widget");
+  g_object_class_override_property (klass,
+                                   GTK_FILE_CHOOSER_PROP_PREVIEW_WIDGET_ACTIVE,
+                                   "preview-widget-active");
+  g_object_class_override_property (klass,
+                                   GTK_FILE_CHOOSER_PROP_SELECT_MULTIPLE,
+                                   "select-multiple");
+  g_object_class_override_property (klass,
+                                   GTK_FILE_CHOOSER_PROP_SHOW_HIDDEN,
+                                   "show-hidden");
 }
 
 /**
@@ -133,10 +130,14 @@ _gtk_file_chooser_delegate_iface_init (GtkFileChooserIface *iface)
   iface->select_all = delegate_select_all;
   iface->unselect_all = delegate_unselect_all;
   iface->get_paths = delegate_get_paths;
+  iface->get_preview_path = delegate_get_preview_path;
   iface->get_file_system = delegate_get_file_system;
   iface->add_filter = delegate_add_filter;
   iface->remove_filter = delegate_remove_filter;
   iface->list_filters = delegate_list_filters;
+  iface->add_shortcut_folder = delegate_add_shortcut_folder;
+  iface->remove_shortcut_folder = delegate_remove_shortcut_folder;
+  iface->list_shortcut_folders = delegate_list_shortcut_folders;
 }
 
 /**
@@ -165,6 +166,10 @@ _gtk_file_chooser_set_delegate (GtkFileChooser *receiver,
                    G_CALLBACK (delegate_current_folder_changed), receiver);
   g_signal_connect (delegate, "selection-changed",
                    G_CALLBACK (delegate_selection_changed), receiver);
+  g_signal_connect (delegate, "update-preview",
+                   G_CALLBACK (delegate_update_preview), receiver);
+  g_signal_connect (delegate, "file-activated",
+                   G_CALLBACK (delegate_file_activated), receiver);
 }
 
 static GtkFileChooser *
@@ -205,6 +210,12 @@ delegate_get_paths (GtkFileChooser *chooser)
   return _gtk_file_chooser_get_paths (get_delegate (chooser));
 }
 
+static GtkFilePath *
+delegate_get_preview_path (GtkFileChooser *chooser)
+{
+  return _gtk_file_chooser_get_preview_path (get_delegate (chooser));
+}
+
 static GtkFileSystem *
 delegate_get_file_system (GtkFileChooser *chooser)
 {
@@ -231,11 +242,33 @@ delegate_list_filters (GtkFileChooser *chooser)
   return gtk_file_chooser_list_filters (get_delegate (chooser));
 }
 
+static gboolean
+delegate_add_shortcut_folder (GtkFileChooser    *chooser,
+                             const GtkFilePath *path,
+                             GError           **error)
+{
+  return _gtk_file_chooser_add_shortcut_folder (get_delegate (chooser), path, error);
+}
+
+static gboolean
+delegate_remove_shortcut_folder (GtkFileChooser    *chooser,
+                                const GtkFilePath *path,
+                                GError           **error)
+{
+  return _gtk_file_chooser_remove_shortcut_folder (get_delegate (chooser), path, error);
+}
+
+static GSList *
+delegate_list_shortcut_folders (GtkFileChooser *chooser)
+{
+  return gtk_file_chooser_list_shortcut_folders (get_delegate (chooser));
+}
+
 static void
 delegate_set_current_folder (GtkFileChooser    *chooser,
                             const GtkFilePath *path)
 {
-  _gtk_file_chooser_set_current_folder_path (chooser, path);
+  _gtk_file_chooser_set_current_folder_path (get_delegate (chooser), path);
 }
 
 static GtkFilePath *
@@ -267,12 +300,26 @@ static void
 delegate_selection_changed (GtkFileChooser *chooser,
                            gpointer        data)
 {
-  g_signal_emit_by_name (data, "selection-changed", 0);
+  g_signal_emit_by_name (data, "selection-changed");
 }
 
 static void
 delegate_current_folder_changed (GtkFileChooser *chooser,
                                 gpointer        data)
 {
-  g_signal_emit_by_name (data, "current-folder-changed", 0);
+  g_signal_emit_by_name (data, "current-folder-changed");
+}
+
+static void
+delegate_update_preview (GtkFileChooser    *chooser,
+                        gpointer           data)
+{
+  g_signal_emit_by_name (data, "update-preview");
+}
+
+static void
+delegate_file_activated (GtkFileChooser    *chooser,
+                        gpointer           data)
+{
+  g_signal_emit_by_name (data, "file-activated");
 }