public void ExcludeFromGroup(DisplayNode node) { if (node.Parent != null) { DisplayGroupNode groupNode = node.Parent as DisplayGroupNode; if (groupNode != null) { groupNode.DisplayGroup.DisplayNameList.Remove(node.Display.Type.Name); PresentationController.Instance.CurrentSlideLayout.RemoveFromLayout(node.Display); foreach (Slide slide in PresentationController.Instance.GetAllSlides() .Where(sld=> !sld.Name.Equals(PresentationController.Instance.CurrentSlideLayout.Slide.Name))) { IEnumerable<Display> displs = slide.DisplayList.Where(dsp => groupNode.DisplayGroup.DisplayNameList.Contains(dsp.Type.Name)); SlideLayout sltemp = new SlideLayout(displs, slide); sltemp.RemoveFromLayout(node.Display); } PresentationController.Instance.PresentationChanged = true; if (groupNode.DisplayGroup.DisplayNameList.Count == 0) { groupNode.DisplayGroup.Width = 0; groupNode.DisplayGroup.Height = 0; groupNode.DisplayGroup.Type = String.Empty; groupNode.OpenImgIndex = 1; groupNode.NoChildrenImgIndex = 0; } node.Display.DisplayGroup = null; } } }
/// <summary> /// Проверяет можно ли добавить дисплей на область мониторинга (разрешить grag-n-drop) /// </summary> /// <param name="node">Перетаскиваемая нода</param> /// <returns>true, если можно</returns> public bool canAddViewer(DisplayNode node) { return !m_Viewers.ContainsKey(node.Display.Type.Name); }
private void LoadDisplays(bool rememberLastDisplay) { displayTree.Nodes.Clear(); DisplayNode d1 = null; DisplayGroupNode d2 = null; TreeNodeAdv tNode = displayTree.SelectedNode; // Выбираем дисплеи в том порядке, в котором их отсортировал пользователь var query = from d in DisplayController.Instance.UngrouppedDisplays() join ord in PresentationController.Instance.Presentation.DisplayPositionList on d.Name equals ord.Key into d_ord from sub in d_ord.DefaultIfEmpty() orderby (sub.Key == null ? -1 : sub.Value) select d; foreach (Display disp in query/*DisplayController.Instance.UngrouppedDisplays()*/) { DisplayNode node = new DisplayNode(disp); //if (DisplayController.IsPlayerMode) bool? state = DisplayController.Instance.DisplayStates[disp]; node.TextColor = state.HasValue ? (state.Value ? Color.Green : Color.Red) : Color.Black; //node.TextColor = DisplayController.Instance.DisplayStates[disp] ? Color.Black : Color.Red; if (d1 == null) { d1 = node; displayTree.Nodes.Add(d1); } else displayTree.Nodes.Add(node); } foreach (var dd in DisplayController.Instance.GrouppedDisplays()) { DisplayGroupNode groupNode = new DisplayGroupNode(dd.Key); if (d2 == null) d2 = groupNode; foreach (Display display in dd.Value) { DisplayNode node = new DisplayNode(display); //if (DisplayController.IsPlayerMode) bool? state = DisplayController.Instance.DisplayStates[display]; node.TextColor = state.HasValue ? (state.Value ? Color.Green : Color.Red) : Color.Black; //node.TextColor = DisplayController.Instance.DisplayStates[display] ? Color.Black : Color.Red; groupNode.Nodes.Add(node); } displayTree.Nodes.Add(groupNode); } if (d1 != null && !rememberLastDisplay) { DisplayController.Instance.SelectDisplay(d1.Display); this.displayTree.SelectedNode = d1; return; } if (d2 != null && !rememberLastDisplay) { DisplayController.Instance.SelectDisplayGroup(d2.DisplayGroup); this.displayTree.SelectedNode = d2; } if (rememberLastDisplay && tNode != null) { if (displayTree.Nodes.Contains(tNode)) displayTree.SelectedNode = tNode; } this.displayTree.SelectedNodeForeColor = this.displayTree.SelectedNode.TextColor; this.displayTree.InactiveSelectedNodeForeColor = this.displayTree.SelectedNode.TextColor; }