This will take you to the file's folder and select the file in question.
The menu item is only available in Recently-used and Search modes, so that
you can go from files in them to the 'normal' browsing mode.
Signed-off-by: Federico Mena Quintero <federico@gnome.org>
This way we can re-create the contents of that box easily without disrupting
the rest of the file chooser.
Signed-off-by: Federico Mena Quintero <federico@gnome.org>
It used to be that every part of the file chooser's code would show/hide the widgets
near the pathbar as needed. Now we have two central functions:
path_bar_update()
path_bar_set_mode()
These take care of all the widget shuffling; setting the visibility of the
pathbar, info bar, and Create Folder button as appropriate; setting the contents
of the info bar, etc. - based on the current operation_mode and action.
Signed-off-by: Federico Mena Quintero <federico@gnome.org>
In RELOAD_EMPTY mode, when no folder has been selected by the calling app, we now
start showing the recently-used list. The rationale is as follows:
- In Open mode, the user is likely to pick a file he has used recently.
- In Save mode, the user is likely to want a destination folder which
he has used recently.
For the Save case, where we want to present the user with recent folders instead
of recent files, we will make the recent-list do so in subsequent commits.
Signed-off-by: Federico Mena Quintero <federico@gnome.org>
Now we reparent the browse_path_bar_hbox to that spot in Save mode,
or to be above the file lists in Open mode. The pathbar makes for a very
clear indication of the location to save in.
Signed-off-by: Federico Mena Quintero <federico@gnome.org>
And with this we get rid of the craziness of having a separate filter model
for the combobox's model.
Signed-off-by: Federico Mena Quintero <federico@gnome.org>
This effectively makes the file chooser always be in 'expanded' mode.
Later, we'll move the pathbar to the 'Save in folder:' line.
Signed-off-by: Federico Mena Quintero <federico@gnome.org>
Long ago, before we had file monitoring at the GIO/Glib level, we would
reload the current folder each time a file chooser gets (re)mapped.
This was basically to let the GIMP recycle the same file chooser for all
file/open or file/save operations, instead of creating a new one every time.
In that case, we reloaded the folder with each ::map() event so that the
file chooser would present an up-to-date view of the folder that was being
displayed. Now, the folder should always be up-to-date as we do
file monitoring all the time.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
The previous function enumerated the whole directory and used a lot of
outdated API to decide how to show files.
The new code queries the filesystem model to decide about this.
The now unused old functions were removed.
Replace the list model code with the file system model and use all the
file system model API niceties we get from that.
Also adds the function _gtk_file_system_model_add_and_query_file() which
g_file_query_info()'s the file before adding it, so it gets added with
the right information.
Previously, there was a GtkTreeSortModel wrapped around the filesystem
model to make it sortable. As the new implementation implements the
GtkTreeSortable interface, we can use this instead.
The virtual method list_shortcut_folders returns a GSList * of GFile *.
In turn, gtk_file_chooser_list_shortcut_folders() converts those to strings.
However, the delegate in gtkfilechooserutils.c was calling
gtk_file_chooser_list_shortcut_folders() every time, so we were trying
to convert invalid data.
Now we have an internal function that deals with GFile *. That
function is called by the delegate, and the conversion is done only
once by the API entry points.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
We now use a GtkSizeGroup to control the vertical size of the various widgets
that get put in the path bar's area: the location bar, the search entry,
the recently-used title label.
This keeps the shortcuts pane and the file list from jumping up and down
when one switches between operation modes (browse/search/recently-used).
Signed-off-by: Federico Mena Quintero <federico@novell.com>
2008-09-18 Emmanuele Bassi <ebassi@linux.intel.com>
Bug 325095 – show a 'size' column
* gtk/gtkfilechooserdefault.c:
* gtk/gtkfilechooserprivate.h: Add a context menu item controlling
the visibility of the file size column. This works only for the
browse mode, and the column is not visible by default.
* gtk/gtkfilechoosersettings.[ch]: Add a ShowSizeColumn key to the
settings file.
svn path=/trunk/; revision=21431
2008-06-30 Cody Russell <bratsche@gnome.org>
* Practically everything changed.
Change all references of GIMP Toolkit (and variations of it)
to GTK+ Toolkit, showing no mercy at all to our beloved
ancestry. (#540529)
svn path=/trunk/; revision=20709
2008-06-16 Michael Natterer <mitch@imendio.com>
* gtk/gtkfilechooserprivate.h: remove GtkTooltips member from the
GtkFileChooserDefault struct.
* gtk/gtkfilechooserdefault.c: don't allocate and free the
GtkTooltips.
svn path=/trunk/; revision=20396
2008-06-10 Carlos Garnacho <carlos@imendio.com>
Bug 520874 - Should use gio directly.
* gtk/gtkfilesystem.[ch]: Turn into a private object, which mostly
provides helper functions for asynchronous calls, folder abstraction
and uniform handling of volumes/drives/mounts.
* gtk/gtkfilesystemwin32.[ch]:
* gtk/gtkfilesystemunix.[ch]: Removed, these are no longer required.
* gtk/gtkfilechooser.c:
* gtk/gtkfilechooserbutton.c:
* gtk/gtkfilechooserdefault.c:
* gtk/gtkfilechooserentry.[ch]:
* gtk/gtkfilechooserprivate.h:
* gtk/gtkfilechooserutils.c:
* gtk/gtkfilesystemmodel.[ch]:
* gtk/gtkpathbar.[ch]: Use GIO internally. Adapt to GtkFileSystem API.
Do not load filesystem implementation modules.
* gtk/Makefile.am:
* gtk/gtk.symbols: the gtkfilesystem.h private header isn't installed
anymore, nor the unix/win32 implementations.
* README.in: Add blurb about these changes.
svn path=/trunk/; revision=20342
2007-05-18 Carlos Garnacho <carlos@imendio.com>
Refactor GtkFileChooserDialog sizing.
* gtkfilechooserembed.[ch] (delegate_get_resizable_hints)
(_gtk_file_chooser_embed_get_resizable_hints):
s/resizable_hints/resizable/, return just one boolean value to
determine whether the filechooser should be resizable or not.
* gtkfilechooserprivate.h (struct GtkFileChooserDialogPrivate): remove
variables related to the GtkFileChooserEmbed get_default_size() and
get_resizable() implementations.
(struct GtkFileChooserDefault): Move default size management here.
* gtkfilechooserdefault.c (gtk_file_chooser_default_size_allocate):
Added, store currently allocated size to calculate default size later.
(gtk_file_chooser_default_get_resizable_hints):
s/resizable_hints/resizable/.
(gtk_file_chooser_default_set_property): Reload settings if the file
chooser action changes, this way the save expander state will be known
before mapping the window, avoiding wrong window positioning and
flickering. (#424299, #424309)
(find_good_size_from_style): Only get size from style if it wasn't set
previously.
(gtk_file_chooser_default_get_default_size): return default size based
on stored default size and preview/extra widget sizes.
* gtkfilechooserdialog.c (file_chooser_widget_update_hints)
(file_chooser_widget_realized_size_changed)
(file_chooser_widget_unrealized_size_changed): simplified to
(file_chooser_widget_size_changed): set window size and resizability
based on the GtkFileChooserEmbed interface implementation. (Bug
#420285, Tomeu Vizoso)
(gtk_file_chooser_dialog_map): force a dialog size change, so it's
clamped for sure to the 75% of the screen size.
svn path=/trunk/; revision=17859
2007-05-11 Emmanuele Bassi <ebassi@gnome.org>
GtkFileChooser search fixes and recent files support. (#435342)
* gtk/gtkfilechooserprivate.h:
* gtk/gtkfilechooserdefault.c: Follow the sorting order of
the GtkTreeView displaying the files list.
(shortcuts_get_index), (shortcuts_insert_separator),
(shortcuts_model_create), (shortcuts_combo_filter_func): Remove
the separator between the Search and the Recently Used shortcuts.
(list_select_func), (list_icon_data_func), (list_name_data_func),
(list_mtime_data_func): Update the sensitivity of the row
depending on the GtkFileChooserAction used.
svn path=/trunk/; revision=17828
2007-05-11 Emmanuele Bassi <ebassi@gnome.org>
GtkFileChooser search fixes and recent files support. (#435342)
* gtk/gtkfilechooserprivate.h:
* gtk/gtkfilechooserdefault.c: Update the contents of the
files list when changing the filter of the GtkFileChooserDefault
widget.
svn path=/trunk/; revision=17827
2007-05-11 Emmanuele Bassi <ebassi@gnome.org>
GtkFileChooser search fixes and recent files support. (#435342)
* gtk/gtkfilechooserprivate.h:
* gtk/gtkfilechooserdefault.c: Add support for showing the
recently used files list as a special shortcut item.
svn path=/trunk/; revision=17824
2007-05-02 Emmanuele Bassi <ebassi@gnome.org>
Add search file support in the GtkFileChooser. Original patch
by Federico Mena Quintero; patch updated by Matthias Clasen.
See bug #344785.
* gtk/gtksearchengine.[ch]: Private search engine abstraction
object.
* gtk/gtksearchenginebeagle.[ch]: Private search engine
implementation using libbeagle (via g_module_open()).
* gtk/gtksearchenginesimple.[ch]: Private search engine
implementation using file tree walking.
* gtk/gtksearchenginetracker.[ch]: Private earch engine
implementation using libtracker (via g_module_open()).
* gtk/gtkquery.[ch]: Private query object for the search
engines.
* gtk/gtkfilechooserprivate.h:
* gtk/gtkfilechooserdefault.c: Use the GtkSearchEngine to
query a search engine backend using GtkQuery; create a new
operating mode, OPERATION_MODE_SEARCH, and call the common
operating mode OPERATION_MODE_BROWSE; add support for virtual
shortcuts inside the shortcuts model and create a new "Search"
virtual shortcut.
* gtk/Makefile.am: Update the build with the new files
svn path=/trunk/; revision=17783
* gtk/gtkfilechooserdefault.c:
* gtk/gtkfilechooserprivate.h:
* gtk/gtkfilechoosersettings.c:
* gtk/gtkfilechoosersettings.h:
Save the expanded state of the folder browser with the file
chooser settings. Resolves the expander portions of (#153828,
Lemmit Kaplinski)
svn path=/trunk/; revision=17121
2006-09-03 Kristian Rietveld <kris@imendio.com>
* gtk/gtkfilechooserdefault.c (save_entry_get_info_cb),
(file_exists_get_info_cb), (gtk_file_chooser_default_should_respond):
change file_exists_and_is_not_folder checks to get the file info
for the path directly instead of querying the current file folder
of the save entry.
* gtk/gtkfilechooserprivate.h (struct _GtkFileChooserDefault): add
new field.
* tests/autotestfilechooser.c (wait_for_idle_idle), (wait_for_idle),
(test_reload_sequence), (test_button_folder_states_for_action): wait
for idle after setting a folder to ensure the async operations to load
the folder are finished,
(test_confirm_overwrite), (test_confirm_overwrite_for_path):
factor out test_confirm_overwrite code so we can add tests for more
paths more easily.
2006-07-18 Federico Mena Quintero <federico@novell.com>
Fix https://bugzilla.novell.com/show_bug.cgi?id=184875 - make the
location entry in Save mode preserve the stuff from
set_filename(); it was overwriting it with $cwd.
This is the same fix for
http://bugzilla.gnome.org/show_bug.cgi?id=347066
* tests/autotestfilechooser.c: (test_black_box): Added black-box
test for set_filename() and set_current_name().
* gtk/gtkfilechooser.c (gtk_file_chooser_get_type): Cast to
GClassInitFunc in the call to g_type_register_static_simple(), to
avoid a compiler warning.
* gtk/gtkfilechooserprivate.h (struct _GtkFileChooserDefault):
Added a browse_files_last_selected_name field. We'll copy the
logic from gtkfilesel.c to see when to clear the location entry.
(struct _GtkFileChooserDefault): Removed the
processing_pending_selections field.
* gtk/gtkfilechooserdefault.c (gtk_file_chooser_default_finalize):
Free impl->browse_files_last_selected_name.
(pending_select_paths_process): Don't use
impl->processing_pending_selections.
(update_chooser_entry): Keep track of the name that was last
selected in the file list. We use this to know when to clear the
location entry. The logic is similar to that of
gtkfilesel.c:gtk_file_selection_file_changed(). This also lets us
get rid of the processing_pending_selections flag.
(update_chooser_entry): Clear the entry if we didn't have a
selection before.
(location_switch_to_filename_entry): Do not set $cwd as the
contents of the location entry here...
(location_popup_handler): ... but do it here instead, only as the
result of the user asking to turn on the location entry.
(gtk_file_chooser_default_get_paths): If the location entry is
empty, do the fallback of seeing if it is sensible to say that
$cwd is the selected path.
(gtk_file_chooser_default_update_current_folder): Don't set the
text of the location entry; this is no longer needed with the
fixes above.
(shortcuts_activate_iter): Clear the location entry when
activating a shortcut if we are not in SAVE mode. This keeps the
contents of the location entry consistent even when switching
folders via the shortcuts.
2006-05-03 Federico Mena Quintero <federico@novell.com>
Merged the federico-filename-entry branch, to fix bug #136541.
Combined ChangeLogs:
2006-04-17 Federico Mena Quintero <federico@novell.com>
* gtk/gtkfilechooserdefault.c (pending_select_paths_process):
Oops, we *do* need to check that we are in OPEN mode before
selecting the first row in the file list. See
https://bugzilla.novell.com/show_bug.cgi?id=166906
(gtk_file_chooser_default_get_paths): If we are in the case for
the file list, and the list has no selected rows, jump to the case
for the filename entry. This is so that
1. The user types a filename in the SAVE filename entry
("foo.txt").
2. He then double-clicks on a folder ("bar") in the file
list.
will yield the expected "bar/foo.txt" selection.
2006-03-29 Federico Mena Quintero <federico@novell.com>
* gtk/gtkpathbar.c (gtk_path_bar_init): Reduce the inter-button
spacing to 0.
* gtk/gtkfilechooserdefault.c (browse_widgets_create): Make the
location label bold.
2006-03-29 Federico Mena Quintero <federico@novell.com>
* gtk/gtkfilechooserdefault.c (location_mode_set): Just change the
location_mode field if we are in SAVE/CREATE_FOLDER modes.
(gtk_file_chooser_default_get_paths): Get the path based on the
currently focused widget, or the last-focused widget. This is
what we should have been doing in the beginning, but it worked out
fine because we didn't have the possibility of a filename entry in
OPEN mode.
(gtk_file_chooser_default_should_respond): Handle the case where
the last focused widget is the location_entry.
2006-03-28 Federico Mena Quintero <federico@novell.com>
* gtk/gtkfilechoosersettings.[ch]: New files with a simple
framework for saving/loading settings from the file chooser in
$XDG_CONFIG_HOME/gtk-2.0/gtkfilechooser.
* gtk/gtkfilechooserdefault.c (gtk_file_chooser_default_unmap):
Save the current settings.
(settings_save): New helper function. We save the location_mode
and show_hidden flags.
(gtk_file_chooser_default_map): Load the settings.
(settings_load): New helper function.
* gtk/gtkfilechooserentry.c
(_gtk_file_chooser_entry_set_file_part): Oops, don't modify
in_change. Our handlers are what set the file_part, so they
*must* be run when we modify the text.
2006-03-27 Federico Mena Quintero <federico@novell.com>
* gtk/gtkfilechooserprivate.h (struct _GtkFileChooserDefault):
Removed the save_file_name_entry. We'll make this be the same as
the location_entry widget.
(struct _GtkFileChooserDefault): Leave only location_button,
location_entry_box, location_label, location_entry. We'll use a
single toggle button for the location entry, which will appear
below the path bar.
(struct _GtkFileChooserDefault): Added a
processing_pending_selections flag.
* gtk/gtkfilechooserdefault.c (save_widgets_create): Destroy the
old location_entry if necessary, and hide the location toggle
widgets.
(update_chooser_entry): In multiple selection mode, just clear the
location_entry.
(check_save_entry): Allow running in OPEN or SELECT_FOLDER modes
if we are in LOCATION_MODE_FILENAME_ENTRY.
(gtk_file_chooser_default_should_respond): Switch to a folder if
the location_entry contains a folder name in OPEN and SAVE mode,
not just SAVE mode. If the entry doesn't contain a folder name,
but is otherwise well-formed, and we are in OPEN mode, return that
we should respond with that filename.
(gtk_file_chooser_default_initial_focus): Focus the location_entry
if appropriate.
(browse_widgets_create): Create the location_entry_box and the
location_label here.
(update_appearance): Call location_mode_set() when switching back
to OPEN/SELECT_FOLDER mode. Hide the location_button when
switching to SAVE/CREATE_FOLDER mode.
(pending_select_paths_process): Turn the
processing_pending_selections flag on and off around changes to
the current selection. Don't special-case OPEN mode anymore,
since the new flag will take care of things in
update_chooser_entry().
(update_chooser_entry): Don't do anything if
processing_pending_selections is TRUE. This keeps the entry from
being polluted when changing folders.
(location_popup_handler): In OPEN/SELECT_FOLDER modes, toggle
between the path bar and the entry. In SAVE/CREATE_FOLDER modes, simply focus the
location_entry.
(update_from_entry): Removed.
(location_entry_create): Removed.
(open_location_cb): Removed.
(file_list_build_popup_menu): Don't add an "Open _Location" menu item.
(location_entry_set_initial_text): Don't do anything if
current_folder is NULL.
* gtk/gtkfilechooserentry.c
(_gtk_file_chooser_entry_set_file_part): Turn in_change on and off
around the call to gtk_entry_set_text(). This makes completion
not happen when the caller has explicitly set a name.
2006-03-24 Federico Mena Quintero <federico@novell.com>
* gtk/gtkfilechooserprivate.h (struct _GtkFileChooserDefault):
Added fields location_mode_box, location_pathbar_radio,
location_filename_radio, location_widget_box, location_label,
location_entry. The radio buttons will switch between the pathbar
and the location entry; the other boxes are for layout purposes.
(enum LocationMode): New enum.
(struct _GtkFileChooserDefault): Added a location_mode field.
* gtk/gtkfilechooserdefault.c (browse_widgets_create): Create the
location radio buttons to switch between the pathbar and the
location entry. Pack the browse_path_bar in the new
location_widget_box instead of a generic hbox.
(location_buttons_create): New function.
(gtk_file_chooser_default_init): Initialize impl->location_mode.
(location_switch_to_path_bar): New function.
(location_switch_to_filename_entry): New function.
* gtk/gtkfilechooserbutton.c (model_add_special): The display_name
should not be const.
2005-09-27 Federico Mena Quintero <federico@ximian.com>
Don't reload the current folder unnecessarily on ::map().
* gtk/gtkfilechooserprivate.h (ReloadState): New enum to represent
the reloading state.
(struct _GtkFileChooserDefault): Added a "reload_state" field.
* gtk/gtkfilechooserdefault.c (gtk_file_chooser_default_init):
Initialize impl->reload_state.
(gtk_file_chooser_default_map): Check the impl->reload_state; load
a default folder if no folder has been set, or reload the current
one only if we had been unmapped first.
(gtk_file_chooser_default_update_current_folder): Set the
reload_state to RELOAD_HAS_FOLDER.
(gtk_file_chooser_default_unmap): Implement, and set the
reload_state to RELOAD_WAS_UNMAPPED.
(shortcuts_model_create): Don't call shortcuts_add_bookmarks()
here; they'll get (re)loaded on ::map() anyway.
* gtk/gtkfilechooserwidget.c
(gtk_file_chooser_widget_constructor): Don't set a default folder here.
* tests/autotestfilechooser.c (test_action_widgets): Don't take in
a dialog; build it ourselves.
(test_reload): New test to ensure that we don't load the default
folder more than once, and that we reload it when
unmapping/remapping.
(get_impl_from_dialog): New utility function.
(test_widgets_for_current_action): Use get_impl_from_dialog().
2005-09-15 Federico Mena Quintero <federico@ximian.com>
* tests/autotestfilechooser.c: Start a set of automated tests for
the file chooser. The only test in there right now doesn't pass
yet. It specifies the intended behavior of the first optimization
of a series which I'll do on the file chooser (see
http://primates.ximian.com/~federico/news-2005-09.html#14 for the
details of this optimization).
* tests/Makefile.am: Added autotestfilechooser.c.
* gtk/gtkfilechooserprivate.h (struct
_GtkFileChooserDialogPrivate): Move all the file chooser's private
structures to here, so that they can be accessed by
tests/autotestfilechooser.c: _GtkFileChooserDialogPrivate,
_GtkFileChooserWidgetPrivate, LoadState, _GtkFileChooserDefault.
* gtk/gtkfilechooserdialog.c: See above.
* gtk/gtkfilechooserwidget.c: See above.
* gtk/gtkfilechooserdefault.c: See above.
2005-07-14 Federico Mena Quintero <federico@ximian.com>
Add overwrite confirmation for SAVE mode. Fixes bug #152850:
* gtk/gtkfilechooser.h: Add prototypes for
gtk_file_chooser_set/get_do_overwrite_confirmation().
(GtkFileChooserConfirmation): New enum for the result of the
"confirm-overwrite" signal.
* gtk/gtkmarshalers.list: Add ENUM:VOID.
* gtk/gtkfilechooser.c (gtk_file_chooser_class_init): Add a
"do-overwrite-confirmation" boolean property.
(gtk_file_chooser_set_do_overwrite_confirmation): Implement.
(gtk_file_chooser_get_do_overwrite_confirmation): Implement.
(confirm_overwrite_accumulator): New accumulator for the signal.
* gtk/gtkfilechooserutils.h (GtkFileChooserProp): Add
GTK_FILE_CHOOSER_PROP_DO_OVERWRITE_CONFIRMATION.
* gtk/gtkfilechooserutils.c
(_gtk_file_chooser_install_properties): Override the
do-overwrite-confirmation property.
* gtk/gtkfilechooserprivate.h (struct _GtkFileChooserIface): Add a
confirm_overwrite signal to the vtable.
* gtk/gtkfilechooserdefault.c
(gtk_file_chooser_default_set_property): Handle the new property.
(gtk_file_chooser_default_get_property): Likewise.
(get_selected_file_info_from_file_list): New helper function; code
taken from list_selection_changed().
(list_selection_changed): Use get_selected_file_info_from_file_list().
(should_respond_after_confirm_overwrite): New function.
(gtk_file_chooser_default_should_respond): Confirm when necessary.
2004-03-05 Federico Mena Quintero <federico@ximian.com>
* gtk/gtkfilechooserprivate.h (struct _GtkFileChooserIface): Add
gboolean return values and GError arguments to
::set_current_folder() and ::select_path().
* gtk/gtkfilechooser.c (gtk_file_chooser_set_current_folder):
Return a boolean value for success/failure.
(gtk_file_chooser_set_current_folder_uri): Likewise.
(gtk_file_chooser_select_filename): Likewise.
(gtk_file_chooser_select_uri): Likewise.
(gtk_file_chooser_set_filename): Likewise.
(gtk_file_chooser_set_uri): Likewise.
(_gtk_file_chooser_set_current_folder_path): Likewise, plus take
in a GError.
(_gtk_file_chooser_select_path): Likewise.
* gtk/gtkfilechooserutils.c (delegate_set_current_folder):
Likewise.
(delegate_select_path): Likewise.
* gtk/gtkfilechooserdefault.c
(gtk_file_chooser_default_select_path): Likewise.
(gtk_file_chooser_default_set_current_folder): Likewise.
(error_changing_folder_dialog): New helper function.
(change_folder_and_display_error): New helper function.
(switch_to_selected_folder): Use change_folder_and_display_error().
(tree_selection_changed): Likewise.
(shortcuts_activate_volume): Likewise.
(shortcuts_activate_item): Likewise.
(list_row_activated): Likewise.
(path_bar_clicked): Likewise.
(update_from_entry): Likewise.
(up_folder_handler): Likewise.
(home_folder_handler): Get the home path from the shortcuts model,
and use change_folder_and_display_error().
* tests/testfilechooser.c (set_current_folder): New helper
function; pops up a simple error dialog if necessary.
(set_filename): Likewise.
(set_folder_nonexistent_cb): Use set_current_folder().
(set_folder_existing_nonexistent_cb): Likewise.
(set_filename_nonexistent_cb): Use set_filename().
(set_filename_existing_nonexistent_cb): Likewise.
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.
2003-10-07 Federico Mena Quintero <federico@ximian.com>
* gtkfilesystem.h (struct _GtkFileSystemIface): Added methods for
::get_supports_bookmarks(), ::set_bookmarks(), ::list_bookmarks().
Added a ::bookmarks_changed() signal.
* gtkfilesystem.c (gtk_file_system_get_supports_bookmarks): New function.
(gtk_file_system_set_bookmarks): New function.
(gtk_file_system_list_bookmarks): New function.
(gtk_file_system_base_init): Create the "bookmarks-changed" signal.
(gtk_file_paths_copy): New function.
* gtkfilesystemunix.c (gtk_file_system_unix_get_supports_bookmarks): Implement.
(gtk_file_system_unix_set_bookmarks): Implement.
(gtk_file_system_unix_get_bookmarks): Implement.
* gtkfilesystemgnomevfs.c (struct _GtkFileSystemGnomeVFS): Added
fields for the bookmarks and the GConfClient.
(gtk_file_system_gnome_vfs_set_bookmarks): Implement.
(gtk_file_system_gnome_vfs_list_bookmarks): Implement.
* gtkfilechooserprivate.h (struct _GtkFileChooserIface): Added
methods for ::set_shortcut_folders(), ::list_shortcut_folders().
* gtkfilechooser.c (gtk_file_chooser_set_shortcut_folders): New
function.
(gtk_file_chooser_list_shortcut_folders): New function.
* gtkfilechooserimpldefault.c (create_shortcuts_model): Unref the
old shortcuts model if it exists. Create the nodes for the
app-specific shortcut folders.
(struct _GtkFileChooserImplDefault): Added a field for the
shortcut_folders.
(gtk_file_chooser_impl_default_set_shortcut_folders): Implement.
(select_shortcuts_folder): New helper function.
(gtk_file_chooser_impl_default_set_current_folder): Use
select_shortcuts_folder().
(shortcuts_append_path): Get the file info here, instead of the
caller.
(shortcuts_append_home): Use shortcuts_append_path().
(shortcuts_append_file_system_roots): Likewise.
(create_shortcuts_model): Add the app-specific shortcut folders
and the bookmarks.
(gtk_file_chooser_impl_default_list_shortcut_folders): Implement.
(create_shortcuts_tree): Added a button to let the user add the
current folder to the bookmarks.
(gtk_file_chooser_impl_default_set_property): Connect to
"bookmarks-changed" on the file system.
(shortcuts_append_bookmarks): New function.
* configure.ac: Depend on GConf.
2003-09-10 Federico Mena Quintero <federico@ximian.com>
* gtkfilechooserimpldefault.c (create_file_list): Connect to
"row_activated" on the file list.
(list_row_activated): New function. Changes to folders or emits
the "file-activated" signal depending on what type of row was
activated.
(create_folder_tree): Renamed from create_directory_tree(), since
"folder" is the new politically-correct name.
* gtkfilechooserprivate.h (struct _GtkFileChooserIface): Added a
file-activated signal.
* gtkfilechooser.c (gtk_file_chooser_class_init): Register the
signal.
* gtkfilechooserutils.c (_gtk_file_chooser_set_delegate): Connect
to "file-activated" on the delegate.
(delegate_file_activated): New function.
* TODO: Added an API item about Clipart-like folders provided by
applications.
Wed Jul 23 17:52:01 2003 Owen Taylor <otaylor@redhat.com>
* testfilechooser.c: Add over-big test case for preview
(much of size from a modified copy of
gdk_pixbuf_new_from_file_at_size())
* gtkfilechooserutils.[ch] gtkfilechooser.c
gtkfilechooserprivate.h gtkfilechooserimpldefault.c:
Add get_preview_path() as a virtual function; implement
update-preview signal that was in the header file.
* gtkfilechooserimpldefault.c: Finish a simple preview
widget implementation.
Wed Jul 23 11:23:43 2003 Owen Taylor <otaylor@redhat.com>
* gtkfilefilter.[ch]: File filter objects.
* gtkfilechooser.[ch] gtkfilechooserutils.[ch]: Add
file filtering to API.
* gtkfilechooserimpldefault.c: Implement file filters.
* testfilechooser.c: Try out the filter functionality.
* gtkfilesystemmodel.c: Add
_gtk_file_system_model_set_filter() to set a callback
function for filtering.
* gtkfilechooserutils.c: Propagate property notification
to the receiver.
* fnmatch.c: Copy this from GTK+ temporarily to get
UTF-8 pattern matching functionality.
Fri Jul 11 14:37:07 2003 Owen Taylor <otaylor@redhat.com>
* gtkfilechooser.[ch] gtkfilechooserprivate.h
gtkfilechooserimpldefault.c: Add
gtk_file_chooser_set_current_name() to set the current
entry contents.
* *.c: Consistently use '-' not '_' in property names and
signal names.
* gtkfilechooser.c: Document all exported functions.
Fri Apr 4 17:30:27 2003 Owen Taylor <otaylor@redhat.com>
* gtkfilechooserprivate.h gtkfilechooser.h: Move
interface definition into a private header so it
can refer to GtkFileSystem.
* *.[ch]: Switch over from using gchar *uri internally
to using GtkFilePath * internally, and add
conversion routines to GtkFileSystem.
* TODO README: Updates.