예제 #1
0
 public CardSortSubsystem(
     LayoutViewControl layoutView,
     CardRepository repo,
     CardFields fields,
     CardSearchSubsystem searchSubsystem)
     : base(layoutView, fields, searchSubsystem)
 {
     _repo = repo;
 }
예제 #2
0
파일: FormChart.cs 프로젝트: Zelfrom/Mtgdb
        public FormChart(CardRepository repository, Func <UiModel> uiSnapshotFactory, CardFields fields)
            : this()
        {
            _checkBoxes = new[]
            {
                _buttonArgumentTotal,
                _buttonSeriesTotal,
                _buttonExplainTotal,
                _buttonFilterBySearchResult
            };

            _fields      = fields;
            _fieldsOrder = fields.ChartFields.OrderBy(_ => _fields.ByName[_].Alias)
                           .ToArray();

            _repository        = repository;
            _uiSnapshotFactory = uiSnapshotFactory;

            Load += load;

            foreach (var button in _headerButtons)
            {
                button.AutoCheck = false;
                button.Pressed  += buttonClick;
            }

            _tabByButton = Enumerable.Range(0, _buttons.Length)
                           .ToDictionary(i => _buttons[i], i => _tabs[i]);

            foreach (var button in _buttons)
            {
                button.Pressed += buttonAddFieldClick;
            }

            _buttonApply.Pressed += buttonApplyClick;

            for (int i = 0; i < _tabs.Length; i++)
            {
                if (_tabs[i] != _tabSumm)
                {
                    _tabs[i].Click += tabAxisClick;
                }
                else
                {
                    _tabs[i].Click += tabSummClick;
                }

                _tabs[i].TabRemoving += tabRemoving;
            }

            _menuDataSource.SetMenuValues(Enum.GetNames(typeof(DataSource)).Cast <string>());
            _menuDataSource.SelectedIndex = 0;

            _menuLabelDataElement.SetMenuValues(Enum.GetNames(typeof(DataElement)).Cast <string>());
            _menuDataSource.SelectedIndex = 0;

            _menuChartType.SetMenuValues(
                Enum.GetValues(typeof(SeriesChartType))
                .Cast <SeriesChartType>()
                .Where(isChartTypeSupported)
                .Select(_ => _.ToString()));

            _menuChartType.SelectedIndex = 0;

            _menuFields.SetMenuValues(_fieldsOrder.Select(_ => _fields.ByName[_].Alias));

            foreach (var tab in _summTabs)
            {
                tab.TabAdded     += tabSummAdded;
                tab.TabRemoving  += tabSummRemoving;
                tab.TabReordered += tabSummReordered;
            }

            _menuPriceChartType.SetMenuValues(
                SeriesChartType.Bar.ToString(),
                SeriesChartType.Pyramid.ToString(),
                SeriesChartType.Pie.ToString(),
                SeriesChartType.Doughnut.ToString());

            _menuPriceChartType.SelectedIndex = 0;

            _menuPrice.SetMenuValues("Low", "Mid", "High");
            _menuPrice.SelectedIndex = 1;

            _menuPrice.SelectedIndexChanged          += priceMenuIndexChanged;
            _menuPriceChartType.SelectedIndexChanged += priceMenuIndexChanged;
            _menuChartType.SelectedIndexChanged      += chartTypeChanged;

            _sortIconsOrder = new[]
            {
                LayoutControlBitmaps.SortNone,
                LayoutControlBitmaps.SortAsc,
                LayoutControlBitmaps.SortDesc
            }.AsReadOnlyList();

            _aggregateIconsOrder = new[]
            {
                ResourcesFilter.sum_hovered,
                ResourcesFilter.count_hovered,
                ResourcesFilter.count_distinct_hovered,
                ResourcesFilter.min_hovered,
                ResourcesFilter.avg_hovered,
                ResourcesFilter.max_hovered
            }.AsReadOnlyList();

            var defaultIcons = new[]
            {
                _sortIconsOrder[0],
                _sortIconsOrder[0],
                _aggregateIconsOrder[0],
                _sortIconsOrder[0]
            };

            for (int i = 0; i < _tabs.Length; i++)
            {
                _tabs[i].DefaultIcon = defaultIcons[i];
            }

            scale();

            var filesSubsystem = new ChartFilesSubsystem(this, _buttonSave, _buttonLoad, _menuMruFiles);

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

            components.Add(filesSubsystem);

            _dropdownMruFiles.MenuControl   = _menuMruFiles;
            _dropdownMruFiles.MenuAlignment = HorizontalAlignment.Right;
            _dropdownMruFiles.BeforeShow    = filesSubsystem.UpdateMruFilesMenu;
        }
예제 #3
0
        public FormMain(
            UndoConfig undoConfig,
            CardRepository cardRepo,
            ImageRepository imageRepo,
            ImageCacheConfig imageCacheConfig,
            ImageLoader imageLoader,
            CollectionEditorModel collectionEditor,
            CardSearcher cardSearcher,
            CardDocumentAdapter cardAdapter,
            DeckDocumentAdapter deckAdapter,
            KeywordSearcher keywordSearcher,
            DeckListModel deckListModel,
            DeckSearcher deckSearcher,
            IconRecognizer iconRecognizer,
            DeckSerializationSubsystem serialization,
            Application application)
            : this()
        {
            DoubleBuffered = true;
            KeyPreview     = true;

            _viewCards = new MtgLayoutView(_layoutViewCards);
            _viewDeck  = new MtgLayoutView(_layoutViewDeck);

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

            _cardRepo         = cardRepo;
            _imageLoader      = imageLoader;
            _collectionEditor = collectionEditor;
            _serialization    = serialization;

            beginRestoreSettings();

            _fields = new CardFields();

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

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

            _buttons = new ButtonSubsystem();

            _cardSearch = new CardSearchSubsystem(
                this,
                _searchEditor,
                _panelIconSearch,
                _listBoxSuggest,
                cardSearcher,
                cardAdapter,
                _layoutViewCards,
                _layoutViewDeck);

            _panelSearchExamples.Setup(_cardSearch, _buttons, _buttonSearchExamplesDropDown);

            _cardSort = new CardSortSubsystem(_layoutViewCards, _cardRepo, _fields, _cardSearch);

            endRestoreSettings();

            _tooltipViewCards = new LayoutViewTooltip(this, _viewCards, _cardSearch);
            _tooltipViewDeck  = new LayoutViewTooltip(this, _viewDeck, _cardSearch);

            var formZoomCard = new FormZoom(_cardRepo, imageRepo, _imageLoader);

            _scroll = new ScrollSubsystem(_viewDeck, _viewCards);

            _imagePreloading = new ImagePreloadingSubsystem(
                _viewCards,
                _viewDeck,
                _scroll,
                imageCacheConfig);

            _deckEditor = new DeckEditorModel();

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

            _deckEditorUi = new DeckEditorUi(
                _viewCards,
                _viewDeck,
                _deckEditor,
                _collectionEditor,
                _dragging,
                Cursor,
                formZoomCard,
                this);

            _viewDeck.SetDataSource(_deckEditor.DataSource);
            _viewCards.SetDataSource(_searchResultCards);

            _legality = new LegalitySubsystem(
                _menuLegalityFormat,
                _buttonLegalityAllowLegal,
                _buttonLegalityAllowRestricted,
                _buttonLegalityAllowBanned);

            _drawing = new DrawingSubsystem(
                _viewCards,
                _viewDeck,
                _dragging,
                _cardSearch,
                cardAdapter,
                _deckEditor,
                _quickFilterFacade,
                _legality,
                _imageLoader,
                iconRecognizer);


            _printing = new PrintingSubsystem(imageRepo, _cardRepo);

            DeckZone = Zone.Main;

            scale();
            setRightPanelsWidth();

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

            _searchTextSelection = new RichTextBoxSelectionSubsystem(_searchEditor);

            _history = new HistorySubsystem(undoConfig);

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

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

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

            setupCheckButtonImages();

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

            subscribeToEvents();
        }
예제 #4
0
        public FormChart(CardRepository repository, UiModel ui, CardFields fields)
            : this()
        {
            _ui          = ui;
            _fields      = fields;
            _fieldsOrder = fields.ChartFields.OrderBy(_ => _fields.ByName[_].Alias)
                           .ToArray();

            _repository = repository;

            Load += load;

            foreach (var button in _headerButtons)
            {
                button.Click += buttonClick;
            }

            SnapTo(Direction.North, System.Windows.Forms.Cursor.Position);

            _tabByButton = Enumerable.Range(0, _buttons.Length)
                           .ToDictionary(i => _buttons[i], i => _tabs[i]);

            foreach (var button in _buttons)
            {
                button.Click += buttonAddFieldClick;
            }

            _buttonApply.Click += buttonApplyClick;

            var defaultIcons = new[]
            {
                _sortIconsOrder[0],
                _sortIconsOrder[0],
                _aggregateIconsOrder[0],
                _sortIconsOrder[0]
            };

            for (int i = 0; i < _tabs.Length; i++)
            {
                _tabs[i].DefaultIcon = defaultIcons[i];

                if (_tabs[i] != _tabSumm)
                {
                    _tabs[i].Click += tabAxisClick;
                }
                else
                {
                    _tabs[i].Click += tabSummClick;
                }

                _tabs[i].TabRemoving += tabRemoving;
            }

            _menuDataSource.Items.AddRange(Enum.GetNames(typeof(DataSource)).Cast <object>().ToArray());
            _menuDataSource.SelectedIndex = 0;

            _menuLabelDataElement.Items.AddRange(Enum.GetNames(typeof(DataElement)).Cast <object>().ToArray());
            _menuDataSource.SelectedIndex = 0;

            _menuChartType.Items.AddRange(
                Enum.GetValues(typeof(SeriesChartType))
                .Cast <SeriesChartType>()
                .Where(isChartTypeSupported)
                .Select(_ => _.ToString())
                .Cast <object>().ToArray());
            _menuChartType.SelectedIndex = 0;

            _menuFields.Items.AddRange(_fieldsOrder.Select(_ => _fields.ByName[_].Alias).Cast <object>().ToArray());

            foreach (var tab in _summTabs)
            {
                tab.TabAdded     += tabSummAdded;
                tab.TabRemoving  += tabSummRemoving;
                tab.TabReordered += tabSummReordered;
            }

            _menuPriceChartType.Items.AddRange(new object[]
            {
                SeriesChartType.Bar.ToString(),
                SeriesChartType.Pyramid.ToString(),
                SeriesChartType.Pie.ToString(),
                SeriesChartType.Doughnut.ToString()
            });

            _menuPriceChartType.SelectedIndex = 0;

            _menuPrice.Items.AddRange(new object[]
            {
                @"Low",
                @"Mid",
                @"High"
            });

            _menuPrice.SelectedIndex = 1;

            _menuPrice.SelectedIndexChanged          += priceMenuIndexChanged;
            _menuPriceChartType.SelectedIndexChanged += priceMenuIndexChanged;
            _menuChartType.SelectedIndexChanged      += chartTypeChanged;
            _buttonApplyFilter.CheckedChanged        += applyFilterChanged;
        }
예제 #5
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;
        }