2004-02-29 Federico Mena Quintero <federico@ximian.com>
* gtk/gtkfilechooserdefault.c
(gtk_file_chooser_default_set_property): Handle
GTK_FILE_CHOOSER_PROP_USE_PREVIEW_LABEL.
(gtk_file_chooser_default_get_property): Likewise.
(struct _GtkFileChooserDefault): Added fields for preview_label,
use_preview_label, preview_display_name, preview_box. Removed
preview_frame.
(set_preview_widget): Reorder the widget in relation to the label.
(update_preview_widget_visibility): Create or destroy the preview
label.
(check_preview_change): Update impl->preview_display_name and the
label.
(find_good_size_from_style): Use the preview_box.
(gtk_file_chooser_default_finalize): Free
impl->preview_display_name.
(gtk_file_chooser_default_init): Initialize
impl->use_preview_label.
* gtk/gtkfilechooser.c (gtk_file_chooser_class_init): Add a
"use-preview-label" property.
(gtk_file_chooser_set_use_preview_label): New function. This sets
whether one wants the file chooser to display a stock label with
the previewed filename. Apps that do really fancy previews can
turn this off and draw the name themselves.
(gtk_file_chooser_get_use_preview_label): New function.
(gtk_file_chooser_get_preview_widget_active): Documentation fix.
* gtk/gtkfilechooserutils.h (GtkFileChooserProp): Add a
GTK_FILE_CHOOSER_PROP_USE_PREVIEW_LABEL value.
* gtk/gtkfilechooserutils.c
(_gtk_file_chooser_install_properties): Override the
"use-preview-label" property.
2004-02-28 Federico Mena Quintero <federico@ximian.com>
* gtk/gtkfilechooserdefault.c (create_folder_tree): Use "Name" for
the title of the filename column.
(create_file_list): Likewise.
Fri Feb 27 18:46:27 2004 Jonathan Blandford <jrb@redhat.com>
* gtk/gtkfilechooserembed.h: New private interface to help
negotiate the default size of the widget. Still a bit buggy, but
better than the old behavior.
* gtk/gtkfilechooserdefault.c: Implement the embed interface.
* gtk/gtkfilechooserwidget.c: Proxy the embed interface.
* gtk/gtkfilechooserdialog.c: Use the embed interface.
2004-02-27 Federico Mena Quintero <federico@ximian.com>
* gtk/gtkfilesystem.c (gtk_file_system_insert_bookmark): Added a
"position" argument.
* gtk/gtkfilesystem.h (GtkFileSystemError): Added value for
GTK_FILE_SYSTEM_ERROR_ALREADY_EXISTS.
(struct _GtkFileSystemIface): Added a "position" argument to the
::insert_bookmark() method.
* gtk/gtkfilesystemunix.c (gtk_file_system_unix_insert_bookmark):
Updated; renamed from gtk_file_system_unix_add_bookmark(). Return
an error if the path already exists in the bookmarks list.
(gtk_file_system_unix_remove_bookmark): Return an error if the
path does not exist in the bookmarks list.
* gtk/gtkfilechooserdefault.c (shortcuts_add_bookmark_from_path):
For now, use gtk_file_system_insert_bookmark() with -1 for the
position. DnD will come next.
Thu Feb 26 18:25:57 2004 Jonathan Blandford <jrb@gnome.org>
* gtk/gtkfilechooser.h (GtkFileChooserAction): Add two more folder
modes to the enum.
* gtk/gtkfilechooser.c (gtk_file_chooser_set_folder_mode): Remove.
(gtk_file_chooser_get_folder_mode): Remove
Wed Feb 25 03:52:58 2004 Jonathan Blandford <jrb@gnome.org>
* gtk/gtkpathbar.c: use gtk_widget_push/pop_composite_child around
internal buttons.
* gtk/gtkfilechooserdefault.c (struct _GtkFileChooserDefault):
rename some widgets to make it clear where they are packed.
(update_appearance): New function to handle all the 'logic' of
layout in one place. We aren't trying to keep all our properties
in sync.
(gtk_file_chooser_default_set_property): use update_appearance()
2004-02-24 Federico Mena Quintero <federico@ximian.com>
* gtk/gtkfilechooserdefault.c (shortcuts_model_create): Renamed
from create_shortcuts_model().
(struct _GtkFileChooserDefault): Renamed the shortcuts_tree field
to shortcuts_list.
(shortcuts_list_create): Renamed from shortcuts_tree_create().
(create_file_list): Enable the tree view as a model drag source.
(create_folder_tree): Likewise.
* gtk/gtkfilesystemmodel.c (_gtk_file_system_model_get_type):
Register the drag source interface.
(drag_source_iface_init): New function.
(drag_source_row_draggable): New function.
(drag_source_drag_data_get): New function.
2004-02-24 Federico Mena Quintero <federico@ximian.com>
* gtk/gtkfilechooserdefault.c (save_widgets_create): Use a plain
GtkEntry for the filename, not a GtkFileChooserEntry.
(update_chooser_entry): Use gtk_entry_set_text() rather than
_gtk_file_chooser_entry_set_file_part().
(gtk_file_chooser_default_set_current_name): Likewise.
(gtk_file_chooser_default_set_current_folder): Don't set the base
folder of the entry, and don't call update_chooser_entry().
(gtk_file_chooser_default_get_paths): Use the plain entry.
(save_widgets_create): Store the "Save in Folder" label in the
impl structure.
(expander_activate_cb): Set the sensitivity of the label and
combo.
(save_widgets_create): Connect to "notify::expanded" rather than
"activate" on the expander.
(expander_changed_cb): Renamed from expander_activate_cb(). Flip
the conditions again...
2004-02-24 Anders Carlsson <andersca@gnome.org>
* gtk/gtkfilechooserdefault.c: (shortcuts_append_desktop):
Translate the desktop label.
(shortcuts_get_index), (shortcuts_add_bookmarks),
(shortcuts_insert_separator), (create_shortcuts_model):
Don't show the bookmark separator if there are no bookmarks.
Tue Feb 24 01:41:30 2004 Jonathan Blandford <jrb@gnome.org>
* gtk/gtkfilechooserdefault.c (location_popup_handler): Make the
dialog look like the nautilus dialog.
(expander_activate_cb): get the order correct.
2004-02-23 Federico Mena Quintero <federico@ximian.com>
* gtk/gtkfilechooserdefault.c (list_selection_changed): Call
bookmarks_check_add_sensitivity().
(shortcut_exists): New helper function; moved the testing code
over from bookmarks_check_add_sensitivity().
(bookmarks_check_add_sensitivity): Check the contents of the
selection in the file/folder list. Use shortcut_exists().
(shortcuts_add_bookmark_from_path): Don't insert the bookmark if
the path is already in the shortcuts list.
(add_bookmark_button_clicked_cb): Add the bookmarks from the list
selection or from the current folder, as appropriate.
2004-02-24 Anders Carlsson <andersca@gnome.org>
* gtk/gtkfilechooserdefault.c: (shortcuts_insert_path),
(shortcuts_remove_rows), (shortcuts_append_bookmarks),
(create_shortcuts_model), (shortcuts_tree_create),
(gtk_file_chooser_default_remove_shortcut_folder):
Improve bookmark list rendering by controlling the visibility
of the pixbuf cell so that it will be invisible for the separator
row, also use a list store instead of a tree store for the model
so we won't get unnecessary space for an expander.
Mon Feb 23 17:52:43 2004 Jonathan Blandford <jrb@gnome.org>
* gtk/gtkfilechooserdefault.c (main_paned_create): use a size
group when allocating space for the buttons at the bottom just in
case. Also, move the filter to below the file list.
Mon Feb 23 16:52:12 2004 Jonathan Blandford <jrb@gnome.org>
* gtk/gtkfilechooserdefault.c
(gtk_file_chooser_default_class_init): Seth was confused by
keybindings. They should be Alt, not Ctl. Also, A-Home should go
home, not up.
Mon Feb 23 15:23:23 2004 Jonathan Blandford <jrb@gnome.org>
* gtk/gtkpathbar.c (gtk_path_bar_set_path): Display the root a bit
more cleanly.
* gtk/gtkpathbar.h (struct _GtkPathBarClass): fix the signal.
2004-02-23 Federico Mena Quintero <federico@ximian.com>
Rework the user interface of the file chooser, as per
Seth Nickell's design.
* gtk/gtkfilechooserdefault.c
(gtk_file_chooser_default_class_init): Add binding signals and bindings:
"location-popup" - C-l
"up-folder" - C-Up
"home-folder" - C-Home
(up_folder_handler): New function; moved the code from up_button_clicked().
(up_button_clicked_cb): Call up_folder_handler().
(home_folder_handler): New function.
(location_popup_handler): New function.
(struct _GtkFileChooserDefault): Add an hpaned field.
(gtk_file_chooser_default_set_current_name): Check that we are in
Save mode.
(save_widgets_create): New function, create the widgets specific
to Save mode.
(main_paned_create): New function, create the hpaned's widgets here.
(gtk_file_chooser_default_constructor): Create the open and save
widgets, and show only one set.
(gtk_file_chooser_default_set_property): Show/hide the save widgets.
(gtk_file_chooser_default_get_paths): Only pay attention to the
entry in Save mode.
(update_chooser_entry): Update the entry only in Save mode.
(entry_activate): Removed.
Mon Feb 23 02:08:42 2004 Jonathan Blandford <jrb@gnome.org>
* gtk/gtkfilechooserdefault.c (file_pane_create): Use the
GtkPathBar by default now.
* gtk/gtkpathbar.c (gtk_path_bar_set_path): Correctly set the
current path from the path.
(gtk_path_bar_class_init): new signal
(button_clicked_cb): emit the signal when we're selected.
(gtk_path_bar_clear_buttons): Fix a crasher when we weren't
clearing thr first_scrolled_button.
Fri Feb 20 18:20:22 2004 Jonathan Blandford <jrb@gnome.org>
* gtk/gtkfilechooserdefault.c: conditional compile for GtkPathBar
* gtk/gtkpathbar.c (gtk_path_bar_size_allocate): Clean up
allocation code. Works fully in RTL languages, I think.
(gtk_path_bar_scroll_up): Scroll up.
(gtk_path_bar_scroll_down): Scroll down.
2004-02-20 Alexander Larsson <alexl@redhat.com>
* gtk/gtkfilechooserdefault.c: (shortcuts_append_desktop):
Desktop directory is not translated.
(set_tree_model):
There might not be volumes for all paths.
* gtk/gtkfilechooserwidget.c:
(gtk_file_chooser_widget_constructor):
Use gtk_file_chooser_set_current_folder to set cwd.
2004-02-18 Federico Mena Quintero <federico@ximian.com>
* gtk/gtkfilechooserdefault.c (shortcuts_tree_create): Renamed
from create_shortcuts_tree().
(shortcuts_pane_create): New function.
(button_new): Renamed from toolbar_button_new().
(shortcuts_pane_create): New function, create the whole shortcuts
pane here.
(current_folder_create): Renamed from toolbar_create(). Don't
create the bookmarks buttons here.
(file_pane_create): New function.
(gtk_file_chooser_default_constructor): Use the new helper
functions, and don't use an extra vbox as GtkFileChooserDefault is
already a vbox.
2004-02-10 Federico Mena Quintero <federico@ximian.com>
Fixes the entry-related part of #133852.
* gtk/gtkfilechooserdefault.c (update_chooser_entry): Don't change
the file part of the entry if the selected item is a folder.
2004-02-09 Federico Mena Quintero <federico@ximian.com>
* gtk/gtkfilechooserdefault.c (set_list_model): Request
GTK_FILE_INFO_ALL from the file system model, so that arbitrary
filtering will work. Perhaps we should have a way of aggregating
info types to the model as filters get installed.
2004-02-09 Federico Mena Quintero <federico@ximian.com>
Fix#132256.
* gtk/gtkfilechooserdefault.c
(gtk_file_chooser_default_get_paths): Read the contents of the
filename entry in both OPEN and SAVE mode. In multiple-selection
mode, add this to the selection from the file/folder list.
(struct get_paths_closure): Add a path_from_entry field.
(get_paths_foreach): Only add the iterated path if it is not the
same as the path from the entry.
Fri Feb 6 23:40:24 2004 Jonathan Blandford <jrb@gnome.org>
* gtk/gtkfilechooserdefault.c (create_file_list): clean up the
packing of the file selector.
2004-01-23 Federico Mena Quintero <federico@ximian.com>
Fix#132247.
* gtk/gtkfilechooserdefault.c (set_select_multiple): Handle folder
mode.
(set_select_multiple): Optionally notify about changes to the
select-multiple property.
(list_selection_changed): Change the condition for the editable row to
test for save mode; this is more clear than testing for not being
in multiple selection mode.
(gtk_file_chooser_default_get_paths): Get impl->action directly
rather than calling gtk_file_chooser_get_action().
(entry_activate): Likewise.
(set_select_multiple): Annotate about #133255.
(update_chooser_entry): Likewise.
(check_preview_change): Likewise.
(tree_selection_changed): Likewise.
2004-01-19 Federico Mena Quintero <federico@ximian.com>
Fix#131418.
* gtk/gtkfilechooserdefault.c (set_select_multiple): New helper
function.
(gtk_file_chooser_default_set_property): Use
set_select_multiple(). Also, re-set this mode to single if the
file chooser is set to Save mode.
(entry_activate): Handle the case where the entry is completely
empty *and* its current folder does exist. Also, there is need to
test for select_multiple here now that we ensure that it won't
happen during Save mode.
2004-01-16 Federico Mena Quintero <federico@ximian.com>
* gtk/gtkfilesystemmodel.c (struct _GtkFileSystemModel): Added a
has_editable field.
(_gtk_file_system_model_add_editable): New function.
(_gtk_file_system_model_remove_editable): New function.
(gtk_file_system_model_get_value): Return appropriate values for
the temporary editable row.
(_gtk_file_system_model_get_info): Handle the editable row.
(_gtk_file_system_model_get_path): Likewise.
* gtk/gtkfilechooserdefault.c (shortcuts_append_bookmarks):
Removed an unused variable.
(toolbar_button_new): Optionally show the button.
(up_button_clicked_cb): Renamed from up_button_cb(), fixed prototype.
(toolbar_create): Add a "New Folder" button for Save mode.
(error_building_filename_dialog): New helper function.
(gtk_file_chooser_default_get_paths): Use error_building_filename_dialog().
(create_file_list): Connect to the "edited" signal of the text
cell renderer. Store the name column and text renderer in the
impl structure.
(renderer_edited_cb): New callback.
(gtk_file_chooser_default_set_property): Show/hide the "New
folder" button when the save action changes.
(COMPARE_DIRECTORIES): Allow the info values to be NULL.
(COMPARE_DIRECTORIES): Duh, use the list_model, not the
tree_model.
(get_list_file_info): Likewise!
(list_icon_data_func): Handle the path being NULL.
(new_folder_button_clicked): New callback.
(list_name_data_func): If we are on the editable row, set the text
to "Type name of new folder".
(list_selection_changed): Handle the editable row.
(list_mtime_data_func): Likewise.
* gtk/gtkfilesystemunix.c (gtk_file_system_unix_make_path): Return
NULL, not FALSE.
(gtk_file_system_unix_create_folder): Test the result of mkdir() correctly.
2004-01-16 Federico Mena Quintero <federico@ximian.com>
* gtk/gtkfilechooserdefault.c
(gtk_file_chooser_default_set_property): Do not allow setting
select_multiple when in Save mode.
(set_list_model): No need to nullify the list_model and
sort_model.
(gtk_file_chooser_default_get_paths): Handle folder mode as well.
(get_paths_foreach): Likewise.
* gtk/gtkfilechooser.c (gtk_file_chooser_get_filename): Clarify
documentation about folder mode.
(gtk_file_chooser_get_uri): Likewise.
2004-01-16 Federico Mena Quintero <federico@ximian.com>
* gtk/gtkfilesystem.h (struct _GtkFileSystemIface): New
get_volume_for_path() method.
(struct _GtkFileSystemIface): Finally removed the list_roots() and
get_root_info() methods, and the "roots-changed" signal.
* gtk/gtkfilesystem.c (gtk_file_system_get_volume_for_path): New
function.
(gtk_file_system_list_roots): Removed.
(gtk_file_system_get_root_info): Removed.
* gtk/gtkfilesystemunix.c
(gtk_file_system_unix_get_volume_for_path): Implement.
(get_root_volume): New helper function.
(gtk_file_system_unix_list_volumes): Use get_root_volume().
(gtk_file_system_unix_list_roots): Removed.
(gtk_file_system_unix_get_root_info): Removed.
* gtk/gtkfilesystemmodel.c (_gtk_file_system_model_new): Don't
accept a NULL root_path.
(struct _GtkFileSystemModel): Add a field to remember the
root_path.
(_gtk_file_system_model_new): Store the root_path in the model
structure.
(find_and_ref_path): Stop going up the hierarchy at the root_path
of the model. Also, don't return prematurely when walking up the
hierarchy.
* gtk/gtkfilechooserdefault.c (create_file_list): Sigh, restore
the rules_hint.
(struct _GtkFileChooserDefault): Added a current_volume_path field.
(set_tree_model): New function; create the folder tree model here.
(create_folder_tree): Don't create the model here.
(set_list_model): Set the show_hidden flag on the list model.
2004-01-07 Jan Arne Petersen <jpetersen@uni-bonn.de>
* gtk/gtkfilechooserdefault.c: (shortcuts_insert_path),
(shortcuts_append_home), (shortcuts_append_desktop),
(shortcuts_append_paths), (shortcuts_add_volumes),
(shortcuts_append_bookmarks), (create_shortcuts_model),
(gtk_file_chooser_default_add_shortcut_folder): add REMOVABLE column
to the shortcuts_model.
(remove_bookmark_button_clicked_cb),
(bookmarks_check_remove_sensitivity): use REMOVABLE column to check if
bookmarks can be removed. Fixes#129873
2004-01-05 Federico Mena Quintero <federico@ximian.com>
* gtk/gtkfilechooserdefault.c (toolbar_button_new): New helper
function.
(toolbar_create): Do not use a toolbar widget, just an hbox
instead. Add the bookmarks buttons and the current folder label
here.
(create_filename_entry_and_filter_combo): Create the filter combo
here.
(filter_create): Don't show the filter combo initially.
(up_button_cb): Renamed from toolbar_up_cb().
(create_shortcuts_buttons): Removed.
2003-12-29 Federico Mena Quintero <federico@ximian.com>
Make show_all() work for the extra and preview widgets; reported
by Paolo Maggi.
* gtk/gtkfilechooserdefault.c (set_preview_widget): show_all() the
preview widget.
(set_extra_widget): show_all() the extra widget.
2003-12-19 Federico Mena Quintero <federico@ximian.com>
* gtk/gtkfilechooserdefault.c (list_mtime_data_func): Use
g_date_strftime() for UTF-8 correctness; use Julian dates to
simplify the function.
2003-12-16 Federico Mena Quintero <federico@ximian.com>
* gtk/gtkfilesystem.h (struct _GtkFileSystemIface): Added a
"volumes-changed" signal. Added the following methods:
list_volumes
volume_free
volume_get_base_path
volume_get_is_mounted
volume_mount
volume_get_display_name
volume_render_icon
* gtk/gtkfilesystem.c (gtk_file_system_base_init): Create the
"volumes-changed" signal.
(gtk_file_system_list_volumes): New function.
(gtk_file_system_volume_free): New function.
(gtk_file_system_volume_get_base_path): New function.
(gtk_file_system_volume_get_is_mounted): New function.
(gtk_file_system_volume_mount): New function.
(gtk_file_system_volume_get_display_name): New function.
(gtk_file_system_volume_render_icon): New function.
* gtk/gtkfilesystemunix.c (gtk_file_system_unix_volume_free): Implement.
(gtk_file_system_unix_volume_get_base_path): Implement.
(gtk_file_system_unix_volume_get_is_mounted): Implement.
(gtk_file_system_unix_volume_mount): Implement.
(gtk_file_system_unix_volume_get_display_name): Implement.
(gtk_file_system_unix_volume_render_icon): Implement.
* gtk/gtkfilechooserdefault.c (struct _GtkFileChooserDefault):
Added a field for the "volumes-changed" signal connection.
(gtk_file_chooser_default_set_property): Connect to
"volumes-changed" on the file system.
(gtk_file_chooser_default_finalize): Disconnect from
"volumes-changed".
* gtk/gtkfilechooserdefault.c (shortcuts_remove_rows): New helper
function.
(shortcuts_get_index): New helper function.
(shortcuts_insert_path): Can now insert volumes as well as paths.
(shortcuts_append_paths): Don't take is_file_system_root.
(shortcuts_add_volumes): New function.
(shortcuts_append_file_system_roots): Removed.
(create_shortcuts_model): Use shortcuts_add_volumes().
(remove_bookmark_button_clicked_cb): Check that the index is
within range.
(bookmarks_check_add_sensitivity): Take volumes into account.
(shortcuts_get_selected_index): New helper function.
(remove_bookmark_button_clicked_cb): Use
shortcuts_get_selected_index().
(bookmarks_check_remove_sensitivity): Likewise.
(shortcuts_select_func): Likewise.
(shortcuts_row_activated_cb): Handle volumes as well as normal
paths.
(shortcuts_activate_volume): New function.
(struct _GtkFileChooserDefault): Removed the bookmarks_set and
bookmarks_iter fields.
(shortcuts_append_bookmarks): Use shortcuts_remove_rows().
(bookmarks_changed_cb): Use shortcuts_add_bookmarks().
(remove_bookmark_rows): Removed.
(shortcuts_add_bookmarks): New function; moved most of the code
over from shortcuts_append_bookmarks().
(shortcuts_append_bookmarks): Add the separator node here, and
then call shortcuts_add_bookmarks().
2003-12-10 Federico Mena Quintero <federico@ximian.com>
* gtk/gtkfilechooserdefault.c (struct _GtkFileChooserDefault):
Added toolbar items for the filter separator and the filter item.
(toolbar_create): Add the filter widgets here.
(filter_create): Renamed from create_filter(). Don't store the
alignment in the impl structure, just return it.
(toolbar_show_filters): New function.
(gtk_file_chooser_default_add_filter): Use toolbar_show_filters().
(gtk_file_chooser_default_remove_filter): Likewise.
(gtk_file_chooser_default_constructor): Don't create the filter
widget here.
(struct _GtkFileChooserDefault): Added a field for a current
folder label.
(gtk_file_chooser_default_constructor): Create the folder label.
(gtk_file_chooser_default_set_current_folder): Set the current
folder label.
* tests/testfilechooser.c (main): Dramatically improved the
usability of the extra widget through careful word choice.
2003-12-09 Federico Mena Quintero <federico@ximian.com>
* gtk/gtkfilechooserdefault.c (shortcuts_append_home): Use "Home"
rather than "Username's Home" (#125964).
(shortcuts_selection_changed_cb): New callback, check the
sensitivity of the Remove Bookmark button at the right time.
(shortcuts_row_activated_cb): It is not necessary to check the
sensitivity here.
2003-12-08 Jan Arne Petersen <jpetersen@uni-bonn.de>
* gtk/gtkfilechooserdefault.c:
(gtk_file_chooser_default_get_paths), (entry_activate): Use the
behavior of the GtkFileSelection to determine selected paths in
single selected, GTK_FILE_CHOOSER_ACTION_SAVE mode.
2003-12-08 Federico Mena Quintero <federico@ximian.com>
* gtk/gtkfilechooserdefault.c
(gtk_file_chooser_default_get_paths): Don't declare the closure
struct twice.
(get_paths_foreach): Likewise.
2003-12-01 Federico Mena Quintero <federico@ximian.com>
Decouple impl->current_folder from the selection in the folder
tree. This is so that going to /home/federico/.foo (e.g. from a
bookmark) will work even if show_hidden == FALSE. The folder tree
needs to be fixed in this case to show such folders explicitly.
* gtk/gtkfilechooserdefault.c
(gtk_file_chooser_default_set_current_folder): When changing
folders, do the entry and list model work here, instead of
tree_selection_changed().
(struct _GtkFileChooserDefault): Added a changing_folder flag
again, dum de dum.
(tree_selection_changed): Use _gtk_file_chooser_set_current_folder_path().
2003-12-01 Federico Mena Quintero <federico@ximian.com>
Patch from Hans-Petter Jansson <hpj@ximian.com> to align the
bookmarks buttons with the location entry.
* gtk/gtkfilechooserdefault.c
(gtk_file_chooser_default_constructor): Use a GtkSizeGroup for the
bookmarks buttons and the location entry.
2003-12-01 Federico Mena Quintero <federico@ximian.com>
* gtk/gtkfilechooserdefault.c (create_shortcuts_tree): Set the
shortcuts tree as a drag destination.
(shortcuts_drag_data_received_cb): New callback.
(get_file_info): Also fetch information on whether the file is a folder.
(add_bookmark_button_clicked_cb): Use error_could_not_add_bookmark_dialog().
(error_could_not_add_bookmark_dialog): New function.
(shortcuts_add_bookmark_from_path): New helper function.
(add_bookmark_button_clicked_cb): Use shortcuts_add_bookmark_from_path().
(shortcuts_row_activated): We no longer need the changing_folder flag.
(struct _GtkFileChooserDefault): Likewise.
2003-11-19 Federico Mena Quintero <federico@ximian.com>
Fixes to problems reported by Iain Holmes:
* gtk/gtkfilechooserdefault.c (shortcuts_append_desktop): Do not
throw up an error dialog if the desktop doesn't exist.
(error_message): Handle the case where there is no real toplevel
yet.
(list_model_filter_func): Always let folders pass through (patch
by Dave Malcolm).
2003-11-19 Federico Mena Quintero <federico@ximian.com>
* gtk/gtkfilechooserdialog.c (gtk_file_chooser_dialog_init): Turn
off the dialog's separator (thanks to Iain Holmes).
2003-11-19 Federico Mena Quintero <federico@ximian.com>
* gtk/gtkfilesystem.h (struct _GtkFileSystemIface): Added a
render_icon virtual method.
* gtk/gtkfilesystem.c (gtk_file_system_render_icon): New function.
* gtk/gtkfilesystemunix.c (gtk_file_system_unix_render_icon):
Implement as a stub for now.
* gtk/gtkfilechooserdefault.c (shortcuts_insert_path): Use
gtk_file_system_render_icon().
(list_icon_data_func): Likewise.
(toolbar_create): Set the toolbar style to icons only.
* gtk/gtkfilechooser.c (gtk_file_chooser_add_shortcut_folder_uri):
Fix doc comments.
2003-11-03 Federico Mena Quintero <federico@ximian.com>
* gtk/gtkfilechooserdefault.c (error_dialog): Take in a path as
well. Use a helper function.
(shortcuts_append_home): Display an error box if necessary.
(shortcuts_append_desktop): Likewise.
(add_bookmark_button_clicked_cb): Likewise.
(gtk_file_chooser_default_select_path): Likewise.
(entry_activate): Likewise.
(shortcuts_append_paths): New helper function.
(shortcuts_append_file_system_roots): Use
shortcuts_append_paths().
(shortcuts_append_bookmarks): Likewise.
2003-11-03 Federico Mena Quintero <federico@ximian.com>
* gtk/gtkfilechooserdefault.c (shortcuts_select_folder): Removed.
(create_shortcuts_tree): Don't call the above.
(bookmarks_changed_cb): Likewise.
(tree_selection_changed): Unselect everything from the shortcuts
list. This is the behavior that Mac OS has.
(toolbar_add_item): Return the item.
(toolbar_create): Store the up_button in the impl structure.
(toolbar_check_sensitivity): New function to set the sensitivity
of the "Up" button in the toolbar.
(tree_selection_changed): Call toolbar_check_sensitivity().
2003-11-02 Federico Mena Quintero <federico@ximian.com>
* gtk/gtkfilechooserdefault.c (gtk_file_chooser_default_init): Do
not set a border width for the toplevel container.
(toolbar_create): New function; create a simple toolbar for the
file chooser.
(gtk_file_chooser_default_constructor): Use a spacing of 12 for
the table, as per the HIG.
(gtk_file_chooser_default_init): Likewise, for the default
implementation's vbox.
* gtk/gtkfilesystem.c (gtk_file_system_get_parent): Added docs to
note that NULL is a valid return value for the parent path.
Sat Nov 1 14:59:27 2003 Owen Taylor <otaylor@redhat.com>
* gtk/gtkfilechooserdefault.c (shortcuts_row_activated):
Change on activation, not selection change (temporary
workaround for #125955, needed for keynav, likely
the right UI anyways.)
* gtk/gtkfilechooserdefault.c (shortcuts_select_func):
Don't allow the separator node to be selected.
* gtk/gtkfilechooserdefault.c (gtk_file_chooser_default_constructor):
Set the focus chain so that the entry gets focused first.
(Not really right after initial focusing, maybe we
should just have a gtk_file_chooser_focus_entry() that
we call from gtk_file_chooser_dialog on creation.)
Wed Oct 22 23:20:04 2003 Owen Taylor <otaylor@redhat.com>
* gtk/gtkfilechooser.[ch] gtk/gtkfilefilter.[ch]
gtk/gtkfilechooserwidget.[ch] gtk/gtkfilechooserdialog.[ch]:
gtk/gtkfilechooserutils.c gtk/gtkfilechooserprivate.[ch]:
Basic framework for the new file selector widget.
* gtk/gtkfilechooserdefault.[ch] gtk/gtkcellrenderersep.[ch]
gtk/gtkfilechooserentry.[ch] gtk/gtkfilesystemmodel.[ch]:
Initial implementation of the GtkFileChooser user interface.
* gtk/gtkfilesystemunix.[ch]: GtkFileSystem implementation
for Unix files.
* configure.in gtk/Makefile.am gtk/xdgmime: Build code
for freedesktop.org MIME system on Unix.
* tests/testfilechooser.c: Test program for GtkFileChooser
* tests/prop-editor.c: Add support for properties on interfaces.
2003-10-20 Federico Mena Quintero <federico@ximian.com>
* gtkfilesystem.c (gtk_file_info_free): Free the info itself.
* gtkfilechooserimpldefault.c (shortcuts_insert_path): Free the
GtkFileInfo.
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-14 Federico Mena Quintero <federico@ximian.com>
* gtkfilechooserimpldefault.c (create_shortcuts_tree): Added a
button to remove a bookmark.
(remove_bookmark_button_clicked_cb): New callback.
(shortcuts_append_bookmarks): Show/hide the bookmarks buttons
here, rather than in create_shortcuts_tree().
(shortcuts_append_path): Return whether the operation succeeded.
(shortcuts_selection_changed): Set the sensitivity of the button
used to remove a bookmark.
(shortcuts_append_bookmarks): Do not select the shortcuts folder
here; let the caller do it if needed.
(create_shortcuts_tree): Select the shortcuts folder here.
(bookmarks_changed_cb): Likewise.
(create_shortcuts_tree): Also set the sensitivity of the bookmarks
buttons.
(bookmarks_check_add_sensitivity): Renamed from
check_bookmarks_sensitivity().
(shortcuts_select_folder): Renamed from select_shortcuts_folder().
(bookmarks_check_add_sensitivity): The current_path may not be set
yet.
(shortcuts_append_bookmarks): Oops, remove all the bookmark rows,
not just the separator node.
(bookmarks_changed_cb): Set the sensitivity of the bookmarks
buttons.
2003-10-13 Federico Mena Quintero <federico@ximian.com>
* gtkfilechooserimpldefault.c (check_bookmarks_sensitivity): Walk
the whole shortcuts model, not just the bookmarks part --- there
is no need to add bookmarks for "stock" volume items.
(gtk_file_chooser_impl_default_set_property): Oops, hide/show the
tree/list as appropriate for the folder_mode property.
2003-10-12 Federico Mena Quintero <federico@ximian.com>
* gtkfilesystemgnomevfs.c (gtk_file_folder_gnome_vfs_get_info):
Read the file's information from gnome-vfs if we haven't finished
loading the directory yet.
* gtkfilechooserimpldefault.c (tree_selection_changed): Set the
sensitivity of the bookmarks button depending on whether the
current folder already exists in the bookmarks list.
(shortcuts_selection_changed): Re-select the appropriate shortcuts
folder if the user clicks on the separator row.
(set_list_model): New function; moved the code from
tree_selection_changed().
(tree_selection_changed): Use set_list_model().
(create_folder_tree): Show the tree model only if we are in folder
mode.
(create_file_list): Show the list model only if we are not in
folder mode.
2003-10-08 Federico Mena Quintero <federico@ximian.com>
* gtkfilechooserimpldefault.c (tree_selection_changed): Autosize
the columns after the model is set.
(shortcuts_append_path): Add optional indentation to items.
(shortcuts_append_bookmarks): Indent bookmark items.
(create_shortcuts_tree): Set the "xpad" attribute of the name
renderer to be fetched from the indent column.
(shortcuts_append_bookmarks): Use NULL for the name of the
bookmarks node, so that a separator gets drawn.
(create_shortcuts_tree): Create a GtkCellRendererSepText.
* gtkcellrendererseptext.[ch]: New files with a cell renderer that
can display text or a separator line.
* Makefile.am (libgtkfilechooser_la_SOURCES): Added
gtkcellrendererseptext.[ch].
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-10-01 Federico Mena Quintero <federico@ximian.com>
* gtkfilechooserimpldefault.c (name_sort_func): Simplify with a
macro. This bloats the compiled code, but at least it makes the
human-readable code not egregiously ugly.
(size_sort_func): Likewise.
(mtime_sort_func): Likewise.
2003-10-01 Federico Mena Quintero <federico@ximian.com>
* gtkfilechooserimpldefault.c (tree_selection_changed): Use enum
values instead of plain numbers for the file lists's sort columns.
(create_file_list): Likewise.
(tree_selection_changed): Make the file list start up sorted by
name, and don't specify a default sorting function, so that there
is no unsorted order. This is for consistency with Nautilus.
(list_sort_column_changed_cb): Callback; we cache whether the sort
order for the file list's name column is ascending or not.
(compare_with_folders_first): New helper function to sort
directories before files.
(name_sort_func): Use compare_with_folders_first().
(size_sort_func): Likewise.
(mtime_sort_func): Likewise.
Of course this callback mess would be easy in a real language:
(set-sort-func sortable NAME_COLUMN
(make-comparer impl (lambda (a b) (strcmp (get-name a) (get-name b)))))
(set-sort-func sortable SIZE_COLUMN
(make-comparer impl (lambda (a b) (compare (get-size a) (get-size b)))))
... etc ...
(define (make-comparer impl f)
(lambda (a b)
(if (eq (is-dir? a) (is-dir? b))
(f a b)
(if (sort-ascending? impl)
(if (is-dir? a) -1 1)
(if (is-dir? a) 1 -1)))))
2003-09-30 Federico Mena Quintero <federico@ximian.com>
* gtkfilechooserimpldefault.c (struct _GtkFileChooserImplDefault):
Added fields for the shortcuts tree and its model.
(create_file_list): Don't call
gtk_tree_view_column_set_sort_column_id() twice.
(create_shortcuts_model): New function.
(list_icon_data_func): Use an ICON_SIZE macro instead of a
hardcoded value.
(list_row_activated): Use _gtk_file_chooser_set_current_folder_path()
to avoid converting the GtkFilePath to a URI string.
(gtk_file_chooser_impl_default_set_current_folder): Select the
appropriate item from the shortcuts list when the current folder
changes, to let the user know where he is.
(tree_selection_changed): Likewise.
* gtkfilesystem.h (struct _GtkFileSystemIface): Added methods for
::supports_shortcuts(), ::list_shortcuts(), ::set_shortcuts().
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.
2003-09-09 Federico Mena Quintero <federico@ximian.com>
* gtkfilechooserimpldefault.c (set_cell_text_bold_if_folder): Use
the cell renderer's "text" and "weight" properties rather than
"markup".
2003-09-09 Federico Mena Quintero <federico@ximian.com>
* gtkfilechooserimpldefault.c (tree_selection_changed): Make the
list model read in directory information as well.
(set_cell_text_bold_if_folder): New utility function. Sets a
cell's text, making it bold if the file info is a folder.
(list_name_data_func): Use set_cell_text_bold_if_folder().
(list_mtime_data_func): Use set_cell_text_bold_if_folder().
(list_size_data_func): Don't set anything if the file info is a
folder.
2003-09-08 Federico Mena Quintero <federico@ximian.com>
* gtkfilesystem.c (gtk_file_info_free): Free the display_key.
* gtkfilechooserimpldefault.c (list_mtime_data_func): New
function.
(create_file_list): Add a modification time column; remove the
size column.
(mtime_sort_func): New callback.
(tree_selection_changed): Add a sorting function for the mtime
column. Have the model fetch the modification time as well.
(tree_selection_changed): Do allow the file list model to show
directories.
* testfilechooser.c (my_new_from_file_at_size): Do not try to read
non-regular files.
2003-09-05 Federico Mena Quintero <federico@ximian.com>
* gtkfilechooserimpldefault.c (create_filter): New function.
(create_directory_tree): New function.
(create_file_list): New function.
(create_filename_entry): New function.
(gtk_file_chooser_impl_default_constructor): Use the functions
above rather than creating the whole file chooser megawidget here,
for readability. This will also let us rearrange the user
interface more easily.
2003-09-03 Federico Mena Quintero <federico@ximian.com>
* TODO: Removed the "extra widget" bit, implemented with the
following:
* gtkfilechooser.h: Added gtk_file_chooser_{set,get}_extra_widget().
* gtkfilechooser.c (gtk_file_chooser_base_init): Install an
"extra-widget" interface property.
(gtk_file_chooser_set_extra_widget): Implemented.
(gtk_file_chooser_get_extra_widget): Implemented.
* gtkfilechooserutils.h (GtkFileChooserProp): Added
GTK_FILE_CHOOSER_PROP_EXTRA_WIDGET.
* gtkfilechooserutils.c (_gtk_file_chooser_install_properties):
Added the "extra-widget" property.
* gtkfilechooserimpldefault.c (struct _GtkFileChooserImplDefault):
Added an extra_widget field.
(gtk_file_chooser_impl_default_set_property): Handle the
"extra-widget" property.
(gtk_file_chooser_impl_default_get_property): Likewise.
(set_preview_widget): Fix the call gtk_container_remove(). Also,
we don't need to ref/sink/unref the preview widget, as that gets
already done by container_add/remove.
(set_extra_widget): New utility function.
* testfilechooser.c (main): Add an extra widget.
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.
Wed Jul 16 16:50:31 2003 Owen Taylor <otaylor@redhat.com>
* configure.ac Makefile.am: auto-ize.
* xdgmime/: Add freedesktop.org MIME spec implementatin
by Jonathan Blandford.
* gtkfilesystem.[ch]: Add gtk_file_info_render_icon()
gtk_file_info_set/get_icon_type to do icon handling
based on MIME type. Add a simple icon caching system.
* gtkfilesystemgnomevfs.c: Implement ensure_types()
so that extending the set of types for a loaded
directory works. Set the MIME type to get the default
icon handling.
* gtkfilesystemunix.c: Look up the MIME type using
xdgmime.
* gtkfilechooserimpldefault.c: Display icons in the list.
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.