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); }
/// <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); }
/// <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];