/// <summary>
        /// Move the selected files to the desired directory.
        /// </summary>
        /// <param name="repository">
        /// The <see cref="Repository"/> to move the files in.
        /// </param>
        /// <param name="command">
        /// The options to the drag_move method.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// <para><paramref name="repository"/> is <c>null</c>.</para>
        /// <para>- or -</para>
        /// <para><paramref name="command"/> is <c>null</c>.</para>
        /// </exception>
        /// <remarks>
        /// This command is only available for the <see cref="GuiClientType.PyQT"/> client type.
        /// </remarks>
        public static void DragMoveGui(this Repository repository, DragMoveGuiCommand command)
        {
            if (repository == null)
                throw new ArgumentNullException("repository");
            if (command == null)
                throw new ArgumentNullException("command");

            repository.Execute(command);
        }
        /// <summary>
        /// Move the selected files to the desired directory.
        /// </summary>
        /// <param name="repository">
        /// The <see cref="Repository"/> to move the files in.
        /// </param>
        /// <param name="file">
        /// The file to move.
        /// </param>
        /// <param name="destination">
        /// The destination directory.
        /// </param>
        /// <param name="command">
        /// Any extra options to the drag_move method, or <c>null</c> for default options.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// <para><paramref name="repository"/> is <c>null</c>.</para>
        /// <para>- or -</para>
        /// <para><paramref name="file"/> is <c>null</c> or empty.</para>
        /// </exception>
        /// <exception cref="ArgumentException">
        /// <para><see cref="DragCopyMoveGuiCommandBase{T}.Destination"/> cannot be set before calling this method.</para>
        /// </exception>
        /// <remarks>
        /// This command is only available for the <see cref="GuiClientType.PyQT"/> client type.
        /// </remarks>
        public static void DragMoveGui(this Repository repository, string file, string destination, DragMoveGuiCommand command = null)
        {
            if (repository == null)
                throw new ArgumentNullException("repository");
            if (StringEx.IsNullOrWhiteSpace(file))
                throw new ArgumentNullException("file");
            if (StringEx.IsNullOrWhiteSpace(destination))
                throw new ArgumentNullException("destination");
            if (command != null && !StringEx.IsNullOrWhiteSpace(command.Destination))
                throw new ArgumentException("DragMoveGuiCommand.Destination cannot be set before calling this method", "command");

            command = (command ?? new DragMoveGuiCommand())
                .WithSourceFiles(file)
                .WithDestination(destination);

            repository.Execute(command);
        }