From 4b7127155c07b7aa693a82b5c2d9b7b2e21b3d42 Mon Sep 17 00:00:00 2001 From: Thomas White Date: Tue, 30 Oct 2018 20:36:26 +0100 Subject: Revert to normal GtkFileChooserDialog for saving presentation I didn't know about the "extra widget" thing. --- data/colloquium.gresource.xml | 1 - data/savepresentation.ui | 140 ------------------------------------------ src/narrative_window.c | 43 ++++++++----- src/presentation.c | 2 +- 4 files changed, 29 insertions(+), 157 deletions(-) delete mode 100644 data/savepresentation.ui diff --git a/data/colloquium.gresource.xml b/data/colloquium.gresource.xml index 307a437..819a966 100644 --- a/data/colloquium.gresource.xml +++ b/data/colloquium.gresource.xml @@ -4,7 +4,6 @@ sky.png menus.ui stylesheeteditor.ui - savepresentation.ui demo.sc demo.ss default.ss diff --git a/data/savepresentation.ui b/data/savepresentation.ui deleted file mode 100644 index 32f43be..0000000 --- a/data/savepresentation.ui +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - False - True - dialog - - - - False - vertical - 2 - - - False - end - - - gtk-cancel - True - True - True - True - - - True - True - 0 - - - - - gtk-save - True - True - True - True - - - True - True - 1 - - - - - False - False - 0 - - - - - True - False - vertical - 8 - - - True - False - save - True - False - False - False - - - False - True - 0 - - - - - Create/update private stylesheet for this presentation - True - True - False - True - True - - - False - True - 1 - - - - - Create/update default stylesheet for presentations in folder - True - True - False - True - True - privatess - - - False - True - 2 - - - - - Don't save stylesheet at all - True - True - False - True - True - privatess - - - False - True - 3 - - - - - False - True - 1 - - - - - - button2 - button1 - - - - - - diff --git a/src/narrative_window.c b/src/narrative_window.c index 98001a9..fe6d024 100644 --- a/src/narrative_window.c +++ b/src/narrative_window.c @@ -102,7 +102,6 @@ static void update_toolbar(NarrativeWindow *nw) struct saveas_info { NarrativeWindow *nw; - GtkWidget *filechooser; /* Radio buttons for how to save stylesheet */ GtkWidget *privatess; @@ -114,9 +113,9 @@ struct saveas_info static gint saveas_response_sig(GtkWidget *d, gint response, struct saveas_info *si) { - if ( response == 1 ) { /* hard-coded number in Glade file */ + if ( response == GTK_RESPONSE_ACCEPT ) { - GFile *file = gtk_file_chooser_get_file(GTK_FILE_CHOOSER(si->filechooser)); + GFile *file = gtk_file_chooser_get_file(GTK_FILE_CHOOSER(d)); GFile *ssfile = NULL; if ( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(si->privatess)) ) { @@ -149,7 +148,7 @@ static gint saveas_response_sig(GtkWidget *d, gint response, /* save_presentation keeps a reference to both of these */ g_object_unref(file); - g_object_unref(ssfile); + if ( ssfile != NULL ) g_object_unref(ssfile); } @@ -163,7 +162,7 @@ static gint saveas_response_sig(GtkWidget *d, gint response, static void saveas_sig(GSimpleAction *action, GVariant *parameter, gpointer vp) { GtkWidget *d; - GtkBuilder *builder; + GtkWidget *box; NarrativeWindow *nw = vp; struct saveas_info *si; @@ -172,16 +171,30 @@ static void saveas_sig(GSimpleAction *action, GVariant *parameter, gpointer vp) si->nw = nw; - builder = gtk_builder_new_from_resource("/uk/me/bitwiz/Colloquium/savepresentation.ui"); - gtk_builder_add_callback_symbol(builder, "saveas_response_sig", - G_CALLBACK(saveas_response_sig)); - gtk_builder_connect_signals(builder, si); - d = GTK_WIDGET(gtk_builder_get_object(builder, "savepresentation")); - si->filechooser = GTK_WIDGET(gtk_builder_get_object(builder, "filechooser")); - si->privatess = GTK_WIDGET(gtk_builder_get_object(builder, "privatess")); - si->folderss = GTK_WIDGET(gtk_builder_get_object(builder, "folderss")); - si->noss = GTK_WIDGET(gtk_builder_get_object(builder, "noss")); - gtk_window_set_transient_for(GTK_WINDOW(d), GTK_WINDOW(nw->window)); + d = gtk_file_chooser_dialog_new(_("Save presentation"), + GTK_WINDOW(nw->window), + GTK_FILE_CHOOSER_ACTION_SAVE, + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_Save"), GTK_RESPONSE_ACCEPT, + NULL); + gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(d), + TRUE); + + box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 8); + gtk_file_chooser_set_extra_widget(GTK_FILE_CHOOSER(d), box); + si->privatess = gtk_radio_button_new_with_label(NULL, + _("Create/update private stylesheet for this presentation")); + gtk_box_pack_start(GTK_BOX(box), si->privatess, FALSE, FALSE, 0); + si->folderss = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(si->privatess), + _("Create/update default stylesheet for presentations in folder")); + gtk_box_pack_start(GTK_BOX(box), si->folderss, FALSE, FALSE, 0); + si->noss = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(si->privatess), + _("Don't save stylesheet at all")); + gtk_box_pack_start(GTK_BOX(box), si->noss, FALSE, FALSE, 0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(si->privatess), TRUE); + + g_signal_connect(G_OBJECT(d), "response", + G_CALLBACK(saveas_response_sig), si); gtk_widget_show_all(d); } diff --git a/src/presentation.c b/src/presentation.c index 28f82a2..ae3f044 100644 --- a/src/presentation.c +++ b/src/presentation.c @@ -177,7 +177,7 @@ int save_presentation(struct presentation *p, GFile *file, GFile *ssfile) g_object_ref(p->stylesheet_from); } } else { - fprintf(stderr, _("Not updating default stylesheet\n")); + fprintf(stderr, _("Not saving the stylesheet\n")); sr = 0; } -- cgit v1.2.3