Skip to content

Commit a1007d5

Browse files
committed
...
1 parent 78129bd commit a1007d5

File tree

18 files changed

+219
-147
lines changed

18 files changed

+219
-147
lines changed

SmartImage 3/CliMain.cs renamed to SmartImage 3/Mode/CliMode.cs

Lines changed: 60 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,20 @@
22
// 2023-01-30 @ 10:37 PM
33

44
using System.Collections.Concurrent;
5+
using System.Diagnostics;
56
using System.Diagnostics.CodeAnalysis;
67
using JetBrains.Annotations;
78
using SmartImage.Lib;
89
using SmartImage.Lib.Engines;
910
using SmartImage.Lib.Results;
10-
using SmartImage.Utilities;
1111
using Spectre.Console;
1212
using Spectre.Console.Rendering;
1313

1414
// ReSharper disable InconsistentNaming
1515

16-
namespace SmartImage;
16+
namespace SmartImage.Mode;
1717

18-
public sealed class CliMain : IDisposable, IMain
18+
public sealed class CliMode : IDisposable, IMode
1919
{
2020
#region
2121

@@ -38,7 +38,7 @@ public sealed class CliMain : IDisposable, IMain
3838
.HideCompleted(true)
3939
.Columns(PrgCol_1);
4040

41-
static CliMain() { }
41+
static CliMode() { }
4242

4343
#endregion
4444

@@ -54,7 +54,7 @@ static CliMain() { }
5454

5555
private readonly CancellationTokenSource m_cts;
5656

57-
public CliMain()
57+
public CliMode()
5858
{
5959
m_cfg = new SearchConfig();
6060
m_client = new SearchClient(m_cfg);
@@ -64,48 +64,55 @@ public CliMain()
6464

6565
public async Task<object?> RunAsync(object? c)
6666
{
67-
await Prg_1.StartAsync(ctx => ValidateInputAsync(ctx, c as string));
6867

68+
// await Prg_1.StartAsync(ctx => ValidateInputAsync(ctx, c as string));
69+
await ValidateInputAsync(null, c as string);
6970
AnsiConsole.WriteLine($"{m_query}");
7071

71-
var url = await Prg_1.StartAsync(UploadInputAsync);
72+
// var url = await Prg_1.StartAsync(UploadInputAsync);
7273

74+
var url = await UploadInputAsync(null);
7375
AnsiConsole.MarkupLine($"[green]{m_query.Upload}[/]");
7476

7577
AnsiConsole.WriteLine($"{m_cfg}");
7678

77-
System.Console.CancelKeyPress += (sender, args) =>
79+
Console.CancelKeyPress += (sender, args) =>
7880
{
7981
args.Cancel = false;
8082
m_cts.Cancel();
8183
AnsiConsole.MarkupLine($"[red]Cancellation requested {args}[/]");
8284
};
8385

84-
await Prg_1.StartAsync(RunSearchAsync);
86+
// await Prg_1.StartAsync(RunSearchAsync);
87+
88+
await RunSearchAsync(null);
8589
return null;
90+
8691
}
8792

8893
private async Task ValidateInputAsync(ProgressContext ctx, string c)
8994
{
90-
var t = ctx.AddTask("Validating input");
91-
t.IsIndeterminate = true;
92-
m_query = await SearchQuery.TryCreateAsync(c);
93-
t.Increment(COMPLETE);
95+
// var t = ctx.AddTask("Validating input");
96+
// t.IsIndeterminate = true;
97+
98+
m_query = await SearchQuery.TryCreateAsync(c);
99+
100+
// t.Increment(COMPLETE);
94101
}
95102

96103
private async Task<Url> UploadInputAsync(ProgressContext p)
97104
{
98-
var pt = p.AddTask($"Upload");
99-
pt.IsIndeterminate = true;
105+
// var pt = p.AddTask($"Upload");
106+
// pt.IsIndeterminate = true;
100107
var urlInner = await m_query.UploadAsync();
101-
pt.Increment(COMPLETE);
108+
// pt.Increment(COMPLETE);
102109
return urlInner;
103110

104111
}
105112

106113
private async Task RunSearchAsync(ProgressContext ctx)
107114
{
108-
var ptMap = new Dictionary<BaseSearchEngine, (ProgressTask, Table)>();
115+
/*var ptMap = new Dictionary<BaseSearchEngine, (ProgressTask, Table)>();
109116
110117
foreach (var e in m_client.Engines) {
111118
var t = ctx.AddTask($"{e}");
@@ -115,22 +122,29 @@ private async Task RunSearchAsync(ProgressContext ctx)
115122
}
116123
117124
var pt1 = ctx.AddTask("[yellow]Searching[/]");
118-
pt1.IsIndeterminate = false;
125+
pt1.IsIndeterminate = false;*/
119126

120127
void OnComplete(object sender, SearchResult[] searchResults)
121128
{
122-
pt1.Increment(COMPLETE);
129+
// pt1.Increment(COMPLETE);
130+
}
131+
132+
var ptMap = new Dictionary<BaseSearchEngine, (object, Table)>();
133+
134+
foreach (var e in m_client.Engines) {
135+
var tt = get_table(e);
136+
ptMap.Add(e, (this, tt));
123137
}
124138

125139
m_client.OnComplete += OnComplete;
126140

127-
pt1.MaxValue = m_client.Engines.Length;
141+
// pt1.MaxValue = m_client.Engines.Length;
128142

129143
void OnResult(object sender, SearchResult sr)
130144
{
131145
m_results.Add(sr);
132-
ptMap[sr.Engine].Item1.Increment(COMPLETE);
133-
pt1.Increment((1.0));
146+
// ptMap[sr.Engine].Item1.Increment(COMPLETE);
147+
// pt1.Increment(1.0);
134148
int i = 0;
135149

136150
var t = ptMap[sr.Engine].Item2;
@@ -141,7 +155,7 @@ void OnResult(object sender, SearchResult sr)
141155
new Text($"{i + 1}"),
142156
Markup.FromInterpolated($"[link={sri.Url}]{sr.Engine.Name} #{i + 1}[/]")
143157
});
144-
158+
145159
i++;
146160
}
147161

@@ -154,22 +168,39 @@ void OnResult(object sender, SearchResult sr)
154168

155169
/*
156170
while (!pt1.IsFinished) { }*/
171+
var sw = Stopwatch.StartNew();
172+
173+
var sp = AnsiConsole.Status().Spinner(Spinner.Known.Aesthetic).StartAsync("Wait...", async ctx =>
174+
{
175+
// await ttt;
157176

158-
m_results2 = await ttt;
177+
while (!ttt.IsCompleted) {
178+
ctx.Refresh();
179+
await Task.Delay(TimeSpan.FromMilliseconds(300));
180+
181+
ctx.Status =
182+
$"{m_results.Count} | {m_results.Sum(c => c.Results.Count)} | {sw.Elapsed.TotalSeconds:3F}";
183+
}
184+
// m_results2 = await ttt;
185+
});
186+
187+
await ttt;
159188

160189
/*var ld = AnsiConsole.Live(new Table()
161-
{ });
190+
{ });
162191
ld.StartAsync(async (x) =>
163192
{
164193
return;
165194
});*/
166195
// pt1.StopTask();
167-
168-
while (!pt1.IsFinished || ptMap.Any(s=>!s.Value.Item1.IsFinished)) {
196+
197+
/*while (!pt1.IsFinished || ptMap.Any(s => !s.Value.Item1.IsFinished)) {
169198
await Task.Delay(TimeSpan.FromMilliseconds(100));
170-
}
199+
}*/
200+
201+
// AnsiConsole.Clear();
171202

172-
AnsiConsole.Clear();
203+
await sp;
173204

174205
foreach (var vt in ptMap.Values) {
175206
// vt.Item1.StopTask();

SmartImage 3/Mode/IMode.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// Read Stanton SmartImage IMain.cs
2+
// 2023-01-31 @ 11:22 AM
3+
4+
namespace SmartImage.Mode;
5+
6+
public interface IMode
7+
{
8+
public Task<object?> RunAsync(object? sender);
9+
}

SmartImage 3/Shell/UI.Styles.cs renamed to SmartImage 3/Mode/Shell/Assets/UI.Styles.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
// ReSharper disable InconsistentNaming
55

6-
namespace SmartImage.Shell;
6+
namespace SmartImage.Mode.Shell.Assets;
77
// todo: possible overkill with caching
88
internal static partial class UI
99
{

SmartImage 3/Shell/UI.Values.cs renamed to SmartImage 3/Mode/Shell/Assets/UI.Values.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
// ReSharper disable InconsistentNaming
66

7-
namespace SmartImage.Shell;
7+
namespace SmartImage.Mode.Shell.Assets;
88

99
internal static partial class UI
1010
{

SmartImage 3/Shell/UI.cs renamed to SmartImage 3/Mode/Shell/Assets/UI.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
// ReSharper disable InconsistentNaming
88

9-
namespace SmartImage.Shell;
9+
namespace SmartImage.Mode.Shell.Assets;
1010

1111
internal static partial class UI
1212
{

SmartImage 3/ShellMain.Dialog.cs renamed to SmartImage 3/Mode/Shell/ShellMain.Dialog.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@
88
using SmartImage.App;
99
using SmartImage.Lib;
1010
using SmartImage.Lib.Engines;
11-
using SmartImage.Shell;
11+
using SmartImage.Mode.Shell.Assets;
1212
using Terminal.Gui;
1313

14-
namespace SmartImage;
14+
namespace SmartImage.Mode.Shell;
1515

16-
public sealed partial class ShellMain
16+
public sealed partial class ShellMode
1717
{
1818
private void AboutDialog()
1919
{

SmartImage 3/ShellMain.Function.cs renamed to SmartImage 3/Mode/Shell/ShellMain.Function.cs

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,12 @@
1-
using System.Data;
2-
using System.Diagnostics;
3-
using Kantan.Console;
4-
using Kantan.Net.Utilities;
5-
using Novus.OS;
1+
using System.Diagnostics;
62
using NStack;
7-
using SmartImage.App;
83
using SmartImage.Lib;
9-
using SmartImage.Lib.Engines;
10-
using SmartImage.Shell;
4+
using SmartImage.Mode.Shell.Assets;
115
using Terminal.Gui;
126

13-
namespace SmartImage;
7+
namespace SmartImage.Mode.Shell;
148

15-
public sealed partial class ShellMain
9+
public sealed partial class ShellMode
1610
{
1711
private async Task RunMain()
1812
{

SmartImage 3/ShellMain.Handlers.cs renamed to SmartImage 3/Mode/Shell/ShellMain.Handlers.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
using NStack;
88
using SmartImage.App;
99
using SmartImage.Lib;
10-
using SmartImage.Shell;
10+
using SmartImage.Mode.Shell.Assets;
1111
using Terminal.Gui;
1212

13-
namespace SmartImage;
13+
namespace SmartImage.Mode.Shell;
1414

15-
public sealed partial class ShellMain
15+
public sealed partial class ShellMode
1616
{
1717
/// <summary>
1818
/// <see cref="Tv_Results"/>

SmartImage 3/ShellMain.cs renamed to SmartImage 3/Mode/Shell/ShellMode.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,19 @@
1515
using NStack;
1616
using SmartImage.App;
1717
using SmartImage.Lib;
18-
using SmartImage.Shell;
19-
using Terminal.Gui;
20-
using Window = Terminal.Gui.Window;
2118
using SmartImage.Lib.Results;
19+
using SmartImage.Mode.Shell.Assets;
2220
using SmartImage.Utilities;
21+
using Terminal.Gui;
22+
using Window = Terminal.Gui.Window;
2323

2424
// ReSharper disable IdentifierTypo
2525

2626
// ReSharper disable InconsistentNaming
2727
#pragma warning disable IDE0060
28-
namespace SmartImage;
28+
namespace SmartImage.Mode.Shell;
2929

30-
public sealed partial class ShellMain : IDisposable, IMain
30+
public sealed partial class ShellMode : IDisposable, IMode
3131
{
3232
// NOTE: DO NOT REARRANGE FIELD ORDER
3333
// NOTE: Static initialization order is nondeterminant with partial classes
@@ -264,9 +264,9 @@ public sealed partial class ShellMain : IDisposable, IMain
264264

265265
#endregion
266266

267-
static ShellMain() { }
267+
static ShellMode() { }
268268

269-
public ShellMain(string[] args)
269+
public ShellMode(string[] args)
270270
{
271271
Args = args;
272272
m_token = new();

0 commit comments

Comments
 (0)