private void DrawPicker() { if (m_VectorImageDatas[0] == null) { GUILayout.Label("Invalid vector image"); return; } if (m_VectorImageDatas[0].glyph == null) { GUILayout.Label("Invalid glyph"); return; } if (m_VectorImageDatas[0].font == null) { m_VectorImageDatas[0].font = VectorImageManager.GetIconFont(VectorImageManager.GetAllIconSetNames()[1]); } string[] names = VectorImageManager.GetAllIconSetNames(); if (!names.Contains(m_VectorImageDatas[0].font.name)) { m_VectorImageDatas[0].font.name = names[1]; } if (VectorImageManager.GetAllIconSetNames().Length > 0) { EditorGUI.BeginChangeCheck(); GUIContent[] namesContents = new GUIContent[names.Length]; for (int i = 0; i < names.Length; i++) { namesContents[i] = new GUIContent(names[i]); } m_VectorImageDatas[0].font = VectorImageManager.GetIconFont(names[EditorGUILayout.Popup(new GUIContent("Current Pack"), names.ToList().IndexOf(m_VectorImageDatas[0].font.name), namesContents)]); bool changed = EditorGUI.EndChangeCheck(); if (changed) { m_IconViewScrollPosition = Vector2.zero; } if (changed || m_VectorImageSet == null || m_IconFont == null) { UpdateFontPackInfo(); } DrawIconList(); } else { EditorGUILayout.HelpBox("No VectorImage fonts detected!", MessageType.Warning); } DrawBottomBar(); }
static MaterialUIIconHelper() { if (m_Font == null) { m_Font = VectorImageManager.GetIconFont(VectorImageManager.materialUIIconsFontName); } if (m_IconSet == null) { m_IconSet = VectorImageManager.GetIconSet(VectorImageManager.materialUIIconsFontName); } }
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { SerializedProperty code = property.FindPropertyRelative("m_Glyph.m_Unicode"); SerializedProperty name = property.FindPropertyRelative("m_Glyph.m_Name"); SerializedProperty font = property.FindPropertyRelative("m_Font"); GUIStyle iconStyle = new GUIStyle { font = (Font)font.objectReferenceValue, fontSize = 16 }; RectOffset offset = new RectOffset(0, 0, -1, -3); position = offset.Add(position); position.height = EditorGUIUtility.singleLineHeight; float offsetH = 0; offsetH -= EditorGUI.PrefixLabel(new Rect(position.x + offsetH, position.y, 40, position.height), label).width; offsetH += 40; if (!string.IsNullOrEmpty(name.stringValue)) { GUIContent iconLabel = new GUIContent(IconDecoder.Decode(code.stringValue)); EditorGUI.LabelField(new Rect(position.x + offsetH, position.y, 16, position.height), iconLabel, iconStyle); float iconWidth = iconStyle.CalcSize(iconLabel).x; offsetH += iconWidth + 2f; EditorGUI.LabelField(new Rect(position.x + offsetH, position.y, position.width - offsetH - 80, position.height), name.stringValue); } else { EditorGUI.LabelField(new Rect(position.x + offsetH, position.y, position.width - 70 - 56, position.height), "No icon selected"); } if (GUI.Button(new Rect(position.width - 74, position.y, 70, position.height), "Pick Icon")) { VectorImagePickerWindow.Show((VectorImageData)fieldInfo.GetValue(property.serializedObject.targetObject), property.serializedObject.targetObject); } if (GUI.Button(new Rect(position.width - 2, position.y, 18, position.height), IconDecoder.Decode(@"\ue14c"), new GUIStyle { font = VectorImageManager.GetIconFont(VectorImageManager.materialDesignIconsFontName) })) { VectorImageData data = ((VectorImageData)fieldInfo.GetValue(property.serializedObject.targetObject)); data.font = null; data.glyph = null; EditorUtility.SetDirty(property.serializedObject.targetObject); } }
private void UpdateFontPackInfo() { string name = m_VectorImageDatas[0].font.name; m_VectorImageSet = VectorImageManager.GetIconSet(name); m_IconFont = VectorImageManager.GetIconFont(name); m_GuiStyle = new GUIStyle { font = m_IconFont }; m_GuiStyle.normal.textColor = Color.white; UpdateGlyphList(); // Assign the very first icon of the imageSet if the glyph is null Glyph glyph = m_VectorImageSet.iconGlyphList.Where(x => x.name.Equals(m_VectorImageDatas[0].glyph.name) && x.unicode.Equals(m_VectorImageDatas[0].glyph.unicode.Replace("\\u", ""))).FirstOrDefault(); if (glyph == null) { SetGlyph(0); } }
public static void DrawIconPickLine(VectorImageData data, Object objectToRefresh, bool indent = false) { using (new GUILayout.HorizontalScope()) { if (data.font == null) { data.font = VectorImageManager.GetIconFont(VectorImageManager.GetAllIconSetNames()[0]); } GUIStyle iconGuiStyle = new GUIStyle { font = VectorImageManager.GetIconFont(data.font.name) }; EditorGUILayout.PrefixLabel("Icon"); if (indent) { EditorGUI.indentLevel--; } EditorGUILayout.LabelField(IconDecoder.Decode(data.glyph.unicode), iconGuiStyle, GUILayout.Width(18f)); EditorGUILayout.LabelField(data.glyph.name, GUILayout.MaxWidth(100f), GUILayout.MinWidth(0f)); GUILayout.FlexibleSpace(); if (GUILayout.Button("Pick icon", EditorStyles.miniButton, GUILayout.MaxWidth(60f))) { Show(data, objectToRefresh); return; } if (GUILayout.Button("X", EditorStyles.miniButton, GUILayout.MaxWidth(20f))) { for (int i = 0; i < m_VectorImageDatas.Length; i++) { m_VectorImageDatas[i] = null; } return; } if (indent) { EditorGUI.indentLevel++; } } }
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { GetProperties(property); Rect pos = position; pos.height = EditorGUI.GetPropertyHeight(m_ImageDataType); float labelWidth = GUI.skin.GetStyle("Label").CalcSize(label).x; float i = EditorGUI.PrefixLabel(new Rect(pos.x, pos.y, labelWidth, pos.height), label).width; pos.x -= i - 54; pos.width += i - 55; if (property.name.Equals("m_ToggleOnIcon") || property.name.Equals("m_ToggleOffIcon")) { pos.x += 33; pos.width -= 33; } else if (property.name.Equals("m_TabIcon")) { pos.x -= 3; pos.width += 3; } if (m_ImageDataType.enumValueIndex == 0) { pos.height = EditorGUI.GetPropertyHeight(m_Sprite); EditorGUI.PropertyField(pos, m_Sprite, GUIContent.none); } if (m_ImageDataType.enumValueIndex == 1) { pos.height = EditorGUI.GetPropertyHeight(m_VectorImageData); SerializedProperty code = m_VectorImageData.FindPropertyRelative("m_Glyph.m_Unicode"); SerializedProperty name = m_VectorImageData.FindPropertyRelative("m_Glyph.m_Name"); SerializedProperty font = m_VectorImageData.FindPropertyRelative("m_Font"); GUIStyle iconStyle = new GUIStyle { font = (Font)font.objectReferenceValue }; float pickButtonWidth = 70; float pickButtonPadding = 88; float clearButtonWidth = 18; float clearButtonPadding = 14; if (!string.IsNullOrEmpty(name.stringValue)) { EditorGUI.LabelField(new Rect(pos.x, pos.y, 16, pos.height), IconDecoder.Decode(code.stringValue), iconStyle); pos.x += 16; pos.width -= 16; EditorGUI.LabelField(new Rect(pos.x, pos.y, pos.width, position.height), name.stringValue); } else { EditorGUI.LabelField( new Rect(pos.x, pos.y, pos.width - (pickButtonWidth + clearButtonWidth), pos.height), "No icon selected"); } if (GUI.Button(new Rect((pos.x + pos.width) - pickButtonPadding, pos.y, pickButtonWidth, pos.height), "Pick Icon")) { VectorImagePickerWindow.Show( ((ImageData)fieldInfo.GetValue(m_VectorImageData.serializedObject.targetObject)) .vectorImageData, property.serializedObject.targetObject); } if (GUI.Button(new Rect((pos.x + pos.width - 1) - clearButtonPadding, pos.y, clearButtonWidth, pos.height), IconDecoder.Decode(@"\ue14c"), new GUIStyle { font = VectorImageManager.GetIconFont(VectorImageManager.materialDesignIconsFontName) })) { VectorImageData data = (((ImageData)fieldInfo.GetValue(m_VectorImageData.serializedObject.targetObject)) .vectorImageData); data.font = null; data.glyph = null; EditorUtility.SetDirty(property.serializedObject.targetObject); } } }
private void DrawOptionData(Rect rect, int index, bool isActive, bool isFocused) { SerializedProperty itemData = m_ReorderableList.serializedProperty.GetArrayElementAtIndex(index); SerializedProperty itemText = itemData.FindPropertyRelative("m_Text"); SerializedProperty itemSprite = itemData.FindPropertyRelative("m_ImageData.m_Sprite"); SerializedProperty itemCode = itemData.FindPropertyRelative("m_ImageData.m_VectorImageData.m_Glyph.m_Unicode"); SerializedProperty itemName = itemData.FindPropertyRelative("m_ImageData.m_VectorImageData.m_Glyph.m_Name"); GUIStyle iconStyle = new GUIStyle { font = (Font)itemData.FindPropertyRelative("m_ImageData.m_VectorImageData.m_Font").objectReferenceValue }; SerializedProperty itemImageType = itemData.FindPropertyRelative("m_ImageData.m_ImageDataType"); RectOffset offset = new RectOffset(0, 0, -1, -3); rect = offset.Add(rect); rect.height = EditorGUIUtility.singleLineHeight; float offsetH = 0; EditorGUI.LabelField(new Rect(rect.x, rect.y, 16, rect.height), index.ToString()); offsetH += 16; EditorGUI.LabelField(new Rect(rect.x + offsetH, rect.y, 35, rect.height), "Text", EditorStyles.boldLabel); offsetH += 35; EditorGUI.PropertyField(new Rect(rect.x + offsetH, rect.y, (rect.width / 3) - offsetH, rect.height), itemText, GUIContent.none); offsetH += (rect.width / 3) - offsetH + 8; EditorGUI.LabelField(new Rect(rect.x + offsetH, rect.y, 32, rect.height), "Icon", EditorStyles.boldLabel); offsetH += 32; itemImageType.enumValueIndex = m_ImageType.enumValueIndex; if (m_ImageType.enumValueIndex == 0) { EditorGUI.PropertyField(new Rect(rect.x + offsetH, rect.y, rect.width - offsetH, rect.height), itemSprite, GUIContent.none); } else { if (!string.IsNullOrEmpty(itemName.stringValue)) { EditorGUI.LabelField(new Rect(rect.x + offsetH, rect.y, 16, rect.height), IconDecoder.Decode(itemCode.stringValue), iconStyle); offsetH += 16; EditorGUI.LabelField(new Rect(rect.x + offsetH, rect.y, rect.width - offsetH - 80, rect.height), itemName.stringValue); } else { EditorGUI.LabelField(new Rect(rect.x + offsetH, rect.y, rect.width - offsetH - 80, rect.height), "No icon selected"); } if (GUI.Button(new Rect(rect.width - 60, rect.y, 70, rect.height), "Pick Icon")) { IOptionDataListContainer optionDataListContainer = itemData.serializedObject.targetObject as IOptionDataListContainer; VectorImagePickerWindow.Show(optionDataListContainer.optionDataList.options[index].imageData.vectorImageData, itemData.serializedObject.targetObject); } if (GUI.Button(new Rect(rect.width + 16, rect.y, 18, rect.height), IconDecoder.Decode(@"\ue14c"), new GUIStyle { font = VectorImageManager.GetIconFont(VectorImageManager.materialDesignIconsFontName) })) { IOptionDataListContainer optionDataListContainer = itemData.serializedObject.targetObject as IOptionDataListContainer; VectorImageData data = optionDataListContainer.optionDataList.options[index].imageData.vectorImageData; data.font = null; data.glyph = null; EditorUtility.SetDirty(itemData.serializedObject.targetObject); } } }