İçerik Panelleri ve Hatırlatıcılar - Spectre Console Serisi
Spectre.Console, .NET geliştiricilerinin görsel açıdan zengin konsol uygulamaları oluşturmasını sağlayan bir NuGet paketidir. Tim Corey, Spectre Console Serisi'nde, sade bir konsol penceresini çok daha profesyonel bir hale dönüştürmek için etkileşimli komut istemleri, tablolar, ilerleme göstergeleri ve daha fazlası gibi özelliklerin nasıl kullanılacağını gösteriyor.
Bu makalede, Tim Corey'nin "Content Panels and Callouts – Spectre Console Series" adlı videosunu inceleyerek Spectre Console Panel özelliğine daha derinlemesine bir göz atacağız. Tim'in örneklerini kullanarak, panellerin nasıl oluşturulacağını, özelliklerini keşfedeceğimizi ve verileri konsolun mevcut alanı içinde farklı stillerde nasıl görüntüleyeceğimizi göreceğiz.
Temel Bir Spectre Console Paneli Oluşturma
Tim, videonun başında (0:00), Spectre.Console'un C# konsol uygulamalarınızı görsel olarak çekici ve bilgilendirici uygulamalara dönüştürmenize imkan verdiğini hatırlatıyor. Bu derste (0:15), ihtiyaçınıza bağlı olarak basit çağrı kutusu veya mini tablolar olarak işlev görebilecek paneller oluşturacağız.
0:34'te, Tim Visual Studio'da doğrudan bir örnek yazar. Yeni bir panel örneğinin nasıl oluşturulacağını gösteriyor:
var panel = new("Tim Corey");
AnsiConsole.Write(panel);var panel = new("Tim Corey");
AnsiConsole.Write(panel);AnsiConsole.Write()'ın renderable bir nesneyi kabul ettiğini belirtiyor (0:47) ve bir Panel IRenderable'ı uyguladığı için tam olarak uyuyor. Kod 1:02'de çalıştırıldığında "Tim Corey" metni etrafında basit bir kutu görünür. Bu küçük alan bile bir notu ön plana çıkarmak, bir istemi vurgulamak veya kullanıcı girdisini diğer konsol çıktılarından ayırmak için yararlı olabilir.

Panel Özelliklerini Keşfetmek: Kenarlıklar ve Dolgu
Tim daha sonra panel özelliklerini göstermeye geçiyor. 1:22'de sınır stilini ayarlıyor:
panel.Border = BoxBorder.Rounded;panel.Border = BoxBorder.Rounded;Bu, panele farklı tarzlardan biri olan yuvarlak bir kenarlık kazandırır. Kendi özel renk kodlama temalarınıza veya mavi ve yeşil vurgularınıza uyması için çift kenar veya diğer seçenekleri de seçebileceğinizi belirtiyor.
Saat 1:42'de Tim, panelin içindeki dolguyu ayarlıyor:
panel.Padding = new(2, 0);panel.Padding = new(2, 0);O, (2:16) konsoldaki dolguların web'deki pikseller gibi olmadığını—karakter genişliği ve satır dönüşlerine dayandığını açıklar. 5 gibi büyük bir sayı, mevcut alanın büyük bir kısmını dolduran geniş bir panel oluşturur. Padding'in nasıl çalıştığını göstermek için boşluğu sayıyor (2:35).
Bu, içeriğin etrafındaki alanı ince ayarlayabilme yeteneğiniz, bir değişken tablosu, çubuk grafik veya başka bir veri gösteriyor olun, düzeninize uygun paneller tasarlamanıza olanak tanır.
Bir Başlık Ekleme ve Stil Özelleştirme
3:37'de Tim panele bir başlık ekliyor:
panel.Header("My Name");panel.Header("My Name");Kod 3:51'de çalıştırıldığında, başlık kenarlıkta görüntülenir. Fakat, içeriğe tam bitişik. 4:04'de bu değişikliği, dolgu değiştirerek düzeltir:
panel.Padding = new (1, 0);panel.Padding = new (1, 0);Bu, başlık ile metin arasında biraz boşluk oluşturur. Tim, başlıklar ve boşluklar kullanarak panellerinizi net bir şekilde etiketlemenizin yararlı olduğunu belirtiyor (4:16); bu, bir görevin ilerlemesini gösterdiğinizde, canlı bir ekran veya bir görüntüleme ilerleme çubuğu ile uzun süreli bir görevi bile gösterdiğinizde faydalı olur.
Bir Panel İçinde Listeleri Gösterme
Tim daha sonra bir dizi stringi bir panele nasıl koyacağını gösteriyor. Saat 4:26'da önceki dersten bir isim listesi getiriyor ve bunu tek bir dize haline nasıl getireceğini gösteriyor:
string panelInfo = string.Join('\n', names);
var panel = new Panel(panelInfo)
.Header("Default Names");string panelInfo = string.Join('\n', names);
var panel = new Panel(panelInfo)
.Header("Default Names");Bu, listeyi satır sonları ile tek bir dizeye dönüştürür (5:02). Bunu çalıştırmak (5:28), listeyi panelin içinde düzgün bir şekilde gösterir, her bir öğe kendi satırında yer alır. Bu teknik, verileri veya nesne özelliklerini güçlü bir şekilde türlendirilmiş bir şekilde sunmanıza olanak tanır ancak metin olarak işlenir.

Tim ayrıca (5:44) belirli öğelere özel renk eklemek için zengin metin biçimlendirmesi kullanabileceğinizi vurguluyor. Örneğin:
"[red]Bilbo Baggins[/]""[red]Bilbo Baggins[/]"Bu, bir Spectre Console Paneli'nin sadece düz stringleri değil, aynı zamanda şekilli içerikleri de nasıl işleyebileceğini, temalara, kalın metinlere veya renk kodlu öğelere olanak tanıyarak gösterir.

İçeriği İşaretleme Dili ve Görselleştirilebilir Nesneler ile Ortalamak
Tim, saat 6:19'da içeriği nasıl ortalayacağınıza dair soruyu yanıtlıyor. Basit bir dize ortalanamaz. Bunun yerine, işlenebilir bir nesne kullanmalısınız. Gösteriyor (6:34):
Panel panel = new(new Markup(panelInfo).Centered());Panel panel = new(new Markup(panelInfo).Centered());Bu, dizeyi bir Markup'e dönüştürür, .Centered() çağırır ve panele atar. Kodu çalıştırmak (7:01), tüm adların ortalandığını gösterir. Bu, özellikle yeni bir tablo, yeni bir çubuk grafik veya herhangi bir etkileşimli kontrol oluşturuyorsanız ve içeriğin mevcut alanda yatay olarak hizalanmasını istiyorsanız özellikle kullanışlıdır.

Tim, ayrıca panellerin IRenderable olduğunu (7:07) ve bu yüzden tabloların veya diğer panellerin içine yerleştirilebileceğini belirtiyor. Bu, bileşik ekranlar oluşturmayı mümkün kılar: Örneğin, yan yana bir istem, bir değişken tablosu ve bir çubuk grafik içeren bir panel veya farklı görevler için dosya ilerlemesini göstermek amacıyla panellerin kullanılması.
Konsol Uygulamalarında Yapı Taşları Olarak Paneller
Tim, (7:14)'te bitirirken, panellerin IRenderable olduğunu yineleyerek Spectre.Console'un renderlenebilir bir nesne beklediği her yere —tabloların içine, canlı gösterimlerin veya diğer düzenlerde— yerleştirebileceğinizi belirtir. Bu esneklik, panelleri interaktif istemler, ilerleme çubukları ve özelleştirilmiş renk kodlu temalar gibi diğer Spectre.Console bileşenleriyle birleştirmenizi sağlayarak cilalı .NET konsol uygulamaları oluşturmanıza olanak tanır.
Tim'in Videosundan Ana Çıkarımlar
Bir Spectre Console Panel, konsol uygulamanızda içeriği vurgulamak, kullanıcı girdisi istemek veya verileri çerçevelemek için basit ama güçlü bir yoldur.
- Paneller farklı stilleri destekler: yuvarlak, çift, özel başlıklar ve boşluğu kontrol etmek için dolgu.
Listeler gösterebilir, özel renk temaları için zengin metin işaretlemesi kullanabilir ve hatta içeriği Markup.Centered() ile ortalayabilirsiniz.
- Bir panel, işlenebilir bir nesne olduğu için, bir tabloda iç içe yerleştirebilir, ilerleme göstergeleri veya çubuk grafikleri ile birleştirebilir ve karmaşık interaktif düzenler oluşturabilirsiniz.
Bunların hepsine, sadece NuGet paketini yükleyip .NET veya Visual Studio projenizde güçlü şekilde tiplenmiş API'yi kullanarak ulaşabilirsiniz.
Tim Corey'nin videosunu izleyerek, Spectre.Console panellerini kullanarak başlıklar, özel temalar ve düzgün biçimlendirilmiş çıktılar ile zengin, veri odaklı konsol deneyimleri yaratarak konsol dünyasından çıkmadan kendinizden emin bir şekilde başlayabilirsiniz.

