[byzanz] Switch saving code from gvfs to gio
- From: Benjamin Otte <otte src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [byzanz] Switch saving code from gvfs to gio
- Date: Sat, 15 Aug 2009 17:27:11 +0000 (UTC)
commit 60b13e86b4a39e9c93043ffd85c978f73902b4c7
Author: Benjamin Otte <otte gnome org>
Date: Sat Aug 15 19:24:46 2009 +0200
Switch saving code from gvfs to gio
Gets rid of gnome-vfs and libgnomeui dependencies.
configure.ac | 17 ++--------
src/byzanzapplet.c | 91 ++++++++++++++++++----------------------------------
2 files changed, 34 insertions(+), 74 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index c7b71dc..8a44adf 100644
--- a/configure.ac
+++ b/configure.ac
@@ -99,23 +99,12 @@ GTK_REQ="2.10.0"
GTHREAD_REQ="2.6.0"
APPLET_REQ="2.10.0"
XDAMAGE_REQ="1.0"
-GNOME_VFS_REQ="2.12.0"
-GNOMEUI_REQ="2.12.0"
-PKG_CHECK_MODULES(GTK, gtk+-2.0 >= $GTK_REQ,HAVE_GTK=yes,HAVE_GTK=no)
-if test "x$HAVE_GTK" = "xno"; then
- AC_MSG_ERROR([Byzanz requires Gtk+-2.0 >= $GTK_REQ to compile.])
-fi
+PKG_CHECK_MODULES(GTK, gtk+-2.0 >= $GTK_REQ, gio-2.0)
-PKG_CHECK_MODULES(GTHREAD, xdamage >= $XDAMAGE_REQ gthread-2.0 >= $GTHREAD_REQ,HAVE_GTHREAD=yes,HAVE_GTHREAD=no)
-if test "x$HAVE_GTHREAD" = "xno"; then
- AC_MSG_ERROR([Byzanz requires GThread-2.0 >= $GTHREAD_REQ and XDamage >= $XDAMAGE_REQ to compile.])
-fi
+PKG_CHECK_MODULES(GTHREAD, xdamage >= $XDAMAGE_REQ gthread-2.0 >= $GTHREAD_REQ)
-PKG_CHECK_MODULES(APPLET, libpanelapplet-2.0 >= $APPLET_REQ gnome-vfs-2.0 >= $GNOME_VFS_REQ libgnomeui-2.0 >= $GNOMEUI_REQ, HAVE_APPLET=yes,HAVE_APPLET=no)
-if test "x$HAVE_APPLET" = "xno"; then
- AC_MSG_ERROR([The Byzanz applet requires libpanelapplet-2.0 >= $APPLET_REQ, gnome-vfs-2.0 >= $GNOME_VFS_REQ and libgnomeui-2.0 >= $GNOMEUI_REQ to compile.])
-fi
+PKG_CHECK_MODULES(APPLET, libpanelapplet-2.0 >= $APPLET_REQ)
AC_PATH_PROG(GCONFTOOL, gconftool-2, no)
if test x"$GCONFTOOL" = xno; then
diff --git a/src/byzanzapplet.c b/src/byzanzapplet.c
index d32880d..1c50b3a 100644
--- a/src/byzanzapplet.c
+++ b/src/byzanzapplet.c
@@ -21,10 +21,11 @@
# include "config.h"
#endif
+#include <unistd.h>
+
#include <panel-applet.h>
+#include <gio/gio.h>
#include <glib/gstdio.h>
-#include <libgnomevfs/gnome-vfs.h>
-#include <libgnomeui/libgnomeui.h>
#include <panel-applet-gconf.h>
#include "byzanzrecorder.h"
#include "byzanzselect.h"
@@ -58,9 +59,9 @@ typedef struct {
typedef struct {
AppletPrivate * priv;
ByzanzRecorder * rec;
- GnomeVFSAsyncHandle * handle;
- char * tmp_file;
- GnomeVFSURI * target;
+ GFile * source;
+ GFile * destination;
+ GCancellable * cancellable;
} PendingRecording;
static void
@@ -91,76 +92,48 @@ pending_recording_destroy (PendingRecording *pending)
{
g_assert (pending->rec == NULL);
- if (pending->tmp_file) {
- g_unlink (pending->tmp_file);
- g_free (pending->tmp_file);
+ if (pending->source) {
+ g_file_delete (pending->source, NULL, NULL);
+ g_object_unref (pending->source);
}
- if (pending->target)
- gnome_vfs_uri_unref (pending->target);
+ if (pending->destination)
+ g_object_unref (pending->destination);
g_free (pending);
- gtk_main_quit ();
}
-static int
-transfer_progress_cb (GnomeVFSAsyncHandle *handle, GnomeVFSXferProgressInfo *info, gpointer data)
+static void
+done_saving_cb (GObject *file, GAsyncResult *res, gpointer data)
{
PendingRecording *pending = data;
- char *target_uri;
-
- switch (info->status) {
- case GNOME_VFS_XFER_PROGRESS_STATUS_VFSERROR:
- target_uri = gnome_vfs_uri_to_string (pending->target, GNOME_VFS_URI_HIDE_PASSWORD | GNOME_VFS_URI_HIDE_FRAGMENT_IDENTIFIER);
- byzanz_applet_show_error (NULL, _("A file could not be saved."),
- _("\"%s\" could not be saved.\nThe error that occured was: %s"),
- target_uri, gnome_vfs_result_to_string (info->vfs_status));
- g_free (target_uri);
- return 0;
- case GNOME_VFS_XFER_PROGRESS_STATUS_OK:
- if (info->phase == GNOME_VFS_XFER_PHASE_COMPLETED) {
- g_free (pending->tmp_file);
- pending->tmp_file = NULL;
- pending_recording_destroy (pending);
- gtk_main_quit ();
- return 0;
- }
- return 1;
- case GNOME_VFS_XFER_PROGRESS_STATUS_OVERWRITE:
- case GNOME_VFS_XFER_PROGRESS_STATUS_DUPLICATE:
- default:
- g_assert_not_reached ();
- return 0;
+ GError *error = NULL;
+
+ if (!g_file_copy_finish (G_FILE (file), res, &error)) {
+ byzanz_applet_show_error (NULL, _("Failed to save file."), error->message);
+ g_error_free (error);
}
+
+ pending_recording_destroy (pending);
}
static gboolean
check_done_saving_cb (gpointer data)
{
PendingRecording *pending = data;
- GList *src, *target;
- GnomeVFSURI *src_uri;
if (byzanz_recorder_is_active (pending->rec))
return TRUE;
byzanz_recorder_destroy (pending->rec);
pending->rec = NULL;
- if (pending->target == NULL) {
+ if (pending->destination == NULL) {
pending_recording_destroy (pending);
return FALSE;
}
- src_uri = gnome_vfs_uri_new (pending->tmp_file);
- src = g_list_prepend (NULL, src_uri);
- target = g_list_prepend (NULL, pending->target);
- gnome_vfs_async_xfer (&pending->handle, src, target,
- GNOME_VFS_XFER_REMOVESOURCE | GNOME_VFS_XFER_TARGET_DEFAULT_PERMS,
- GNOME_VFS_XFER_ERROR_MODE_QUERY,
- GNOME_VFS_XFER_OVERWRITE_MODE_REPLACE, /* we do overwrite confirmation in the dialog */
- GNOME_VFS_PRIORITY_DEFAULT,
- transfer_progress_cb, pending, NULL, NULL);
-
- g_list_free (src);
- g_list_free (target);
- gnome_vfs_uri_unref (src_uri);
+ /* There's no g_file_move_async(), so use copy + delete */
+ g_file_copy_async (pending->source, pending->destination,
+ G_FILE_COPY_OVERWRITE, G_PRIORITY_DEFAULT_IDLE,
+ NULL, NULL, NULL, done_saving_cb, pending);
+
return FALSE;
}
@@ -168,9 +141,8 @@ static void
pending_recording_response (GtkWidget *dialog, int response, PendingRecording *pending)
{
if (response == GTK_RESPONSE_ACCEPT) {
- char *dir = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (dialog));
- pending->target = gnome_vfs_uri_new (dir);
- g_free (dir);
+ char *dir;
+ pending->destination = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (dialog));
dir = gtk_file_chooser_get_current_folder_uri (GTK_FILE_CHOOSER (dialog));
if (dir) {
panel_applet_gconf_set_string (pending->priv->applet, "save_directory", dir, NULL);
@@ -182,7 +154,7 @@ pending_recording_response (GtkWidget *dialog, int response, PendingRecording *p
}
static void
-pending_recording_launch (AppletPrivate *priv, ByzanzRecorder *rec, char *tmp_file)
+pending_recording_launch (AppletPrivate *priv, ByzanzRecorder *rec, const char *tmp_file)
{
PendingRecording *pending;
GtkWidget *dialog;
@@ -191,7 +163,7 @@ pending_recording_launch (AppletPrivate *priv, ByzanzRecorder *rec, char *tmp_fi
pending = g_new0 (PendingRecording, 1);
pending->priv = priv;
pending->rec = rec;
- pending->tmp_file = tmp_file;
+ pending->source = g_file_new_for_path (tmp_file);
dialog = gtk_file_chooser_dialog_new (_("Save Recorded File"),
NULL, GTK_FILE_CHOOSER_ACTION_SAVE,
@@ -313,6 +285,7 @@ byzanz_applet_stop_recording (AppletPrivate *priv)
priv->rec = NULL;
byzanz_applet_update (priv);
pending_recording_launch (priv, rec, tmp_file);
+ g_free (tmp_file);
}
static void
@@ -406,8 +379,6 @@ byzanz_applet_fill (PanelApplet *applet, const gchar *iid, gpointer data)
char *method;
GtkWidget *tmp;
- gnome_vfs_init ();
- gnome_authentication_manager_init ();
if (!index_quark)
index_quark = g_quark_from_static_string ("Byzanz-Index");
#ifdef GETTEXT_PACKAGE
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]