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(); }
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++; } } }