Update ContextFlyout

This commit is contained in:
2026-02-05 13:52:53 +09:00
parent eadd13931f
commit 9bbccfc8f8
20 changed files with 258 additions and 105 deletions

View File

@@ -63,6 +63,7 @@ public partial class App : Application
services.AddSingleton<IProgressService, ProgressService>();
services.AddSingleton<IInspectorService, InspectorService>();
services.AddSingleton<IPreviewService, PreviewService>();
services.AddSingleton<IAssetService, AssetService>();
services.AddSingleton<EngineEditorViewModel>();

View File

@@ -20,4 +20,34 @@ internal partial class ProjectBrowser
Verb = "open"
});
}
[ContextMenuItem("project-browser", "Create/Folder")]
private static void CreateFolder()
{
// TODO: Use AssetService
var viewModel = LastFocused?.ViewModel;
if (viewModel is null)
{
return;
}
var currentDir = viewModel.CurrentDirectoryPath;
if (!Directory.Exists(currentDir))
{
return;
}
var newFolderPath = Path.Combine(currentDir, "New Folder");
var folderIndex = 1;
while (Directory.Exists(newFolderPath))
{
newFolderPath = Path.Combine(currentDir, $"New Folder ({folderIndex})");
folderIndex++;
}
Directory.CreateDirectory(newFolderPath);
// Refresh the view model to show the new folder
viewModel.NavigateToDirectory(currentDir);
}
}

View File

@@ -150,7 +150,8 @@
Padding="8"
HorizontalAlignment="Center"
VerticalAlignment="Center"
RowSpacing="4">
RowSpacing="4"
ToolTipService.ToolTip="{x:Bind Name}">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
@@ -191,17 +192,7 @@
MinRowSpacing="4" />
</ItemsView.Layout>
<ItemsView.ContextFlyout>
<ghost:ContextFlyout Tag="project-browser">
<MenuFlyoutSubItem Text="Create">
<MenuFlyoutItem Text="Folder" />
<MenuFlyoutItem Text="Script" />
<MenuFlyoutSubItem Text="Rendering">
<MenuFlyoutItem Text="Material" />
<MenuFlyoutItem Text="Volume Profile" />
</MenuFlyoutSubItem>
</MenuFlyoutSubItem>
<MenuFlyoutSeparator />
</ghost:ContextFlyout>
<ghost:ContextFlyout Tag="project-browser" />
</ItemsView.ContextFlyout>
</ItemsView>

View File

@@ -54,6 +54,11 @@ internal sealed partial class ProjectBrowser : UserControl
private void ProjectBrowser_Unloaded(object sender, RoutedEventArgs e)
{
_inspectorService.OnSelectionChanged -= _inspectorService_OnSelectionChanged;
if (LastFocused == this)
{
LastFocused = null;
}
}
private void _inspectorService_OnSelectionChanged(object? sender, InspectorSelectionChangedEventArgs e)

View File

@@ -108,7 +108,7 @@ internal partial class ProjectBrowserViewModel : ObservableObject
}
else
{
AssetDatabase.OpenAsset(SelectedItem.FullName);
AssetService.OpenAsset(SelectedItem.FullName);
return (null, 1);
}
}

View File

@@ -124,7 +124,7 @@ internal partial class ProjectViewModel : ObservableObject
}
else
{
AssetDatabase.OpenAsset(SelectedAsset.FullName);
AssetService.OpenAsset(SelectedAsset.FullName);
}
}