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:
parent
5dfb4a8f2e
commit
0543dfec65
2 changed files with 94 additions and 67 deletions
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue