/// For use when in a custom window, draws the menu-bar. public void DrawMenuBar() { ImGuiCli.BeginMenuBar(); ImGuiCli.PushItemWidth(ImGuiCli.GetContentRegionAvailWidth() * 0.65f); filter_.Draw(ICON_FA.FILTER + " Filter"); ImGuiCli.SameLine(); ImGuiCli.SetCursorPosX(ImGuiCli.GetWindowWidth() - ImGuiCli.CalcTextSize(ICON_FA.EYE + ICON_FA.SORT_ALPHA_DOWN + " ").X - ImGuiStyle.FramePadding.X * 3); if (ImGuiCli.Button(IsAlphabetical ? ICON_FA.OBJECT_GROUP : ICON_FA.SORT_ALPHA_DOWN)) { IsAlphabetical = !IsAlphabetical; } if (ImGuiCli.IsItemHovered()) { ImGuiCli.SetTooltip(IsAlphabetical ? "Group fields" : "Order alphabetically"); } if (ImGuiCli.Button(IsAdvanced ? ICON_FA.EYE : ICON_FA.EYE_SLASH)) { IsAdvanced = !IsAdvanced; } if (ImGuiCli.IsItemHovered()) { ImGuiCli.SetTooltip(IsAdvanced ? "Showing advanced fields" : "Hiding advanced fields"); } ImGuiCli.EndMenuBar(); }
public void DrawMenuBar() { ImGuiCli.BeginMenuBar(); if (!CurrentDirectory.EndsWith(":") && !CurrentDirectory.EndsWith(":\\")) { //ImGuiEx.PushBoldFont(); if (ImGuiCli.Button(ICON_FA.LEVEL_UP_ALT, new Vector2(32, 0))) { CurrentDirectory = System.IO.Directory.GetParent(CurrentDirectory).FullName; UpdateItems(); } if (ImGuiCli.IsItemHovered()) { ImGuiCli.SetTooltip("To parent directory"); } //ImGuiEx.PopFont(); } ImGuiCli.Text(CurrentDirectory); ImGuiCli.PushItemWidth(ImGuiCli.GetContentRegionAvailWidth() * 0.7f - 70); filter_.Draw(ICON_FA.FILTER + " Filter"); ImGuiCli.PopItemWidth(); //ImGuiEx.PushBoldFont(); ImGuiCli.SetCursorPosX(ImGuiCli.GetWindowWidth() - ImGuiCli.CalcTextSize(ICON_FA.LIST_UL + " + " + ICON_FA.STAR).X); //70); if (ImGuiCli.Button(ICON_FA.LIST_UL)) { asDetail_ = !asDetail_; } if (ImGuiCli.IsItemHovered()) { ImGuiCli.SetTooltip("Toggle details view"); } if (ImGuiCli.Button("+" + ICON_FA.STAR)) { if (!Favorites.Contains(CurrentDirectory)) { Favorites.Add(CurrentDirectory); } } if (ImGuiCli.IsItemHovered()) { ImGuiCli.SetTooltip("Add to favorites"); } //ImGuiEx.PopFont(); ImGuiCli.EndMenuBar(); }
public void Draw() { if (newDirectory_ != null && newDirectory_ != CurrentDirectory) { CurrentDirectory = newDirectory_; UpdateItems(); } // Left hand side, draw the local roots, favorites and recent float totalWidth = ImGuiCli.GetContentRegionAvailWidth(); float w = totalWidth; float fontHeight = ImGuiCli.GetFontSize(); float fSize = fontHeight * 16; w = Math.Min(w * 0.33f, fSize); float yAvail = ImGuiCli.GetContentRegionAvail().Y; ImGuiCli.BeginChild("##folder_tree", new Vector2(w, yAvail), true); //ImGuiEx.PushBoldFont(); bool localOpen = ImGuiCli.CollapsingHeader(ICON_FA.FOLDER + " LOCAL"); //ImGuiEx.PopFont(); if (localOpen) { DrawTree(rootEntry_); } //ImGuiEx.PushBoldFont(); bool favoritesOpen = ImGuiCli.CollapsingHeader(ICON_FA.STAR + " FAVORITES"); //ImGuiEx.PopFont(); if (favoritesOpen) { ImGuiCli.Indent(); for (int i = 0; i < Favorites.Count; ++i) { ImGuiCli.PushID(i + 1); Texture2D thumbnail = thumbCache_.GetOrCreateThumbnail(Favorites[i]); if (thumbnail != null) { ImGuiCli.Image(thumbnail, new Vector2(fontHeight, fontHeight)); ImGuiCli.SameLine(); } string dispValue = Favorites[i].Substring(Favorites[i].Substring(0, Favorites[i].LastIndexOf("\\")).LastIndexOf("\\") + 1); ImGuiCli.Text(dispValue); if (ImGuiCli.IsItemClicked(0)) { CurrentDirectory = Favorites[i]; UpdateItems(); } else if (ImGuiCli.IsItemClicked(1)) { ImGuiCli.OpenPopup("#favorite_ctx"); } if (ImGuiCli.BeginPopup("#favorite_ctx", ImGuiWindowFlags_.None)) { if (ImGuiCli.MenuItem(ICON_FA.MINUS + " Remove")) { Favorites.RemoveAt(i); --i; } ImGuiCli.EndPopup(); } ImGuiCli.PopID(); } ImGuiCli.Unindent(); } //ImGuiEx.PushBoldFont(); bool recentOpen = ImGuiCli.CollapsingHeader(ICON_FA.CLOCK + " RECENT"); //ImGuiEx.PopFont(); if (recentOpen) { ImGuiCli.Indent(); for (int i = 0; i < Recents.Count; ++i) { ImGuiCli.PushID(i + 1); Texture2D thumbnail = thumbCache_.GetOrCreateThumbnail(Recents[i]); if (thumbnail != null) { ImGuiCli.Image(thumbnail, new Vector2(fontHeight, fontHeight)); ImGuiCli.SameLine(); } string dispValue = Recents[i].Substring(Recents[i].Substring(0, Recents[i].LastIndexOf("\\")).LastIndexOf("\\") + 1); ImGuiCli.Text(dispValue); if (ImGuiCli.IsItemClicked(0)) { CurrentDirectory = Recents[i]; UpdateItems(); } else if (ImGuiCli.IsItemClicked(1)) { ImGuiCli.OpenPopup("#Recents_ctx"); } if (ImGuiCli.BeginPopup("#Recents_ctx", ImGuiWindowFlags_.None)) { if (ImGuiCli.MenuItem(ICON_FA.MINUS + " Remove")) { Recents.RemoveAt(i); --i; } ImGuiCli.EndPopup(); } ImGuiCli.PopID(); } ImGuiCli.Unindent(); } ImGuiCli.EndChild(); ImGuiCli.SameLine(); // Right hand side, list the current items float contentWidth = totalWidth - w - ImGuiStyle.WindowPadding.X; ImGuiCli.BeginChild("##dir_content_region", new Vector2(contentWidth, yAvail), true); float itemSize = asDetail_ ? 48 : 128; int columns = (int)(contentWidth / (asDetail_ ? 256.0f : 128.0f)); columns = columns < 1 ? 1 : columns; ImGuiCli.Columns(columns, false); for (int i = 0; i < currentItems_.Count; ++i) { string item = currentItems_[i]; if (item == "." || item == "..") { continue; } if (ExcludeFilesystemItem(item)) { continue; } string displayName = item.Substring(item.LastIndexOf('\\') + 1); if (filter_.IsActive && !filter_.PassFilter(displayName)) { continue; } ImGuiCli.PushID(i); ImGuiCli.BeginGroup(); Texture2D thumbnail = thumbCache_.GetOrCreateThumbnail(item); if (thumbnail != null) { ImGuiCli.ImageButton(thumbnail, new Vector2(itemSize - 20, itemSize - 16)); } else { ImGuiCli.Button("???", new Vector2(itemSize - 20, itemSize - 16)); } if (!ImGuiCli.IsPopupOpen() && ImGuiCli.BeginDragDropSource()) { if (Recents.Contains(CurrentDirectory)) { Recents.Remove(CurrentDirectory); } Recents.Insert(0, CurrentDirectory); ImGuiCli.SetDragDropPayload("U_ASSET", item); if (thumbnail != null) { ImGuiCli.Image(thumbnail, new Vector2(128, 128)); } ImGuiCli.Text(displayName); ImGuiCli.EndDragDropSource(); } if (ImGuiCli.IsItemDoubleClicked(0)) { System.IO.DirectoryInfo dirInfo = new System.IO.DirectoryInfo(item); if (dirInfo.Exists) { newDirectory_ = dirInfo.FullName; } } else if (ImGuiCli.IsItemClicked(1)) { ImGuiCli.OpenPopup("##asset_browser_popup"); } if (ImGuiCli.BeginPopup("##asset_browser_popup", ImGuiWindowFlags_.None)) { string ext = System.IO.Path.GetExtension(item); if (ImGuiCli.MenuItem("Open (system)")) { System.Diagnostics.Process.Start(item); } //TODO: custom handlers ImGuiCli.EndPopup(); } if (asDetail_) { ImGuiCli.SameLine(); } ImGuiCli.TextWrapped(displayName); if (!asDetail_ && ImGuiCli.IsItemHovered()) { ImGuiCli.SetTooltip(item); } ImGuiCli.EndGroup(); ImGuiCli.PopID(); ImGuiCli.NextColumn(); } ImGuiCli.EndChild(); }