public MultiColumnTreeView(TreeViewState state, MultiColumnHeader multicolumnHeader, TreeModel <PackDirectoriesTreeElement> model) : base(state, multicolumnHeader, model) { Assert.AreEqual(m_SortOptions.Length, Enum.GetValues(typeof(AssetStreamingColumns)).Length, "Ensure number of sort options are in sync with number of MyColumns enum values"); // Custom setup rowHeight = kRowHeights; columnIndexForTreeFoldouts = 0; showAlternatingRowBackgrounds = true; showBorder = true; customFoldoutYOffset = (kRowHeights - EditorGUIUtility.singleLineHeight) * 0.5f; // center foldout in the row since we also center content. See RowGUI extraSpaceBeforeIconAndLabel = kToggleWidth; multicolumnHeader.sortingChanged += OnSortingChanged; // init checkbox // Common.Debug.Log("dirs: " + PackingDirectories.Directories.ToString()); List <string> directories = PackingDirectories.Directories; if (directories != null && model.root.children != null) { foreach (var treeElement in model.root.children) { PackDirectoriesTreeElement dirTreeElement = (PackDirectoriesTreeElement)treeElement; dirTreeElement.isChecked = PackingDirectories.IsBannedDirectory(dirTreeElement.fullPath) ? false : directories.Contains(dirTreeElement.fullPath); dirTreeElement.enabled = !PackingDirectories.IsReservedDirectory(dirTreeElement.fullPath) && !PackingDirectories.IsBannedDirectory(dirTreeElement.fullPath); } } Reload(); }
void CellGUI(Rect cellRect, TreeViewItem <PackDirectoriesTreeElement> item, AssetStreamingColumns column, ref RowGUIArgs args) { // Center cell rect vertically (makes it easier to place controls, icons etc in the cells) CenterRectUsingSingleLineHeight(ref cellRect); switch (column) { case AssetStreamingColumns.Directory: { args.rowRect = cellRect; base.RowGUI(args); } break; case AssetStreamingColumns.IsChecked: { bool newValue = EditorGUI.Toggle(cellRect, item.data.isChecked); // hide when outside cell rect if (newValue != item.data.isChecked) { item.data.isChecked = newValue; PackingDirectories.OnDirectoryPackingStatusChange(item.data.fullPath, newValue); } } break; } }
public static List <PackDirectoriesTreeElement> Generate() { var treeElements = new List <PackDirectoriesTreeElement>(); var root = new PackDirectoriesTreeElement("Root", "", true, true, -1, _idCounter); treeElements.Add(root); foreach (string directoryRelativePath in PackingDirectories.GetAllProjectDirectories()) { AddDirectoryAsChildren(directoryRelativePath, root, treeElements); } return(treeElements); }
void LoadProjectConfig() { JSONNode configJson = Utils.GetProjectSettingsJsonNode(); if (configJson == null) { Debug.Info("Load Project Config: Nothing to lowwwwad"); return; } List <string> pDirs = JsonHelper.ToStringList(configJson["PackingDirectories"].AsArray); if (pDirs.Count > 0 && pDirs[0].Contains(PathHelper.ProjectDirectory)) { PackingDirectories.Directories = pDirs; } else { if (pDirs.Count > 0) { Debug.LogError("Failed loading Packing Directories. Please config it again before do Packing."); } PackingDirectories.InitPackingDirectories(); } foreach (TransferMode t in Enum.GetValues(typeof(TransferMode))) { int modeInt = (int)t; string modeString = Enum.GetName(typeof(TransferMode), t); ContextForMode[modeInt].taskId = configJson["taskId"][modeString]; ContextForMode[modeInt].repoUsername = configJson["repoInfo"][modeString]["repoUsername"]; ContextForMode[modeInt].repoPassword = configJson["repoInfo"][modeString]["repoPassword"]; ContextForMode[modeInt].repoUrl = configJson["repoInfo"][modeString]["repoUrl"]; ContextForMode[modeInt].repoBranch = configJson["repoInfo"][modeString]["repoBranch"]; ContextForMode[modeInt].repoToken = configJson["repoInfo"][modeString]["repoToken"]; } }