protected virtual BrowseResult BrowseFolder(BrowseOptions options)
        {
            var result = default(BrowseResult);

            Windows.Invoke(() =>
            {
                //TODO: Use only WPF frameworks.
                using (var dialog = new global::System.Windows.Forms.FolderBrowserDialog())
                {
                    dialog.Description = options.Title;
                    if (Directory.Exists(options.Path))
                    {
                        dialog.SelectedPath = options.Path;
                    }
                    var window  = Windows.ActiveWindow;
                    var success = default(bool);
                    switch (dialog.ShowDialog(new Win32Window(window.GetHandle())))
                    {
                    case global::System.Windows.Forms.DialogResult.OK:
                        success = true;
                        break;
                    }
                    result = new BrowseResult(new[] { dialog.SelectedPath }, success);
                }
                //TODO: Bad .Wait().
            }).Wait();
            return(result);
        }
Example #2
0
 public bool GetBrowseFolder(string fileName, out string directoryName)
 {
     lock (SyncRoot)
     {
         if (string.IsNullOrEmpty(this._BrowseFolder))
         {
             var path = default(string);
             if (FileSystemHelper.IsLocalPath(fileName))
             {
                 path = Path.GetDirectoryName(fileName);
             }
             var options = new BrowseOptions(
                 "Save As",
                 path,
                 Enumerable.Empty <BrowseFilter>(),
                 BrowseFlags.Folder
                 );
             var result = this.FileSystemBrowser.Browse(options);
             if (!result.Success)
             {
                 Logger.Write(this, LogLevel.Debug, "Save As folder browse dialog was cancelled.");
                 directoryName = null;
                 return(false);
             }
             this._BrowseFolder = result.Paths.FirstOrDefault();
             Logger.Write(this, LogLevel.Debug, "Browse folder: {0}", this._BrowseFolder);
         }
     }
     directoryName = this._BrowseFolder;
     return(true);
 }
Example #3
0
        public Task OpenCue()
        {
            var options = new BrowseOptions(
                "Open",
                string.Empty,
                new[]
            {
                new BrowseFilter("Cue sheets", new[]
                {
                    CUE
                })
            },
                BrowseFlags.File
                );
            var result = this.FileSystemBrowser.Browse(options);

            if (!result.Success)
            {
#if NET40
                return(TaskEx.FromResult(false));
#else
                return(Task.CompletedTask);
#endif
            }
            return(this.OpenCue(this.PlaylistManager.SelectedPlaylist, result.Paths.FirstOrDefault()));
        }
Example #4
0
        public void NegotiateBrowseIssueParametersReturnsFailureForMissingProject(BrowseOptions options)
        {
            options.Project = "";
            var sut = new IssueParametersNegotiator();

            sut.NegotiateBrowseParameters(options, "").IsFailure.Should().BeTrue();
        }
        protected virtual BrowseResult BrowseFile(BrowseOptions options)
        {
            var result = default(BrowseResult);

            Windows.Invoke(() =>
            {
                var dialog = new OpenFileDialog()
                {
                    Title       = options.Title,
                    Filter      = GetFilter(options.Filters),
                    Multiselect = options.Flags.HasFlag(BrowseFlags.Multiselect),
                };
                if (File.Exists(options.Path))
                {
                    dialog.InitialDirectory = Path.GetDirectoryName(options.Path);
                    dialog.FileName         = options.Path;
                }
                else if (Directory.Exists(options.Path))
                {
                    dialog.InitialDirectory = options.Path;
                }
                var window  = Windows.ActiveWindow;
                var success = dialog.ShowDialog(window);
                result      = new BrowseResult(dialog.FileNames, success.GetValueOrDefault());
                //TODO: Bad .Wait().
            }).Wait();
            return(result);
        }
Example #6
0
        public void Browse()
        {
            var directoryName = this.Sources.Select(
                playlistItem => playlistItem.DirectoryName
                ).FirstOrDefault();

            if (string.IsNullOrEmpty(directoryName))
            {
                directoryName = MyPictures;
            }
            var options = new BrowseOptions(
                "Select Artwork",
                directoryName,
                new[]
            {
                new BrowseFilter("Images", ArtworkProvider.EXTENSIONS)
            },
                BrowseFlags.File
                );
            var result = FileSystemBrowser.Browse(options);

            if (!result.Success)
            {
                return;
            }
            this.Value = result.Paths.FirstOrDefault();
        }
Example #7
0
        public void NegotiateBrowseIssueParametersCreatesParametersFromOptions(BrowseOptions options, string defaultProject)
        {
            var sut = new IssueParametersNegotiator();

            sut.NegotiateBrowseParameters(options, defaultProject).Value.Should().Match <BrowseParameters>(o =>
                                                                                                           o.IssueId == options.Id &&
                                                                                                           o.Project == options.Project);
        }
        public PropertyObject(SerializationInfo info, StreamingContext context) : base(info, context)
        {
            Category     = info.GetString(nameof(Category));
            Description  = info.GetString(nameof(Description));
            DisplayName  = info.GetString(nameof(DisplayName));
            BrowseOption = (BrowseOptions)info.GetValue(nameof(BrowseOption), typeof(BrowseOptions));

            //TODO : Serialize validation also
            Validation = (ValidatorGroup)info.GetValue(nameof(Validation), typeof(ValidatorGroup));
        }
        /// <summary>
        /// Set <see cref="PropertyObject.BrowseOption"/> of the <see cref="PropertyObject"/>
        /// identified by name.
        /// </summary>
        /// <param name="property">name of <see cref="PropertyObject"/> to update BrowseOption</param>
        /// <param name="option"></param>
        public bool SetBrowseOptions(string property, BrowseOptions option)
        {
            if (this.FindRecursive(property) is PropertyObject di)
            {
                di.BrowseOption = option;
                return(true);
            }

            return(false);
        }
        public Result <BrowseParameters> NegotiateBrowseParameters(BrowseOptions options, string defaultProject)
        {
            var project = GetProject(options, defaultProject);

            if (project.IsFailure)
            {
                return(Fail <BrowseParameters>(project));
            }

            return(Ok(new BrowseParameters(project.Value, options.Id)));
        }
 public BrowseResult Browse(BrowseOptions options)
 {
     if (options.Flags.HasFlag(BrowseFlags.File))
     {
         return(this.BrowseFile(options));
     }
     if (options.Flags.HasFlag(BrowseFlags.Folder))
     {
         return(this.BrowseFolder(options));
     }
     throw new NotImplementedException();
 }
        public static BrowseOptions GetBrowseOption(this PropertyInfo info)
        {
            BrowseOptions browseOption = BrowseOptions.Browsable;

            if (info.GetCustomAttribute <BrowsableAttribute>() is BrowsableAttribute ba)
            {
                browseOption = ba.Browsable ? BrowseOptions.Browsable : BrowseOptions.NonBrowsable;
            }
            else if (info.GetCustomAttribute <ReadOnlyAttribute>() is ReadOnlyAttribute ra)
            {
                browseOption = ra.IsReadOnly ? BrowseOptions.NonEditable : BrowseOptions.Browsable;
            }

            return(browseOption);
        }
Example #13
0
        public async Task <LoadResult> BrowseAndLoad(BrowseOptions options)
        {
            LoadResult result       = null;
            var        browseResult = await Browse(options);

            List <LoadItem> items = new List <LoadItem>();

            for (int i = 0; i < browseResult.List.Count; i += 100)
            {
                result = await Load(new LoadOptions { Hierarchy = options.Hierarchy, Offset = i, SetDisplayOffset = i });

                items.AddRange(result.Items);
            }
            result.Items = items.ToArray();
            return(result);
        }
        protected virtual void BrowseFolder()
        {
            var browser = ComponentRegistry.Instance.GetComponent <IFileSystemBrowser>();

            if (browser == null)
            {
                return;
            }
            var options = new BrowseOptions(this.Element.Name, this.Element.Value, Enumerable.Empty <BrowseFilter>(), BrowseFlags.Folder);
            var result  = browser.Browse(options);

            if (!result.Success)
            {
                return;
            }
            this.Element.Value = result.Paths.FirstOrDefault();
        }
        public void Instantiates_Properly(int timeout)
        {
            void Action(BrowseProgressUpdatedEventArgs args)
            {
                // noop
            }

            BrowseOptions o = null;

            var ex = Record.Exception(() => o = new BrowseOptions(timeout, Action));

            Assert.Null(ex);
            Assert.NotNull(o);

            Assert.Equal(timeout, o.ResponseTimeout);
            Assert.Equal(Action, o.ProgressUpdated);
        }
        public async Task Visit(BrowseOptions options)
        {
            if (!ValidateConfiguration())
            {
                return;
            }

            var parameters = _parametersHandler.NegotiateBrowseParameters(options);

            if (parameters.IsSuccess)
            {
                await _issueBrowseHandler.Browse(parameters.Value);
            }
            else
            {
                ShowError(parameters);
            }
        }
        /// <summary>
        /// Implementation for <see cref="DataObject.ReadXmlAttributes(XmlReader)"/>
        /// </summary>
        /// <param name="reader"></param>
        protected override void ReadXmlAttributes(XmlReader reader)
        {
            // do base implementation
            base.ReadXmlAttributes(reader);

            // read browse option
            if (reader.GetAttribute(BROWSE_ATTRIBUTE) is string attr)
            {
                BrowseOption = (BrowseOptions)Enum.Parse(typeof(BrowseOptions), attr);
            }
            else
            {
                BrowseOption = BrowseOptions.Browsable;
            }

            // read category
            if (reader.GetAttribute(CATEGORY_ATTRIBUTE) is string category)
            {
                Category = category;
            }
        }
 protected override void InitializeComponent(ICore core)
 {
     global::FoxTunes.BackgroundTask.ActiveChanged += this.OnActiveChanged;
     this.LibraryManager        = core.Managers.Library;
     this.HierarchyManager      = core.Managers.Hierarchy;
     this.DatabaseFactory       = core.Factories.Database;
     this.FileSystemBrowser     = core.Components.FileSystemBrowser;
     this.SignalEmitter         = core.Components.SignalEmitter;
     this.SignalEmitter.Signal += this.OnSignal;
     this.ErrorEmitter          = core.Components.ErrorEmitter;
     this.LibraryRoots          = new CollectionManager <LibraryRoot>()
     {
         ItemFactory = () =>
         {
             var options = new BrowseOptions(Strings.LibraryRootsSettings_Browse, default(string), Enumerable.Empty <BrowseFilter>(), BrowseFlags.Folder);
             var result  = this.FileSystemBrowser.Browse(options);
             if (!result.Success)
             {
                 return(null);
             }
             var directoryName = result.Paths.FirstOrDefault();
             if (this.LibraryRoots.ItemsSource.Any(libraryRoot => string.Equals(libraryRoot.DirectoryName, directoryName, StringComparison.OrdinalIgnoreCase)))
             {
                 //Don't allow duplicates.
                 return(null);
             }
             using (var database = this.DatabaseFactory.Create())
             {
                 return(database.Set <LibraryRoot>().Create().With(libraryHierarchyLevel =>
                 {
                     libraryHierarchyLevel.DirectoryName = directoryName;
                 }));
             }
         }
     };
     this.Dispatch(this.Refresh);
     base.InitializeComponent(core);
 }
        protected virtual void BrowseFolder()
        {
            var browser = ComponentRegistry.Instance.GetComponent <IFileSystemBrowser>();

            if (browser == null)
            {
                return;
            }
            var path = default(string);

            if (!string.IsNullOrEmpty(this.Element.Value) && FileSystemHelper.IsLocalPath(this.Element.Value))
            {
                path = this.Element.Value;
            }
            var options = new BrowseOptions(this.Element.Name, path, Enumerable.Empty <BrowseFilter>(), BrowseFlags.Folder);
            var result  = browser.Browse(options);

            if (!result.Success)
            {
                return;
            }
            this.Element.Value = result.Paths.FirstOrDefault();
        }
        public Task OpenArchive()
        {
            var options = new BrowseOptions(
                "Open",
                string.Empty,
                new[]
            {
                new BrowseFilter("Archives", ArchiveUtils.Extensions)
            },
                BrowseFlags.File
                );
            var result = this.FileSystemBrowser.Browse(options);

            if (!result.Success)
            {
#if NET40
                return(TaskEx.FromResult(false));
#else
                return(Task.CompletedTask);
#endif
            }
            return(this.AddArchivesToPlaylist(this.PlaylistManager.SelectedPlaylist, result.Paths));
        }
 protected virtual BrowseResult BrowseFolder(BrowseOptions options)
 {
     return(this.WithApartmentState(ApartmentState.STA, () =>
     {
         //TODO: Use only WPF frameworks.
         using (var dialog = new global::System.Windows.Forms.FolderBrowserDialog())
         {
             dialog.Description = options.Title;
             if (Directory.Exists(options.Path))
             {
                 dialog.SelectedPath = options.Path;
             }
             var window = this.GetActiveWindow();
             var success = default(bool);
             switch (dialog.ShowDialog(new Win32Window(window.GetHandle())))
             {
             case global::System.Windows.Forms.DialogResult.OK:
                 success = true;
                 break;
             }
             return new BrowseResult(new[] { dialog.SelectedPath }, success);
         }
     }));
 }
 protected virtual BrowseResult BrowseFile(BrowseOptions options)
 {
     return(this.WithApartmentState(ApartmentState.STA, () =>
     {
         var dialog = new OpenFileDialog()
         {
             Title = options.Title,
             Filter = GetFilter(options.Filters),
             Multiselect = options.Flags.HasFlag(BrowseFlags.Multiselect),
         };
         if (File.Exists(options.Path))
         {
             dialog.InitialDirectory = Path.GetDirectoryName(options.Path);
             dialog.FileName = options.Path;
         }
         else if (Directory.Exists(options.Path))
         {
             dialog.InitialDirectory = options.Path;
         }
         var window = this.GetActiveWindow();
         var success = dialog.ShowDialog(window);
         return new BrowseResult(dialog.FileNames, success.GetValueOrDefault());
     }));
 }
 public string GetBrowseFolder(string fileName)
 {
     lock (SyncRoot)
     {
         if (string.IsNullOrEmpty(this._BrowseFolder))
         {
             var options = new BrowseOptions(
                 "Save As",
                 Path.GetDirectoryName(fileName),
                 Enumerable.Empty <BrowseFilter>(),
                 BrowseFlags.Folder
                 );
             var result = this.FileSystemBrowser.Browse(options);
             if (!result.Success)
             {
                 Logger.Write(this, LogLevel.Debug, "Save As folder browse dialog was cancelled.");
                 throw new OperationCanceledException();
             }
             this._BrowseFolder = result.Paths.FirstOrDefault();
             Logger.Write(this, LogLevel.Debug, "Browse folder: {0}", this._BrowseFolder);
         }
     }
     return(this._BrowseFolder);
 }
 /// <summary>
 /// Helper function to set Validations in <see cref="PropertyContainerBuilder"/>
 /// </summary>
 /// <param name="option"></param>
 /// <returns></returns>
 public PropertyObject SetBrowsePermission(BrowseOptions option)
 {
     BrowseOption = option;
     return(this);
 }
Example #25
0
 public Result <BrowseParameters> NegotiateBrowseParameters(BrowseOptions options)
 {
     return(_issueParametersNegotiator.NegotiateBrowseParameters(options, _appSettings.DefaultProject));
 }
Example #26
0
        public async Task <BrowseResult> Browse(BrowseOptions options)
        {
            var result = await _api.SendReceive <BrowseResult, BrowseOptions>(RoonApi.ServiceBrowse + "/browse", options);

            return(result);
        }