Skip to content

Commit

Permalink
add ApplySuggestEditorLayoutCommand
Browse files Browse the repository at this point in the history
  • Loading branch information
MikiraSora committed Sep 28, 2024
1 parent 8798ed1 commit 444499e
Show file tree
Hide file tree
Showing 6 changed files with 84 additions and 4 deletions.
3 changes: 1 addition & 2 deletions OngekiFumenEditor/AppBootstrapper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -236,8 +236,7 @@ public async void ShowStartupGUI()
{
if (MessageBox.Show(Resources.ShouldLoadSuggestLayout, Resources.Suggest, MessageBoxButton.YesNo) == MessageBoxResult.Yes)
{
using var stream = ResourceUtils.OpenReadFromLocalAssemblyResourcesFolder("suggestLayout.bin");
var result = await IoC.Get<IEditorLayoutManager>().LoadLayout(stream);
var result = await IoC.Get<IEditorLayoutManager>().ApplyDefaultSuggestEditorLayout();
if (!result)
MessageBox.Show(Resources.LoadLayoutFailed);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
using Gemini.Framework.Commands;
using OngekiFumenEditor.Properties;

namespace OngekiFumenEditor.Kernel.EditorLayout.Commands.About
{
[CommandDefinition]
public class ApplySuggestEditorLayoutCommandDefinition : CommandDefinition
{
public const string CommandName = "EditorLayout.ApplySuggestEditorLayout";

public override string Name
{
get { return CommandName; }
}

public override string Text
{
get { return "使用推荐的布局"; }
}

public override string ToolTip
{
get { return Text; }
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
using Caliburn.Micro;
using Gemini.Framework.Commands;
using Gemini.Framework.Threading;
using OngekiFumenEditor.Kernel.EditorLayout;
using OngekiFumenEditor.Kernel.EditorLayout.Commands.About;
using OngekiFumenEditor.Modules.FumenVisualEditor.Kernel;
using OngekiFumenEditor.UI.Dialogs;
using System.Threading.Tasks;

namespace OngekiFumenEditor.Kernel.MiscMenu.Commands.About
{
[CommandHandler]
public class ApplySuggestEditorLayoutCommandHandler : CommandHandlerBase<ApplySuggestEditorLayoutCommandDefinition>
{
public override async Task Run(Command command)
{
await IoC.Get<IEditorLayoutManager>().ApplyDefaultSuggestEditorLayout();
}
}
}
17 changes: 16 additions & 1 deletion OngekiFumenEditor/Kernel/EditorLayout/EditorLayoutManager.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Caliburn.Micro;
using Gemini.Framework;
using Gemini.Framework.Services;
using Gemini.Modules.Shell.Services;
using Gemini.Modules.Shell.ViewModels;
Expand Down Expand Up @@ -53,7 +54,15 @@ public async Task<bool> LoadLayout(Stream intputLayoutDataStream)
if (!TryGetDependices(out var shell, out var shellView))
return false;

return layoutItemStatePersister.LoadState(shell, shellView, tempFilePath);
var r = layoutItemStatePersister.LoadState(shell, shellView, tempFilePath);
if (!r)

return false;

if (shell.Documents.FirstOrDefault() is IDocument document)
await shell.OpenDocumentAsync(document);

return true;
}
catch (Exception e)
{
Expand Down Expand Up @@ -84,5 +93,11 @@ public async Task<bool> SaveLayout(Stream outputLayoutDataStream)
return false;
}
}

public Task<bool> ApplyDefaultSuggestEditorLayout()
{
using var stream = ResourceUtils.OpenReadFromLocalAssemblyResourcesFolder("suggestLayout.bin");
return IoC.Get<IEditorLayoutManager>().LoadLayout(stream);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@ public interface IEditorLayoutManager
Task<bool> SaveLayout(Stream outputLayoutDataStream);
Task<bool> LoadLayout(Stream intputLayoutDataStream);

//Task CheckAndNotifyUserUseSuggestLayout();
Task<bool> ApplyDefaultSuggestEditorLayout();
}
}
20 changes: 20 additions & 0 deletions OngekiFumenEditor/Kernel/EditorLayout/MenuDefinitions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
using Gemini.Framework.Menus;
using OngekiFumenEditor.Kernel.EditorLayout.Commands.About;
using OngekiFumenEditor.Kernel.MiscMenu.Commands.About;
using OngekiFumenEditor.Kernel.MiscMenu.Commands.CallFullGC;
using OngekiFumenEditor.Kernel.MiscMenu.Commands.OpenUrlCommon;
using OngekiFumenEditor.Properties;
using System.ComponentModel.Composition;

namespace OngekiFumenEditor.Kernel.EditorLayout
{
public static class MenuDefinitions
{
[Export]
public static MenuItemGroupDefinition EditorLayoutMenuGroup = new MenuItemGroupDefinition(Gemini.Modules.MainMenu.MenuDefinitions.WindowMenu, 999);

[Export]
public static MenuItemDefinition ApplySuggestEditorLayoutMenuItem = new CommandMenuItemDefinition<ApplySuggestEditorLayoutCommandDefinition>(
EditorLayoutMenuGroup, 0);
}
}

0 comments on commit 444499e

Please sign in to comment.