diff options
author | Owen Taylor <otaylor@src.gnome.org> | 2003-03-21 20:34:02 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2003-03-21 20:34:02 +0000 |
commit | e3849905a9f6945ab664a026a2af78958d02641f (patch) | |
tree | 3c4d7df4785e8f01118f0bb4aad5cfa54431ba77 /gtk/gtkfilechooserutils.c | |
parent | 250fd7cc43af62578cbcd58a90e1fe0fb706eed1 (diff) | |
download | gtk+-e3849905a9f6945ab664a026a2af78958d02641f.tar.gz |
Initial revision
Diffstat (limited to 'gtk/gtkfilechooserutils.c')
-rw-r--r-- | gtk/gtkfilechooserutils.c | 172 |
1 files changed, 172 insertions, 0 deletions
diff --git a/gtk/gtkfilechooserutils.c b/gtk/gtkfilechooserutils.c new file mode 100644 index 0000000000..4a88ddcc03 --- /dev/null +++ b/gtk/gtkfilechooserutils.c @@ -0,0 +1,172 @@ +/* GTK - The GIMP Toolkit + * gtkfilechooserutils.c: Private utility functions useful for + * implementing a GtkFileChooser interface + * Copyright (C) 2003, Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser 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. + */ + +#include "gtkfilechooserutils.h" +#include "gtkfilechooser.h" +#include "gtkfilechooserenums.h" + +static void delegate_set_current_folder (GtkFileChooser *chooser, + const char *uri); +static char * delegate_get_current_folder (GtkFileChooser *chooser); +static void delegate_select_uri (GtkFileChooser *chooser, + const char *uri); +static void delegate_unselect_uri (GtkFileChooser *chooser, + const char *uri); +static void delegate_select_all (GtkFileChooser *chooser); +static void delegate_unselect_all (GtkFileChooser *chooser); +static GSList *delegate_get_uris (GtkFileChooser *chooser); + +static void delegate_current_folder_changed (GtkFileChooser *chooser, + gpointer data); +static void delegate_selection_changed (GtkFileChooser *chooser, + gpointer data); + +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_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)); +} + +void +_gtk_file_chooser_delegate_iface_init (GtkFileChooserIface *iface) +{ + iface->set_current_folder = delegate_set_current_folder; + iface->get_current_folder = delegate_get_current_folder; + iface->select_uri = delegate_select_uri; + iface->unselect_uri = delegate_unselect_uri; + iface->select_all = delegate_select_all; + iface->unselect_all = delegate_unselect_all; + iface->get_uris = delegate_get_uris; +} + +void +_gtk_file_chooser_set_delegate (GtkFileChooser *receiver, + GtkFileChooser *delegate) +{ + g_return_if_fail (GTK_IS_FILE_CHOOSER (receiver)); + g_return_if_fail (GTK_IS_FILE_CHOOSER (delegate)); + + g_object_set_data (G_OBJECT (receiver), "gtk-file-chooser-delegate", delegate); + + g_signal_connect (delegate, "current_folder_changed", + G_CALLBACK (delegate_current_folder_changed), receiver); + g_signal_connect (delegate, "selection_changed", + G_CALLBACK (delegate_selection_changed), receiver); +} + +GtkFileChooser * +get_delegate (GtkFileChooser *receiver) +{ + return g_object_get_data (G_OBJECT (receiver), "gtk-file-chooser-delegate"); +} + +static void +delegate_select_uri (GtkFileChooser *chooser, + const char *uri) +{ + gtk_file_chooser_select_uri (get_delegate (chooser), uri); +} + +static void +delegate_unselect_uri (GtkFileChooser *chooser, + const char *uri) +{ + gtk_file_chooser_unselect_uri (get_delegate (chooser), uri); +} + +static void +delegate_select_all (GtkFileChooser *chooser) +{ + gtk_file_chooser_select_all (get_delegate (chooser)); +} + +static void +delegate_unselect_all (GtkFileChooser *chooser) +{ + gtk_file_chooser_unselect_all (get_delegate (chooser)); +} + +static GSList * +delegate_get_uris (GtkFileChooser *chooser) +{ + return gtk_file_chooser_get_uris (get_delegate (chooser)); +} + +static void +delegate_set_current_folder (GtkFileChooser *chooser, + const char *uri) +{ + gtk_file_chooser_set_current_folder_uri (chooser, uri); +} + +static char * +delegate_get_current_folder (GtkFileChooser *chooser) +{ + return gtk_file_chooser_get_current_folder_uri (get_delegate (chooser)); +} + +static void +delegate_selection_changed (GtkFileChooser *chooser, + gpointer data) +{ + g_signal_emit_by_name (data, "selection_changed", 0); +} + +static void +delegate_current_folder_changed (GtkFileChooser *chooser, + gpointer data) +{ + g_signal_emit_by_name (data, "current_folder_changed", 0); +} |