2003-10-17 Federico Mena Quintero <federico@ximian.com> * gtkfilesystemgnomevfs.c (gtk_file_system_gnome_vfs_get_supports_bookmarks): Removed. (gtk_file_system_gnome_vfs_set_bookmarks): Removed. (gtk_file_system_gnome_vfs_add_bookmark): Implement. (gtk_file_system_gnome_vfs_remove_bookmark): Implement. * gtkfilechooserprivate.h (struct _GtkFileChooserIface): Replaced the ::set_shortcut_folders() method with :;add_shortcut_folder() and ::remove_shortcut_folder(). * gtkfilechooserutils.c (delegate_add_shortcut_folder): New function. (delegate_remove_shortcut_folder): New function. (delegate_list_shortcut_folders): New function. * gtkfilechooserimpldefault.c (create_shortcuts_model): Insert the Desktop directory as well. (shortcuts_insert_path): Renamed from shortcuts_append_path; now takes a position index instead of a parent node iter. Also takes a GError argument. (struct _GtkFileChooserImplDefault): Removed the shortcuts_folder list. It is all kept in the model now. (shortcuts_append_home): Save whether adding a shortcut for the home directory was successful. (shortcuts_append_desktop): Likewise for the desktop. (shortcuts_append_file_system_roots): Count and save the number of roots added. (shortcuts_append_shortcut_folders): Removed. (gtk_file_chooser_impl_default_add_shortcut_folder): Implement. (shortcuts_append_bookmarks): Now that we don't have a bookmarks parent node, don't expand the tree. (add_bookmark_button_clicked_cb): Use gtk_file_system_add_bookmark(). (remove_bookmark_button_clicked_cb): Use gtk_file_system_remove_bookmark(). (gtk_file_chooser_impl_default_list_shortcut_folders): Get the folders from the shortcuts model; we no longer keep a separate list. * gtkfilesystem.h (struct _GtkFileSystemIface): Oops, there shouldn't be shortcuts-related virtual methods here. * gtkfilechooser.c (file_paths_to_strings): New helper function. (gtk_file_chooser_get_filenames): Use file_paths_to_strings(). (gtk_file_chooser_get_uris): Likewise. (gtk_file_chooser_set_shortcut_folders): Removed. (gtk_file_chooser_list_shortcut_folders): Return a list of strings, not of GtkFilePath*. (gtk_file_chooser_list_shortcut_folder_uris): New function. (gtk_file_chooser_add_shortcut_folder): New function. (gtk_file_chooser_remove_shortcut_folder): New function. (gtk_file_chooser_add_shortcut_folder_uri): New function. (gtk_file_chooser_remove_shortcut_folder_uri): New function. (_gtk_file_chooser_add_shortcut_folder): New function. (_gtk_file_chooser_remove_shortcut_folder): New function. * gtkfilechooser.h: New enum. * gtkfilechooser.c (gtk_file_chooser_error_quark): New function. * gtkfilesystem.c (gtk_file_system_get_supports_bookmarks): Removed. (gtk_file_system_set_bookmarks): Removed. (gtk_file_system_add_bookmark): New function. (gtk_file_system_remove_bookmark): New function. * gtkfilesystemunix.c (gtk_file_system_unix_get_supports_bookmarks): Removed. (gtk_file_system_unix_set_bookmarks): Removed. (gtk_file_system_unix_add_bookmark): Just a stub for now. (gtk_file_system_unix_remove_bookmark): Likewise. * testfilechooser.c (main): Add a shortcut for testing purposes.
		
			
				
	
	
		
			94 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* GTK - The GIMP Toolkit
 | 
						|
 * gtkfilechooserprivate.h: Interface definition for file selector GUIs
 | 
						|
 * 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.
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef __GTK_FILE_CHOOSER_PRIVATE_H__
 | 
						|
#define __GTK_FILE_CHOOSER_PRIVATE_H__
 | 
						|
 | 
						|
#include "gtkfilechooser.h"
 | 
						|
#include "gtkfilesystem.h"
 | 
						|
 | 
						|
G_BEGIN_DECLS
 | 
						|
 | 
						|
#define GTK_FILE_CHOOSER_GET_IFACE(inst)  (G_TYPE_INSTANCE_GET_INTERFACE ((inst), GTK_TYPE_FILE_CHOOSER, GtkFileChooserIface))
 | 
						|
 | 
						|
typedef struct _GtkFileChooserIface GtkFileChooserIface;
 | 
						|
 | 
						|
struct _GtkFileChooserIface
 | 
						|
{
 | 
						|
  GTypeInterface base_iface;
 | 
						|
 | 
						|
  /* Methods
 | 
						|
   */
 | 
						|
  void           (*set_current_folder) 	   (GtkFileChooser    *chooser,
 | 
						|
		 		       	    const GtkFilePath *path);
 | 
						|
  GtkFilePath *  (*get_current_folder) 	   (GtkFileChooser    *chooser);
 | 
						|
  void           (*set_current_name)   	   (GtkFileChooser    *chooser,
 | 
						|
					    const gchar       *name);
 | 
						|
  void           (*select_path)        	   (GtkFileChooser    *chooser,
 | 
						|
		 		       	    const GtkFilePath *path);
 | 
						|
  void           (*unselect_path)      	   (GtkFileChooser    *chooser,
 | 
						|
		 		       	    const GtkFilePath *path);
 | 
						|
  void           (*select_all)         	   (GtkFileChooser    *chooser);
 | 
						|
  void           (*unselect_all)       	   (GtkFileChooser    *chooser);
 | 
						|
  GSList *       (*get_paths)          	   (GtkFileChooser    *chooser);
 | 
						|
  GtkFilePath *  (*get_preview_path)   	   (GtkFileChooser    *chooser);
 | 
						|
  GtkFileSystem *(*get_file_system)    	   (GtkFileChooser    *chooser);
 | 
						|
  void           (*add_filter)         	   (GtkFileChooser    *chooser,
 | 
						|
					    GtkFileFilter     *filter);
 | 
						|
  void           (*remove_filter)      	   (GtkFileChooser    *chooser,
 | 
						|
					    GtkFileFilter     *filter);
 | 
						|
  GSList *       (*list_filters)       	   (GtkFileChooser    *chooser);
 | 
						|
  gboolean       (*add_shortcut_folder)    (GtkFileChooser    *chooser,
 | 
						|
					    const GtkFilePath *path,
 | 
						|
					    GError           **error);
 | 
						|
  gboolean       (*remove_shortcut_folder) (GtkFileChooser    *chooser,
 | 
						|
					    const GtkFilePath *path,
 | 
						|
					    GError           **error);
 | 
						|
  GSList *       (*list_shortcut_folders)  (GtkFileChooser    *chooser);
 | 
						|
  
 | 
						|
  /* Signals
 | 
						|
   */
 | 
						|
  void (*current_folder_changed) (GtkFileChooser *chooser);
 | 
						|
  void (*selection_changed)      (GtkFileChooser *chooser);
 | 
						|
  void (*update_preview)         (GtkFileChooser *chooser);
 | 
						|
  void (*file_activated)         (GtkFileChooser *chooser);
 | 
						|
};
 | 
						|
 | 
						|
GtkFileSystem *_gtk_file_chooser_get_file_system         (GtkFileChooser    *chooser);
 | 
						|
void           _gtk_file_chooser_set_current_folder_path (GtkFileChooser    *chooser,
 | 
						|
							  const GtkFilePath *path);
 | 
						|
GtkFilePath *  _gtk_file_chooser_get_current_folder_path (GtkFileChooser    *chooser);
 | 
						|
void           _gtk_file_chooser_select_path             (GtkFileChooser    *chooser,
 | 
						|
							  const GtkFilePath *path);
 | 
						|
void           _gtk_file_chooser_unselect_path           (GtkFileChooser    *chooser,
 | 
						|
							  const GtkFilePath *path);
 | 
						|
GSList *       _gtk_file_chooser_get_paths               (GtkFileChooser    *chooser);
 | 
						|
GtkFilePath *  _gtk_file_chooser_get_preview_path        (GtkFileChooser    *chooser);
 | 
						|
gboolean       _gtk_file_chooser_add_shortcut_folder     (GtkFileChooser    *chooser,
 | 
						|
							  const GtkFilePath *path,
 | 
						|
							  GError           **error);
 | 
						|
gboolean       _gtk_file_chooser_remove_shortcut_folder  (GtkFileChooser    *chooser,
 | 
						|
							  const GtkFilePath *path,
 | 
						|
							  GError           **error);
 | 
						|
 | 
						|
G_END_DECLS
 | 
						|
 | 
						|
#endif /* __GTK_FILE_CHOOSER_PRIVATE_H__ */
 |