@ -150,6 +150,7 @@ output_clicked(GtkButton *button, gpointer data)
NULL ) ;
gtk_file_chooser_set_filename ( GTK_FILE_CHOOSER ( dlg ) , yki - > output_filename ) ;
gtk_file_chooser_set_current_name ( GTK_FILE_CHOOSER ( dlg ) , yki - > output_basename ) ;
gtk_file_chooser_set_do_overwrite_confirmation ( GTK_FILE_CHOOSER ( dlg ) , TRUE ) ;
if ( gtk_dialog_run ( GTK_DIALOG ( dlg ) ) = = GTK_RESPONSE_ACCEPT ) {
g_free ( yki - > output_filename ) ;
@ -222,6 +223,29 @@ create_encrypt_dialog(yki_encrypt_data_t *yki)
return GTK_DIALOG ( gtk_builder_get_object ( builder , " dlgEncrypt " ) ) ;
}
static int
confirm_overwrite ( GtkWindow * parent , yki_encrypt_data_t * yki )
{
GtkWidget * dlg ;
int ret ;
dlg = gtk_message_dialog_new ( parent , GTK_DIALOG_MODAL , GTK_MESSAGE_QUESTION , GTK_BUTTONS_NONE ,
" A file name \" %s \" already exists. "
" Do you want to replace it? " , yki - > output_basename ) ;
gtk_message_dialog_format_secondary_text ( GTK_MESSAGE_DIALOG ( dlg ) ,
" Replacing it will overwrite its contents. " ) ;
gtk_dialog_add_buttons ( GTK_DIALOG ( dlg ) ,
" Cancel " , GTK_RESPONSE_CANCEL ,
" Replace " , GTK_RESPONSE_OK ,
NULL ) ;
ret = gtk_dialog_run ( GTK_DIALOG ( dlg ) ) = = GTK_RESPONSE_OK ;
gtk_widget_destroy ( dlg ) ;
return ret ;
}
/* Dealing with public keys. */
@ -356,7 +380,12 @@ yki_encrypt(gpgme_ctx_t gpgme, const char *file, GError **error)
if ( ret & & gtk_dialog_run ( dlg ) = = GTK_RESPONSE_OK & & yki_can_encrypt ( yki ) ) {
gpgme_set_armor ( gpgme , yki . armored ) ;
ret = gpgutil_open_file ( file , " r " , & in , error ) ;
/* Check with user before overwriting a file with the default filename. */
if ( g_file_test ( yki . output_filename , G_FILE_TEST_EXISTS ) & & ! yki . output_filename_userset )
ret = confirm_overwrite ( GTK_WINDOW ( dlg ) , & yki ) ;
if ( ret )
ret = gpgutil_open_file ( file , " r " , & in , error ) ;
if ( ret )
ret = gpgutil_open_file ( yki . output_filename , " w " , & out , error ) ;