a lot of work
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
|
||||
using ModpackUpdater.Apps.Manager.Api;
|
||||
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
|
||||
using ModpackUpdater.Apps.Manager.LangRes;
|
||||
using ModpackUpdater.Apps.Manager.Ui;
|
||||
using Pilz.Features;
|
||||
using Telerik.WinControls.UI;
|
||||
using Pilz.UI.Symbols;
|
||||
|
||||
namespace ModpackUpdater.Apps.Manager.Features.CM;
|
||||
|
||||
@@ -12,19 +12,15 @@ internal class CheckSingleActionHealthyFeature : PluginFunction, IPluginFeatureP
|
||||
|
||||
public CheckSingleActionHealthyFeature() : base(FeatureTypes.ActionsContextMenu, "origin.checksingleactionhearlthy", FeatureNamesLangRes.CheckSingleActionHealthy)
|
||||
{
|
||||
Icon = AppGlobals.Symbols.GetSvgImage(AppSymbols.heart_with_pulse, Pilz.UI.Symbols.SymbolSize.Small);
|
||||
Icon = AppGlobals.Symbols.GetImage(AppSymbols.heart_with_pulse, SymbolSize.Small);
|
||||
}
|
||||
|
||||
protected override object? ExecuteFunction(PluginFunctionParameter? @params)
|
||||
{
|
||||
if (@params is not MainApiParameters p
|
||||
|| p.Api.MainWindow is not MainForm mainForm
|
||||
|| mainForm.Controls.Find("radGridView_Actions", true).FirstOrDefault() is not RadGridView gridView
|
||||
|| gridView.SelectedRows.FirstOrDefault() is not GridViewRowInfo row
|
||||
|| row.Tag is not InstallAction)
|
||||
if (@params is not MainApiParameters p || p.Api.Model.SelectedGridRow is not { } row)
|
||||
return null;
|
||||
|
||||
SharedFunctions.CheckActionHealthy(p.Api, row);
|
||||
Task.Run(() => SharedFunctions.CheckActionHealthy(p.Api, row)).Wait();
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
|
||||
using ModpackUpdater.Apps.Manager.Api;
|
||||
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
|
||||
using ModpackUpdater.Apps.Manager.LangRes;
|
||||
using ModpackUpdater.Apps.Manager.Ui;
|
||||
using Pilz.Features;
|
||||
using Telerik.WinControls.UI;
|
||||
|
||||
namespace ModpackUpdater.Apps.Manager.Features.CM;
|
||||
|
||||
@@ -12,18 +12,15 @@ internal class ClearDirectLinkFeature : PluginFunction, IPluginFeatureProvider<C
|
||||
|
||||
public ClearDirectLinkFeature() : base(FeatureTypes.ActionsContextMenu, "origin.cleardirectlink", FeatureNamesLangRes.ClearDirectLinkFeature)
|
||||
{
|
||||
Icon = AppGlobals.Symbols.GetSvgImage(AppSymbols.broom, Pilz.UI.Symbols.SymbolSize.Small);
|
||||
Icon = AppGlobals.Symbols.GetImage(AppSymbols.broom, Pilz.UI.Symbols.SymbolSize.Small);
|
||||
}
|
||||
|
||||
protected override object? ExecuteFunction(PluginFunctionParameter? @params)
|
||||
{
|
||||
if (@params is not MainApiParameters p
|
||||
|| p.Api.MainWindow is not MainForm mainForm
|
||||
|| mainForm.Controls.Find("radGridView_Actions", true).FirstOrDefault() is not RadGridView gridView
|
||||
|| gridView.SelectedRows.FirstOrDefault()?.Tag is not InstallAction selectedAction)
|
||||
if (@params is not MainApiParameters p || p.Api.Model.SelectedGridRow is not { } row)
|
||||
return null;
|
||||
|
||||
SharedFunctions.ClearDirectLinks(p.Api, selectedAction);
|
||||
SharedFunctions.ClearDirectLinks(row);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
|
||||
using ModpackUpdater.Apps.Manager.Api;
|
||||
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
|
||||
using ModpackUpdater.Apps.Manager.LangRes;
|
||||
using ModpackUpdater.Apps.Manager.Ui;
|
||||
using Pilz.Features;
|
||||
using Pilz.UI.Symbols;
|
||||
using Telerik.WinControls.UI;
|
||||
|
||||
namespace ModpackUpdater.Apps.Manager.Features.CM;
|
||||
internal class UpdateCollectorFeature : PluginFunction, IPluginFeatureProvider<UpdateCollectorFeature>
|
||||
@@ -12,19 +11,15 @@ internal class UpdateCollectorFeature : PluginFunction, IPluginFeatureProvider<U
|
||||
|
||||
public UpdateCollectorFeature() : base(FeatureTypes.ActionsContextMenu, "origin.updatecollector", FeatureNamesLangRes.UpdateCollectorFeature)
|
||||
{
|
||||
Icon = AppGlobals.Symbols.GetSvgImage(AppSymbols.search, SymbolSize.Small);
|
||||
Icon = AppGlobals.Symbols.GetImage(AppSymbols.search, SymbolSize.Small);
|
||||
}
|
||||
|
||||
protected override object? ExecuteFunction(PluginFunctionParameter? @params)
|
||||
{
|
||||
if (@params is not MainApiParameters p
|
||||
|| p.Api.CurWorkspace?.UpdateInfos is null
|
||||
|| p.Api.MainWindow is not MainForm mainForm
|
||||
|| mainForm.Controls.Find("radGridView_Actions", true).FirstOrDefault() is not RadGridView gridView
|
||||
|| gridView.SelectedRows.FirstOrDefault()?.Tag is not InstallAction selectedAction)
|
||||
if (@params is not MainApiParameters p || p.Api.Model.SelectedGridRow is not { } row)
|
||||
return null;
|
||||
|
||||
SharedFunctions.CollectUpdates(p.Api, selectedAction);
|
||||
Task.Run(() => SharedFunctions.CollectUpdates(p.Api, row.Action)).Wait();
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
|
||||
using ModpackUpdater.Apps.Manager.Api;
|
||||
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
|
||||
using ModpackUpdater.Apps.Manager.LangRes;
|
||||
using ModpackUpdater.Apps.Manager.Ui;
|
||||
using ModpackUpdater.Apps.Manager.Ui.Models;
|
||||
using Pilz.Features;
|
||||
using Telerik.WinControls.UI;
|
||||
using Pilz.UI.Symbols;
|
||||
|
||||
namespace ModpackUpdater.Apps.Manager.Features.CM;
|
||||
|
||||
@@ -12,18 +13,15 @@ internal class UpdateDirectLinkFeature : PluginFunction, IPluginFeatureProvider<
|
||||
|
||||
public UpdateDirectLinkFeature() : base(FeatureTypes.ActionsContextMenu, "origin.updatedirectlink", FeatureNamesLangRes.UpdateDirectLinkFeature)
|
||||
{
|
||||
Icon = AppGlobals.Symbols.GetSvgImage(AppSymbols.renew, Pilz.UI.Symbols.SymbolSize.Small);
|
||||
Icon = AppGlobals.Symbols.GetImage(AppSymbols.renew, SymbolSize.Small);
|
||||
}
|
||||
|
||||
protected override object? ExecuteFunction(PluginFunctionParameter? @params)
|
||||
{
|
||||
if (@params is not MainApiParameters p
|
||||
|| p.Api.MainWindow is not MainForm mainForm
|
||||
|| mainForm.Controls.Find("radGridView_Actions", true).FirstOrDefault() is not RadGridView gridView
|
||||
|| gridView.SelectedRows.FirstOrDefault()?.Tag is not InstallAction selectedAction)
|
||||
if (@params is not MainApiParameters p || p.Api.Model.SelectedGridRow is not MainWindowGridRow row)
|
||||
return null;
|
||||
|
||||
SharedFunctions.FindNewDirectLinks(p.Api, selectedAction);
|
||||
Task.Run(() => SharedFunctions.FindNewDirectLinks(row)).Wait();
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -1,98 +1,71 @@
|
||||
using ModpackUpdater.Apps.Manager.Api.Model;
|
||||
using System.Text;
|
||||
using ModpackUpdater.Apps.Manager.Api.Model;
|
||||
using ModpackUpdater.Apps.Manager.LangRes;
|
||||
using ModpackUpdater.Apps.Manager.Ui;
|
||||
using ModpackUpdater.Apps.Manager.Ui.Models;
|
||||
using ModpackUpdater.Manager;
|
||||
using MsBox.Avalonia;
|
||||
using OfficeOpenXml;
|
||||
using Pilz.UI.WinForms.Extensions;
|
||||
using System.Text;
|
||||
using Telerik.WinControls.UI;
|
||||
using OfficeOpenXml.Table;
|
||||
using Pilz.UI.AvaloniaUI.Dialogs;
|
||||
|
||||
namespace ModpackUpdater.Apps.Manager.Features;
|
||||
|
||||
internal static class SharedFunctions
|
||||
{
|
||||
public static bool CheckActionHealthy(IMainApi api, params GridViewRowInfo[] selectedRows)
|
||||
public static async Task<bool> CheckActionHealthy(IMainApi api, params MainWindowGridRow[] rows)
|
||||
{
|
||||
if (api.MainWindow is not MainForm mainForm
|
||||
|| mainForm.Controls.Find("radGridView_Actions", true).FirstOrDefault() is not RadGridView gridView
|
||||
|| mainForm.Controls.Find("radWaitingBar_Actions", true).FirstOrDefault() is not RadWaitingBar rwb)
|
||||
return false;
|
||||
|
||||
rwb.StartWaiting();
|
||||
rwb.ShowText = true;
|
||||
var rowsCount = selectedRows.Length;
|
||||
rwb.Text = "0 / " + rowsCount;
|
||||
gridView.BeginUpdate();
|
||||
|
||||
var rowsCount = rows.Length;
|
||||
var failed = false;
|
||||
var msg = default(string);
|
||||
var factory = new ModpackFactory();
|
||||
|
||||
var rows = new Dictionary<GridViewRowInfo, InstallAction>();
|
||||
for (var i = 0; i < selectedRows.Length; i++)
|
||||
|
||||
for (var i = 0; i < rows.Length; i++)
|
||||
{
|
||||
var row = selectedRows[i];
|
||||
|
||||
if (row.Tag is InstallAction action)
|
||||
var row = rows[i];
|
||||
|
||||
try
|
||||
{
|
||||
Task.Run(async () =>
|
||||
{
|
||||
try
|
||||
{
|
||||
var result = await factory.ResolveSourceUrl(action);
|
||||
failed = string.IsNullOrWhiteSpace(result);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
msg = ex.Message;
|
||||
}
|
||||
}).Wait();
|
||||
var result = await factory.ResolveSourceUrl(row.Action);
|
||||
failed = string.IsNullOrWhiteSpace(result);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
msg = ex.Message;
|
||||
}
|
||||
|
||||
foreach (var c in row.Cells)
|
||||
{
|
||||
c.Style.CustomizeFill = true;
|
||||
c.Style.BackColor = failed ? Color.IndianRed : Color.ForestGreen;
|
||||
}
|
||||
|
||||
rwb.Text = $"{i} / {rowsCount}";
|
||||
|
||||
Application.DoEvents();
|
||||
row.IsValid = !failed;
|
||||
|
||||
// rwb.Text = $"{i} / {rowsCount}";
|
||||
}
|
||||
|
||||
gridView.EndUpdate();
|
||||
rwb.ShowText = false;
|
||||
rwb.StopWaiting();
|
||||
|
||||
|
||||
if (rowsCount == 1 && failed && !string.IsNullOrWhiteSpace(msg))
|
||||
MessageBox.Show(msg);
|
||||
|
||||
_ = MessageBoxManager.GetMessageBoxStandard(string.Empty, msg).ShowAsPopupAsync(api.MainWindow);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static bool CollectUpdates(IMainApi api, params InstallAction[] actions)
|
||||
public static async Task<bool> CollectUpdates(IMainApi api, params InstallAction[] actions)
|
||||
{
|
||||
if (api.CurWorkspace?.UpdateInfos is null)
|
||||
if (api.Model.CurrentWorkspace?.UpdateInfos is null || api.Model.CurrentTreeNodes is null)
|
||||
return false;
|
||||
|
||||
// Collect updates
|
||||
var ucDialog = new UpdatesCollectorUi(api.CurWorkspace, actions);
|
||||
if (!ucDialog.ShowDialog(api.MainWindow).IsOk() || ucDialog.CurrentUpdates is null)
|
||||
var result = await AvaloniaFlyoutBase.Show(new UpdatesCollectorView(api.Model.CurrentWorkspace, actions), api.MainWindow);
|
||||
if (result.Result is null || result.CurrentUpdates is null)
|
||||
return false;
|
||||
|
||||
// Collect versions with changes
|
||||
var updates = new List<UpdatesCollectorUi.ModUpdateInfo>();
|
||||
foreach (var update in ucDialog.CurrentUpdates.List)
|
||||
{
|
||||
if (update.Origin.SourceTag != update.AvailableVersions[update.NewVersion].Key)
|
||||
updates.Add(update);
|
||||
}
|
||||
var updates = result.CurrentUpdates.List.Where(update => update.Origin.SourceTag != update.AvailableVersions[update.NewVersion].Key).ToList();
|
||||
|
||||
// Path install actions
|
||||
foreach (var update in updates)
|
||||
{
|
||||
update.Origin.SourceTag = update.AvailableVersions[update.NewVersion].Key;
|
||||
api.UpdateItem(update.Origin);
|
||||
var sourceTag = update.AvailableVersions[update.NewVersion].Key;
|
||||
if (api.Model.CurrentGridRows?.FirstOrDefault(n => n.Action == update.Origin) is { } row)
|
||||
row.SourceTag = sourceTag;
|
||||
else
|
||||
update.Origin.SourceTag = sourceTag;
|
||||
}
|
||||
|
||||
// Create update actions
|
||||
@@ -104,65 +77,41 @@ internal static class SharedFunctions
|
||||
InheritFrom = update.Origin.Id,
|
||||
});
|
||||
}
|
||||
api.CurWorkspace.UpdateInfos.Updates.Insert(0, updateSet);
|
||||
api.UpdateItem(updateSet);
|
||||
api.Model.CurrentWorkspace.UpdateInfos.Updates.Insert(0, updateSet);
|
||||
|
||||
// Add update to ui
|
||||
api.Model.CurrentTreeNodes[1].Nodes.Add(new ActionSetTreeNode(updateSet));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void FindNewDirectLinks(IMainApi api, params InstallAction[] actions)
|
||||
public static async Task FindNewDirectLinks(params MainWindowGridRow[] rows)
|
||||
{
|
||||
var mainForm = api.MainWindow as MainForm;
|
||||
var gridView = mainForm?.Controls.Find("radGridView_Actions", true).FirstOrDefault() as RadGridView;
|
||||
var rwb = mainForm?.Controls.Find("radWaitingBar_Actions", true).FirstOrDefault() as RadWaitingBar;
|
||||
var factory = new ModpackFactory();
|
||||
|
||||
rwb?.StartWaiting();
|
||||
gridView?.BeginUpdate();
|
||||
|
||||
foreach (var action in actions)
|
||||
foreach (var row in rows)
|
||||
{
|
||||
if (action.SourceType != SourceType.DirectLink)
|
||||
if (row.SourceType == SourceType.DirectLink)
|
||||
continue;
|
||||
|
||||
try
|
||||
{
|
||||
try
|
||||
{
|
||||
Task.Run(async () =>
|
||||
{
|
||||
action.SourceUrl = await factory.ResolveSourceUrl(action);
|
||||
}).Wait();
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
// Fail silently
|
||||
}
|
||||
api.UpdateItem(action);
|
||||
row.SourceUrl = await factory.ResolveSourceUrl(row.Action);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
// Fail silently
|
||||
}
|
||||
}
|
||||
|
||||
gridView?.EndUpdate();
|
||||
rwb?.StopWaiting();
|
||||
}
|
||||
|
||||
public static void ClearDirectLinks(IMainApi api, params InstallAction[] actions)
|
||||
public static void ClearDirectLinks(params MainWindowGridRow[] rows)
|
||||
{
|
||||
var mainForm = api.MainWindow as MainForm;
|
||||
var gridView = mainForm?.Controls.Find("radGridView_Actions", true).FirstOrDefault() as RadGridView;
|
||||
var rwb = mainForm?.Controls.Find("radWaitingBar_Actions", true).FirstOrDefault() as RadWaitingBar;
|
||||
|
||||
rwb?.StartWaiting();
|
||||
gridView?.BeginUpdate();
|
||||
|
||||
foreach (var action in actions)
|
||||
foreach (var row in rows)
|
||||
{
|
||||
if (action.SourceType != SourceType.DirectLink)
|
||||
{
|
||||
action.SourceUrl = null;
|
||||
api.UpdateItem(action);
|
||||
}
|
||||
if (row.SourceType != SourceType.DirectLink)
|
||||
row.SourceUrl = null;
|
||||
}
|
||||
|
||||
gridView?.EndUpdate();
|
||||
rwb?.StopWaiting();
|
||||
}
|
||||
|
||||
public static string GenerateChangelog(InstallInfos installInfos, UpdateInfo updateInfos)
|
||||
@@ -250,7 +199,7 @@ internal static class SharedFunctions
|
||||
return sb.ToString().TrimEnd();
|
||||
}
|
||||
|
||||
public static ExcelPackage? GenerateModlistAsExcel(InstallInfos installInfos)
|
||||
public static ExcelPackage GenerateModlistAsExcel(InstallInfos installInfos)
|
||||
{
|
||||
var pkg = new ExcelPackage();
|
||||
var ws = pkg.Workbook.Worksheets.Add(string.Format(GeneralLangRes.ModlistForVersionX, installInfos.Version));
|
||||
@@ -301,7 +250,7 @@ internal static class SharedFunctions
|
||||
ws.Column(cc++).Width = 20;
|
||||
ws.Column(cc++).Width = 30;
|
||||
var tableDef = ws.Tables.Add(ws.Cells[1, 1, cr - 1, cc - 1], "Table");
|
||||
tableDef.TableStyle = OfficeOpenXml.Table.TableStyles.Medium16;
|
||||
tableDef.TableStyle = TableStyles.Medium16;
|
||||
tableDef.ShowHeader = true;
|
||||
|
||||
return pkg;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
|
||||
using ModpackUpdater.Apps.Manager.Api;
|
||||
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
|
||||
using ModpackUpdater.Apps.Manager.LangRes;
|
||||
using ModpackUpdater.Apps.Manager.Ui;
|
||||
using Pilz.Features;
|
||||
using Telerik.WinControls.UI;
|
||||
using Pilz.UI.Symbols;
|
||||
|
||||
namespace ModpackUpdater.Apps.Manager.Features.Tools;
|
||||
|
||||
@@ -12,17 +12,15 @@ internal class CheckAllActionsHealthyFeature : PluginFunction, IPluginFeaturePro
|
||||
|
||||
public CheckAllActionsHealthyFeature() : base(FeatureTypes.Tools, "origin.checkallactionshearlthy", FeatureNamesLangRes.CheckAllActionsHealthy)
|
||||
{
|
||||
Icon = AppGlobals.Symbols.GetSvgImage(AppSymbols.heart_with_pulse, Pilz.UI.Symbols.SymbolSize.Small);
|
||||
Icon = AppGlobals.Symbols.GetImage(AppSymbols.heart_with_pulse, SymbolSize.Small);
|
||||
}
|
||||
|
||||
protected override object? ExecuteFunction(PluginFunctionParameter? @params)
|
||||
{
|
||||
if (@params is not MainApiParameters p
|
||||
|| p.Api.MainWindow is not MainForm mainForm
|
||||
|| mainForm.Controls.Find("radGridView_Actions", true).FirstOrDefault() is not RadGridView gridView)
|
||||
if (@params is not MainApiParameters p || p.Api.Model.CurrentGridRows is null)
|
||||
return null;
|
||||
|
||||
SharedFunctions.CheckActionHealthy(p.Api, [.. gridView.Rows]);
|
||||
Task.Run(() => SharedFunctions.CheckActionHealthy(p.Api, [.. p.Api.Model.CurrentGridRows])).Wait();
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
|
||||
using ModpackUpdater.Apps.Manager.Api;
|
||||
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
|
||||
using ModpackUpdater.Apps.Manager.LangRes;
|
||||
using ModpackUpdater.Apps.Manager.Ui.Models;
|
||||
using Pilz.Features;
|
||||
|
||||
namespace ModpackUpdater.Apps.Manager.Features.Tools;
|
||||
@@ -10,15 +12,15 @@ internal class ClearDirectLinksFeature : PluginFunction, IPluginFeatureProvider<
|
||||
|
||||
public ClearDirectLinksFeature() : base(FeatureTypes.Tools, "origin.cleardirectlinks", FeatureNamesLangRes.ClearDirectLinksFeature)
|
||||
{
|
||||
Icon = AppGlobals.Symbols.GetSvgImage(AppSymbols.broom, Pilz.UI.Symbols.SymbolSize.Small);
|
||||
Icon = AppGlobals.Symbols.GetImage(AppSymbols.broom, Pilz.UI.Symbols.SymbolSize.Small);
|
||||
}
|
||||
|
||||
protected override object? ExecuteFunction(PluginFunctionParameter? @params)
|
||||
{
|
||||
if (@params is not MainApiParameters p || p.Api.CurWorkspace?.InstallInfos is null)
|
||||
if (@params is not MainApiParameters p || p.Api.Model.CurrentGridRows is null)
|
||||
return null;
|
||||
|
||||
SharedFunctions.ClearDirectLinks(p.Api, [.. p.Api.CurWorkspace.InstallInfos.Actions]);
|
||||
SharedFunctions.ClearDirectLinks([.. p.Api.Model.CurrentGridRows]);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
|
||||
using ModpackUpdater.Apps.Manager.Api;
|
||||
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
|
||||
using ModpackUpdater.Apps.Manager.LangRes;
|
||||
using ModpackUpdater.Apps.Manager.Ui.Models;
|
||||
using MsBox.Avalonia;
|
||||
using MsBox.Avalonia.Enums;
|
||||
using Pilz.Features;
|
||||
using Telerik.WinControls;
|
||||
using Pilz.UI.Symbols;
|
||||
|
||||
namespace ModpackUpdater.Apps.Manager.Features.Tools;
|
||||
|
||||
@@ -11,20 +15,23 @@ internal class GenerateChangelogFeature : PluginFunction, IPluginFeatureProvider
|
||||
|
||||
public GenerateChangelogFeature() : base(FeatureTypes.Tools, "origin.genchangelog", FeatureNamesLangRes.GenerateChangelogFeature)
|
||||
{
|
||||
Icon = AppGlobals.Symbols.GetSvgImage(AppSymbols.time_machine, Pilz.UI.Symbols.SymbolSize.Small);
|
||||
Icon = AppGlobals.Symbols.GetImage(AppSymbols.time_machine, SymbolSize.Small);
|
||||
}
|
||||
|
||||
protected override object? ExecuteFunction(PluginFunctionParameter? @params)
|
||||
{
|
||||
if (@params is not MainApiParameters p || p.Api.CurWorkspace?.InstallInfos is null || p.Api.CurActionSet is not UpdateInfo updateInfos)
|
||||
if (@params is not MainApiParameters p
|
||||
|| p.Api.Model.CurrentWorkspace?.InstallInfos is null
|
||||
|| p.Api.Model.SelectedTreeNode is not ActionSetTreeNode node
|
||||
|| node.Infos is not UpdateInfo updateInfo)
|
||||
return null;
|
||||
|
||||
var changelog = SharedFunctions.GenerateChangelog(p.Api.CurWorkspace.InstallInfos, updateInfos);
|
||||
if (!string.IsNullOrWhiteSpace(changelog))
|
||||
{
|
||||
Clipboard.SetText(changelog);
|
||||
RadMessageBox.Show(p.Api.MainWindow, MsgBoxLangRes.ChangelogCopiedToClipboard, MsgBoxLangRes.ChangelogCopiedToClipboard_Title, MessageBoxButtons.OK, RadMessageIcon.Info);
|
||||
}
|
||||
var changelog = SharedFunctions.GenerateChangelog(p.Api.Model.CurrentWorkspace.InstallInfos, updateInfo);
|
||||
if (string.IsNullOrWhiteSpace(changelog))
|
||||
return null;
|
||||
|
||||
p.Api.MainWindow.Clipboard?.SetTextAsync(changelog);
|
||||
MessageBoxManager.GetMessageBoxStandard(MsgBoxLangRes.ChangelogCopiedToClipboard_Title, MsgBoxLangRes.ChangelogCopiedToClipboard, ButtonEnum.Ok, MsBox.Avalonia.Enums.Icon.Info).ShowAsPopupAsync(p.Api.MainWindow);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Platform.Storage;
|
||||
using ModpackUpdater.Apps.Manager.Api;
|
||||
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
|
||||
using ModpackUpdater.Apps.Manager.LangRes;
|
||||
using ModpackUpdater.Apps.Manager.Utils;
|
||||
using MsBox.Avalonia;
|
||||
using MsBox.Avalonia.Enums;
|
||||
using Pilz.Features;
|
||||
using Telerik.WinControls;
|
||||
using Telerik.WinControls.UI;
|
||||
using Pilz.UI.Symbols;
|
||||
|
||||
namespace ModpackUpdater.Apps.Manager.Features.Tools;
|
||||
internal class GenerateModlistAsExcelFeature : PluginFunction, IPluginFeatureProvider<GenerateModlistAsExcelFeature>
|
||||
@@ -11,28 +16,28 @@ internal class GenerateModlistAsExcelFeature : PluginFunction, IPluginFeaturePro
|
||||
|
||||
public GenerateModlistAsExcelFeature() : base(FeatureTypes.Tools, "origin.genmodlist.xlsx", FeatureNamesLangRes.GenerateModlistAsExcelFeature)
|
||||
{
|
||||
Icon = AppGlobals.Symbols.GetSvgImage(AppSymbols.list_view, Pilz.UI.Symbols.SymbolSize.Small);
|
||||
Icon = AppGlobals.Symbols.GetImage(AppSymbols.list_view, SymbolSize.Small);
|
||||
}
|
||||
|
||||
protected override object? ExecuteFunction(PluginFunctionParameter? @params)
|
||||
{
|
||||
if (@params is not MainApiParameters p || p.Api.CurWorkspace?.InstallInfos is null || p.Api.CurWorkspace?.InstallInfos is null)
|
||||
if (@params is not MainApiParameters p || p.Api.Model.CurrentWorkspace?.InstallInfos is null)
|
||||
return null;
|
||||
|
||||
using var pkg = SharedFunctions.GenerateModlistAsExcel(p.Api.CurWorkspace.InstallInfos);
|
||||
if (pkg is null)
|
||||
// Generate excel
|
||||
using var pkg = SharedFunctions.GenerateModlistAsExcel(p.Api.Model.CurrentWorkspace.InstallInfos);
|
||||
|
||||
// Ask for save
|
||||
var file = Task.Run(() => TopLevel.GetTopLevel(p.Api.MainWindow)!.StorageProvider.SaveFilePickerAsync(new()
|
||||
{
|
||||
FileTypeChoices = [MyFilePickerFileTypes.Excel]
|
||||
})).Result;
|
||||
if (file is null)
|
||||
return null;
|
||||
|
||||
using var sfd = new RadSaveFileDialog
|
||||
{
|
||||
Filter = "*.xlsx|*.xlsx|*|*"
|
||||
};
|
||||
|
||||
if (sfd.ShowDialog(p.Api.MainWindow) == DialogResult.OK)
|
||||
{
|
||||
pkg.SaveAs(sfd.FileName);
|
||||
RadMessageBox.Show(p.Api.MainWindow, MsgBoxLangRes.ModlistGenerated, MsgBoxLangRes.ModlistGenerated_Title, MessageBoxButtons.OK, RadMessageIcon.Info);
|
||||
}
|
||||
|
||||
// Save file
|
||||
pkg.SaveAs(file.Path.AbsolutePath);
|
||||
MessageBoxManager.GetMessageBoxStandard(MsgBoxLangRes.ModlistGenerated_Title, MsgBoxLangRes.ModlistGenerated, ButtonEnum.Ok, MsBox.Avalonia.Enums.Icon.Info).ShowAsPopupAsync(p.Api.MainWindow);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -1,26 +1,30 @@
|
||||
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
|
||||
using ModpackUpdater.Apps.Manager.Api;
|
||||
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
|
||||
using ModpackUpdater.Apps.Manager.LangRes;
|
||||
using MsBox.Avalonia;
|
||||
using MsBox.Avalonia.Enums;
|
||||
using Pilz.Features;
|
||||
using Telerik.WinControls;
|
||||
using Pilz.UI.Symbols;
|
||||
|
||||
namespace ModpackUpdater.Apps.Manager.Features.Tools;
|
||||
|
||||
internal class GenerateModlistAsMarkdownFeature : PluginFunction, IPluginFeatureProvider<GenerateModlistAsMarkdownFeature>
|
||||
{
|
||||
public static GenerateModlistAsMarkdownFeature Instance { get; } = new();
|
||||
|
||||
public GenerateModlistAsMarkdownFeature() : base(FeatureTypes.Tools, "origin.genmodlist.md", FeatureNamesLangRes.GenerateModlistAsMarkdownFeature)
|
||||
{
|
||||
Icon = AppGlobals.Symbols.GetSvgImage(AppSymbols.list_view, Pilz.UI.Symbols.SymbolSize.Small);
|
||||
Icon = AppGlobals.Symbols.GetImage(AppSymbols.list_view, SymbolSize.Small);
|
||||
}
|
||||
|
||||
protected override object? ExecuteFunction(PluginFunctionParameter? @params)
|
||||
{
|
||||
if (@params is not MainApiParameters p || p.Api.CurWorkspace?.InstallInfos is null || p.Api.CurWorkspace?.InstallInfos is null)
|
||||
if (@params is not MainApiParameters p || p.Api.Model.CurrentWorkspace?.InstallInfos is null)
|
||||
return null;
|
||||
|
||||
Clipboard.SetText(SharedFunctions.GenerateModlistAsMarkdown(p.Api.CurWorkspace.InstallInfos));
|
||||
p.Api.MainWindow.Clipboard?.SetTextAsync(SharedFunctions.GenerateModlistAsMarkdown(p.Api.Model.CurrentWorkspace.InstallInfos));
|
||||
|
||||
RadMessageBox.Show(p.Api.MainWindow, MsgBoxLangRes.ModlistCopiedToClipboard, MsgBoxLangRes.ModlistCopiedToClipboard_Title, MessageBoxButtons.OK, RadMessageIcon.Info);
|
||||
MessageBoxManager.GetMessageBoxStandard(MsgBoxLangRes.ModlistCopiedToClipboard_Title, MsgBoxLangRes.ModlistCopiedToClipboard, ButtonEnum.Ok, MsBox.Avalonia.Enums.Icon.Info).ShowAsPopupAsync(p.Api.MainWindow);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
|
||||
using ModpackUpdater.Apps.Manager.Api;
|
||||
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
|
||||
using ModpackUpdater.Apps.Manager.LangRes;
|
||||
using Pilz.Features;
|
||||
using Pilz.UI.Symbols;
|
||||
|
||||
namespace ModpackUpdater.Apps.Manager.Features.Tools;
|
||||
|
||||
@@ -10,15 +12,15 @@ internal class UpdateDirectLinksFeature : PluginFunction, IPluginFeatureProvider
|
||||
|
||||
public UpdateDirectLinksFeature() : base(FeatureTypes.Tools, "origin.updatedirectlinks", FeatureNamesLangRes.UpdateDirectLinksFeature)
|
||||
{
|
||||
Icon = AppGlobals.Symbols.GetSvgImage(AppSymbols.renew, Pilz.UI.Symbols.SymbolSize.Small);
|
||||
Icon = AppGlobals.Symbols.GetImage(AppSymbols.renew, SymbolSize.Small);
|
||||
}
|
||||
|
||||
protected override object? ExecuteFunction(PluginFunctionParameter? @params)
|
||||
{
|
||||
if (@params is not MainApiParameters p || p.Api.CurWorkspace?.InstallInfos is null)
|
||||
if (@params is not MainApiParameters p || p.Api.Model.CurrentGridRows is null)
|
||||
return null;
|
||||
|
||||
SharedFunctions.FindNewDirectLinks(p.Api, [.. p.Api.CurWorkspace.InstallInfos.Actions]);
|
||||
Task.Run(() => SharedFunctions.FindNewDirectLinks([.. p.Api.Model.CurrentGridRows])).Wait();
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
|
||||
using ModpackUpdater.Apps.Manager.Api;
|
||||
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
|
||||
using ModpackUpdater.Apps.Manager.LangRes;
|
||||
using Pilz.Features;
|
||||
using Pilz.UI.Symbols;
|
||||
@@ -11,15 +12,15 @@ internal class UpdatesCollectorFeature : PluginFunction, IPluginFeatureProvider<
|
||||
|
||||
public UpdatesCollectorFeature() : base(FeatureTypes.Tools, "origin.updatescollector", FeatureNamesLangRes.UpdatesCollectorFeature)
|
||||
{
|
||||
Icon = AppGlobals.Symbols.GetSvgImage(AppSymbols.search, SymbolSize.Small);
|
||||
Icon = AppGlobals.Symbols.GetImage(AppSymbols.search, SymbolSize.Small);
|
||||
}
|
||||
|
||||
protected override object? ExecuteFunction(PluginFunctionParameter? @params)
|
||||
{
|
||||
if (@params is not MainApiParameters p || p.Api.CurWorkspace?.InstallInfos is null)
|
||||
if (@params is not MainApiParameters p || p.Api.Model.CurrentWorkspace?.InstallInfos is null)
|
||||
return null;
|
||||
|
||||
SharedFunctions.CollectUpdates(p.Api, [.. p.Api.CurWorkspace.InstallInfos.Actions]);
|
||||
Task.Run(() => SharedFunctions.CollectUpdates(p.Api, [.. p.Api.Model.CurrentWorkspace.InstallInfos.Actions])).Wait();
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ public partial class GitLabRepoWorkspaceConfigEditorView : AvaloniaFlyoutBase
|
||||
public GitLabRepoWorkspaceConfigEditorView(GitLabRepoWorkspaceConfig settings)
|
||||
{
|
||||
Settings = settings;
|
||||
DataContext = settings;
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
@@ -3,17 +3,15 @@ using ModpackUpdater.Apps.Manager.Api.Plugins.Features;
|
||||
using ModpackUpdater.Apps.Manager.LangRes;
|
||||
using Pilz.Features;
|
||||
using Pilz.UI.AvaloniaUI.Dialogs;
|
||||
using Pilz.UI.Symbols;
|
||||
|
||||
namespace ModpackUpdater.Apps.Manager.Features.Workspaces.GitLabRepo;
|
||||
|
||||
internal class GitLabRepoWorkspaceFeature : WorkspaceFeature, IPluginFeatureProvider<GitLabRepoWorkspaceFeature>
|
||||
internal class GitLabRepoWorkspaceFeature() : WorkspaceFeature("origin.gitlab", FeatureNamesLangRes.GitLabWorkspace), IPluginFeatureProvider<GitLabRepoWorkspaceFeature>
|
||||
{
|
||||
public static GitLabRepoWorkspaceFeature Instance { get; } = new();
|
||||
|
||||
public GitLabRepoWorkspaceFeature() : base("origin.gitlab", FeatureNamesLangRes.GitLabWorkspace)
|
||||
{
|
||||
Icon = AppGlobals.Symbols.GetImageSource(AppSymbols.gitlab);
|
||||
}
|
||||
public override object? Icon => AppGlobals.Symbols.GetImage(AppSymbols.gitlab, SymbolSize.Small);
|
||||
|
||||
protected override async Task OnConfigure(WorkspaceContext context)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user