Exemple #1
0
        private void PasteClipboardFromSystemBuffer(object obj)
        {
            int    index        = (int)obj;
            string systemBuffer = GUIUtility.systemCopyBuffer;

            if (string.IsNullOrEmpty(systemBuffer) || !systemBuffer.StartsWith("Inspect+", StringComparison.Ordinal))
            {
                return;
            }

            using (MemoryStream stream = new MemoryStream(Convert.FromBase64String(systemBuffer.Substring(8))))
                using (BinaryReader reader = new BinaryReader(stream))
                {
                    SerializedClipboard _clipboard = new SerializedClipboard(reader);

                    if (clipboard.Count >= CLIPBOARD_CAPACITY)
                    {
                        clipboard.RemoveAt(0);
                        clipboardValues.RemoveAt(0);
                    }

                    clipboard.Insert(index, _clipboard);
                    clipboardValues.Insert(index, _clipboard.RootValue.GetClipboardObject(null));

                    ActiveClipboardIndex = index;

                    Repaint();
                    SaveClipboard();
                }
        }
Exemple #2
0
        public static void RemoveClipboard(SerializedClipboard clipboard)
        {
            int index = PasteBinWindow.clipboard.IndexOf(clipboard);

            if (index >= 0)
            {
                RemoveClipboard(index);

                if (mainWindow)
                {
                    mainWindow.Repaint();
                }
            }
        }
Exemple #3
0
        public static void DrawClipboardOnGUI(SerializedClipboard clipboard, object clipboardValue, bool isActiveClipboard, bool showTooltip)
        {
            if (clipboardLabelGUIStyle == null)
            {
                clipboardLabelGUIStyle = new GUIStyle(EditorStyles.boldLabel)
                {
                    wordWrap = true
                }
            }
            ;

            if (!isActiveClipboard)
            {
                GUILayout.BeginVertical(PasteBinTooltip.Style);
            }
            else
            {
                Color backgroundColor = GUI.backgroundColor;
                GUI.backgroundColor = Color.Lerp(backgroundColor, ACTIVE_CLIPBOARD_COLOR, 0.5f);
                GUILayout.BeginVertical(PasteBinTooltip.Style);
                GUI.backgroundColor = backgroundColor;
            }

            if (showTooltip)
            {
                EditorGUILayout.LabelField(clipboard.LabelContent, clipboardLabelGUIStyle);
            }
            else
            {
                EditorGUILayout.LabelField(clipboard.Label, clipboardLabelGUIStyle);
            }

            EditorGUI.indentLevel++;

            if (clipboardValue == null || clipboardValue.Equals(null) || clipboardValue is Object)
            {
                EditorGUILayout.ObjectField(GUIContent.none, clipboardValue as Object, typeof(Object), true);
            }
            else if (clipboardValue is long)
            {
                EditorGUILayout.TextField(GUIContent.none, ((long)clipboardValue).ToString());
            }
            else if (clipboardValue is double)
            {
                EditorGUILayout.TextField(GUIContent.none, ((double)clipboardValue).ToString());
            }
            else if (clipboardValue is Color)
            {
                EditorGUILayout.ColorField(GUIContent.none, (Color)clipboardValue);
            }
            else if (clipboardValue is string)
            {
                EditorGUILayout.TextField(GUIContent.none, (string)clipboardValue);
            }
            else if (clipboardValue is bool)
            {
                EditorGUILayout.Toggle(GUIContent.none, (bool)clipboardValue);
            }
            else if (clipboardValue is AnimationCurve)
            {
                EditorGUILayout.CurveField(GUIContent.none, (AnimationCurve)clipboardValue);
            }
            else if (clipboardValue is Gradient)
            {
                gradientField.Invoke(null, new object[] { GUIContent.none, clipboardValue, null });
            }
            else if (clipboardValue is VectorClipboard)
            {
                EditorGUILayout.Vector4Field(GUIContent.none, (VectorClipboard)clipboardValue);
            }
            else if (clipboardValue is ArrayClipboard)
            {
                ArrayClipboard obj = (ArrayClipboard)clipboardValue;
                EditorGUILayout.TextField(GUIContent.none, string.Concat(obj.elementType, "[", obj.elements.Length, "] array"));
            }
            else if (clipboardValue is GenericObjectClipboard)
            {
                EditorGUILayout.TextField(GUIContent.none, ((GenericObjectClipboard)clipboardValue).type + " object");
            }
            else if (clipboardValue is ManagedObjectClipboard)
            {
                EditorGUILayout.TextField(GUIContent.none, ((ManagedObjectClipboard)clipboardValue).type + " object (SerializeField)");
            }
            else if (clipboardValue is GameObjectHierarchyClipboard)
            {
                EditorGUILayout.TextField(GUIContent.none, ((GameObjectHierarchyClipboard)clipboardValue).name + " (Complete GameObject)");
            }
            else if (clipboardValue is AssetFilesClipboard)
            {
                EditorGUILayout.TextField(GUIContent.none, ((AssetFilesClipboard)clipboardValue).paths[0] + " (Asset File)");
            }
            else
            {
                EditorGUILayout.TextField(GUIContent.none, clipboard.RootValue.GetType().Name + " object");
            }

            EditorGUI.indentLevel--;
            GUILayout.EndVertical();
        }