public void Paste() { var focused = m_PaneWindow.rootVisualElement.focusController.focusedElement as VisualElement; if (!BuilderEditorUtility.CopyBufferMatchesTarget(focused)) { return; } var copyBuffer = BuilderEditorUtility.systemCopyBuffer; if (BuilderEditorUtility.IsUxml(copyBuffer)) { PasteUXML(copyBuffer); } else if (BuilderEditorUtility.IsUss(copyBuffer)) { PasteUSS(copyBuffer); } else // Unknown string. { return; } if (m_CutElements.Count > 0) { foreach (var elementToCut in m_CutElements) { DeleteElement(elementToCut); } m_CutElements.Clear(); BuilderEditorUtility.systemCopyBuffer = null; } m_PaneWindow.OnEnableAfterAllSerialization(); // TODO: ListView bug. Does not refresh selection pseudo states after a // call to Refresh(). m_PaneWindow.rootVisualElement.schedule.Execute(() => { if (m_Selection.isEmpty) { return; } m_Selection.ForceReselection(); }).ExecuteLater(200); m_Selection.NotifyOfHierarchyChange(); }
static float ConvertAngle(float angle, Dimension.Unit fromUnit, Dimension.Unit toUnit) { return(BuilderEditorUtility.FixRoundOff(angle * GetFactor(fromUnit, toUnit))); }
public virtual void BuildElementContextualMenu(ContextualMenuPopulateEvent evt, VisualElement target) { var documentElement = target.GetProperty(BuilderConstants.ElementLinkedDocumentVisualElementVEPropertyName) as VisualElement; var linkedOpenVTA = documentElement?.GetProperty(BuilderConstants.ElementLinkedVisualTreeAssetVEPropertyName) as VisualTreeAsset; var isValidTarget = documentElement != null && !linkedOpenVTA && (documentElement.IsPartOfActiveVisualTreeAsset(paneWindow.document) || documentElement.GetStyleComplexSelector() != null); var isValidCopyTarget = documentElement != null && !linkedOpenVTA && (documentElement.IsPartOfCurrentDocument() || documentElement.GetStyleComplexSelector() != null); evt.StopImmediatePropagation(); evt.menu.AppendAction( "Copy", a => { ReselectIfNecessary(documentElement); if (isValidCopyTarget) { m_PaneWindow.commandHandler.CopySelection(); } }, isValidCopyTarget ? DropdownMenuAction.Status.Normal : DropdownMenuAction.Status.Disabled); evt.menu.AppendAction( "Paste", a => { m_PaneWindow.commandHandler.Paste(); }, BuilderEditorUtility.CopyBufferMatchesTarget(target) ? DropdownMenuAction.Status.Normal : DropdownMenuAction.Status.Disabled); evt.menu.AppendSeparator(); evt.menu.AppendAction( "Rename", a => { ReselectIfNecessary(documentElement); m_PaneWindow.commandHandler.RenameSelection(); }, isValidTarget ? DropdownMenuAction.Status.Normal : DropdownMenuAction.Status.Disabled); evt.menu.AppendAction( "Duplicate", a => { ReselectIfNecessary(documentElement); m_PaneWindow.commandHandler.DuplicateSelection(); }, isValidTarget ? DropdownMenuAction.Status.Normal : DropdownMenuAction.Status.Disabled); evt.menu.AppendAction( "Delete", a => { ReselectIfNecessary(documentElement); m_PaneWindow.commandHandler.DeleteSelection(); }, isValidTarget ? DropdownMenuAction.Status.Normal : DropdownMenuAction.Status.Disabled); var linkedInstancedVTA = documentElement?.GetProperty(BuilderConstants.ElementLinkedInstancedVisualTreeAssetVEPropertyName) as VisualTreeAsset; var linkedVEA = documentElement?.GetVisualElementAsset(); var linkedTemplateVEA = linkedVEA as TemplateAsset; var activeOpenUXML = document.activeOpenUXMLFile; var isLinkedOpenVTAActiveVTA = linkedOpenVTA == activeOpenUXML.visualTreeAsset; var isLinkedInstancedVTAActiveVTA = linkedInstancedVTA == activeOpenUXML.visualTreeAsset; var isLinkedVEADirectChild = activeOpenUXML.visualTreeAsset.templateAssets.Contains(linkedTemplateVEA); var showOpenInBuilder = linkedInstancedVTA != null; var showReturnToParentAction = isLinkedOpenVTAActiveVTA && activeOpenUXML.isChildSubDocument; var showOpenInIsolationAction = isLinkedVEADirectChild; var showOpenInPlaceAction = showOpenInIsolationAction; var showSiblingOpenActions = !isLinkedOpenVTAActiveVTA && isLinkedInstancedVTAActiveVTA; var showUnpackAction = isLinkedVEADirectChild; var showCreateTemplateAction = activeOpenUXML.visualTreeAsset.visualElementAssets.Contains(linkedVEA); if (showOpenInBuilder || showReturnToParentAction || showOpenInIsolationAction || showOpenInPlaceAction || showSiblingOpenActions) { evt.menu.AppendSeparator(); } if (showOpenInBuilder) { evt.menu.AppendAction( BuilderConstants.ExplorerHierarchyOpenInBuilder, action => { paneWindow.LoadDocument(linkedInstancedVTA); }); } if (showReturnToParentAction) { evt.menu.AppendAction( BuilderConstants.ExplorerHierarchyReturnToParentDocument + BuilderConstants.SingleSpace + "(" + activeOpenUXML.openSubDocumentParent.visualTreeAsset.name + ")", action => document.GoToSubdocument(documentElement, paneWindow, activeOpenUXML.openSubDocumentParent)); } if (showOpenInIsolationAction) { evt.menu.AppendAction( BuilderConstants.ExplorerHierarchyPaneOpenSubDocument, action => BuilderHierarchyUtilities.OpenAsSubDocument(paneWindow, linkedInstancedVTA)); } if (showOpenInPlaceAction) { evt.menu.AppendAction( BuilderConstants.ExplorerHierarchyPaneOpenSubDocumentInPlace, action => BuilderHierarchyUtilities.OpenAsSubDocument(paneWindow, linkedInstancedVTA, linkedTemplateVEA)); } if (showSiblingOpenActions) { evt.menu.AppendAction( BuilderConstants.ExplorerHierarchyPaneOpenSubDocument, action => { document.GoToSubdocument(documentElement, paneWindow, activeOpenUXML.openSubDocumentParent); BuilderHierarchyUtilities.OpenAsSubDocument(paneWindow, linkedInstancedVTA); }); evt.menu.AppendAction( BuilderConstants.ExplorerHierarchyPaneOpenSubDocumentInPlace, action => { document.GoToSubdocument(documentElement, paneWindow, activeOpenUXML.openSubDocumentParent); BuilderHierarchyUtilities.OpenAsSubDocument(paneWindow, linkedInstancedVTA, linkedTemplateVEA); }); } if (isLinkedVEADirectChild) { evt.menu.AppendAction( BuilderConstants.ExplorerHierarchySelectTemplate, action => { Selection.activeObject = linkedInstancedVTA; EditorGUIUtility.PingObject(linkedInstancedVTA.GetInstanceID()); }); } evt.menu.AppendSeparator(); if (showUnpackAction) { evt.menu.AppendAction( BuilderConstants.ExplorerHierarchyUnpackTemplate, action => { m_PaneWindow.commandHandler.UnpackTemplateContainer(documentElement); }); } if (showUnpackAction) { evt.menu.AppendAction( BuilderConstants.ExplorerHierarchyUnpackCompletely, action => { m_PaneWindow.commandHandler.UnpackTemplateContainer(documentElement, true); }); } if (showCreateTemplateAction) { evt.menu.AppendAction( BuilderConstants.ExplorerHierarchyCreateTemplate, action => { m_PaneWindow.commandHandler.CreateTemplateFromHierarchy(documentElement, activeOpenUXML.visualTreeAsset); }); } }