private bool BrowseForFile()
        {
            string[] text = string.IsNullOrEmpty(FilterText) ? new string[0] : FilterText.Split('|');
            string[] ext  = string.IsNullOrEmpty(FilterExtensions) ? new string[0] : FilterExtensions.Split('|');
            if (text.Length != ext.Length)
            {
                throw new ArgumentException("Filter text length much match filter extension length!");
            }
            OpenFileDialog ofd = new OpenFileDialog {
                FileName = SelectedPath,
                Filter   = text.Interleave(ext).StringJoin("|")
            };

            if (DialogResult.OK != ofd.ShowDialog())
            {
                return(false);
            }

            using (IDLWrapper wrapper = new IDLWrapper(ofd.FileName)) {
                if (wrapper.IDL != null)
                {
                    SelectedIDL = wrapper.IDL;
                }
                else
                {
                    SelectedPath = wrapper.Path;
                }
            }
            return(true);
        }
示例#2
0
        /// <summary>
        ///     Test if the input matches this condition. Returns null if it is impossible to determine.
        /// </summary>
        public bool?TestEntry(ApplicationUninstallerEntry input)
        {
            if (!Enabled)
            {
                return(null);
            }

            var targets = ReferenceEquals(TargetProperty, ComparisonTargetInfo.AllTargetComparison)
                ? ComparisonTargetInfo.ComparisonTargets.Where(x => x.PossibleStrings == null)
                          .Select(x => x.Getter(input))
                : new[] { TargetProperty.Getter(input) };

            bool?result = null;

            foreach (var target in targets.Where(target => !string.IsNullOrEmpty(target)))
            {
                try
                {
                    switch (ComparisonMethod)
                    {
                    case ComparisonMethod.Equals:
                        result = target.Equals(FilterText, StringComparison.InvariantCultureIgnoreCase);
                        break;

                    case ComparisonMethod.Any:
                        result = target.ContainsAny(
                            FilterText.Split((char[])null, StringSplitOptions.RemoveEmptyEntries),
                            StringComparison.InvariantCultureIgnoreCase);
                        break;

                    case ComparisonMethod.StartsWith:
                        result = target.StartsWith(FilterText, StringComparison.InvariantCultureIgnoreCase);
                        break;

                    case ComparisonMethod.EndsWith:
                        result = target.EndsWith(FilterText, StringComparison.InvariantCultureIgnoreCase);
                        break;

                    case ComparisonMethod.Contains:
                        result = target.Contains(FilterText, StringComparison.InvariantCultureIgnoreCase);
                        break;

                    case ComparisonMethod.Regex:
                        result = Regex.IsMatch(target, FilterText, RegexOptions.CultureInvariant);
                        break;

                    default:
                        throw new InvalidOperationException("Unknown FilterComparisonMethod");
                    }
                }
                catch (InvalidOperationException)
                {
                    throw;
                }
                catch
                {
                    //result = null;
                }

                if (result == true)
                {
                    return(!InvertResults);
                }
            }

            if (!result.HasValue)
            {
                return(null);
            }
            return(InvertResults ? !result.Value : result.Value);
        }
示例#3
0
        /// <summary>
        /// Parse transmission torrents data.
        /// </summary>
        /// <param name="data"></param>
        private void ProcessParsingTransmissionResponse(TransmissionTorrents data)
        {
            if (!IsConnected)
            {
                return;
            }

            lock (_syncTorrentList)
            {
                //1: 'check pending',
                //2: 'checking',

                //5: 'seed pending',
                //6: 'seeding',
                switch (_filterCategory)
                {
                //3: 'download pending',
                //4: 'downloading',
                case Enums.Categories.Downloading:
                    data.Torrents = data.Torrents.Where(x => x.Status == 3 || x.Status == 4).ToArray();
                    break;

                //4: 'downloading',
                //6: 'seeding',
                //2: 'checking',
                case Enums.Categories.Active:
                    data.Torrents = data.Torrents.Where(x => x.Status == 4 || x.Status == 6 || x.Status == 2)
                                    .ToArray();
                    data.Torrents = data.Torrents.Where(x => x.RateDownload > 1 || x.RateUpload > 1).ToArray();
                    break;

                //0: 'stopped' and is error,
                case Enums.Categories.Stopped:
                    data.Torrents = data.Torrents.Where(x => x.Status == 0 && string.IsNullOrEmpty(x.ErrorString))
                                    .ToArray();
                    break;

                case Enums.Categories.Error:
                    data.Torrents = data.Torrents.Where(x => !string.IsNullOrEmpty(x.ErrorString)).ToArray();
                    break;


                //6: 'seeding',
                //1: 'checking queue',
                case Enums.Categories.Inactive:
                    //var array1 = data.Torrents.Where(x=> x.Status == 1).ToArray();
                    var array2 = data.Torrents.Where(x => x.RateDownload <= 0 && x.RateUpload <= 0 && x.Status != 2)
                                 .ToArray();

                    //int array1OriginalLength = array1.Length;
                    //Array.Resize<TorrentInfo>(ref array1, array1OriginalLength + array2.Length);
                    //Array.Copy(array2, 0, array1, array1OriginalLength, array2.Length);
                    data.Torrents = array2;
                    break;

                //6: 'seeding',
                case Enums.Categories.Ended:
                    data.Torrents = data.Torrents.Where(x => x.Status == 6).ToArray();
                    break;
                }

                if (!string.IsNullOrEmpty(FilterText))
                {
                    //var txtfilter = FilterText;
                    if (FilterText.Contains("{p}:"))
                    {
                        var splited   = FilterText.Split("{p}:");
                        var filterKey = splited[^ 1];