* Boston, MA 02111-1307, USA.
*/
-#include <config.h>
+#include "config.h"
#include <sys/types.h>
#include <sys/stat.h>
#include "gtkfilechooserbutton.h"
#include "gtkprivate.h"
-#include "gtkalias.h"
/* **************** *
* Private Macros *
* **************** */
-#define GTK_FILE_CHOOSER_BUTTON_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GTK_TYPE_FILE_CHOOSER_BUTTON, GtkFileChooserButtonPrivate))
-
#define DEFAULT_TITLE N_("Select A File")
#define DESKTOP_DISPLAY_NAME N_("Desktop")
#define FALLBACK_DISPLAY_NAME N_("(None)")
GtkTreeModel *model;
GtkTreeModel *filter_model;
- gchar *backend;
GtkFileSystem *fs;
GFile *old_file;
GParamSpec *pspec);
static void gtk_file_chooser_button_finalize (GObject *object);
-/* GtkObject Functions */
-static void gtk_file_chooser_button_destroy (GtkObject *object);
-
/* GtkWidget Functions */
+static void gtk_file_chooser_button_destroy (GtkWidget *widget);
static void gtk_file_chooser_button_drag_data_received (GtkWidget *widget,
GdkDragContext *context,
gint x,
guint type,
guint drag_time);
static void gtk_file_chooser_button_show_all (GtkWidget *widget);
-static void gtk_file_chooser_button_hide_all (GtkWidget *widget);
static void gtk_file_chooser_button_show (GtkWidget *widget);
static void gtk_file_chooser_button_hide (GtkWidget *widget);
static void gtk_file_chooser_button_map (GtkWidget *widget);
gtk_file_chooser_button_class_init (GtkFileChooserButtonClass * class)
{
GObjectClass *gobject_class;
- GtkObjectClass *gtkobject_class;
GtkWidgetClass *widget_class;
gobject_class = G_OBJECT_CLASS (class);
- gtkobject_class = GTK_OBJECT_CLASS (class);
widget_class = GTK_WIDGET_CLASS (class);
gobject_class->constructor = gtk_file_chooser_button_constructor;
gobject_class->get_property = gtk_file_chooser_button_get_property;
gobject_class->finalize = gtk_file_chooser_button_finalize;
- gtkobject_class->destroy = gtk_file_chooser_button_destroy;
-
+ widget_class->destroy = gtk_file_chooser_button_destroy;
widget_class->drag_data_received = gtk_file_chooser_button_drag_data_received;
widget_class->show_all = gtk_file_chooser_button_show_all;
- widget_class->hide_all = gtk_file_chooser_button_hide_all;
widget_class->show = gtk_file_chooser_button_show;
widget_class->hide = gtk_file_chooser_button_hide;
widget_class->map = gtk_file_chooser_button_map;
file_chooser_button_signals[FILE_SET] =
g_signal_new (I_("file-set"),
G_TYPE_FROM_CLASS (gobject_class),
- G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+ G_SIGNAL_RUN_FIRST,
G_STRUCT_OFFSET (GtkFileChooserButtonClass, file_set),
NULL, NULL,
_gtk_marshal_VOID__VOID,
GtkWidget *box, *image, *sep;
GtkTargetList *target_list;
- priv = button->priv = GTK_FILE_CHOOSER_BUTTON_GET_PRIVATE (button);
+ priv = button->priv = G_TYPE_INSTANCE_GET_PRIVATE (button,
+ GTK_TYPE_FILE_CHOOSER_BUTTON,
+ GtkFileChooserButtonPrivate);
priv->icon_size = FALLBACK_ICON_SIZE;
priv->focus_on_click = TRUE;
gtk_container_add (GTK_CONTAINER (button), priv->button);
gtk_widget_show (priv->button);
- box = gtk_hbox_new (FALSE, 4);
+ box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4);
gtk_container_add (GTK_CONTAINER (priv->button), box);
gtk_widget_show (box);
priv->label = gtk_label_new (_(FALLBACK_DISPLAY_NAME));
gtk_label_set_ellipsize (GTK_LABEL (priv->label), PANGO_ELLIPSIZE_END);
gtk_misc_set_alignment (GTK_MISC (priv->label), 0.0, 0.5);
- gtk_container_add (GTK_CONTAINER (box), priv->label);
+ gtk_box_pack_start (GTK_BOX (box), priv->label, TRUE, TRUE, 0);
+ //gtk_container_add (GTK_CONTAINER (box), priv->label);
gtk_widget_show (priv->label);
- sep = gtk_vseparator_new ();
+ sep = gtk_separator_new (GTK_ORIENTATION_VERTICAL);
gtk_box_pack_start (GTK_BOX (box), sep, FALSE, FALSE, 0);
gtk_widget_show (sep);
GSList *list;
char *current_folder;
- object = (*G_OBJECT_CLASS (gtk_file_chooser_button_parent_class)->constructor) (type,
- n_params,
- params);
+ object = G_OBJECT_CLASS (gtk_file_chooser_button_parent_class)->constructor (type,
+ n_params,
+ params);
button = GTK_FILE_CHOOSER_BUTTON (object);
priv = button->priv;
if (!priv->dialog)
{
- if (priv->backend)
- priv->dialog = gtk_file_chooser_dialog_new_with_backend (NULL, NULL,
- GTK_FILE_CHOOSER_ACTION_OPEN,
- priv->backend,
- GTK_STOCK_CANCEL,
- GTK_RESPONSE_CANCEL,
- GTK_STOCK_OPEN,
- GTK_RESPONSE_ACCEPT,
- NULL);
- else
- priv->dialog = gtk_file_chooser_dialog_new (NULL, NULL,
- GTK_FILE_CHOOSER_ACTION_OPEN,
- GTK_STOCK_CANCEL,
- GTK_RESPONSE_CANCEL,
- GTK_STOCK_OPEN,
- GTK_RESPONSE_ACCEPT,
- NULL);
+ priv->dialog = gtk_file_chooser_dialog_new (NULL, NULL,
+ GTK_FILE_CHOOSER_ACTION_OPEN,
+ GTK_STOCK_CANCEL,
+ GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OPEN,
+ GTK_RESPONSE_ACCEPT,
+ NULL);
gtk_dialog_set_default_response (GTK_DIALOG (priv->dialog),
GTK_RESPONSE_ACCEPT);
gtk_file_chooser_button_set_title (button, _(DEFAULT_TITLE));
}
- else if (!GTK_WINDOW (priv->dialog)->title)
+ else if (!gtk_window_get_title (GTK_WINDOW (priv->dialog)))
{
gtk_file_chooser_button_set_title (button, _(DEFAULT_TITLE));
}
g_free (current_folder);
}
- g_free (priv->backend);
- priv->backend = NULL;
-
- g_signal_connect (priv->dialog, "delete_event",
+ g_signal_connect (priv->dialog, "delete-event",
G_CALLBACK (dialog_delete_event_cb), object);
g_signal_connect (priv->dialog, "response",
G_CALLBACK (dialog_response_cb), object);
model_add_special (button);
- list = gtk_file_system_list_volumes (priv->fs);
+ list = _gtk_file_system_list_volumes (priv->fs);
model_add_volumes (button, list);
g_slist_free (list);
- list = gtk_file_system_list_bookmarks (priv->fs);
+ list = _gtk_file_system_list_bookmarks (priv->fs);
model_add_bookmarks (button, list);
g_slist_foreach (list, (GFunc) g_object_unref, NULL);
g_slist_free (list);
case GTK_FILE_CHOOSER_PROP_EXTRA_WIDGET:
case GTK_FILE_CHOOSER_PROP_SHOW_HIDDEN:
case GTK_FILE_CHOOSER_PROP_DO_OVERWRITE_CONFIRMATION:
+ case GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS:
g_object_set_property (G_OBJECT (priv->dialog), pspec->name, value);
break;
fs_bookmarks_changed_cb (priv->fs, button);
break;
- case GTK_FILE_CHOOSER_PROP_FILE_SYSTEM_BACKEND:
- /* Construct-only */
- priv->backend = g_value_dup_string (value);
- break;
-
case GTK_FILE_CHOOSER_PROP_SELECT_MULTIPLE:
g_warning ("%s: Choosers of type `%s` do not support selecting multiple files.",
G_STRFUNC, G_OBJECT_TYPE_NAME (object));
case PROP_TITLE:
case GTK_FILE_CHOOSER_PROP_ACTION:
- case GTK_FILE_CHOOSER_PROP_FILE_SYSTEM_BACKEND:
case GTK_FILE_CHOOSER_PROP_FILTER:
case GTK_FILE_CHOOSER_PROP_LOCAL_ONLY:
case GTK_FILE_CHOOSER_PROP_PREVIEW_WIDGET:
case GTK_FILE_CHOOSER_PROP_SELECT_MULTIPLE:
case GTK_FILE_CHOOSER_PROP_SHOW_HIDDEN:
case GTK_FILE_CHOOSER_PROP_DO_OVERWRITE_CONFIRMATION:
+ case GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS:
g_object_get_property (G_OBJECT (priv->dialog), pspec->name, value);
break;
if (priv->old_file)
g_object_unref (priv->old_file);
- if (G_OBJECT_CLASS (gtk_file_chooser_button_parent_class)->finalize != NULL)
- (*G_OBJECT_CLASS (gtk_file_chooser_button_parent_class)->finalize) (object);
+ G_OBJECT_CLASS (gtk_file_chooser_button_parent_class)->finalize (object);
}
/* ********************* *
- * GtkObject Functions *
+ * GtkWidget Functions *
* ********************* */
static void
-gtk_file_chooser_button_destroy (GtkObject *object)
+gtk_file_chooser_button_destroy (GtkWidget *widget)
{
- GtkFileChooserButton *button = GTK_FILE_CHOOSER_BUTTON (object);
+ GtkFileChooserButton *button = GTK_FILE_CHOOSER_BUTTON (widget);
GtkFileChooserButtonPrivate *priv = button->priv;
GtkTreeIter iter;
GSList *l;
priv->fs = NULL;
}
- if (GTK_OBJECT_CLASS (gtk_file_chooser_button_parent_class)->destroy != NULL)
- (*GTK_OBJECT_CLASS (gtk_file_chooser_button_parent_class)->destroy) (object);
+ GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->destroy (widget);
}
-
-/* ********************* *
- * GtkWidget Functions *
- * ********************* */
-
struct DndSelectFolderData
{
GtkFileSystem *file_system;
{
gboolean is_folder;
- is_folder = (g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY);
+ is_folder = _gtk_file_info_consider_as_directory (info);
data->selected =
(((data->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER && is_folder) ||
(data->action == GTK_FILE_CHOOSER_ACTION_OPEN && !is_folder)) &&
- _gtk_file_chooser_select_file (GTK_FILE_CHOOSER (data->button->priv->dialog),
- data->file, NULL));
+ gtk_file_chooser_select_file (GTK_FILE_CHOOSER (data->button->priv->dialog),
+ data->file, NULL));
}
else
data->selected = FALSE;
if (data->selected || data->uris[++data->i] == NULL)
{
+ g_signal_emit (data->button, file_chooser_button_signals[FILE_SET], 0);
+
g_object_unref (data->button);
g_object_unref (data->file);
g_strfreev (data->uris);
data->file = g_file_new_for_uri (data->uris[data->i]);
data->button->priv->dnd_select_folder_cancellable =
- gtk_file_system_get_info (data->file_system, data->file,
- "standard::type",
- dnd_select_folder_get_info_cb, user_data);
+ _gtk_file_system_get_info (data->file_system, data->file,
+ "standard::type",
+ dnd_select_folder_get_info_cb, user_data);
g_object_unref (cancellable);
}
gchar *text;
if (GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->drag_data_received != NULL)
- (*GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->drag_data_received) (widget,
- context,
- x, y,
- data, type,
- drag_time);
+ GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->drag_data_received (widget,
+ context,
+ x, y,
+ data, type,
+ drag_time);
- if (widget == NULL || context == NULL || data == NULL || data->length < 0)
+ if (widget == NULL || context == NULL || data == NULL || gtk_selection_data_get_length (data) < 0)
return;
switch (type)
g_cancellable_cancel (priv->dnd_select_folder_cancellable);
priv->dnd_select_folder_cancellable =
- gtk_file_system_get_info (priv->fs, info->file,
- "standard::type",
- dnd_select_folder_get_info_cb, info);
+ _gtk_file_system_get_info (priv->fs, info->file,
+ "standard::type",
+ dnd_select_folder_get_info_cb, info);
}
break;
case TEXT_PLAIN:
text = (char*) gtk_selection_data_get_text (data);
file = g_file_new_for_uri (text);
- _gtk_file_chooser_select_file (GTK_FILE_CHOOSER (priv->dialog), file,
- NULL);
+ gtk_file_chooser_select_file (GTK_FILE_CHOOSER (priv->dialog), file,
+ NULL);
g_object_unref (file);
g_free (text);
+ g_signal_emit (button, file_chooser_button_signals[FILE_SET], 0);
break;
default:
gtk_widget_show (widget);
}
-static void
-gtk_file_chooser_button_hide_all (GtkWidget *widget)
-{
- gtk_widget_hide (widget);
-}
-
static void
gtk_file_chooser_button_show (GtkWidget *widget)
{
GtkFileChooserButtonPrivate *priv = button->priv;
if (GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->show)
- (*GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->show) (widget);
+ GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->show (widget);
if (priv->active)
open_dialog (GTK_FILE_CHOOSER_BUTTON (widget));
gtk_widget_hide (priv->dialog);
if (GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->hide)
- (*GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->hide) (widget);
+ GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->hide (widget);
}
static void
priv->folder_has_been_set = TRUE;
}
- if (GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->map)
- (*GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->map) (widget);
+ GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->map (widget);
}
static gboolean
if (cancelled || error)
goto out;
- pixbuf = gtk_file_info_render_icon (info, GTK_WIDGET (data->button), data->button->priv->icon_size);
+ pixbuf = _gtk_file_info_render_icon (info, GTK_WIDGET (data->button), data->button->priv->icon_size);
if (pixbuf)
{
gtk_tree_path_free (path);
cancellable =
- gtk_file_system_get_info (priv->fs, data,
- "standard::icon",
- change_icon_theme_get_info_cb,
- info);
+ _gtk_file_system_get_info (priv->fs, data,
+ "standard::icon",
+ change_icon_theme_get_info_cb,
+ info);
button->priv->change_icon_theme_cancellables =
g_slist_append (button->priv->change_icon_theme_cancellables, cancellable);
pixbuf = NULL;
* If we switch to a better bookmarks file format (XBEL), we
* should use mime info to get a better icon.
*/
- pixbuf = gtk_icon_theme_load_icon (theme, "gnome-fs-share",
+ pixbuf = gtk_icon_theme_load_icon (theme, "folder-remote",
priv->icon_size, 0, NULL);
}
else
break;
case ROW_TYPE_VOLUME:
if (data)
- pixbuf = gtk_file_system_volume_render_icon (data,
- GTK_WIDGET (button),
- priv->icon_size,
- NULL);
+ pixbuf = _gtk_file_system_volume_render_icon (data,
+ GTK_WIDGET (button),
+ priv->icon_size,
+ NULL);
else
pixbuf = gtk_icon_theme_load_icon (theme, FALLBACK_ICON_NAME,
priv->icon_size, 0, NULL);
gtk_file_chooser_button_style_set (GtkWidget *widget,
GtkStyle *old_style)
{
- if (GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->style_set)
- (*GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->style_set) (widget,
- old_style);
+ GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->style_set (widget,
+ old_style);
if (gtk_widget_has_screen (widget))
change_icon_theme (GTK_FILE_CHOOSER_BUTTON (widget));
GdkScreen *old_screen)
{
if (GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->screen_changed)
- (*GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->screen_changed) (widget,
- old_screen);
+ GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->screen_changed (widget,
+ old_screen);
- change_icon_theme (GTK_FILE_CHOOSER_BUTTON (widget));
+ change_icon_theme (GTK_FILE_CHOOSER_BUTTON (widget));
}
/* There was an error, leave the fallback name in there */
goto out;
- pixbuf = gtk_file_info_render_icon (info, GTK_WIDGET (data->button), data->button->priv->icon_size);
+ pixbuf = _gtk_file_info_render_icon (info, GTK_WIDGET (data->button), data->button->priv->icon_size);
if (!data->label)
data->label = g_strdup (g_file_info_get_display_name (info));
- is_folder = (g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY);
+ is_folder = _gtk_file_info_consider_as_directory (info);
gtk_list_store_set (GTK_LIST_STORE (data->button->priv->model), &iter,
ICON_COLUMN, pixbuf,
data = g_new0 (struct SetDisplayNameData, 1);
data->button = g_object_ref (button);
- data->label = gtk_file_system_get_bookmark_label (button->priv->fs, file);
+ data->label = _gtk_file_system_get_bookmark_label (button->priv->fs, file);
tree_path = gtk_tree_model_get_path (button->priv->model, iter);
data->row_ref = gtk_tree_row_reference_new (button->priv->model, tree_path);
gtk_tree_path_free (tree_path);
- cancellable = gtk_file_system_get_info (button->priv->fs, file,
- "standard::type,standard::icon,standard::display-name",
- set_info_get_info_cb, data);
+ cancellable = _gtk_file_system_get_info (button->priv->fs, file,
+ "standard::type,standard::icon,standard::display-name",
+ set_info_get_info_cb, data);
gtk_list_store_set (GTK_LIST_STORE (button->priv->model), iter,
CANCELLABLE_COLUMN, cancellable,
g_object_unref (data);
break;
case ROW_TYPE_VOLUME:
- gtk_file_system_volume_free (data);
+ _gtk_file_system_volume_unref (data);
break;
default:
break;
if (cancelled || error)
goto out;
- pixbuf = gtk_file_info_render_icon (info, GTK_WIDGET (data->button), data->button->priv->icon_size);
+ pixbuf = _gtk_file_info_render_icon (info, GTK_WIDGET (data->button), data->button->priv->icon_size);
if (pixbuf)
{
tree_path);
gtk_tree_path_free (tree_path);
- cancellable = gtk_file_system_get_info (button->priv->fs, file,
- "standard::icon,standard::display-name",
- model_add_special_get_info_cb, info);
+ cancellable = _gtk_file_system_get_info (button->priv->fs, file,
+ "standard::icon,standard::display-name",
+ model_add_special_get_info_cb, info);
gtk_list_store_set (store, &iter,
ICON_COLUMN, NULL,
desktopdir = g_get_user_special_dir (G_USER_DIRECTORY_DESKTOP);
- if (desktopdir)
+ /* "To disable a directory, point it to the homedir."
+ * See http://freedesktop.org/wiki/Software/xdg-user-dirs
+ **/
+ if (g_strcmp0 (desktopdir, g_get_home_dir ()) != 0)
{
GtkTreePath *tree_path;
GCancellable *cancellable;
tree_path);
gtk_tree_path_free (tree_path);
- cancellable = gtk_file_system_get_info (button->priv->fs, file,
- "standard::icon,standard::display-name",
- model_add_special_get_info_cb, info);
+ cancellable = _gtk_file_system_get_info (button->priv->fs, file,
+ "standard::icon,standard::display-name",
+ model_add_special_get_info_cb, info);
gtk_list_store_set (store, &iter,
TYPE_COLUMN, ROW_TYPE_SPECIAL,
if (local_only)
{
- if (gtk_file_system_volume_is_mounted (volume))
+ if (_gtk_file_system_volume_is_mounted (volume))
{
GFile *base_file;
- base_file = gtk_file_system_volume_get_root (volume);
- if (base_file != NULL && !g_file_is_native (base_file))
- {
- gtk_file_system_volume_free (volume);
- continue;
- }
+ base_file = _gtk_file_system_volume_get_root (volume);
+ if (base_file != NULL)
+ {
+ if (!g_file_is_native (base_file))
+ {
+ g_object_unref (base_file);
+ continue;
+ }
+ else
+ g_object_unref (base_file);
+ }
}
}
- pixbuf = gtk_file_system_volume_render_icon (volume,
- GTK_WIDGET (button),
- button->priv->icon_size,
- NULL);
- display_name = gtk_file_system_volume_get_display_name (volume);
+ pixbuf = _gtk_file_system_volume_render_icon (volume,
+ GTK_WIDGET (button),
+ button->priv->icon_size,
+ NULL);
+ display_name = _gtk_file_system_volume_get_display_name (volume);
gtk_list_store_insert (store, &iter, pos);
gtk_list_store_set (store, &iter,
ICON_COLUMN, pixbuf,
DISPLAY_NAME_COLUMN, display_name,
TYPE_COLUMN, ROW_TYPE_VOLUME,
- DATA_COLUMN, volume,
+ DATA_COLUMN, _gtk_file_system_volume_ref (volume),
IS_FOLDER_COLUMN, TRUE,
-1);
}
}
-extern gchar * _gtk_file_chooser_label_for_file (const gchar *uri);
+extern gchar * _gtk_file_chooser_label_for_file (GFile *file);
static void
model_add_bookmarks (GtkFileChooserButton *button,
* If we switch to a better bookmarks file format (XBEL), we
* should use mime info to get a better icon.
*/
- label = gtk_file_system_get_bookmark_label (button->priv->fs, file);
+ label = _gtk_file_system_get_bookmark_label (button->priv->fs, file);
if (!label)
label = _gtk_file_chooser_label_for_file (file);
icon_theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (GTK_WIDGET (button)));
- pixbuf = gtk_icon_theme_load_icon (icon_theme, "gnome-fs-share",
+ pixbuf = gtk_icon_theme_load_icon (icon_theme, "folder-remote",
button->priv->icon_size, 0, NULL);
gtk_list_store_insert (store, &iter, pos);
* If we switch to a better bookmarks file format (XBEL), we
* should use mime info to get a better icon.
*/
- label = gtk_file_system_get_bookmark_label (button->priv->fs, file);
+ label = _gtk_file_system_get_bookmark_label (button->priv->fs, file);
if (!label)
label = _gtk_file_chooser_label_for_file (file);
icon_theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (GTK_WIDGET (button)));
if (g_file_is_native (file))
- pixbuf = gtk_icon_theme_load_icon (icon_theme, "gnome-fs-directory",
+ pixbuf = gtk_icon_theme_load_icon (icon_theme, "folder",
button->priv->icon_size, 0, NULL);
else
- pixbuf = gtk_icon_theme_load_icon (icon_theme, "gnome-fs-share",
+ pixbuf = gtk_icon_theme_load_icon (icon_theme, "folder-remote",
button->priv->icon_size, 0, NULL);
gtk_list_store_set (store, &iter,
retval = TRUE;
if (local_only)
{
- if (gtk_file_system_volume_is_mounted (data))
+ if (_gtk_file_system_volume_is_mounted (data))
{
GFile *base_file;
- base_file = gtk_file_system_volume_get_root (data);
+ base_file = _gtk_file_system_volume_get_root (data);
if (base_file)
{
if (!g_file_is_native (base_file))
retval = FALSE;
+ g_object_unref (base_file);
}
else
retval = FALSE;
gtk_tree_model_get_iter_first (priv->filter_model, &iter);
- files = _gtk_file_chooser_get_files (GTK_FILE_CHOOSER (priv->dialog));
+ files = gtk_file_chooser_get_files (GTK_FILE_CHOOSER (priv->dialog));
row_found = FALSE;
{
GFile *base_file;
- base_file = gtk_file_system_volume_get_root (data);
+ base_file = _gtk_file_system_volume_get_root (data);
if (base_file)
{
row_found = (files &&
gtk_label_set_text (GTK_LABEL (priv->label), g_file_info_get_display_name (info));
- pixbuf = gtk_file_info_render_icon (info, GTK_WIDGET (priv->image), priv->icon_size);
+ pixbuf = _gtk_file_info_render_icon (info, GTK_WIDGET (priv->image), priv->icon_size);
if (!pixbuf)
pixbuf = gtk_icon_theme_load_icon (get_icon_theme (GTK_WIDGET (priv->image)),
gchar *label_text;
GSList *files;
- files = _gtk_file_chooser_get_files (GTK_FILE_CHOOSER (priv->dialog));
+ files = gtk_file_chooser_get_files (GTK_FILE_CHOOSER (priv->dialog));
label_text = NULL;
pixbuf = NULL;
+ if (priv->update_button_cancellable)
+ {
+ g_cancellable_cancel (priv->update_button_cancellable);
+ priv->update_button_cancellable = NULL;
+ }
+
if (files && files->data)
{
GFile *file;
file = files->data;
- volume = gtk_file_system_get_volume_for_file (priv->fs, file);
+ volume = _gtk_file_system_get_volume_for_file (priv->fs, file);
if (volume)
{
GFile *base_file;
- base_file = gtk_file_system_volume_get_root (volume);
+ base_file = _gtk_file_system_volume_get_root (volume);
if (base_file && g_file_equal (base_file, file))
{
- label_text = gtk_file_system_volume_get_display_name (volume);
- pixbuf = gtk_file_system_volume_render_icon (volume,
- GTK_WIDGET (button),
- priv->icon_size,
- NULL);
+ label_text = _gtk_file_system_volume_get_display_name (volume);
+ pixbuf = _gtk_file_system_volume_render_icon (volume,
+ GTK_WIDGET (button),
+ priv->icon_size,
+ NULL);
}
if (base_file)
g_object_unref (base_file);
- gtk_file_system_volume_free (volume);
+ _gtk_file_system_volume_unref (volume);
if (label_text)
goto out;
}
- if (priv->update_button_cancellable)
- {
- g_cancellable_cancel (priv->update_button_cancellable);
- priv->update_button_cancellable = NULL;
- }
-
if (g_file_is_native (file))
{
priv->update_button_cancellable =
- gtk_file_system_get_info (priv->fs, file,
- "standard::icon,standard::display-name",
- update_label_get_info_cb,
- g_object_ref (button));
+ _gtk_file_system_get_info (priv->fs, file,
+ "standard::icon,standard::display-name",
+ update_label_get_info_cb,
+ g_object_ref (button));
}
else
{
GdkPixbuf *pixbuf;
- label_text = gtk_file_system_get_bookmark_label (button->priv->fs, file);
+ label_text = _gtk_file_system_get_bookmark_label (button->priv->fs, file);
pixbuf = gtk_icon_theme_load_icon (get_icon_theme (GTK_WIDGET (priv->image)),
- "gnome-fs-regular",
+ "text-x-generic",
priv->icon_size, 0, NULL);
gtk_image_set_from_pixbuf (GTK_IMAGE (priv->image), pixbuf);
g_free (label_text);
}
else
- gtk_label_set_text (GTK_LABEL (priv->label), _(FALLBACK_DISPLAY_NAME));
+ {
+ gtk_label_set_text (GTK_LABEL (priv->label), _(FALLBACK_DISPLAY_NAME));
+ gtk_image_set_from_pixbuf (GTK_IMAGE (priv->image), NULL);
+ }
}
priv->n_volumes = 0;
- volumes = gtk_file_system_list_volumes (fs);
+ volumes = _gtk_file_system_list_volumes (fs);
model_add_volumes (user_data, volumes);
g_slist_free (volumes);
GtkFileChooserButtonPrivate *priv = button->priv;
GSList *bookmarks;
- bookmarks = gtk_file_system_list_bookmarks (fs);
+ bookmarks = _gtk_file_system_list_bookmarks (fs);
model_remove_rows (user_data,
model_get_type_position (user_data,
ROW_TYPE_BOOKMARK_SEPARATOR),
/* Setup the dialog parent to be chooser button's toplevel, and be modal
as needed. */
- if (!GTK_WIDGET_VISIBLE (priv->dialog))
+ if (!gtk_widget_get_visible (priv->dialog))
{
GtkWidget *toplevel;
toplevel = gtk_widget_get_toplevel (GTK_WIDGET (button));
- if (GTK_WIDGET_TOPLEVEL (toplevel) && GTK_IS_WINDOW (toplevel))
+ if (gtk_widget_is_toplevel (toplevel) && GTK_IS_WINDOW (toplevel))
{
if (GTK_WINDOW (toplevel) != gtk_window_get_transient_for (GTK_WINDOW (priv->dialog)))
gtk_window_set_transient_for (GTK_WINDOW (priv->dialog),
priv->dialog_file_activated_id);
g_signal_handler_block (priv->dialog,
priv->dialog_selection_changed_id);
- files = _gtk_file_chooser_get_files (GTK_FILE_CHOOSER (priv->dialog));
+ files = gtk_file_chooser_get_files (GTK_FILE_CHOOSER (priv->dialog));
if (files)
{
if (files->data)
case ROW_TYPE_CURRENT_FOLDER:
gtk_file_chooser_unselect_all (GTK_FILE_CHOOSER (priv->dialog));
if (data)
- _gtk_file_chooser_set_current_folder_file (GTK_FILE_CHOOSER (priv->dialog),
- data, NULL);
+ gtk_file_chooser_set_current_folder_file (GTK_FILE_CHOOSER (priv->dialog),
+ data, NULL);
break;
case ROW_TYPE_VOLUME:
{
GFile *base_file;
gtk_file_chooser_unselect_all (GTK_FILE_CHOOSER (priv->dialog));
- base_file = gtk_file_system_volume_get_root (data);
+ base_file = _gtk_file_system_volume_get_root (data);
if (base_file)
{
- _gtk_file_chooser_set_current_folder_file (GTK_FILE_CHOOSER (priv->dialog),
- base_file, NULL);
+ gtk_file_chooser_set_current_folder_file (GTK_FILE_CHOOSER (priv->dialog),
+ base_file, NULL);
g_object_unref (base_file);
}
}
switch (gtk_file_chooser_get_action (GTK_FILE_CHOOSER (dialog)))
{
case GTK_FILE_CHOOSER_ACTION_OPEN:
- _gtk_file_chooser_select_file (GTK_FILE_CHOOSER (dialog), priv->old_file,
- NULL);
+ gtk_file_chooser_select_file (GTK_FILE_CHOOSER (dialog), priv->old_file,
+ NULL);
break;
case GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER:
- _gtk_file_chooser_set_current_folder_file (GTK_FILE_CHOOSER (dialog),
- priv->old_file, NULL);
+ gtk_file_chooser_set_current_folder_file (GTK_FILE_CHOOSER (dialog),
+ priv->old_file, NULL);
break;
default:
g_assert_not_reached ();
gtk_widget_set_sensitive (priv->combo_box, TRUE);
gtk_widget_hide (priv->dialog);
- g_signal_emit_by_name (user_data, "file-set");
+ if (response == GTK_RESPONSE_ACCEPT ||
+ response == GTK_RESPONSE_OK)
+ g_signal_emit (user_data, file_chooser_button_signals[FILE_SET], 0);
}
NULL);
}
-/**
- * gtk_file_chooser_button_new_with_backend:
- * @title: the title of the browse dialog.
- * @action: the open mode for the widget.
- * @backend: the name of the #GtkFileSystem backend to use.
- *
- * Creates a new file-selecting button widget using @backend.
- *
- * Returns: a new button widget.
- *
- * Since: 2.6
- **/
-GtkWidget *
-gtk_file_chooser_button_new_with_backend (const gchar *title,
- GtkFileChooserAction action,
- const gchar *backend)
-{
- g_return_val_if_fail (action == GTK_FILE_CHOOSER_ACTION_OPEN ||
- action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, NULL);
-
- return g_object_new (GTK_TYPE_FILE_CHOOSER_BUTTON,
- "action", action,
- "title", (title ? title : _(DEFAULT_TITLE)),
- "file-system-backend", backend,
- NULL);
-}
-
/**
* gtk_file_chooser_button_new_with_dialog:
* @dialog: the widget to use as dialog
return button->priv->focus_on_click;
}
-
-#define __GTK_FILE_CHOOSER_BUTTON_C__
-#include "gtkaliasdef.c"