Beispiel #1
0
        public SearchResultMessagesModel(
            ILogSourcesManager logSources,
            ISearchManager searchManager,
            IFiltersFactory filtersFactory
            )
        {
            this.searchManager = searchManager;
            logSources.OnLogSourceColorChanged += (s, e) =>
            {
                OnLogSourceColorChanged?.Invoke(s, e);
            };

            int searchFiltersListVersion = 0;

            searchManager.SearchResultsChanged += (s, e) => ++ searchFiltersListVersion;
            searchManager.SearchResultChanged  += (s, e) => searchFiltersListVersion += ((e.Flags & SearchResultChangeFlag.VisibleChanged) != 0 ? 1 : 0);
            this.getSearchFiltersList           = Selectors.Create(
                () => searchFiltersListVersion,
                _ =>
            {
                var list = filtersFactory.CreateFiltersList(FilterAction.Exclude, FiltersListPurpose.Search);
                foreach (var f in searchManager
                         .Results
                         .Where(r => r.Visible && r.OptionsFilter != null)
                         .Select(r => r.OptionsFilter))
                {
                    list.Insert(list.Items.Count, f.Clone());
                }
                return(list);
            }
                );
        }
Beispiel #2
0
        public FiltersManager(
            IFiltersFactory filtersFactory,
            Settings.IGlobalSettingsAccessor globalSettingsAccessor,
            ILogSourcesManager logSourcesManager,
            IAdjustingColorsGenerator threadColors,
            IShutdown shutdown
            )
        {
            this.globalSettings = globalSettingsAccessor;
            this.logSources     = logSourcesManager;

            this.highlightFilters = filtersFactory.CreateFiltersList(FilterAction.Exclude, FiltersListPurpose.Highlighting);

            this.globalSettings.Changed += (sender, args) =>
            {
                if ((args.ChangedPieces & Settings.SettingsPiece.Appearance) != 0)
                {
                    threadColors.Brightness = globalSettings.Appearance.ColoringBrightness;
                }
            };

            this.logSources.OnLogSourceRemoved += (s, e) =>
            {
                highlightFilters.PurgeDisposedFiltersAndFiltersHavingDisposedThreads();
            };

            shutdown.Cleanup += (sender, args) =>
            {
                highlightFilters.Dispose();
            };
        }
Beispiel #3
0
        IUserDefinedSearch IUserDefinedSearches.AddNew()
        {
            string name;

            for (int num = 1;; ++num)
            {
                name = string.Format("New filter {0}", num);
                if (!items.ContainsKey(name))
                {
                    break;
                }
            }
            var search = new UserDefinedSearch(
                this, name,
                filtersFactory.CreateFiltersList(FilterAction.Exclude, FiltersListPurpose.Search)
                );

            items[name] = search;
            changeHandlerInvoker.Invoke();
            return(search);
        }
Beispiel #4
0
        public FiltersManager(
            IFiltersFactory filtersFactory,
            Settings.IGlobalSettingsAccessor globalSettingsAccessor,
            ILogSourcesManager logSourcesManager,
            IShutdown shutdown
            )
        {
            this.globalSettings = globalSettingsAccessor;
            this.logSources     = logSourcesManager;

            this.highlightFilters = filtersFactory.CreateFiltersList(FilterAction.Exclude, FiltersListPurpose.Highlighting);

            this.logSources.OnLogSourceRemoved += (s, e) =>
            {
                highlightFilters.PurgeDisposedFiltersAndFiltersHavingDisposedThreads();
            };

            shutdown.Cleanup += (sender, args) =>
            {
                highlightFilters.Dispose();
            };
        }