1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-12 05:14:10 +02:00

Fixed file moving issues, multi-select issues

This commit is contained in:
Brian Fiete 2021-01-21 05:19:27 -08:00
parent 5dfb4a8f2e
commit 0543dfec65
2 changed files with 94 additions and 67 deletions

View file

@ -280,6 +280,14 @@ namespace IDE
if ((wasWatching) && (changePath)) if ((wasWatching) && (changePath))
StartWatching(); StartWatching();
} }
public void RecalcPath()
{
mPath.Clear();
mPath.Append(mParentFolder.mPath);
mPath.Append(Path.DirectorySeparatorChar);
mPath.Append(mName);
}
} }
public class ProjectSource : ProjectFileItem public class ProjectSource : ProjectFileItem

View file

@ -321,21 +321,33 @@ namespace IDE.ui
var destPath = targetProjectFolder.GetFullImportPath(.. scope .()); var destPath = targetProjectFolder.GetFullImportPath(.. scope .());
destPath.AppendF($"{Path.DirectorySeparatorChar}{sourceProjectFileItem.mName}"); destPath.AppendF($"{Path.DirectorySeparatorChar}{sourceProjectFileItem.mName}");
if (File.Move(sourcePath, destPath) case .Ok) if (!targetProjectFolder.mChildMap.TryAdd(sourceProjectFileItem.mName, sourceProjectFileItem))
{ {
gApp.FileRenamed(sourceProjectFileItem, sourcePath, destPath); fileErrors.Add(scope:: .(destPath));
} }
else else
fileErrors.Add(scope:: .(destPath));
if (targetProjectFolder != sourceProjectItem.mParentFolder)
{ {
source.mParentItem.RemoveChildItem(source, false); if (File.Move(sourcePath, destPath) case .Ok)
sourceProjectItem.mParentFolder.RemoveChild(sourceProjectItem); {
gApp.FileRenamed(sourceProjectFileItem, sourcePath, destPath);
targetListItem.AddChildAtIndex(0, source); if (targetProjectFolder != sourceProjectItem.mParentFolder)
targetListItem.mOpenButton.Open(true, false); {
targetProjectFolder.AddChildAtIndex(0, sourceProjectItem); source.mParentItem.RemoveChildItem(source, false);
sourceProjectItem.mParentFolder.RemoveChild(sourceProjectItem);
targetListItem.AddChildAtIndex(0, source);
targetListItem.mOpenButton.Open(true, false);
targetProjectFolder.AddChildAtIndex(0, sourceProjectItem);
sourceProjectFileItem.RecalcPath();
}
}
else
{
targetProjectFolder.mChildMap.Remove(sourceProjectFileItem.mName);
fileErrors.Add(scope:: .(destPath));
}
} }
} }
} }
@ -2309,18 +2321,17 @@ namespace IDE.ui
item = menu.AddItem("Ignore"); item = menu.AddItem("Ignore");
item.mOnMenuItemSelected.Add(new (item) => item.mOnMenuItemSelected.Add(new (item) =>
{ {
var selectedItem = GetSelectedItem(); mListView.GetRoot().WithSelectedItems(scope (selectedItem) =>
if (selectedItem != null)
{
ProjectItem projectItem;
mListViewToProjectMap.TryGetValue(selectedItem, out projectItem);
DoDeleteItem(selectedItem, null, .Ignore);
if (projectItem != null)
{ {
projectItem.mIncludeKind = .Ignore; ProjectItem projectItem;
projectItem.mProject.SetChanged(); mListViewToProjectMap.TryGetValue(selectedItem, out projectItem);
} DoDeleteItem(selectedItem, null, .Ignore);
} if (projectItem != null)
{
projectItem.mIncludeKind = .Ignore;
projectItem.mProject.SetChanged();
}
});
}); });
} }
else if (projectItem.mIncludeKind == .Manual) else if (projectItem.mIncludeKind == .Manual)
@ -2338,14 +2349,18 @@ namespace IDE.ui
item = menu.AddItem("Unignore"); item = menu.AddItem("Unignore");
item.mOnMenuItemSelected.Add(new (item) => item.mOnMenuItemSelected.Add(new (item) =>
{ {
var projectItem = GetSelectedProjectItem(); mListView.GetRoot().WithSelectedItems(scope (selectedItem) =>
if ((projectItem != null) && (projectItem.mIncludeKind == .Ignore)) {
{ ProjectItem projectItem;
if (projectItem.mParentFolder.IsIgnored()) mListViewToProjectMap.TryGetValue(selectedItem, out projectItem);
projectItem.mIncludeKind = .Auto; if (projectItem.mIncludeKind == .Ignore)
else {
Unignore(projectItem); if (projectItem.mParentFolder.IsIgnored())
} projectItem.mIncludeKind = .Auto;
else
Unignore(projectItem);
}
});
}); });
} }
@ -2360,54 +2375,58 @@ namespace IDE.ui
item.mOnMenuItemSelected.Add(new (item) => item.mOnMenuItemSelected.Add(new (item) =>
{ {
let projectItem = GetSelectedProjectItem(); mListView.GetRoot().WithSelectedItems(scope (selectedItem) =>
if (let projectFolder = projectItem as ProjectFolder) {
{ ProjectItem projectItem;
projectFolder.mProject.SetChanged(); mListViewToProjectMap.TryGetValue(selectedItem, out projectItem);
projectFolder.mAutoInclude = !projectFolder.mAutoInclude; if (let projectFolder = projectItem as ProjectFolder)
{
if (projectFolder.mAutoInclude) projectFolder.mProject.SetChanged();
{ projectFolder.mAutoInclude = !projectFolder.mAutoInclude;
if (HasNonAutoItems(projectFolder))
if (projectFolder.mAutoInclude)
{ {
var dialog = ThemeFactory.mDefault.CreateDialog("Apply to children?", if (HasNonAutoItems(projectFolder))
"Do you want to apply auto-include to child items? Selecting 'no' means that current child items will remain manually specified and only new items will be auto-included."); {
dialog.AddButton("Yes", new (evt) => var dialog = ThemeFactory.mDefault.CreateDialog("Apply to children?",
{ "Do you want to apply auto-include to child items? Selecting 'no' means that current child items will remain manually specified and only new items will be auto-included.");
let projectItem = GetSelectedProjectItem(); dialog.AddButton("Yes", new (evt) =>
if (let projectFolder = projectItem as ProjectFolder)
{ {
RehupFolder(projectFolder, .ApplyAutoToChildren); let projectItem = GetSelectedProjectItem();
} if (let projectFolder = projectItem as ProjectFolder)
}); {
dialog.AddButton("No", new (evt) => RehupFolder(projectFolder, .ApplyAutoToChildren);
{ }
let projectItem = GetSelectedProjectItem(); });
if (let projectFolder = projectItem as ProjectFolder) dialog.AddButton("No", new (evt) =>
{ {
RehupFolder(projectFolder); let projectItem = GetSelectedProjectItem();
} if (let projectFolder = projectItem as ProjectFolder)
}); {
dialog.PopupWindow(gApp.GetActiveWindow()); RehupFolder(projectFolder);
}
});
dialog.PopupWindow(gApp.GetActiveWindow());
}
else
RehupFolder(projectFolder);
} }
else else
RehupFolder(projectFolder); //if ((!projectFolder.mAutoInclude) && (!projectFolder.IsAutoInclude()))
}
else
//if ((!projectFolder.mAutoInclude) && (!projectFolder.IsAutoInclude()))
{
// Remove any previously auto-added items
for (int childIdx = projectFolder.mChildItems.Count - 1; childIdx >= 0; childIdx--)
{ {
let childItem = projectFolder.mChildItems[childIdx]; // Remove any previously auto-added items
if (childItem.mIncludeKind == .Auto) for (int childIdx = projectFolder.mChildItems.Count - 1; childIdx >= 0; childIdx--)
{ {
let listViewItem = (ProjectListViewItem)mProjectToListViewMap[childItem]; let childItem = projectFolder.mChildItems[childIdx];
DoDeleteItem(listViewItem, null, .ForceRemove); if (childItem.mIncludeKind == .Auto)
{
let listViewItem = (ProjectListViewItem)mProjectToListViewMap[childItem];
DoDeleteItem(listViewItem, null, .ForceRemove);
}
} }
} }
} }
} });
}); });
} }
} }