static void gtr_po_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GtrPo *po = GTR_PO (object); switch (prop_id) { case PROP_LOCATION: gtr_po_set_location (po, G_FILE (g_value_get_object (value))); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static void save_dialog_response_cb (GtkDialog * dialog, gint response_id, GtrWindow * window) { GError *error = NULL; GtrPo *po; GtrTab *tab; gchar *filename; GFile *location; GtrStatusbar *status; tab = GTR_TAB (g_object_get_data (G_OBJECT (dialog), GTR_TAB_SAVE_AS)); g_return_if_fail (GTK_IS_FILE_CHOOSER (dialog)); po = gtr_tab_get_po (tab); if (response_id != GTK_RESPONSE_ACCEPT) { gtk_widget_destroy (GTK_WIDGET (dialog)); return; } filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); g_return_if_fail (filename != NULL); location = g_file_new_for_path (filename); g_free (filename); gtk_widget_destroy (GTK_WIDGET (dialog)); if (po != NULL) { gtr_po_set_location (po, location); g_object_unref (location); gtr_po_save_file (po, &error); if (error) { GtkWidget *dialog; dialog = gtk_message_dialog_new (GTK_WINDOW (window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, "%s", error->message); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); g_clear_error (&error); return; } /* We have to change the state of the tab */ gtr_po_set_state (po, GTR_PO_STATE_SAVED); /* Flash a message */ status = GTR_STATUSBAR (gtr_window_get_statusbar (window)); gtr_statusbar_flash_message (status, 0, _("File saved.")); } g_object_unref (location); }