1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-09 03:52:19 +02:00

Replaced mAddProjectTargetFolder with GetSelectedWorkspaceFolder()

This commit is contained in:
Brian Fiete 2022-07-16 09:36:21 -04:00
parent 8e34de65ea
commit b24f1209eb
3 changed files with 50 additions and 51 deletions

View file

@ -2304,7 +2304,7 @@ namespace IDE
AddNewProjectToWorkspace(project); AddNewProjectToWorkspace(project);
project.FinishCreate(); project.FinishCreate();
mProjectPanel.InitProject(project); mProjectPanel.InitProject(project, mProjectPanel.GetSelectedWorkspaceFolder());
mProjectPanel.Sort(); mProjectPanel.Sort();
mWorkspace.FixOptions(); mWorkspace.FixOptions();
mWorkspace.mHasChanged = true; mWorkspace.mHasChanged = true;
@ -2694,7 +2694,7 @@ namespace IDE
AddProjectToWorkspace(project, false); AddProjectToWorkspace(project, false);
if (addToUI) if (addToUI)
mProjectPanel.InitProject(project); mProjectPanel.InitProject(project, null);
} }
} }
if (!hadLoad) if (!hadLoad)

View file

@ -203,7 +203,7 @@ namespace IDE.ui
VerSpec verSpec = .SemVer(new .("*")); VerSpec verSpec = .SemVer(new .("*"));
defer verSpec.Dispose(); defer verSpec.Dispose();
let project = gApp.mProjectPanel.ImportProject(entry.mPath, verSpec); let project = gApp.mProjectPanel.ImportProject(entry.mPath, null, verSpec);
if (project == null) if (project == null)
{ {
return; return;

View file

@ -134,7 +134,6 @@ 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 _;
@ -519,21 +518,21 @@ namespace IDE.ui
} }
} }
public void InitProject(Project project) public void InitProject(Project project, WorkspaceFolder workspaceFolder)
{ {
var projectListViewItem = InitProjectItem(project.mRootFolder); var projectListViewItem = InitProjectItem(project.mRootFolder);
projectListViewItem.mRefObject = project; projectListViewItem.mRefObject = project;
if (mAddProjectTargetFolder != null) if (workspaceFolder != null)
{ {
let root = mListView.GetRoot(); let root = mListView.GetRoot();
root.RemoveChildItem(projectListViewItem, false); root.RemoveChildItem(projectListViewItem, false);
mAddProjectTargetFolder.mListView.MakeParent(); workspaceFolder.mListView.MakeParent();
mAddProjectTargetFolder.mListView.AddChild(projectListViewItem); workspaceFolder.mListView.AddChild(projectListViewItem);
mAddProjectTargetFolder.mListView.Open(true); workspaceFolder.mListView.Open(true);
mProjectToWorkspaceFolderMap[project.mRootFolder] = mAddProjectTargetFolder; mProjectToWorkspaceFolderMap[project.mRootFolder] = workspaceFolder;
mAddProjectTargetFolder.mProjects.Add(project); workspaceFolder.mProjects.Add(project);
mAddProjectTargetFolder = null; QueueSortItem(workspaceFolder.mListView);
} }
} }
@ -577,7 +576,7 @@ namespace IDE.ui
mProjectToWorkspaceFolderMap.Clear(); mProjectToWorkspaceFolderMap.Clear();
for (var project in IDEApp.sApp.mWorkspace.mProjects) for (var project in IDEApp.sApp.mWorkspace.mProjects)
InitProject(project); InitProject(project, null);
let root = mListView.GetRoot(); let root = mListView.GetRoot();
@ -1502,6 +1501,14 @@ namespace IDE.ui
#endif #endif
} }
public WorkspaceFolder GetSelectedWorkspaceFolder()
{
ListViewItem selectedItem = mListView.GetRoot().FindFirstSelectedItem();
if (mListViewToWorkspaceFolderMap.TryGetValue(selectedItem, let folder))
return folder;
return null;
}
ListViewItem GetSelectedParentItem() ListViewItem GetSelectedParentItem()
{ {
ListViewItem selectedItem = mListView.GetRoot().FindFirstSelectedItem(); ListViewItem selectedItem = mListView.GetRoot().FindFirstSelectedItem();
@ -2449,7 +2456,7 @@ namespace IDE.ui
} }
public Project ImportProject(String filePath, VerSpec verSpec = .None) public Project ImportProject(String filePath, WorkspaceFolder workspaceFolder, VerSpec verSpec = .None)
{ {
if (gApp.IsCompiling) if (gApp.IsCompiling)
return null; return null;
@ -2496,7 +2503,7 @@ namespace IDE.ui
gApp.AddNewProjectToWorkspace(proj, verSpec); gApp.AddNewProjectToWorkspace(proj, verSpec);
gApp.mWorkspace.FixOptions(); gApp.mWorkspace.FixOptions();
gApp.[Friend]FlushDeferredLoadProjects(true); gApp.[Friend]FlushDeferredLoadProjects(true);
InitProject(proj); InitProject(proj, workspaceFolder);
if (failed) if (failed)
{ {
gApp.Fail(StackStringFormat!("Failed to load project: {0}", filePath)); gApp.Fail(StackStringFormat!("Failed to load project: {0}", filePath));
@ -2542,6 +2549,8 @@ namespace IDE.ui
initialDir.Concat(Path.DirectorySeparatorChar, "Samples"); initialDir.Concat(Path.DirectorySeparatorChar, "Samples");
} }
var workspaceFolder = GetSelectedWorkspaceFolder();
fileDialog.InitialDirectory = initialDir; fileDialog.InitialDirectory = initialDir;
fileDialog.ValidateNames = true; fileDialog.ValidateNames = true;
fileDialog.DefaultExt = ".toml"; fileDialog.DefaultExt = ".toml";
@ -2551,7 +2560,7 @@ namespace IDE.ui
{ {
for (String origProjFilePath in fileDialog.FileNames) for (String origProjFilePath in fileDialog.FileNames)
{ {
ImportProject(origProjFilePath); ImportProject(origProjFilePath, workspaceFolder);
} }
} }
#endif #endif
@ -2656,16 +2665,10 @@ namespace IDE.ui
{ {
Menu anItem; Menu anItem;
if (mListViewToWorkspaceFolderMap.TryGetValue(focusedItem, let folder)) void AddWorkspaceMenuItems()
{ {
anItem = menu.AddItem("Remove");
anItem.mOnMenuItemSelected.Add(new (item) => { RemoveSelectedWorkspaceFolder(); });
anItem = menu.AddItem("Rename");
anItem.mOnMenuItemSelected.Add(new (item) => { EditListViewItem(focusedItem); });
menu.AddItem();
anItem = menu.AddItem("Add New Project..."); anItem = menu.AddItem("Add New Project...");
anItem.mOnMenuItemSelected.Add(new (item) => { anItem.mOnMenuItemSelected.Add(new (item) => {
mAddProjectTargetFolder = folder;
AddNewProject(); AddNewProject();
}); });
if (gApp.IsCompiling) if (gApp.IsCompiling)
@ -2674,7 +2677,6 @@ namespace IDE.ui
anItem = menu.AddItem("Add Existing Project..."); anItem = menu.AddItem("Add Existing Project...");
anItem.mOnMenuItemSelected.Add(new (item) => { anItem.mOnMenuItemSelected.Add(new (item) => {
mImportProjectDeferred = true; mImportProjectDeferred = true;
mAddProjectTargetFolder = folder;
}); });
if (gApp.IsCompiling) if (gApp.IsCompiling)
anItem.SetDisabled(true); anItem.SetDisabled(true);
@ -2682,15 +2684,34 @@ namespace IDE.ui
anItem = menu.AddItem("Add From Installed..."); anItem = menu.AddItem("Add From Installed...");
anItem.mOnMenuItemSelected.Add(new (item) => { anItem.mOnMenuItemSelected.Add(new (item) => {
mImportInstalledDeferred = true; mImportInstalledDeferred = true;
mAddProjectTargetFolder = folder;
}); });
if (gApp.IsCompiling) if (gApp.IsCompiling)
anItem.SetDisabled(true); anItem.SetDisabled(true);
anItem = menu.AddItem("New Folder"); anItem = menu.AddItem("New Folder");
anItem.mOnMenuItemSelected.Add(new (item) => { anItem.mOnMenuItemSelected.Add(new (item) => {
let newfolder = AddWorkspaceFolder(folder.mListView); var workspaceFolder = GetSelectedWorkspaceFolder();
newfolder.mParent = folder; if (workspaceFolder != null)
{
let newFolder = AddWorkspaceFolder(workspaceFolder.mListView);
newFolder.mParent = workspaceFolder;
}
else
{
AddWorkspaceFolder((ProjectListViewItem)mListView.GetRoot());
}
}); });
}
if (mListViewToWorkspaceFolderMap.TryGetValue(focusedItem, let folder))
{
anItem = menu.AddItem("Remove");
anItem.mOnMenuItemSelected.Add(new (item) => { RemoveSelectedWorkspaceFolder(); });
anItem = menu.AddItem("Rename");
anItem.mOnMenuItemSelected.Add(new (item) => { EditListViewItem(focusedItem); });
menu.AddItem();
AddWorkspaceMenuItems();
handled = true; handled = true;
} }
else if (gApp.mWorkspace.IsInitialized) else if (gApp.mWorkspace.IsInitialized)
@ -2698,29 +2719,7 @@ namespace IDE.ui
AddOpenContainingFolder(); AddOpenContainingFolder();
menu.AddItem(); menu.AddItem();
anItem = menu.AddItem("Add New Project..."); AddWorkspaceMenuItems();
anItem.mOnMenuItemSelected.Add(new (item) => {
mAddProjectTargetFolder = null;
AddNewProject();
});
if (gApp.IsCompiling)
anItem.SetDisabled(true);
anItem = menu.AddItem("Add Existing Project...");
anItem.mOnMenuItemSelected.Add(new (item) => {
mAddProjectTargetFolder = null;
mImportProjectDeferred = true;
});
if (gApp.IsCompiling)
anItem.SetDisabled(true);
anItem = menu.AddItem("Add From Installed...");
anItem.mOnMenuItemSelected.Add(new (item) => { mImportInstalledDeferred = true; });
if (gApp.IsCompiling)
anItem.SetDisabled(true);
anItem = menu.AddItem("New Folder");
anItem.mOnMenuItemSelected.Add(new (item) => { AddWorkspaceFolder((ProjectListViewItem)mListView.GetRoot()); });
menu.AddItem(); menu.AddItem();
anItem = menu.AddItem("Properties..."); anItem = menu.AddItem("Properties...");
anItem.mOnMenuItemSelected.Add(new (item) => { ShowWorkspaceProperties(); }); anItem.mOnMenuItemSelected.Add(new (item) => { ShowWorkspaceProperties(); });