390 lines
15 KiB
C#
390 lines
15 KiB
C#
// MonoGame - Copyright (C) The MonoGame Team
|
|
// This file is subject to the terms and conditions defined in
|
|
// file 'LICENSE.txt', which is part of this source code package.
|
|
|
|
using System;
|
|
using Eto;
|
|
using Eto.Forms;
|
|
using Eto.Drawing;
|
|
|
|
namespace MonoGame.Tools.Pipeline
|
|
{
|
|
partial class MainWindow
|
|
{
|
|
/// <summary>
|
|
/// Pipeline menu bar.
|
|
/// Required to Stop Eto Forms adding System Menu Items on MacOS
|
|
/// This is because `IncludeSystemItems` defaults to `All`
|
|
/// and the menus are populated in the constructor.
|
|
/// </summary>
|
|
class PipelineMenuBar : MenuBar
|
|
{
|
|
public PipelineMenuBar()
|
|
{
|
|
Style = "MenuBar";
|
|
IncludeSystemItems = MenuBarSystemItems.None;
|
|
}
|
|
}
|
|
|
|
public Command cmdNew, cmdOpen, cmdClose, cmdImport, cmdSave, cmdSaveAs, cmdExit;
|
|
public Command cmdUndo, cmdRedo, cmdAdd, cmdExclude, cmdRename, cmdDelete;
|
|
public Command cmdNewItem, cmdNewFolder, cmdExistingItem, cmdExistingFolder;
|
|
public Command cmdBuild, cmdRebuild, cmdClean, cmdCancelBuild;
|
|
public CheckCommand cmdDebugMode;
|
|
public Command cmdHelp, cmdAbout;
|
|
public Command cmdOpenItem, cmdOpenItemWith, cmdOpenItemLocation, cmdOpenOutputItemLocation, cmdCopyAssetName, cmdRebuildItem;
|
|
|
|
ToolBar toolbar;
|
|
ButtonMenuItem menuFile, menuRecent, menuEdit, menuAdd, menuView, menuBuild, menuHelp;
|
|
ToolItem toolBuild, toolRebuild, toolClean, toolCancelBuild;
|
|
MenuItem cmOpenItem, cmOpenItemWith, cmOpenItemLocation, cmOpenOutputItemLocation, cmCopyAssetPath, cmRebuildItem, cmExclude, cmRename, cmDelete;
|
|
ButtonMenuItem cmAdd;
|
|
|
|
ProjectControl projectControl;
|
|
PropertyGridControl propertyGridControl;
|
|
BuildOutput buildOutput;
|
|
|
|
Splitter splitterHorizontal, splitterVertical;
|
|
|
|
private void InitializeComponent()
|
|
{
|
|
Title = "MonoGame Pipeline Tool";
|
|
Icon = Icon.FromResource("Icons.monogame.png");
|
|
Size = new Size(750, 550);
|
|
MinimumSize = new Size(400, 400);
|
|
|
|
InitalizeCommands();
|
|
InitalizeMenu();
|
|
InitalizeContextMenu();
|
|
InitalizeToolbar();
|
|
|
|
splitterHorizontal = new Splitter();
|
|
splitterHorizontal.Orientation = Orientation.Horizontal;
|
|
splitterHorizontal.Position = 200;
|
|
splitterHorizontal.Panel1MinimumSize = 100;
|
|
splitterHorizontal.Panel2MinimumSize = 100;
|
|
|
|
splitterVertical = new Splitter();
|
|
splitterVertical.Orientation = Orientation.Vertical;
|
|
splitterVertical.Position = 230;
|
|
splitterVertical.FixedPanel = SplitterFixedPanel.None;
|
|
splitterVertical.Panel1MinimumSize = 100;
|
|
splitterVertical.Panel2MinimumSize = 100;
|
|
|
|
projectControl = new ProjectControl();
|
|
_pads.Add(projectControl);
|
|
splitterVertical.Panel1 = projectControl;
|
|
|
|
propertyGridControl = new PropertyGridControl();
|
|
_pads.Add(propertyGridControl);
|
|
splitterVertical.Panel2 = propertyGridControl;
|
|
|
|
splitterHorizontal.Panel1 = splitterVertical;
|
|
|
|
buildOutput = new BuildOutput();
|
|
_pads.Add(buildOutput);
|
|
splitterHorizontal.Panel2 = buildOutput;
|
|
|
|
Content = splitterHorizontal;
|
|
|
|
cmdNew.Executed += CmdNew_Executed;
|
|
cmdOpen.Executed += CmdOpen_Executed;
|
|
cmdClose.Executed += CmdClose_Executed;
|
|
cmdImport.Executed += CmdImport_Executed;
|
|
cmdSave.Executed += CmdSave_Executed;
|
|
cmdSaveAs.Executed += CmdSaveAs_Executed;
|
|
cmdExit.Executed += CmdExit_Executed;
|
|
|
|
cmdUndo.Executed += CmdUndo_Executed;
|
|
cmdRedo.Executed += CmdRedo_Executed;
|
|
cmdExclude.Executed += CmdExclude_Executed;
|
|
cmdRename.Executed += CmdRename_Executed;
|
|
cmdDelete.Executed += CmdDelete_Executed;
|
|
|
|
cmdNewItem.Executed += CmdNewItem_Executed;
|
|
cmdNewFolder.Executed += CmdNewFolder_Executed;
|
|
cmdExistingItem.Executed += CmdExistingItem_Executed;
|
|
cmdExistingFolder.Executed += CmdExistingFolder_Executed;
|
|
|
|
cmdBuild.Executed += CmdBuild_Executed;
|
|
cmdRebuild.Executed += CmdRebuild_Executed;
|
|
cmdClean.Executed += CmdClean_Executed;
|
|
cmdCancelBuild.Executed += CmdCancelBuild_Executed;
|
|
cmdDebugMode.Executed += CmdDebugMode_Executed;
|
|
|
|
cmdHelp.Executed += CmdHelp_Executed;
|
|
cmdAbout.Executed += CmdAbout_Executed;
|
|
|
|
cmdOpenItem.Executed += CmdOpenItem_Executed;
|
|
cmdOpenItemWith.Executed += CmdOpenItemWith_Executed;
|
|
cmdOpenItemLocation.Executed += CmdOpenItemLocation_Executed;
|
|
cmdOpenOutputItemLocation.Executed += CmdOpenOutputItemLocation_Executed;
|
|
cmdCopyAssetName.Executed += CmdCopyAssetPath_Executed;
|
|
cmdRebuildItem.Executed += CmdRebuildItem_Executed;
|
|
}
|
|
|
|
private void InitalizeCommands()
|
|
{
|
|
// File Commands
|
|
|
|
cmdNew = new Command();
|
|
cmdNew.MenuText = "New...";
|
|
cmdNew.ToolTip = "New";
|
|
cmdNew.Image = Global.GetEtoIcon("Commands.New.png");
|
|
cmdNew.Shortcut = Application.Instance.CommonModifier | Keys.N;
|
|
|
|
cmdOpen = new Command();
|
|
cmdOpen.MenuText = "Open...";
|
|
cmdOpen.ToolTip = "Open";
|
|
cmdOpen.Image = Global.GetEtoIcon("Commands.Open.png");
|
|
cmdOpen.Shortcut = Application.Instance.CommonModifier | Keys.O;
|
|
|
|
cmdClose = new Command();
|
|
cmdClose.MenuText = "Close";
|
|
cmdClose.Image = Global.GetEtoIcon("Commands.Close.png");
|
|
|
|
cmdImport = new Command();
|
|
cmdImport.MenuText = "Import";
|
|
|
|
cmdSave = new Command();
|
|
cmdSave.MenuText = "Save...";
|
|
cmdSave.ToolTip = "Save";
|
|
cmdSave.Image = Global.GetEtoIcon("Commands.Save.png");
|
|
cmdSave.Shortcut = Application.Instance.CommonModifier | Keys.S;
|
|
|
|
cmdSaveAs = new Command();
|
|
cmdSaveAs.MenuText = "Save As";
|
|
cmdSaveAs.Image = Global.GetEtoIcon("Commands.SaveAs.png");
|
|
|
|
cmdExit = new Command();
|
|
cmdExit.MenuText = Global.Unix ? "Quit" : "Exit";
|
|
cmdExit.Shortcut = Application.Instance.CommonModifier | Keys.Q;
|
|
|
|
// Edit Commands
|
|
|
|
cmdUndo = new Command();
|
|
cmdUndo.MenuText = "Undo";
|
|
cmdUndo.ToolTip = "Undo";
|
|
cmdUndo.Image = Global.GetEtoIcon("Commands.Undo.png");
|
|
cmdUndo.Shortcut = Application.Instance.CommonModifier | Keys.Z;
|
|
|
|
cmdRedo = new Command();
|
|
cmdRedo.MenuText = "Redo";
|
|
cmdRedo.ToolTip = "Redo";
|
|
cmdRedo.Image = Global.GetEtoIcon("Commands.Redo.png");
|
|
cmdRedo.Shortcut = Application.Instance.CommonModifier | Keys.Y;
|
|
|
|
cmdAdd = new Command();
|
|
cmdAdd.MenuText = "Add";
|
|
|
|
cmdExclude = new Command();
|
|
cmdExclude.MenuText = "Exclude From Project";
|
|
|
|
cmdRename = new Command();
|
|
cmdRename.MenuText = "Rename";
|
|
cmdRename.Image = Global.GetEtoIcon("Commands.Rename.png");
|
|
|
|
cmdDelete = new Command();
|
|
cmdDelete.MenuText = "Delete";
|
|
cmdDelete.Image = Global.GetEtoIcon("Commands.Delete.png");
|
|
cmdDelete.Shortcut = Keys.Delete;
|
|
|
|
// Add Submenu
|
|
|
|
cmdNewItem = new Command();
|
|
cmdNewItem.MenuText = "New Item...";
|
|
cmdNewItem.ToolTip = "New Item";
|
|
cmdNewItem.Image = Global.GetEtoIcon("Commands.NewItem.png");
|
|
|
|
cmdNewFolder = new Command();
|
|
cmdNewFolder.MenuText = "New Folder...";
|
|
cmdNewFolder.ToolTip = "New Folder";
|
|
cmdNewFolder.Image = Global.GetEtoIcon("Commands.NewFolder.png");
|
|
|
|
cmdExistingItem = new Command();
|
|
cmdExistingItem.MenuText = "Existing Item...";
|
|
cmdExistingItem.ToolTip = "Add Existing Item";
|
|
cmdExistingItem.Image = Global.GetEtoIcon("Commands.ExistingItem.png");
|
|
|
|
cmdExistingFolder = new Command();
|
|
cmdExistingFolder.MenuText = "Existing Folder...";
|
|
cmdExistingFolder.ToolTip = "Add Existing Folder";
|
|
cmdExistingFolder.Image = Global.GetEtoIcon("Commands.ExistingFolder.png");
|
|
|
|
// Build Commands
|
|
|
|
cmdBuild = new Command();
|
|
cmdBuild.MenuText = "Build";
|
|
cmdBuild.ToolTip = "Build";
|
|
cmdBuild.Image = Global.GetEtoIcon("Commands.Build.png");
|
|
cmdBuild.Shortcut = Keys.F6;
|
|
|
|
cmdRebuild = new Command();
|
|
cmdRebuild.MenuText = "Rebuild";
|
|
cmdRebuild.ToolTip = "Rebuild";
|
|
cmdRebuild.Image = Global.GetEtoIcon("Commands.Rebuild.png");
|
|
|
|
cmdClean = new Command();
|
|
cmdClean.MenuText = "Clean";
|
|
cmdClean.ToolTip = "Clean";
|
|
cmdClean.Image = Global.GetEtoIcon("Commands.Clean.png");
|
|
|
|
cmdCancelBuild = new Command();
|
|
cmdCancelBuild.MenuText = "Cancel Build";
|
|
cmdCancelBuild.ToolTip = "Cancel Build";
|
|
cmdCancelBuild.Image = Global.GetEtoIcon("Commands.CancelBuild.png");
|
|
|
|
cmdDebugMode = new CheckCommand();
|
|
cmdDebugMode.MenuText = "Debug Mode";
|
|
|
|
// Help Commands
|
|
|
|
cmdHelp = new Command();
|
|
cmdHelp.MenuText = "View Help";
|
|
cmdHelp.Shortcut = Keys.F1;
|
|
cmdHelp.Image = Global.GetEtoIcon("Commands.Help.png");
|
|
|
|
cmdAbout = new Command();
|
|
cmdAbout.MenuText = "About";
|
|
|
|
// Context Menu
|
|
|
|
cmdOpenItem = new Command();
|
|
cmdOpenItem.MenuText = "Open";
|
|
cmdOpenItem.Image = Global.GetEtoIcon("Commands.OpenItem.png");
|
|
|
|
cmdOpenItemWith = new Command();
|
|
cmdOpenItemWith.MenuText = "Open With";
|
|
|
|
cmdOpenItemLocation = new Command();
|
|
cmdOpenItemLocation.MenuText = "Open Containing Directory";
|
|
|
|
cmdOpenOutputItemLocation = new Command();
|
|
cmdOpenOutputItemLocation.MenuText = "Open Output Directory";
|
|
|
|
cmdCopyAssetName = new Command();
|
|
cmdCopyAssetName.MenuText = "Copy Asset Name";
|
|
|
|
cmdRebuildItem = new Command();
|
|
cmdRebuildItem.Image = Global.GetEtoIcon("Commands.Rebuild.png");
|
|
cmdRebuildItem.MenuText = "Rebuild";
|
|
}
|
|
|
|
private void InitalizeMenu()
|
|
{
|
|
Menu = new PipelineMenuBar();
|
|
|
|
menuFile = new ButtonMenuItem();
|
|
menuFile.Text = "&File";
|
|
menuFile.Items.Add(cmdNew);
|
|
menuFile.Items.Add(cmdOpen);
|
|
|
|
menuRecent = new ButtonMenuItem();
|
|
menuRecent.Text = "Open Recent";
|
|
menuFile.Items.Add(menuRecent);
|
|
|
|
menuFile.Items.Add(cmdClose);
|
|
menuFile.Items.Add(new SeparatorMenuItem());
|
|
menuFile.Items.Add(cmdImport);
|
|
menuFile.Items.Add(new SeparatorMenuItem());
|
|
menuFile.Items.Add(cmdSave);
|
|
menuFile.Items.Add(cmdSaveAs);
|
|
Menu.Items.Add(menuFile);
|
|
|
|
menuEdit = new ButtonMenuItem();
|
|
menuEdit.Text = "&Edit";
|
|
menuEdit.Items.Add(cmdUndo);
|
|
menuEdit.Items.Add(cmdRedo);
|
|
menuEdit.Items.Add(new SeparatorMenuItem());
|
|
|
|
menuAdd = (ButtonMenuItem)cmdAdd.CreateMenuItem();
|
|
menuAdd.Items.Add(cmdNewItem);
|
|
menuAdd.Items.Add(cmdNewFolder);
|
|
menuAdd.Items.Add(new SeparatorMenuItem());
|
|
menuAdd.Items.Add(cmdExistingItem);
|
|
menuAdd.Items.Add(cmdExistingFolder);
|
|
menuEdit.Items.Add(menuAdd);
|
|
|
|
menuEdit.Items.Add(new SeparatorMenuItem());
|
|
menuEdit.Items.Add(cmdExclude);
|
|
menuEdit.Items.Add(new SeparatorMenuItem());
|
|
menuEdit.Items.Add(cmdRename);
|
|
//menuEdit.Items.Add(cmdDelete);
|
|
Menu.Items.Add(menuEdit);
|
|
|
|
// View Commands
|
|
|
|
menuView = new ButtonMenuItem();
|
|
menuView.Text = "&View";
|
|
Menu.Items.Add(menuView);
|
|
|
|
menuBuild = new ButtonMenuItem();
|
|
menuBuild.Text = "&Build";
|
|
menuBuild.Items.Add(cmdBuild);
|
|
menuBuild.Items.Add(cmdRebuild);
|
|
menuBuild.Items.Add(cmdClean);
|
|
menuBuild.Items.Add(cmdCancelBuild);
|
|
menuBuild.Items.Add(new SeparatorMenuItem());
|
|
menuBuild.Items.Add(cmdDebugMode);
|
|
Menu.Items.Add(menuBuild);
|
|
|
|
menuHelp = new ButtonMenuItem();
|
|
menuHelp.Text = "&Help";
|
|
menuHelp.Items.Add(cmdHelp);
|
|
Menu.Items.Add(menuHelp);
|
|
|
|
Menu.QuitItem = cmdExit;
|
|
Menu.AboutItem = cmdAbout;
|
|
}
|
|
|
|
private void InitalizeContextMenu()
|
|
{
|
|
cmOpenItem = cmdOpenItem.CreateMenuItem();
|
|
cmOpenItemWith = cmdOpenItemWith.CreateMenuItem();
|
|
|
|
cmAdd = (ButtonMenuItem)cmdAdd.CreateMenuItem();
|
|
cmAdd.Items.Add(cmdNewItem.CreateMenuItem());
|
|
cmAdd.Items.Add(cmdNewFolder.CreateMenuItem());
|
|
cmAdd.Items.Add(new SeparatorMenuItem());
|
|
cmAdd.Items.Add(cmdExistingItem.CreateMenuItem());
|
|
cmAdd.Items.Add(cmdExistingFolder.CreateMenuItem());
|
|
|
|
cmOpenItemLocation = cmdOpenItemLocation.CreateMenuItem();
|
|
cmOpenOutputItemLocation = cmdOpenOutputItemLocation.CreateMenuItem();
|
|
cmCopyAssetPath = cmdCopyAssetName.CreateMenuItem();
|
|
cmRebuildItem = cmdRebuildItem.CreateMenuItem();
|
|
cmExclude = cmdExclude.CreateMenuItem();
|
|
cmRename = cmdRename.CreateMenuItem();
|
|
cmDelete = cmdDelete.CreateMenuItem();
|
|
}
|
|
|
|
private void InitalizeToolbar()
|
|
{
|
|
toolBuild = cmdBuild.CreateToolItem();
|
|
toolRebuild = cmdRebuild.CreateToolItem();
|
|
toolClean = cmdClean.CreateToolItem();
|
|
toolCancelBuild = cmdCancelBuild.CreateToolItem();
|
|
|
|
ToolBar = toolbar = new ToolBar();
|
|
ToolBar.Style = "ToolBar";
|
|
ToolBar.Items.Add(cmdNew);
|
|
ToolBar.Items.Add(cmdOpen);
|
|
ToolBar.Items.Add(cmdSave);
|
|
ToolBar.Items.Add(new SeparatorToolItem { Type = SeparatorToolItemType.Divider });
|
|
ToolBar.Items.Add(cmdUndo);
|
|
ToolBar.Items.Add(cmdRedo);
|
|
ToolBar.Items.Add(new SeparatorToolItem { Type = SeparatorToolItemType.Divider });
|
|
ToolBar.Items.Add(cmdNewItem);
|
|
ToolBar.Items.Add(cmdExistingItem);
|
|
ToolBar.Items.Add(cmdNewFolder);
|
|
ToolBar.Items.Add(cmdExistingFolder);
|
|
ToolBar.Items.Add(new SeparatorToolItem { Type = SeparatorToolItemType.Divider });
|
|
ToolBar.Items.Add(toolBuild);
|
|
ToolBar.Items.Add(toolRebuild);
|
|
ToolBar.Items.Add(toolClean);
|
|
toolbar.Items.Add(toolCancelBuild);
|
|
}
|
|
}
|
|
}
|
|
|