/// <summary>
        /// если на графике уже есть индикатор ордеров - открыть его настройки
        /// иначе - добавить на график индикатор
        /// </summary>
        private void IndicatorOrdersMenuClick(object sender, EventArgs e)
        {
            var ordersIndi = indicators.FirstOrDefault(i => i is IndicatorOrders);
            if (ordersIndi != null)
            {
                var dlg = new IndicatorSettingsWindow { Indi = ordersIndi };
                dlg.ShowDialog();
                return;
            }

            // добавить индикатор и открыть окно его настроек
            var indi = new IndicatorOrders();
            AddNewIndicator(indi);
            new IndicatorSettingsWindow { Indi = indi }.ShowDialog();
        }
        private void EditIndicator(int indicatorDescriptionRow)
        {
            var indi = indicators[indicatorDescriptionRow];
            var oldName = indi.UniqueName;
            var tmpIndi = ((BaseChartIndicator)indi).Copy();
            var dlg = new IndicatorSettingsWindow { Indi = (IChartIndicator)tmpIndi };
            // открыть окно атрибутов узла
            if (dlg.ShowDialog() != DialogResult.OK) return;

            // обновить список индикаторов в графике
            ((BaseChartIndicator)dlg.Indi).Copy((BaseChartIndicator)indi);

            // обновить все связи между индикаторами
            owner.UpdateIndicatorPanesAndSeries();

            // обновить сам индикатор
            indi.AcceptSettings();

            if (indi.UniqueName == oldName)
            {
                var parametrizedName = ((BaseChartIndicator)indi).GenerateNameBySettings();
                if (!string.IsNullOrEmpty(parametrizedName))
                    indi.UniqueName = parametrizedName;
            }

            // обновить таблицу подстановки
            LookupTypeEditor.UpdatePropValues(indi);
            // проверить уникальность имени и если надо обновить связи на серии индюка
            if (oldName != indi.UniqueName)
            {
                owner.EnsureUniqueName(indi);
                owner.RefreshDisplaySeriesAndPanels(oldName, indi.UniqueName);
                owner.UpdateIndicatorPanesAndSeries();
            }

            // обновить подпись панели индикатора
            if (((BaseChartIndicator)indi).ownPane != null)
                ((BaseChartIndicator)indi).ownPane.Title = indi.UniqueName;

            if (onIndicatorUpdate != null)
                onIndicatorUpdate(oldName, indi);

            // проверить нарушения наследования
            CheckBrokenDependencies();
            BuildView();

            fastGrid.Invalidate();
            UpdateUserInterface();
        }
Example #3
0
        private void EditIndicator(int indicatorDescriptionRow)
        {
            var indi    = indicators[indicatorDescriptionRow];
            var oldName = indi.UniqueName;
            var tmpIndi = ((BaseChartIndicator)indi).Copy();
            var dlg     = new IndicatorSettingsWindow {
                Indi = (IChartIndicator)tmpIndi
            };

            // открыть окно атрибутов узла
            if (dlg.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            // обновить список индикаторов в графике
            ((BaseChartIndicator)dlg.Indi).Copy((BaseChartIndicator)indi);

            // обновить все связи между индикаторами
            owner.UpdateIndicatorPanesAndSeries();

            // обновить сам индикатор
            indi.AcceptSettings();

            if (indi.UniqueName == oldName)
            {
                var parametrizedName = ((BaseChartIndicator)indi).GenerateNameBySettings();
                if (!string.IsNullOrEmpty(parametrizedName))
                {
                    indi.UniqueName = parametrizedName;
                }
            }

            // обновить таблицу подстановки
            LookupTypeEditor.UpdatePropValues(indi);
            // проверить уникальность имени и если надо обновить связи на серии индюка
            if (oldName != indi.UniqueName)
            {
                owner.EnsureUniqueName(indi);
                owner.RefreshDisplaySeriesAndPanels(oldName, indi.UniqueName);
                owner.UpdateIndicatorPanesAndSeries();
            }

            // обновить подпись панели индикатора
            if (((BaseChartIndicator)indi).ownPane != null)
            {
                ((BaseChartIndicator)indi).ownPane.Title = indi.UniqueName;
            }

            if (onIndicatorUpdate != null)
            {
                onIndicatorUpdate(oldName, indi);
            }

            // проверить нарушения наследования
            CheckBrokenDependencies();
            BuildView();

            fastGrid.Invalidate();
            UpdateUserInterface();
        }