forked from AuroraMiddleware/gtk
Remove overwrite confirmation machinery from GtkFileChooser
Overwrite confirmation should not be optional, and it should not loop into application code to create their own dialog and user response.
This commit is contained in:
parent
d505573ee6
commit
063ad28b1a
@ -461,7 +461,6 @@ save_cb (GtkWidget *button,
|
|||||||
|
|
||||||
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);
|
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);
|
||||||
gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
|
gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
|
||||||
gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE);
|
|
||||||
|
|
||||||
GFile *cwd = g_file_new_for_path (".");
|
GFile *cwd = g_file_new_for_path (".");
|
||||||
gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), cwd, NULL);
|
gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), cwd, NULL);
|
||||||
@ -583,7 +582,6 @@ export_image_cb (GtkWidget *button,
|
|||||||
|
|
||||||
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);
|
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);
|
||||||
gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
|
gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
|
||||||
gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE);
|
|
||||||
g_signal_connect (dialog, "response", G_CALLBACK (export_image_response_cb), texture);
|
g_signal_connect (dialog, "response", G_CALLBACK (export_image_response_cb), texture);
|
||||||
gtk_widget_show (dialog);
|
gtk_widget_show (dialog);
|
||||||
}
|
}
|
||||||
|
@ -1134,8 +1134,6 @@ gtk_file_chooser_set_select_multiple
|
|||||||
gtk_file_chooser_get_select_multiple
|
gtk_file_chooser_get_select_multiple
|
||||||
gtk_file_chooser_set_show_hidden
|
gtk_file_chooser_set_show_hidden
|
||||||
gtk_file_chooser_get_show_hidden
|
gtk_file_chooser_get_show_hidden
|
||||||
gtk_file_chooser_set_do_overwrite_confirmation
|
|
||||||
gtk_file_chooser_get_do_overwrite_confirmation
|
|
||||||
gtk_file_chooser_set_create_folders
|
gtk_file_chooser_set_create_folders
|
||||||
gtk_file_chooser_get_create_folders
|
gtk_file_chooser_get_create_folders
|
||||||
gtk_file_chooser_set_current_name
|
gtk_file_chooser_set_current_name
|
||||||
|
@ -132,22 +132,6 @@
|
|||||||
typedef GtkFileChooserIface GtkFileChooserInterface;
|
typedef GtkFileChooserIface GtkFileChooserInterface;
|
||||||
G_DEFINE_INTERFACE (GtkFileChooser, gtk_file_chooser, G_TYPE_OBJECT);
|
G_DEFINE_INTERFACE (GtkFileChooser, gtk_file_chooser, G_TYPE_OBJECT);
|
||||||
|
|
||||||
static gboolean
|
|
||||||
confirm_overwrite_accumulator (GSignalInvocationHint *ihint,
|
|
||||||
GValue *return_accu,
|
|
||||||
const GValue *handler_return,
|
|
||||||
gpointer dummy)
|
|
||||||
{
|
|
||||||
gboolean continue_emission;
|
|
||||||
GtkFileChooserConfirmation conf;
|
|
||||||
|
|
||||||
conf = g_value_get_enum (handler_return);
|
|
||||||
g_value_set_enum (return_accu, conf);
|
|
||||||
continue_emission = (conf == GTK_FILE_CHOOSER_CONFIRMATION_CONFIRM);
|
|
||||||
|
|
||||||
return continue_emission;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_file_chooser_default_init (GtkFileChooserInterface *iface)
|
gtk_file_chooser_default_init (GtkFileChooserInterface *iface)
|
||||||
{
|
{
|
||||||
@ -253,84 +237,6 @@ gtk_file_chooser_default_init (GtkFileChooserInterface *iface)
|
|||||||
NULL,
|
NULL,
|
||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
|
|
||||||
/**
|
|
||||||
* GtkFileChooser::confirm-overwrite:
|
|
||||||
* @chooser: the object which received the signal.
|
|
||||||
*
|
|
||||||
* This signal gets emitted whenever it is appropriate to present a
|
|
||||||
* confirmation dialog when the user has selected a file name that
|
|
||||||
* already exists. The signal only gets emitted when the file
|
|
||||||
* chooser is in %GTK_FILE_CHOOSER_ACTION_SAVE mode.
|
|
||||||
*
|
|
||||||
* Most applications just need to turn on the
|
|
||||||
* #GtkFileChooser:do-overwrite-confirmation property (or call the
|
|
||||||
* gtk_file_chooser_set_do_overwrite_confirmation() function), and
|
|
||||||
* they will automatically get a standard confirmation dialog.
|
|
||||||
* Applications which need to customize this behavior should do
|
|
||||||
* that, and also connect to the #GtkFileChooser::confirm-overwrite
|
|
||||||
* signal.
|
|
||||||
*
|
|
||||||
* A signal handler for this signal must return a
|
|
||||||
* #GtkFileChooserConfirmation value, which indicates the action to
|
|
||||||
* take. If the handler determines that the user wants to select a
|
|
||||||
* different filename, it should return
|
|
||||||
* %GTK_FILE_CHOOSER_CONFIRMATION_SELECT_AGAIN. If it determines
|
|
||||||
* that the user is satisfied with his choice of file name, it
|
|
||||||
* should return %GTK_FILE_CHOOSER_CONFIRMATION_ACCEPT_FILENAME.
|
|
||||||
* On the other hand, if it determines that the standard confirmation
|
|
||||||
* dialog should be used, it should return
|
|
||||||
* %GTK_FILE_CHOOSER_CONFIRMATION_CONFIRM. The following example
|
|
||||||
* illustrates this.
|
|
||||||
*
|
|
||||||
* ## Custom confirmation ## {#gtkfilechooser-confirmation}
|
|
||||||
*
|
|
||||||
* |[<!-- language="C" -->
|
|
||||||
* static GtkFileChooserConfirmation
|
|
||||||
* confirm_overwrite_callback (GtkFileChooser *chooser, gpointer data)
|
|
||||||
* {
|
|
||||||
* g_autoptr(GFile) file = gtk_file_chooser_get_file (chooser);
|
|
||||||
*
|
|
||||||
* // file_is_read_only() is defined elsewhere
|
|
||||||
* if (file_is_read_only (file))
|
|
||||||
* {
|
|
||||||
* // user_wants_to_replace_read_only_file() is defined elsewhere
|
|
||||||
* if (user_wants_to_replace_read_only_file (file))
|
|
||||||
* return GTK_FILE_CHOOSER_CONFIRMATION_ACCEPT_FILENAME;
|
|
||||||
* else
|
|
||||||
* return GTK_FILE_CHOOSER_CONFIRMATION_SELECT_AGAIN;
|
|
||||||
* }
|
|
||||||
* else
|
|
||||||
* {
|
|
||||||
* // fall back to the default dialog
|
|
||||||
* return GTK_FILE_CHOOSER_CONFIRMATION_CONFIRM;
|
|
||||||
* }
|
|
||||||
* }
|
|
||||||
*
|
|
||||||
* ...
|
|
||||||
*
|
|
||||||
* chooser = gtk_file_chooser_dialog_new (...);
|
|
||||||
*
|
|
||||||
* gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE);
|
|
||||||
* g_signal_connect (chooser, "confirm-overwrite",
|
|
||||||
* G_CALLBACK (confirm_overwrite_callback), NULL);
|
|
||||||
*
|
|
||||||
* if (gtk_dialog_run (chooser) == GTK_RESPONSE_ACCEPT)
|
|
||||||
* save_to_file (gtk_file_chooser_get_file (GTK_FILE_CHOOSER (chooser));
|
|
||||||
*
|
|
||||||
* gtk_widget_destroy (chooser);
|
|
||||||
* ]|
|
|
||||||
*
|
|
||||||
* Returns: a #GtkFileChooserConfirmation value that indicates which
|
|
||||||
* action to take after emitting the signal.
|
|
||||||
*/
|
|
||||||
g_signal_new (I_("confirm-overwrite"),
|
|
||||||
iface_type,
|
|
||||||
G_SIGNAL_RUN_LAST,
|
|
||||||
G_STRUCT_OFFSET (GtkFileChooserIface, confirm_overwrite),
|
|
||||||
confirm_overwrite_accumulator, NULL,
|
|
||||||
_gtk_marshal_ENUM__VOID,
|
|
||||||
GTK_TYPE_FILE_CHOOSER_CONFIRMATION, 0);
|
|
||||||
|
|
||||||
g_object_interface_install_property (iface,
|
g_object_interface_install_property (iface,
|
||||||
g_param_spec_enum ("action",
|
g_param_spec_enum ("action",
|
||||||
P_("Action"),
|
P_("Action"),
|
||||||
@ -382,21 +288,6 @@ gtk_file_chooser_default_init (GtkFileChooserInterface *iface)
|
|||||||
FALSE,
|
FALSE,
|
||||||
GTK_PARAM_READWRITE));
|
GTK_PARAM_READWRITE));
|
||||||
|
|
||||||
/**
|
|
||||||
* GtkFileChooser:do-overwrite-confirmation:
|
|
||||||
*
|
|
||||||
* Whether a file chooser in %GTK_FILE_CHOOSER_ACTION_SAVE mode
|
|
||||||
* will present an overwrite confirmation dialog if the user
|
|
||||||
* selects a file name that already exists.
|
|
||||||
*/
|
|
||||||
g_object_interface_install_property (iface,
|
|
||||||
g_param_spec_boolean ("do-overwrite-confirmation",
|
|
||||||
P_("Do overwrite confirmation"),
|
|
||||||
P_("Whether a file chooser in save mode "
|
|
||||||
"will present an overwrite confirmation dialog "
|
|
||||||
"if necessary."),
|
|
||||||
FALSE,
|
|
||||||
GTK_PARAM_READWRITE));
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GtkFileChooser:create-folders:
|
* GtkFileChooser:create-folders:
|
||||||
@ -1241,54 +1132,6 @@ gtk_file_chooser_get_show_hidden (GtkFileChooser *chooser)
|
|||||||
return show_hidden;
|
return show_hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* gtk_file_chooser_set_do_overwrite_confirmation:
|
|
||||||
* @chooser: a #GtkFileChooser
|
|
||||||
* @do_overwrite_confirmation: whether to confirm overwriting in save mode
|
|
||||||
*
|
|
||||||
* Sets whether a file chooser in %GTK_FILE_CHOOSER_ACTION_SAVE mode will present
|
|
||||||
* a confirmation dialog if the user types a file name that already exists. This
|
|
||||||
* is %FALSE by default.
|
|
||||||
*
|
|
||||||
* If set to %TRUE, the @chooser will emit the
|
|
||||||
* #GtkFileChooser::confirm-overwrite signal when appropriate.
|
|
||||||
*
|
|
||||||
* If all you need is the standard confirmation dialog, set this property to %TRUE.
|
|
||||||
* You can override the way confirmation is done by actually handling the
|
|
||||||
* #GtkFileChooser::confirm-overwrite signal; please refer to its documentation
|
|
||||||
* for the details.
|
|
||||||
**/
|
|
||||||
void
|
|
||||||
gtk_file_chooser_set_do_overwrite_confirmation (GtkFileChooser *chooser,
|
|
||||||
gboolean do_overwrite_confirmation)
|
|
||||||
{
|
|
||||||
g_return_if_fail (GTK_IS_FILE_CHOOSER (chooser));
|
|
||||||
|
|
||||||
g_object_set (chooser, "do-overwrite-confirmation", do_overwrite_confirmation, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gtk_file_chooser_get_do_overwrite_confirmation:
|
|
||||||
* @chooser: a #GtkFileChooser
|
|
||||||
*
|
|
||||||
* Queries whether a file chooser is set to confirm for overwriting when the user
|
|
||||||
* types a file name that already exists.
|
|
||||||
*
|
|
||||||
* Returns: %TRUE if the file chooser will present a confirmation dialog;
|
|
||||||
* %FALSE otherwise.
|
|
||||||
**/
|
|
||||||
gboolean
|
|
||||||
gtk_file_chooser_get_do_overwrite_confirmation (GtkFileChooser *chooser)
|
|
||||||
{
|
|
||||||
gboolean do_overwrite_confirmation;
|
|
||||||
|
|
||||||
g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), FALSE);
|
|
||||||
|
|
||||||
g_object_get (chooser, "do-overwrite-confirmation", &do_overwrite_confirmation, NULL);
|
|
||||||
|
|
||||||
return do_overwrite_confirmation;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gtk_file_chooser_add_choice:
|
* gtk_file_chooser_add_choice:
|
||||||
* @chooser: a #GtkFileChooser
|
* @chooser: a #GtkFileChooser
|
||||||
|
@ -59,28 +59,6 @@ typedef enum
|
|||||||
GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER
|
GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER
|
||||||
} GtkFileChooserAction;
|
} GtkFileChooserAction;
|
||||||
|
|
||||||
/**
|
|
||||||
* GtkFileChooserConfirmation:
|
|
||||||
* @GTK_FILE_CHOOSER_CONFIRMATION_CONFIRM: The file chooser will present
|
|
||||||
* its stock dialog to confirm about overwriting an existing file.
|
|
||||||
* @GTK_FILE_CHOOSER_CONFIRMATION_ACCEPT_FILENAME: The file chooser will
|
|
||||||
* terminate and accept the user’s choice of a file name.
|
|
||||||
* @GTK_FILE_CHOOSER_CONFIRMATION_SELECT_AGAIN: The file chooser will
|
|
||||||
* continue running, so as to let the user select another file name.
|
|
||||||
*
|
|
||||||
* Used as a return value of handlers for the
|
|
||||||
* #GtkFileChooser::confirm-overwrite signal of a #GtkFileChooser. This
|
|
||||||
* value determines whether the file chooser will present the stock
|
|
||||||
* confirmation dialog, accept the user’s choice of a filename, or
|
|
||||||
* let the user choose another filename.
|
|
||||||
*/
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
GTK_FILE_CHOOSER_CONFIRMATION_CONFIRM,
|
|
||||||
GTK_FILE_CHOOSER_CONFIRMATION_ACCEPT_FILENAME,
|
|
||||||
GTK_FILE_CHOOSER_CONFIRMATION_SELECT_AGAIN
|
|
||||||
} GtkFileChooserConfirmation;
|
|
||||||
|
|
||||||
GDK_AVAILABLE_IN_ALL
|
GDK_AVAILABLE_IN_ALL
|
||||||
GType gtk_file_chooser_get_type (void) G_GNUC_CONST;
|
GType gtk_file_chooser_get_type (void) G_GNUC_CONST;
|
||||||
|
|
||||||
@ -136,12 +114,6 @@ void gtk_file_chooser_set_show_hidden (GtkFileChooser
|
|||||||
GDK_AVAILABLE_IN_ALL
|
GDK_AVAILABLE_IN_ALL
|
||||||
gboolean gtk_file_chooser_get_show_hidden (GtkFileChooser *chooser);
|
gboolean gtk_file_chooser_get_show_hidden (GtkFileChooser *chooser);
|
||||||
|
|
||||||
GDK_AVAILABLE_IN_ALL
|
|
||||||
void gtk_file_chooser_set_do_overwrite_confirmation (GtkFileChooser *chooser,
|
|
||||||
gboolean do_overwrite_confirmation);
|
|
||||||
GDK_AVAILABLE_IN_ALL
|
|
||||||
gboolean gtk_file_chooser_get_do_overwrite_confirmation (GtkFileChooser *chooser);
|
|
||||||
|
|
||||||
GDK_AVAILABLE_IN_ALL
|
GDK_AVAILABLE_IN_ALL
|
||||||
void gtk_file_chooser_set_create_folders (GtkFileChooser *chooser,
|
void gtk_file_chooser_set_create_folders (GtkFileChooser *chooser,
|
||||||
gboolean create_folders);
|
gboolean create_folders);
|
||||||
|
@ -926,7 +926,6 @@ gtk_file_chooser_button_set_property (GObject *object,
|
|||||||
case GTK_FILE_CHOOSER_PROP_PREVIEW_WIDGET_ACTIVE:
|
case GTK_FILE_CHOOSER_PROP_PREVIEW_WIDGET_ACTIVE:
|
||||||
case GTK_FILE_CHOOSER_PROP_USE_PREVIEW_LABEL:
|
case GTK_FILE_CHOOSER_PROP_USE_PREVIEW_LABEL:
|
||||||
case GTK_FILE_CHOOSER_PROP_SHOW_HIDDEN:
|
case GTK_FILE_CHOOSER_PROP_SHOW_HIDDEN:
|
||||||
case GTK_FILE_CHOOSER_PROP_DO_OVERWRITE_CONFIRMATION:
|
|
||||||
case GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS:
|
case GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS:
|
||||||
g_object_set_property (G_OBJECT (priv->chooser), pspec->name, value);
|
g_object_set_property (G_OBJECT (priv->chooser), pspec->name, value);
|
||||||
break;
|
break;
|
||||||
@ -972,7 +971,6 @@ gtk_file_chooser_button_get_property (GObject *object,
|
|||||||
case GTK_FILE_CHOOSER_PROP_USE_PREVIEW_LABEL:
|
case GTK_FILE_CHOOSER_PROP_USE_PREVIEW_LABEL:
|
||||||
case GTK_FILE_CHOOSER_PROP_SELECT_MULTIPLE:
|
case GTK_FILE_CHOOSER_PROP_SELECT_MULTIPLE:
|
||||||
case GTK_FILE_CHOOSER_PROP_SHOW_HIDDEN:
|
case GTK_FILE_CHOOSER_PROP_SHOW_HIDDEN:
|
||||||
case GTK_FILE_CHOOSER_PROP_DO_OVERWRITE_CONFIRMATION:
|
|
||||||
case GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS:
|
case GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS:
|
||||||
g_object_get_property (G_OBJECT (priv->chooser), pspec->name, value);
|
g_object_get_property (G_OBJECT (priv->chooser), pspec->name, value);
|
||||||
break;
|
break;
|
||||||
|
@ -111,8 +111,6 @@
|
|||||||
* NULL);
|
* NULL);
|
||||||
* chooser = GTK_FILE_CHOOSER (dialog);
|
* chooser = GTK_FILE_CHOOSER (dialog);
|
||||||
*
|
*
|
||||||
* gtk_file_chooser_set_do_overwrite_confirmation (chooser, TRUE);
|
|
||||||
*
|
|
||||||
* if (user_edited_a_new_document)
|
* if (user_edited_a_new_document)
|
||||||
* gtk_file_chooser_set_current_name (chooser, _("Untitled document"));
|
* gtk_file_chooser_set_current_name (chooser, _("Untitled document"));
|
||||||
* else
|
* else
|
||||||
|
@ -105,8 +105,6 @@
|
|||||||
* "_Cancel");
|
* "_Cancel");
|
||||||
* chooser = GTK_FILE_CHOOSER (native);
|
* chooser = GTK_FILE_CHOOSER (native);
|
||||||
*
|
*
|
||||||
* gtk_file_chooser_set_do_overwrite_confirmation (chooser, TRUE);
|
|
||||||
*
|
|
||||||
* if (user_edited_a_new_document)
|
* if (user_edited_a_new_document)
|
||||||
* gtk_file_chooser_set_current_name (chooser,
|
* gtk_file_chooser_set_current_name (chooser,
|
||||||
* _("Untitled document"));
|
* _("Untitled document"));
|
||||||
@ -147,7 +145,6 @@
|
|||||||
* * #GtkFileChooser::current-folder-changed
|
* * #GtkFileChooser::current-folder-changed
|
||||||
* * #GtkFileChooser::selection-changed
|
* * #GtkFileChooser::selection-changed
|
||||||
* * #GtkFileChooser::file-activated
|
* * #GtkFileChooser::file-activated
|
||||||
* * #GtkFileChooser::confirm-overwrite
|
|
||||||
*
|
*
|
||||||
* You can also not use the methods that directly control user navigation:
|
* You can also not use the methods that directly control user navigation:
|
||||||
* * gtk_file_chooser_unselect_filename()
|
* * gtk_file_chooser_unselect_filename()
|
||||||
|
@ -54,7 +54,6 @@ typedef struct {
|
|||||||
gboolean folder;
|
gboolean folder;
|
||||||
gboolean create_folders;
|
gboolean create_folders;
|
||||||
gboolean modal;
|
gboolean modal;
|
||||||
gboolean overwrite_confirmation;
|
|
||||||
gboolean select_multiple;
|
gboolean select_multiple;
|
||||||
gboolean show_hidden;
|
gboolean show_hidden;
|
||||||
gboolean running;
|
gboolean running;
|
||||||
@ -507,10 +506,6 @@ gtk_file_chooser_native_quartz_show (GtkFileChooserNative *self)
|
|||||||
gtk_file_chooser_get_select_multiple (GTK_FILE_CHOOSER (self->dialog)))
|
gtk_file_chooser_get_select_multiple (GTK_FILE_CHOOSER (self->dialog)))
|
||||||
data->select_multiple = TRUE;
|
data->select_multiple = TRUE;
|
||||||
|
|
||||||
// overwrite confirmation appears to be always on
|
|
||||||
if (gtk_file_chooser_get_do_overwrite_confirmation (GTK_FILE_CHOOSER (self->dialog)))
|
|
||||||
data->overwrite_confirmation = TRUE;
|
|
||||||
|
|
||||||
if (gtk_file_chooser_get_show_hidden (GTK_FILE_CHOOSER (self->dialog)))
|
if (gtk_file_chooser_get_show_hidden (GTK_FILE_CHOOSER (self->dialog)))
|
||||||
data->show_hidden = TRUE;
|
data->show_hidden = TRUE;
|
||||||
|
|
||||||
|
@ -61,7 +61,6 @@ typedef struct {
|
|||||||
gboolean save;
|
gboolean save;
|
||||||
gboolean folder;
|
gboolean folder;
|
||||||
gboolean modal;
|
gboolean modal;
|
||||||
gboolean overwrite_confirmation;
|
|
||||||
gboolean select_multiple;
|
gboolean select_multiple;
|
||||||
gboolean show_hidden;
|
gboolean show_hidden;
|
||||||
|
|
||||||
@ -500,10 +499,7 @@ filechooser_win32_thread (gpointer _data)
|
|||||||
if (data->show_hidden)
|
if (data->show_hidden)
|
||||||
flags |= FOS_FORCESHOWHIDDEN;
|
flags |= FOS_FORCESHOWHIDDEN;
|
||||||
|
|
||||||
if (data->overwrite_confirmation)
|
flags |= FOS_OVERWRITEPROMPT;
|
||||||
flags |= FOS_OVERWRITEPROMPT;
|
|
||||||
else
|
|
||||||
flags &= ~(FOS_OVERWRITEPROMPT);
|
|
||||||
|
|
||||||
hr = IFileDialog_SetOptions (pfd, flags);
|
hr = IFileDialog_SetOptions (pfd, flags);
|
||||||
if (FAILED (hr))
|
if (FAILED (hr))
|
||||||
@ -927,9 +923,6 @@ gtk_file_chooser_native_win32_show (GtkFileChooserNative *self)
|
|||||||
gtk_file_chooser_get_select_multiple (GTK_FILE_CHOOSER (self->dialog)))
|
gtk_file_chooser_get_select_multiple (GTK_FILE_CHOOSER (self->dialog)))
|
||||||
data->select_multiple = TRUE;
|
data->select_multiple = TRUE;
|
||||||
|
|
||||||
if (gtk_file_chooser_get_do_overwrite_confirmation (GTK_FILE_CHOOSER (self->dialog)))
|
|
||||||
data->overwrite_confirmation = TRUE;
|
|
||||||
|
|
||||||
if (gtk_file_chooser_get_show_hidden (GTK_FILE_CHOOSER (self->dialog)))
|
if (gtk_file_chooser_get_show_hidden (GTK_FILE_CHOOSER (self->dialog)))
|
||||||
data->show_hidden = TRUE;
|
data->show_hidden = TRUE;
|
||||||
|
|
||||||
|
@ -94,7 +94,6 @@ struct _GtkFileChooserIface
|
|||||||
void (*selection_changed) (GtkFileChooser *chooser);
|
void (*selection_changed) (GtkFileChooser *chooser);
|
||||||
void (*update_preview) (GtkFileChooser *chooser);
|
void (*update_preview) (GtkFileChooser *chooser);
|
||||||
void (*file_activated) (GtkFileChooser *chooser);
|
void (*file_activated) (GtkFileChooser *chooser);
|
||||||
GtkFileChooserConfirmation (*confirm_overwrite) (GtkFileChooser *chooser);
|
|
||||||
|
|
||||||
/* 3.22 additions */
|
/* 3.22 additions */
|
||||||
void (*add_choice) (GtkFileChooser *chooser,
|
void (*add_choice) (GtkFileChooser *chooser,
|
||||||
|
@ -66,8 +66,6 @@ static void delegate_update_preview (GtkFileChooser *choose
|
|||||||
static void delegate_file_activated (GtkFileChooser *chooser,
|
static void delegate_file_activated (GtkFileChooser *chooser,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
|
|
||||||
static GtkFileChooserConfirmation delegate_confirm_overwrite (GtkFileChooser *chooser,
|
|
||||||
gpointer data);
|
|
||||||
static void delegate_add_choice (GtkFileChooser *chooser,
|
static void delegate_add_choice (GtkFileChooser *chooser,
|
||||||
const char *id,
|
const char *id,
|
||||||
const char *label,
|
const char *label,
|
||||||
@ -120,9 +118,6 @@ _gtk_file_chooser_install_properties (GObjectClass *klass)
|
|||||||
g_object_class_override_property (klass,
|
g_object_class_override_property (klass,
|
||||||
GTK_FILE_CHOOSER_PROP_SHOW_HIDDEN,
|
GTK_FILE_CHOOSER_PROP_SHOW_HIDDEN,
|
||||||
"show-hidden");
|
"show-hidden");
|
||||||
g_object_class_override_property (klass,
|
|
||||||
GTK_FILE_CHOOSER_PROP_DO_OVERWRITE_CONFIRMATION,
|
|
||||||
"do-overwrite-confirmation");
|
|
||||||
g_object_class_override_property (klass,
|
g_object_class_override_property (klass,
|
||||||
GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS,
|
GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS,
|
||||||
"create-folders");
|
"create-folders");
|
||||||
@ -194,8 +189,6 @@ _gtk_file_chooser_set_delegate (GtkFileChooser *receiver,
|
|||||||
G_CALLBACK (delegate_update_preview), receiver);
|
G_CALLBACK (delegate_update_preview), receiver);
|
||||||
g_signal_connect (delegate, "file-activated",
|
g_signal_connect (delegate, "file-activated",
|
||||||
G_CALLBACK (delegate_file_activated), receiver);
|
G_CALLBACK (delegate_file_activated), receiver);
|
||||||
g_signal_connect (delegate, "confirm-overwrite",
|
|
||||||
G_CALLBACK (delegate_confirm_overwrite), receiver);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GQuark
|
GQuark
|
||||||
@ -371,16 +364,6 @@ delegate_file_activated (GtkFileChooser *chooser,
|
|||||||
g_signal_emit_by_name (data, "file-activated");
|
g_signal_emit_by_name (data, "file-activated");
|
||||||
}
|
}
|
||||||
|
|
||||||
static GtkFileChooserConfirmation
|
|
||||||
delegate_confirm_overwrite (GtkFileChooser *chooser,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
GtkFileChooserConfirmation conf;
|
|
||||||
|
|
||||||
g_signal_emit_by_name (data, "confirm-overwrite", &conf);
|
|
||||||
return conf;
|
|
||||||
}
|
|
||||||
|
|
||||||
GSettings *
|
GSettings *
|
||||||
_gtk_file_chooser_get_settings_for_widget (GtkWidget *widget)
|
_gtk_file_chooser_get_settings_for_widget (GtkWidget *widget)
|
||||||
{
|
{
|
||||||
|
@ -36,7 +36,6 @@ typedef enum {
|
|||||||
GTK_FILE_CHOOSER_PROP_USE_PREVIEW_LABEL,
|
GTK_FILE_CHOOSER_PROP_USE_PREVIEW_LABEL,
|
||||||
GTK_FILE_CHOOSER_PROP_SELECT_MULTIPLE,
|
GTK_FILE_CHOOSER_PROP_SELECT_MULTIPLE,
|
||||||
GTK_FILE_CHOOSER_PROP_SHOW_HIDDEN,
|
GTK_FILE_CHOOSER_PROP_SHOW_HIDDEN,
|
||||||
GTK_FILE_CHOOSER_PROP_DO_OVERWRITE_CONFIRMATION,
|
|
||||||
GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS,
|
GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS,
|
||||||
GTK_FILE_CHOOSER_PROP_LAST = GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS
|
GTK_FILE_CHOOSER_PROP_LAST = GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS
|
||||||
} GtkFileChooserProp;
|
} GtkFileChooserProp;
|
||||||
|
@ -367,7 +367,6 @@ struct _GtkFileChooserWidgetPrivate {
|
|||||||
guint show_hidden_set : 1;
|
guint show_hidden_set : 1;
|
||||||
guint sort_directories_first : 1;
|
guint sort_directories_first : 1;
|
||||||
guint show_time : 1;
|
guint show_time : 1;
|
||||||
guint do_overwrite_confirmation : 1;
|
|
||||||
guint list_sort_ascending : 1;
|
guint list_sort_ascending : 1;
|
||||||
guint shortcuts_current_folder_active : 1;
|
guint shortcuts_current_folder_active : 1;
|
||||||
guint show_size_column : 1;
|
guint show_size_column : 1;
|
||||||
@ -3337,13 +3336,6 @@ gtk_file_chooser_widget_set_property (GObject *object,
|
|||||||
set_show_hidden (impl, g_value_get_boolean (value));
|
set_show_hidden (impl, g_value_get_boolean (value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GTK_FILE_CHOOSER_PROP_DO_OVERWRITE_CONFIRMATION:
|
|
||||||
{
|
|
||||||
gboolean do_overwrite_confirmation = g_value_get_boolean (value);
|
|
||||||
priv->do_overwrite_confirmation = do_overwrite_confirmation;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS:
|
case GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS:
|
||||||
{
|
{
|
||||||
gboolean create_folders = g_value_get_boolean (value);
|
gboolean create_folders = g_value_get_boolean (value);
|
||||||
@ -3409,10 +3401,6 @@ gtk_file_chooser_widget_get_property (GObject *object,
|
|||||||
g_value_set_boolean (value, priv->show_hidden);
|
g_value_set_boolean (value, priv->show_hidden);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GTK_FILE_CHOOSER_PROP_DO_OVERWRITE_CONFIRMATION:
|
|
||||||
g_value_set_boolean (value, priv->do_overwrite_confirmation);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS:
|
case GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS:
|
||||||
g_value_set_boolean (value, priv->create_folders);
|
g_value_set_boolean (value, priv->create_folders);
|
||||||
break;
|
break;
|
||||||
@ -6296,49 +6284,24 @@ should_respond_after_confirm_overwrite (GtkFileChooserWidget *impl,
|
|||||||
GFile *parent_file)
|
GFile *parent_file)
|
||||||
{
|
{
|
||||||
GtkFileChooserWidgetPrivate *priv = gtk_file_chooser_widget_get_instance_private (impl);
|
GtkFileChooserWidgetPrivate *priv = gtk_file_chooser_widget_get_instance_private (impl);
|
||||||
GtkFileChooserConfirmation conf;
|
struct GetDisplayNameData *data;
|
||||||
|
|
||||||
if (!priv->do_overwrite_confirmation)
|
g_assert (file_part != NULL);
|
||||||
return TRUE;
|
|
||||||
|
|
||||||
conf = GTK_FILE_CHOOSER_CONFIRMATION_CONFIRM;
|
data = g_new0 (struct GetDisplayNameData, 1);
|
||||||
|
data->impl = g_object_ref (impl);
|
||||||
|
data->file_part = g_strdup (file_part);
|
||||||
|
|
||||||
g_signal_emit_by_name (impl, "confirm-overwrite", &conf);
|
if (priv->should_respond_get_info_cancellable)
|
||||||
|
g_cancellable_cancel (priv->should_respond_get_info_cancellable);
|
||||||
|
|
||||||
switch (conf)
|
priv->should_respond_get_info_cancellable =
|
||||||
{
|
_gtk_file_system_get_info (priv->file_system, parent_file,
|
||||||
case GTK_FILE_CHOOSER_CONFIRMATION_CONFIRM:
|
"standard::display-name",
|
||||||
{
|
confirmation_confirm_get_info_cb,
|
||||||
struct GetDisplayNameData *data;
|
data);
|
||||||
|
set_busy_cursor (data->impl, TRUE);
|
||||||
g_assert (file_part != NULL);
|
return FALSE;
|
||||||
|
|
||||||
data = g_new0 (struct GetDisplayNameData, 1);
|
|
||||||
data->impl = g_object_ref (impl);
|
|
||||||
data->file_part = g_strdup (file_part);
|
|
||||||
|
|
||||||
if (priv->should_respond_get_info_cancellable)
|
|
||||||
g_cancellable_cancel (priv->should_respond_get_info_cancellable);
|
|
||||||
|
|
||||||
priv->should_respond_get_info_cancellable =
|
|
||||||
_gtk_file_system_get_info (priv->file_system, parent_file,
|
|
||||||
"standard::display-name",
|
|
||||||
confirmation_confirm_get_info_cb,
|
|
||||||
data);
|
|
||||||
set_busy_cursor (data->impl, TRUE);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
case GTK_FILE_CHOOSER_CONFIRMATION_ACCEPT_FILENAME:
|
|
||||||
return TRUE;
|
|
||||||
|
|
||||||
case GTK_FILE_CHOOSER_CONFIRMATION_SELECT_AGAIN:
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
default:
|
|
||||||
g_assert_not_reached ();
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -552,9 +552,6 @@ filesave_choose_cb (GtkWidget *button,
|
|||||||
_("_Select"), GTK_RESPONSE_ACCEPT,
|
_("_Select"), GTK_RESPONSE_ACCEPT,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
/* The confirmation dialog will appear, when the user clicks print */
|
|
||||||
gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), FALSE);
|
|
||||||
|
|
||||||
/* select the current filename in the dialog */
|
/* select the current filename in the dialog */
|
||||||
if (priv->source != NULL && priv->source->value != NULL)
|
if (priv->source != NULL && priv->source->value != NULL)
|
||||||
{
|
{
|
||||||
|
@ -251,7 +251,6 @@ save_clicked (GtkButton *button,
|
|||||||
gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), "custom.css");
|
gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), "custom.css");
|
||||||
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);
|
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);
|
||||||
gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
|
gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
|
||||||
gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE);
|
|
||||||
g_signal_connect (dialog, "response", G_CALLBACK (save_response), ce);
|
g_signal_connect (dialog, "response", G_CALLBACK (save_response), ce);
|
||||||
gtk_widget_show (dialog);
|
gtk_widget_show (dialog);
|
||||||
}
|
}
|
||||||
|
@ -1033,7 +1033,6 @@ render_node_save (GtkButton *button,
|
|||||||
g_free (filename);
|
g_free (filename);
|
||||||
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);
|
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);
|
||||||
gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
|
gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
|
||||||
gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE);
|
|
||||||
g_signal_connect (dialog, "response", G_CALLBACK (render_node_save_response), node);
|
g_signal_connect (dialog, "response", G_CALLBACK (render_node_save_response), node);
|
||||||
gtk_widget_show (dialog);
|
gtk_widget_show (dialog);
|
||||||
}
|
}
|
||||||
|
@ -490,55 +490,6 @@ notify_multiple_cb (GtkWidget *dialog,
|
|||||||
gtk_widget_set_sensitive (button, multiple);
|
gtk_widget_set_sensitive (button, multiple);
|
||||||
}
|
}
|
||||||
|
|
||||||
static GtkFileChooserConfirmation
|
|
||||||
confirm_overwrite_cb (GtkFileChooser *chooser,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
GtkWidget *dialog;
|
|
||||||
GtkWidget *button;
|
|
||||||
int response;
|
|
||||||
GtkFileChooserConfirmation conf;
|
|
||||||
|
|
||||||
dialog = gtk_message_dialog_new (GTK_WINDOW (gtk_widget_get_root (GTK_WIDGET (chooser))),
|
|
||||||
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
|
|
||||||
GTK_MESSAGE_QUESTION,
|
|
||||||
GTK_BUTTONS_NONE,
|
|
||||||
"What do you want to do?");
|
|
||||||
|
|
||||||
button = gtk_button_new_with_label ("Use the stock confirmation dialog");
|
|
||||||
gtk_widget_show (button);
|
|
||||||
gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, 1);
|
|
||||||
|
|
||||||
button = gtk_button_new_with_label ("Type a new file name");
|
|
||||||
gtk_widget_show (button);
|
|
||||||
gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, 2);
|
|
||||||
|
|
||||||
button = gtk_button_new_with_label ("Accept the file name");
|
|
||||||
gtk_widget_show (button);
|
|
||||||
gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, 3);
|
|
||||||
|
|
||||||
response = gtk_dialog_run (GTK_DIALOG (dialog));
|
|
||||||
|
|
||||||
switch (response)
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
conf = GTK_FILE_CHOOSER_CONFIRMATION_CONFIRM;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 3:
|
|
||||||
conf = GTK_FILE_CHOOSER_CONFIRMATION_ACCEPT_FILENAME;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
conf = GTK_FILE_CHOOSER_CONFIRMATION_SELECT_AGAIN;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
gtk_widget_destroy (dialog);
|
|
||||||
|
|
||||||
return conf;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
main (int argc, char **argv)
|
main (int argc, char **argv)
|
||||||
{
|
{
|
||||||
@ -642,8 +593,6 @@ main (int argc, char **argv)
|
|||||||
G_CALLBACK (print_current_folder), NULL);
|
G_CALLBACK (print_current_folder), NULL);
|
||||||
g_signal_connect (dialog, "response",
|
g_signal_connect (dialog, "response",
|
||||||
G_CALLBACK (response_cb), &done);
|
G_CALLBACK (response_cb), &done);
|
||||||
g_signal_connect (dialog, "confirm-overwrite",
|
|
||||||
G_CALLBACK (confirm_overwrite_cb), NULL);
|
|
||||||
|
|
||||||
/* Filters */
|
/* Filters */
|
||||||
filter = gtk_file_filter_new ();
|
filter = gtk_file_filter_new ();
|
||||||
|
@ -5778,14 +5778,6 @@ native_multi_select_toggle (GtkWidget *checkbutton,
|
|||||||
gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(checkbutton)));
|
gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(checkbutton)));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
native_overwrite_confirmation_toggle (GtkWidget *checkbutton,
|
|
||||||
GtkFileChooserNative *native)
|
|
||||||
{
|
|
||||||
gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (native),
|
|
||||||
gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(checkbutton)));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
native_visible_notify_show (GObject *object,
|
native_visible_notify_show (GObject *object,
|
||||||
GParamSpec *pspec,
|
GParamSpec *pspec,
|
||||||
@ -6004,11 +5996,6 @@ create_native_dialogs (GtkWidget *widget)
|
|||||||
G_CALLBACK (native_multi_select_toggle), native);
|
G_CALLBACK (native_multi_select_toggle), native);
|
||||||
gtk_container_add (GTK_CONTAINER (box), check_button);
|
gtk_container_add (GTK_CONTAINER (box), check_button);
|
||||||
|
|
||||||
check_button = gtk_check_button_new_with_label ("Confirm overwrite");
|
|
||||||
g_signal_connect (check_button, "toggled",
|
|
||||||
G_CALLBACK (native_overwrite_confirmation_toggle), native);
|
|
||||||
gtk_container_add (GTK_CONTAINER (box), check_button);
|
|
||||||
|
|
||||||
show_button = gtk_button_new_with_label ("Show");
|
show_button = gtk_button_new_with_label ("Show");
|
||||||
hide_button = gtk_button_new_with_label ("Hide");
|
hide_button = gtk_button_new_with_label ("Hide");
|
||||||
gtk_widget_set_sensitive (hide_button, FALSE);
|
gtk_widget_set_sensitive (hide_button, FALSE);
|
||||||
|
Loading…
Reference in New Issue
Block a user