Esempio n. 1
0
 [UsedImplicitly]         // by ninject
 public DownloaderSubsystem(
     UiConfigRepository uiConfigRepository,
     FormUpdate formUpdate)
 {
     _uiConfigRepository = uiConfigRepository;
     _formUpdate         = formUpdate;
 }
Esempio n. 2
0
 public ImagePreloadingSubsystem(
     LayoutViewControl viewCards,
     LayoutViewControl viewDeck,
     UiConfigRepository uiConfigRepository)
 {
     _viewCards          = viewCards;
     _viewDeck           = viewDeck;
     _uiConfigRepository = uiConfigRepository;
 }
Esempio n. 3
0
        public void Init(
            DeckListModel decks,
            IconRecognizer recognizer,
            DeckSearcher searcher,
            DeckDocumentAdapter adapter,
            CollectionEditorModel collection,
            UiConfigRepository uiConfigRepository,
            Control tooltipOwner,
            IApplication app)
        {
            _searcher            = searcher;
            _uiConfigRepository  = uiConfigRepository;
            _panelRename.Visible = false;

            _viewDeck.IconRecognizer = recognizer;
            _viewDeck.DataSource     = _filteredModels;

            _menuFilterByDeckMode.SetMenuValues(
                "Ignored",
                "Cards in currently open deck",
                "Cards in saved decks matching filter");

            _menuFilterByDeckMode.SelectedIndex = 0;

            _listModel    = decks;
            _collection   = collection;
            _tooltipOwner = tooltipOwner;
            _app          = app;

            _searchSubsystem = new DeckSearchSubsystem(
                this,
                _searchBar,
                uiConfigRepository,
                _searcher,
                adapter,
                _viewDeck);
            _deckSort          = new DeckSortSubsystem(_viewDeck, new DeckFields(), _searchSubsystem, _listModel);
            _layoutViewTooltip = new ViewDeckListTooltips(_tooltipOwner, _viewDeck);

            _model           = _listModel.CreateModel(Deck.Create());
            _model.IsCurrent = true;

            subscribeToEvents();

            updateSortLabel();

            if (components == null)
            {
                components = new Container();
            }

            components.Add(new SearchResultHighlightSubsystem(_viewDeck, _searchSubsystem, adapter));

            _searchSubsystem.Apply();
        }
Esempio n. 4
0
 public ImagePreloadingSubsystem(
     MtgLayoutView layoutViewCards,
     MtgLayoutView layoutViewDeck,
     ScrollSubsystem scrollSubsystem,
     UiConfigRepository uiConfigRepository)
 {
     _layoutViewCards    = layoutViewCards;
     _layoutViewDeck     = layoutViewDeck;
     _scrollSubsystem    = scrollSubsystem;
     _uiConfigRepository = uiConfigRepository;
 }
Esempio n. 5
0
 public CardSearchSubsystem(
     Control parent,
     SearchBar searchBar,
     UiConfigRepository uiConfigRepository,
     CardSearcher searcher,
     CardDocumentAdapter adapter,
     params LayoutViewControl[] views)
     : base(
         parent,
         searchBar,
         uiConfigRepository,
         searcher,
         adapter,
         views)
 {
 }
Esempio n. 6
0
        protected SearchSubsystem(
            Control parent,
            SearchBar searchBar,
            UiConfigRepository uiConfigRepository,
            LuceneSearcher <TId, TObj> searcher,
            IDocumentAdapter <TId, TObj> adapter,
            params LayoutViewControl[] views)
        {
            _parent             = parent;
            _searchBar          = searchBar;
            _uiConfigRepository = uiConfigRepository;

            Searcher = searcher;
            _adapter = adapter;
            _views   = views;

            _highlighter = new SearchStringHighlighter(_searchBar.Input);
            _highlighter.Highlight();
        }
Esempio n. 7
0
 public HistorySubsystem(UiConfigRepository uiConfigRepository)
 {
     _uiConfigRepository = uiConfigRepository;
 }
Esempio n. 8
0
        public FormRoot(Func <FormMain> formMainFactory,
                        DownloaderSubsystem downloaderSubsystem,
                        NewsService newsService,
                        CardSuggestModel cardSuggestModel,
                        DeckSuggestModel deckSuggestModel,
                        [Named(GuiModule.DefaultTooltipScope)] TooltipController tooltipController,
                        [Named(GuiModule.QuickFilterTooltipScope)] TooltipController quickFilterTooltipController,
                        CardRepository repo,
                        DeckSerializationSubsystem serialization,
                        UiModel uiModel,
                        ColorSchemeEditor colorSchemeEditor,
                        App app,
                        AppSourceConfig appSourceConfig,
                        UiConfigRepository uiConfigRepository)
            : this()
        {
            TooltipController            = tooltipController;
            QuickFilterTooltipController = quickFilterTooltipController;

            UiModel = uiModel;

            DeckSuggestModel = deckSuggestModel;

            CardSuggestModel    = cardSuggestModel;
            CardSuggestModel.Ui = UiModel;

            _app                = app;
            _appSourceConfig    = appSourceConfig;
            _uiConfigRepository = uiConfigRepository;
            _repo               = repo;
            _serialization      = serialization;
            _colorSchemeEditor  = colorSchemeEditor;

            _formMainFactory     = formMainFactory;
            _downloaderSubsystem = downloaderSubsystem;
            _newsService         = newsService;

            KeyPreview      = true;
            PreviewKeyDown += previewKeyDown;
            KeyDown        += formKeyDown;

            QueryHandleDrag += queryHandleDrag;
            Load            += load;
            Closed          += closed;

            _tabs.AllowDrop              = true;
            _tabs.TabAdded              += tabCreated;
            _tabs.TabRemoving           += tabClosing;
            _tabs.TabRemoved            += tabClosed;
            _tabs.SelectedIndexChanging += selectedTabChanging;
            _tabs.SelectedIndexChanged  += selectedTabChanged;
            _tabs.DragOver              += tabsDragOver;

            _tabs.MouseEnter += tabMouseEnter;
            _tabs.MouseEnter += tabMouseLeave;
            _tabs.MouseMove  += tabMouseMove;

            MessageFilter.Instance.GlobalMouseMove += globalMouseMove;
            FormClosing += formClosing;

            _newsService.NewsFetched   += newsFetched;
            _newsService.NewsDisplayed += newsDisplayed;
            _downloaderSubsystem.ProgressCalculated += downloaderProgressCalculated;

            setupExternalLinks();
            setupButtonClicks();
            setupLanguageMenu();

            setupTooltips();

            foreach (var button in _deckButtons)
            {
                button.Enabled = false;
            }

            Text = $"Mtgdb.Gui v{AppDir.GetVersion()}";

            scale();
            updateFormBorderColor();
            ColorSchemeController.SystemColorsChanging += updateFormBorderColor;

            _menuColors.BackColor = SystemColors.Control;
            _menuColors.ForeColor = SystemColors.ControlText;

            if (components == null)
            {
                components = new Container();
            }

            components.Add(new UiConfigMenuSubsystem(
                               _menuUiScale,
                               _menuUiSmallImageQuality,
                               _menuUiSuggestDownloadMissingImages,
                               _menuUiImagesCacheCapacity,
                               _menuUiUndoDepth,
                               _menuUiApplySearchBar,
                               _checkboxAllPanels,
                               _checkboxTopPanel, _checkboxRightPanel, _checkboxSearchBar, _repo, uiConfigRepository));

            _dropdownOpenDeck.BeforeShow    = () => setMenuMode(_dropdownOpenDeck);
            _dropdownSaveDeck.BeforeShow    = () => setMenuMode(_dropdownSaveDeck);
            _dropdownColorScheme.BeforeShow = updateMenuColors;

            _ctsLifetime = new CancellationTokenSource();
            _ctsLifetime.Token.When(_repo.IsLoadingComplete).Run(repositoryLoaded);
        }
Esempio n. 9
0
        public FormMain(
            CardRepository cardRepo,
            PriceRepository priceRepo,
            ImageRepository imageRepo,
            ImageLoader imageLoader,
            UiConfigRepository uiConfigRepository,
            CollectionEditorModel collectionEditor,
            CardSearcher cardSearcher,
            CardDocumentAdapter cardAdapter,
            DeckDocumentAdapter deckAdapter,
            KeywordSearcher keywordSearcher,
            DeckListModel deckListModel,
            DeckSearcher deckSearcher,
            IconRecognizer iconRecognizer,
            DeckSerializationSubsystem serialization,
            MtgArenaIntegration mtgArenaIntegration,
            App app)
            : this()
        {
            DoubleBuffered = true;

            _app                 = app;
            _cardSearcher        = cardSearcher;
            _keywordSearcher     = keywordSearcher;
            _quickFilterControls = QuickFilterSetup.GetQuickFilterControls(this);

            _cardRepo            = cardRepo;
            _priceRepo           = priceRepo;
            _imageLoader         = imageLoader;
            _uiConfigRepository  = uiConfigRepository;
            _collectionEditor    = collectionEditor;
            _serialization       = serialization;
            _mtgArenaIntegration = mtgArenaIntegration;

            beginRestoreSettings();

            _fields = new CardFields();

            QuickFilterSetup.SetQuickFilterProperties(this);
            QuickFilterImages.SetImages(this);

            _quickFilterFacade = new QuickFilterFacade(
                KeywordDefinitions.Patterns,
                KeywordDefinitions.Values.ToKeywordDisplayTexts(),
                KeywordDefinitions.PropertyNames,
                KeywordDefinitions.PropertyNamesDisplay,
                keywordSearcher);

            _searchSubsystem = new CardSearchSubsystem(
                this,
                _searchBar,
                uiConfigRepository,
                cardSearcher,
                cardAdapter,
                _viewCards,
                _viewDeck);

            _cardSort = new CardSortSubsystem(_viewCards, _cardRepo, _fields, _searchSubsystem);

            endRestoreSettings();

            _countInputSubsystem = new CountInputSubsystem();
            _tooltipViewCards    = new LayoutViewTooltip(this, _viewCards, _searchSubsystem, _countInputSubsystem);
            _tooltipViewDeck     = new LayoutViewTooltip(this, _viewDeck, _searchSubsystem, _countInputSubsystem);

            _formZoom = new FormZoom(_cardRepo, imageRepo, _imageLoader);

            _imagePreloading = new ImagePreloadingSubsystem(
                _viewCards,
                _viewDeck,
                uiConfigRepository);

            _deckEditor = new DeckEditorModel();

            _dragging = new DraggingSubsystem(
                _viewDeck,
                _viewCards,
                _deckEditor,
                this,
                _imageLoader,
                _app);

            _deckEditorSubsystem = new DeckEditorSubsystem(
                _viewCards,
                _viewDeck,
                _deckEditor,
                _collectionEditor,
                _dragging,
                _countInputSubsystem,
                Cursor,
                _formZoom,
                this);

            _viewDeck.DataSource  = _deckEditor.DataSource;
            _viewCards.DataSource = _searchResultCards;

            _legality = new LegalitySubsystem(
                _dropdownLegality,
                _buttonLegalityAllowLegal,
                _buttonLegalityAllowRestricted,
                _buttonLegalityAllowBanned,
                _buttonLegalityAllowFuture);

            _drawing = new DrawingSubsystem(
                _viewCards,
                _viewDeck,
                _searchSubsystem,
                cardAdapter,
                _deckEditor,
                _countInputSubsystem,
                _quickFilterFacade,
                _legality,
                iconRecognizer);


            _printing = new PrintingSubsystem(imageRepo, _cardRepo);

            _deckZones = new DeckZoneSubsystem(
                _tabHeadersDeck,
                _dragging,
                _viewDeck)
            {
                DeckZone = Zone.Main
            };

            scale();
            setRightPanelsWidth();

            _keywordsIndexUpToDate     = _keywordSearcher.IsUpToDate;
            _luceneSearchIndexUpToDate = _cardSearcher.IsUpToDate;
            _spellcheckerIndexUpToDate = _cardSearcher.Spellchecker.IsUpToDate;

            _history = new HistorySubsystem(uiConfigRepository);

            _evaluators = new Evaluators
            {
                { 2, _legality.MatchesLegalityFilter },
                { 3, evalFilterByCollection },
                { 4, evalFilterByDeck },
                { 0, _quickFilterFacade.Evaluate },
                { 1, evalFilterBySearchText }
            };

            _deckSearcher = deckSearcher;
            _deckListControl.Init(
                deckListModel,
                iconRecognizer,
                _deckSearcher,
                deckAdapter,
                collectionEditor,
                uiConfigRepository,
                this,
                _app);

            _copyPaste = new CopyPasteSubsystem(
                _cardRepo,
                _serialization,
                _collectionEditor,
                _deckEditor,
                this,
                _deckListControl,
                _viewDeck,
                _tabHeadersDeck,
                _viewCards,
                _deckListControl.DeckListView);

            updateExcludeManaAbility();
            updateExcludeManaCost();
            updateShowProhibited();
            updateShowSampleHandButtons();
            updateDeckVisibility();

            subscribeToEvents();

            if (components == null)
            {
                components = new Container();
            }

            components.Add(_deckEditorSubsystem);
            components.Add(_countInputSubsystem);
            components.Add(_formZoom);
            components.Add(_copyPaste);

            _popupSearchExamples.MenuControl   = _menuSearchExamples;
            _popupSearchExamples.MenuAlignment = HorizontalAlignment.Right;
        }
Esempio n. 10
0
        public UiConfigMenuSubsystem(
            DropDown menuUiScale,
            DropDown menuUiSmallImageQuality,
            DropDown menuSuggestDownloadMissingImages,
            DropDown menuImagesCacheCapacity,
            DropDown menuUndoDepth,
            CheckBox checkboxAllPanels,
            CheckBox checkboxTopPanel,
            CheckBox checkboxRightPanel,
            CheckBox checkboxSearchBar,
            UiConfigRepository configRepo)
        {
            _menuUiScale                      = menuUiScale;
            _menuUiSmallImageQuality          = menuUiSmallImageQuality;
            _menuSuggestDownloadMissingImages = menuSuggestDownloadMissingImages;
            _menuImagesCacheCapacity          = menuImagesCacheCapacity;
            _menuUndoDepth                    = menuUndoDepth;
            _checkboxAllPanels                = checkboxAllPanels;
            _checkboxTopPanel                 = checkboxTopPanel;
            _checkboxRightPanel               = checkboxRightPanel;
            _checkboxSearchBar                = checkboxSearchBar;

            _allPanelCheckboxes = new[]
            {
                _checkboxTopPanel,
                _checkboxRightPanel,
                _checkboxSearchBar
            };

            _configRepo = configRepo;

            _menuUiScale.SetMenuValues(new[] { 100, 125, 150, 200 }.Select(formatScalePercent));
            _menuUiSmallImageQuality.SetMenuValues("Normal (LQ)", "High (MQ)");
            _menuSuggestDownloadMissingImages.SetMenuValues("No", "Yes");
            _menuImagesCacheCapacity.SetMenuValues(new [] { 100, 300, 1000, 3000 }.Select(formatInt));
            _menuUndoDepth.SetMenuValues(new [] { 100, 300, 1000, 3000 }.Select(formatInt));

            var config = _configRepo.Config;

            UiScalePercent = config.UiScalePercent;
            UseSmallImages = config.DisplaySmallImages;
            SuggestDownloadMissingImages = config.SuggestDownloadMissingImages;
            ImageCacheCapacity           = config.ImageCacheCapacity;
            UndoDepth = config.UndoDepth;

            ShowTopPanel   = config.ShowTopPanel;
            ShowRightPanel = config.ShowRightPanel;
            ShowSearchBar  = config.ShowSearchBar;

            _checkboxAllPanels.Checked = allPanelsChecked(true);

            _menuUiScale.SelectedIndexChanged                      += handleUiScalePercentChanged;
            _menuUiSmallImageQuality.SelectedIndexChanged          += handleMenuChanged;
            _menuSuggestDownloadMissingImages.SelectedIndexChanged += handleMenuChanged;
            _menuImagesCacheCapacity.SelectedIndexChanged          += handleMenuChanged;
            _menuUndoDepth.SelectedIndexChanged                    += handleMenuChanged;

            _checkboxAllPanels.CheckedChanged  += handleAllPanelsChanged;
            _checkboxTopPanel.CheckedChanged   += handlePanelVisibilityChanged;
            _checkboxRightPanel.CheckedChanged += handlePanelVisibilityChanged;
            _checkboxSearchBar.CheckedChanged  += handlePanelVisibilityChanged;
        }