Skip to content

Commit 6ec1295

Browse files
committed
Extensibility
1 parent c5491de commit 6ec1295

3 files changed

Lines changed: 49 additions & 33 deletions

File tree

IDE/src/IDEApp.bf

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15141,7 +15141,7 @@ namespace IDE
1514115141
Debug.Assert(numOverWidgets <= 1);
1514215142
}*/
1514315143

15144-
public void FileRenamed(ProjectFileItem projectFileItem, String oldPath, String newPath)
15144+
public virtual void FileRenamed(ProjectFileItem projectFileItem, String oldPath, String newPath)
1514515145
{
1514615146
String newFileName = scope String();
1514715147
Path.GetFileName(newPath, newFileName);
@@ -15391,6 +15391,11 @@ namespace IDE
1539115391
}
1539215392
}
1539315393

15394+
public virtual bool WantsFileChangeDialog(ContentPanel panel)
15395+
{
15396+
return true;
15397+
}
15398+
1539415399
void UpdateWorkspace()
1539515400
{
1539615401
mFileWatcher.Update();
@@ -15543,7 +15548,7 @@ namespace IDE
1554315548
}
1554415549
});
1554515550

15546-
if (matchedContentPanel != null)
15551+
if ((matchedContentPanel != null) && (WantsFileChangeDialog(matchedContentPanel)))
1554715552
{
1554815553
FileChangedDialog.DialogKind dialogKind = File.Exists(fileName) ? .Changed : .Deleted;
1554915554

@@ -15612,7 +15617,7 @@ namespace IDE
1561215617
}
1561315618

1561415619
var sourceViewPanel = FindSourceViewPanel(fileName);
15615-
if (sourceViewPanel != null)
15620+
if ((sourceViewPanel != null) && (WantsFileChangeDialog(sourceViewPanel)))
1561615621
{
1561715622
FileChangedDialog.DialogKind dialogKind = File.Exists(fileName) ? .Changed : .Deleted;
1561815623

IDE/src/Project.bf

Lines changed: 38 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,11 @@ namespace IDE
148148
StopWatching();
149149
}
150150

151+
public virtual void PreDelete()
152+
{
153+
154+
}
155+
151156
public void GetFullImportPath(String outFullPath)
152157
{
153158
if (mProject.IsSingleFile)
@@ -585,7 +590,7 @@ namespace IDE
585590
AddChildAtIndex(pos, item);
586591
}
587592

588-
public virtual void RemoveChild(ProjectItem item)
593+
public virtual void RemoveChild(ProjectItem item, bool isExplicitDelete)
589594
{
590595
var projectFileItem = item as ProjectFileItem;
591596
if (projectFileItem != null)
@@ -910,6 +915,37 @@ namespace IDE
910915
{
911916
return DarkTheme.sDarkTheme.GetImage(.ProjectFolder);
912917
}
918+
919+
public void WithProjectItems(delegate void(ProjectItem) func)
920+
{
921+
List<int32> idxStack = scope List<int32>();
922+
List<ProjectFolder> folderStack = scope List<ProjectFolder>();
923+
924+
folderStack.Add(this);
925+
idxStack.Add(0);
926+
927+
while (folderStack.Count > 0)
928+
{
929+
int32 curIdx = idxStack[idxStack.Count - 1]++;
930+
ProjectFolder curFolder = folderStack[folderStack.Count - 1];
931+
if (curIdx >= curFolder.mChildItems.Count)
932+
{
933+
folderStack.RemoveAt(folderStack.Count - 1);
934+
idxStack.RemoveAt(idxStack.Count - 1);
935+
continue;
936+
}
937+
938+
var projectItem = curFolder.mChildItems[curIdx];
939+
if (projectItem is ProjectFolder)
940+
{
941+
folderStack.Add((ProjectFolder)projectItem);
942+
idxStack.Add(0);
943+
continue;
944+
}
945+
946+
func(projectItem);
947+
}
948+
}
913949
}
914950

915951
[Reflect(.StaticFields | .NonStaticFields | .ApplyToInnerTypes)]
@@ -2520,33 +2556,7 @@ namespace IDE
25202556

25212557
public void WithProjectItems(delegate void(ProjectItem) func)
25222558
{
2523-
List<int32> idxStack = scope List<int32>();
2524-
List<ProjectFolder> folderStack = scope List<ProjectFolder>();
2525-
2526-
folderStack.Add(mRootFolder);
2527-
idxStack.Add(0);
2528-
2529-
while (folderStack.Count > 0)
2530-
{
2531-
int32 curIdx = idxStack[idxStack.Count - 1]++;
2532-
ProjectFolder curFolder = folderStack[folderStack.Count - 1];
2533-
if (curIdx >= curFolder.mChildItems.Count)
2534-
{
2535-
folderStack.RemoveAt(folderStack.Count - 1);
2536-
idxStack.RemoveAt(idxStack.Count - 1);
2537-
continue;
2538-
}
2539-
2540-
var projectItem = curFolder.mChildItems[curIdx];
2541-
if (projectItem is ProjectFolder)
2542-
{
2543-
folderStack.Add((ProjectFolder)projectItem);
2544-
idxStack.Add(0);
2545-
continue;
2546-
}
2547-
2548-
func(projectItem);
2549-
}
2559+
mRootFolder.WithProjectItems(func);
25502560
}
25512561

25522562
public VerSpec* GetDependency(String projectName, bool checkRecursively = true)

IDE/src/ui/ProjectPanel.bf

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -537,7 +537,7 @@ namespace IDE.ui
537537
if (targetProjectFolder != sourceProjectItem.mParentFolder)
538538
{
539539
source.mParentItem.RemoveChildItem(source, false);
540-
sourceProjectItem.mParentFolder.RemoveChild(sourceProjectItem);
540+
sourceProjectItem.mParentFolder.RemoveChild(sourceProjectItem, false);
541541

542542
targetListItem.AddChildAtIndex(0, source);
543543
targetListItem.mOpenButton.Open(true, false);
@@ -1859,6 +1859,7 @@ namespace IDE.ui
18591859
{
18601860
if (let projectFileItem = projectItem as ProjectFileItem)
18611861
{
1862+
projectFileItem.PreDelete();
18621863
var path = scope String();
18631864
projectFileItem.GetFullImportPath(path);
18641865
doRemove = deletePathFunc(path);
@@ -1868,7 +1869,7 @@ namespace IDE.ui
18681869
if (doRemove)
18691870
{
18701871
if (projectItem.mParentFolder != null)
1871-
projectItem.mParentFolder.RemoveChild(projectItem);
1872+
projectItem.mParentFolder.RemoveChild(projectItem, deleteKind == .Normal);
18721873

18731874
mProjectToListViewMap.Remove(projectItem);
18741875
mListViewToProjectMap.Remove(listItem);

0 commit comments

Comments
 (0)