示例#1
0
        public void CanSetStyleOnBody()
        {
            var doc = new Document();

            var style = new StyleEx();

            style.SetIndent("body", 5);

            style.GetIndent(doc).ShouldBe(5);
        }
示例#2
0
        public void CanSetStyleOnParagraph()
        {
            var doc = new Document();
            var para = doc.AddParagraph();

            var style = new StyleEx();

            style.SetIndent("p", 5);

            style.GetIndent(para).ShouldBe(5);
        }
示例#3
0
    void OnGUI()
    {
        if (_dirty)
        {
            dicKeys.Clear();
            _dirty = false;
        }

        EditorGUILayout.BeginVertical();
        _scroll = GUILayout.BeginScrollView(_scroll);

        #region target
        // set, select gameobject
        EditorGUILayout.BeginHorizontal();
        goTarget = EditorGUILayout.ObjectField("Target", goTarget, typeof(GameObject), true) as GameObject;
        EditorGUILayout.EndHorizontal();

        // revert, apply prefab
        DrawGOBehavior(goTarget);
        #endregion target

        if (goTarget)
        {
            // delete key if not same valid GameObject
            if (_instanceID != goTarget.GetInstanceID())
            {
                _instanceID = goTarget.GetInstanceID();
                foreach (string tmpkey in dicKeys.Keys)
                {
                    if (EditorPrefs.HasKey(tmpkey))
                    {
                        EditorPrefs.DeleteKey(tmpkey);
                    }
                }
            }

            // update sprites inforamtion
            SpriteManager.Update(goTarget);

            #region draw call information
            GUILayout.BeginHorizontal();
            GUILayout.Label(string.Format("Draw calls: {0}", SpriteManager.DrawCalls), GUILayout.Width(200f));
            if (GUILayout.Button("Get Draw Call"))
            {
                SpriteManager.GetDrawCalls(true);
            }
            GUILayout.EndHorizontal();
            #endregion draw call information

            for (int i = 0; i < SpriteManager.Count; i++)
            {
                #region layer main
                SRLayer layer = SpriteManager.list[i];

                // set color
                GUI.backgroundColor = allColors[i % allColors.Length];
                GUI.color           = Color.white;
                Color oldColor = defaultColor;

                #region layer field
                GUILayout.BeginHorizontal();

                // layer field
                int    currentLayer = layer.Index;
                string keyStr       = string.Format("L_{0}", currentLayer);
                int    massLayer    = currentLayer;
                if (dicKeys.ContainsKey(keyStr))
                {
                    massLayer = dicKeys[keyStr];
                }
                GUILayout.Label("Layer ID", GUILayout.Width(60f));
                dicKeys[keyStr] = EditorGUILayout.IntField(massLayer, GUILayout.Width(50f));

                GUILayout.EndHorizontal();
                #endregion layer field

                #region layer apply/reset
                if (massLayer != currentLayer)
                {
                    GUILayout.BeginHorizontal();
                    oldColor = GUI.backgroundColor;

                    // apply
                    GUI.backgroundColor = new Color(0.4f, 1f, 0.4f);
                    if (GUILayout.Button("Apply", GUILayout.Width(100f)))
                    {
                        // set new layer
                        for (int o = 0; o < layer.Orders.Count; o++)
                        {
                            tempOrders = layer.Orders[o];
                            for (int iO = 0; iO < tempOrders.Count; iO++)
                            {
                                tempOrders[iO].SetLayerID(massLayer);
                            }
                        }

                        // delete key
                        EditorPrefs.DeleteKey(keyStr);
                        for (int o = 0; o < layer.Orders.Count; o++)
                        {
                            tempOrders = layer.Orders[o];
                            if (tempOrders.Count == 0)
                            {
                                continue;
                            }

                            string okey = string.Format("L_{0}O_{1}", currentLayer, tempOrders[0].Index);
                            EditorPrefs.DeleteKey(okey);
                        }

                        _dirty = true;
                        GUI.FocusControl(null);
                        EditorUtility.SetDirty(goTarget);
                    }

                    // reset
                    GUI.backgroundColor = new Color(1f, 0.8f, 0.8f);
                    if (GUILayout.Button("Reset", GUILayout.Width(100f)))
                    {
                        dicKeys[keyStr] = currentLayer;
                        GUI.FocusControl(null);
                        EditorUtility.SetDirty(goTarget);
                    }

                    GUI.backgroundColor = oldColor;
                    GUILayout.EndHorizontal();
                }
                #endregion layer apply/reset

                // layer fold
                string headerStr      = string.Format("<b>Sorting Layer {0} ({1}) - Count: {2}</b>", layer.Index, layer.LayerName, layer.Count);
                bool   layerFoldedOut = DrawHeader(headerStr, keyStr);
                if (!layerFoldedOut)
                {
                    continue;
                }
                #endregion layer main

                StyleEx.BeginContent();

                #region orders main
                for (int o = 0; o < layer.Orders.Count; o++)
                {
                    tempOrders = layer.Orders[o];
                    if (tempOrders.Count == 0)
                    {
                        continue;
                    }

                    #region order field, fold
                    GUILayout.BeginHorizontal();

                    // order field
                    int currentOrder = tempOrders[0].Index;
                    keyStr = string.Format("L_{0}O_{1}", currentLayer, currentOrder);
                    bool orderFoldedOut = EditorPrefs.GetBool(keyStr, false);
                    int  massOrder      = currentOrder;
                    if (dicKeys.ContainsKey(keyStr))
                    {
                        massOrder = dicKeys[keyStr];
                    }
                    GUILayout.Label("Order", GUILayout.Width(40f));
                    dicKeys[keyStr] = EditorGUILayout.IntField(massOrder, GUILayout.Width(50f));

                    // order fold
                    string collapserName = string.Format("<b>Cont: {0}</b> - Click to {1}", tempOrders.Count, (orderFoldedOut ? "collapse" : "expand"));
                    bool   foldedOut     = DrawOrderCollapser(collapserName, keyStr, orderFoldedOut);

                    GUILayout.EndHorizontal();
                    #endregion order field, fold

                    #region order apply/reset
                    if (massOrder != currentOrder)
                    {
                        GUILayout.BeginHorizontal();
                        oldColor = GUI.backgroundColor;

                        // apply
                        GUI.backgroundColor = new Color(0.4f, 1f, 0.4f);
                        if (GUILayout.Button("Apply", GUILayout.Width(100f)))
                        {
                            // set new order
                            for (int iO = 0; iO < tempOrders.Count; iO++)
                            {
                                tempOrders[iO].SetOrder(massOrder);
                            }

                            // delete key
                            EditorPrefs.DeleteKey(keyStr);

                            _dirty = true;
                            GUI.FocusControl(null);
                            EditorUtility.SetDirty(goTarget);
                        }

                        // reset
                        GUI.backgroundColor = new Color(1f, 0.8f, 0.8f);
                        if (GUILayout.Button("Reset", GUILayout.Width(100f)))
                        {
                            dicKeys[keyStr] = currentOrder;
                            GUI.FocusControl(null);
                            EditorUtility.SetDirty(goTarget);
                        }

                        GUI.backgroundColor = oldColor;
                        GUILayout.EndHorizontal();
                    }
                    #endregion order apply/reset

                    #region same set of order
                    if (foldedOut)
                    {
                        var alignBefore = GUI.skin.button.alignment;
                        oldColor = GUI.backgroundColor;
                        GUI.skin.button.alignment = TextAnchor.MiddleLeft;
                        // draw GameObject button
                        for (int iW = 0; iW < tempOrders.Count; iW++)
                        {
                            GUILayout.BeginHorizontal();
                            GUILayout.Space(10f);

                            // button to select gameobject
                            GUI.backgroundColor = defaultColor;
                            if (GUILayout.Button(tempOrders[iW].Name, GUILayout.ExpandWidth(false)))
                            {
                                Selection.activeGameObject = tempOrders[iW].gameObject;
                            }

                            // order field
                            GUI.backgroundColor = oldColor;
                            GUILayout.Label("Order", GUILayout.Width(40f));
                            keyStr       = tempOrders[iW].SpriteRender.GetInstanceID().ToString();
                            currentOrder = tempOrders[iW].Index;
                            int singleOrder = currentOrder;
                            if (dicKeys.ContainsKey(keyStr))
                            {
                                singleOrder = dicKeys[keyStr];
                            }
                            dicKeys[keyStr] = EditorGUILayout.IntField(singleOrder, GUILayout.Width(50f));

                            #region single order apply/reset, show texture
                            GUI.skin.button.alignment = alignBefore;
                            if (singleOrder != currentOrder)
                            {
                                oldColor = GUI.backgroundColor;

                                // apply
                                GUI.backgroundColor = new Color(0.4f, 1f, 0.4f);
                                if (GUILayout.Button("Apply", GUILayout.Width(100f)))
                                {
                                    // set new order
                                    tempOrders[iW].SetOrder(singleOrder);
                                    // delete key
                                    EditorPrefs.DeleteKey(keyStr);

                                    _dirty = true;
                                    GUI.FocusControl(null);
                                    EditorUtility.SetDirty(goTarget);
                                }

                                // reset
                                GUI.backgroundColor = new Color(1f, 0.8f, 0.8f);
                                if (GUILayout.Button("Reset", GUILayout.Width(100f)))
                                {
                                    dicKeys[keyStr] = currentOrder;
                                    GUI.FocusControl(null);
                                    EditorUtility.SetDirty(goTarget);
                                }

                                GUI.backgroundColor = oldColor;
                            }
                            else
                            {
                                // todo show texture
                            }
                            #endregion single order apply/reset, show texture

                            GUILayout.EndHorizontal();
                        }
                        GUI.backgroundColor       = oldColor;
                        GUI.skin.button.alignment = alignBefore;
                    }
                    #endregion same set of order

                    GUILayout.Space(3f);
                }
                #endregion orders main

                StyleEx.EndContent();
            }
            GUI.color           = Color.white;
            GUI.backgroundColor = Color.white;
        }

        GUILayout.EndScrollView();
        EditorGUILayout.EndVertical();
    }
示例#4
0
        public TextboxEx CreateTextboxEx(StyleEx style, string fieldName, bool hidden)
        {
            if (style == null)
            {
                style = new StyleEx() { FontSize = "9pt", FontFamily = "宋体" };
            }
            var parap = new ParagraphEx
            {
                Style = style,
                TextRun = new TextRunEx()
                {
                    Value = new LocIDStringWithDataTypeAttribute { Value = fieldName },
                    Style = style
                }
            };

            var box = new TextboxEx
            {
                Paragraph = parap,
                CanGrow = true,
                Name = "textbox_" + Seed,
                Style = new StyleEx
                {
                    Border = new Border { Style = "Solid" }
                }
            };
            if (hidden)
            {
                box.Visibility = new Visibility() { Hidden = "true" };
            }

            Seed++;
            return box;
        }