コード例 #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);
            }
                );
        }
コード例 #2
0
        public Filter(XElement e, IFiltersFactory factory, RegularExpressions.IRegexFactory regexFactory)
        {
            this.factory      = factory;
            this.regexFactory = regexFactory;

            LoadInternal(e);
        }
コード例 #3
0
ファイル: FiltersList.cs プロジェクト: sabrogden/logjoint
 public FiltersList(XElement e, FiltersListPurpose purpose, IFiltersFactory factory, IChangeNotification changeNotification)
 {
     LoadInternal(e, factory);
     this.purpose            = purpose;
     this.changeNotification = changeNotification;
     this.getItems           = MakeGetItems();
 }
コード例 #4
0
ファイル: FiltersManager.cs プロジェクト: pnelson786/logjoint
        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();
            };
        }
コード例 #5
0
        public PresenterFactory(
            IHeartBeatTimer heartbeat,
            IPresentersFacade presentationFacade,
            IClipboardAccess clipboard,
            IBookmarksFactory bookmarksFactory,
            Telemetry.ITelemetryCollector telemetry,
            ILogSourcesManager logSources,
            IInvokeSynchronization modelInvoke,
            IModelThreads modelThreads,
            IFiltersList hlFilters,
            IBookmarks bookmarks,
            Settings.IGlobalSettingsAccessor settings,
            ISearchManager searchManager,
            IFiltersFactory filtersFactory
            )
        {
            this.heartbeat          = heartbeat;
            this.presentationFacade = presentationFacade;
            this.clipboard          = clipboard;
            this.bookmarksFactory   = bookmarksFactory;
            this.telemetry          = telemetry;

            this.logSources     = logSources;
            this.modelInvoke    = modelInvoke;
            this.modelThreads   = modelThreads;
            this.hlFilters      = hlFilters;
            this.bookmarks      = bookmarks;
            this.settings       = settings;
            this.searchManager  = searchManager;
            this.filtersFactory = filtersFactory;
        }
コード例 #6
0
        IFilterScope CreateScope(List <KeyValuePair <ScopeItem, bool> > items, IFiltersFactory filtersFactory)
        {
            if (!scopeSupported)
            {
                return(filtersFactory.CreateScope());
            }

            List <ILogSource> sources = new List <ILogSource>();
            List <IThread>    threads = new List <IThread>();

            for (int i = 0; i < items.Count;)
            {
                ScopeItem item      = items[i].Key;
                bool      isChecked = items[i].Value;

                if (item is AllSources)
                {
                    if (isChecked)
                    {
                        return(filtersFactory.CreateScope());
                    }
                    ++i;
                    continue;
                }

                if (item is SourceNode)
                {
                    if (isChecked)
                    {
                        sources.Add(((SourceNode)item).Source);
                        ++i;
                        while (i < items.Count && items[i].Key is ThreadNode)
                        {
                            ++i;
                        }
                    }
                    else
                    {
                        ++i;
                    }
                    continue;
                }

                if (item is ThreadNode)
                {
                    if (isChecked)
                    {
                        threads.Add(((ThreadNode)item).Thread);
                    }
                    ++i;
                    continue;
                }

                throw new InvalidOperationException("Unknown node type");
            }

            return(filtersFactory.CreateScope(sources, threads));
        }
コード例 #7
0
 void LoadInternal(XElement e, IFiltersFactory factory)
 {
     actionWhenEmptyOrDisabled = (FilterAction)e.SafeIntValue("default-action", (int)FilterAction.Exclude);
     foreach (var elt in e.Elements("filter"))
     {
         var f = factory.CreateFilter(elt);
         f.SetOwner(this);
         list.Add(f);
     }
 }
コード例 #8
0
 public FilterPickerViewModel(IFiltersFactory filtersFactory, IVideoFilterEngine videoFilterEngine)
 {
     this.videoOptions            = new VideoOptions();
     this.filtersFactory          = filtersFactory;
     this.videoFilterEngine       = videoFilterEngine;
     this.cancellationTokenSource = new CancellationTokenSource();
     this.currentFilter           = this.filtersFactory.CreateFilter(FilterType.None);
     GetDataFromConfig();
     RegisterMessageHandlers();
 }
コード例 #9
0
        public UserDefinedSearchesManager(
            Persistence.IStorageManager storage,
            IFiltersFactory filtersFactory,
            ISynchronizationContext modelThreadSynchronization
            )
        {
            this.filtersFactory       = filtersFactory;
            this.storageEntry         = new Lazy <Persistence.IStorageEntry>(() => storage.GetEntry("UserDefinedSearches"));
            this.changeHandlerInvoker = new AsyncInvokeHelper(modelThreadSynchronization, HandleChange);

            LoadItems();
        }
コード例 #10
0
        public FiltersManager(IFiltersFactory filtersFactory, IFiltersChainBuilder filtersChainBuilder)
        {
            List <IStatWatchingFilter>            statWatchingFilters            = filtersFactory.CreateStatWatchingFilters();
            List <IStatUserRegistrationFilter>    statUserRegistrationFilters    = filtersFactory.CreateStatUserRegistrationFilters();
            List <IStatProjectUploadingFilter>    statProjectUploadingFilters    = filtersFactory.CreateStatProjectUploadingFilters();
            List <IStatProjectDeletionFilter>     statProjectDeletionFilters     = filtersFactory.CreateStatProjectDeletionFilters();
            List <IStatProjectCancellationFilter> statProjectCancellationFilters = filtersFactory.CreateStatProjectCancellationFilters();

            _statWatchingFilter            = filtersChainBuilder.BuildStatWatchingFilter(statWatchingFilters);
            _statUserRegistrationFilter    = filtersChainBuilder.BuildStatUserRegistrationFilter(statUserRegistrationFilters);
            _statProjectUploadingFilter    = filtersChainBuilder.BuildStatProjectUploadingFilter(statProjectUploadingFilters);
            _statProjectDeletionFilter     = filtersChainBuilder.BuildStatProjectDeletionFilter(statProjectDeletionFilters);
            _statProjectCancellationFilter = filtersChainBuilder.BuildStatProjectCancellationFilter(statProjectCancellationFilters);
        }
コード例 #11
0
ファイル: FiltersManager.cs プロジェクト: GusLab/video-portal
        public FiltersManager(IFiltersFactory filtersFactory, IFiltersChainBuilder filtersChainBuilder)
        {
            List<IStatWatchingFilter> statWatchingFilters = filtersFactory.CreateStatWatchingFilters();
            List<IStatUserRegistrationFilter> statUserRegistrationFilters = filtersFactory.CreateStatUserRegistrationFilters();
            List<IStatProjectUploadingFilter> statProjectUploadingFilters = filtersFactory.CreateStatProjectUploadingFilters();
            List<IStatProjectDeletionFilter> statProjectDeletionFilters = filtersFactory.CreateStatProjectDeletionFilters();
            List<IStatProjectCancellationFilter> statProjectCancellationFilters = filtersFactory.CreateStatProjectCancellationFilters();

            _statWatchingFilter = filtersChainBuilder.BuildStatWatchingFilter(statWatchingFilters);
            _statUserRegistrationFilter = filtersChainBuilder.BuildStatUserRegistrationFilter(statUserRegistrationFilters);
            _statProjectUploadingFilter = filtersChainBuilder.BuildStatProjectUploadingFilter(statProjectUploadingFilters);
            _statProjectDeletionFilter = filtersChainBuilder.BuildStatProjectDeletionFilter(statProjectDeletionFilters);
            _statProjectCancellationFilter = filtersChainBuilder.BuildStatProjectCancellationFilter(statProjectCancellationFilters);
        }
コード例 #12
0
        public Presenter(
            IFiltersList filtersList,
            IView view,
            FiltersListBox.IPresenter filtersListPresenter,
            FilterDialog.IPresenter filtersDialogPresenter,
            LogViewer.IPresenter logViewerPresenter,
            IViewUpdates viewUpdates,
            IHeartBeatTimer heartbeat,
            IFiltersFactory filtersFactory,
            IAlertPopup alerts
            )
        {
            this.filtersList            = filtersList;
            this.view                   = view;
            this.heartbeat              = heartbeat;
            this.filtersListPresenter   = filtersListPresenter;
            this.filtersDialogPresenter = filtersDialogPresenter;
            this.logViewerPresenter     = logViewerPresenter;
            this.viewUpdates            = viewUpdates;
            this.filtersFactory         = filtersFactory;
            this.alerts                 = alerts;

            view.SetFiltertingEnabledCheckBoxLabel(
                filtersList.Purpose == FiltersListPurpose.Highlighting ? "Enabled highlighting" : "Enable filtering");

            UpdateControls();

            filtersListPresenter.SelectionChanged += delegate(object sender, EventArgs args) {
                UpdateControls();
            };
            filtersListPresenter.FilterChecked += delegate(object sender, EventArgs args) {
                NotifyAboutFilteringResultChange();
            };
            filtersListPresenter.DeleteRequested += (s, a) => {
                DoRemoveSelected();
            };
            filtersList.OnPropertiesChanged       += HandleFiltersListChange;
            filtersList.OnFilteringEnabledChanged += HandleFiltersListChange;
            filtersList.OnFiltersListChanged      += HandleFiltersListChange;
            heartbeat.OnTimer += PeriodicUpdate;

            view.SetPresenter(this);

            updateTracker.Invalidate();
        }
コード例 #13
0
 public SearchResultMessagesModel(
     ILogSourcesManager logSources,
     ISearchManager searchManager,
     IFiltersFactory filtersFactory,
     IModelThreads threads,
     IBookmarks bookmarks,
     Settings.IGlobalSettingsAccessor settings
     )
 {
     this.logSources     = logSources;
     this.searchManager  = searchManager;
     this.threads        = threads;
     this.bookmarks      = bookmarks;
     this.settings       = settings;
     this.filtersFactory = filtersFactory;
     logSources.OnLogSourceColorChanged += (s, e) =>
     {
         OnLogSourceColorChanged?.Invoke(s, e);
     };
 }
コード例 #14
0
        public Filter(FilterAction action, string initialName, bool enabled,
                      Search.Options options, IFiltersFactory factory)
        {
            this.factory = factory;

            if (initialName == null)
            {
                throw new ArgumentNullException(nameof(initialName));
            }
            this.initialName = initialName;
            this.enabled     = enabled;
            this.action      = action;

            this.options = options;

            // Filters ignores following flags passed.
            // Actually used values are provided later when filters are appied.
            this.options.ReverseSearch = false;

            InvalidateName();
        }
コード例 #15
0
ファイル: FiltersManager.cs プロジェクト: sabrogden/logjoint
        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();
            };
        }
コード例 #16
0
 public PresenterFactory(
     IChangeNotification changeNotification,
     IHeartBeatTimer heartbeat,
     IPresentersFacade presentationFacade,
     IClipboardAccess clipboard,
     IBookmarksFactory bookmarksFactory,
     Telemetry.ITelemetryCollector telemetry,
     ILogSourcesManager logSources,
     ISynchronizationContext modelInvoke,
     IModelThreads modelThreads,
     IFiltersList hlFilters,
     IBookmarks bookmarks,
     Settings.IGlobalSettingsAccessor settings,
     ISearchManager searchManager,
     IFiltersFactory filtersFactory,
     IColorTheme theme,
     ITraceSourceFactory traceSourceFactory,
     RegularExpressions.IRegexFactory regexFactory
     )
 {
     this.changeNotification = changeNotification;
     this.heartbeat          = heartbeat;
     this.presentationFacade = presentationFacade;
     this.clipboard          = clipboard;
     this.bookmarksFactory   = bookmarksFactory;
     this.telemetry          = telemetry;
     this.logSources         = logSources;
     this.modelInvoke        = modelInvoke;
     this.modelThreads       = modelThreads;
     this.hlFilters          = hlFilters;
     this.bookmarks          = bookmarks;
     this.settings           = settings;
     this.searchManager      = searchManager;
     this.filtersFactory     = filtersFactory;
     this.theme = theme;
     this.traceSourceFactory = traceSourceFactory;
     this.regexFactory       = regexFactory;
 }
コード例 #17
0
        public Presenter(
            IView view,
            ISearchManager searchManager,
            ISearchHistory searchHistory,
            IUserDefinedSearches userDefinedSearches,
            ILogSourcesManager sourcesManager,
            IFiltersFactory filtersFactory,
            ISearchResultsPanelView searchResultsPanelView,
            LoadedMessages.IPresenter loadedMessagesPresenter,
            SearchResult.IPresenter searchResultPresenter,
            StatusReports.IPresenter statusReportFactory,
            SearchEditorDialog.IPresenter searchEditorDialog,
            SearchesManagerDialog.IPresenter searchesManagerDialog,
            IAlertPopup alerts
            )
        {
            this.view                    = view;
            this.searchManager           = searchManager;
            this.searchHistory           = searchHistory;
            this.filtersFactory          = filtersFactory;
            this.searchResultsPanelView  = searchResultsPanelView;
            this.loadedMessagesPresenter = loadedMessagesPresenter;
            this.searchResultPresenter   = searchResultPresenter;
            this.statusReportFactory     = statusReportFactory;
            this.sourcesManager          = sourcesManager;
            this.searchesManagerDialog   = searchesManagerDialog;
            this.alerts                  = alerts;
            this.quickSearchPresenter    = new QuickSearchTextBox.Presenter(view.SearchTextBox);
            this.searchEditorDialog      = searchEditorDialog;

            InvalidateSearchHistoryList();
            searchHistory.OnChanged += (sender, args) => InvalidateSearchHistoryList();

            sourcesManager.OnLogSourceAdded   += (sender, e) => UpdateSearchControls();
            sourcesManager.OnLogSourceRemoved += (sender, e) => UpdateSearchControls();

            UpdateSearchControls();
            UpdateUserDefinedSearchDependentControls(false);

            view.SetPresenter(this);

            quickSearchPresenter.OnSearchNow += (sender, args) =>
            {
                if (quickSearchPresenter.Text != "")
                {
                    DoSearch(reverseDirection: args.ReverseSearchModifier);
                }
            };
            quickSearchPresenter.OnCancelled += (sender, args) =>
            {
                bool searchCancelled = false;
                foreach (var r in searchManager.Results.Where(r => r.Status == SearchResultStatus.Active))
                {
                    r.Cancel();
                    searchCancelled = true;
                }
                if (!searchCancelled && InputFocusAbandoned != null)
                {
                    InputFocusAbandoned(this, EventArgs.Empty);
                }
            };
            quickSearchPresenter.SetSuggestionsHandler((sender, e) =>
            {
                if (e.Etag == searchListEtag)
                {
                    return;
                }
                foreach (var i in searchHistory.Items)
                {
                    var description = new StringBuilder();
                    GetUserFriendlySearchHistoryEntryDescription(i, description);
                    e.AddItem(new QuickSearchTextBox.SuggestionItem()
                    {
                        DisplayString = description.ToString(),
                        SearchString  = (i as ISimpleSearchHistoryEntry)?.Options.Template,
                        Category      = "recent searches",
                        Data          = i
                    });
                }
                foreach (var i in userDefinedSearches.Items)
                {
                    var description = new StringBuilder();
                    GetUserFriendlySearchHistoryEntryDescription(i, description);
                    e.AddItem(new QuickSearchTextBox.SuggestionItem()
                    {
                        DisplayString = description.ToString(),
                        LinkText      = "edit",
                        Category      = "Filters",
                        Data          = i
                    });
                }
                e.ConfigureCategory("Filters", linkText: "manage", alwaysVisible: true);
                e.Etag = searchListEtag;
            });
            quickSearchPresenter.OnCurrentSuggestionChanged += (sender, e) =>
            {
                var datum = quickSearchPresenter.CurrentSuggestion?.Data;
                var searchHistoryEntry = datum as ISimpleSearchHistoryEntry;
                if (searchHistoryEntry != null)
                {
                    ReadControlsFromSelectedHistoryEntry(searchHistoryEntry);
                }
                UpdateUserDefinedSearchDependentControls(
                    datum is IUserDefinedSearch || datum is IUserDefinedSearchHistoryEntry);
            };
            quickSearchPresenter.OnSuggestionLinkClicked += (sender, e) =>
            {
                var uds = e.Suggestion.Data as IUserDefinedSearch;
                if (uds == null)
                {
                    return;
                }
                searchEditorDialog.Open(uds);
            };
            quickSearchPresenter.OnCategoryLinkClicked += (sender, e) =>
            {
                HandleSearchesManagerDialog();
            };
            userDefinedSearches.OnChanged += (sender, e) =>
            {
                InvalidateSearchHistoryList();
            };
        }
コード例 #18
0
        public Filter(XElement e, IFiltersFactory factory)
        {
            this.factory = factory;

            LoadInternal(e);
        }
コード例 #19
0
 public InfoController(IFiltersFactory filtersFactory)
 {
     _filtersFactory = filtersFactory;
 }
コード例 #20
0
 public FilterByRouteResolver(IFiltersFactory factory)
 {
     _factory = factory;
 }
コード例 #21
0
 public FiltersList(XElement e, FiltersListPurpose purpose, IFiltersFactory factory)
 {
     LoadInternal(e, factory);
     this.purpose = purpose;
 }
コード例 #22
0
ファイル: VectorFilter.cs プロジェクト: rachwal/RTM-Tools
 public VectorFilter(IFiltersFactory filtersFactory)
 {
     factory = filtersFactory;
 }