public override void Update() { Manager.NativeManager.Columns(2); var columnWidth = Manager.NativeManager.GetColumnWidth(0); if (isFirstUpdate) { Manager.NativeManager.SetColumnWidth(0, 120 * Manager.GetUIScaleBasedOnFontSize()); } var indent = new IndentInformation(); indent.Indent = 0; indent.IsSelecter = false; collection.Update(indent); Manager.NativeManager.Columns(1); isFirstUpdate = false; }
/// <summary> /// /// </summary> /// <param name="firstIndent"></param> /// <returns>last indent</returns> public IndentInformation Update(IndentInformation firstIndent) { var indent = firstIndent; if (isControlsChanged) { SetValue(bindingObject, 0); } controlRows.Lock(); for (int i = 0; i < controlRows.Internal.Count; i++) { var c = controlRows.Internal[i].Control as IParameterControl; if (controlRows.Internal[i].Children != null) { var item = controlRows.Internal[i]; if (string.IsNullOrEmpty(item.TreeNodeID)) { // Not tree view indent.Indent = controlRows[i].SelectorIndent; indent.IsSelecter = controlRows[i].IsSelector; indent = item.Children.Update(indent); } else { // Tree view var label = item.Label.ToString() + "###" + item.TreeNodeID; if (item.BindingValue is Data.Group.IToggleMode) { // CollapsingHeader with toggle Manager.NativeManager.Columns(1); Manager.NativeManager.Spacing(); var toggleId = "###" + item.TreeNodeID + "_toggle"; var toggleMode = item.BindingValue as Data.Group.IToggleMode; bool enabled = toggleMode.Enabled.GetValue(); bool opened = Manager.NativeManager.CollapsingHeaderWithToggle(label, swig.TreeNodeFlags.None, toggleId, ref enabled); if (enabled != toggleMode.Enabled.GetValue()) { toggleMode.Enabled.SetValue(enabled); } if (opened && !enabled) { string message = MultiLanguageTextProvider.GetText("TreeDisabled_Message"); Manager.NativeManager.TextWrapped(message); } Manager.NativeManager.Columns(2); if (opened && enabled) { indent = item.Children.Update(indent); } } else { // Simple CollapsingHeader Manager.NativeManager.Columns(1); Manager.NativeManager.Spacing(); bool opened = Manager.NativeManager.CollapsingHeader(label); Manager.NativeManager.Columns(2); if (opened) { indent = item.Children.Update(indent); } } //var opened = Manager.NativeManager.TreeNode(label); //if (opened) //{ // Manager.NativeManager.TreePop(); //} } continue; } if (c is Dummy) { continue; } if (c == null) { continue; } if ( (indent.Indent > controlRows[i].SelectorIndent || controlRows[i].IsSelector || (indent.Indent == controlRows[i].SelectorIndent && indent.IsSelecter))) { Manager.NativeManager.Separator(); } Manager.NativeManager.SetCursorPosY(Manager.NativeManager.GetCursorPosY() + Manager.TextOffsetY); Manager.NativeManager.Text(controlRows.Internal[i].Label.ToString()); if (Manager.NativeManager.IsItemHovered()) { Manager.NativeManager.BeginTooltip(); Manager.NativeManager.Text(controlRows.Internal[i].Label.ToString()); Manager.NativeManager.Separator(); Manager.NativeManager.Text(controlRows.Internal[i].Description.ToString()); Manager.NativeManager.EndTooltip(); } Manager.NativeManager.NextColumn(); Manager.NativeManager.PushItemWidth(-1); c.Update(); Manager.NativeManager.PopItemWidth(); Manager.NativeManager.NextColumn(); indent.Indent = controlRows[i].SelectorIndent; indent.IsSelecter = controlRows[i].IsSelector; } controlRows.Unlock(); if (isControlsChanged) { SetValue(bindingObject, 0); } return(indent); }
/// <summary> /// /// </summary> /// <param name="firstIndent"></param> /// <returns>last indent</returns> public IndentInformation Update(IndentInformation firstIndent) { var indent = firstIndent; if (isControlsChanged) { SetValue(bindingObject, 0); isControlsChanged = false; } controlRows.Lock(); for (int i = 0; i < controlRows.Internal.Count; i++) { var c = controlRows.Internal[i].Control as IParameterControl; if (controlRows.Internal[i].Children != null) { if (string.IsNullOrEmpty(controlRows.Internal[i].TreeNodeID)) { indent.Indent = controlRows[i].SelectorIndent; indent.IsSelecter = controlRows[i].IsSelector; indent = controlRows.Internal[i].Children.Update(indent); } else { var label = controlRows.Internal[i].Label.ToString() + "###" + controlRows.Internal[i].TreeNodeID; var opened = Manager.NativeManager.TreeNode(label); Manager.NativeManager.NextColumn(); Manager.NativeManager.NextColumn(); if (opened) { indent = controlRows.Internal[i].Children.Update(indent); } if (opened) { Manager.NativeManager.TreePop(); } } continue; } if (c is Dummy) { continue; } if (c == null) { continue; } if ( (indent.Indent > controlRows[i].SelectorIndent || controlRows[i].IsSelector || (indent.Indent == controlRows[i].SelectorIndent && indent.IsSelecter))) { Manager.NativeManager.Separator(); } Manager.NativeManager.SetCursorPosY(Manager.NativeManager.GetCursorPosY() + Manager.TextOffsetY); Manager.NativeManager.Text(controlRows.Internal[i].Label.ToString()); if (Manager.NativeManager.IsItemHovered()) { Manager.NativeManager.BeginTooltip(); Manager.NativeManager.Text(controlRows.Internal[i].Label.ToString()); Manager.NativeManager.Separator(); Manager.NativeManager.Text(controlRows.Internal[i].Description.ToString()); Manager.NativeManager.EndTooltip(); } Manager.NativeManager.NextColumn(); Manager.NativeManager.PushItemWidth(-1); c.Update(); Manager.NativeManager.PopItemWidth(); Manager.NativeManager.NextColumn(); indent.Indent = controlRows[i].SelectorIndent; indent.IsSelecter = controlRows[i].IsSelector; } controlRows.Unlock(); if (isControlsChanged) { SetValue(bindingObject, 0); isControlsChanged = false; } return(indent); }