blob: 38bda9ab7c2bae65ef1ec73775e4b8d85c3f20ef [file] [log] [blame]
<?php
/**
* File containing the ezcConsoleProgressbarOptions class.
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
* @package ConsoleTools
* @version //autogentag//
* @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* @filesource
*/
/**
* Struct class to store the options of the ezcConsoleOutput class.
* This class stores the options for the {@link ezcConsoleOutput} class.
*
* @property string $barChar
* The character to fill the bar with, during progress indication.
* @property string $emptyChar
* The character to pre-fill the bar, before indicating progress.
* @property string $formatString
* The format string to describe the complete progressbar.
* @property string $fractionFormat
* Format to display the fraction value.
* @property string $processChar
* The character for the end of the progress area (the arrow!).
* @property int $redrawFrequency
* How often to redraw the progressbar (on every Xth call to advance()).
* @property int $step
* How many steps to advance the progressbar on each call to advance().
* @property int $width
* The width of the bar itself.
* @property string $actFormat
* The format to display the actual value with.
* @property string $maxFormat
* The format to display the actual value with.
* @property int $minVerbosity
* Defines the minimum {ezcConsoleOutputOptions->$verbosityLevel}
* that is needed by the progress bar to be rendered. If
* $verbosityLevel is lower, the bar is skipped. Default is 0 to
* render always.
* @property int $maxVerbosity
* Defines the maximum {ezcConsoleOutputOptions->$verbosityLevel} on
* which the progress bar is rendered. If $verbosityLevel is higher,
* the bar is skipped. Default is false, to render always.
*
* @package ConsoleTools
* @version //autogen//
*/
class ezcConsoleProgressbarOptions extends ezcBaseOptions
{
protected $properties = array(
'barChar' => "+",
'emptyChar' => "-",
'formatString' => "%act% / %max% [%bar%] %fraction%%",
'fractionFormat' => "%01.2f",
'progressChar' => ">",
'redrawFrequency' => 1,
'step' => 1,
'width' => 78,
'actFormat' => '%.0f',
'maxFormat' => '%.0f',
'minVerbosity' => 1,
'maxVerbosity' => false,
);
/**
* Option write access.
*
* @throws ezcBasePropertyNotFoundException
* If a desired property could not be found.
* @throws ezcBaseValueException
* If a desired property value is out of range.
*
* @param string $key Name of the property.
* @param mixed $value The value for the property.
* @ignore
*/
public function __set( $key, $value )
{
switch ( $key )
{
case "barChar":
case "emptyChar":
case "progressChar":
case "formatString":
case "fractionFormat":
case "actFormat":
case "maxFormat":
if ( is_string( $value ) === false || strlen( $value ) < 1 )
{
throw new ezcBaseValueException( $key, $value, 'string, not empty' );
}
break;
case "width":
if ( !is_int( $value ) || $value < 5 )
{
throw new ezcBaseValueException( $key, $value, 'int >= 5' );
}
break;
case "redrawFrequency":
case "step":
if ( ( !is_int( $value ) && !is_float( $value ) ) || $value < 1 )
{
throw new ezcBaseValueException( $key, $value, 'int > 0' );
}
break;
case 'minVerbosity':
if ( !is_int( $value ) || $value < 0 )
{
throw new ezcBaseValueException( $key, $value, 'int >= 0' );
}
break;
case 'maxVerbosity':
if ( ( !is_int( $value ) || $value < 0 ) && $value !== false )
{
throw new ezcBaseValueException( $key, $value, 'int >= 0 or false' );
}
break;
default:
throw new ezcBasePropertyNotFoundException( $key );
}
$this->properties[$key] = $value;
}
}
?>