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); }
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; }