1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-18 08:06:04 +02:00

Allow adding projects directly to workspace folders

This commit is contained in:
Fusion 2022-07-14 20:53:32 +02:00
parent 1183007a90
commit f7bed518f3

View file

@ -134,6 +134,7 @@ namespace IDE.ui
bool mImportFolderDeferred; bool mImportFolderDeferred;
bool mImportProjectDeferred; bool mImportProjectDeferred;
bool mImportInstalledDeferred; bool mImportInstalledDeferred;
WorkspaceFolder mAddProjectTargetFolder;
public Dictionary<ListViewItem, ProjectItem> mListViewToProjectMap = new .() ~ delete _; public Dictionary<ListViewItem, ProjectItem> mListViewToProjectMap = new .() ~ delete _;
public Dictionary<ProjectItem, ProjectListViewItem> mProjectToListViewMap = new .() ~ delete _; public Dictionary<ProjectItem, ProjectListViewItem> mProjectToListViewMap = new .() ~ delete _;
public Dictionary<ListViewItem, WorkspaceFolder> mListViewToWorkspaceFolderMap = new .() ~ delete _; public Dictionary<ListViewItem, WorkspaceFolder> mListViewToWorkspaceFolderMap = new .() ~ delete _;
@ -522,6 +523,19 @@ namespace IDE.ui
{ {
var projectListViewItem = InitProjectItem(project.mRootFolder); var projectListViewItem = InitProjectItem(project.mRootFolder);
projectListViewItem.mRefObject = project; projectListViewItem.mRefObject = project;
if (mAddProjectTargetFolder != null)
{
let root = mListView.GetRoot();
root.RemoveChildItem(projectListViewItem, false);
mAddProjectTargetFolder.mListView.MakeParent();
mAddProjectTargetFolder.mListView.AddChild(projectListViewItem);
mAddProjectTargetFolder.mListView.Open(true);
mProjectToWorkspaceFolderMap[project.mRootFolder] = mAddProjectTargetFolder;
mAddProjectTargetFolder.mProjects.Add(project);
mAddProjectTargetFolder = null;
}
} }
public void RebuildUI() public void RebuildUI()
@ -2623,6 +2637,29 @@ namespace IDE.ui
anItem = menu.AddItem("Rename"); anItem = menu.AddItem("Rename");
anItem.mOnMenuItemSelected.Add(new (item) => { EditListViewItem(focusedItem); }); anItem.mOnMenuItemSelected.Add(new (item) => { EditListViewItem(focusedItem); });
menu.AddItem(); menu.AddItem();
anItem = menu.AddItem("Add New Project...");
anItem.mOnMenuItemSelected.Add(new (item) => {
mAddProjectTargetFolder = folder;
AddNewProject();
});
if (gApp.IsCompiling)
anItem.SetDisabled(true);
anItem = menu.AddItem("Add Existing Project...");
anItem.mOnMenuItemSelected.Add(new (item) => {
mImportProjectDeferred = true;
mAddProjectTargetFolder = folder;
});
if (gApp.IsCompiling)
anItem.SetDisabled(true);
anItem = menu.AddItem("Add From Installed...");
anItem.mOnMenuItemSelected.Add(new (item) => {
mImportInstalledDeferred = true;
mAddProjectTargetFolder = folder;
});
if (gApp.IsCompiling)
anItem.SetDisabled(true);
anItem = menu.AddItem("New Folder"); anItem = menu.AddItem("New Folder");
anItem.mOnMenuItemSelected.Add(new (item) => { AddWorkspaceFolder(folder.mListView); }); anItem.mOnMenuItemSelected.Add(new (item) => { AddWorkspaceFolder(folder.mListView); });
handled = true; handled = true;
@ -2633,12 +2670,18 @@ namespace IDE.ui
menu.AddItem(); menu.AddItem();
anItem = menu.AddItem("Add New Project..."); anItem = menu.AddItem("Add New Project...");
anItem.mOnMenuItemSelected.Add(new (item) => { AddNewProject(); }); anItem.mOnMenuItemSelected.Add(new (item) => {
mAddProjectTargetFolder = null;
AddNewProject();
});
if (gApp.IsCompiling) if (gApp.IsCompiling)
anItem.SetDisabled(true); anItem.SetDisabled(true);
anItem = menu.AddItem("Add Existing Project..."); anItem = menu.AddItem("Add Existing Project...");
anItem.mOnMenuItemSelected.Add(new (item) => { mImportProjectDeferred = true; }); anItem.mOnMenuItemSelected.Add(new (item) => {
mAddProjectTargetFolder = null;
mImportProjectDeferred = true;
});
if (gApp.IsCompiling) if (gApp.IsCompiling)
anItem.SetDisabled(true); anItem.SetDisabled(true);