private void UpdateSearch(string searchText) { searchText = ImGuiUtility.TrimToNullByte(searchText); if (searchText == _searchText) { return; } _searchText = searchText; _items.Clear(); var isEmptySearch = string.IsNullOrWhiteSpace(_searchText); var assetStore = Context.Game.AssetStore; foreach (var asset in assetStore.GetAllAssets()) { if (isEmptySearch || asset.FullName.IndexOf(_searchText, StringComparison.OrdinalIgnoreCase) >= 0) { if (!AssetViewConstructors.TryGetValue(asset.GetType(), out var assetViewConstructor)) { assetViewConstructor = DefaultAssetViewConstructor; } AssetView createAssetView() => (AssetView)assetViewConstructor.Invoke(new object[] { Context, asset }); _items.Add(new AssetListItem(asset.FullName, createAssetView)); } } }
private void UpdateSearch(string searchText) { searchText = ImGuiUtility.TrimToNullByte(searchText); if (searchText == _searchText) { return; } _searchText = searchText; _files.Clear(); if (_bigArchive == null) { return; } if (string.IsNullOrWhiteSpace(_searchText)) { _files.AddRange(_bigArchive.Entries.OrderBy(x => x.FullName)); } else { _files.AddRange(_bigArchive.Entries .Where(entry => entry.FullName.IndexOf(_searchText, StringComparison.OrdinalIgnoreCase) >= 0) .OrderBy(x => x.FullName)); } }
private void UpdateSearch(string searchText) { searchText = ImGuiUtility.TrimToNullByte(searchText); if (searchText == _searchText) { return; } _searchText = searchText; _items.Clear(); var isEmptySearch = string.IsNullOrWhiteSpace(_searchText); var assetStore = Context.Game.AssetStore; foreach (var asset in assetStore.GetAllAssets()) { if (isEmptySearch || asset.FullName.IndexOf(_searchText, StringComparison.OrdinalIgnoreCase) >= 0) { _items.Add(new AssetListItem(asset.FullName, asset)); } } }
private void UpdateSearch(string searchText) { searchText = ImGuiUtility.TrimToNullByte(searchText); if (searchText == _searchText) { return; } _searchText = searchText; UpdateFilesList(); }
private void UpdateSearch(string searchText) { searchText = ImGuiUtility.TrimToNullByte(searchText); if (searchText == _searchText) { return; } _searchText = searchText; _items.Clear(); var isEmptySearch = string.IsNullOrWhiteSpace(_searchText); void AddItem(string assetName, Func <AssetView> createAssetView) { if (isEmptySearch || assetName.IndexOf(_searchText, StringComparison.OrdinalIgnoreCase) >= 0) { _items.Add(new AssetListItem(assetName, createAssetView)); } } foreach (var asset in Game.ContentManager.CachedObjects) { var assetName = AssetView.GetAssetName(asset); if (assetName == null) { continue; } AddItem(assetName, () => AssetView.CreateAssetView(Context, asset)); } // TODO: Remove these, once audio assets are handled the same as other assets. foreach (var objectDefinition in Context.Game.ContentManager.IniDataContext.Objects) { AddItem($"GameObject:{objectDefinition.Name}", () => new GameObjectView(Context, objectDefinition)); } foreach (var audioFilename in _audioFilenames) { AddItem($"Audio:{audioFilename}", () => new SoundView(Context, audioFilename)); } foreach (var particleSystemDefinition in Context.Game.ContentManager.IniDataContext.ParticleSystems) { AddItem($"ParticleSystem:{particleSystemDefinition.Name}", () => new ParticleSystemView(Context, particleSystemDefinition.ToFXParticleSystemTemplate())); } foreach (var particleSystemTemplate in Context.Game.ContentManager.IniDataContext.FXParticleSystems) { AddItem($"FXParticleSystem:{particleSystemTemplate.Name}", () => new ParticleSystemView(Context, particleSystemTemplate)); } }
private void DrawOpenFileDialog() { ImGuiUtility.InputText("File Path", _filePathBuffer, out var filePath); if (ImGui.Button("Open")) { filePath = ImGuiUtility.TrimToNullByte(filePath); OpenBigFile(filePath); ImGui.CloseCurrentPopup(); } ImGui.SetItemDefaultFocus(); ImGui.SameLine(); if (ImGui.Button("Cancel")) { ImGui.CloseCurrentPopup(); } }
private void UpdateSearch(string searchText) { searchText = ImGuiUtility.TrimToNullByte(searchText); if (searchText == _searchText) { return; } _searchText = searchText; _labels.Clear(); foreach (var label in Context.Game.ContentManager.TranslationManager.Labels) { var matchesSearch = label.Contains(searchText, StringComparison.OrdinalIgnoreCase); if (matchesSearch) { _labels.Add(label); } } }
private void UpdateSearch(string searchText) { searchText = ImGuiUtility.TrimToNullByte(searchText); if (searchText == _searchText) { return; } _searchText = searchText; _items.Clear(); var isEmptySearch = string.IsNullOrWhiteSpace(_searchText); foreach (var asset in Context.Game.Scene3D.GameObjects.Items) { var name = GetObjectName(asset); if (isEmptySearch || name.IndexOf(_searchText, StringComparison.OrdinalIgnoreCase) >= 0) { _items.Add(asset); } } }
private void DrawFilesList() { ImGui.BeginChild("sidebar", new Vector2(350, 0), true, 0); ImGui.PushItemWidth(-1); ImGuiUtility.InputText("##search", _searchTextBuffer, out var searchText); UpdateSearch(searchText); ImGui.PopItemWidth(); ImGui.BeginChild("files list", Vector2.Zero, true); ImGui.Columns(2, "Files", false); ImGui.SetColumnWidth(0, 250); ImGui.Separator(); ImGui.Text("Name"); ImGui.NextColumn(); ImGui.Text("Size"); ImGui.NextColumn(); ImGui.Separator(); for (var i = 0; i < _files.Count; i++) { var entry = _files[i]; if (ImGui.Selectable(entry.FullName, i == _currentFile, ImGuiSelectableFlags.SpanAllColumns)) { _currentFile = i; switch (Path.GetExtension(entry.FullName).ToLowerInvariant()) { case ".ini": case ".txt": case ".wnd": using (var stream = entry.Open()) using (var reader = new StreamReader(stream)) { _currentFileText = reader.ReadToEnd(); } break; default: _currentFileText = null; break; } } var shouldOpenSaveDialog = false; if (ImGui.BeginPopupContextItem("context" + i)) { _currentFile = i; if (ImGui.Selectable("Export...")) { shouldOpenSaveDialog = true; } ImGui.EndPopup(); } ImGui.NextColumn(); ImGui.Text(entry.Length.ToString()); ImGui.NextColumn(); var exportId = "Export##ExportDialog" + i; if (shouldOpenSaveDialog) { ImGui.OpenPopup(exportId); } bool contextMenuOpen = true; if (ImGui.BeginPopupModal(exportId, ref contextMenuOpen, ImGuiWindowFlags.AlwaysAutoResize)) { ImGuiUtility.InputText("File Path", _filePathBuffer, out var filePath); if (ImGui.Button("Save")) { filePath = ImGuiUtility.TrimToNullByte(filePath); using (var entryStream = entry.Open()) { using (var fileStream = File.OpenWrite(filePath)) { entryStream.CopyTo(fileStream); } } ImGui.CloseCurrentPopup(); } ImGui.SetItemDefaultFocus(); ImGui.SameLine(); if (ImGui.Button("Cancel")) { ImGui.CloseCurrentPopup(); } ImGui.EndPopup(); } } ImGui.Columns(1, null, false); ImGui.EndChild(); ImGui.EndChild(); }