LINUX.ORG.RU

[gtk] диалог сохранения файлов и confirm-overwrite

 


0

0

проблема в следующем, gtk_file_chooser_set_do_overwrite_confirmation() работает только, если GtkFileChooser получен из GtkFileChooserDialog, если же создавать свой диалог, и встраивать в него GtkFileChooserWidget, использование gtk_file_chooser_set_do_overwrite_confirmation() не дает никакого эффекта

рабочий код

#include <gtk/gtk.h>
                                    
int
main (int argc, char *argv[])
{
  GtkWidget *d;

  gtk_init (&argc, &argv);
  d = gtk_file_chooser_dialog_new ("Save File", NULL,
                                   GTK_FILE_CHOOSER_ACTION_SAVE,
                                   GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                   GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL);
  gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (d), TRUE);
  gtk_dialog_run (GTK_DIALOG (d));
  gtk_widget_destroy (d);
}

нерабочий код

#include <gtk/gtk.h>

int
main (int argc, char *argv[])
{
  GtkWidget *d, *w;

  gtk_init (&argc, &argv);
  d = gtk_dialog_new_with_buttons ("Save File", NULL,
				   GTK_DIALOG_MODAL |
				   GTK_DIALOG_DESTROY_WITH_PARENT,
				   GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
				   GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL);

  w = gtk_file_chooser_widget_new (GTK_FILE_CHOOSER_ACTION_SAVE);
  gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (w), TRUE);
  gtk_widget_show (w);

  gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (d))),
		      w, TRUE, TRUE, 0);

  gtk_dialog_run (GTK_DIALOG (d));
  gtk_widget_destroy (d);
}

во втором случае пробовал добавлять обработчик сигнала confirm-overwrite, но без видимого эффекта, обработчик не вызывался

кто-нибудь знает, как заставить второй вариант вызывать диалог подтверждения перезаписи?

★★★★★

детальное изучение внутренностей gtk показало, что в первом случае дергается масса private методов. поэтому пришлось для второго варианта вешать свой обработчик сигнала «response», и в нем самому создавать нужный диалог с запросом подтверждения.

ananas ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.