From 9d9f75e6da9885e256097a2eabd0ccb951a40651 Mon Sep 17 00:00:00 2001 From: Mike Buland Date: Tue, 12 Sep 2006 18:19:05 +0000 Subject: Fixed the viewers, and some other good goo. --- src/viewerpercent.cpp | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 src/viewerpercent.cpp (limited to 'src/viewerpercent.cpp') diff --git a/src/viewerpercent.cpp b/src/viewerpercent.cpp new file mode 100644 index 0000000..289c900 --- /dev/null +++ b/src/viewerpercent.cpp @@ -0,0 +1,114 @@ +#include "viewerpercent.h" +#include "perform.h" +#include "plugger.h" + +PluginInterface2( percent, ViewerPercent, Viewer, "Mike Buland", 0, 1 ); + +ViewerPercent::ViewerPercent() : + nWidth( 15 ) +{ +} + +ViewerPercent::~ViewerPercent() +{ +} + +void ViewerPercent::beginAction( const std::string &sName, int nCommands ) +{ + nTotalCommands = nCommands; + nCurCommand = 0; +} + +void ViewerPercent::endAction() +{ +} + +void ViewerPercent::beginCommand( Action::eAction nAct, const std::string &sTarget ) +{ + this->sTarget = sTarget; + nCurCommand++; +} + +void ViewerPercent::endCommand() +{ + printf("\n"); +} + +void ViewerPercent::beginPerforms( int nCount ) +{ + nTotalPerforms = nCount; + nCurPerform = 0; + nLastLen = 0; +} + +void ViewerPercent::endPerforms() +{ + int nLen = printf("\r[%2d/%-2d] %s [", + nCurCommand, nTotalCommands, + sTarget.c_str() ); + for( int j = 0; j < nWidth; j++ ) + { + fputc('#', stdout ); + } + nLen += nWidth; + nLen += printf("] 100%%"); + + if( nLastLen > nLen ) + { + int jmax = nLastLen-nLen; + for( int j = 0; j < jmax; j++ ) + { + fputc(' ', stdout ); + } + } + nLastLen = 0; + + fflush( stdout ); +} + +void ViewerPercent::beginRequiresCheck( bool bCached, const std::string &sName ) +{ +} + +void ViewerPercent::endRequiresCheck() +{ +} + +void ViewerPercent::beginPerform( Perform *pPerform ) +{ + nCurPerform++; + int nLen = printf("\r[%2d/%-2d] %s [", + nCurCommand, nTotalCommands, + sTarget.c_str() ); + int jmax = nCurPerform*nWidth/nTotalPerforms; + for( int j = 0; j < jmax; j++ ) + { + fputc('#', stdout ); + } + jmax = nWidth-jmax; + for( int j = 0; j < jmax; j++ ) + { + fputc(' ', stdout ); + } + nLen += nWidth; + nLen += printf("] %-2d%% %s", + nCurPerform*100/nTotalPerforms, + pPerform->getTarget().c_str() ); + + if( nLastLen > nLen ) + { + jmax = nLastLen-nLen; + for( int j = 0; j < jmax; j++ ) + { + fputc(' ', stdout ); + } + } + nLastLen = nLen; + + fflush( stdout ); +} + +void ViewerPercent::endPerform() +{ +} + -- cgit v1.2.3