Add crude terminal width detection.

This at least keeps it from wrapping very badly.

I'll expand on this once the rest of my changes get
good commits.
This commit is contained in:
2026-10-31 17:45:05 -04:00
parent 99febee7ba
commit 95e8c0f732
+10 -1
View File
@@ -6,6 +6,7 @@
#include <filesystem> #include <filesystem>
#include <Alepha/ProgramOptions.h> #include <Alepha/ProgramOptions.h>
#include <Alepha/Console.h>
#include <Alepha/Utility/enroll.h> #include <Alepha/Utility/enroll.h>
@@ -79,10 +80,15 @@ main( const int argcnt, const char *const argvec[] )
const int rowWidth= widest + C::filePadding + C::sizeWidth + 1 + C::modeBitsWidth + 2 + ( O::twoDigitDate ? C::shortDateWidth : C::dateWidth )+ 1 + C::timeWidth; const int rowWidth= widest + C::filePadding + C::sizeWidth + 1 + C::modeBitsWidth + 2 + ( O::twoDigitDate ? C::shortDateWidth : C::dateWidth )+ 1 + C::timeWidth;
const int terminalWidth= Alepha::Console::main().getScreenWidth();
std::cout << ""; std::cout << "";
for( int i= 0; i < rowWidth; ++i ) std::cout << "\u2500"; for( int i= 0; i < rowWidth; ++i ) std::cout << "\u2500";
if( terminalWidth >= ( rowWidth * 2 + 1 ) )
{
std::cout << "\u252c"; std::cout << "\u252c";
for( int i= 0; i < rowWidth; ++i ) std::cout << "\u2500"; for( int i= 0; i < rowWidth; ++i ) std::cout << "\u2500";
}
std::cout << "" << std::endl; std::cout << "" << std::endl;
std::size_t fileCount= 0; std::size_t fileCount= 0;
@@ -123,7 +129,7 @@ main( const int argcnt, const char *const argvec[] )
std::cout << std::setw( 2 ) << std::setfill( '0' ) << entry.minute; std::cout << std::setw( 2 ) << std::setfill( '0' ) << entry.minute;
std::cout << "\e[m"; std::cout << "\e[m";
if( side == false ) if( terminalWidth >= ( rowWidth * 2 + 1 ) and side == false )
{ {
std::cout << "\u2502"; std::cout << "\u2502";
side= true; side= true;
@@ -138,8 +144,11 @@ main( const int argcnt, const char *const argvec[] )
std::cout << ""; std::cout << "";
for( int i= 0; i < rowWidth; ++i ) std::cout << "\u2500"; for( int i= 0; i < rowWidth; ++i ) std::cout << "\u2500";
if( terminalWidth >= ( rowWidth * 2 + 1 ) )
{
std::cout << "\u2534"; std::cout << "\u2534";
for( int i= 0; i < rowWidth; ++i ) std::cout << "\u2500"; for( int i= 0; i < rowWidth; ++i ) std::cout << "\u2500";
}
std::cout << "" << std::endl; std::cout << "" << std::endl;
std::cout << std::setw( C::sizeWidth ) << std::setfill( ' ' ) << std::right << "\e[;1;36;96m" << fileCount; std::cout << std::setw( C::sizeWidth ) << std::setfill( ' ' ) << std::right << "\e[;1;36;96m" << fileCount;