Example #1
0
 /// <summary>
 /// сохранить размеры окошка, координаты и его текущую вкладку
 /// </summary>
 private void SaveNonChartWindowsPlacement(TerminalBookmark leaving)
 {
     foreach (var child in MdiChildren.Where(c => c is IMdiNonChartWindow))
     {
         var windowCode = ((IMdiNonChartWindow)child).WindowCode;
         var wnd        = nonChartWindows.FirstOrDefault(w => w.Window == windowCode &&
                                                         ((leaving == null) || (w.ChartTab == leaving.Id)));
         if (wnd == null)
         {
             continue;
         }
         // размеры и координаты
         try
         {
             wnd.WindowPos       = child.Location;
             wnd.WindowSize      = child.Size;
             wnd.WindowState     = child.WindowState.ToString();
             wnd.CurrentTabIndex = ((IMdiNonChartWindow)child).WindowInnerTabPageIndex;
         }
         catch (ObjectDisposedException)
         {
             continue;
         }
     }
 }
Example #2
0
        private void ShowBookmarkChildren(TerminalBookmark bookmark)
        {
            bookmarkStrip.SelectedBookmark = bookmark;

            var tabTag = bookmark.Id;

            // сохранить все окна графиков
            foreach (var child in Charts.Where(child => child.bookmarkId != tabTag))
            {
                child.SavePlacement();
                child.Hide();
            }

            // показать графики вкладки
            Charts.ForEach(c =>
            {
                try
                {
                    if (c.bookmarkId == tabTag)
                    {
                        c.Show();
                    }
                }
                catch (Exception ex)
                {
                    Logger.ErrorFormat("Переключение на вкладку {0}: {1}",
                                       tabTag, ex);
                    Logger.ErrorFormat("Window title is {0}", c.Text);
                    Logger.ErrorFormat("Ticker is {0}", c.chart.Symbol);
                    throw;
                }
            });

            Charts.ForEach(c =>
            {
                if (c.bookmarkId == tabTag)
                {
                    c.RestorePlacement();
                }
            });

            // убрать окна Счет, Доходность, Чат и прочие, если их нет на свежеоткрытой вкладке
            foreach (var child in MdiChildren.Where(c => c is IMdiNonChartWindow))
            {
                var windowCode = ((IMdiNonChartWindow)child).WindowCode;
                if (!nonChartWindows.Any(w => w.Window == windowCode && w.ChartTab == tabTag))
                {
                    child.Close();
                }
            }

            // показать окна (Счет, Доходность, Чат ...) текущей вкладки и установить им размеры
            foreach (var wind in nonChartWindows.Where(w => w.ChartTab == tabTag))
            {
                EnsureShowAndPlaceNonChartWindow(wind);
            }

            MenuItemVerticalClick(this, EventArgs.Empty);
        }
Example #3
0
 private void BookmarkSelected(TerminalBookmark leaving, TerminalBookmark entering)
 {
     BookmarkStorage.Instance.CurrentBookmarkId = entering.Id;
     // сохранить положиение и размеры окошек той вкладки, с которой уходим
     SaveNonChartWindowsPlacement(leaving);
     // показать окошки для вкладки
     ShowBookmarkChildren(entering);
 }
Example #4
0
 /// <summary>
 /// удалить графики, оставшиеся без вкладки
 /// </summary>
 private void InstanceOnBookmarkDeleted(TerminalBookmark terminalBookmark)
 {
     // закрыть графики - остальные окна не надо уничтожать, и так закроются
     foreach (var chart in Charts)
     {
         if (chart.bookmarkId != terminalBookmark.Id)
         {
             continue;
         }
         chart.Close();
     }
 }