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);
project.FinishCreate();
mProjectPanel.InitProject(project);
mProjectPanel.InitProject(project, mProjectPanel.GetSelectedWorkspaceFolder());
mProjectPanel.Sort();
mWorkspace.FixOptions();
mWorkspace.mHasChanged = true;
@ -2694,7 +2694,7 @@ namespace IDE
AddProjectToWorkspace(project, false);
if (addToUI)
mProjectPanel.InitProject(project);
mProjectPanel.InitProject(project, null);
}
}
if (!hadLoad)

View file

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

View file

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