Add input bindings for File menu actions
This commit is contained in:
@@ -42,8 +42,10 @@ namespace FlaxEditor.Modules
|
|||||||
|
|
||||||
private ContextMenuButton _menuFileSaveScenes;
|
private ContextMenuButton _menuFileSaveScenes;
|
||||||
private ContextMenuButton _menuFileCloseScenes;
|
private ContextMenuButton _menuFileCloseScenes;
|
||||||
|
private ContextMenuButton _menuFileOpenScriptsProject;
|
||||||
private ContextMenuButton _menuFileGenerateScriptsProjectFiles;
|
private ContextMenuButton _menuFileGenerateScriptsProjectFiles;
|
||||||
private ContextMenuButton _menuSaveAll;
|
private ContextMenuButton _menuFileRecompileScripts;
|
||||||
|
private ContextMenuButton _menuFileSaveAll;
|
||||||
private ContextMenuButton _menuEditUndo;
|
private ContextMenuButton _menuEditUndo;
|
||||||
private ContextMenuButton _menuEditRedo;
|
private ContextMenuButton _menuEditRedo;
|
||||||
private ContextMenuButton _menuEditCut;
|
private ContextMenuButton _menuEditCut;
|
||||||
@@ -514,13 +516,13 @@ namespace FlaxEditor.Modules
|
|||||||
MenuFile = MainMenu.AddButton("File");
|
MenuFile = MainMenu.AddButton("File");
|
||||||
var cm = MenuFile.ContextMenu;
|
var cm = MenuFile.ContextMenu;
|
||||||
cm.VisibleChanged += OnMenuFileShowHide;
|
cm.VisibleChanged += OnMenuFileShowHide;
|
||||||
_menuSaveAll = cm.AddButton("Save All", inputOptions.Save, Editor.SaveAll);
|
_menuFileSaveAll = cm.AddButton("Save All", inputOptions.Save, Editor.SaveAll);
|
||||||
_menuFileSaveScenes = cm.AddButton("Save scenes", Editor.Scene.SaveScenes);
|
_menuFileSaveScenes = cm.AddButton("Save scenes", inputOptions.SaveScenes, Editor.Scene.SaveScenes);
|
||||||
_menuFileCloseScenes = cm.AddButton("Close scenes", Editor.Scene.CloseAllScenes);
|
_menuFileCloseScenes = cm.AddButton("Close scenes", inputOptions.CloseScenes, Editor.Scene.CloseAllScenes);
|
||||||
cm.AddSeparator();
|
cm.AddSeparator();
|
||||||
cm.AddButton("Open scripts project", Editor.CodeEditing.OpenSolution);
|
_menuFileOpenScriptsProject = cm.AddButton("Open scripts project", inputOptions.OpenScriptsProject, Editor.CodeEditing.OpenSolution);
|
||||||
_menuFileGenerateScriptsProjectFiles = cm.AddButton("Generate scripts project files", Editor.ProgressReporting.GenerateScriptsProjectFiles.RunAsync);
|
_menuFileGenerateScriptsProjectFiles = cm.AddButton("Generate scripts project files", inputOptions.GenerateScriptsProject, Editor.ProgressReporting.GenerateScriptsProjectFiles.RunAsync);
|
||||||
cm.AddButton("Recompile scripts", ScriptsBuilder.Compile);
|
_menuFileRecompileScripts = cm.AddButton("Recompile scripts", inputOptions.RecompileScripts, ScriptsBuilder.Compile);
|
||||||
cm.AddSeparator();
|
cm.AddSeparator();
|
||||||
cm.AddButton("Open project...", OpenProject);
|
cm.AddButton("Open project...", OpenProject);
|
||||||
cm.AddSeparator();
|
cm.AddSeparator();
|
||||||
@@ -639,7 +641,12 @@ namespace FlaxEditor.Modules
|
|||||||
{
|
{
|
||||||
var inputOptions = options.Input;
|
var inputOptions = options.Input;
|
||||||
|
|
||||||
_menuSaveAll.ShortKeys = inputOptions.Save.ToString();
|
_menuFileSaveAll.ShortKeys = inputOptions.Save.ToString();
|
||||||
|
_menuFileSaveScenes.ShortKeys = inputOptions.SaveScenes.ToString();
|
||||||
|
_menuFileCloseScenes.ShortKeys = inputOptions.CloseScenes.ToString();
|
||||||
|
_menuFileOpenScriptsProject.ShortKeys = inputOptions.OpenScriptsProject.ToString();
|
||||||
|
_menuFileGenerateScriptsProjectFiles.ShortKeys = inputOptions.GenerateScriptsProject.ToString();
|
||||||
|
_menuFileRecompileScripts.ShortKeys = inputOptions.RecompileScripts.ToString();
|
||||||
_menuEditUndo.ShortKeys = inputOptions.Undo.ToString();
|
_menuEditUndo.ShortKeys = inputOptions.Undo.ToString();
|
||||||
_menuEditRedo.ShortKeys = inputOptions.Redo.ToString();
|
_menuEditRedo.ShortKeys = inputOptions.Redo.ToString();
|
||||||
_menuEditCut.ShortKeys = inputOptions.Cut.ToString();
|
_menuEditCut.ShortKeys = inputOptions.Cut.ToString();
|
||||||
|
|||||||
@@ -78,6 +78,30 @@ namespace FlaxEditor.Options
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region File
|
||||||
|
|
||||||
|
[DefaultValue(typeof(InputBinding), "None")]
|
||||||
|
[EditorDisplay("File"), EditorOrder(300)]
|
||||||
|
public InputBinding SaveScenes = new InputBinding(KeyboardKeys.None);
|
||||||
|
|
||||||
|
[DefaultValue(typeof(InputBinding), "None")]
|
||||||
|
[EditorDisplay("File"), EditorOrder(310)]
|
||||||
|
public InputBinding CloseScenes = new InputBinding(KeyboardKeys.None);
|
||||||
|
|
||||||
|
[DefaultValue(typeof(InputBinding), "None")]
|
||||||
|
[EditorDisplay("File"), EditorOrder(320)]
|
||||||
|
public InputBinding OpenScriptsProject = new InputBinding(KeyboardKeys.None);
|
||||||
|
|
||||||
|
[DefaultValue(typeof(InputBinding), "None")]
|
||||||
|
[EditorDisplay("File"), EditorOrder(330)]
|
||||||
|
public InputBinding GenerateScriptsProject = new InputBinding(KeyboardKeys.None);
|
||||||
|
|
||||||
|
[DefaultValue(typeof(InputBinding), "None")]
|
||||||
|
[EditorDisplay("File"), EditorOrder(340)]
|
||||||
|
public InputBinding RecompileScripts = new InputBinding(KeyboardKeys.None);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region Scene
|
#region Scene
|
||||||
|
|
||||||
[DefaultValue(typeof(InputBinding), "End")]
|
[DefaultValue(typeof(InputBinding), "End")]
|
||||||
|
|||||||
@@ -18,10 +18,10 @@ using FlaxEditor.GUI.ContextMenu;
|
|||||||
using FlaxEditor.GUI.Input;
|
using FlaxEditor.GUI.Input;
|
||||||
using FlaxEditor.GUI.Tree;
|
using FlaxEditor.GUI.Tree;
|
||||||
using FlaxEditor.SceneGraph;
|
using FlaxEditor.SceneGraph;
|
||||||
using FlaxEditor.Scripting;
|
|
||||||
using FlaxEngine;
|
using FlaxEngine;
|
||||||
using FlaxEngine.GUI;
|
using FlaxEngine.GUI;
|
||||||
using FlaxEngine.Utilities;
|
using FlaxEngine.Utilities;
|
||||||
|
using FlaxEditor.Windows;
|
||||||
|
|
||||||
namespace FlaxEngine
|
namespace FlaxEngine
|
||||||
{
|
{
|
||||||
@@ -1235,5 +1235,56 @@ namespace FlaxEditor.Utilities
|
|||||||
}
|
}
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Binds global input actions for the window.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="window">The editor window.</param>
|
||||||
|
public static void SetupCommonInputActions(EditorWindow window)
|
||||||
|
{
|
||||||
|
var inputActions = window.InputActions;
|
||||||
|
|
||||||
|
// Setup input actions
|
||||||
|
inputActions.Add(options => options.Save, Editor.Instance.SaveAll);
|
||||||
|
inputActions.Add(options => options.Undo, () =>
|
||||||
|
{
|
||||||
|
Editor.Instance.PerformUndo();
|
||||||
|
window.Focus();
|
||||||
|
});
|
||||||
|
inputActions.Add(options => options.Redo, () =>
|
||||||
|
{
|
||||||
|
Editor.Instance.PerformRedo();
|
||||||
|
window.Focus();
|
||||||
|
});
|
||||||
|
inputActions.Add(options => options.Cut, Editor.Instance.SceneEditing.Cut);
|
||||||
|
inputActions.Add(options => options.Copy, Editor.Instance.SceneEditing.Copy);
|
||||||
|
inputActions.Add(options => options.Paste, Editor.Instance.SceneEditing.Paste);
|
||||||
|
inputActions.Add(options => options.Duplicate, Editor.Instance.SceneEditing.Duplicate);
|
||||||
|
inputActions.Add(options => options.SelectAll, Editor.Instance.SceneEditing.SelectAllScenes);
|
||||||
|
inputActions.Add(options => options.Delete, Editor.Instance.SceneEditing.Delete);
|
||||||
|
inputActions.Add(options => options.Search, () => Editor.Instance.Windows.SceneWin.Search());
|
||||||
|
inputActions.Add(options => options.Play, Editor.Instance.Simulation.DelegatePlayOrStopPlayInEditor);
|
||||||
|
inputActions.Add(options => options.PlayCurrentScenes, Editor.Instance.Simulation.RequestPlayScenesOrStopPlay);
|
||||||
|
inputActions.Add(options => options.Pause, Editor.Instance.Simulation.RequestResumeOrPause);
|
||||||
|
inputActions.Add(options => options.StepFrame, Editor.Instance.Simulation.RequestPlayOneFrame);
|
||||||
|
inputActions.Add(options => options.CookAndRun, () => Editor.Instance.Windows.GameCookerWin.BuildAndRun());
|
||||||
|
inputActions.Add(options => options.RunCookedGame, () => Editor.Instance.Windows.GameCookerWin.RunCooked());
|
||||||
|
inputActions.Add(options => options.BuildScenesData, Editor.Instance.BuildScenesOrCancel);
|
||||||
|
inputActions.Add(options => options.BakeLightmaps, Editor.Instance.BakeLightmapsOrCancel);
|
||||||
|
inputActions.Add(options => options.ClearLightmaps, Editor.Instance.ClearLightmaps);
|
||||||
|
inputActions.Add(options => options.BakeEnvProbes, Editor.Instance.BakeAllEnvProbes);
|
||||||
|
inputActions.Add(options => options.BuildCSG, Editor.Instance.BuildCSG);
|
||||||
|
inputActions.Add(options => options.BuildNav, Editor.Instance.BuildNavMesh);
|
||||||
|
inputActions.Add(options => options.BuildSDF, Editor.Instance.BuildAllMeshesSDF);
|
||||||
|
inputActions.Add(options => options.TakeScreenshot, Editor.Instance.Windows.TakeScreenshot);
|
||||||
|
inputActions.Add(options => options.ProfilerWindow, () => Editor.Instance.Windows.ProfilerWin.FocusOrShow());
|
||||||
|
inputActions.Add(options => options.ProfilerStartStop, () => { Editor.Instance.Windows.ProfilerWin.LiveRecording = !Editor.Instance.Windows.ProfilerWin.LiveRecording; Editor.Instance.UI.AddStatusMessage($"Profiling {(Editor.Instance.Windows.ProfilerWin.LiveRecording ? "started" : "stopped")}."); });
|
||||||
|
inputActions.Add(options => options.ProfilerClear, () => { Editor.Instance.Windows.ProfilerWin.Clear(); Editor.Instance.UI.AddStatusMessage($"Profiling results cleared."); });
|
||||||
|
inputActions.Add(options => options.SaveScenes, () => Editor.Instance.Scene.SaveScenes());
|
||||||
|
inputActions.Add(options => options.CloseScenes, () => Editor.Instance.Scene.CloseAllScenes());
|
||||||
|
inputActions.Add(options => options.OpenScriptsProject, () => Editor.Instance.CodeEditing.OpenSolution());
|
||||||
|
inputActions.Add(options => options.GenerateScriptsProject, () => Editor.Instance.ProgressReporting.GenerateScriptsProjectFiles.RunAsync());
|
||||||
|
inputActions.Add(options => options.RecompileScripts, ScriptsBuilder.Compile);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,42 +19,7 @@ namespace FlaxEditor.Windows
|
|||||||
protected SceneEditorWindow(Editor editor, bool hideOnClose, ScrollBars scrollBars)
|
protected SceneEditorWindow(Editor editor, bool hideOnClose, ScrollBars scrollBars)
|
||||||
: base(editor, hideOnClose, scrollBars)
|
: base(editor, hideOnClose, scrollBars)
|
||||||
{
|
{
|
||||||
// Setup input actions
|
FlaxEditor.Utilities.Utils.SetupCommonInputActions(this);
|
||||||
InputActions.Add(options => options.Save, Editor.SaveAll);
|
|
||||||
InputActions.Add(options => options.Undo, () =>
|
|
||||||
{
|
|
||||||
Editor.PerformUndo();
|
|
||||||
Focus();
|
|
||||||
});
|
|
||||||
InputActions.Add(options => options.Redo, () =>
|
|
||||||
{
|
|
||||||
Editor.PerformRedo();
|
|
||||||
Focus();
|
|
||||||
});
|
|
||||||
InputActions.Add(options => options.Cut, Editor.SceneEditing.Cut);
|
|
||||||
InputActions.Add(options => options.Copy, Editor.SceneEditing.Copy);
|
|
||||||
InputActions.Add(options => options.Paste, Editor.SceneEditing.Paste);
|
|
||||||
InputActions.Add(options => options.Duplicate, Editor.SceneEditing.Duplicate);
|
|
||||||
InputActions.Add(options => options.SelectAll, Editor.SceneEditing.SelectAllScenes);
|
|
||||||
InputActions.Add(options => options.Delete, Editor.SceneEditing.Delete);
|
|
||||||
InputActions.Add(options => options.Search, () => Editor.Windows.SceneWin.Search());
|
|
||||||
InputActions.Add(options => options.Play, Editor.Simulation.DelegatePlayOrStopPlayInEditor);
|
|
||||||
InputActions.Add(options => options.PlayCurrentScenes, Editor.Simulation.RequestPlayScenesOrStopPlay);
|
|
||||||
InputActions.Add(options => options.Pause, Editor.Simulation.RequestResumeOrPause);
|
|
||||||
InputActions.Add(options => options.StepFrame, Editor.Simulation.RequestPlayOneFrame);
|
|
||||||
InputActions.Add(options => options.CookAndRun, () => Editor.Windows.GameCookerWin.BuildAndRun());
|
|
||||||
InputActions.Add(options => options.RunCookedGame, () => Editor.Windows.GameCookerWin.RunCooked());
|
|
||||||
InputActions.Add(options => options.BuildScenesData, Editor.BuildScenesOrCancel);
|
|
||||||
InputActions.Add(options => options.BakeLightmaps, Editor.BakeLightmapsOrCancel);
|
|
||||||
InputActions.Add(options => options.ClearLightmaps, Editor.ClearLightmaps);
|
|
||||||
InputActions.Add(options => options.BakeEnvProbes, Editor.BakeAllEnvProbes);
|
|
||||||
InputActions.Add(options => options.BuildCSG, Editor.BuildCSG);
|
|
||||||
InputActions.Add(options => options.BuildNav, Editor.BuildNavMesh);
|
|
||||||
InputActions.Add(options => options.BuildSDF, Editor.BuildAllMeshesSDF);
|
|
||||||
InputActions.Add(options => options.TakeScreenshot, Editor.Windows.TakeScreenshot);
|
|
||||||
InputActions.Add(options => options.ProfilerWindow, () => Editor.Windows.ProfilerWin.FocusOrShow());
|
|
||||||
InputActions.Add(options => options.ProfilerStartStop, () => { Editor.Windows.ProfilerWin.LiveRecording = !Editor.Windows.ProfilerWin.LiveRecording; Editor.UI.AddStatusMessage($"Profiling {(Editor.Windows.ProfilerWin.LiveRecording ? "started" : "stopped")}."); });
|
|
||||||
InputActions.Add(options => options.ProfilerClear, () => { Editor.Windows.ProfilerWin.Clear(); Editor.UI.AddStatusMessage($"Profiling results cleared."); });
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user