2424using System . Diagnostics ;
2525using System . Runtime . Caching ;
2626using System . Runtime . CompilerServices ;
27+ using Kantan . Text ;
2728using Microsoft . Extensions . Logging ;
2829using SixLabors . ImageSharp . Processing ;
2930using SmartImage . Lib ;
@@ -283,15 +284,13 @@ private async Task RunInteractiveAsync(CancellationToken ct = default)
283284 break ;
284285 }
285286
286- var sel = ShellSelection . GetSelectionChoice ( sr ) ;
287- var sri = sel . Item ;
288- var selIdx = sel . Index ( ) ;
287+ var sel = ShellSelection . GetSelectionChoice ( sr ) ;
288+ var sri = sel . Item ;
289+ var selIdx = sel . Index ( ) ;
289290 var selIdx2 = sel . Index2 ( ) ;
290291
291292 s_logger . LogDebug ( "Selected {Item} {Scn} | {Idx1}, {Idx2}" , sel . Item , sel . IsScannedItem , selIdx , selIdx2 ) ;
292293
293- // s_logger.LogTrace("Interactive: {ResItem}", sri);
294-
295294 if ( cmd == R2 . Chc_Open ) {
296295 SearchClient . OpenResult ( sri . Url ) ;
297296 clrWrite = false ;
@@ -305,45 +304,18 @@ await AnsiConsole.Live(srTable).StartAsync(async (f) =>
305304 bool scannedOk = false ;
306305 scannedOk = await sri . ScanAsync ( m_ctsRun . Token ) ;
307306
308-
309307 if ( ! scannedOk ) {
310308 return ;
311309 }
312310
313- /*if (!tbl.TryGetValue(sel.Item, out var idx)) {
314- for (int j = 0; j < sel.Item.ScannedItems.Count; j++) {
315- tbl[sel.Item.ScannedItems[j]] = j;
316- }
317- }*/
318-
319- // var idx = tbl[sel.Item.Parent];
320-
321-
322311 for ( int i = 0 ; i < sri . ScannedItems . Count ; i ++ ) {
323312 SearchResultItem scnItm = sri . ScannedItems [ i ] ;
324- var scnRow = scnItm . GetItemRow ( sel . ItemIdx , i ) ;
325- srTable . InsertRow ( selIdx2 + i + 1 , scnRow ) ;
326- }
327-
328-
329- // row = idx;
330- // row = GetRowForItem(sri);
331- // row = sr.Index(sel.Item, sel.Scanned);
332-
333- // row = sr.Index(sri);
334-
335- // var row2 = sriPak;
336- // row = row2.RootIdx + (row2.ScnIdx == -1 ? 0 : (row2.ScnIdx + 1));
337-
338- if ( sri . HasImage ) {
339- srTable . Rows . Update ( selIdx2 , ( int ) ResultRowIndex . ROW_WH , sri . GetResolution ( ) ) ;
313+ scnItm . CalculateSimilarity ( Query . Source ) ;
340314
315+ var scnRow = scnItm . GetItemRow ( sel . ItemIdx , i ) ;
316+ srTable . InsertRow ( selIdx + i + 1 , scnRow ) ;
341317 }
342318
343- if ( sri . HasHash && ! sri . Similarity . HasValue ) {
344- sri . CalculateSimilarity ( Query . Source ) ;
345- srTable . Rows . Update ( selIdx2 , ( int ) ResultRowIndex . ROW_SIMILARITY , sri . GetSimilarity ( ) ) ;
346- }
347319
348320 f . Refresh ( ) ;
349321
@@ -364,7 +336,7 @@ await AnsiConsole.Live(srTable).StartAsync(async (f) =>
364336 } ) ;
365337
366338
367- clrWrite = false ;
339+ clrWrite = true ;
368340 continue ;
369341 }
370342
@@ -375,7 +347,7 @@ await AnsiConsole.Live(srTable).StartAsync(async (f) =>
375347
376348 var ci = GetPreview ( sri ) ;
377349
378- ShowPreview ( ci , sri ) ;
350+ AnsiConsole . AlternateScreen ( ( ) => { ShowPreview ( ci , sri ) ; } ) ;
379351 clrWrite = true ;
380352 }
381353
@@ -385,20 +357,9 @@ await AnsiConsole.Live(srTable).StartAsync(async (f) =>
385357
386358 }
387359
388- if ( cmd == "expand" ) {
389- var si = sri . ScannedItems ;
390- var scnTbl = new ConcurrentDictionary < SearchResultItem , SpcTable > ( ) ;
391-
392- var table = Elements . CreateFullResultTable ( ) ;
393- scnTbl [ sri ] = table ;
394-
395- for ( int i = 0 ; i < si . Count ; i ++ ) {
396- SearchResultItem scnI = si [ i ] ;
397- var row = scnI . GetFullResultRow ( i , new Style ( link : scnI . Url ) ) ;
398- scnTbl [ sri ] . AddRow ( row ) ;
399- }
400- }
360+ if ( cmd == "expand" ) { }
401361
362+ if ( cmd == "retry" ) { }
402363
403364 } while ( cmd != R2 . Chc_Back ) ;
404365
@@ -453,7 +414,7 @@ private CanvasImage GetPreview(SearchResultItem sri)
453414
454415 if ( ci is null ) {
455416 str = sri . GetStream ( ) ;
456- ci = new CanvasImage ( str ) ;
417+ ci = new CanvasImage ( str ) { } ;
457418
458419
459420 m_previewCanvasCache . Set ( key , ci , cip ) ;
@@ -462,32 +423,19 @@ private CanvasImage GetPreview(SearchResultItem sri)
462423
463424 Trace . Assert ( ci != null ) ;
464425
465- // var ci = new CanvasImage(str);
466-
467426 return ci ;
468427 }
469428
470429 private void ShowPreview ( CanvasImage ci , SearchResultItem ui )
471430 {
472- // AnsiConsole.Clear();
473-
474- // (AnsiConsole.Profile.Width, AC.Profile.Height) = (ui.Image.Width, ui.Image.Height);
475- // ci.MaxWidth = AnsiConsole.Profile.Width;
476-
477- // Console.SetWindowSize(ui.Image.Width, ui.Image.Height);
478- // ci.MaxWidth ??= ci.Width;
479- // ci.MaxWidth ??= ui.Image.Width;
431+ var ( w , h ) = ( AnsiConsole . Profile . Width , AC . Profile . Height ) ;
480432
481- // var panel = new Panel(ci) { Expand = true, };
433+ var pnl = new Panel ( ci ) { Expand = true , Border = BoxBorder . None } ;
482434
483- var ( w , h ) = ( AnsiConsole . Profile . Width , AC . Profile . Height ) ;
484- var ( mwO , pwO ) = ( ci . MaxWidth , ci . PixelWidth ) ;
485- var ( mw , pw ) = ( mwO ?? ci . Width , pwO ) ;
486-
487- AnsiConsole . Live ( ci ) . Start ( ldc =>
435+ AnsiConsole . Live ( pnl ) . Start ( ldc =>
488436 {
489437 while ( true ) {
490-
438+ // ci.MaxWidth = mw < 0 ? null : mw;
491439 ldc . Refresh ( ) ;
492440 var cki = AnsiConsole . Console . Input . ReadKey ( true ) ;
493441
@@ -496,50 +444,32 @@ private void ShowPreview(CanvasImage ci, SearchResultItem ui)
496444 }
497445
498446 switch ( cki . Value . Key ) {
499- case ConsoleKey . DownArrow :
500- pw -- ;
501- break ;
502447
503- case ConsoleKey . LeftArrow :
504- mw -- ;
505- break ;
506448
507- case ConsoleKey . UpArrow :
508- pw ++ ;
449+ case ConsoleKey . S :
450+ ci . Mutate ( act => { act . Resize ( ui . Image . Width , ui . Image . Height ) ; } ) ;
509451 break ;
510452
511- case ConsoleKey . RightArrow :
512- mw ++ ;
453+ case ConsoleKey . M :
454+ ci . MaxWidth = w ;
513455 break ;
514456
515- case ConsoleKey . Escape :
516- return ;
517-
518457 case ConsoleKey . R :
519458 ci . Mutate ( act =>
520459 {
521460 var cs = act . GetCurrentSize ( ) ;
522461
523- act . Resize ( cs . ResizeByFactor ( new Size ( w , h ) ) ) ;
462+ var cs2 = cs . ResizeByFactor ( new Size ( w , h ) ) ;
463+ act . Resize ( cs2 ) ;
524464 } ) ;
525- pw = 1 ;
526465
527- // mw = 0;
528466 ci . MaxWidth = null ;
529467 continue ;
530468
531- case ConsoleKey . A :
532- ci . MaxWidth = mwO ;
533- pw = 0 ;
534- break ;
469+ case ConsoleKey . Escape :
470+ return ;
535471
536- case ConsoleKey . C :
537- AnsiConsole . Clear ( ) ;
538- break ;
539472 }
540-
541- ci . MaxWidth = mw < 0 ? null : mw ;
542- ci . PixelWidth = Math . Clamp ( pw , 0 , 10 ) ;
543473 }
544474 } ) ;
545475
0 commit comments