gtk-sharp module split

svn path=/trunk/gtk-sharp/; revision=63099
This commit is contained in:
Mike Kestner 2006-07-28 19:07:22 +00:00
parent a881c1a249
commit 6065e27ab2
15 changed files with 0 additions and 894 deletions

View File

@ -1,90 +0,0 @@
if ENABLE_GNOMEVFS
TARGETS = \
TestAsync.exe \
TestAsyncStream.exe \
TestCallback.exe \
TestDirectory.exe \
TestInfo.exe \
TestMime.exe \
TestMonitor.exe \
TestSync.exe \
TestSyncCreate.exe \
TestSyncStream.exe \
TestSyncWrite.exe \
TestUnlink.exe \
TestVolumes.exe
if ENABLE_MONOGETOPTIONS
EXTRA_TARGETS = TestXfer.exe
else
EXTRA_TARGETS =
endif
else
TARGETS =
EXTRA_TARGETS =
endif
assemblies=../../glib/glib-sharp.dll ../../gnomevfs/gnome-vfs-sharp.dll
references = $(addprefix /r:, $(assemblies))
noinst_SCRIPTS = $(TARGETS) $(EXTRA_TARGETS)
CLEANFILES = $(TARGETS) $(EXTRA_TARGETS)
EXTRA_DIST = \
TestAsync.cs \
TestAsyncStream.cs \
TestCallback.cs \
TestDirectory.cs \
TestInfo.cs \
TestMime.cs \
TestMonitor.cs \
TestSync.cs \
TestSyncCreate.cs \
TestSyncStream.cs \
TestSyncWrite.cs \
TestUnlink.cs \
TestVolumes.cs \
TestXfer.cs
TestAsync.exe: $(srcdir)/TestAsync.cs $(assemblies)
$(CSC) /out:TestAsync.exe $(references) $(srcdir)/TestAsync.cs
TestAsyncStream.exe: $(srcdir)/TestAsyncStream.cs $(assemblies)
$(CSC) /out:TestAsyncStream.exe $(references) $(srcdir)/TestAsyncStream.cs
TestCallback.exe: $(srcdir)/TestCallback.cs $(assemblies)
$(CSC) /out:TestCallback.exe $(references) $(srcdir)/TestCallback.cs
TestDirectory.exe: $(srcdir)/TestDirectory.cs $(assemblies)
$(CSC) /out:TestDirectory.exe $(references) $(srcdir)/TestDirectory.cs
TestInfo.exe: $(srcdir)/TestInfo.cs $(assemblies)
$(CSC) /out:TestInfo.exe $(references) $(srcdir)/TestInfo.cs
TestMime.exe: $(srcdir)/TestMime.cs $(assemblies)
$(CSC) /out:TestMime.exe $(references) $(srcdir)/TestMime.cs
TestMonitor.exe: $(srcdir)/TestMonitor.cs $(assemblies)
$(CSC) /out:TestMonitor.exe $(references) $(srcdir)/TestMonitor.cs
TestSyncStream.exe: $(srcdir)/TestSyncStream.cs $(assemblies)
$(CSC) /out:TestSyncStream.exe $(references) $(srcdir)/TestSyncStream.cs
TestSync.exe: $(srcdir)/TestSync.cs $(assemblies)
$(CSC) /out:TestSync.exe $(references) $(srcdir)/TestSync.cs
TestSyncCreate.exe: $(srcdir)/TestSyncCreate.cs $(assemblies)
$(CSC) /out:TestSyncCreate.exe $(references) $(srcdir)/TestSyncCreate.cs
TestSyncWrite.exe: $(srcdir)/TestSyncWrite.cs $(assemblies)
$(CSC) /out:TestSyncWrite.exe $(references) $(srcdir)/TestSyncWrite.cs
TestUnlink.exe: $(srcdir)/TestUnlink.cs $(assemblies)
$(CSC) /out:TestUnlink.exe $(references) $(srcdir)/TestUnlink.cs
TestVolumes.exe: $(srcdir)/TestVolumes.cs $(assemblies)
$(CSC) /out:TestVolumes.exe $(references) $(srcdir)/TestVolumes.cs
TestXfer.exe: $(srcdir)/TestXfer.cs $(assemblies)
$(CSC) /out:TestXfer.exe $(references) -r:Mono.GetOptions.dll $(srcdir)/TestXfer.cs

View File

@ -1,72 +0,0 @@
using GLib;
using Gnome.Vfs;
using System;
using System.Text;
using System.Threading;
namespace TestGnomeVfs {
public class TestAsync {
private static MainLoop loop;
private static Handle handle;
static void Main (string[] args)
{
if (args.Length != 1) {
Console.WriteLine ("Usage: TestAsync <uri>");
return;
}
Gnome.Vfs.Vfs.Initialize ();
Gnome.Vfs.Uri uri = new Gnome.Vfs.Uri (args[0]);
handle = Async.Open (uri, OpenMode.Read,
(int)Async.Priority.Default,
new Gnome.Vfs.AsyncCallback (OnOpen));
loop = new MainLoop ();
loop.Run ();
Gnome.Vfs.Vfs.Shutdown ();
}
private static void OnOpen (Handle handle, Result result)
{
Console.WriteLine ("Uri opened: {0}", result);
if (result != Result.Ok) {
loop.Quit ();
return;
}
byte[] buffer = new byte[1024];
Async.Read (handle, out buffer[0], (uint)buffer.Length,
new AsyncReadCallback (OnRead));
}
private static void OnRead (Handle handle, Result result, byte[] buffer,
ulong bytes_requested, ulong bytes_read)
{
Console.WriteLine ("Read: {0}", result);
if (result != Result.Ok && result != Result.ErrorEof) {
loop.Quit ();
return;
}
UTF8Encoding utf8 = new UTF8Encoding ();
Console.WriteLine ("read ({0} bytes) : '{1}'", bytes_read,
utf8.GetString (buffer, 0, (int)bytes_read));
if (bytes_read != 0)
Async.Read (handle, out buffer[0], (uint)buffer.Length,
new AsyncReadCallback (OnRead));
else
Async.Close (handle, new Gnome.Vfs.AsyncCallback (OnClose));
}
private static void OnClose (Handle handle, Result result)
{
Console.WriteLine ("Close: {0}", result);
loop.Quit ();
}
}
}

View File

@ -1,54 +0,0 @@
using GLib;
using Gnome.Vfs;
using System;
using System.IO;
using System.Text;
namespace TestGnomeVfs {
public class TestAsyncStream {
private static MainLoop loop;
private static byte[] buffer;
static void Main (string[] args)
{
if (args.Length != 1) {
Console.WriteLine ("Usage: TestAsyncStream <uri>");
return;
}
Gnome.Vfs.Vfs.Initialize ();
VfsStream stream = new VfsStream (args[0], FileMode.Open, true);
UTF8Encoding utf8 = new UTF8Encoding ();
buffer = new byte[1024];
int read;
while ((read = stream.Read (buffer, 0, buffer.Length)) != 0) {
Console.WriteLine ("read ({0} bytes) : '{1}'",
read, utf8.GetString (buffer, 0, read));
}
long offset = stream.Seek (0, SeekOrigin.Begin);
Console.WriteLine ("Offset after seek is {0}", offset);
buffer = new byte[1024];
IAsyncResult result = stream.BeginRead (buffer, 0, buffer.Length,
new System.AsyncCallback (OnReadComplete),
stream);
loop = new MainLoop ();
loop.Run ();
Gnome.Vfs.Vfs.Shutdown ();
}
private static void OnReadComplete (IAsyncResult result)
{
VfsStreamAsyncResult asyncResult = result as VfsStreamAsyncResult;
Console.WriteLine ("Read completed: {0}, {1}", asyncResult.IsCompleted, asyncResult.NBytes);
UTF8Encoding utf8 = new UTF8Encoding ();
Console.WriteLine (utf8.GetString (buffer, 0, buffer.Length));
loop.Quit ();
}
}
}

View File

@ -1,73 +0,0 @@
using GLib;
using Gnome.Vfs;
using System;
using System.Text;
namespace TestGnomeVfs {
public class TestCallback {
private static MainLoop loop;
static void Main (string[] args)
{
if (args.Length != 1) {
Console.WriteLine ("Usage: TestCallback <uri>");
return;
}
Gnome.Vfs.Vfs.Initialize ();
Gnome.Vfs.Uri uri = new Gnome.Vfs.Uri (args[0]);
Handle handle;
// Test 1: Attempt to access a URI requiring authentication w/o a callback registered.
try {
handle = Sync.Open (uri, OpenMode.Read);
Sync.Close (handle);
Console.WriteLine ("Uri '{0}' doesn't require authentication", uri);
return;
} catch (VfsException ex) {
if (ex.Result != Result.ErrorAccessDenied)
throw ex;
}
// Test 2: Attempt an open that requires authentication.
ModuleCallbackFullAuthentication cb = new ModuleCallbackFullAuthentication ();
cb.Callback += new ModuleCallbackHandler (OnAuthenticate);
cb.SetDefault ();
handle = Sync.Open (uri, OpenMode.Read);
Sync.Close (handle);
// Test 3: This call should not require any new authentication.
Console.WriteLine ("File info: \n{0}", uri.GetFileInfo ());
// Test 4: Attempt a call to the parent uri.
FileInfo[] entries = Directory.GetEntries (uri.Parent);
Console.WriteLine ("Directory '{0}' has {1} entries", uri.Parent, entries.Length);
// Test 5: Pop the authentication callback and try again.
cb.Pop ();
try {
handle = Sync.Open (uri, OpenMode.Read);
} catch (VfsException ex) {
if (ex.Result != Result.ErrorAccessDenied)
throw ex;
}
Gnome.Vfs.Vfs.Shutdown ();
}
private static void OnAuthenticate (ModuleCallback cb)
{
ModuleCallbackFullAuthentication fcb = cb as ModuleCallbackFullAuthentication;
Console.Write ("Enter your username ({0}): ", fcb.Username);
string username = Console.ReadLine ();
Console.Write ("Enter your password : ");
string passwd = Console.ReadLine ();
if (username.Length > 0)
fcb.Username = username;
fcb.Password = passwd;
}
}
}

View File

@ -1,53 +0,0 @@
using GLib;
using Gnome.Vfs;
using System;
using System.Text;
namespace TestGnomeVfs {
public class TestInfo {
private static MainLoop loop;
static void Main (string[] args)
{
if (args.Length != 1) {
Console.WriteLine ("Usage: TestDirectory <uri>");
return;
}
Gnome.Vfs.Vfs.Initialize ();
FileInfo[] entries = Gnome.Vfs.Directory.GetEntries (args[0]);
Console.WriteLine ("Directory {0} contains {1} entries:", args[0], entries.Length);
foreach (FileInfo info in entries) {
//Console.WriteLine (info.Name);
}
Gnome.Vfs.Directory.GetEntries (args[0], FileInfoOptions.Default,
20, (int)Gnome.Vfs.Async.Priority.Default,
new AsyncDirectoryLoadCallback (OnDirectoryLoad));
loop = new MainLoop ();
loop.Run ();
Gnome.Vfs.Vfs.Shutdown ();
}
private static void OnDirectoryLoad (Result result, FileInfo[] entries, uint entries_read)
{
Console.WriteLine ("DirectoryLoad: {0}", result);
if (result != Result.Ok && result != Result.ErrorEof) {
loop.Quit ();
return;
}
Console.WriteLine ("read {0} entries", entries_read);
foreach (FileInfo info in entries) {
//Console.WriteLine (info.Name);
}
if (result == Result.ErrorEof)
loop.Quit ();
}
}
}

View File

@ -1,27 +0,0 @@
using Gnome.Vfs;
using System;
using System.Text;
namespace TestGnomeVfs {
public class TestInfo {
static void Main (string[] args)
{
if (args.Length != 1) {
Console.WriteLine ("Usage: TestInfo <uri>");
return;
}
Gnome.Vfs.Vfs.Initialize ();
Gnome.Vfs.Uri uri = new Gnome.Vfs.Uri (args[0]);
FileInfoOptions options = FileInfoOptions.GetMimeType |
FileInfoOptions.FollowLinks |
FileInfoOptions.GetAccessRights;
FileInfo info = uri.GetFileInfo (options);
Console.WriteLine (info.ToString ());
Gnome.Vfs.Vfs.Shutdown ();
}
}
}

View File

@ -1,25 +0,0 @@
using Gnome.Vfs;
using System;
using System.Reflection;
using System.Runtime.CompilerServices;
namespace TestGnomeVfs {
public class TestMime {
static void Main (string[] args)
{
if (args.Length != 1) {
Console.WriteLine ("Usage: TestSync <uri>");
return;
}
Gnome.Vfs.Vfs.Initialize ();
Gnome.Vfs.Uri uri = new Gnome.Vfs.Uri (args[0]);
MimeType mimetype = uri.MimeType;
Console.WriteLine ("Uri `{0}' looks like ", uri, mimetype.Name);
Gnome.Vfs.Vfs.Shutdown ();
}
}
}

View File

@ -1,51 +0,0 @@
using GLib;
using Gnome.Vfs;
using System;
using System.Text;
namespace TestGnomeVfs {
public class TestMonitor {
static void Main (string[] args)
{
if (args.Length != 1) {
Console.WriteLine ("Usage: TestMonitor <uri>");
return;
}
Gnome.Vfs.Vfs.Initialize ();
Monitor monitor = new Monitor ();
monitor.Changed += OnChanged;
monitor.Deleted += OnDeleted;
monitor.Created += OnCreated;
monitor.MetadataChanged += OnMetadataChanged;
monitor.Add (args[0], MonitorType.Directory);
monitor.Add ("/tmp", MonitorType.Directory);
new MainLoop ().Run ();
Gnome.Vfs.Vfs.Shutdown ();
}
public static void OnChanged (string monitor, string uri)
{
Console.WriteLine ("Uri changed: {0}", uri);
}
public static void OnDeleted (string monitor, string uri)
{
Console.WriteLine ("Uri deleted: {0}", uri);
}
public static void OnCreated (string monitor, string uri)
{
Console.WriteLine ("Uri created: {0}", uri);
}
public static void OnMetadataChanged (string monitor, string uri)
{
Console.WriteLine ("Uri metadata changed: {0}", uri);
}
}
}

View File

@ -1,44 +0,0 @@
using Gnome.Vfs;
using System;
using System.Text;
namespace TestGnomeVfs {
public class TestSync {
static void Main (string[] args)
{
if (args.Length != 1) {
Console.WriteLine ("Usage: TestSync <uri>");
return;
}
Gnome.Vfs.Vfs.Initialize ();
Gnome.Vfs.Uri uri = new Gnome.Vfs.Uri (args[0]);
Handle handle = Sync.Open (uri, OpenMode.Read);
UTF8Encoding utf8 = new UTF8Encoding ();
byte[] buffer = new byte[1024];
Result result = Result.Ok;
while (result == Result.Ok) {
ulong bytesRead;
result = Sync.Read (handle, out buffer[0],
(ulong)buffer.Length, out bytesRead);
Console.WriteLine ("result read '{0}' = {1}", uri, result);
if (bytesRead == 0)
break;
Console.WriteLine ("read ({0} bytes) : '{1}'",
bytesRead, utf8.GetString (buffer, 0, (int)bytesRead));
}
string test;
result = Sync.FileControl (handle, "file:test", out test);
Console.WriteLine ("result filecontrol '{0}' = {1}", uri, result);
Console.WriteLine ("result file:test = {0}", test);
result = Sync.Close (handle);
Console.WriteLine ("result close '{0}' = {1}", uri, result);
Gnome.Vfs.Vfs.Shutdown ();
}
}
}

View File

@ -1,47 +0,0 @@
using Gnome.Vfs;
using System;
using System.Text;
namespace TestGnomeVfs {
public class TestSyncCreate {
static void Main (string[] args)
{
if (args.Length != 1) {
Console.WriteLine ("Usage: TestSyncCreate <uri>");
return;
}
Gnome.Vfs.Vfs.Initialize ();
Gnome.Vfs.Uri uri = new Gnome.Vfs.Uri (args[0]);
FilePermissions perms = FilePermissions.UserRead |
FilePermissions.UserWrite |
FilePermissions.GroupRead |
FilePermissions.OtherRead;
Console.WriteLine (perms);
Handle handle = Sync.Create (uri, OpenMode.Write, false, perms);
UTF8Encoding utf8 = new UTF8Encoding ();
Result result = Result.Ok;
Console.WriteLine ("Enter text and end with Ctrl-D");
while (result == Result.Ok) {
string line = Console.ReadLine ();
if (line == null)
break;
byte[] buffer = utf8.GetBytes (line);
ulong bytesWritten;
result = Sync.Write (handle, out buffer[0],
(ulong)buffer.Length, out bytesWritten);
Console.WriteLine ("result write '{0}' = {1}", uri, result);
Console.WriteLine ("{0} bytes written", bytesWritten);
}
result = Sync.Close (handle);
Console.WriteLine ("result close '{0}' = {1}", uri, result);
Gnome.Vfs.Vfs.Shutdown ();
}
}
}

View File

@ -1,36 +0,0 @@
using GLib;
using Gnome.Vfs;
using System;
using System.IO;
using System.Text;
namespace TestGnomeVfs {
public class TestSyncStream {
private static MainLoop loop;
static void Main (string[] args)
{
if (args.Length != 1) {
Console.WriteLine ("Usage: TestSyncStream <uri>");
return;
}
Gnome.Vfs.Vfs.Initialize ();
VfsStream stream = new VfsStream (args[0], FileMode.Open);
UTF8Encoding utf8 = new UTF8Encoding ();
byte[] buffer = new byte[1024];
int read;
while ((read = stream.Read (buffer, 0, buffer.Length)) != 0) {
Console.WriteLine ("read ({0} bytes) : '{1}'",
read, utf8.GetString (buffer, 0, read));
}
long offset = stream.Seek (0, SeekOrigin.Begin);
Console.WriteLine ("Offset after seek is {0}", offset);
Gnome.Vfs.Vfs.Shutdown ();
}
}
}

View File

@ -1,42 +0,0 @@
using Gnome.Vfs;
using System;
using System.Text;
namespace TestGnomeVfs {
public class TestSyncWrite {
static void Main (string[] args)
{
if (args.Length != 1) {
Console.WriteLine ("Usage: TestSyncWrite <uri>");
return;
}
Gnome.Vfs.Vfs.Initialize ();
Gnome.Vfs.Uri uri = new Gnome.Vfs.Uri (args[0]);
Handle handle = Sync.Open (uri, OpenMode.Write);
UTF8Encoding utf8 = new UTF8Encoding ();
Result result = Result.Ok;
Console.WriteLine ("Enter text and end with Ctrl-D");
while (result == Result.Ok) {
string line = Console.ReadLine ();
if (line == null)
break;
byte[] buffer = utf8.GetBytes (line);
ulong bytesWritten;
result = Sync.Write (handle, out buffer[0],
(ulong)buffer.Length, out bytesWritten);
Console.WriteLine ("result write '{0}' = {1}", uri, result);
Console.WriteLine ("{0} bytes written", bytesWritten);
}
result = Sync.Close (handle);
Console.WriteLine ("result close '{0}' = {1}", uri, result);
Gnome.Vfs.Vfs.Shutdown ();
}
}
}

View File

@ -1,23 +0,0 @@
using Gnome.Vfs;
using System;
namespace TestGnomeVfs {
public class TestUnlink {
static void Main (string[] args)
{
if (args.Length != 1) {
Console.WriteLine ("Usage: TestUnlink <uri>");
return;
}
Gnome.Vfs.Vfs.Initialize ();
Gnome.Vfs.Uri uri = new Gnome.Vfs.Uri (args[0]);
Result result = uri.Unlink ();
Console.WriteLine ("result unlink ('{0}') = {1}", uri, result);
Gnome.Vfs.Vfs.Shutdown ();
}
}
}

View File

@ -1,93 +0,0 @@
using Gnome.Vfs;
using System;
namespace TestGnomeVfs {
public class TestVolumes {
public TestVolumes ()
{
Gnome.Vfs.Vfs.Initialize ();
VolumeMonitor monitor = VolumeMonitor.Get ();
monitor.DriveConnected += new DriveConnectedHandler (OnDriveConnected);
monitor.DriveDisconnected += new DriveDisconnectedHandler (OnDriveDisconnected);
monitor.VolumeMounted += new VolumeMountedHandler (OnVolumeMounted);
monitor.VolumeUnmounted += new VolumeUnmountedHandler (OnVolumeUnmounted);
Volume[] vols = monitor.MountedVolumes;
Console.WriteLine ("Mounted volumes:");
foreach (Volume v in vols)
PrintVolume (v);
Drive[] drives = monitor.ConnectedDrives;
Console.WriteLine ("\nConnected drives:");
foreach (Drive d in drives)
PrintDrive (d);
Console.WriteLine ("\nWaiting for volume events...");
GLib.MainLoop loop = new GLib.MainLoop ();
loop.Run ();
Gnome.Vfs.Vfs.Shutdown ();
}
public void PrintDrive (Drive d)
{
Console.WriteLine ("Drive:");
Console.WriteLine (" ActivationUri: {0}", d.ActivationUri);
Console.WriteLine (" DevicePath: {0}", d.DevicePath);
Console.WriteLine (" DeviceType: {0}", d.DeviceType);
Console.WriteLine (" DisplayName: {0}", d.DisplayName);
Console.WriteLine (" Icon: {0}", d.Icon);
Console.WriteLine (" Id: {0}", d.Id);
Console.WriteLine (" IsConnected: {0}", d.IsConnected);
Console.WriteLine (" IsMounted: {0}", d.IsMounted);
Console.WriteLine (" IsUserVisible: {0}", d.IsUserVisible);
}
public void PrintVolume (Volume v)
{
Console.WriteLine ("Volume:");
Console.WriteLine (" ActivationUri: {0}", v.ActivationUri);
Console.WriteLine (" DevicePath: {0}", v.DevicePath);
Console.WriteLine (" DeviceType: {0}", v.DeviceType);
Console.WriteLine (" DisplayName: {0}", v.DisplayName);
Console.WriteLine (" FilesystemType: {0}", v.FilesystemType);
Console.WriteLine (" HandlesTrash: {0}", v.HandlesTrash);
Console.WriteLine (" Icon: {0}", v.Icon);
Console.WriteLine (" Id: {0}", v.Id);
Console.WriteLine (" IsMounted: {0}", v.IsMounted);
Console.WriteLine (" IsReadOnly: {0}", v.IsReadOnly);
Console.WriteLine (" IsUserVisible: {0}", v.IsUserVisible);
Console.WriteLine (" VolumeType: {0}", v.VolumeType);
}
static void Main (string[] args)
{
new TestVolumes ();
}
public void OnDriveConnected (object o, DriveConnectedArgs args)
{
Console.WriteLine ("Drive connected:");
PrintDrive (args.Drive);
}
public void OnDriveDisconnected (object o, DriveDisconnectedArgs args)
{
Console.WriteLine ("Drive disconnected:");
PrintDrive (args.Drive);
}
public void OnVolumeMounted (object o, VolumeMountedArgs args)
{
Console.WriteLine ("Volume mounted:");
PrintVolume (args.Volume);
}
public void OnVolumeUnmounted (object o, VolumeUnmountedArgs args)
{
Console.WriteLine ("Volume unmounted:");
PrintVolume (args.Volume);
}
}
}

View File

@ -1,164 +0,0 @@
using Gnome.Vfs;
using Mono.GetOptions;
using System;
using System.Reflection;
using System.Runtime.CompilerServices;
[assembly: AssemblyTitle("TestXfer")]
[assembly: AssemblyDescription("Test case for the Gnome.Vfs.Xfer class")]
[assembly: AssemblyCopyright("(C) 2004 Jeroen Zwartepoorte")]
[assembly: Mono.About("Distributed under the GPL")]
[assembly: Mono.UsageComplement("<src> <target>")]
[assembly: Mono.Author("Jeroen Zwartepoorte")]
[assembly: AssemblyVersion("1.0.*")]
namespace TestGnomeVfs {
class TestXferOptions : Options {
[Option("Copy directories recursively", 'r')]
public bool recursive = false;
[Option("Follow symlinks", 'L', "follow-symlinks")]
public bool followSymlinks = false;
[Option("Follow symlinks recursively", 'Z', "recursive-symlinks")]
public bool recursiveSymlinks = false;
[Option("Replace files automatically", 'R')]
public bool replace = false;
[Option("Delete source files", 'd', "delete-source")]
public bool deleteSource = false;
public TestXferOptions ()
{
ParsingMode = OptionsParsingMode.Both;
}
public override WhatToDoNext DoHelp ()
{
base.DoHelp();
return WhatToDoNext.AbandonProgram;
}
[Option("Show usage syntax", 'u', "usage")]
public override WhatToDoNext DoUsage()
{
base.DoUsage();
return WhatToDoNext.AbandonProgram;
}
}
public class TestXfer {
static void Main (string[] args)
{
TestXferOptions opt = new TestXferOptions ();
opt.ProcessArgs (args);
if (opt.RemainingArguments.Length < 2) {
opt.DoUsage ();
return;
}
XferOptions options = XferOptions.Default;
XferOverwriteMode overwriteMode = XferOverwriteMode.Query;
if (opt.recursive) {
Console.WriteLine ("Warning: Recursive xfer of directories.");
options |= XferOptions.Recursive;
}
if (opt.followSymlinks) {
Console.WriteLine ("Warning: Following symlinks.");
options |= XferOptions.FollowLinks;
}
if (opt.recursiveSymlinks) {
Console.WriteLine ("Warning: Following symlinks recursively.");
options |= XferOptions.FollowLinksRecursive;
}
if (opt.replace) {
Console.WriteLine ("Warning: Using replace overwrite mode.");
overwriteMode = XferOverwriteMode.Replace;
}
if (opt.deleteSource) {
Console.WriteLine ("Warning: Removing source files.");
options |= XferOptions.Removesource;
}
Gnome.Vfs.Vfs.Initialize ();
Gnome.Vfs.Uri source = new Gnome.Vfs.Uri (opt.RemainingArguments[0]);
Console.WriteLine ("Source: `{0}'", source);
Gnome.Vfs.Uri target = new Gnome.Vfs.Uri (opt.RemainingArguments[1]);
Console.WriteLine ("Target: `{0}'", target);
Result result = Xfer.XferUri (source, target, options,
XferErrorMode.Query,
overwriteMode,
new XferProgressCallback (OnProgress));
Console.WriteLine ("Result: {0}", Gnome.Vfs.Vfs.ResultToString (result));
Gnome.Vfs.Vfs.Shutdown ();
}
public static int OnProgress (XferProgressInfo info)
{
switch (info.Status) {
case XferProgressStatus.Vfserror:
Console.WriteLine ("Vfs error: {0}",
Gnome.Vfs.Vfs.ResultToString (info.VfsStatus));
break;
case XferProgressStatus.Overwrite:
Console.WriteLine ("Overwriting `{0}' with `{1}'",
info.TargetName, info.SourceName);
break;
case XferProgressStatus.Ok:
Console.WriteLine ("Status: Ok");
switch (info.Phase) {
case XferPhase.PhaseInitial:
Console.WriteLine ("Initial phase");
return 1;
case XferPhase.PhaseCollecting:
Console.WriteLine ("Collecting file list");
return 1;
case XferPhase.PhaseReadytogo:
Console.WriteLine ("Ready to go!");
return 1;
case XferPhase.PhaseOpensource:
Console.WriteLine ("Opening source");
return 1;
case XferPhase.PhaseOpentarget:
Console.WriteLine ("Opening target");
return 1;
case XferPhase.PhaseCopying:
Console.WriteLine ("Transferring `{0}' to `{1}' " +
"(file {2}/{3}, byte {4}/{5} in file, " +
"{6}/{7} total", info.SourceName,
info.TargetName, info.FileIndex,
info.FilesTotal, (long)info.BytesCopied,
(long)info.FileSize, info.TotalBytesCopied,
info.BytesTotal);
break;
case XferPhase.PhaseClosesource:
Console.WriteLine ("Closing source");
return 1;
case XferPhase.PhaseClosetarget:
Console.WriteLine ("Closing target");
return 1;
case XferPhase.PhaseFilecompleted:
Console.WriteLine ("Done with `{0}' -> `{1}', going next",
info.SourceName, info.TargetName);
return 1;
case XferPhase.PhaseCompleted:
Console.WriteLine ("All done.");
return 1;
default:
Console.WriteLine ("Unexpected phase: {0}", info.Phase);
return 1; // Keep going anyway.
}
break;
case XferProgressStatus.Duplicate:
break;
}
return 0;
}
}
}