feature: supports to de-initialize a submodule (#1272)

Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
leo 2025-05-21 20:34:33 +08:00
parent 1fef7a7baa
commit b0c0c46441
No known key found for this signature in database
9 changed files with 139 additions and 13 deletions

View file

@ -0,0 +1,45 @@
using System.Threading.Tasks;
namespace SourceGit.ViewModels
{
public class DeinitSubmodule : Popup
{
public string Submodule
{
get;
private set;
}
public bool Force
{
get;
set;
}
public DeinitSubmodule(Repository repo, string submodule)
{
_repo = repo;
Submodule = submodule;
Force = false;
}
public override Task<bool> Sure()
{
_repo.SetWatcherEnabled(false);
ProgressDescription = "De-initialize Submodule";
var log = _repo.CreateLog("De-initialize Submodule");
Use(log);
return Task.Run(() =>
{
var succ = new Commands.Submodule(_repo.FullPath).Use(log).Deinit(Submodule, false);
log.Complete();
CallUIThread(() => _repo.SetWatcherEnabled(true));
return succ;
});
}
private Repository _repo;
}
}

View file

@ -2432,12 +2432,14 @@ namespace SourceGit.ViewModels
ev.Handled = true;
};
var copy = new MenuItem();
copy.Header = App.Text("Submodule.CopyPath");
copy.Icon = App.CreateMenuIcon("Icons.Copy");
copy.Click += (_, ev) =>
var deinit = new MenuItem();
deinit.Header = App.Text("Submodule.Deinit");
deinit.Icon = App.CreateMenuIcon("Icons.Undo");
deinit.IsEnabled = submodule.Status != Models.SubmoduleStatus.NotInited;
deinit.Click += (_, ev) =>
{
App.CopyText(submodule.Path);
if (CanCreatePopup())
ShowPopup(new DeinitSubmodule(this, submodule.Path));
ev.Handled = true;
};
@ -2451,10 +2453,22 @@ namespace SourceGit.ViewModels
ev.Handled = true;
};
var copy = new MenuItem();
copy.Header = App.Text("Submodule.CopyPath");
copy.Icon = App.CreateMenuIcon("Icons.Copy");
copy.Click += (_, ev) =>
{
App.CopyText(submodule.Path);
ev.Handled = true;
};
var menu = new ContextMenu();
menu.Items.Add(open);
menu.Items.Add(copy);
menu.Items.Add(new MenuItem() { Header = "-" });
menu.Items.Add(deinit);
menu.Items.Add(rm);
menu.Items.Add(new MenuItem() { Header = "-" });
menu.Items.Add(copy);
return menu;
}