예제 #1
0
        private void MenuNewChartClick(object sender, EventArgs e)
        {
            var dlg = new NewChartForm();
            if (dlg.ShowDialog() == DialogResult.Cancel) return;
            var smb = dlg.Ticker;
            var timeframe = dlg.Timeframe;

            // если символ введен с несоблюдением регистра - заменить на оригинал
            // если символ отсутствует - ругнуться
            var allSymbols = DalSpot.Instance.GetTickerNames();
            var chartSmb = allSymbols.FirstOrDefault(s => s.Equals(smb, StringComparison.OrdinalIgnoreCase));
            if (string.IsNullOrEmpty(chartSmb))
            {
                MessageBox.Show(string.Format(Localizer.GetString("MessageSymbolSNotFound"), smb), Localizer.GetString("TitleError"));
                return;
            }

            var child = new ChartForm(this, chartSmb)
                            {
                                chart = {Timeframe = timeframe},
                                prefferedCountDaysInRequest = dlg.DaysInRequest
                            };
            SetupChartForm(child);

            ApplyTemplate(dlg.TemplateName, child);

            child.Show();
            child.LoadQuotesAndBuildChart(true);
        }
예제 #2
0
        private void LoadChildChart(ChartWindowSettings chartInf, XmlElement nodeObjects,
            XmlElement nodeIndi, bool loadQuotesFromServer)
        {
            foreach (var childold in Charts.Where(childold => childold.UniqueId == chartInf.UniqueId
                && childold.bookmarkId == chartInf.TabPageId && childold.chart.Symbol == chartInf.Symbol))
            {
                childold.Close();
            }

            ChartForm child;
            using (new TimeLogger("new ChartForm"))
            {
                child = new ChartForm(this, chartInf) { UniqueId = chartInf.UniqueId };
                SetupChartForm(child);
                child.bookmarkId = chartInf.TabPageId;
                // если окно ссылается на несуществующую вкладку - приписать его к существующей
                var bookmark = BookmarkStorage.Instance[child.bookmarkId];
                if (bookmark == null)
                    child.bookmarkId = BookmarkStorage.Instance.bookmarks[0].Id;
            }

            using (new TimeLogger("nodeObjects"))
            {
                if (!string.IsNullOrEmpty(chartInf.Timeframe))
                    child.chart.Timeframe = new BarSettings(chartInf.Timeframe);

                // указать ветку объектов для документа
                if (nodeObjects != null) child.xmlRootObjects = nodeObjects;

                // загрузить индюки для чарта
                if (nodeIndi != null)
                {
                    child.chart.LoadIndicatorSettings(nodeIndi);
                    child.chart.UpdateIndicatorPanesAndSeries();
                }
            }

            using (new TimeLogger("child.Show()"))
            {
                // выставить размеры панелей
                child.LoadPaneLocations(chartInf);

                // применить тему оформления
                child.chart.chart.visualSettings.ApplyTheme();

                child.Show();
            }
            using (new TimeLogger("LoadQuotesAndBuildChart"))
                child.LoadQuotesAndBuildChart(loadQuotesFromServer);
            if (chartInf.FirstCandleIndex == chartInf.LastCandleIndex)
                child.chart.chart.FitChart();
            // выставить размеры и позицию
            if (chartInf.WindowSize.Width > 20 && chartInf.WindowSize.Height > 10)
                child.SetBounds(chartInf.WindowPos.X, chartInf.WindowPos.Y,
                                chartInf.WindowSize.Width, chartInf.WindowSize.Height);
            child.WindowState = (FormWindowState)Enum.Parse(typeof(FormWindowState), chartInf.WindowState);
            //tabCtrl.SelectedTab = tp;
        }