aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/narrative_window.c43
-rw-r--r--src/presentation.c2
2 files changed, 29 insertions, 16 deletions
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;
}