Esempio n. 1
0
        private void FileCopyFlags_SelectedValueChanged(object sender, EventArgs e)
        {
            for (int i = 0; i < FileCopyFlags.Items.Count; i++)
            {
                switch (i)
                {
                case 0:
                    ProfileManager.CurrentProfile.FileCopyFlags.Data = FileCopyFlags.GetItemChecked(i);
                    break;

                case 1:
                    ProfileManager.CurrentProfile.FileCopyFlags.Attributes = FileCopyFlags.GetItemChecked(i);
                    break;

                case 2:
                    ProfileManager.CurrentProfile.FileCopyFlags.TimeStamps = FileCopyFlags.GetItemChecked(i);
                    break;

                case 3:
                    ProfileManager.CurrentProfile.FileCopyFlags.Security = FileCopyFlags.GetItemChecked(i);
                    break;

                case 4:
                    ProfileManager.CurrentProfile.FileCopyFlags.Owner = FileCopyFlags.GetItemChecked(i);
                    break;

                case 5:
                    ProfileManager.CurrentProfile.FileCopyFlags.Auditing = FileCopyFlags.GetItemChecked(i);
                    break;
                }
            }
        }
Esempio n. 2
0
        static void Recursive_Copy(GLib.File source, GLib.File dest, FileCopyFlags flags, ref long copiedBytes, long totalBytes, FileProgressCallback progress_cb)
        {
            if (IO.File.Exists(source.Path))
            {
                source.Copy(dest, flags, null, (current, total) => {
                    progress_cb.Invoke(current, totalBytes);
                });
                return;
            }

            foreach (GLib.File subdir in source.SubDirs())
            {
                dest.GetChild(subdir.Basename).MakeDirectoryWithParents(null);
                // if it's a directory, continue the recursion
                Recursive_Copy(subdir, dest.GetChild(subdir.Basename), flags, ref copiedBytes, totalBytes, progress_cb);
            }

            foreach (File child in source.GetFiles())
            {
                long copied = copiedBytes;

                child.Copy(dest.GetChild(child.Basename), flags, null, (current, total) => {
                    progress_cb.Invoke(copied + current, totalBytes);
                });
                copiedBytes += child.GetSize();
            }
        }
Esempio n. 3
0
        // This is the recursive equivalent of GLib.File.Copy ()
        /// <summary>
        /// Recursive equivalent to GLib.File.Copy () when called on a directory.
        /// Functionally equivalent to GLib.File.Copy () when called on files.
        /// </summary>
        /// <param name="source">
        /// A <see cref="GLib.File"/>
        /// </param>
        /// <param name="dest">
        /// A <see cref="GLib.File"/>
        /// </param>
        /// <param name="flags">
        /// A <see cref="FileCopyFlags"/>
        /// </param>
        /// <param name="progress_cb">
        /// A <see cref="FileProgressCallback"/>
        /// </param>
        public static void Copy_Recurse(this GLib.File source, GLib.File dest, FileCopyFlags flags, FileProgressCallback progress_cb)
        {
            long totalBytes  = source.GetSize();
            long copiedBytes = 0;

            Recursive_Copy(source, dest, flags, ref copiedBytes, totalBytes, progress_cb);
        }
Esempio n. 4
0
        private void SettingsForm_Load(object sender, EventArgs e)
        {
            ProfileName.Text          = ProfileManager.CurrentName;
            FileFilter.Text           = ProfileManager.CurrentProfile.FileFilter;
            EnableRestartMode.Checked = ProfileManager.CurrentProfile.EnableRestartMode;
            EnableBackupMode.Checked  = ProfileManager.CurrentProfile.EnableBackupMode;
            UseUnbufferedIo.Checked   = ProfileManager.CurrentProfile.UseUnbufferedIo;
            if (ProfileManager.CurrentProfile.Mirror)
            {
                Mirror.Checked             = true;
                CopySubdirectories.Checked = true;
                CopySubdirectoriesIncludingEmpty.Checked = true;
                Purge.Checked = true;
                CopySubdirectories.Enabled = false;
                CopySubdirectoriesIncludingEmpty.Enabled = false;
                Purge.Enabled = false;
            }
            else
            {
                CopySubdirectories.Checked = ProfileManager.CurrentProfile.CopySubdirectories;
                CopySubdirectoriesIncludingEmpty.Checked = ProfileManager.CurrentProfile.CopySubdirectoriesIncludingEmpty;
                Purge.Checked = ProfileManager.CurrentProfile.Purge;
            }
            Depth.Value       = ProfileManager.CurrentProfile.Depth;
            MoveFiles.Checked = ProfileManager.CurrentProfile.MoveFiles;
            MoveFilesAndDirectories.Checked    = ProfileManager.CurrentProfile.MoveFilesAndDirectories;
            CreateDirectoryAndFileTree.Checked = ProfileManager.CurrentProfile.CreateDirectoryAndFileTree;
            FatFiles.Checked = ProfileManager.CurrentProfile.FatFiles;
            TurnLongPathSupportOff.Checked     = ProfileManager.CurrentProfile.TurnLongPathSupportOff;
            CopySymbolicLink.Checked           = ProfileManager.CurrentProfile.CopySymobolicLink;
            DoNotUseWindowsCopyOffload.Checked = ProfileManager.CurrentProfile.DoNotUseWindowsCopyOffload;
            CheckPerFile.Checked = ProfileManager.CurrentProfile.CheckPerFile;
            if (ProfileManager.CurrentProfile.EnableEfsRawMode || ProfileManager.CurrentProfile.InterPacketGap > 0)
            {
                UseEfwRawMode.Checked       = ProfileManager.CurrentProfile.EnableEfsRawMode;
                InterPacketGap.Value        = ProfileManager.CurrentProfile.InterPacketGap;
                MultiThreadedCopies.Enabled = false;
            }
            else if (ProfileManager.CurrentProfile.MultiThreadedCopiesCount > 0)
            {
                MultiThreadedCopies.Value = ProfileManager.CurrentProfile.MultiThreadedCopiesCount;
                UseEfwRawMode.Enabled     = false;
                InterPacketGap.Enabled    = false;
            }
            RetryCount.Value    = ProfileManager.CurrentProfile.RetryCount;
            RetryWaitTime.Value = ProfileManager.CurrentProfile.RetryWaitTime;

            // File Copy Flags
            if (ProfileManager.CurrentProfile.FileCopyFlags.Data)
            {
                FileCopyFlags.SetItemChecked(0, true);
            }
            if (ProfileManager.CurrentProfile.FileCopyFlags.Attributes)
            {
                FileCopyFlags.SetItemChecked(1, true);
            }
            if (ProfileManager.CurrentProfile.FileCopyFlags.TimeStamps)
            {
                FileCopyFlags.SetItemChecked(2, true);
            }
            if (ProfileManager.CurrentProfile.FileCopyFlags.Security)
            {
                FileCopyFlags.SetItemChecked(3, true);
            }
            if (ProfileManager.CurrentProfile.FileCopyFlags.Owner)
            {
                FileCopyFlags.SetItemChecked(4, true);
            }
            if (ProfileManager.CurrentProfile.FileCopyFlags.Auditing)
            {
                FileCopyFlags.SetItemChecked(5, true);
            }

            // Directory Copy Flags
            if (ProfileManager.CurrentProfile.DirectoryCopyFlags.Data)
            {
                DirectoryCopyFlags.SetItemChecked(0, true);
            }
            if (ProfileManager.CurrentProfile.DirectoryCopyFlags.Attributes)
            {
                DirectoryCopyFlags.SetItemChecked(1, true);
            }
            if (ProfileManager.CurrentProfile.DirectoryCopyFlags.TimeStamps)
            {
                DirectoryCopyFlags.SetItemChecked(2, true);
            }

            // Add Attributes
            if (ProfileManager.CurrentProfile.AddAttributes.ReadOnly)
            {
                AddAttributes.SetItemChecked(0, true);
            }
            if (ProfileManager.CurrentProfile.AddAttributes.Archive)
            {
                AddAttributes.SetItemChecked(1, true);
            }
            if (ProfileManager.CurrentProfile.AddAttributes.System)
            {
                AddAttributes.SetItemChecked(2, true);
            }
            if (ProfileManager.CurrentProfile.AddAttributes.Hidden)
            {
                AddAttributes.SetItemChecked(3, true);
            }
            if (ProfileManager.CurrentProfile.AddAttributes.Compressed)
            {
                AddAttributes.SetItemChecked(4, true);
            }
            if (ProfileManager.CurrentProfile.AddAttributes.NotContentIndexed)
            {
                AddAttributes.SetItemChecked(5, true);
            }
            if (ProfileManager.CurrentProfile.AddAttributes.Encrypted)
            {
                AddAttributes.SetItemChecked(6, true);
            }
            if (ProfileManager.CurrentProfile.AddAttributes.Temporary)
            {
                AddAttributes.SetItemChecked(7, true);
            }
            if (ProfileManager.CurrentProfile.AddAttributes.Offline)
            {
                AddAttributes.SetItemChecked(8, true);
            }

            // Remove Attributes
            if (ProfileManager.CurrentProfile.RemoveAttributes.ReadOnly)
            {
                RemoveAttributes.SetItemChecked(0, true);
            }
            if (ProfileManager.CurrentProfile.RemoveAttributes.Archive)
            {
                RemoveAttributes.SetItemChecked(1, true);
            }
            if (ProfileManager.CurrentProfile.RemoveAttributes.System)
            {
                RemoveAttributes.SetItemChecked(2, true);
            }
            if (ProfileManager.CurrentProfile.RemoveAttributes.Hidden)
            {
                RemoveAttributes.SetItemChecked(3, true);
            }
            if (ProfileManager.CurrentProfile.RemoveAttributes.Compressed)
            {
                RemoveAttributes.SetItemChecked(4, true);
            }
            if (ProfileManager.CurrentProfile.RemoveAttributes.NotContentIndexed)
            {
                RemoveAttributes.SetItemChecked(5, true);
            }
            if (ProfileManager.CurrentProfile.RemoveAttributes.Encrypted)
            {
                RemoveAttributes.SetItemChecked(6, true);
            }
            if (ProfileManager.CurrentProfile.RemoveAttributes.Temporary)
            {
                RemoveAttributes.SetItemChecked(7, true);
            }
            if (ProfileManager.CurrentProfile.RemoveAttributes.Offline)
            {
                RemoveAttributes.SetItemChecked(8, true);
            }

            // Events
            EnableRestartMode.CheckedChanged += new EventHandler(EnableRestartMode_CheckedChanged);
            EnableBackupMode.CheckedChanged  += new EventHandler(EnableBackupMode_CheckedChanged);
            UseEfwRawMode.CheckedChanged     += new EventHandler(UseEfwRawMode_CheckedChanged);
            UseUnbufferedIo.CheckedChanged   += new EventHandler(UseUnbufferedIo_CheckedChanged);
            CopySubdirectoriesIncludingEmpty.CheckedChanged += new EventHandler(CopySubdirectoriesIncludingEmpty_CheckedChanged);
            Purge.CheckedChanged += new EventHandler(Purge_CheckedChanged);
            CopySubdirectories.CheckedChanged         += new EventHandler(CopySubdirectories_CheckedChanged);
            Mirror.CheckedChanged                     += new EventHandler(Mirror_CheckedChanged);
            FileFilter.TextChanged                    += new EventHandler(FileFilter_TextChanged);
            RemoveAttributes.SelectedValueChanged     += new EventHandler(RemoveAttributes_SelectedValueChanged);
            AddAttributes.SelectedValueChanged        += new EventHandler(AddAttributes_SelectedValueChanged);
            DirectoryCopyFlags.SelectedValueChanged   += new EventHandler(DirectoryCopyFlags_SelectedValueChanged);
            FileCopyFlags.SelectedValueChanged        += new EventHandler(FileCopyFlags_SelectedValueChanged);
            CheckPerFile.CheckedChanged               += new EventHandler(CheckPerFile_CheckedChanged);
            InterPacketGap.ValueChanged               += new EventHandler(InterPacketGap_ValueChanged);
            MultiThreadedCopies.ValueChanged          += new EventHandler(MultiThreadedCopies_ValueChanged);
            DoNotUseWindowsCopyOffload.CheckedChanged += new EventHandler(DoNotUseWindowsCopyOffload_CheckedChanged);
            CopySymbolicLink.CheckedChanged           += new EventHandler(CopySymbolicLink_CheckedChanged);
            TurnLongPathSupportOff.CheckedChanged     += new EventHandler(TurnLongPathSupportOff_CheckedChanged);
            FatFiles.CheckedChanged                   += new EventHandler(FatFiles_CheckedChanged);
            UseEfwRawMode.CheckedChanged              += new EventHandler(UseEfwRawMode_CheckedChanged);
            CreateDirectoryAndFileTree.CheckedChanged += new EventHandler(CreateDirectoryAndFileTree_CheckedChanged);
            MoveFilesAndDirectories.CheckedChanged    += new EventHandler(MoveFilesAndDirectories_CheckedChanged);
            MoveFiles.CheckedChanged                  += new EventHandler(MoveFiles_CheckedChanged);
            Depth.ValueChanged         += new EventHandler(Depth_ValueChanged);
            RetryCount.ValueChanged    += new EventHandler(RetryCount_ValueChanged);
            RetryWaitTime.ValueChanged += new EventHandler(RetryWaitTime_ValueChanged);
        }