示例#1
0
        void PasteUSS(string copyBuffer)
        {
            // Paste does nothing if document has no stylesheets.
            var mainStyleSheet = m_PaneWindow.document.activeStyleSheet;

            if (mainStyleSheet == null)
            {
                return;
            }

            var pasteStyleSheet = StyleSheetUtilities.CreateInstance();
            var importer        = new BuilderStyleSheetImporter(); // Cannot be cached because the StyleBuilder never gets reset.

            importer.Import(pasteStyleSheet, copyBuffer);

            // Select all pasted selectors.
            m_Selection.ClearSelection(null);
            foreach (var selector in pasteStyleSheet.complexSelectors)
            {
                BuilderAssetUtilities.AddStyleComplexSelectorToSelection(pasteStyleSheet, selector);
            }

            BuilderAssetUtilities.TransferAssetToAsset(m_PaneWindow.document, mainStyleSheet, pasteStyleSheet);

            ScriptableObject.DestroyImmediate(pasteStyleSheet);
        }
示例#2
0
        static void SwallowStyleRule(VisualTreeAsset vta, VisualTreeAsset other, VisualElementAsset vea)
        {
            if (vea.ruleIndex < 0)
                return;

            if (vta.inlineSheet == null)
                vta.inlineSheet = StyleSheetUtilities.CreateInstance();

            var toStyleSheet = vta.inlineSheet;
            var fromStyleSheet = other.inlineSheet;

            var rule = fromStyleSheet.rules[vea.ruleIndex];

            // Add rule to StyleSheet.
            var rulesList = toStyleSheet.rules.ToList();
            var index = rulesList.Count;
            rulesList.Add(rule);
            toStyleSheet.rules = rulesList.ToArray();

            // Add property values to sheet.
            foreach (var property in rule.properties)
            {
                for (int i = 0; i < property.values.Length; ++i)
                {
                    var valueHandle = property.values[i];
                    valueHandle.valueIndex =
                        toStyleSheet.SwallowStyleValue(fromStyleSheet, valueHandle);
                    property.values[i] = valueHandle;
                }
            }

            vea.ruleIndex = index;
        }
示例#3
0
        public void SelectionChanged()
        {
            if (m_CurrentVisualElement != null && BuilderSharedStyles.IsSelectorElement(m_CurrentVisualElement))
            {
                StyleSheetUtilities.RemoveFakeSelector(m_CurrentVisualElement);
            }

            m_CurrentVisualElement = null;

            foreach (var element in m_Selection.selection)
            {
                if (m_CurrentVisualElement != null) // We only support editing one element. Disable for for multiple elements.
                {
                    m_CurrentVisualElement = null;
                    break;
                }

                m_CurrentVisualElement = element;
            }

            if (m_CurrentVisualElement != null)
            {
                m_CachedVisualElement = m_CurrentVisualElement;
            }

            if (m_CurrentVisualElement != null && BuilderSharedStyles.IsSelectorElement(m_CurrentVisualElement))
            {
                StyleSheetUtilities.AddFakeSelector(m_CurrentVisualElement);
                m_Selection.NotifyOfStylingChange(null, null, BuilderStylingChangeType.RefreshOnly);
            }
            else
            {
                RefreshUI();
            }
        }
示例#4
0
 public static StyleSheet GetOrCreateInlineStyleSheet(this VisualTreeAsset vta)
 {
     if (vta.inlineSheet == null)
     {
         vta.inlineSheet = StyleSheetUtilities.CreateInstance();
     }
     return(vta.inlineSheet);
 }
        void PasteUSS(string copyBuffer)
        {
            var pasteStyleSheet = StyleSheetUtilities.CreateInstance();
            var importer        = new BuilderStyleSheetImporter(); // Cannot be cached because the StyleBuilder never gets reset.

            importer.Import(pasteStyleSheet, copyBuffer);

            BuilderAssetUtilities.TransferAssetToAsset(m_PaneWindow.document, pasteStyleSheet);

            ScriptableObject.DestroyImmediate(pasteStyleSheet);
        }
        public static StyleSheet DeepCopy(this StyleSheet styleSheet)
        {
            if (styleSheet == null)
            {
                return(null);
            }

            var newStyleSheet = StyleSheetUtilities.CreateInstance();

            styleSheet.DeepOverwrite(newStyleSheet);

            return(newStyleSheet);
        }
示例#7
0
        void PasteUSS(string copyBuffer)
        {
            var pasteStyleSheet = StyleSheetUtilities.CreateInstance();
            var importer        = new BuilderStyleSheetImporter(); // Cannot be cached because the StyleBuilder never gets reset.

            importer.Import(pasteStyleSheet, copyBuffer);

            BuilderAssetUtilities.TransferAssetToAsset(m_PaneWindow.document, pasteStyleSheet);

            m_Selection.ClearSelection(null);
            var scs = m_PaneWindow.document.mainStyleSheet.complexSelectors.Last();

            BuilderAssetUtilities.AddStyleComplexSelectorToSelection(m_PaneWindow.document, scs);

            ScriptableObject.DestroyImmediate(pasteStyleSheet);
        }
示例#8
0
        public static StyleRule GetOrCreateInlineStyleRule(this VisualTreeAsset vta, VisualElementAsset vea, out bool wasCreated)
        {
            wasCreated = vea.ruleIndex < 0;
            if (wasCreated)
            {
                if (vta.inlineSheet == null)
                {
                    var newSheet = StyleSheetUtilities.CreateInstance();
                    vta.inlineSheet = newSheet;
                }

                vea.ruleIndex = vta.inlineSheet.AddRule();
            }

            return(vta.inlineSheet.GetRule(vea.ruleIndex));
        }
示例#9
0
        void SetValue(string value, bool notify)
        {
            string cleanValue = StyleSheetUtilities.GetCleanVariableName(value);

            if (m_Value == cleanValue)
            {
                return;
            }

            var oldValue = m_Value;

            m_Value = cleanValue;

            if (panel != null && notify)
            {
                using (ChangeEvent <string> evt = ChangeEvent <string> .GetPooled(oldValue, cleanValue))
                {
                    evt.target = this;
                    SendEvent(evt);
                }
            }
            m_Field.SetValueWithoutNotify(m_Value);
            UpdatePlaceholderLabelVisibility();
        }
示例#10
0
 public BuilderTransformOrigin(TransformOrigin transformOrigin)
 {
     x = new Dimension(transformOrigin.x.value, StyleSheetUtilities.ConvertToDimensionUnit(transformOrigin.x.unit));
     y = new Dimension(transformOrigin.y.value, StyleSheetUtilities.ConvertToDimensionUnit(transformOrigin.y.unit));
 }
示例#11
0
 public BuilderTranslate(Translate translate)
 {
     x = new Dimension(translate.x.value, StyleSheetUtilities.ConvertToDimensionUnit(translate.x.unit));
     y = new Dimension(translate.y.value, StyleSheetUtilities.ConvertToDimensionUnit(translate.y.unit));
 }
示例#12
0
 public BuilderRotate(Rotate rotate)
 {
     x = new Dimension(rotate.angle.value, StyleSheetUtilities.ConvertToDimensionUnit(rotate.angle.unit));
 }