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

Improved Add From Installed IDE project dialog

This commit is contained in:
Brian Fiete 2022-06-24 10:29:40 -07:00
parent 48635c1939
commit d204922403
4 changed files with 76 additions and 4 deletions

View file

@ -16,9 +16,11 @@ namespace IDE.ui
public String mName ~ delete _;
public String mPath ~ delete _;
public VerSpecRecord mVersion;
public Project.TargetType mTargetType;
}
protected IDEListView mProjectList;
DarkComboBox mKindCombo;
EditWidget mEditWidget;
bool mFilterChanged;
List<InstalledProject> mInstalledProjectList = new .() ~ DeleteContainerAndItems!(_);
@ -58,6 +60,21 @@ namespace IDE.ui
mEditWidget.mOnKeyDown.Add(new => EditKeyDownHandler);
mEditWidget.mOnContentChanged.Add(new (evt) => { mFilterChanged = true; });
mKindCombo = new DarkComboBox();
mKindCombo.Label = "Libraries";
mKindCombo.mPopulateMenuAction.Add(new (menu) =>
{
for (var kind in String[?]("All", "Libraries"))
{
menu.AddItem(kind).mOnMenuItemSelected.Add(new (menu) =>
{
mFilterChanged = true;
mKindCombo.Label = kind;
});
}
});
AddWidget(mKindCombo);
FindProjects();
}
@ -78,6 +95,7 @@ namespace IDE.ui
installedProject.mPath.Append("BeefProj.toml");
default:
}
installedProject.mTargetType = registryEntry.mTargetType;
mInstalledProjectList.Add(installedProject);
}
}
@ -128,9 +146,14 @@ namespace IDE.ui
mEditWidget.GetText(filterString);
filterString.Trim();
bool onlyLibs = mKindCombo.Label == "Libraries";
mFilteredList.Clear();
for (var installedProject in mInstalledProjectList)
{
if ((onlyLibs) && (!installedProject.mTargetType.IsLib))
continue;
if ((!filterString.IsEmpty) && (installedProject.mName.IndexOf(filterString, true) == -1))
continue;
@ -138,7 +161,7 @@ namespace IDE.ui
listViewItem.Label = installedProject.mName;
var subListViewItem = listViewItem.CreateSubItem(1);
subListViewItem.Label = installedProject.mPath;
subListViewItem.Label = Path.GetDirectoryPath(installedProject.mPath, .. scope .());
mFilteredList.Add(installedProject);
}
@ -223,6 +246,7 @@ namespace IDE.ui
float insetSize = GS!(6);
mProjectList.Resize(insetSize, insetSize, mWidth - insetSize - insetSize, mHeight - GS!(66));
mEditWidget.Resize(insetSize, mProjectList.mY + mProjectList.mHeight + insetSize, mWidth - insetSize - insetSize, GS!(22));
mKindCombo.Resize(insetSize, mHeight - GS!(26), Math.Min(GS!(160), mDefaultButton.mX - GS!(6)), GS!(26));
}
public override void CalcSize()